@fuaran-ui/ops 0.4.0 → 0.6.0

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/encode.ts","../src/dataframe.ts","../src/parse.ts","../src/decode.ts","../src/apply.ts","../src/dag.ts","../src/merge.ts","../src/versioning.ts","../src/elicitation.ts"],"names":["controlValueDefaults","available","CLOSURE","OPAQUE","field","projectSelectionField","b","t","viewBox","FORM_FIELD_KIND_NAMES","NODE_KIND_GROUPS","fo","accessibility","ok","fail","outcome","str","defaults","encodeEnvelope"],"mappings":";;;;;AAkHA,IAAM,WAAA,GAAc,CAAC,CAAA,KAAoB;AACvC,EAAA,MAAM,IAAI,KAAA,CAAM,CAAA,wCAAA,EAA2C,KAAK,SAAA,CAAU,CAAC,CAAC,CAAA,CAAE,CAAA;AAChF,CAAA;AAGA,IAAM,GAAA,GAAM,CAAC,CAAA,KAAsB;AACjC,EAAA,IAAI,GAAA,GAAM,GAAA;AACV,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,CAAA,CAAE,MAAA,EAAQ,KAAK,CAAA,EAAG;AACpC,IAAA,MAAM,CAAA,GAAI,EAAE,CAAC,CAAA;AACb,IAAA,MAAM,IAAA,GAAO,CAAA,CAAE,UAAA,CAAW,CAAC,CAAA;AAC3B,IAAA,IAAI,MAAM,GAAA,EAAK;AACb,MAAA,GAAA,IAAO,KAAA;AAAA,IACT,CAAA,MAAA,IAAW,MAAM,IAAA,EAAM;AACrB,MAAA,GAAA,IAAO,MAAA;AAAA,IACT,CAAA,MAAA,IAAW,OAAO,EAAA,EAAM;AACtB,MAAA,GAAA,IAAO,QAAQ,IAAA,CAAK,QAAA,CAAS,EAAE,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAAA,IAClD,CAAA,MAAO;AACL,MAAA,GAAA,IAAO,CAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,OAAO,GAAA,GAAM,GAAA;AACf,CAAA;AAsBO,IAAM,kBAAA,GAAqB,CAAC,CAAA,KAAsB;AACvD,EAAA,IAAI,CAAA,KAAM,GAAG,OAAO,GAAA;AACpB,EAAA,MAAM,MAAM,CAAA,GAAI,CAAA;AAChB,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC,EAAE,QAAA,EAAS;AAI/B,EAAA,IAAI,MAAA;AACJ,EAAA,IAAI,GAAA;AACJ,EAAA,MAAM,IAAA,GAAO,CAAA,CAAE,OAAA,CAAQ,GAAG,CAAA;AAC1B,EAAA,IAAI,QAAQ,CAAA,EAAG;AACb,IAAA,MAAM,IAAA,GAAO,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,IAAI,CAAA;AAC5B,IAAA,MAAM,UAAU,QAAA,CAAS,CAAA,CAAE,MAAM,IAAA,GAAO,CAAC,GAAG,EAAE,CAAA;AAC9C,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAC5B,IAAA,IAAI,MAAM,CAAA,EAAG;AACX,MAAA,MAAA,GAAS,IAAA;AACT,MAAA,GAAA,GAAM,OAAA,IAAW,KAAK,MAAA,GAAS,CAAA,CAAA;AAAA,IACjC,CAAA,MAAO;AACL,MAAA,MAAA,GAAS,IAAA,CAAK,MAAM,CAAA,EAAG,GAAG,IAAI,IAAA,CAAK,KAAA,CAAM,MAAM,CAAC,CAAA;AAChD,MAAA,GAAA,GAAM,WAAW,GAAA,GAAM,CAAA,CAAA;AAAA,IACzB;AAAA,EACF,CAAA,MAAO;AACL,IAAA,MAAM,GAAA,GAAM,CAAA,CAAE,OAAA,CAAQ,GAAG,CAAA;AACzB,IAAA,IAAI,MAAM,CAAA,EAAG;AACX,MAAA,MAAA,GAAS,CAAA;AACT,MAAA,GAAA,GAAM,EAAE,MAAA,GAAS,CAAA;AAAA,IACnB,CAAA,MAAO;AACL,MAAA,MAAM,OAAA,GAAU,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA;AAC9B,MAAA,MAAM,QAAA,GAAW,CAAA,CAAE,KAAA,CAAM,GAAA,GAAM,CAAC,CAAA;AAChC,MAAA,IAAI,YAAY,GAAA,EAAK;AACnB,QAAA,MAAM,eAAe,QAAA,CAAS,MAAA,GAAS,SAAS,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA,CAAE,MAAA;AACnE,QAAA,MAAA,GAAS,QAAA,CAAS,MAAM,YAAY,CAAA;AACpC,QAAA,GAAA,GAAM,EAAE,YAAA,GAAe,CAAA,CAAA;AAAA,MACzB,CAAA,MAAO;AACL,QAAA,MAAA,GAAS,OAAA,GAAU,QAAA;AACnB,QAAA,GAAA,GAAM,QAAQ,MAAA,GAAS,CAAA;AAAA,MACzB;AAAA,IACF;AAAA,EACF;AAIA,EAAA,MAAA,GAAS,MAAA,CAAO,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA,IAAK,GAAA;AAEtC,EAAA,IAAI,GAAA;AACJ,EAAA,IAAI,GAAA,IAAO,EAAA,IAAM,GAAA,IAAO,EAAA,EAAI;AAE1B,IAAA,IAAI,OAAO,CAAA,EAAG;AACZ,MAAA,IAAI,MAAA,CAAO,MAAA,IAAU,GAAA,GAAM,CAAA,EAAG;AAC5B,QAAA,GAAA,GAAM,SAAS,GAAA,CAAI,MAAA,CAAO,GAAA,GAAM,CAAA,GAAI,OAAO,MAAM,CAAA;AAAA,MACnD,CAAA,MAAO;AACL,QAAA,GAAA,GAAM,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,GAAA,GAAM,CAAC,IAAI,GAAA,GAAM,MAAA,CAAO,KAAA,CAAM,GAAA,GAAM,CAAC,CAAA;AAAA,MAC7D;AAAA,IACF,CAAA,MAAO;AACL,MAAA,GAAA,GAAM,OAAO,GAAA,CAAI,MAAA,CAAO,CAAC,GAAA,GAAM,CAAC,CAAA,GAAI,MAAA;AAAA,IACtC;AAAA,EACF,CAAA,MAAO;AAEL,IAAA,MAAM,QAAA,GAAW,MAAA,CAAO,MAAA,KAAW,CAAA,GAAI,MAAA,GAAS,MAAA,CAAO,CAAC,CAAA,GAAI,GAAA,GAAM,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA;AAChF,IAAA,MAAM,OAAA,GAAU,GAAA,IAAO,CAAA,GAAI,GAAA,GAAM,GAAA;AACjC,IAAA,MAAM,SAAA,GAAY,KAAK,GAAA,CAAI,GAAG,EAAE,QAAA,EAAS,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAA;AAC1D,IAAA,GAAA,GAAM,QAAA,GAAW,MAAM,OAAA,GAAU,SAAA;AAAA,EACnC;AAEA,EAAA,OAAO,GAAA,GAAM,MAAM,GAAA,GAAM,GAAA;AAC3B,CAAA;AAGO,IAAM,GAAA,GAAM,CAAC,CAAA,KAAsB;AACxC,EAAA,IAAI,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,EAAG,OAAO,OAAA;AAC5B,EAAA,IAAI,CAAA,KAAM,UAAU,OAAO,YAAA;AAC3B,EAAA,IAAI,CAAA,KAAM,WAAW,OAAO,aAAA;AAC5B,EAAA,OAAO,mBAAmB,CAAC,CAAA;AAC7B,CAAA;AAEA,IAAM,IAAA,GAAO,CAAC,CAAA,KAAwB,CAAA,GAAI,MAAA,GAAS,OAAA;AAKnD,IAAM,OAAA,GAAU,CAAC,MAAA,KAAqC;AACpD,EAAA,MAAM,MAAA,GAAS,CAAC,GAAG,MAAM,EAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAO,CAAA,CAAE,CAAC,IAAI,CAAA,CAAE,CAAC,CAAA,GAAI,EAAA,GAAK,CAAA,CAAE,CAAC,IAAI,CAAA,CAAE,CAAC,CAAA,GAAI,CAAA,GAAI,CAAE,CAAA;AAClF,EAAA,OAAO,MAAM,MAAA,CAAO,GAAA,CAAI,CAAC,CAAC,GAAG,CAAC,CAAA,KAAM,GAAA,CAAI,CAAC,IAAI,GAAA,GAAM,CAAC,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,GAAI,GAAA;AACpE,CAAA;AAEA,IAAM,SAAS,CAAC,KAAA,KAAqC,MAAM,KAAA,CAAM,IAAA,CAAK,GAAG,CAAA,GAAI,GAAA;AAG7E,IAAM,OAAA,GAAU,CAAC,aAAA,EAAuB,MAAA,KACtC,QAAQ,CAAC,CAAC,OAAA,EAAS,GAAA,CAAI,aAAa,CAAC,CAAA,EAAG,GAAG,MAAM,CAAC,CAAA;AAWpD,IAAM,SAAA,GAAY,CAAC,aAAA,EAAuB,QAAA,KAA6B;AACrE,EAAA,MAAM,OAAO,GAAA,GAAM,GAAA,CAAI,OAAO,CAAA,GAAI,GAAA,GAAM,IAAI,aAAa,CAAA;AAGzD,EAAA,OAAO,QAAA,CAAS,MAAA,GAAS,CAAA,GAAI,IAAA,GAAO,GAAA,GAAM,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,GAAI,GAAA,GAAM,IAAA,GAAO,GAAA;AACjF,CAAA;AAEA,IAAM,OAAA,GAAU,IAAI,WAAW,CAAA;AAC/B,IAAM,MAAA,GAAS,IAAI,UAAU,CAAA;AAY7B,IAAM,QAAA,GAAW,CAAC,CAAA,KAAuB;AACvC,EAAA,IAAI,CAAA,KAAM,IAAA,IAAQ,CAAA,KAAM,MAAA,EAAW,OAAO,MAAA;AAC1C,EAAA,IAAI,OAAO,CAAA,KAAM,QAAA,EAAU,OAAO,IAAI,CAAC,CAAA;AACvC,EAAA,IAAI,OAAO,CAAA,KAAM,SAAA,EAAW,OAAO,KAAK,CAAC,CAAA;AACzC,EAAA,IAAI,OAAO,CAAA,KAAM,QAAA,EAAU,OAAO,IAAI,CAAC,CAAA;AACvC,EAAA,IAAI,CAAA,YAAa,IAAA,EAAM,OAAO,GAAA,CAAI,IAAA,CAAK,MAAM,CAAA,CAAE,OAAA,EAAQ,GAAI,GAAI,CAAC,CAAA;AAChE,EAAA,OAAO,MAAA;AACT,CAAA;AAYA,IAAM,SAAA,GAAY,CAAC,CAAA,KAAyB;AAC1C,EAAA,IAAI,CAAA,KAAM,MAAM,OAAO,MAAA;AACvB,EAAA,IAAI,OAAO,CAAA,KAAM,QAAA,EAAU,OAAO,IAAI,CAAC,CAAA;AACvC,EAAA,IAAI,OAAO,CAAA,KAAM,SAAA,EAAW,OAAO,KAAK,CAAC,CAAA;AACzC,EAAA,IAAI,OAAO,CAAA,KAAM,QAAA,EAAU,OAAO,IAAI,CAAC,CAAA;AACvC,EAAA,IAAI,KAAA,CAAM,QAAQ,CAAC,CAAA,SAAU,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,SAAS,CAAC,CAAA;AACpD,EAAA,OAAO,OAAA;AAAA,IACL,MAAA,CAAO,OAAA,CAAQ,CAA8B,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA,EAAG,SAAA,CAAU,CAAC,CAAC,CAAU;AAAA,GAC3F;AACF,CAAA;AAGA,IAAM,OAAA,GAAU,CAAC,CAAA,KACf,OAAA,CAAQ,OAAO,OAAA,CAAQ,CAAC,EAAE,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA,EAAG,UAAU,CAAC,CAAC,CAAU,CAAC,CAAA;AAYhE,IAAM,kBAAA,GAAqB,CAAC,GAAA,KAAyB;AAC1D,EAAA,QAAQ,IAAI,IAAA;AAAM,IAChB,KAAK,OAAA;AACH,MAAA,OAAO,MAAA;AAAA,IACT,KAAK,OAAA;AACH,MAAA,OAAO,IAAA,CAAK,IAAI,KAAK,CAAA;AAAA,IACvB,KAAK,SAAA;AACH,MAAA,OAAO,GAAA,CAAI,IAAI,KAAK,CAAA;AAAA,IACtB,KAAK,SAAA;AACH,MAAA,OAAO,GAAA,CAAI,IAAI,KAAK,CAAA;AAAA,IACtB,KAAK,QAAA;AACH,MAAA,OAAO,MAAA,CAAO,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,kBAAkB,CAAC,CAAA;AAAA,IACjD,KAAK,SAAA;AACH,MAAA,OAAO,QAAQ,CAAC,GAAG,IAAI,MAAM,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA,EAAG,mBAAmB,CAAC,CAAC,CAAU,CAAC,CAAA;AAAA;AAEzF;AAcA,IAAM,SAAS,CAAC,CAAA,KAAsB,OAAO,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA;AAW1D,IAAM,cAAA,GAAiB,CAAC,EAAA,EAAoB,CAAA,KAAoB;AAC9D,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,MAAA;AAEH,MAAA,OAAO,EAAA,KAAO,MAAA,GAAS,IAAA,CAAK,KAAK,CAAA,GAAI,EAAA,KAAO,KAAA,IAAS,EAAA,KAAO,OAAA,GAAU,GAAA,GAAM,GAAA,CAAI,EAAE,CAAA;AAAA,IACpF,KAAK,KAAA;AACH,MAAA,OAAO,EAAA,KAAO,UAAU,GAAA,CAAI,CAAA,CAAE,KAAK,CAAA,GAAI,MAAA,CAAO,EAAE,KAAK,CAAA;AAAA,IACvD,KAAK,OAAA;AACH,MAAA,OAAO,GAAA,CAAI,EAAE,KAAK,CAAA;AAAA,IACpB,KAAK,MAAA;AACH,MAAA,OAAO,IAAA,CAAK,EAAE,KAAK,CAAA;AAAA,IACrB,KAAK,KAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL,KAAK,WAAA;AACH,MAAA,OAAO,GAAA,CAAI,EAAE,KAAK,CAAA;AAAA,IACpB;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AAEA,IAAM,cAAA,GAAiB,CAAC,CAAA,KACtB,OAAA,CAAQ;AAAA,EACN,CAAC,QAAA,EAAU,MAAA,CAAO,CAAA,CAAE,MAAM,GAAA,CAAI,CAAC,IAAA,KAAS,cAAA,CAAe,CAAA,CAAE,IAAA,EAAM,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,EACtE,CAAC,UAAA,EAAY,MAAA,CAAO,CAAA,CAAE,MAAM,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,IAAA,CAAK,IAAA,KAAS,MAAM,CAAC,CAAC,CAAC;AACxE,CAAC,CAAA;AAEH,IAAM,UAAA,GAAa,CACjB,MAAA,KAEA,MAAA;AAAA,EACE,MAAA,CAAO,GAAA;AAAA,IAAI,CAAC,MACV,OAAA,CAAQ;AAAA,MACN,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,MACpB,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC;AAAA,KACrB;AAAA;AAEL,CAAA;AAGF,IAAM,UAAA,GAAa,CAAC,GAAA,KAA4B;AAC9C,EAAA,IAAI,GAAA,CAAI,SAAS,KAAA,EAAO;AACtB,IAAA,OAAO,OAAA,CAAQ;AAAA,MACb,CAAC,QAAA,EAAU,MAAA,CAAO,EAAE,CAAC,CAAA;AAAA,MACrB,CAAC,KAAA,EAAO,GAAA,CAAI,GAAA,CAAI,IAAI,CAAC;AAAA,KACtB,CAAA;AAAA,EACH;AACA,EAAA,MAAM,IAAI,GAAA,CAAI,KAAA;AACd,EAAA,MAAM,OAAA,GAAmB,CAAA,CAAE,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,KAAM;AAC3C,IAAA,MAAM,GAAA,GAAkB,CAAA,CAAE,OAAA,CAAQ,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,IAAA,KAAS,CAAA,CAAE,IAAI,CAAA,IAAK;AAAA,MAClE,MAAM,CAAA,CAAE,IAAA;AAAA,MACR,IAAA,EAAM,QAAA;AAAA,MACN,OAAO;AAAC,KACV;AACA,IAAA,OAAO,CAAC,CAAA,CAAE,IAAA,EAAM,cAAA,CAAe,GAAG,CAAC,CAAA;AAAA,EACrC,CAAC,CAAA;AACD,EAAA,OAAO,OAAA,CAAQ;AAAA,IACb,CAAC,QAAA,EAAU,UAAA,CAAW,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,IAC/B,CAAC,SAAA,EAAW,OAAA,CAAQ,OAAO,CAAC;AAAA,GAC7B,CAAA;AACH,CAAA;AAGA,IAAM,OAAA,GAAU,CAAC,CAAA,KAAoB;AACnC,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,MAAA;AACH,MAAA,OAAO,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AAAA,IAC3B,KAAK,KAAA;AACH,MAAA,OAAO,OAAA,CAAQ,KAAA,EAAO,CAAC,CAAC,OAAA,EAAS,OAAO,CAAA,CAAE,KAAK,CAAC,CAAC,CAAC,CAAA;AAAA,IACpD,KAAK,OAAA;AACH,MAAA,OAAO,OAAA,CAAQ,OAAA,EAAS,CAAC,CAAC,OAAA,EAAS,IAAI,CAAA,CAAE,KAAK,CAAC,CAAC,CAAC,CAAA;AAAA,IACnD,KAAK,MAAA;AACH,MAAA,OAAO,OAAA,CAAQ,MAAA,EAAQ,CAAC,CAAC,OAAA,EAAS,KAAK,CAAA,CAAE,KAAK,CAAC,CAAC,CAAC,CAAA;AAAA,IACnD,KAAK,KAAA;AACH,MAAA,OAAO,OAAA,CAAQ,KAAA,EAAO,CAAC,CAAC,OAAA,EAAS,IAAI,CAAA,CAAE,KAAK,CAAC,CAAC,CAAC,CAAA;AAAA,IACjD,KAAK,MAAA;AACH,MAAA,OAAO,OAAA,CAAQ,MAAA,EAAQ,CAAC,CAAC,OAAA,EAAS,IAAI,CAAA,CAAE,KAAK,CAAC,CAAC,CAAC,CAAA;AAAA,IAClD,KAAK,WAAA;AACH,MAAA,OAAO,OAAA,CAAQ,WAAA,EAAa,CAAC,CAAC,OAAA,EAAS,IAAI,CAAA,CAAE,KAAK,CAAC,CAAC,CAAC,CAAA;AAAA,IACvD;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AAGA,IAAM,OAAA,GAAU,CAAC,CAAA,KAAuB;AACtC,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,KAAA;AACH,MAAA,OAAO,OAAA,CAAQ,KAAA,EAAO,CAAC,CAAC,MAAA,EAAQ,IAAI,CAAA,CAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,IAC/C,KAAK,OAAA;AACH,MAAA,OAAO,OAAA,CAAQ,OAAA,EAAS,CAAC,CAAC,MAAA,EAAQ,IAAI,CAAA,CAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,IACjD,KAAK,KAAA;AACH,MAAA,OAAO,OAAA,CAAQ,KAAA,EAAO,CAAC,CAAC,MAAA,EAAQ,QAAQ,CAAA,CAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,IACnD,KAAK,QAAA;AACH,MAAA,OAAO,QAAQ,QAAA,EAAU;AAAA,QACvB,CAAC,IAAA,EAAM,GAAA,CAAI,CAAA,CAAE,EAAE,CAAC,CAAA;AAAA,QAChB,CAAC,MAAA,EAAQ,OAAA,CAAQ,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,QACxB,CAAC,OAAA,EAAS,OAAA,CAAQ,CAAA,CAAE,KAAK,CAAC;AAAA,OAC3B,CAAA;AAAA,IACH,KAAK,KAAA;AACH,MAAA,OAAO,OAAA,CAAQ,KAAA,EAAO,CAAC,CAAC,MAAA,EAAQ,QAAQ,CAAA,CAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,IACnD,KAAK,UAAA;AACH,MAAA,OAAO,OAAA,CAAQ,UAAA,EAAY,CAAC,CAAC,OAAA,EAAS,MAAA,CAAO,CAAA,CAAE,KAAA,CAAM,GAAA,CAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;AAAA,IACtE,KAAK,MAAA;AACH,MAAA,OAAO,QAAQ,MAAA,EAAQ;AAAA,QACrB;AAAA,UACE,OAAA;AAAA,UACA,MAAA;AAAA,YACE,EAAE,KAAA,CAAM,GAAA;AAAA,cAAI,CAAC,MACX,OAAA,CAAQ;AAAA,gBACN,CAAC,MAAA,EAAQ,OAAA,CAAQ,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,gBACxB,CAAC,MAAA,EAAQ,OAAA,CAAQ,CAAA,CAAE,IAAI,CAAC;AAAA,eACzB;AAAA;AACH;AACF,SACF;AAAA,QACA,CAAC,MAAA,EAAQ,OAAA,CAAQ,CAAA,CAAE,IAAI,CAAC;AAAA,OACzB,CAAA;AAAA,IACH,KAAK,MAAA;AACH,MAAA,OAAO,QAAQ,MAAA,EAAQ;AAAA,QACrB,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,QACpB,CAAC,MAAA,EAAQ,OAAA,CAAQ,CAAA,CAAE,IAAI,CAAC;AAAA,OACzB,CAAA;AAAA,IACH,KAAK,OAAA;AACH,MAAA,OAAO,QAAQ,OAAA,EAAS;AAAA,QACtB,CAAC,IAAA,EAAM,GAAA,CAAI,CAAA,CAAE,EAAE,CAAC,CAAA;AAAA,QAChB,CAAC,QAAQ,MAAA,CAAO,CAAA,CAAE,KAAK,GAAA,CAAI,OAAO,CAAC,CAAC;AAAA,OACrC,CAAA;AAAA,IACH,KAAK,IAAA;AACH,MAAA,OAAO,QAAQ,IAAA,EAAM;AAAA,QACnB,CAAC,MAAA,EAAQ,OAAA,CAAQ,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,QACxB,CAAC,SAAS,MAAA,CAAO,CAAA,CAAE,MAAM,GAAA,CAAI,OAAO,CAAC,CAAC;AAAA,OACvC,CAAA;AAAA,IACH,KAAK,SAAA;AACH,MAAA,OAAO,QAAQ,IAAA,EAAM;AAAA,QACnB,CAAC,MAAA,EAAQ,OAAA,CAAQ,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,QACxB,CAAC,OAAA,EAAS,GAAA,CAAI,CAAA,CAAE,KAAK,CAAC;AAAA,OACvB,CAAA;AAAA,IACH,KAAK,QAAA;AACH,MAAA,OAAO,OAAA,CAAQ,QAAA,EAAU,CAAC,CAAC,MAAA,EAAQ,QAAQ,CAAA,CAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,IACtD;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AAEA,IAAM,QAAA,GAAW,CAAC,CAAA,KAChB,OAAA,CAAQ;AAAA,EACN,CAAC,GAAA,EAAK,GAAA,CAAI,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,EACd,CAAC,GAAA,EAAK,GAAA,CAAI,CAAA,CAAE,CAAC,CAAC;AAChB,CAAC,CAAA;AAEH,IAAM,OAAA,GAAU,CAAC,CAAA,KACf,OAAA,CAAQ;AAAA,EACN,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,EACpB,CAAC,IAAA,EAAM,GAAA,CAAI,CAAA,CAAE,EAAE,CAAC,CAAA;AAAA,EAChB,CAAC,IAAA,EAAM,GAAA,CAAI,CAAA,CAAE,EAAE,CAAC;AAClB,CAAC,CAAA;AAEH,IAAM,SAAA,GAAY,CAAC,CAAA,KACjB,OAAA,CAAQ;AAAA,EACN,CAAC,KAAA,EAAO,GAAA,CAAI,CAAA,CAAE,GAAG,CAAC,CAAA;AAAA,EAClB,CAAC,KAAA,EAAO,GAAA,CAAI,CAAA,CAAE,GAAG,CAAC;AACpB,CAAC,CAAA;AAGH,IAAM,aAAA,GAAgB,CAAC,CAAA,KAAyB;AAC9C,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,QAAA;AACH,MAAA,OAAO,OAAA,CAAQ,QAAA,EAAU,CAAC,CAAC,MAAA,EAAQ,QAAQ,CAAA,CAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,IACtD,KAAK,SAAA;AACH,MAAA,OAAO,OAAA,CAAQ,SAAA,EAAW,CAAC,CAAC,MAAA,EAAQ,MAAA,CAAO,CAAA,CAAE,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AAAA,IACpE,KAAK,QAAA;AACH,MAAA,OAAO,QAAQ,QAAA,EAAU;AAAA,QACvB,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,QACpB,CAAC,MAAA,EAAQ,OAAA,CAAQ,CAAA,CAAE,IAAI,CAAC;AAAA,OACzB,CAAA;AAAA,IACH,KAAK,SAAA;AACH,MAAA,OAAO,QAAQ,SAAA,EAAW;AAAA,QACxB,CAAC,QAAQ,MAAA,CAAO,CAAA,CAAE,KAAK,GAAA,CAAI,GAAG,CAAC,CAAC,CAAA;AAAA,QAChC,CAAC,QAAQ,MAAA,CAAO,CAAA,CAAE,KAAK,GAAA,CAAI,OAAO,CAAC,CAAC;AAAA,OACrC,CAAA;AAAA,IACH,KAAK,MAAA;AACH,MAAA,OAAO,QAAQ,MAAA,EAAQ;AAAA,QACrB,CAAC,QAAA,EAAU,UAAA,CAAW,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,QAC/B,CAAC,MAAM,MAAA,CAAO,CAAA,CAAE,GAAG,GAAA,CAAI,QAAQ,CAAC,CAAC,CAAA;AAAA,QACjC,CAAC,KAAA,EAAO,GAAA,CAAI,CAAA,CAAE,GAAG,CAAC;AAAA,OACnB,CAAA;AAAA,IACH,KAAK,QAAA;AACH,MAAA,OAAO,QAAQ,QAAA,EAAU;AAAA,QACvB,CAAC,eAAe,MAAA,CAAO,CAAA,CAAE,KAAK,WAAA,CAAY,GAAA,CAAI,GAAG,CAAC,CAAC,CAAA;AAAA,QACnD,CAAC,WAAW,MAAA,CAAO,CAAA,CAAE,KAAK,OAAA,CAAQ,GAAA,CAAI,SAAS,CAAC,CAAC,CAAA;AAAA,QACjD,CAAC,IAAA,EAAM,GAAA,CAAI,CAAA,CAAE,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,QACrB,CAAC,IAAA,EAAM,GAAA,CAAI,CAAA,CAAE,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,QACrB,CAAC,IAAA,EAAM,GAAA,CAAI,CAAA,CAAE,IAAA,CAAK,EAAE,CAAC;AAAA,OACtB,CAAA;AAAA,IACH,KAAK,OAAA;AACH,MAAA,OAAO,QAAQ,OAAA,EAAS;AAAA,QACtB,CAAC,SAAS,MAAA,CAAO,CAAA,CAAE,KAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAC,CAAC,CAAA;AAAA,QACvC,CAAC,IAAA,EAAM,GAAA,CAAI,CAAA,CAAE,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,QACrB,CAAC,QAAA,EAAU,GAAA,CAAI,CAAA,CAAE,IAAA,CAAK,MAAM,CAAC,CAAA;AAAA,QAC7B,CAAC,KAAA,EAAO,GAAA,CAAI,CAAA,CAAE,IAAA,CAAK,GAAG,CAAC;AAAA,OACxB,CAAA;AAAA,IACH,KAAK,SAAA;AACH,MAAA,OAAO,QAAQ,SAAA,EAAW;AAAA,QACxB,CAAC,UAAU,MAAA,CAAO,CAAA,CAAE,OAAO,GAAA,CAAI,GAAG,CAAC,CAAC,CAAA;AAAA,QACpC,CAAC,aAAa,MAAA,CAAO,CAAA,CAAE,UAAU,GAAA,CAAI,GAAG,CAAC,CAAC;AAAA,OAC3C,CAAA;AAAA,IACH,KAAK,MAAA;AACH,MAAA,OAAO,OAAA,CAAQ,MAAA,EAAQ,CAAC,CAAC,IAAA,EAAM,MAAA,CAAO,CAAA,CAAE,EAAA,CAAG,GAAA,CAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;AAAA,IAC9D,KAAK,UAAA;AACH,MAAA,OAAO,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAA;AAAA,IAC/B,KAAK,OAAA;AACH,MAAA,OAAO,QAAQ,OAAA,EAAS;AAAA,QACtB,CAAC,GAAA,EAAK,MAAA,CAAO,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,QACjB,CAAC,QAAA,EAAU,MAAA,CAAO,CAAA,CAAE,MAAM,CAAC;AAAA,OAC5B,CAAA;AAAA,IACH,KAAK,OAAA;AACH,MAAA,OAAO,OAAA,CAAQ,OAAA,EAAS,CAAC,CAAC,QAAA,EAAU,WAAW,CAAA,CAAE,MAAM,CAAC,CAAC,CAAC,CAAA;AAAA,IAC5D;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AAGO,IAAM,gBAAA,GAAmB,CAAC,GAAA,KAA4B,UAAA,CAAW,GAAG;AAGpE,IAAM,UAAA,GAAa,CAAC,CAAA,KAAoB,OAAA,CAAQ,CAAC;AAGjD,IAAM,aAAA,GAAgB,CAAC,CAAA,KAAuB,OAAA,CAAQ,CAAC;AAGvD,IAAM,iBAAiB,CAAC,QAAA,KAC7B,OAAO,QAAA,CAAS,GAAA,CAAI,aAAa,CAAC;AAMpC,IAAM,UAAA,GAAa,CAAC,IAAA,KAClB,MAAA;AAAA,EACE,IAAA,CAAK,GAAA;AAAA,IAAI,CAAC,MACR,OAAA,CAAQ;AAAA,MACN,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,MACpB,CAAC,OAAA,EAAS,GAAA,CAAI,CAAA,CAAE,KAAK,CAAC;AAAA,KACvB;AAAA;AAEL,CAAA;AAIF,IAAM,YAAA,GAAe,CAAC,CAAA,KAAiC;AACrD,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,QAAA;AACH,MAAA,OAAO,OAAA,CAAQ,QAAA,EAAU,EAAE,CAAA;AAAA,IAC7B,KAAK,UAAA;AACH,MAAA,OAAO,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAA;AAAA,IAC/B,KAAK,gBAAA;AACH,MAAA,OAAO,OAAA,CAAQ,gBAAA,EAAkB,EAAE,CAAA;AAAA,IACrC,KAAK,YAAA;AACH,MAAA,OAAO,OAAA,CAAQ,YAAA,EAAc,CAAC,CAAC,cAAA,EAAgB,IAAI,CAAA,CAAE,YAAY,CAAC,CAAC,CAAC,CAAA;AAAA,IACtE;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AAUA,IAAM,OAAA,GAAU,CAAI,CAAA,EAAe,SAAA,GAA8B,QAAA,KAAqB;AACpF,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,QAAA,EAAU;AAGb,MAAA,MAAM,cACJ,CAAA,CAAE,KAAA,KAAU,IAAA,IAAQ,CAAA,CAAE,UAAU,MAAA,GAAY,EAAC,GAAI,CAAC,CAAC,OAAA,EAAS,SAAA,CAAU,CAAA,CAAE,KAAK,CAAC,CAAC,CAAA;AACjF,MAAA,OAAO,OAAA,CAAQ,UAAU,WAAW,CAAA;AAAA,IACtC;AAAA,IACA,KAAK,OAAA,EAAS;AAIZ,MAAA,MAAM,eAAA,GACJ,CAAA,CAAE,SAAA,KAAc,MAAA,IAAa,CAAA,CAAE,UAAU,MAAA,GAAS,CAAA,GAC9C,CAAC,CAAC,WAAA,EAAa,MAAA,CAAO,EAAE,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,KAAM,GAAA,CAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,GACtD,EAAC;AACP,MAAA,OAAO,OAAA,CAAQ,OAAA,EAAS,CAAC,GAAG,eAAA,EAAiB,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,IACrE;AAAA,IACA,KAAK,QAAA,EAAU;AAIb,MAAA,MAAM,YAAA,GACJ,CAAA,CAAE,YAAA,KAAiB,MAAA,GAAY,CAAC,CAAC,cAAA,EAAgB,SAAA,CAAU,CAAA,CAAE,YAAiB,CAAC,CAAC,IAAI,EAAC;AACvF,MAAA,OAAO,OAAA,CAAQ,QAAA,EAAU,CAAC,GAAG,YAAA,EAAc,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,IACnE;AAAA,IACA,KAAK,WAAA,EAAa;AAQhB,MAAA,MAAM,YAAA,GACJ,CAAA,CAAE,YAAA,KAAiB,MAAA,GAAY,CAAC,CAAC,cAAA,EAAgB,SAAA,CAAU,CAAA,CAAE,YAAY,CAAC,CAAC,IAAI,EAAC;AAClF,MAAA,MAAM,UAAA,GAA+B,CAAA,CAAE,KAAA,KAAU,MAAA,GAAY,CAAC,CAAC,OAAA,EAAS,GAAA,CAAI,CAAA,CAAE,KAAK,CAAC,CAAC,IAAI,EAAC;AAC1F,MAAA,OAAO,OAAA,CAAQ,WAAA,EAAa,CAAC,GAAG,cAAc,GAAG,UAAA,EAAY,CAAC,QAAA,EAAU,GAAA,CAAI,CAAA,CAAE,MAAM,CAAC,CAAC,CAAC,CAAA;AAAA,IACzF;AAAA,IACA,KAAK,OAAA,EAAS;AAEZ,MAAA,MAAM,gBACJ,CAAA,CAAE,YAAA,KAAiB,IAAA,IAAQ,CAAA,CAAE,iBAAiB,MAAA,GAC1C,EAAC,GACD,CAAC,CAAC,cAAA,EAAgB,SAAA,CAAU,CAAA,CAAE,YAAY,CAAC,CAAC,CAAA;AAClD,MAAA,OAAO,OAAA,CAAQ,OAAA,EAAS,CAAC,GAAG,aAAA,EAAe,CAAC,KAAA,EAAO,GAAA,CAAI,CAAA,CAAE,GAAG,CAAC,CAAC,CAAC,CAAA;AAAA,IACjE;AAAA,IACA,KAAK,UAAA;AACH,MAAA,OAAO,QAAQ,UAAA,EAAY,CAAC,CAAC,IAAA,EAAM,OAAO,CAAC,CAAC,CAAA;AAAA,IAC9C,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,SAAkB,EAAC;AACzB,MAAA,IAAI,CAAA,CAAE,SAAS,MAAA,EAAW;AACxB,QAAA,MAAA,CAAO,IAAA,CAAK;AAAA,UACV,MAAA;AAAA,UACA,QAAQ,MAAA,CAAO,OAAA,CAAQ,EAAE,IAAI,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA,EAAG,QAAQ,CAAC,CAAC,CAAU,CAAC;AAAA,SACzE,CAAA;AAAA,MACH;AACA,MAAA,MAAA,CAAO,KAAK,CAAC,KAAA,EAAO,IAAI,CAAA,CAAE,GAAG,CAAC,CAAC,CAAA;AAC/B,MAAA,OAAO,OAAA,CAAQ,QAAQ,MAAM,CAAA;AAAA,IAC/B;AAAA,IACA,KAAK,OAAA;AACH,MAAA,OAAO,QAAQ,OAAA,EAAS;AAAA,QACtB,CAAC,SAAA,EAAW,YAAA,CAAa,CAAA,CAAE,KAAA,CAAM,OAAO,CAAC,CAAA;AAAA,QACzC,CAAC,UAAU,OAAO,CAAA;AAAA,QAClB,CAAC,aAAA,EAAe,OAAA,CAAQ,EAAE,KAAA,CAAM,WAAA,EAAa,SAAS,CAAC,CAAA;AAAA,QACvD,CAAC,YAAY,OAAO,CAAA;AAAA,QACpB,CAAC,SAAS,OAAO;AAAA,OAClB,CAAA;AAAA,IACH,KAAK,QAAA;AAGH,MAAA,OAAO,QAAQ,QAAA,EAAU;AAAA,QACvB,CAAC,QAAA,EAAU,YAAA,CAAa,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,QACjC,CAAC,QAAA,EAAU,YAAA,CAAa,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,QACjC,CAAC,QAAA,EAAU,OAAA,CAAQ,CAAA,CAAE,MAAM,CAAC;AAAA,OAC7B,CAAA;AAAA,IACH,KAAK,WAAA,EAAa;AAMhB,MAAA,MAAM,cACJ,CAAA,CAAE,MAAA,KAAW,UAAa,CAAA,CAAE,MAAA,CAAO,SAAS,CAAA,GACxC;AAAA,QACE;AAAA,UACE,QAAA;AAAA,UACA,MAAA;AAAA,YACE,EAAE,MAAA,CAAO,GAAA;AAAA,cAAI,CAAC,MACZ,OAAA,CAAQ;AAAA,gBACN,CAAC,MAAA,EAAQ,OAAA,CAAQ,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,gBACxB,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC;AAAA,eACrB;AAAA;AACH;AACF;AACF,UAEF,EAAC;AACP,MAAA,OAAO,QAAQ,WAAA,EAAa;AAAA,QAC1B,GAAG,WAAA;AAAA,QACH,CAAC,YAAY,MAAA,CAAO,CAAA,CAAE,SAAS,GAAA,CAAI,aAAa,CAAC,CAAC,CAAA;AAAA,QAClD,CAAC,QAAA,EAAU,UAAA,CAAW,CAAA,CAAE,MAAM,CAAC;AAAA,OAChC,CAAA;AAAA,IACH;AAAA,IACA,KAAK,QAAA;AAEH,MAAA,OAAO,QAAQ,QAAA,EAAU;AAAA,QACvB,CAAC,MAAA,EAAQ,UAAA,CAAW,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,QAC3B,CAAC,cAAA,EAAgB,GAAA,CAAI,CAAA,CAAE,YAAY,CAAC;AAAA,OACrC,CAAA;AAAA,IACH;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AAEA,IAAM,MAAA,GAAS,CAAI,CAAA,KAAyB;AAC1C,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,UAAA;AAGH,MAAA,OAAO,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAA;AAAA,IAC/B,KAAK,MAAA,EAAQ;AAGX,MAAA,MAAM,MAAA,GAAkB,CAAC,CAAC,UAAA,EAAY,IAAI,CAAA,CAAE,QAAQ,CAAC,CAAC,CAAA;AACtD,MAAA,IAAI,CAAA,CAAE,SAAS,MAAA,EAAW;AACxB,QAAA,MAAA,CAAO,IAAA,CAAK;AAAA,UACV,MAAA;AAAA,UACA,CAAA,CAAE,IAAA,CAAK,IAAA,KAAS,OAAA,GACZ,OAAA,CAAQ,OAAA,EAAS,CAAC,CAAC,KAAA,EAAO,GAAA,CAAI,CAAA,CAAE,IAAA,CAAK,GAAG,CAAC,CAAC,CAAC,CAAA,GAC3C,OAAA,CAAQ,OAAA,EAAS,CAAC,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAC,CAAC;AAAA,SAClD,CAAA;AAAA,MACH;AACA,MAAA,IAAI,CAAA,CAAE,aAAa,MAAA,EAAW,MAAA,CAAO,KAAK,CAAC,UAAA,EAAY,OAAO,CAAC,CAAA;AAC/D,MAAA,OAAO,OAAA,CAAQ,QAAQ,MAAM,CAAA;AAAA,IAC/B;AAAA,IACA,KAAK,QAAA;AACH,MAAA,OAAO,QAAQ,QAAA,EAAU;AAAA,QACvB,CAAC,SAAA,EAAW,GAAA,CAAI,CAAA,CAAE,OAAO,CAAC,CAAA;AAAA,QAC1B,CAAC,SAAA,EAAW,SAAA,CAAU,CAAA,CAAE,OAAO,CAAC;AAAA,OACjC,CAAA;AAAA,IACH,KAAK,UAAA;AACH,MAAA,OAAO,OAAA,CAAQ,UAAA,EAAY,CAAC,CAAC,OAAA,EAAS,IAAI,CAAA,CAAE,KAAK,CAAC,CAAC,CAAC,CAAA;AAAA,IACtD,KAAK,UAAA;AACH,MAAA,OAAO,QAAQ,UAAA,EAAY;AAAA,QACzB,CAAC,KAAA,EAAO,GAAA,CAAI,CAAA,CAAE,GAAG,CAAC,CAAA;AAAA,QAClB,CAAC,OAAA,EAAS,SAAA,CAAU,CAAA,CAAE,KAAK,CAAC;AAAA,OAC7B,CAAA;AAAA,IACH,KAAK,QAAA;AACH,MAAA,OAAO,QAAQ,QAAA,EAAU;AAAA,QACvB,CAAC,MAAA,EAAQ,SAAA,CAAU,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,QAC1B,CAAC,UAAA,EAAY,GAAA,CAAI,CAAA,CAAE,QAAQ,CAAC;AAAA,OAC7B,CAAA;AAAA,IACH,KAAK,OAAA;AACH,MAAA,OAAO,OAAA,CAAQ,OAAA,EAAS,CAAC,CAAC,KAAA,EAAO,MAAA,CAAO,CAAA,CAAE,OAAA,CAAQ,GAAA,CAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAAA,IAClE,KAAK,aAAA;AACH,MAAA,OAAO,OAAA,CAAQ,aAAA,EAAe,CAAC,CAAC,QAAA,EAAU,IAAI,CAAA,CAAE,MAAM,CAAC,CAAC,CAAC,CAAA;AAAA,IAC3D,KAAK,kBAAA;AACH,MAAA,OAAO,OAAA,CAAQ,kBAAA,EAAoB,CAAC,CAAC,MAAA,EAAQ,IAAI,CAAA,CAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,IAC5D,KAAK,cAAA;AAIH,MAAA,OAAO,QAAQ,cAAA,EAAgB;AAAA,QAC7B,CAAC,UAAA,EAAY,GAAA,CAAI,CAAA,CAAE,QAAQ,CAAC,CAAA;AAAA,QAC5B,CAAC,SAAA,EAAW,GAAA,CAAI,CAAA,CAAE,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,QAC1B,CAAC,UAAU,OAAO;AAAA,OACnB,CAAA;AAAA,IACH,KAAK,QAAA;AAEH,MAAA,OAAO,QAAQ,QAAA,EAAU;AAAA,QACvB,CAAC,MAAA,EAAQ,UAAA,CAAW,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,QAC3B,CAAC,cAAA,EAAgB,GAAA,CAAI,CAAA,CAAE,YAAY,CAAC;AAAA,OACrC,CAAA;AAAA,IACH;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AAEA,IAAM,UAAA,GAAa,CAAC,CAAA,KAA0B;AAC5C,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,SAAA;AAGH,MAAA,OAAO,GAAA,CAAI,EAAE,KAAK,CAAA;AAAA,IACpB,KAAK,OAAA;AACH,MAAA,OAAO,OAAA,CAAQ,OAAA,EAAS,CAAC,CAAC,SAAA,EAAW,QAAQ,CAAA,CAAE,OAAO,CAAC,CAAC,CAAC,CAAA;AAAA,IAC3D,KAAK,MAAA;AACH,MAAA,OAAO,QAAQ,MAAA,EAAQ;AAAA,QACrB,CAAC,MAAA,EAAQ,OAAA,CAAQ,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,QACxB,CAAC,KAAA,EAAO,GAAA,CAAI,CAAA,CAAE,GAAG,CAAC;AAAA,OACnB,CAAA;AAAA,IACH;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AAEA,IAAM,UAAA,GAAa,CAAC,CAAA,KAA0B;AAC5C,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,MAAA;AACH,MAAA,OAAO,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AAAA,IAC3B,KAAK,QAAA;AACH,MAAA,OAAO,OAAA,CAAQ,QAAA,EAAU,CAAA,CAAE,QAAA,KAAa,SAAY,CAAC,CAAC,UAAA,EAAY,GAAA,CAAI,EAAE,QAAQ,CAAC,CAAC,CAAA,GAAI,EAAE,CAAA;AAAA,IAC1F,KAAK,UAAA;AACH,MAAA,OAAO,OAAA,CAAQ,UAAA,EAAY,CAAC,CAAC,MAAA,EAAQ,IAAI,CAAA,CAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,IACpD,KAAK,SAAA;AACH,MAAA,OAAO,OAAA,CAAQ,SAAA,EAAW,CAAA,CAAE,QAAA,KAAa,SAAY,CAAC,CAAC,UAAA,EAAY,GAAA,CAAI,EAAE,QAAQ,CAAC,CAAC,CAAA,GAAI,EAAE,CAAA;AAAA,IAC3F,KAAK,mBAAA;AACH,MAAA,OAAO,OAAA,CAAQ,mBAAA,EAAqB,CAAC,CAAC,QAAA,EAAU,IAAI,CAAA,CAAE,MAAM,CAAC,CAAC,CAAC,CAAA;AAAA,IACjE,KAAK,MAAA;AACH,MAAA,OAAO,OAAA,CAAQ,MAAA,EAAQ,CAAC,CAAC,QAAA,EAAU,IAAI,CAAA,CAAE,MAAM,CAAC,CAAC,CAAC,CAAA;AAAA,IACpD,KAAK,QAAA;AACH,MAAA,OAAO,QAAQ,QAAA,EAAU,CAAC,CAAC,IAAA,EAAM,OAAO,CAAC,CAAC,CAAA;AAAA,IAC5C;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AAEA,IAAM,YAAA,GAAe,CAAC,CAAA,KAAsB;AAC1C,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,QAAA;AACH,MAAA,OAAO,OAAA,CAAQ,QAAA,EAAU,CAAA,CAAE,QAAA,KAAa,SAAY,CAAC,CAAC,UAAA,EAAY,GAAA,CAAI,EAAE,QAAQ,CAAC,CAAC,CAAA,GAAI,EAAE,CAAA;AAAA,IAC1F,KAAK,UAAA;AACH,MAAA,OAAO,OAAA,CAAQ,UAAA,EAAY,CAAC,CAAC,SAAA,EAAW,IAAI,CAAA,CAAE,OAAO,CAAC,CAAC,CAAC,CAAA;AAAA,IAC1D,KAAK,SAAA;AACH,MAAA,OAAO,OAAA,CAAQ,SAAA,EAAW,CAAA,CAAE,QAAA,KAAa,SAAY,CAAC,CAAC,UAAA,EAAY,GAAA,CAAI,EAAE,QAAQ,CAAC,CAAC,CAAA,GAAI,EAAE,CAAA;AAAA,IAC3F,KAAK,MAAA;AACH,MAAA,OAAO,OAAA,CAAQ,MAAA,EAAQ,CAAC,CAAC,WAAA,EAAa,IAAI,CAAA,CAAE,SAAS,CAAC,CAAC,CAAC,CAAA;AAAA,IAC1D,KAAK,cAAA;AACH,MAAA,OAAO,OAAA,CAAQ,cAAA,EAAgB,CAAC,CAAC,MAAA,EAAQ,IAAI,CAAA,CAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,IACxD;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AAEA,IAAM,YAAA,GAAe,CAAC,CAAA,KAA4B;AAChD,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,SAAA;AACH,MAAA,OAAO,OAAA,CAAQ,SAAA,EAAW,EAAE,CAAA;AAAA,IAC9B,KAAK,UAAA;AACH,MAAA,OAAO,OAAA,CAAQ,UAAA,EAAY,CAAC,CAAC,KAAA,EAAO,IAAI,CAAA,CAAE,GAAG,CAAC,CAAC,CAAC,CAAA;AAAA,IAClD;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AAEA,IAAM,WAAA,GAAc,CAAC,CAAA,KAA2B;AAC9C,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,MAAA;AACH,MAAA,OAAO,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AAAA,IAC3B,KAAK,OAAA;AACH,MAAA,OAAO,OAAA,CAAQ,OAAA,EAAS,CAAC,CAAC,QAAA,EAAU,IAAI,CAAA,CAAE,MAAM,CAAC,CAAC,CAAC,CAAA;AAAA,IACrD,KAAK,MAAA;AACH,MAAA,OAAO,OAAA,CAAQ,MAAA,EAAQ,CAAC,CAAC,QAAA,EAAU,IAAI,CAAA,CAAE,MAAM,CAAC,CAAC,CAAC,CAAA;AAAA,IACpD;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AAQA,IAAM,gBAAA,GAAmB,CAAC,MAAA,EAAiB,CAAA,KAAyB;AAClE,EAAA,IAAI,CAAA,KAAM,WAAW,MAAA,CAAO,IAAA,CAAK,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAC,CAAC,CAAC,CAAA;AACnD,CAAA;AACA,IAAM,kBAAA,GAAqB,CAAC,MAAA,EAAiB,CAAA,KAAyB;AACpE,EAAA,IAAI,CAAA,KAAM,YAAY,MAAA,CAAO,IAAA,CAAK,CAAC,QAAA,EAAU,GAAA,CAAI,CAAC,CAAC,CAAC,CAAA;AACtD,CAAA;AACA,IAAM,oBAAA,GAAuB,CAAC,MAAA,EAAiB,CAAA,KAAsB;AACnE,EAAA,IAAI,CAAA,KAAM,UAAU,MAAA,CAAO,IAAA,CAAK,CAAC,UAAA,EAAY,GAAA,CAAI,CAAC,CAAC,CAAC,CAAA;AACtD,CAAA;AACA,IAAM,sBAAA,GAAyB,CAAC,MAAA,EAAiB,GAAA,EAAa,CAAA,KAAwB;AACpF,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,EAAQ,MAAA,CAAO,IAAA,CAAK,CAAC,GAAA,EAAK,UAAA,CAAW,CAAC,CAAC,CAAC,CAAA;AACzD,CAAA;AACA,IAAM,uBAAA,GAA0B,CAAC,MAAA,EAAiB,GAAA,EAAa,CAAA,KAAyB;AACtF,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,EAAQ,MAAA,CAAO,IAAA,CAAK,CAAC,GAAA,EAAK,WAAA,CAAY,CAAC,CAAC,CAAC,CAAA;AAC1D,CAAA;AAEA,IAAM,UAAA,GAAa,CAAC,CAAA,KAA0B;AAC5C,EAAA,MAAM,MAAA,GAAkB;AAAA,IACtB,CAAC,OAAA,EAAS,UAAA,CAAW,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,IAC7B,CAAC,OAAA,EAAS,OAAA,CAAQ,CAAA,CAAE,KAAK,CAAC;AAAA,GAC5B;AACA,EAAA,sBAAA,CAAuB,MAAA,EAAQ,QAAA,EAAU,CAAA,CAAE,MAAM,CAAA;AACjD,EAAA,gBAAA,CAAiB,MAAA,EAAQ,EAAE,IAAI,CAAA;AAC/B,EAAA,kBAAA,CAAmB,MAAA,EAAQ,EAAE,MAAM,CAAA;AACnC,EAAA,oBAAA,CAAqB,MAAA,EAAQ,EAAE,QAAQ,CAAA;AACvC,EAAA,IAAI,CAAA,CAAE,KAAA,KAAU,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,OAAA,EAAS,OAAA,CAAQ,CAAA,CAAE,KAAK,CAAC,CAAC,CAAA;AAClE,EAAA,IAAI,CAAA,CAAE,WAAA,KAAgB,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,aAAA,EAAe,UAAA,CAAW,CAAA,CAAE,WAAW,CAAC,CAAC,CAAA;AACvF,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AAC3D,EAAA,IAAI,CAAA,CAAE,OAAA,KAAY,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,SAAA,EAAW,UAAA,CAAW,CAAA,CAAE,OAAO,CAAC,CAAC,CAAA;AAC3E,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,WAAA,GAAc,CAAC,CAAA,KACnB,OAAA,CAAQ;AAAA,EACN,CAAC,OAAA,EAAS,GAAA,CAAI,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,EACtB,CAAC,MAAA,EAAQ,UAAA,CAAW,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,EAC3B,CAAC,SAAA,EAAW,GAAA,CAAI,CAAA,CAAE,OAAO,CAAC;AAC5B,CAAC,CAAA;AAEH,IAAM,iBAAA,GAAoB,CAAC,CAAA,KAAiC;AAG1D,EAAA,MAAM,MAAA,GAAkB;AAAA,IACtB,GAAI,CAAA,CAAE,QAAA,GAAY,CAAC,CAAC,UAAA,EAAY,IAAA,CAAK,IAAI,CAAC,CAAC,CAAA,GAAc,EAAC;AAAA,IAC1D,CAAC,OAAA,EAAS,UAAA,CAAW,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,IAC7B,CAAC,OAAA,EAAS,OAAA,CAAQ,CAAA,CAAE,KAAK,CAAC;AAAA,GAC5B;AACA,EAAA,sBAAA,CAAuB,MAAA,EAAQ,QAAA,EAAU,CAAA,CAAE,MAAM,CAAA;AACjD,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,MAAA,EAAQ,UAAA,CAAW,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AAClE,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,QAAA,GAAW,CAAC,CAAA,KAAwB;AAGxC,EAAA,MAAM,MAAA,GAAkB;AAAA,IACtB,CAAC,OAAA,EAAS,UAAA,CAAW,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,IAC7B,CAAC,OAAA,EAAS,UAAA,CAAW,CAAA,CAAE,KAAK,CAAC;AAAA,GAC/B;AACA,EAAA,IAAI,CAAA,CAAE,UAAU,MAAA,CAAO,IAAA,CAAK,CAAC,UAAA,EAAY,IAAA,CAAK,IAAI,CAAC,CAAC,CAAA;AACpD,EAAA,gBAAA,CAAiB,MAAA,EAAQ,EAAE,IAAI,CAAA;AAC/B,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,MAAA,EAAQ,UAAA,CAAW,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AAClE,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AAC3D,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,YAAA,GAAe,CAAC,CAAA,KAA4B,OAAA,CAAQ,CAAC,CAAC,MAAA,EAAQ,UAAA,CAAW,CAAA,CAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AAExF,IAAM,SAAA,GAAY,CAAC,CAAA,KACjB,OAAA,CAAQ;AAAA,EACN,CAAC,OAAA,EAAS,UAAA,CAAW,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,EAC7B,CAAC,SAAA,EAAW,GAAA,CAAI,CAAA,CAAE,OAAO,CAAC;AAC5B,CAAC,CAAA;AAEH,IAAM,QAAA,GAAW,CAAC,CAAA,KAAwB;AACxC,EAAA,MAAM,MAAA,GAAkB;AAAA,IACtB,CAAC,MAAA,EAAQ,OAAA,CAAQ,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IACxB,CAAC,OAAA,EAAS,UAAA,CAAW,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,IAC7B,CAAC,UAAA,EAAY,IAAA,CAAK,CAAA,CAAE,QAAQ,CAAC;AAAA,GAC/B;AACA,EAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,KAAA,EAAO,GAAA,CAAI,CAAA,CAAE,GAAG,CAAC,CAAC,CAAA;AACxD,EAAA,IAAI,CAAA,CAAE,MAAA,KAAW,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,QAAA,EAAU,GAAA,CAAI,CAAA,CAAE,MAAM,CAAC,CAAC,CAAA;AACjE,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,SAAA,GAAY,CAAC,CAAA,KACjB,OAAA,CAAQ;AAAA,EACN,CAAC,KAAA,EAAO,UAAA,CAAW,CAAA,CAAE,GAAG,CAAC,CAAA;AAAA,EACzB,CAAC,KAAA,EAAO,OAAA,CAAQ,CAAA,CAAE,GAAG,CAAC,CAAA;AAAA,EACtB,CAAC,SAAA,EAAW,GAAA,CAAI,CAAA,CAAE,OAAO,CAAC;AAC5B,CAAC,CAAA;AAEH,IAAM,QAAA,GAAW,CAAC,CAAA,KAChB,OAAA,CAAQ;AAAA,EACN,CAAC,SAAS,MAAA,CAAO,CAAA,CAAE,MAAM,GAAA,CAAI,UAAU,CAAC,CAAC,CAAA;AAAA,EACzC,CAAC,SAAA,EAAW,IAAA,CAAK,CAAA,CAAE,OAAO,CAAC;AAC7B,CAAC,CAAA;AAEH,IAAM,SAAA,GAAY,CAAC,CAAA,KAAyB;AAE1C,EAAA,MAAM,MAAA,GAAkB;AAAA;AAAA,IAEtB,GAAI,CAAA,CAAE,WAAA,GAAc,EAAC,GAAK,CAAC,CAAC,aAAA,EAAe,IAAA,CAAK,KAAK,CAAC,CAAC,CAAA;AAAA,IACvD,CAAC,SAAA,EAAW,UAAA,CAAW,CAAA,CAAE,OAAO,CAAC,CAAA;AAAA,IACjC,CAAC,MAAA,EAAQ,OAAA,CAAQ,CAAA,CAAE,IAAI,CAAC;AAAA,GAC1B;AACA,EAAA,gBAAA,CAAiB,MAAA,EAAQ,EAAE,IAAI,CAAA;AAC/B,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAGA,IAAM,WAAA,GAAc,CAAC,CAAA,KAA2B,GAAA,CAAI,CAAC,CAAA;AAErD,IAAM,aAAA,GAAgB,CAAC,CAAA,KACrB,OAAA,CAAQ;AAAA,EACN,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,EACpB,CAAC,UAAA,EAAY,IAAA,CAAK,CAAA,CAAE,QAAQ,CAAC,CAAA;AAAA;AAAA;AAAA,EAG7B,CAAC,kBAAkB,MAAA,CAAO,CAAA,CAAE,eAAe,GAAA,CAAI,MAAM,CAAC,CAAC,CAAA;AAAA,EACvD,CAAC,UAAA,EAAY,GAAA,CAAI,CAAA,CAAE,QAAQ,CAAC,CAAA;AAAA,EAC5B,CAAC,aAAA,EAAe,IAAA,CAAK,CAAA,CAAE,WAAW,CAAC;AACrC,CAAC,CAAA;AAEH,IAAM,QAAA,GAAW,CAAC,CAAA,KAChB,OAAA,CAAQ;AAAA,EACN,CAAC,SAAA,EAAW,WAAA,CAAY,CAAA,CAAE,OAAO,CAAC,CAAA;AAAA,EAClC,CAAC,QAAA,EAAU,GAAA,CAAI,CAAA,CAAE,MAAM,CAAC;AAC1B,CAAC,CAAA;AAEH,IAAM,aAAA,GAAgB,CAAC,CAAA,KACrB,OAAA,CAAQ,CAAC,CAAC,QAAA,EAAU,OAAA,CAAQ,CAAA,CAAE,MAAA,EAAQ,cAAc,CAAC,CAAC,CAAC,CAAA;AAEzD,IAAM,YAAA,GAAe,CAAC,CAAA,KAA4B,OAAA,CAAQ,CAAC,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AAEjF,IAAM,WAAA,GAAc,CAAC,CAAA,KAA2B;AAE9C,EAAA,MAAM,MAAA,GAAkB;AAAA,IACtB,CAAC,MAAA,EAAQ,UAAA,CAAW,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA;AAAA,IAE3B,GAAI,CAAA,CAAE,WAAA,GAAe,CAAC,CAAC,aAAA,EAAe,IAAA,CAAK,IAAI,CAAC,CAAC,CAAA,GAAc;AAAC,GAClE;AACA,EAAA,gBAAA,CAAiB,MAAA,EAAQ,EAAE,IAAI,CAAA;AAC/B,EAAA,IAAI,CAAA,CAAE,OAAA,KAAY,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,SAAA,EAAW,UAAA,CAAW,CAAA,CAAE,OAAO,CAAC,CAAC,CAAA;AAC3E,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AAC3D,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,YAAA,GAAe,CAAC,CAAA,KAA4B;AAEhD,EAAA,MAAM,MAAA,GAAkB;AAAA,IACtB,CAAC,UAAA,EAAY,OAAA,CAAQ,CAAA,CAAE,QAAQ,CAAC,CAAA;AAAA;AAAA,IAEhC,GAAI,CAAA,CAAE,aAAA,GAAiB,CAAC,CAAC,eAAA,EAAiB,IAAA,CAAK,IAAI,CAAC,CAAC,CAAA,GAAc;AAAC,GACtE;AACA,EAAA,gBAAA,CAAiB,MAAA,EAAQ,EAAE,IAAI,CAAA;AAC/B,EAAA,IAAI,CAAA,CAAE,KAAA,KAAU,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,OAAA,EAAS,UAAA,CAAW,CAAA,CAAE,KAAK,CAAC,CAAC,CAAA;AACrE,EAAA,IAAI,CAAA,CAAE,MAAA,KAAW,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,QAAA,EAAU,UAAA,CAAW,CAAA,CAAE,MAAM,CAAC,CAAC,CAAA;AACxE,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAIA,IAAM,SAAA,GAAY,CAAC,CAAA,KACjB,OAAA,CAAQ;AAAA,EACN,CAAC,GAAA,EAAK,GAAA,CAAI,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,EACd,CAAC,GAAA,EAAK,GAAA,CAAI,CAAA,CAAE,CAAC,CAAC;AAChB,CAAC,CAAA;AAEH,IAAM,OAAA,GAAU,CAAC,CAAA,KACf,OAAA,CAAQ;AAAA,EACN,CAAC,QAAA,EAAU,GAAA,CAAI,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,EACxB,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,EACpB,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,EACpB,CAAC,OAAA,EAAS,GAAA,CAAI,CAAA,CAAE,KAAK,CAAC;AACxB,CAAC,CAAA;AAEH,IAAM,SAAA,GAAY,CAAC,CAAA,KAAyB;AAC1C,EAAA,MAAM,SAAkB,EAAC;AACzB,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,MAAA,EAAQ,OAAA,CAAQ,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AAC/D,EAAA,IAAI,CAAA,CAAE,OAAA,KAAY,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,SAAA,EAAW,OAAA,CAAQ,CAAA,CAAE,OAAO,CAAC,CAAC,CAAA;AACxE,EAAA,IAAI,CAAA,CAAE,MAAA,KAAW,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,QAAA,EAAU,OAAA,CAAQ,CAAA,CAAE,MAAM,CAAC,CAAC,CAAA;AACrE,EAAA,IAAI,CAAA,CAAE,WAAA,KAAgB,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,aAAA,EAAe,OAAA,CAAQ,CAAA,CAAE,WAAW,CAAC,CAAC,CAAA;AAEpF,EAAA,IAAI,CAAA,CAAE,UAAA,KAAe,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,YAAA,EAAc,GAAA,CAAI,CAAA,CAAE,UAAU,CAAC,CAAC,CAAA;AAC7E,EAAA,IAAI,CAAA,CAAE,QAAA,KAAa,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,UAAA,EAAY,GAAA,CAAI,CAAA,CAAE,QAAQ,CAAC,CAAC,CAAA;AACvE,EAAA,IAAI,CAAA,CAAE,QAAA,KAAa,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,UAAA,EAAY,GAAA,CAAI,CAAA,CAAE,QAAQ,CAAC,CAAC,CAAA;AACvE,EAAA,IAAI,CAAA,CAAE,UAAA,KAAe,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,YAAA,EAAc,GAAA,CAAI,CAAA,CAAE,UAAU,CAAC,CAAC,CAAA;AAE7E,EAAA,IAAI,CAAA,CAAE,MAAA,KAAW,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,QAAA,EAAU,GAAA,CAAI,CAAA,CAAE,MAAM,CAAC,CAAC,CAAA;AACjE,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,YAAA,GAAe,CAAC,CAAA,KAA4B;AAChD,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,QAAA;AACH,MAAA,OAAO,OAAA,CAAQ,QAAA,EAAU,CAAC,CAAC,IAAA,EAAM,UAAU,CAAA,CAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AAAA,IACpD,KAAK,QAAA;AACH,MAAA,OAAO,OAAA,CAAQ,QAAA,EAAU,CAAC,CAAC,IAAA,EAAM,UAAU,CAAA,CAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AAAA,IACpD,KAAK,SAAA;AACH,MAAA,OAAO,QAAQ,SAAA,EAAW;AAAA,QACxB,CAAC,UAAA,EAAY,SAAA,CAAU,CAAA,CAAE,QAAQ,CAAC,CAAA;AAAA,QAClC,CAAC,UAAA,EAAY,SAAA,CAAU,CAAA,CAAE,QAAQ,CAAC,CAAA;AAAA,QAClC,CAAC,IAAA,EAAM,SAAA,CAAU,CAAA,CAAE,EAAE,CAAC;AAAA,OACvB,CAAA;AAAA,IACH,KAAK,aAAA;AACH,MAAA,OAAO,QAAQ,aAAA,EAAe;AAAA,QAC5B,CAAC,SAAA,EAAW,SAAA,CAAU,CAAA,CAAE,OAAO,CAAC,CAAA;AAAA,QAChC,CAAC,IAAA,EAAM,SAAA,CAAU,CAAA,CAAE,EAAE,CAAC;AAAA,OACvB,CAAA;AAAA,IACH,KAAK,OAAA;AACH,MAAA,OAAO,OAAA,CAAQ,OAAA,EAAS,EAAE,CAAA;AAAA;AAEhC,CAAA;AAEA,IAAM,KAAA,GAAQ,CAAC,EAAA,KAAsB;AACnC,EAAA,QAAQ,GAAG,IAAA;AAAM,IACf,KAAK,OAAA;AACH,MAAA,OAAO,QAAQ,OAAA,EAAS;AAAA,QACtB,CAAC,YAAY,MAAA,CAAO,EAAA,CAAG,SAAS,GAAA,CAAI,KAAK,CAAC,CAAC,CAAA;AAAA,QAC3C,CAAC,OAAA,EAAS,SAAA,CAAU,EAAA,CAAG,KAAK,CAAC;AAAA,OAC9B,CAAA;AAAA,IACH,KAAK,WAAA,EAAa;AAChB,MAAA,MAAM,MAAA,GAAkB;AAAA,QACtB,CAAC,QAAA,EAAU,GAAA,CAAI,EAAA,CAAG,MAAM,CAAC,CAAA;AAAA,QACzB,CAAC,OAAA,EAAS,SAAA,CAAU,EAAA,CAAG,KAAK,CAAC,CAAA;AAAA,QAC7B,CAAC,OAAA,EAAS,GAAA,CAAI,EAAA,CAAG,KAAK,CAAC,CAAA;AAAA,QACvB,CAAC,GAAA,EAAK,GAAA,CAAI,EAAA,CAAG,CAAC,CAAC,CAAA;AAAA,QACf,CAAC,GAAA,EAAK,GAAA,CAAI,EAAA,CAAG,CAAC,CAAC;AAAA,OACjB;AACA,MAAA,IAAI,EAAA,CAAG,YAAA,KAAiB,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,cAAA,EAAgB,GAAA,CAAI,EAAA,CAAG,YAAY,CAAC,CAAC,CAAA;AACrF,MAAA,OAAO,OAAA,CAAQ,aAAa,MAAM,CAAA;AAAA,IACpC;AAAA,IACA,KAAK,MAAA;AACH,MAAA,OAAO,QAAQ,MAAA,EAAQ;AAAA,QACrB,CAAC,OAAA,EAAS,SAAA,CAAU,EAAA,CAAG,KAAK,CAAC,CAAA;AAAA,QAC7B,CAAC,IAAA,EAAM,GAAA,CAAI,EAAA,CAAG,EAAE,CAAC,CAAA;AAAA,QACjB,CAAC,IAAA,EAAM,GAAA,CAAI,EAAA,CAAG,EAAE,CAAC,CAAA;AAAA,QACjB,CAAC,IAAA,EAAM,GAAA,CAAI,EAAA,CAAG,EAAE,CAAC,CAAA;AAAA,QACjB,CAAC,IAAA,EAAM,GAAA,CAAI,EAAA,CAAG,EAAE,CAAC;AAAA,OAClB,CAAA;AAAA,IACH,KAAK,UAAA;AACH,MAAA,OAAO,QAAQ,UAAA,EAAY;AAAA,QACzB,CAAC,UAAU,MAAA,CAAO,EAAA,CAAG,OAAO,GAAA,CAAI,SAAS,CAAC,CAAC,CAAA;AAAA,QAC3C,CAAC,OAAA,EAAS,SAAA,CAAU,EAAA,CAAG,KAAK,CAAC;AAAA,OAC9B,CAAA;AAAA,IACH,KAAK,SAAA;AACH,MAAA,OAAO,QAAQ,SAAA,EAAW;AAAA,QACxB,CAAC,UAAU,MAAA,CAAO,EAAA,CAAG,OAAO,GAAA,CAAI,SAAS,CAAC,CAAC,CAAA;AAAA,QAC3C,CAAC,OAAA,EAAS,SAAA,CAAU,EAAA,CAAG,KAAK,CAAC;AAAA,OAC9B,CAAA;AAAA,IACH,KAAK,OAAA;AACH,MAAA,OAAO,QAAQ,OAAA,EAAS;AAAA,QACtB,CAAC,YAAY,MAAA,CAAO,EAAA,CAAG,SAAS,GAAA,CAAI,YAAY,CAAC,CAAC,CAAA;AAAA,QAClD,CAAC,OAAA,EAAS,SAAA,CAAU,EAAA,CAAG,KAAK,CAAC;AAAA,OAC9B,CAAA;AAAA,IACH,KAAK,QAAA;AACH,MAAA,OAAO,QAAQ,QAAA,EAAU;AAAA,QACvB,CAAC,IAAA,EAAM,GAAA,CAAI,EAAA,CAAG,EAAE,CAAC,CAAA;AAAA,QACjB,CAAC,IAAA,EAAM,GAAA,CAAI,EAAA,CAAG,EAAE,CAAC,CAAA;AAAA,QACjB,CAAC,GAAA,EAAK,GAAA,CAAI,EAAA,CAAG,CAAC,CAAC,CAAA;AAAA,QACf,CAAC,OAAA,EAAS,SAAA,CAAU,EAAA,CAAG,KAAK,CAAC;AAAA,OAC9B,CAAA;AAAA,IACH,KAAK,SAAA;AACH,MAAA,OAAO,QAAQ,SAAA,EAAW;AAAA,QACxB,CAAC,IAAA,EAAM,GAAA,CAAI,EAAA,CAAG,EAAE,CAAC,CAAA;AAAA,QACjB,CAAC,IAAA,EAAM,GAAA,CAAI,EAAA,CAAG,EAAE,CAAC,CAAA;AAAA,QACjB,CAAC,IAAA,EAAM,GAAA,CAAI,EAAA,CAAG,EAAE,CAAC,CAAA;AAAA,QACjB,CAAC,IAAA,EAAM,GAAA,CAAI,EAAA,CAAG,EAAE,CAAC,CAAA;AAAA,QACjB,CAAC,OAAA,EAAS,SAAA,CAAU,EAAA,CAAG,KAAK,CAAC;AAAA,OAC9B,CAAA;AAAA,IACH,KAAK,OAAA;AACH,MAAA,OAAO,QAAQ,OAAA,EAAS;AAAA,QACtB,CAAC,OAAA,EAAS,SAAA,CAAU,EAAA,CAAG,KAAK,CAAC,CAAA;AAAA,QAC7B,CAAC,MAAA,EAAQ,UAAA,CAAW,EAAA,CAAG,IAAI,CAAC,CAAA;AAAA,QAC5B,CAAC,GAAA,EAAK,GAAA,CAAI,EAAA,CAAG,CAAC,CAAC,CAAA;AAAA,QACf,CAAC,GAAA,EAAK,GAAA,CAAI,EAAA,CAAG,CAAC,CAAC;AAAA,OAChB,CAAA;AAAA;AAEP,CAAA;AAEA,IAAM,WAAA,GAAc,CAAC,CAAA,KAA2B;AAC9C,EAAA,MAAM,MAAA,GAAkB;AAAA,IACtB,CAAC,UAAU,MAAA,CAAO,CAAA,CAAE,OAAO,GAAA,CAAI,KAAK,CAAC,CAAC,CAAA;AAAA,IACtC,CAAC,OAAA,EAAS,SAAA,CAAU,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,IAC5B,CAAC,SAAA,EAAW,OAAA,CAAQ,CAAA,CAAE,OAAO,CAAC;AAAA,GAChC;AACA,EAAA,IAAI,CAAA,CAAE,WAAA,KAAgB,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,aAAA,EAAe,UAAA,CAAW,CAAA,CAAE,WAAW,CAAC,CAAC,CAAA;AACvF,EAAA,IAAI,CAAA,CAAE,KAAA,KAAU,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,OAAA,EAAS,UAAA,CAAW,CAAA,CAAE,KAAK,CAAC,CAAC,CAAA;AACrE,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,WAAA,GAAc,CAAC,CAAA,KAA2B;AAC9C,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,SAAA;AACH,MAAA,OAAO,SAAA,CAAU,SAAA,EAAW,WAAA,CAAY,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IACjD,KAAK,UAAA;AACH,MAAA,OAAO,SAAA,CAAU,UAAA,EAAY,YAAA,CAAa,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IACnD,KAAK,QAAA;AACH,MAAA,OAAO,SAAA,CAAU,QAAA,EAAU,UAAA,CAAW,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IAC/C,KAAK,OAAA;AACH,MAAA,OAAO,SAAA,CAAU,OAAA,EAAS,SAAA,CAAU,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IAC7C,KAAK,WAAA;AACH,MAAA,OAAO,SAAA,CAAU,WAAA,EAAa,aAAA,CAAc,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IACrD,KAAK,SAAA;AACH,MAAA,OAAO,SAAA,CAAU,SAAA,EAAW,WAAA,CAAY,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IACjD,KAAK,UAAA;AACH,MAAA,OAAO,SAAA,CAAU,UAAA,EAAY,YAAA,CAAa,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IACnD,KAAK,UAAA;AACH,MAAA,OAAO,SAAA,CAAU,UAAA,EAAY,YAAA,CAAa,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IACnD,KAAK,eAAA;AACH,MAAA,OAAO,SAAA,CAAU,eAAA,EAAiB,iBAAA,CAAkB,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IAC7D,KAAK,MAAA;AACH,MAAA,OAAO,SAAA,CAAU,MAAA,EAAQ,QAAA,CAAS,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IAC3C,KAAK,MAAA;AACH,MAAA,OAAO,SAAA,CAAU,MAAA,EAAQ,QAAA,CAAS,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IAC3C,KAAK,OAAA;AACH,MAAA,OAAO,SAAA,CAAU,OAAA,EAAS,SAAA,CAAU,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IAC7C,KAAK,MAAA;AACH,MAAA,OAAO,SAAA,CAAU,MAAA,EAAQ,QAAA,CAAS,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IAC3C,KAAK,OAAA;AACH,MAAA,OAAO,SAAA,CAAU,OAAA,EAAS,SAAA,CAAU,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IAC7C,KAAK,WAAA;AACH,MAAA,OAAO,SAAA,CAAU,WAAA,EAAa,aAAA,CAAc,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IACrD,KAAK,MAAA;AACH,MAAA,OAAO,SAAA,CAAU,MAAA,EAAQ,QAAA,CAAS,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IAC3C,KAAK,SAAA;AACH,MAAA,OAAO,SAAA,CAAU,SAAA,EAAW,WAAA,CAAY,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IACjD;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AAgBA,IAAM,aAAA,GAAgB,CAAC,QAAA,EAA2B,CAAA,KAAsC;AAKtF,EAAA,MAAM,YAAA,GAAe,CAAC,IAAA,EAAc,CAAA,KAClC,CAAA,KAAM,MAAA,GAAY,CAAC,CAAC,IAAA,EAAM,OAAO,CAAC,CAAA,GAAI,EAAC;AACzC,EAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,EAAqB,WAAA,KAAkC;AAC5E,IAAA,IAAI,UAAU,IAAA,KAAS,QAAA;AACrB,MAAA,OAAO,CAAA,CAAE,SAAS,QAAA,IAAY,CAAA,CAAE,SAAS,QAAA,CAAS,IAAA,IAAQ,EAAE,YAAA,KAAiB,MAAA;AAC/E,IAAA,IAAI,UAAU,IAAA,KAAS,MAAA;AACrB,MAAA,OACE,CAAA,CAAE,IAAA,KAAS,OAAA,IACX,CAAA,CAAE,QAAQ,QAAA,CAAS,EAAA;AAAA,MAEnB,KAAK,SAAA,CAAU,CAAA,CAAE,YAAY,CAAA,KAAM,IAAA,CAAK,UAAU,WAAW,CAAA;AAEjE,IAAA,OAAO,KAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,aAAa,CACjB,CAAA,EACA,WAAA,EACA,GAAA,KAEA,cAAc,CAAA,EAAuB,WAAW,CAAA,GAAI,KAAK,CAAC,CAAC,SAAS,GAAA,CAAI,CAAC,CAAC,CAAC,CAAA;AAC7E,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,MAAA;AACH,MAAA,OAAO,QAAQ,MAAA,EAAQ;AAAA,QACrB,GAAG,YAAA,CAAa,UAAA,EAAY,CAAA,CAAE,QAAQ,CAAA;AAAA,QACtC,GAAG,UAAA,CAAW,CAAA,CAAE,KAAA,EAAOA,2BAAA,CAAqB,MAAM,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,CAAC;AAAA,OACpE,CAAA;AAAA,IACH,KAAK,QAAA;AACH,MAAA,OAAO,QAAQ,QAAA,EAAU;AAAA,QACvB,GAAG,YAAA,CAAa,UAAA,EAAY,CAAA,CAAE,QAAQ,CAAA;AAAA,QACtC,GAAG,UAAA,CAAW,CAAA,CAAE,KAAA,EAAOA,2BAAA,CAAqB,QAAQ,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,CAAC;AAAA,OACtE,CAAA;AAAA,IACH,KAAK,UAAA;AACH,MAAA,OAAO,QAAQ,UAAA,EAAY;AAAA,QACzB,GAAG,YAAA,CAAa,UAAA,EAAY,CAAA,CAAE,QAAQ,CAAA;AAAA,QACtC,GAAG,UAAA,CAAW,CAAA,CAAE,KAAA,EAAOA,2BAAA,CAAqB,UAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,CAAC;AAAA,OACxE,CAAA;AAAA,IACH,KAAK,QAAA;AACH,MAAA,OAAO,QAAQ,QAAA,EAAU;AAAA,QACvB,GAAG,YAAA,CAAa,UAAA,EAAY,CAAA,CAAE,QAAQ,CAAA;AAAA,QACtC,CAAC,SAAA,EAAW,OAAA,CAAQ,CAAA,CAAE,OAAA,EAAS,mBAAmB,CAAC,CAAA;AAAA,QACnD,GAAG,UAAA,CAAW,CAAA,CAAE,KAAA,EAAOA,2BAAA,CAAqB,MAAA,EAAQ,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAA,EAAG,eAAe,CAAC;AAAA,OACvF,CAAA;AAAA,IACH,KAAK,OAAA,EAAS;AAIZ,MAAA,MAAM,UAAA,GAAa,CAAC,CAAA,KAClB,OAAA,CAAQ;AAAA,QACN,CAAC,KAAA,EAAO,GAAA,CAAI,CAAA,CAAE,CAAC,CAAC,CAAC,CAAA;AAAA,QACjB,CAAC,KAAA,EAAO,GAAA,CAAI,CAAA,CAAE,CAAC,CAAC,CAAC;AAAA,OAClB,CAAA;AACH,MAAA,MAAM,MAAA,GAAkB;AAAA,QACtB,GAAG,YAAA,CAAa,UAAA,EAAY,CAAA,CAAE,QAAQ,CAAA;AAAA,QACtC,GAAG,UAAA;AAAA,UAAW,CAAA,CAAE,KAAA;AAAA,UAAOA,2BAAA,CAAqB,KAAA;AAAA,UAAO,CAAC,CAAA,KAClD,CAAA,CAAE,IAAA,KAAS,QAAA,GAAW,UAAA,CAAW,CAAA,CAAE,KAAK,CAAA,GAAI,OAAA,CAAQ,CAAA,EAAG,UAAU;AAAA;AACnE,OACF;AACA,MAAA,IAAI,CAAA,CAAE,WAAA,EAAa,GAAA,KAAQ,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,KAAA,EAAO,GAAA,CAAI,CAAA,CAAE,WAAA,CAAY,GAAG,CAAC,CAAC,CAAA;AACjF,MAAA,IAAI,CAAA,CAAE,WAAA,EAAa,GAAA,KAAQ,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,KAAA,EAAO,GAAA,CAAI,CAAA,CAAE,WAAA,CAAY,GAAG,CAAC,CAAC,CAAA;AACjF,MAAA,IAAI,CAAA,CAAE,WAAA,EAAa,IAAA,KAAS,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,WAAA,CAAY,IAAI,CAAC,CAAC,CAAA;AACpF,MAAA,OAAO,OAAA,CAAQ,SAAS,MAAM,CAAA;AAAA,IAChC;AAAA,IACA,KAAK,cAAA,EAAgB;AACnB,MAAA,MAAM,MAAA,GAAkB;AAAA,QACtB,GAAG,YAAA,CAAa,UAAA,EAAY,CAAA,CAAE,QAAQ,CAAA;AAAA,QACtC,GAAG,UAAA,CAAW,CAAA,CAAE,KAAA,EAAOA,2BAAA,CAAqB,QAAQ,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,CAAC;AAAA,OACvE;AACA,MAAA,IAAI,CAAA,CAAE,WAAA,CAAY,GAAA,KAAQ,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,KAAA,EAAO,GAAA,CAAI,CAAA,CAAE,WAAA,CAAY,GAAG,CAAC,CAAC,CAAA;AAChF,MAAA,IAAI,CAAA,CAAE,WAAA,CAAY,GAAA,KAAQ,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,KAAA,EAAO,GAAA,CAAI,CAAA,CAAE,WAAA,CAAY,GAAG,CAAC,CAAC,CAAA;AAChF,MAAA,IAAI,CAAA,CAAE,WAAA,CAAY,IAAA,KAAS,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,WAAA,CAAY,IAAI,CAAC,CAAC,CAAA;AACnF,MAAA,OAAO,OAAA,CAAQ,gBAAgB,MAAM,CAAA;AAAA,IACvC;AAAA,IACA,KAAK,iBAAA;AACH,MAAA,OAAO,QAAQ,iBAAA,EAAmB;AAAA,QAChC,GAAG,YAAA,CAAa,UAAA,EAAY,CAAA,CAAE,QAAQ,CAAA;AAAA,QACtC,CAAC,SAAA,EAAW,OAAA,CAAQ,CAAA,CAAE,OAAA,EAAS,mBAAmB,CAAC,CAAA;AAAA,QACnD,CAAC,aAAA,EAAe,GAAA,CAAI,CAAA,CAAE,WAAW,CAAC,CAAA;AAAA,QAClC,GAAG,UAAA,CAAW,CAAA,CAAE,KAAA,EAAOA,2BAAA,CAAqB,MAAA,EAAQ,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAA,EAAG,eAAe,CAAC;AAAA,OACvF,CAAA;AAAA,IACH,KAAK,UAAA;AACH,MAAA,OAAO,QAAQ,UAAA,EAAY;AAAA,QACzB,GAAG,YAAA,CAAa,UAAA,EAAY,CAAA,CAAE,QAAQ,CAAA;AAAA,QACtC,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,QACpB,GAAG,UAAA,CAAW,CAAA,CAAE,KAAA,EAAOA,2BAAA,CAAqB,MAAM,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,CAAC;AAAA,OACpE,CAAA;AAAA,IACH,KAAK,MAAA,EAAQ;AAIX,MAAA,MAAM,MAAA,GAAkB;AAAA,QACtB,GAAG,YAAA,CAAa,UAAA,EAAY,CAAA,CAAE,QAAQ,CAAA;AAAA,QACtC,GAAG,UAAA,CAAW,CAAA,CAAE,KAAA,EAAOA,2BAAA,CAAqB,MAAM,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,QACnE,CAAC,SAAA,EAAW,GAAA,CAAI,CAAA,CAAE,OAAO,CAAC;AAAA,OAC5B;AACA,MAAA,IAAI,CAAA,CAAE,WAAA,CAAY,GAAA,KAAQ,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,KAAA,EAAO,GAAA,CAAI,CAAA,CAAE,WAAA,CAAY,GAAG,CAAC,CAAC,CAAA;AAChF,MAAA,IAAI,CAAA,CAAE,WAAA,CAAY,GAAA,KAAQ,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,KAAA,EAAO,GAAA,CAAI,CAAA,CAAE,WAAA,CAAY,GAAG,CAAC,CAAC,CAAA;AAChF,MAAA,IAAI,CAAA,CAAE,WAAA,CAAY,IAAA,KAAS,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,WAAA,CAAY,IAAI,CAAC,CAAC,CAAA;AACnF,MAAA,OAAO,OAAA,CAAQ,QAAQ,MAAM,CAAA;AAAA,IAC/B;AAAA,IACA,KAAK,WAAA,EAAa;AAIhB,MAAA,MAAM,UAAA,GAAa,CAAC,CAAA,KAClB,OAAA,CAAQ;AAAA,QACN,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,CAAC,CAAC,CAAC,CAAA;AAAA,QAClB,CAAC,IAAA,EAAM,GAAA,CAAI,CAAA,CAAE,CAAC,CAAC,CAAC;AAAA,OACjB,CAAA;AACH,MAAA,MAAM,MAAA,GAAkB;AAAA,QACtB,GAAG,YAAA,CAAa,UAAA,EAAY,CAAA,CAAE,QAAQ,CAAA;AAAA,QACtC,GAAG,UAAA;AAAA,UAAW,CAAA,CAAE,KAAA;AAAA,UAAOA,2BAAA,CAAqB,SAAA;AAAA,UAAW,CAAC,CAAA,KACtD,CAAA,CAAE,IAAA,KAAS,QAAA,GAAW,UAAA,CAAW,CAAA,CAAE,KAAK,CAAA,GAAI,OAAA,CAAQ,CAAA,EAAG,UAAU;AAAA,SACnE;AAAA,QACA,CAAC,SAAA,EAAW,GAAA,CAAI,CAAA,CAAE,OAAO,CAAC;AAAA,OAC5B;AACA,MAAA,IAAI,CAAA,CAAE,WAAA,CAAY,GAAA,KAAQ,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,KAAA,EAAO,GAAA,CAAI,CAAA,CAAE,WAAA,CAAY,GAAG,CAAC,CAAC,CAAA;AAChF,MAAA,IAAI,CAAA,CAAE,WAAA,CAAY,GAAA,KAAQ,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,KAAA,EAAO,GAAA,CAAI,CAAA,CAAE,WAAA,CAAY,GAAG,CAAC,CAAC,CAAA;AAChF,MAAA,IAAI,CAAA,CAAE,WAAA,CAAY,IAAA,KAAS,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,WAAA,CAAY,IAAI,CAAC,CAAC,CAAA;AACnF,MAAA,OAAO,OAAA,CAAQ,aAAa,MAAM,CAAA;AAAA,IACpC;AAAA,IACA;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AAEA,IAAM,SAAA,GAAY,CAAC,CAAA,KAAkC;AACnD,EAAA,MAAM,MAAA,GAAkB;AAAA,IACtB,CAAC,IAAA,EAAM,GAAA,CAAI,CAAA,CAAE,EAAE,CAAC,CAAA;AAAA,IAChB,CAAC,MAAA,EAAQ,aAAA,CAAc,EAAE,IAAA,EAAM,MAAA,EAAQ,EAAA,EAAI,CAAA,CAAE,EAAA,EAAG,EAAG,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IAC1D,CAAC,OAAA,EAAS,UAAA,CAAW,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,IAC7B,CAAC,UAAA,EAAY,IAAA,CAAK,CAAA,CAAE,QAAQ,CAAC;AAAA,GAC/B;AACA,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,MAAA,EAAQ,UAAA,CAAW,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AAClE,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,QAAA,GAAW,CAAC,CAAA,KAAiC;AACjD,EAAA,MAAM,MAAA,GAAkB;AAAA,IACtB,CAAC,UAAU,MAAA,CAAO,CAAA,CAAE,OAAO,GAAA,CAAI,SAAS,CAAC,CAAC,CAAA;AAAA,IAC1C,CAAC,UAAA,EAAY,MAAA,CAAO,CAAA,CAAE,QAAQ,CAAC,CAAA;AAAA,IAC/B,CAAC,aAAA,EAAe,UAAA,CAAW,CAAA,CAAE,WAAW,CAAC;AAAA,GAC3C;AAGA,EAAA,IAAI,CAAA,CAAE,QAAA,KAAa,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,UAAA,EAAY,OAAA,CAAQ,CAAA,CAAE,QAAQ,CAAC,CAAC,CAAA;AAC3E,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,aAAa,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA,EAIlB,OAAA,CAAQ;AAAA,IACN,CAAC,MAAA,EAAQ,aAAA,CAAc,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,CAAA,CAAE,IAAA,EAAK,EAAG,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,IACjE,CAAC,OAAA,EAAS,UAAA,CAAW,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,IAC7B,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC;AAAA,GACrB;AAAA,CAAA;AAEH,IAAM,UAAA,GAAa,CAAC,CAAA,KAAmC;AACrD,EAAA,MAAM,MAAA,GAAkB;AAAA,IACtB,CAAC,OAAA,EAAS,UAAA,CAAW,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,IAC7B,CAAC,SAAA,EAAW,MAAA,CAAO,CAAA,CAAE,OAAO,CAAC,CAAA;AAAA,IAC7B,CAAC,SAAA,EAAW,GAAA,CAAI,CAAA,CAAE,OAAO,CAAC;AAAA,GAC5B;AACA,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AAG3D,EAAA,IAAI,CAAA,CAAE,QAAA,KAAa,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,UAAA,EAAY,OAAA,CAAQ,CAAA,CAAE,QAAQ,CAAC,CAAC,CAAA;AAC3E,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,UAAA,GAAa,CAAC,CAAA,KAAmC;AACrD,EAAA,MAAM,MAAA,GAAkB;AAAA,IACtB,CAAC,OAAA,EAAS,UAAA,CAAW,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,IAC7B,CAAC,QAAA,EAAU,OAAA,CAAQ,CAAA,CAAE,MAAA,EAAQ,mBAAmB,CAAC,CAAA;AAAA,IACjD,CAAC,OAAA,EAAS,OAAA,CAAQ,CAAA,CAAE,KAAA,EAAO,eAAe,CAAC;AAAA,GAC7C;AAIA,EAAA,IAAI,CAAA,CAAE,aAAa,MAAA,EAAW,MAAA,CAAO,KAAK,CAAC,UAAA,EAAY,OAAO,CAAC,CAAA;AAC/D,EAAA,IAAI,CAAA,CAAE,WAAA,KAAgB,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,aAAA,EAAe,UAAA,CAAW,CAAA,CAAE,WAAW,CAAC,CAAC,CAAA;AAEvF,EAAA,IAAI,CAAA,CAAE,QAAA,KAAa,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,UAAA,EAAY,OAAA,CAAQ,CAAA,CAAE,QAAQ,CAAC,CAAC,CAAA;AAI3E,EAAA,IAAI,CAAA,CAAE,UAAU,MAAA,CAAO,IAAA,CAAK,CAAC,UAAA,EAAY,IAAA,CAAK,IAAI,CAAC,CAAC,CAAA;AACpD,EAAA,IAAI,CAAA,CAAE,MAAA,KAAW,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,QAAA,EAAU,OAAA,CAAQ,CAAA,CAAE,MAAA,EAAQ,gBAAgB,CAAC,CAAC,CAAA;AAGvF,EAAA,IAAI,CAAA,CAAE,kBAAkB,MAAA,EAAW,MAAA,CAAO,KAAK,CAAC,eAAA,EAAiB,OAAO,CAAC,CAAA;AACzE,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,cAAA,GAAiB,CAAC,CAAA,KAAuC;AAC7D,EAAA,MAAM,MAAA,GAAkB;AAAA,IACtB,CAAC,UAAU,MAAA,CAAO,CAAA,CAAE,OAAO,GAAA,CAAI,GAAG,CAAC,CAAC,CAAA;AAAA,IACpC,CAAC,OAAA,EAAS,UAAA,CAAW,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,IAC7B,CAAC,UAAA,EAAY,IAAA,CAAK,CAAA,CAAE,QAAQ,CAAC,CAAA;AAAA,IAC7B,CAAC,YAAY,OAAO;AAAA,GACtB;AAEA,EAAA,IAAI,CAAA,CAAE,QAAA,KAAa,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,UAAA,EAAY,OAAA,CAAQ,CAAA,CAAE,QAAQ,CAAC,CAAC,CAAA;AAC3E,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,SAAA,GAAY,CAAC,CAAA,KAAkC;AACnD,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,MAAA;AACH,MAAA,OAAO,SAAA,CAAU,MAAA,EAAQ,QAAA,CAAS,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IAC3C,KAAK,SAAA;AACH,MAAA,OAAO,OAAA,CAAQ,SAAA,EAAW,CAAC,CAAC,OAAA,EAAS,MAAA,CAAO,CAAA,CAAE,KAAA,CAAM,GAAA,CAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;AAAA,IACxE,KAAK,QAAA;AACH,MAAA,OAAO,SAAA,CAAU,QAAA,EAAU,UAAA,CAAW,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IAC/C,KAAK,YAAA;AACH,MAAA,OAAO,SAAA,CAAU,YAAA,EAAc,cAAA,CAAe,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IACvD,KAAK,QAAA;AACH,MAAA,OAAO,SAAA,CAAU,QAAA,EAAU,UAAA,CAAW,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IAC/C;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AAYA,IAAM,YAAA,GAAe,CAAC,CAAA,KACpB,OAAA,CAAQ;AAAA,EACN,CAAC,OAAA,EAAS,UAAA,CAAW,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,EAC7B,CAAC,OAAA,EAAS,GAAA,CAAI,CAAA,CAAE,KAAK,CAAC;AACxB,CAAC,CAAA;AAEH,IAAM,sBAAsB,CAAC,CAAA,KAAuC,OAAO,CAAA,CAAE,GAAA,CAAI,YAAY,CAAC,CAAA;AAE9F,IAAM,kBAAkB,CAAC,CAAA,KAAmC,MAAM,MAAA,GAAY,MAAA,GAAS,IAAI,CAAC,CAAA;AAE5F,IAAM,mBAAmB,CAAC,CAAA,KAAiC,OAAO,CAAA,CAAE,GAAA,CAAI,GAAG,CAAC,CAAA;AAE5E,IAAM,iBAAiB,CAAC,CAAA,KAAiC,OAAO,CAAA,CAAE,GAAA,CAAI,GAAG,CAAC,CAAA;AAE1E,IAAM,kBAAkB,CAAC,CAAA,KAAoC,OAAO,CAAA,CAAE,GAAA,CAAI,SAAS,CAAC,CAAA;AAIpF,IAAM,cAAA,GAAiB,CAAC,CAAA,KAAuC;AAC7D,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,MAAA;AACH,MAAA,OAAO,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AAAA,IAC3B,KAAK,SAAA;AACH,MAAA,OAAO,OAAA,CAAQ,SAAA,EAAW,EAAE,CAAA;AAAA,IAC9B,KAAK,MAAA;AACH,MAAA,OAAO,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AAAA,IAC3B,KAAK,UAAA;AACH,MAAA,OAAO,QAAQ,UAAA,EAAY,CAAC,CAAC,QAAA,EAAU,OAAO,CAAC,CAAC,CAAA;AAAA,IAClD,KAAK,UAAA;AACH,MAAA,OAAO,QAAQ,UAAA,EAAY;AAAA,QACzB,CAAC,OAAO,OAAO,CAAA;AAAA,QACf,CAAC,YAAY,OAAO;AAAA,OACrB,CAAA;AAAA,IACH,KAAK,QAAA;AACH,MAAA,OAAO,QAAQ,QAAA,EAAU;AAAA,QACvB,CAAC,OAAA,EAAS,UAAA,CAAW,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,QAC7B,CAAC,WAAW,OAAO;AAAA,OACpB,CAAA;AAAA,IACH,KAAK,aAAA;AACH,MAAA,OAAO,QAAQ,aAAA,EAAe;AAAA,QAC5B;AAAA,UACE,SAAA;AAAA,UACA,MAAA;AAAA,YACE,EAAE,OAAA,CAAQ,GAAA;AAAA,cAAI,CAAC,CAAC,KAAK,CAAA,KACnB,OAAA,CAAQ;AAAA,gBACN,CAAC,OAAA,EAAS,UAAA,CAAW,KAAK,CAAC,CAAA;AAAA,gBAC3B,CAAC,WAAW,OAAO;AAAA,eACpB;AAAA;AACH;AACF;AACF,OACD,CAAA;AAAA,IACH,KAAK,MAAA;AACH,MAAA,OAAO,QAAQ,MAAA,EAAQ;AAAA,QACrB,CAAC,UAAU,OAAO,CAAA;AAAA,QAClB,CAAC,WAAW,OAAO;AAAA,OACpB,CAAA;AAAA,IACH,KAAK,MAAA;AACH,MAAA,OAAO,QAAQ,MAAA,EAAQ;AAAA,QACrB,CAAC,WAAW,OAAO,CAAA;AAAA,QACnB,CAAC,UAAU,OAAO;AAAA,OACnB,CAAA;AAAA;AAAA;AAAA,IAGH,KAAK,WAAA,EAAa;AAChB,MAAA,MAAM,MAAA,GAAkB;AAAA,QACtB,CAAC,OAAA,EAAS,GAAA,CAAI,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,QACtB,CAAC,OAAO,OAAA,CAAQ,MAAA,CAAO,QAAQ,CAAA,CAAE,GAAG,EAAE,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA,EAAG,IAAI,CAAC,CAAC,CAAU,CAAC,CAAC;AAAA,OAC9E;AACA,MAAA,IAAI,CAAA,CAAE,WAAA,KAAgB,SAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,SAAA,EAAW,GAAA,CAAI,CAAA,CAAE,WAAW,CAAC,CAAC,CAAA;AAC5E,MAAA,OAAO,OAAA,CAAQ,aAAa,MAAM,CAAA;AAAA,IACpC;AAAA,IACA,KAAK,UAAA;AACH,MAAA,OAAO,QAAQ,UAAA,EAAY;AAAA,QACzB,CAAC,cAAc,OAAO,CAAA;AAAA,QACtB,CAAC,WAAW,OAAO;AAAA,OACpB,CAAA;AAAA,IACH,KAAK,QAAA;AACH,MAAA,OAAO,QAAQ,QAAA,EAAU,CAAC,CAAC,IAAA,EAAM,OAAO,CAAC,CAAC,CAAA;AAAA,IAC5C;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AAEA,IAAM,YAAA,GAAe,CAAC,CAAA,KAAqC;AAGzD,EAAA,MAAM,MAAA,GAAkB;AAAA,IACtB,CAAC,MAAA,EAAQ,cAAA,CAAe,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IAC/B,CAAC,OAAA,EAAS,GAAA,CAAI,CAAA,CAAE,KAAK,CAAC;AAAA,GACxB;AACA,EAAA,sBAAA,CAAuB,MAAA,EAAQ,QAAA,EAAU,CAAA,CAAE,MAAM,CAAA;AACjD,EAAA,uBAAA,CAAwB,MAAA,EAAQ,OAAA,EAAS,CAAA,CAAE,KAAK,CAAA;AAChD,EAAA,IAAI,CAAA,CAAE,UAAU,MAAA,EAAW,MAAA,CAAO,KAAK,CAAC,OAAA,EAAS,OAAO,CAAC,CAAA;AACzD,EAAA,IAAI,CAAA,CAAE,KAAA,KAAU,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,OAAA,EAAS,GAAA,CAAI,CAAA,CAAE,KAAK,CAAC,CAAC,CAAA;AAC9D,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,QAAA,GAAW,CAAC,CAAA,KAAiC;AACjD,EAAA,MAAM,MAAA,GAAkB;AAAA,IACtB,CAAC,WAAW,MAAA,CAAO,CAAA,CAAE,QAAQ,GAAA,CAAI,YAAY,CAAC,CAAC,CAAA;AAAA;AAAA,IAE/C,GAAI,CAAA,CAAE,QAAA,GAAY,CAAC,CAAC,UAAA,EAAY,IAAA,CAAK,IAAI,CAAC,CAAC,CAAA,GAAc,EAAC;AAAA,IAC1D,CAAC,QAAA,EAAU,OAAA,CAAQ,CAAA,CAAE,MAAM,CAAC;AAAA,GAC9B;AACA,EAAA,IAAI,CAAA,CAAE,eAAe,MAAA,EAAW,MAAA,CAAO,KAAK,CAAC,YAAA,EAAc,OAAO,CAAC,CAAA;AAEnE,EAAA,IAAI,CAAA,CAAE,WAAW,MAAA,EAAW,MAAA,CAAO,KAAK,CAAC,QAAA,EAAU,OAAO,CAAC,CAAA;AAC3D,EAAA,IAAI,CAAA,CAAE,WAAA,KAAgB,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,aAAA,EAAe,GAAA,CAAI,CAAA,CAAE,WAAW,CAAC,CAAC,CAAA;AAGhF,EAAA,IAAI,EAAE,UAAA,KAAe,MAAA;AACnB,IAAA,MAAA,CAAO,IAAA,CAAK;AAAA,MACV,YAAA;AAAA,MACA,OAAA,CAAQ;AAAA,QACN,CAAC,WAAW,MAAA,CAAO,CAAA,CAAE,WAAW,OAAA,CAAQ,GAAA,CAAI,UAAU,CAAC,CAAC,CAAA;AAAA,QACxD,CAAC,MAAA,EAAQ,MAAA,CAAO,CAAA,CAAE,UAAA,CAAW,KAAK,GAAA,CAAI,CAAC,GAAA,KAAQ,MAAA,CAAO,IAAI,GAAA,CAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AAAA,OAC7E;AAAA,KACF,CAAA;AACH,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,SAAA,GAAY,CAAC,CAAA,KAAkC;AAGnD,EAAA,MAAM,MAAA,GAAkB;AAAA,IACtB,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IACpB,CAAC,QAAA,EAAU,OAAA,CAAQ,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,IAC5B,CAAC,SAAA,EAAW,IAAA,CAAK,CAAA,CAAE,OAAO,CAAC,CAAA;AAAA,IAC3B,CAAC,QAAA,EAAU,GAAA,CAAI,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,IACxB,CAAC,WAAW,MAAA,CAAO,CAAA,CAAE,QAAQ,GAAA,CAAI,GAAG,CAAC,CAAC;AAAA,GACxC;AACA,EAAA,IAAI,CAAA,CAAE,KAAA,KAAU,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,OAAA,EAAS,UAAA,CAAW,CAAA,CAAE,KAAK,CAAC,CAAC,CAAA;AACrE,EAAA,IAAI,CAAA,CAAE,iBAAiB,MAAA,EAAW,MAAA,CAAO,KAAK,CAAC,cAAA,EAAgB,OAAO,CAAC,CAAA;AACvE,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,SAAA,GAAY,CAAC,CAAA,KACjB,OAAA,CAAQ;AAAA,EACN,CAAC,OAAA,EAAS,UAAA,CAAW,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,EAC7B,CAAC,UAAA,EAAY,GAAA,CAAI,CAAA,CAAE,QAAQ,CAAC,CAAA;AAAA,EAC5B,CAAC,WAAA,EAAa,GAAA,CAAI,CAAA,CAAE,SAAS,CAAC;AAChC,CAAC,CAAA;AAEH,IAAM,OAAA,GAAU,CAAC,CAAA,KAAgC;AAC/C,EAAA,MAAM,MAAA,GAAkB;AAAA,IACtB,CAAC,gBAAA,EAAkB,GAAA,CAAI,CAAA,CAAE,cAAc,CAAC,CAAA;AAAA,IACxC,CAAC,iBAAA,EAAmB,GAAA,CAAI,CAAA,CAAE,eAAe,CAAC,CAAA;AAAA,IAC1C,CAAC,QAAA,EAAU,OAAA,CAAQ,CAAA,CAAE,MAAA,EAAQ,eAAe,CAAC,CAAA;AAAA,IAC7C,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC;AAAA,GACtB;AACA,EAAA,IAAI,CAAA,CAAE,kBAAkB,MAAA,EAAW,MAAA,CAAO,KAAK,CAAC,eAAA,EAAiB,OAAO,CAAC,CAAA;AACzE,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,OAAA,GAAU,CAAC,CAAA,KAAgC;AAC/C,EAAA,QAAQ,EAAE,IAAA;AAAM;AAAA;AAAA;AAAA,IAId,KAAK,MAAA;AACH,MAAA,OAAO,SAAA,CAAU,UAAA,EAAY,QAAA,CAAS,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IAC/C,KAAK,OAAA;AACH,MAAA,OAAO,SAAA,CAAU,OAAA,EAAS,SAAA,CAAU,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IAC7C,KAAK,KAAA;AACH,MAAA,OAAO,SAAA,CAAU,KAAA,EAAO,OAAA,CAAQ,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IACzC;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AASA,IAAM,SAAA,GAAY,CAAC,CAAA,KAAyB;AAC1C,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,MAAA,EAAQ;AAEX,MAAA,MAAM,MAAA,GAAkB,CAAC,CAAC,WAAA,EAAa,IAAI,CAAA,CAAE,SAAS,CAAC,CAAC,CAAA;AACxD,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,KAAA,EAAO,MAAA,CAAO,CAAA,CAAE,GAAG,CAAC,CAAC,CAAA;AAC3D,MAAA,MAAA,CAAO,KAAK,CAAC,MAAA,EAAQ,KAAK,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AAClC,MAAA,OAAO,OAAA,CAAQ,QAAQ,MAAM,CAAA;AAAA,IAC/B;AAAA,IACA,KAAK,MAAA,EAAQ;AAEX,MAAA,MAAM,MAAA,GAAkB,CAAC,CAAC,MAAA,EAAQ,OAAO,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AACjD,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,KAAA,EAAO,MAAA,CAAO,CAAA,CAAE,GAAG,CAAC,CAAC,CAAA;AAC3D,MAAA,IAAI,CAAA,CAAE,eAAA,KAAoB,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,iBAAA,EAAmB,GAAA,CAAI,CAAA,CAAE,eAAe,CAAC,CAAC,CAAA;AAC5F,MAAA,OAAO,OAAA,CAAQ,QAAQ,MAAM,CAAA;AAAA,IAC/B;AAAA,IACA,KAAK,MAAA;AACH,MAAA,OAAO,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AAAA,IAC3B;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AAEA,IAAM,OAAA,GAAU,CAAC,CAAA,KAAgC;AAC/C,EAAA,MAAM,MAAA,GAAkB,CAAC,CAAC,UAAA,EAAY,MAAA,CAAO,CAAA,CAAE,QAAA,CAAS,GAAA,CAAI,IAAI,CAAC,CAAC,CAAC,CAAA;AACnE,EAAA,IAAI,CAAA,CAAE,OAAA,KAAY,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,SAAA,EAAW,UAAA,CAAW,CAAA,CAAE,OAAO,CAAC,CAAC,CAAA;AAC3E,EAAA,MAAA,CAAO,KAAK,CAAC,QAAA,EAAU,UAAU,CAAA,CAAE,MAAM,CAAC,CAAC,CAAA;AAC3C,EAAA,MAAA,CAAO,KAAK,CAAC,MAAA,EAAQ,IAAI,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AACjC,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,cAAA,GAAiB,CAAC,CAAA,KACtB,OAAA,CAAQ;AAAA,EACN,CAAC,YAAY,MAAA,CAAO,CAAA,CAAE,SAAS,GAAA,CAAI,IAAI,CAAC,CAAC,CAAA;AAAA,EACzC,CAAC,QAAA,EAAU,GAAA,CAAI,CAAA,CAAE,MAAM,CAAC;AAC1B,CAAC,CAAA;AAEH,IAAM,SAAA,GAAY,CAAC,CAAA,KAAyB;AAC1C,EAAA,MAAM,MAAA,GAAkB,CAAC,CAAC,OAAA,EAAS,WAAW,CAAA,CAAE,KAAK,CAAC,CAAC,CAAA;AACvD,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AAC3D,EAAA,IAAI,CAAA,CAAE,QAAA,KAAa,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,UAAA,EAAY,OAAA,CAAQ,CAAA,CAAE,QAAQ,CAAC,CAAC,CAAA;AAC3E,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,QAAA,GAAW,CAAC,CAAA,KAAiC;AAMjD,EAAA,MAAM,MAAA,GAAkB;AAAA,IACtB,CAAC,YAAY,MAAA,CAAO,CAAA,CAAE,SAAS,GAAA,CAAI,IAAI,CAAC,CAAC,CAAA;AAAA;AAAA,IAEzC,GAAI,CAAA,CAAE,WAAA,KAAgB,YAAA,GAAe,EAAC,GAAK,CAAC,CAAC,aAAA,EAAe,GAAA,CAAI,CAAA,CAAE,WAAW,CAAC,CAAC,CAAA;AAAA,IAC/E,CAAC,aAAA,EAAe,OAAA,CAAQ,CAAA,CAAE,WAAW,CAAC;AAAA,GACxC;AACA,EAAA,IAAI,CAAA,CAAE,aAAa,MAAA,EAAW,MAAA,CAAO,KAAK,CAAC,UAAA,EAAY,OAAO,CAAC,CAAA;AAC/D,EAAA,IAAI,CAAA,CAAE,UAAA,KAAe,MAAA,EAAW,MAAA,CAAO,KAAK,CAAC,YAAA,EAAc,MAAA,CAAO,CAAA,CAAE,UAAA,CAAW,GAAA,CAAI,SAAS,CAAC,CAAC,CAAC,CAAA;AAC/F,EAAA,IAAI,CAAA,CAAE,OAAA,KAAY,MAAA,EAAW,MAAA,CAAO,KAAK,CAAC,SAAA,EAAW,MAAA,CAAO,CAAA,CAAE,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAC,CAAC,CAAC,CAAA;AAChF,EAAA,IAAI,CAAA,CAAE,SAAA,KAAc,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,WAAA,EAAa,OAAA,CAAQ,CAAA,CAAE,SAAS,CAAC,CAAC,CAAA;AAC9E,EAAA,IAAI,CAAA,CAAE,gBAAgB,MAAA,EAAW,MAAA,CAAO,KAAK,CAAC,aAAA,EAAe,OAAO,CAAC,CAAA;AACrE,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAKA,IAAM,WAAA,GAAc,CAAC,CAAA,KACnB,OAAA,CAAQ;AAAA,EACN,CAAC,YAAA,EAAc,OAAA,CAAQ,CAAA,CAAE,UAAU,CAAC,CAAA;AAAA,EACpC,CAAC,YAAY,MAAA,CAAO,CAAA,CAAE,SAAS,GAAA,CAAI,IAAI,CAAC,CAAC,CAAA;AAAA,EACzC,CAAC,YAAY,OAAO;AACtB,CAAC,CAAA;AAEH,IAAM,eAAA,GAAkB,CAAC,CAAA,KAAwC;AAC/D,EAAA,MAAM,MAAA,GAAkB,CAAC,CAAC,UAAA,EAAY,MAAA,CAAO,CAAA,CAAE,QAAA,CAAS,GAAA,CAAI,IAAI,CAAC,CAAC,CAAC,CAAA;AACnE,EAAA,IAAI,CAAA,CAAE,OAAA,KAAY,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,SAAA,EAAW,UAAA,CAAW,CAAA,CAAE,OAAO,CAAC,CAAC,CAAA;AAC3E,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,cAAA,GAAiB,CAAC,CAAA,KAAuC;AAK7D,EAAA,MAAM,MAAA,GAAkB;AAAA,IACtB,CAAC,YAAY,MAAA,CAAO,CAAA,CAAE,SAAS,GAAA,CAAI,IAAI,CAAC,CAAC,CAAA;AAAA,IACzC,CAAC,aAAA,EAAe,IAAA,CAAK,CAAA,CAAE,WAAW,CAAC,CAAA;AAAA,IACnC,CAAC,SAAA,EAAW,UAAA,CAAW,CAAA,CAAE,OAAO,CAAC,CAAA;AAAA,IACjC,CAAC,MAAA,EAAQ,OAAA,CAAQ,CAAA,CAAE,IAAI,CAAC;AAAA,GAC1B;AACA,EAAA,IAAI,CAAA,CAAE,aAAa,MAAA,EAAW,MAAA,CAAO,KAAK,CAAC,UAAA,EAAY,OAAO,CAAC,CAAA;AAC/D,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,SAAA,GAAY,CAAC,CAAA,KAAkC;AAKnD,EAAA,MAAM,MAAA,GAAkB;AAAA,IACtB,CAAC,YAAY,MAAA,CAAO,CAAA,CAAE,SAAS,GAAA,CAAI,IAAI,CAAC,CAAC,CAAA;AAAA,IACzC,CAAC,aAAA,EAAe,IAAA,CAAK,CAAA,CAAE,WAAW,CAAC,CAAA;AAAA,IACnC,CAAC,MAAA,EAAQ,OAAA,CAAQ,CAAA,CAAE,IAAI,CAAC;AAAA,GAC1B;AACA,EAAA,IAAI,CAAA,CAAE,SAAA,KAAc,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,WAAA,EAAa,MAAA,CAAO,CAAA,CAAE,SAAS,CAAC,CAAC,CAAA;AAC7E,EAAA,IAAI,CAAA,CAAE,OAAA,KAAY,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,SAAA,EAAW,UAAA,CAAW,CAAA,CAAE,OAAO,CAAC,CAAC,CAAA;AAC3E,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,cAAA,GAAiB,CAAC,CAAA,KAAuC;AAC7D,EAAA,MAAM,MAAA,GAAkB;AAAA,IACtB,CAAC,YAAY,MAAA,CAAO,CAAA,CAAE,SAAS,GAAA,CAAI,IAAI,CAAC,CAAC,CAAA;AAAA,IACzC,CAAC,aAAA,EAAe,GAAA,CAAI,CAAA,CAAE,WAAW,CAAC;AAAA,GACpC;AACA,EAAA,IAAI,CAAA,CAAE,SAAA,KAAc,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,WAAA,EAAa,GAAA,CAAI,CAAA,CAAE,SAAS,CAAC,CAAC,CAAA;AAC1E,EAAA,IAAI,CAAA,CAAE,QAAA,KAAa,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,UAAA,EAAY,GAAA,CAAI,CAAA,CAAE,QAAQ,CAAC,CAAC,CAAA;AACvE,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,UAAA,GAAa,CAAC,CAAA,KAAmC;AACrD,EAAA,QAAQ,EAAE,IAAA;AAAM;AAAA;AAAA;AAAA,IAId,KAAK,KAAA;AACH,MAAA,OAAO,SAAA,CAAU,KAAA,EAAO,OAAA,CAAQ,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IACzC,KAAK,YAAA;AACH,MAAA,OAAO,SAAA,CAAU,YAAA,EAAc,cAAA,CAAe,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IACvD,KAAK,MAAA;AACH,MAAA,OAAO,SAAA,CAAU,MAAA,EAAQ,QAAA,CAAS,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IAC3C,KAAK,SAAA;AACH,MAAA,OAAO,SAAA,CAAU,SAAA,EAAW,WAAA,CAAY,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IACjD,KAAK,aAAA;AACH,MAAA,OAAO,SAAA,CAAU,aAAA,EAAe,eAAA,CAAgB,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IACzD,KAAK,YAAA;AACH,MAAA,OAAO,SAAA,CAAU,YAAA,EAAc,cAAA,CAAe,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IACvD,KAAK,OAAA;AACH,MAAA,OAAO,SAAA,CAAU,OAAA,EAAS,SAAA,CAAU,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IAC7C,KAAK,YAAA;AACH,MAAA,OAAO,SAAA,CAAU,YAAA,EAAc,cAAA,CAAe,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IACvD;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AAIA,IAAM,cAAA,GAAiB,CAAC,CAAA,KAA8B;AACpD,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,KAAA;AACH,MAAA,OAAO,OAAA,CAAQ,KAAA,EAAO,CAAC,CAAC,OAAA,EAAS,OAAO,CAAA,CAAE,KAAK,CAAC,CAAC,CAAC,CAAA;AAAA,IACpD,KAAK,OAAA;AACH,MAAA,OAAO,OAAA,CAAQ,OAAA,EAAS,CAAC,CAAC,OAAA,EAAS,IAAI,CAAA,CAAE,KAAK,CAAC,CAAC,CAAC,CAAA;AAAA,IACnD,KAAK,MAAA;AACH,MAAA,OAAO,OAAA,CAAQ,MAAA,EAAQ,CAAC,CAAC,OAAA,EAAS,KAAK,CAAA,CAAE,KAAK,CAAC,CAAC,CAAC,CAAA;AAAA,IACnD,KAAK,KAAA;AACH,MAAA,OAAO,OAAA,CAAQ,KAAA,EAAO,CAAC,CAAC,OAAA,EAAS,IAAI,CAAA,CAAE,KAAK,CAAC,CAAC,CAAC,CAAA;AAAA,IACjD;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AAEA,IAAM,cAAA,GAAiB,CAAC,CAAA,KAA8B;AACpD,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,UAAA;AACH,MAAA,OAAO,QAAQ,UAAA,EAAY;AAAA,QACzB,CAAC,KAAA,EAAO,MAAA,CAAO,CAAA,CAAE,GAAG,CAAC,CAAA;AAAA,QACrB,CAAC,KAAA,EAAO,MAAA,CAAO,CAAA,CAAE,GAAG,CAAC;AAAA,OACtB,CAAA;AAAA,IACH,KAAK,YAAA;AACH,MAAA,OAAO,QAAQ,YAAA,EAAc;AAAA,QAC3B,CAAC,KAAA,EAAO,GAAA,CAAI,CAAA,CAAE,GAAG,CAAC,CAAA;AAAA,QAClB,CAAC,KAAA,EAAO,GAAA,CAAI,CAAA,CAAE,GAAG,CAAC;AAAA,OACnB,CAAA;AAAA,IACH,KAAK,WAAA;AACH,MAAA,OAAO,QAAQ,WAAA,EAAa;AAAA,QAC1B,CAAC,QAAA,EAAU,MAAA,CAAO,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,QAC3B,CAAC,QAAA,EAAU,MAAA,CAAO,CAAA,CAAE,MAAM,CAAC;AAAA,OAC5B,CAAA;AAAA,IACH,KAAK,MAAA;AACH,MAAA,OAAO,OAAA,CAAQ,MAAA,EAAQ,CAAC,CAAC,SAAA,EAAW,MAAA,CAAO,CAAA,CAAE,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAAA,IAClE,KAAK,WAAA;AACH,MAAA,OAAO,OAAA,CAAQ,WAAA,EAAa,EAAE,CAAA;AAAA,IAChC;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AAEA,IAAM,QAAA,GAAW,CAAC,CAAA,KAAwB;AACxC,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,MAAA,GAAkB;AAAA,QACtB,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,QACpB,CAAC,OAAA,EAAS,cAAA,CAAe,CAAA,CAAE,KAAK,CAAC;AAAA,OACnC;AACA,MAAA,IAAI,CAAA,CAAE,OAAA,KAAY,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,SAAA,EAAW,cAAA,CAAe,CAAA,CAAE,OAAO,CAAC,CAAC,CAAA;AAC/E,MAAA,OAAO,OAAA,CAAQ,SAAS,MAAM,CAAA;AAAA,IAChC;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,MAAA,GAAkB,CAAC,CAAC,MAAA,EAAQ,IAAI,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AAC9C,MAAA,IAAI,CAAA,CAAE,cAAA,KAAmB,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,gBAAA,EAAkB,GAAA,CAAI,CAAA,CAAE,cAAc,CAAC,CAAC,CAAA;AACzF,MAAA,OAAO,OAAA,CAAQ,QAAQ,MAAM,CAAA;AAAA,IAC/B;AAAA,IACA,KAAK,QAAA;AACH,MAAA,OAAO,QAAQ,QAAA,EAAU;AAAA,QACvB,CAAC,YAAA,EAAc,cAAA,CAAe,CAAA,CAAE,UAAU,CAAC,CAAA;AAAA,QAC3C,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC;AAAA,OACrB,CAAA;AAAA,IACH;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AAEA,IAAM,WAAA,GAAc,CAAC,CAAA,KACnB,OAAA,CAAQ;AAAA,EACN,CAAC,aAAA,EAAe,GAAA,CAAI,CAAA,CAAE,WAAW,CAAC,CAAA;AAAA,EAClC,CAAC,YAAA,EAAc,GAAA,CAAI,CAAA,CAAE,UAAU,CAAC;AAClC,CAAC,CAAA;AAEH,IAAM,sBAAsB,CAAC,CAAA,KAC3B,EAAE,UAAA,KAAe,MAAA,IAAU,EAAE,WAAA,KAAgB,eAAA;AAE/C,IAAM,WAAA,GAAc,CAAC,CAAA,KAAoC;AACvD,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,OAAA;AACH,MAAA,OAAO,cAAA,CAAe,EAAE,KAAK,CAAA;AAAA,IAC/B,KAAK,MAAA;AACH,MAAA,OAAO,OAAA,CAAQ,SAAA,EAAW,CAAC,CAAC,MAAA,EAAQ,KAAK,CAAA,CAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,IACpD;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AAIA,IAAM,QAAA,GAAW,CAAC,CAAA,KAAiC;AACjD,EAAA,QAAQ,EAAE,IAAA;AAAM;AAAA;AAAA;AAAA,IAId,KAAK,QAAA;AACH,MAAA,OAAO,UAAA,CAAW,EAAE,MAAM,CAAA;AAAA,IAC5B,KAAK,SAAA;AACH,MAAA,OAAO,WAAA,CAAY,EAAE,OAAO,CAAA;AAAA,IAC9B,KAAK,OAAA;AACH,MAAA,OAAO,SAAA,CAAU,EAAE,KAAK,CAAA;AAAA,IAC1B,KAAK,eAAA;AACH,MAAA,OAAO,OAAA,CAAQ,EAAE,aAAa,CAAA;AAAA,IAChC,KAAK,QAAA,EAAU;AAIb,MAAA,MAAM,MAAA,GAAkB;AAAA,QACtB,CAAC,aAAA,EAAe,GAAA,CAAI,CAAA,CAAE,WAAW,CAAC,CAAA;AAAA,QAClC,CAAC,UAAA,EAAY,GAAA,CAAI,CAAA,CAAE,QAAQ,CAAC,CAAA;AAAA,QAC5B,CAAC,OAAA,EAAS,OAAA,CAAQ,CAAA,CAAE,KAAK,CAAC;AAAA,OAC5B;AACA,MAAA,IAAI,CAAA,CAAE,gBAAgB,MAAA,EAAW;AAC/B,QAAA,MAAA,CAAO,IAAA,CAAK;AAAA,UACV,aAAA;AAAA,UACA,OAAA,CAAQ;AAAA,YACN,CAAC,WAAA,EAAa,GAAA,CAAI,CAAA,CAAE,WAAA,CAAY,SAAS,CAAC,CAAA;AAAA,YAC1C,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,WAAA,CAAY,IAAI,CAAC,CAAA;AAAA,YAChC,CAAC,YAAA,EAAc,GAAA,CAAI,CAAA,CAAE,WAAA,CAAY,UAAU,CAAC;AAAA,WAC7C;AAAA,SACF,CAAA;AAAA,MACH;AACA,MAAA,IAAI,CAAA,CAAE,cAAA,CAAe,MAAA,GAAS,CAAA,EAAG;AAC/B,QAAA,MAAA,CAAO,IAAA,CAAK,CAAC,gBAAA,EAAkB,MAAA,CAAO,CAAA,CAAE,eAAe,GAAA,CAAI,GAAG,CAAC,CAAC,CAAC,CAAA;AAAA,MACnE;AACA,MAAA,OAAO,OAAA,CAAQ,UAAU,MAAM,CAAA;AAAA,IACjC;AAAA,IACA,KAAK,eAAA;AACH,MAAA,OAAO,QAAQ,eAAA,EAAiB;AAAA,QAC9B,CAAC,OAAA,EAAS,IAAA,CAAK,CAAA,CAAE,IAAA,CAAK,KAAK,CAAC,CAAA;AAAA,QAC5B,CAAC,UAAA,EAAY,IAAA,CAAK,CAAA,CAAE,IAAA,CAAK,QAAQ,CAAC;AAAA,OACnC,CAAA;AAAA,IACH,KAAK,QAAA;AAKH,MAAA,OAAO,QAAQ,QAAA,EAAU;AAAA,QACvB;AAAA,UACE,OAAA;AAAA,UACA,MAAA;AAAA,YACE,CAAA,CAAE,KAAK,KAAA,CAAM,GAAA;AAAA,cAAI,CAAC,MAChB,OAAA,CAAQ;AAAA,gBACN,CAAC,OAAA,EAAS,IAAA,CAAK,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,gBACvB,CAAC,OAAA,EAAS,GAAA,CAAI,CAAA,CAAE,KAAK,CAAC;AAAA,eACvB;AAAA;AACH;AACF,SACF;AAAA,QACA,CAAC,SAAA,EAAW,IAAA,CAAK,CAAA,CAAE,IAAA,CAAK,OAAO,CAAC,CAAA;AAAA,QAChC,CAAC,UAAA,EAAY,GAAA,CAAI,CAAA,CAAE,IAAA,CAAK,QAAQ,CAAC;AAAA,OAClC,CAAA;AAAA,IACH,KAAK,cAAA,EAAgB;AAInB,MAAA,MAAM,MAAA,GAAkB;AAAA,QACtB,CAAC,MAAA,EAAQ,IAAA,CAAK,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,QAC1B,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC;AAAA,OAC3B;AACA,MAAA,IAAI,EAAE,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,CAAA,SAAU,IAAA,CAAK,CAAC,OAAA,EAAS,MAAA,CAAO,EAAE,IAAA,CAAK,KAAA,CAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAA;AACtF,MAAA,IAAI,CAAC,mBAAA,CAAoB,CAAA,CAAE,IAAA,CAAK,MAAM,CAAA,EAAG,MAAA,CAAO,IAAA,CAAK,CAAC,UAAU,WAAA,CAAY,CAAA,CAAE,IAAA,CAAK,MAAM,CAAC,CAAC,CAAA;AAC3F,MAAA,OAAO,OAAA,CAAQ,gBAAgB,MAAM,CAAA;AAAA,IACvC;AAAA,IACA,KAAK,aAAA,EAAe;AAElB,MAAA,MAAM,MAAA,GAAkB,CAAC,CAAC,MAAA,EAAQ,IAAI,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAC,CAAA;AACnD,MAAA,MAAM,OAAA,GAAU,MAAA,CAAO,IAAA,CAAK,CAAA,CAAE,KAAK,IAAI,CAAA;AACvC,MAAA,IAAI,QAAQ,MAAA,GAAS,CAAA;AACnB,QAAA,MAAA,CAAO,IAAA,CAAK;AAAA,UACV,MAAA;AAAA,UACA,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,CAAC,QAAQ,CAAC,GAAA,EAAK,WAAA,CAAY,CAAA,CAAE,KAAK,IAAA,CAAK,GAAG,CAAE,CAAC,CAAU,CAAC;AAAA,SAC7E,CAAA;AACH,MAAA,OAAO,OAAA,CAAQ,eAAe,MAAM,CAAA;AAAA,IACtC;AAAA,IACA,KAAK,OAAA,EAAS;AAMZ,MAAA,MAAM,IAAI,CAAA,CAAE,IAAA;AACZ,MAAA,MAAM,aAAA,GAAyB,CAAC,CAAC,WAAA,EAAa,IAAI,CAAA,CAAE,OAAA,CAAQ,SAAS,CAAC,CAAC,CAAA;AACvE,MAAA,IAAI,CAAA,CAAE,QAAQ,YAAA,KAAiB,MAAA;AAC7B,QAAA,aAAA,CAAc,IAAA,CAAK,CAAC,cAAA,EAAgB,GAAA,CAAI,EAAE,OAAA,CAAQ,YAAY,CAAC,CAAC,CAAA;AAClE,MAAA,MAAM,MAAA,GAAkB;AAAA,QACtB,CAAC,gBAAgB,MAAA,CAAO,CAAA,CAAE,aAAa,GAAA,CAAI,GAAG,CAAC,CAAC,CAAA;AAAA,QAChD,CAAC,SAAA,EAAW,OAAA,CAAQ,aAAa,CAAC,CAAA;AAAA,QAClC,CAAC,YAAY,OAAO,CAAA;AAAA,QACpB,CAAC,SAAA,EAAW,GAAA,CAAI,CAAA,CAAE,OAAO,CAAC;AAAA,OAC5B;AACA,MAAA,MAAM,SAAA,GAAY,MAAA,CAAO,IAAA,CAAK,CAAA,CAAE,MAAM,CAAA;AACtC,MAAA,IAAI,UAAU,MAAA,GAAS,CAAA;AACrB,QAAA,MAAA,CAAO,IAAA,CAAK;AAAA,UACV,QAAA;AAAA,UACA,OAAA,CAAQ,SAAA,CAAU,GAAA,CAAI,CAAC,QAAQ,CAAC,GAAA,EAAK,WAAA,CAAY,CAAA,CAAE,MAAA,CAAO,GAAG,CAAE,CAAC,CAAU,CAAC;AAAA,SAC5E,CAAA;AACH,MAAA,OAAO,OAAA,CAAQ,SAAS,MAAM,CAAA;AAAA,IAChC;AAAA,IACA;AACE,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAE1B,CAAA;AAEA,IAAM,cAAA,GAAiB,CAAC,CAAA,KAAuC;AAC7D,EAAA,MAAM,SAAkB,EAAC;AACzB,EAAA,IAAI,CAAA,CAAE,SAAA,KAAc,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,WAAA,EAAa,IAAA,CAAK,CAAA,CAAE,SAAS,CAAC,CAAC,CAAA;AAC3E,EAAA,IAAI,CAAA,CAAE,OAAA,KAAY,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,SAAA,EAAW,IAAA,CAAK,CAAA,CAAE,OAAO,CAAC,CAAC,CAAA;AACrE,EAAA,IAAI,CAAA,CAAE,YAAY,MAAA,EAAW,MAAA,CAAO,KAAK,CAAC,SAAA,EAAW,OAAO,CAAC,CAAA;AAC7D,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,aAAA,GAAgB,CAAC,CAAA,KAA6B;AAQlD,EAAA,MAAM,SAAkB,EAAC;AACzB,EAAA,IAAI,CAAA,CAAE,QAAA,KAAa,MAAA,IAAa,CAAA,CAAE,QAAA,KAAa,QAAA;AAC7C,IAAA,MAAA,CAAO,KAAK,CAAC,UAAA,EAAY,IAAI,CAAA,CAAE,QAAQ,CAAC,CAAC,CAAA;AAC3C,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,IAAa,CAAA,CAAE,SAAS,SAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AACnF,EAAA,IAAI,CAAA,CAAE,MAAA,KAAW,MAAA,IAAa,CAAA,CAAE,WAAW,UAAA,EAAY,MAAA,CAAO,IAAA,CAAK,CAAC,QAAA,EAAU,GAAA,CAAI,CAAA,CAAE,MAAM,CAAC,CAAC,CAAA;AAC5F,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,IAAa,CAAA,CAAE,SAAS,MAAA,EAAQ,MAAA,CAAO,IAAA,CAAK,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AAChF,EAAA,IAAI,CAAA,CAAE,KAAA,KAAU,MAAA,IAAa,CAAA,CAAE,UAAU,SAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,OAAA,EAAS,GAAA,CAAI,CAAA,CAAE,KAAK,CAAC,CAAC,CAAA;AACvF,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAEA,IAAM,aAAA,GAAgB,CAAC,CAAA,KAA6B;AAClD,EAAA,MAAM,SAAkB,EAAC;AACzB,EAAA,IAAI,CAAA,CAAE,KAAA,KAAU,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,OAAA,EAAS,OAAA,CAAQ,CAAA,CAAE,KAAK,CAAC,CAAC,CAAA;AAClE,EAAA,IAAI,CAAA,CAAE,UAAA,KAAe,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,YAAA,EAAc,GAAA,CAAI,CAAA,CAAE,UAAU,CAAC,CAAC,CAAA;AAC7E,EAAA,IAAI,CAAA,CAAE,WAAA,KAAgB,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,aAAA,EAAe,GAAA,CAAI,CAAA,CAAE,WAAW,CAAC,CAAC,CAAA;AAChF,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,MAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AAC3D,EAAA,IAAI,CAAA,CAAE,UAAA,KAAe,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,YAAA,EAAc,GAAA,CAAI,CAAA,CAAE,UAAU,CAAC,CAAC,CAAA;AAC7E,EAAA,IAAI,CAAA,CAAE,MAAA,KAAW,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,QAAA,EAAU,OAAA,CAAQ,CAAA,CAAE,MAAM,CAAC,CAAC,CAAA;AACrE,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAGA,IAAM,YAAA,GAAe,CAAC,CAAA,KACpB,CAAA,CAAE,SAAA,KAAc,UAAa,CAAA,CAAE,OAAA,KAAY,MAAA,IAAa,CAAA,CAAE,OAAA,KAAY,MAAA;AAIxE,IAAM,cAAA,GAAiB,CAAC,CAAA,KAAA,CACrB,CAAA,CAAE,QAAA,KAAa,MAAA,IAAa,CAAA,CAAE,QAAA,KAAa,QAAA,MAC3C,CAAA,CAAE,IAAA,KAAS,MAAA,IAAa,EAAE,IAAA,KAAS,SAAA,CAAA,KACnC,CAAA,CAAE,MAAA,KAAW,MAAA,IAAa,CAAA,CAAE,MAAA,KAAW,UAAA,CAAA,KACvC,EAAE,IAAA,KAAS,MAAA,IAAa,CAAA,CAAE,IAAA,KAAS,MAAA,CAAA,KACnC,CAAA,CAAE,KAAA,KAAU,MAAA,IAAa,EAAE,KAAA,KAAU,SAAA,CAAA;AAExC,IAAM,IAAA,GAAO,CAAC,CAAA,KAA6B;AACzC,EAAA,MAAM,MAAA,GAAkB;AAAA,IACtB,CAAC,IAAA,EAAM,GAAA,CAAI,CAAA,CAAE,EAAE,CAAC,CAAA;AAAA,IAChB,CAAC,MAAA,EAAQ,QAAA,CAAS,CAAA,CAAE,IAAI,CAAC;AAAA,GAC3B;AAGA,EAAA,IAAI,CAAC,YAAA,CAAa,CAAA,CAAE,KAAK,CAAA,EAAG,MAAA,CAAO,IAAA,CAAK,CAAC,OAAA,EAAS,cAAA,CAAe,CAAA,CAAE,KAAK,CAAC,CAAC,CAAA;AAC1E,EAAA,IAAI,CAAC,cAAA,CAAe,CAAA,CAAE,KAAK,CAAA,EAAG,MAAA,CAAO,IAAA,CAAK,CAAC,OAAA,EAAS,aAAA,CAAc,CAAA,CAAE,KAAK,CAAC,CAAC,CAAA;AAC3E,EAAA,IAAI,CAAA,CAAE,aAAA,KAAkB,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,CAAC,eAAA,EAAiB,aAAA,CAAc,CAAA,CAAE,aAAa,CAAC,CAAC,CAAA;AAChG,EAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,CAAA;AAIA,IAAM,MAAA,GAAS,CAAC,EAAA,KAAgC;AAC9C,EAAA,QAAQ,GAAG,IAAA;AAAM,IACf,KAAK,UAAA;AACH,MAAA,OAAO,QAAQ,UAAA,EAAY;AAAA,QACzB,CAAC,SAAA,EAAW,QAAA,CAAS,EAAA,CAAG,OAAO,CAAC,CAAA;AAAA,QAChC,CAAC,QAAA,EAAU,GAAA,CAAI,EAAA,CAAG,MAAM,CAAC;AAAA,OAC1B,CAAA;AAAA,IACH,KAAK,YAAA;AACH,MAAA,OAAO,QAAQ,YAAA,EAAc;AAAA,QAC3B,CAAC,MAAA,EAAQ,GAAA,CAAI,EAAA,CAAG,IAAI,CAAC,CAAA;AAAA,QACrB,CAAC,QAAA,EAAU,GAAA,CAAI,EAAA,CAAG,MAAM,CAAC,CAAA;AAAA,QACzB,CAAC,OAAA,EAAS,SAAA,CAAU,EAAA,CAAG,KAAK,CAAC;AAAA,OAC9B,CAAA;AAAA,IACH,KAAK,gBAAA;AACH,MAAA,OAAO,QAAQ,gBAAA,EAAkB;AAAA,QAC/B,CAAC,SAAA,EAAW,OAAA,CAAQ,EAAA,CAAG,OAAO,CAAC,CAAA;AAAA,QAC/B,CAAC,MAAA,EAAQ,GAAA,CAAI,EAAA,CAAG,IAAI,CAAC,CAAA;AAAA,QACrB,CAAC,QAAA,EAAU,GAAA,CAAI,EAAA,CAAG,MAAM,CAAC;AAAA,OAC1B,CAAA;AAAA,IACH,KAAK,aAAA;AACH,MAAA,OAAO,QAAQ,aAAA,EAAe;AAAA,QAC5B,CAAC,OAAA,EAAS,aAAA,CAAc,EAAA,CAAG,KAAK,CAAC,CAAA;AAAA,QACjC,CAAC,QAAA,EAAU,GAAA,CAAI,EAAA,CAAG,MAAM,CAAC;AAAA,OAC1B,CAAA;AAAA,IACH,KAAK,aAAA;AACH,MAAA,OAAO,QAAQ,aAAA,EAAe;AAAA,QAC5B,CAAC,OAAA,EAAS,cAAA,CAAe,EAAA,CAAG,KAAK,CAAC,CAAA;AAAA,QAClC,CAAC,QAAA,EAAU,GAAA,CAAI,EAAA,CAAG,MAAM,CAAC;AAAA,OAC1B,CAAA;AAAA,IACH,KAAK,aAAA;AACH,MAAA,OAAO,QAAQ,aAAA,EAAe;AAAA,QAC5B,CAAC,OAAA,EAAS,IAAA,CAAK,EAAA,CAAG,KAAK,CAAC,CAAA;AAAA,QACxB,CAAC,UAAA,EAAY,GAAA,CAAI,EAAA,CAAG,QAAQ,CAAC;AAAA,OAC9B,CAAA;AAAA,IACH,KAAK,YAAA;AACH,MAAA,OAAO,OAAA,CAAQ,YAAA,EAAc,CAAC,CAAC,QAAA,EAAU,IAAI,EAAA,CAAG,MAAM,CAAC,CAAC,CAAC,CAAA;AAAA,IAC3D,KAAK,UAAA;AACH,MAAA,OAAO,QAAQ,UAAA,EAAY;AAAA,QACzB,CAAC,aAAA,EAAe,GAAA,CAAI,EAAA,CAAG,WAAW,CAAC,CAAA;AAAA,QACnC,CAAC,QAAA,EAAU,GAAA,CAAI,EAAA,CAAG,MAAM,CAAC;AAAA,OAC1B,CAAA;AAAA,IACH,KAAK,iBAAA;AACH,MAAA,OAAO,QAAQ,iBAAA,EAAmB;AAAA,QAChC,CAAC,YAAY,MAAA,CAAO,EAAA,CAAG,SAAS,GAAA,CAAI,GAAG,CAAC,CAAC,CAAA;AAAA,QACzC,CAAC,UAAA,EAAY,GAAA,CAAI,EAAA,CAAG,QAAQ,CAAC;AAAA,OAC9B,CAAA;AAAA,IACH,KAAK,aAAA;AACH,MAAA,OAAO,OAAA,CAAQ,aAAA,EAAe,CAAC,CAAC,MAAA,EAAQ,KAAK,EAAA,CAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,IACzD,KAAK,OAAA;AACH,MAAA,OAAO,OAAA,CAAQ,OAAA,EAAS,CAAC,CAAC,KAAA,EAAO,MAAA,CAAO,EAAA,CAAG,GAAA,CAAI,GAAA,CAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAAA,IAC/D;AACE,MAAA,OAAO,YAAY,EAAE,CAAA;AAAA;AAE3B,CAAA;AAKO,IAAM,UAAA,GAAa,CAAO,CAAA,KAA0B,IAAA,CAAK,CAAkB;AAG3E,IAAM,QAAA,GAAW,CAAO,EAAA,KAA6B,MAAA,CAAO,EAAqB;;;AC3jExF,IAAM,MAAM,CAAI,KAAA,MAAqB,EAAE,EAAA,EAAI,MAAM,KAAA,EAAM,CAAA;AACvD,IAAM,OAAO,CAAC,KAAA,MAAiC,EAAE,EAAA,EAAI,OAAO,KAAA,EAAM,CAAA;AAElE,IAAM,aAAA,GAAgB,CAAC,IAAA,EAAcC,UAAAA,MAA6C;AAAA,EAChF,IAAA,EAAM,eAAA;AAAA,EACN,IAAA;AAAA,EACA,SAAA,EAAAA;AACF,CAAA,CAAA;AACA,IAAM,YAAY,CAAC,MAAA,MAA+B,EAAE,IAAA,EAAM,aAAa,MAAA,EAAO,CAAA;AAC9E,IAAM,YAAA,GAAe,CAAC,IAAA,EAAc,KAAA,MAAyC;AAAA,EAC3E,IAAA,EAAM,cAAA;AAAA,EACN,IAAA;AAAA,EACA;AACF,CAAA,CAAA;AACA,IAAM,UAAA,GAAa,CAAC,EAAA,EAAY,QAAA,EAAkB,GAAA,MAA4B;AAAA,EAC5E,IAAA,EAAM,YAAA;AAAA,EACN,EAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,CAAA;AASA,IAAM,IAAA,GAAa,EAAE,IAAA,EAAM,MAAA,EAAO;AAElC,IAAM,MAAA,GAAS,CAAC,CAAA,KAAqB,CAAA,CAAE,IAAA,KAAS,MAAA;AAEhD,IAAM,QAAA,GAAW,CAAC,CAAA,KAAsB,CAAA,CAAE,OAAA,CAAQ,MAAA,GAAS,CAAA,GAAI,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,CAAG,KAAA,CAAM,MAAA,GAAS,CAAA;AAE5F,IAAM,OAAA,GAAU,CAAC,CAAA,KAAoB;AACnC,EAAA,MAAM,CAAA,GAAI,SAAS,CAAC,CAAA;AACpB,EAAA,MAAM,MAAA,GAAS,IAAI,GAAA,CAAI,CAAA,CAAE,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,IAAA,EAAM,CAAC,CAAU,CAAC,CAAA;AACjE,EAAA,MAAM,OAAiB,EAAC;AACxB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,KAAK,CAAA,EAAG;AAC7B,IAAA,IAAA,CAAK,IAAA;AAAA,MACH,CAAA,CAAE,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,KAAM;AAClB,QAAA,MAAM,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,CAAA,CAAE,IAAI,CAAA;AAC3B,QAAA,OAAO,CAAA,KAAM,MAAA,IAAa,CAAA,IAAK,CAAA,IAAK,CAAA,GAAI,CAAA,CAAE,KAAA,CAAM,MAAA,GAAS,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA,GAAK,IAAA;AAAA,MACzE,CAAC;AAAA,KACH;AAAA,EACF;AACA,EAAA,OAAO,EAAE,IAAA,EAAM,CAAA,CAAE,MAAA,EAAQ,IAAA,EAAK;AAChC,CAAA;AAEA,IAAM,OAAA,GAAU,CAAC,CAAA,KAAoB;AACnC,EAAA,MAAM,UAAwB,CAAA,CAAE,IAAA,CAAK,GAAA,CAAI,CAAC,GAAG,EAAA,MAAQ;AAAA,IACnD,MAAM,CAAA,CAAE,IAAA;AAAA,IACR,MAAM,CAAA,CAAE,IAAA;AAAA,IACR,KAAA,EAAO,EAAE,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,KAAQ,GAAA,CAAI,EAAE,CAAE;AAAA,GACrC,CAAE,CAAA;AACF,EAAA,OAAO,EAAE,MAAA,EAAQ,CAAA,CAAE,IAAA,EAAM,OAAA,EAAQ;AACnC,CAAA;AAEA,IAAM,QAAA,GAAW,CAAC,IAAA,EAA8B,IAAA,KAC9C,IAAA,CAAK,UAAU,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,KAAS,IAAI,CAAA;AAEvC,IAAM,OAAA,GAAU,CAAC,IAAA,EAA8B,IAAA,KAC7C,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,KAAS,IAAI,CAAA,EAAG,IAAA;AAErC,IAAM,SAAA,GAAY,CAAC,IAAA,KAA2C,IAAA,CAAK,IAAI,CAAC,CAAA,KAAM,EAAE,IAAI,CAAA;AAK7E,IAAM,UAAA,GAAa,CAAC,CAAA,KAAoB;AAC7C,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,KAAA;AACH,MAAA,OAAO,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,IACnC,KAAK,OAAA;AACH,MAAA,OAAO,GAAA,CAAI,EAAE,KAAK,CAAA;AAAA,IACpB,KAAK,MAAA;AACH,MAAA,OAAO,CAAA,CAAE,QAAQ,MAAA,GAAS,OAAA;AAAA,IAC5B,KAAK,KAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL,KAAK,WAAA;AACH,MAAA,OAAO,CAAA,CAAE,KAAA;AAAA,IACX,KAAK,MAAA;AACH,MAAA,OAAO,EAAA;AAAA;AAEb;AAEA,IAAM,KAAA,GAAQ,CAAC,CAAA,KACb,CAAA,CAAE,IAAA,KAAS,SAAS,CAAA,CAAE,IAAA,KAAS,OAAA,GAAU,CAAA,CAAE,KAAA,GAAQ,MAAA;AAErD,IAAM,IAAA,GAAO,CAAC,CAAA,KAAuB,CAAA,GAAI,IAAI,EAAA,GAAK,CAAA,GAAI,IAAI,CAAA,GAAI,CAAA;AAG9D,IAAM,YAAA,GAAe,CAAC,CAAA,EAAS,CAAA,KAAgC;AAC7D,EAAA,MAAM,EAAA,GAAK,MAAM,CAAC,CAAA;AAClB,EAAA,MAAM,EAAA,GAAK,MAAM,CAAC,CAAA;AAClB,EAAA,IAAI,OAAO,MAAA,IAAa,EAAA,KAAO,QAAW,OAAO,IAAA,CAAK,KAAK,EAAE,CAAA;AAC7D,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,IAAU,CAAA,CAAE,SAAS,MAAA,EAAQ,OAAO,CAAA,CAAE,KAAA,KAAU,CAAA,CAAE,KAAA,GAAQ,CAAA,GAAI,CAAA,CAAE,QAAQ,CAAA,GAAI,EAAA;AAC3F,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,KAAA,IAAS,CAAA,CAAE,IAAA,KAAS,KAAA;AACjC,IAAA,OAAO,CAAA,CAAE,QAAQ,CAAA,CAAE,KAAA,GAAQ,KAAK,CAAA,CAAE,KAAA,GAAQ,CAAA,CAAE,KAAA,GAAQ,CAAA,GAAI,CAAA;AAC1D,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,IAAU,CAAA,CAAE,IAAA,KAAS,MAAA;AAClC,IAAA,OAAO,CAAA,CAAE,QAAQ,CAAA,CAAE,KAAA,GAAQ,KAAK,CAAA,CAAE,KAAA,GAAQ,CAAA,CAAE,KAAA,GAAQ,CAAA,GAAI,CAAA;AAC1D,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,WAAA,IAAe,CAAA,CAAE,IAAA,KAAS,WAAA;AACvC,IAAA,OAAO,CAAA,CAAE,QAAQ,CAAA,CAAE,KAAA,GAAQ,KAAK,CAAA,CAAE,KAAA,GAAQ,CAAA,CAAE,KAAA,GAAQ,CAAA,GAAI,CAAA;AAC1D,EAAA,OAAO,MAAA;AACT,CAAA;AAEA,IAAM,MAAA,GAAS,CAAC,CAAA,EAAS,CAAA,KAAqB;AAC5C,EAAA,IAAI,EAAE,IAAA,KAAS,MAAA,IAAU,CAAA,CAAE,IAAA,KAAS,QAAQ,OAAO,KAAA;AACnD,EAAA,OAAO,YAAA,CAAa,CAAA,EAAG,CAAC,CAAA,KAAM,CAAA;AAChC,CAAA;AAEA,IAAM,OAAA,GAAU,CAAC,CAAA,EAAS,CAAA,KAAqB,EAAE,IAAA,KAAS,KAAA,IAAS,EAAE,IAAA,KAAS,KAAA;AAE9E,IAAM,KAAA,GAAQ,CAAC,EAAA,EAAY,CAAA,EAAS,CAAA,KAAsB;AACxD,EAAA,IAAI,CAAA,CAAE,SAAS,MAAA,IAAU,CAAA,CAAE,SAAS,MAAA,EAAQ,OAAO,IAAI,IAAI,CAAA;AAC3D,EAAA,MAAM,CAAA,GAAI,MAAM,CAAC,CAAA;AACjB,EAAA,MAAM,CAAA,GAAI,MAAM,CAAC,CAAA;AACjB,EAAA,IAAI,CAAA,KAAM,UAAa,CAAA,KAAM,MAAA;AAC3B,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,qCAAqC,CAAC,CAAA;AAC9D,EAAA,MAAM,EAAA,GAAK,OAAA,CAAQ,CAAA,EAAG,CAAC,CAAA;AACvB,EAAA,QAAQ,EAAA;AAAI,IACV,KAAK,KAAA;AACH,MAAA,OAAO,GAAA;AAAA,QACL,KACI,EAAE,IAAA,EAAM,OAAO,KAAA,EAAO,IAAA,CAAK,MAAM,CAAC,CAAA,GAAI,KAAK,KAAA,CAAM,CAAC,GAAE,GACpD,EAAE,MAAM,OAAA,EAAS,KAAA,EAAO,IAAI,CAAA;AAAE,OACpC;AAAA,IACF,KAAK,KAAA;AACH,MAAA,OAAO,GAAA;AAAA,QACL,KACI,EAAE,IAAA,EAAM,OAAO,KAAA,EAAO,IAAA,CAAK,MAAM,CAAC,CAAA,GAAI,KAAK,KAAA,CAAM,CAAC,GAAE,GACpD,EAAE,MAAM,OAAA,EAAS,KAAA,EAAO,IAAI,CAAA;AAAE,OACpC;AAAA,IACF,KAAK,KAAA;AACH,MAAA,OAAO,GAAA;AAAA,QACL,KACI,EAAE,IAAA,EAAM,OAAO,KAAA,EAAO,IAAA,CAAK,MAAM,CAAC,CAAA,GAAI,KAAK,KAAA,CAAM,CAAC,GAAE,GACpD,EAAE,MAAM,OAAA,EAAS,KAAA,EAAO,IAAI,CAAA;AAAE,OACpC;AAAA,IACF,KAAK,KAAA;AACH,MAAA,OAAO,GAAA,CAAI,CAAA,KAAM,CAAA,GAAI,IAAA,GAAO,EAAE,MAAM,OAAA,EAAS,KAAA,EAAO,CAAA,GAAI,CAAA,EAAG,CAAA;AAAA,IAC7D,KAAK,KAAA;AACH,MAAA,IAAI,CAAC,EAAA,EAAI,OAAO,IAAA,CAAK,SAAA,CAAU,+BAA+B,CAAC,CAAA;AAC/D,MAAA,IAAI,KAAK,KAAA,CAAM,CAAC,MAAM,CAAA,EAAG,OAAO,IAAI,IAAI,CAAA;AACxC,MAAA,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,CAAC,GAAG,CAAA;AAAA,IAClE;AACE,MAAA,OAAO,IAAA,CAAK,SAAA,CAAU,4BAA4B,CAAC,CAAA;AAAA;AAEzD,CAAA;AAEA,IAAM,UAAA,GAAa,CAAC,EAAA,EAAY,CAAA,EAAS,CAAA,KAAsB;AAC7D,EAAA,IAAI,CAAA,CAAE,SAAS,MAAA,IAAU,CAAA,CAAE,SAAS,MAAA,EAAQ,OAAO,IAAI,IAAI,CAAA;AAC3D,EAAA,MAAM,CAAA,GAAI,YAAA,CAAa,CAAA,EAAG,CAAC,CAAA;AAC3B,EAAA,IAAI,MAAM,MAAA,EAAW,OAAO,IAAA,CAAK,SAAA,CAAU,uCAAuC,CAAC,CAAA;AACnF,EAAA,IAAI,CAAA;AACJ,EAAA,QAAQ,EAAA;AAAI,IACV,KAAK,IAAA;AACH,MAAA,CAAA,GAAI,CAAA,KAAM,CAAA;AACV,MAAA;AAAA,IACF,KAAK,IAAA;AACH,MAAA,CAAA,GAAI,CAAA,KAAM,CAAA;AACV,MAAA;AAAA,IACF,KAAK,IAAA;AACH,MAAA,CAAA,GAAI,CAAA,GAAI,CAAA;AACR,MAAA;AAAA,IACF,KAAK,IAAA;AACH,MAAA,CAAA,GAAI,CAAA,IAAK,CAAA;AACT,MAAA;AAAA,IACF,KAAK,IAAA;AACH,MAAA,CAAA,GAAI,CAAA,GAAI,CAAA;AACR,MAAA;AAAA,IACF,KAAK,IAAA;AACH,MAAA,CAAA,GAAI,CAAA,IAAK,CAAA;AACT,MAAA;AAAA,IACF;AACE,MAAA,CAAA,GAAI,KAAA;AAAA;AAER,EAAA,OAAO,IAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,GAAG,CAAA;AACvC,CAAA;AAGA,IAAM,OAAA,GAAU,CAAC,EAAA,EAAY,CAAA,EAAS,CAAA,KAAsB;AAC1D,EAAA,MAAM,MAAA,GAAS,CAAC,CAAA,KAAqC;AACnD,IAAA,IAAI,EAAE,IAAA,KAAS,MAAA,EAAQ,OAAO,GAAA,CAAI,EAAE,KAAK,CAAA;AACzC,IAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,EAAQ,OAAO,IAAI,MAAS,CAAA;AAC3C,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,wCAAwC,CAAC,CAAA;AAAA,EACjE,CAAA;AACA,EAAA,MAAM,CAAA,GAAI,OAAO,CAAC,CAAA;AAClB,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,MAAM,CAAA,GAAI,OAAO,CAAC,CAAA;AAClB,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,MAAM,KAAK,CAAA,CAAE,KAAA;AACb,EAAA,MAAM,KAAK,CAAA,CAAE,KAAA;AACb,EAAA,IAAI,OAAO,KAAA,EAAO;AAChB,IAAA,IAAI,EAAA,KAAO,KAAA,IAAS,EAAA,KAAO,KAAA,EAAO,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,KAAA,EAAO,CAAA;AAC3E,IAAA,IAAI,EAAA,KAAO,IAAA,IAAQ,EAAA,KAAO,IAAA,EAAM,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,CAAA;AACxE,IAAA,OAAO,IAAI,IAAI,CAAA;AAAA,EACjB;AACA,EAAA,IAAI,OAAO,IAAA,EAAM;AACf,IAAA,IAAI,EAAA,KAAO,IAAA,IAAQ,EAAA,KAAO,IAAA,EAAM,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,CAAA;AACxE,IAAA,IAAI,EAAA,KAAO,KAAA,IAAS,EAAA,KAAO,KAAA,EAAO,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,KAAA,EAAO,CAAA;AAC3E,IAAA,OAAO,IAAI,IAAI,CAAA;AAAA,EACjB;AACA,EAAA,OAAO,IAAA,CAAK,SAAA,CAAU,wBAAwB,CAAC,CAAA;AACjD,CAAA;AAKA,IAAM,QAAA,GAAW,yCAAA;AACjB,IAAM,aAAA,GAAgB,CAAC,CAAA,KAAkC;AACvD,EAAA,MAAM,CAAA,GAAI,EAAE,IAAA,EAAK;AACjB,EAAA,IAAI,CAAC,QAAA,CAAS,IAAA,CAAK,CAAC,GAAG,OAAO,MAAA;AAC9B,EAAA,MAAM,CAAA,GAAI,OAAO,CAAC,CAAA;AAClB,EAAA,OAAO,MAAA,CAAO,QAAA,CAAS,CAAC,CAAA,GAAI,CAAA,GAAI,MAAA;AAClC,CAAA;AACA,IAAM,MAAA,GAAS,YAAA;AACf,IAAM,WAAA,GAAc,CAAC,CAAA,KAAkC;AACrD,EAAA,MAAM,CAAA,GAAI,EAAE,IAAA,EAAK;AACjB,EAAA,OAAO,OAAO,IAAA,CAAK,CAAC,IAAI,QAAA,CAAS,CAAA,EAAG,EAAE,CAAA,GAAI,MAAA;AAC5C,CAAA;AAEA,IAAM,QAAA,GAAW,CAAC,EAAA,EAAgB,CAAA,KAAsB;AACtD,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,EAAQ,OAAO,IAAI,IAAI,CAAA;AACtC,EAAA,QAAQ,EAAA;AAAI,IACV,KAAK,QAAA;AACH,MAAA,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,KAAA,EAAO,OAAO,UAAA,CAAW,CAAC,GAAG,CAAA;AAAA,IAClD,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,CAAA,GAAI,MAAM,CAAC,CAAA;AACjB,MAAA,IAAI,CAAA,KAAM,QAAW,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,CAAA,EAAG,CAAA;AAC3D,MAAA,IAAI,CAAA,CAAE,SAAS,KAAA,EAAO;AACpB,QAAA,MAAM,CAAA,GAAI,aAAA,CAAc,CAAA,CAAE,KAAK,CAAA;AAC/B,QAAA,OAAO,MAAM,MAAA,GACT,GAAA,CAAI,EAAE,IAAA,EAAM,SAAS,KAAA,EAAO,CAAA,EAAG,CAAA,GAC/B,KAAK,SAAA,CAAU,eAAA,GAAkB,CAAA,CAAE,KAAA,GAAQ,YAAY,CAAC,CAAA;AAAA,MAC9D;AACA,MAAA,OAAO,IAAA,CAAK,SAAA,CAAU,sBAAsB,CAAC,CAAA;AAAA,IAC/C;AAAA,IACA,KAAK,KAAA;AACH,MAAA,IAAI,CAAA,CAAE,IAAA,KAAS,KAAA,EAAO,OAAO,IAAI,CAAC,CAAA;AAClC,MAAA,IAAI,CAAA,CAAE,IAAA,KAAS,OAAA,EAAS,OAAO,IAAI,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,KAAK,GAAG,CAAA;AAC9E,MAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,EAAQ,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,CAAA,CAAE,KAAA,GAAQ,CAAA,GAAI,GAAG,CAAA;AACzE,MAAA,IAAI,CAAA,CAAE,SAAS,KAAA,EAAO;AACpB,QAAA,MAAM,CAAA,GAAI,WAAA,CAAY,CAAA,CAAE,KAAK,CAAA;AAC7B,QAAA,OAAO,MAAM,MAAA,GACT,GAAA,CAAI,EAAE,IAAA,EAAM,OAAO,KAAA,EAAO,CAAA,EAAG,CAAA,GAC7B,KAAK,SAAA,CAAU,eAAA,GAAkB,CAAA,CAAE,KAAA,GAAQ,UAAU,CAAC,CAAA;AAAA,MAC5D;AACA,MAAA,OAAO,IAAA,CAAK,SAAA,CAAU,oBAAoB,CAAC,CAAA;AAAA,IAC7C,KAAK,MAAA;AACH,MAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,EAAQ,OAAO,IAAI,CAAC,CAAA;AACnC,MAAA,IAAI,CAAA,CAAE,IAAA,KAAS,KAAA,EAAO,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,CAAA,CAAE,KAAA,KAAU,CAAA,EAAG,CAAA;AACvE,MAAA,OAAO,IAAA,CAAK,SAAA,CAAU,qBAAqB,CAAC,CAAA;AAAA,IAC9C,KAAK,MAAA;AACH,MAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,EAAQ,OAAO,IAAI,CAAC,CAAA;AACnC,MAAA,IAAI,CAAA,CAAE,IAAA,KAAS,KAAA,EAAO,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,CAAA;AACjE,MAAA,OAAO,IAAA,CAAK,SAAA,CAAU,qBAAqB,CAAC,CAAA;AAAA,IAC9C,KAAK,WAAA;AACH,MAAA,IAAI,CAAA,CAAE,IAAA,KAAS,WAAA,EAAa,OAAO,IAAI,CAAC,CAAA;AACxC,MAAA,IAAI,CAAA,CAAE,IAAA,KAAS,KAAA,EAAO,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,WAAA,EAAa,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,CAAA;AACtE,MAAA,OAAO,IAAA,CAAK,SAAA,CAAU,0BAA0B,CAAC,CAAA;AAAA;AAEvD,CAAA;AAGA,IAAM,aAAA,GAAgB,CAAC,CAAA,KAAuB,CAAA,IAAK,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,CAAA,GAAI,GAAG,CAAA,GAAI,IAAA,CAAK,IAAA,CAAK,IAAI,GAAG,CAAA;AAE9F,IAAM,WAAA,GAAc,CAAC,EAAA,EAAY,IAAA,KAAoC;AACnE,EAAA,MAAM,KAAA,GAAQ,CAAC,CAAA,KACb,IAAA,CAAK,WAAW,CAAA,GAAI,GAAA,CAAI,MAAS,CAAA,GAAI,KAAK,UAAA,CAAW,EAAA,EAAI,CAAA,EAAG,IAAA,CAAK,MAAM,CAAC,CAAA;AAC1E,EAAA,MAAM,KAAA,GAAQ,CAAC,CAAA,KAAuC;AACpD,IAAA,MAAM,CAAA,GAAI,MAAM,CAAC,CAAA;AACjB,IAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,IAAA,MAAM,CAAA,GAAI,KAAK,CAAC,CAAA;AAChB,IAAA,OAAO,EAAE,IAAA,KAAS,MAAA,GAAS,IAAI,IAAI,CAAA,GAAI,EAAE,CAAC,CAAA;AAAA,EAC5C,CAAA;AACA,EAAA,QAAQ,EAAA;AAAI,IACV,KAAK,KAAA;AACH,MAAA,OAAO,KAAA;AAAA,QAAM,CAAC,CAAA,KACZ,CAAA,CAAE,IAAA,KAAS,QACP,GAAA,CAAI,EAAE,IAAA,EAAM,KAAA,EAAO,OAAO,IAAA,CAAK,GAAA,CAAI,CAAA,CAAE,KAAK,GAAG,CAAA,GAC7C,CAAA,CAAE,IAAA,KAAS,UACT,GAAA,CAAI,EAAE,IAAA,EAAM,OAAA,EAAS,OAAO,IAAA,CAAK,GAAA,CAAI,CAAA,CAAE,KAAK,GAAG,CAAA,GAC/C,IAAA,CAAK,SAAA,CAAU,sBAAsB,CAAC;AAAA,OAC9C;AAAA,IACF,KAAK,OAAA;AACH,MAAA,OAAO,KAAA,CAAM,CAAC,CAAA,KAAM;AAClB,QAAA,MAAM,CAAA,GAAI,MAAM,CAAC,CAAA;AACjB,QAAA,OAAO,CAAA,KAAM,MAAA,GACT,GAAA,CAAI,EAAE,MAAM,OAAA,EAAS,KAAA,EAAO,aAAA,CAAc,CAAC,GAAG,CAAA,GAC9C,IAAA,CAAK,SAAA,CAAU,wBAAwB,CAAC,CAAA;AAAA,MAC9C,CAAC,CAAA;AAAA,IACH,KAAK,OAAA;AACH,MAAA,OAAO,KAAA,CAAM,CAAC,CAAA,KAAM;AAClB,QAAA,MAAM,CAAA,GAAI,MAAM,CAAC,CAAA;AACjB,QAAA,OAAO,MAAM,MAAA,GACT,GAAA,CAAI,EAAE,IAAA,EAAM,SAAS,KAAA,EAAO,IAAA,CAAK,KAAA,CAAM,CAAC,GAAG,CAAA,GAC3C,IAAA,CAAK,SAAA,CAAU,wBAAwB,CAAC,CAAA;AAAA,MAC9C,CAAC,CAAA;AAAA,IACH,KAAK,MAAA;AACH,MAAA,OAAO,KAAA,CAAM,CAAC,CAAA,KAAM;AAClB,QAAA,MAAM,CAAA,GAAI,MAAM,CAAC,CAAA;AACjB,QAAA,OAAO,MAAM,MAAA,GACT,GAAA,CAAI,EAAE,IAAA,EAAM,SAAS,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,CAAC,GAAG,CAAA,GAC1C,IAAA,CAAK,SAAA,CAAU,uBAAuB,CAAC,CAAA;AAAA,MAC7C,CAAC,CAAA;AAAA,IACH,KAAK,QAAA;AACH,MAAA,OAAO,KAAA;AAAA,QAAM,CAAC,CAAA,KACZ,CAAA,CAAE,SAAS,KAAA,GACP,GAAA,CAAI,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,CAAA,CAAE,MAAM,MAAA,EAAQ,IAC1C,IAAA,CAAK,SAAA,CAAU,wBAAwB,CAAC;AAAA,OAC9C;AAAA,IACF,KAAK,OAAA;AACH,MAAA,OAAO,KAAA;AAAA,QAAM,CAAC,CAAA,KACZ,CAAA,CAAE,SAAS,KAAA,GACP,GAAA,CAAI,EAAE,IAAA,EAAM,KAAA,EAAO,OAAO,CAAA,CAAE,KAAA,CAAM,aAAY,EAAG,IACjD,IAAA,CAAK,SAAA,CAAU,uBAAuB,CAAC;AAAA,OAC7C;AAAA,IACF,KAAK,OAAA;AACH,MAAA,OAAO,KAAA;AAAA,QAAM,CAAC,CAAA,KACZ,CAAA,CAAE,SAAS,KAAA,GACP,GAAA,CAAI,EAAE,IAAA,EAAM,KAAA,EAAO,OAAO,CAAA,CAAE,KAAA,CAAM,aAAY,EAAG,IACjD,IAAA,CAAK,SAAA,CAAU,uBAAuB,CAAC;AAAA,OAC7C;AAAA,IACF,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,CAAA,GAAI,MAAM,CAAC,CAAA;AACjB,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,MAAM,CAAA,GAAI,KAAK,CAAC,CAAA;AAChB,MAAA,MAAM,KAAA,GAAQ,KAAK,CAAC,CAAA;AACpB,MAAA,MAAM,GAAA,GAAM,KAAK,CAAC,CAAA;AAClB,MAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,EAAQ,OAAO,IAAI,IAAI,CAAA;AACtC,MAAA,IAAI,CAAA,CAAE,SAAS,KAAA,IAAS,KAAA,CAAM,SAAS,KAAA,IAAS,GAAA,CAAI,SAAS,KAAA,EAAO;AAClE,QAAA,IAAI,EAAA,GAAK,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,MAAM,KAAK,CAAA;AAChC,QAAA,EAAA,GAAK,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,CAAA,CAAE,MAAM,MAAM,CAAA;AAChC,QAAA,MAAM,EAAA,GAAK,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,KAAA,EAAO,CAAA,CAAE,KAAA,CAAM,MAAA,GAAS,EAAE,CAAC,CAAA;AAC/D,QAAA,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,CAAA,CAAE,KAAA,CAAM,SAAA,CAAU,EAAA,EAAI,EAAA,GAAK,EAAE,CAAA,EAAG,CAAA;AAAA,MACnE;AACA,MAAA,OAAO,IAAA,CAAK,SAAA,CAAU,mCAAmC,CAAC,CAAA;AAAA,IAC5D;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,CAAA,GAAI,MAAM,CAAC,CAAA;AACjB,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,MAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,MAAA,IAAI,IAAA,CAAK,IAAA,KAAS,MAAA,EAAQ,OAAO,IAAI,IAAI,CAAA;AACzC,MAAA,IACE,IAAA,CAAK,IAAA,KAAS,KAAA,KACb,IAAA,CAAK,IAAA,KAAS,MAAA,IAAU,IAAA,CAAK,IAAA,KAAS,WAAA,IAAe,IAAA,CAAK,IAAA,KAAS,KAAA,CAAA,EACpE;AACA,QAAA,MAAM,IAAI,IAAA,CAAK,KAAA;AACf,QAAA,MAAM,KAAA,GAAQ,CAAC,EAAA,EAAY,GAAA,KAA0B;AACnD,UAAA,IAAI,CAAA,CAAE,MAAA,IAAU,EAAA,GAAK,GAAA,EAAK;AACxB,YAAA,MAAM,IAAI,WAAA,CAAY,CAAA,CAAE,UAAU,EAAA,EAAI,EAAA,GAAK,GAAG,CAAC,CAAA;AAC/C,YAAA,OAAO,CAAA,KAAM,MAAA,GACT,GAAA,CAAI,EAAE,MAAM,KAAA,EAAO,KAAA,EAAO,CAAA,EAAG,IAC7B,IAAA,CAAK,SAAA,CAAU,sCAAA,GAAyC,CAAA,GAAI,GAAG,CAAC,CAAA;AAAA,UACtE;AACA,UAAA,OAAO,KAAK,SAAA,CAAU,aAAA,GAAgB,IAAI,kBAAA,GAAqB,IAAA,CAAK,KAAK,CAAC,CAAA;AAAA,QAC5E,CAAA;AACA,QAAA,QAAQ,KAAK,KAAA;AAAO,UAClB,KAAK,MAAA;AACH,YAAA,OAAO,KAAA,CAAM,GAAG,CAAC,CAAA;AAAA,UACnB,KAAK,OAAA;AACH,YAAA,OAAO,KAAA,CAAM,GAAG,CAAC,CAAA;AAAA,UACnB,KAAK,KAAA;AACH,YAAA,OAAO,KAAA,CAAM,GAAG,CAAC,CAAA;AAAA,UACnB;AACE,YAAA,OAAO,KAAK,SAAA,CAAU,0BAAA,GAA6B,IAAA,CAAK,KAAA,GAAQ,GAAG,CAAC,CAAA;AAAA;AACxE,MACF;AACA,MAAA,OAAO,IAAA,CAAK,SAAA,CAAU,uDAAuD,CAAC,CAAA;AAAA,IAChF;AAAA,IACA,KAAK,QAAA,EAAU;AAGb,MAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG,OAAO,KAAK,UAAA,CAAW,EAAA,EAAI,CAAA,EAAG,CAAC,CAAC,CAAA;AACvD,MAAA,IAAI,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,MAAM,CAAA,EAAG,OAAO,GAAA,CAAI,IAAI,CAAA;AACxD,MAAA,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,IAAA,CAAK,GAAA,CAAI,UAAU,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA,EAAG,CAAA;AAAA,IAClE;AAAA,IACA,KAAK,MAAA;AACH,MAAA,OAAO,KAAA;AAAA,QAAM,CAAC,CAAA,KACZ,CAAA,CAAE,IAAA,KAAS,KAAA;AAAA;AAAA,UAEP,GAAA,CAAI,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,CAAA,CAAE,KAAA,CAAM,OAAA,CAAQ,0BAAA,EAA4B,EAAE,CAAA,EAAG;AAAA,YAC3E,IAAA,CAAK,SAAA,CAAU,sBAAsB,CAAC;AAAA,OAC5C;AAAA,IACF,KAAK,SAAA,EAAW;AACd,MAAA,MAAM,CAAA,GAAI,MAAM,CAAC,CAAA;AACjB,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,MAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,MAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,MAAA,IAAI,IAAA,CAAK,IAAA,KAAS,MAAA,IAAU,IAAA,CAAK,IAAA,KAAS,MAAA,IAAU,IAAA,CAAK,IAAA,KAAS,MAAA,EAAQ,OAAO,GAAA,CAAI,IAAI,CAAA;AACzF,MAAA,IAAI,IAAA,CAAK,SAAS,KAAA,IAAS,IAAA,CAAK,SAAS,KAAA,IAAS,IAAA,CAAK,SAAS,KAAA,EAAO;AAErE,QAAA,IAAI,IAAA,CAAK,KAAA,KAAU,EAAA,EAAI,OAAO,IAAI,IAAI,CAAA;AACtC,QAAA,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,KAAA,EAAO,OAAO,IAAA,CAAK,KAAA,CAAM,KAAA,CAAM,IAAA,CAAK,KAAK,CAAA,CAAE,IAAA,CAAK,IAAA,CAAK,KAAK,GAAG,CAAA;AAAA,MAClF;AACA,MAAA,OAAO,IAAA,CAAK,SAAA,CAAU,0CAA0C,CAAC,CAAA;AAAA,IACnE;AAAA,IACA,KAAK,cAAA,EAAgB;AACnB,MAAA,MAAM,CAAA,GAAI,MAAM,CAAC,CAAA;AACjB,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,MAAA,MAAM,EAAA,GAAK,KAAK,CAAC,CAAA;AACjB,MAAA,IAAI,IAAA,CAAK,SAAS,MAAA,IAAU,EAAA,CAAG,SAAS,MAAA,EAAQ,OAAO,IAAI,IAAI,CAAA;AAC/D,MAAA,MAAM,EAAA,GAAK,UAAU,IAAI,CAAA;AACzB,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,EAAA,GAAK,UAAU,EAAE,CAAA;AACvB,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,KAAA,EAAO,OAAO,EAAA,CAAG,KAAA,GAAQ,EAAA,CAAG,KAAA,EAAO,CAAA;AAAA,IACxD;AAAA,IACA;AACE,MAAA,OAAO,IAAA,CAAK,SAAA,CAAU,2BAAA,GAA8B,EAAA,GAAK,GAAG,CAAC,CAAA;AAAA;AAEnE,CAAA;AAEA,IAAM,SAAA,uBAAgB,GAAA,CAAI,CAAC,OAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAK,CAAC,CAAA;AAC7D,IAAM,OAAA,mBAAU,IAAI,GAAA,CAAI,CAAC,IAAA,EAAM,MAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAI,CAAC,CAAA;AAC5D,IAAM,0BAAU,IAAI,GAAA,CAAI,CAAC,UAAA,EAAY,YAAA,EAAc,UAAU,CAAC,CAAA;AAO9D,IAAM,UAAA,GAAa,CAAC,EAAA,EAAY,CAAA,EAAS,CAAA,KAAsB;AAC7D,EAAA,IAAI,CAAA,CAAE,SAAS,MAAA,IAAU,CAAA,CAAE,SAAS,MAAA,EAAQ,OAAO,IAAI,IAAI,CAAA;AAC3D,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,KAAA,IAAS,CAAA,CAAE,SAAS,KAAA,EAAO;AACxC,IAAA,MAAM,CAAA,GACJ,OAAO,UAAA,GACH,CAAA,CAAE,MAAM,QAAA,CAAS,CAAA,CAAE,KAAK,CAAA,GACxB,EAAA,KAAO,eACL,CAAA,CAAE,KAAA,CAAM,WAAW,CAAA,CAAE,KAAK,IAC1B,CAAA,CAAE,KAAA,CAAM,QAAA,CAAS,CAAA,CAAE,KAAK,CAAA;AAChC,IAAA,OAAO,IAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,GAAG,CAAA;AAAA,EACvC;AACA,EAAA,OAAO,IAAA,CAAK,SAAA,CAAU,0CAA0C,CAAC,CAAA;AACnE,CAAA;AAMA,IAAM,SAAA,GAAY,CAAC,CAAA,KAAwB;AACzC,EAAA,IAAI,CAAA,CAAE,SAAS,MAAA,IAAU,CAAA,CAAE,SAAS,WAAA,IAAe,CAAA,CAAE,SAAS,KAAA,EAAO;AACnE,IAAA,MAAM,IAAI,CAAA,CAAE,KAAA;AACZ,IAAA,MAAM,MAAM,MACV,IAAA,CAAK,UAAU,iBAAA,GAAoB,CAAA,GAAI,0BAA0B,CAAC,CAAA;AACpE,IAAA,IAAI,CAAA,CAAE,MAAA,GAAS,EAAA,IAAM,CAAA,CAAE,CAAC,CAAA,KAAM,GAAA,IAAO,CAAA,CAAE,CAAC,CAAA,KAAM,GAAA,EAAK,OAAO,GAAA,EAAI;AAC9D,IAAA,MAAM,KAAK,WAAA,CAAY,CAAA,CAAE,SAAA,CAAU,CAAA,EAAG,CAAC,CAAC,CAAA;AACxC,IAAA,MAAM,KAAK,WAAA,CAAY,CAAA,CAAE,SAAA,CAAU,CAAA,EAAG,CAAC,CAAC,CAAA;AACxC,IAAA,MAAM,KAAK,WAAA,CAAY,CAAA,CAAE,SAAA,CAAU,CAAA,EAAG,EAAE,CAAC,CAAA;AACzC,IAAA,IAAI,OAAO,MAAA,IAAa,EAAA,KAAO,UAAa,EAAA,KAAO,MAAA,SAAkB,GAAA,EAAI;AACzE,IAAA,MAAM,CAAA,GAAI,EAAA,IAAM,CAAA,GAAI,EAAA,GAAK,CAAA,GAAI,EAAA;AAC7B,IAAA,MAAM,GAAA,GAAM,KAAK,KAAA,CAAA,CAAO,CAAA,IAAK,IAAI,CAAA,GAAI,CAAA,GAAI,OAAO,GAAG,CAAA;AACnD,IAAA,MAAM,GAAA,GAAM,IAAI,GAAA,GAAM,GAAA;AACtB,IAAA,MAAM,EAAA,GAAA,CAAM,KAAK,CAAA,IAAK,EAAA;AACtB,IAAA,MAAM,GAAA,GAAM,KAAK,KAAA,CAAA,CAAO,GAAA,GAAM,KAAK,CAAA,IAAK,CAAC,IAAI,EAAA,GAAK,CAAA;AAClD,IAAA,MAAM,GAAA,GAAM,GAAA,GAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,GAAA,GAAM,CAAC,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,GAAA,GAAM,GAAG,CAAA,GAAI,GAAA;AACtE,IAAA,OAAO,GAAA,CAAI,GAAA,GAAM,MAAA,GAAS,GAAA,GAAM,MAAM,CAAA;AAAA,EACxC;AACA,EAAA,OAAO,IAAA,CAAK,SAAA,CAAU,qDAAqD,CAAC,CAAA;AAC9E,CAAA;AAKA,IAAM,YAAqB,EAAC;AAE5B,IAAM,WAAW,CACf,IAAA,EACA,GAAA,EACA,CAAA,EACA,MAAe,SAAA,KACF;AACb,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,KAAA,EAAO;AACV,MAAA,MAAM,CAAA,GAAI,QAAA,CAAS,IAAA,EAAM,CAAA,CAAE,IAAI,CAAA;AAC/B,MAAA,OAAO,CAAA,IAAK,CAAA,GAAI,GAAA,CAAI,GAAA,CAAI,CAAC,CAAE,CAAA,GAAI,IAAA,CAAK,aAAA,CAAc,CAAA,CAAE,IAAA,EAAM,SAAA,CAAU,IAAI,CAAC,CAAC,CAAA;AAAA,IAC5E;AAAA,IACA,KAAK,KAAA;AACH,MAAA,OAAO,GAAA,CAAI,EAAE,IAAI,CAAA;AAAA,IACnB,KAAK,OAAA,EAAS;AAEZ,MAAA,MAAM,CAAA,GAAI,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,GAAA,EAAK,CAAA,CAAE,IAAI,CAAA,GAAI,GAAA,CAAI,CAAA,CAAE,IAAI,CAAA,GAAI,MAAA;AAC5E,MAAA,OAAO,CAAA,KAAM,MAAA,GAAY,GAAA,CAAI,CAAC,IAAI,IAAA,CAAK,YAAA,CAAa,CAAA,CAAE,IAAA,EAAM,OAAO,IAAA,CAAK,GAAG,CAAA,CAAE,IAAA,EAAM,CAAC,CAAA;AAAA,IACtF;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,GAAA,EAAK,CAAA,CAAE,MAAM,GAAG,CAAA;AACzC,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,GAAA,EAAK,CAAA,CAAE,OAAO,GAAG,CAAA;AAC1C,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,IAAI,SAAA,CAAU,GAAA,CAAI,CAAA,CAAE,EAAE,CAAA,EAAG,OAAO,KAAA,CAAM,CAAA,CAAE,EAAA,EAAI,CAAA,CAAE,KAAA,EAAO,CAAA,CAAE,KAAK,CAAA;AAC5D,MAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,CAAA,CAAE,EAAE,CAAA,EAAG,OAAO,UAAA,CAAW,CAAA,CAAE,EAAA,EAAI,CAAA,CAAE,KAAA,EAAO,CAAA,CAAE,KAAK,CAAA;AAC/D,MAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,CAAA,CAAE,EAAE,CAAA,EAAG,OAAO,UAAA,CAAW,CAAA,CAAE,EAAA,EAAI,CAAA,CAAE,KAAA,EAAO,CAAA,CAAE,KAAK,CAAA;AAC/D,MAAA,OAAO,QAAQ,CAAA,CAAE,EAAA,EAAI,CAAA,CAAE,KAAA,EAAO,EAAE,KAAK,CAAA;AAAA,IACvC;AAAA,IACA,KAAK,KAAA,EAAO;AACV,MAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,GAAA,EAAK,CAAA,CAAE,MAAM,GAAG,CAAA;AAC7C,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,MAAM,IAAI,KAAA,CAAM,KAAA;AAChB,MAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,EAAQ,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,CAAC,CAAA,CAAE,KAAA,EAAO,CAAA;AACnE,MAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,EAAQ,OAAO,IAAI,IAAI,CAAA;AACtC,MAAA,OAAO,IAAA,CAAK,SAAA,CAAU,mBAAmB,CAAC,CAAA;AAAA,IAC5C;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,KAAA,MAAW,CAAA,IAAK,EAAE,KAAA,EAAO;AACvB,QAAA,MAAM,CAAA,GAAI,QAAA,CAAS,IAAA,EAAM,GAAA,EAAK,GAAG,GAAG,CAAA;AACpC,QAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,QAAA,IAAI,EAAE,KAAA,CAAM,IAAA,KAAS,QAAQ,OAAO,GAAA,CAAI,EAAE,KAAK,CAAA;AAAA,MACjD;AACA,MAAA,OAAO,IAAI,IAAI,CAAA;AAAA,IACjB;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,KAAA,MAAW,EAAA,IAAM,EAAE,KAAA,EAAO;AACxB,QAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,GAAA,EAAK,EAAA,CAAG,MAAM,GAAG,CAAA;AAC1C,QAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,QAAA,IAAI,CAAA,CAAE,KAAA,CAAM,IAAA,KAAS,MAAA,IAAU,CAAA,CAAE,KAAA,CAAM,KAAA,EAAO,OAAO,QAAA,CAAS,IAAA,EAAM,GAAA,EAAK,EAAA,CAAG,MAAM,GAAG,CAAA;AAAA,MACvF;AACA,MAAA,OAAO,QAAA,CAAS,IAAA,EAAM,GAAA,EAAK,CAAA,CAAE,MAAM,GAAG,CAAA;AAAA,IACxC;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,GAAA,EAAK,CAAA,CAAE,MAAM,GAAG,CAAA;AAC7C,MAAA,OAAO,MAAM,EAAA,GAAK,QAAA,CAAS,EAAE,IAAA,EAAM,KAAA,CAAM,KAAK,CAAA,GAAI,KAAA;AAAA,IACpD;AAAA,IACA,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,OAAe,EAAC;AACtB,MAAA,KAAA,MAAW,CAAA,IAAK,EAAE,IAAA,EAAM;AACtB,QAAA,MAAM,CAAA,GAAI,QAAA,CAAS,IAAA,EAAM,GAAA,EAAK,GAAG,GAAG,CAAA;AACpC,QAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,QAAA,IAAA,CAAK,IAAA,CAAK,EAAE,KAAK,CAAA;AAAA,MACnB;AACA,MAAA,OAAO,WAAA,CAAY,CAAA,CAAE,EAAA,EAAI,IAAI,CAAA;AAAA,IAC/B;AAAA,IACA,KAAK,IAAA,EAAM;AAGT,MAAA,MAAM,KAAK,QAAA,CAAS,IAAA,EAAM,GAAA,EAAK,CAAA,CAAE,MAAM,GAAG,CAAA;AAC1C,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,IAAI,GAAG,KAAA,CAAM,IAAA,KAAS,MAAA,EAAQ,OAAO,IAAI,IAAI,CAAA;AAC7C,MAAA,IAAI,OAAA,GAAU,KAAA;AACd,MAAA,KAAA,MAAW,EAAA,IAAM,EAAE,KAAA,EAAO;AACxB,QAAA,MAAM,EAAA,GAAK,QAAA,CAAS,IAAA,EAAM,GAAA,EAAK,IAAI,GAAG,CAAA;AACtC,QAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,QAAA,IAAI,EAAA,CAAG,KAAA,CAAM,IAAA,KAAS,MAAA,EAAQ;AAC5B,UAAA,OAAA,GAAU,IAAA;AACV,UAAA;AAAA,QACF;AACA,QAAA,MAAM,CAAA,GAAI,YAAA,CAAa,EAAA,CAAG,KAAA,EAAO,GAAG,KAAK,CAAA;AACzC,QAAA,IAAI,MAAM,MAAA,EAAW,OAAO,IAAA,CAAK,SAAA,CAAU,2CAA2C,CAAC,CAAA;AACvF,QAAA,IAAI,CAAA,KAAM,GAAG,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,CAAA;AAAA,MACvD;AACA,MAAA,OAAO,OAAA,GAAU,GAAA,CAAI,IAAI,CAAA,GAAI,GAAA,CAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,KAAA,EAAO,CAAA;AAAA,IACjE;AAAA,IACA,KAAK,QAAA,EAAU;AAEb,MAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,GAAA,EAAK,CAAA,CAAE,MAAM,GAAG,CAAA;AAC7C,MAAA,OAAO,KAAA,CAAM,EAAA,GAAK,GAAA,CAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,KAAA,CAAM,KAAA,CAAM,IAAA,KAAS,MAAA,EAAQ,CAAA,GAAI,KAAA;AAAA,IAChF;AAAA,IACA,KAAK,SAAA;AAGH,MAAA,OAAO,IAAA,CAAK,YAAA,CAAa,CAAA,CAAE,KAAA,EAAO,MAAA,CAAO,KAAK,GAAG,CAAA,CAAE,IAAA,EAAM,CAAC,CAAA;AAAA;AAEhE,CAAA;AAIA,IAAM,UAAA,GAAa,CAAC,CAAA,KAAoC;AACtD,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,KAAA;AACH,MAAA,OAAO,KAAA;AAAA,IACT,KAAK,OAAA;AACH,MAAA,OAAO,OAAA;AAAA,IACT,KAAK,MAAA;AACH,MAAA,OAAO,MAAA;AAAA,IACT,KAAK,KAAA;AACH,MAAA,OAAO,QAAA;AAAA,IACT,KAAK,MAAA;AACH,MAAA,OAAO,MAAA;AAAA,IACT,KAAK,WAAA;AACH,MAAA,OAAO,WAAA;AAAA,IACT,KAAK,MAAA;AACH,MAAA,OAAO,MAAA;AAAA;AAEb,CAAA;AAEA,IAAM,SAAA,GAAY,CAAC,KAAA,KAAuC;AACxD,EAAA,KAAA,MAAW,KAAK,KAAA,EAAO;AACrB,IAAA,MAAM,CAAA,GAAI,WAAW,CAAC,CAAA;AACtB,IAAA,IAAI,CAAA,KAAM,QAAW,OAAO,CAAA;AAAA,EAC9B;AACA,EAAA,OAAO,QAAA;AACT,CAAA;AAIA,IAAM,WAAA,GAAc,CAAC,KAAA,KACnB,KAAA,CAAM,GAAA,CAAI,KAAK,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,KAAmB,CAAA,KAAM,MAAS,CAAA;AAE7D,IAAM,QAAA,GAAW,CAAC,EAAA,EAAW,OAAA,EAAqB,KAAA,KAAiC;AACjF,EAAA,MAAM,OAAA,GAAU,MAAM,MAAA,CAAO,CAAC,MAAM,CAAC,MAAA,CAAO,CAAC,CAAC,CAAA;AAC9C,EAAA,QAAQ,EAAA;AAAI,IACV,KAAK,OAAA;AACH,MAAA,OAAO,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,QAAQ,MAAA,EAAO;AAAA,IAC9C,KAAK,OAAA;AACH,MAAA,OAAO,KAAA,CAAM,MAAA,KAAW,CAAA,GAAI,IAAA,GAAO,MAAM,CAAC,CAAA;AAAA,IAC5C,KAAK,MAAA;AACH,MAAA,OAAO,MAAM,MAAA,KAAW,CAAA,GAAI,OAAO,KAAA,CAAM,KAAA,CAAM,SAAS,CAAC,CAAA;AAAA,IAC3D,KAAK,KAAA,EAAO;AACV,MAAA,MAAM,IAAA,GAAO,YAAY,KAAK,CAAA;AAC9B,MAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAC9B,MAAA,OAAO,OAAA,KAAY,KAAA,GACf,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,IAAA,CAAK,MAAA,CAAO,CAAC,GAAA,EAAK,CAAA,KAAM,GAAA,GAAM,KAAK,KAAA,CAAM,CAAC,CAAA,EAAG,CAAC,CAAA,EAAE,GACtE,EAAE,IAAA,EAAM,SAAS,KAAA,EAAO,IAAA,CAAK,MAAA,CAAO,CAAC,GAAA,EAAK,CAAA,KAAM,GAAA,GAAM,CAAA,EAAG,CAAC,CAAA,EAAE;AAAA,IAClE;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,IAAA,GAAO,YAAY,KAAK,CAAA;AAC9B,MAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAC9B,MAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,KAAK,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAA,EAAG,CAAC,CAAA,GAAI,KAAK,MAAA,EAAO;AAAA,IAC/E;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,IAAA,GAAO,YAAY,KAAK,CAAA;AAC9B,MAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAC9B,MAAA,MAAM,IAAI,IAAA,CAAK,MAAA;AACf,MAAA,MAAM,IAAA,GAAO,KAAK,MAAA,CAAO,CAAC,GAAG,CAAA,KAAM,CAAA,GAAI,CAAA,EAAG,CAAC,CAAA,GAAI,CAAA;AAC/C,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAA,CAAK,CAAA,GAAI,IAAA,KAAS,CAAA,GAAI,IAAA,CAAA,EAAO,CAAC,CAAA,GAAI,CAAA;AACzE,MAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,OAAO,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA,EAAE;AAAA,IACrD;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,IAAA,GAAO,WAAA,CAAY,KAAK,CAAA,CAC3B,KAAA,EAAM,CACN,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAC,CAAA;AACvB,MAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAC9B,MAAA,MAAM,IAAI,IAAA,CAAK,MAAA;AACf,MAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,CAAA,GAAI,CAAC,CAAA;AAC5B,MAAA,IAAI,CAAA,GAAI,CAAA,KAAM,CAAA,EAAG,OAAO,EAAE,MAAM,OAAA,EAAS,KAAA,EAAO,IAAA,CAAK,GAAG,CAAA,EAAG;AAC3D,MAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAA,CAAQ,IAAA,CAAK,GAAA,GAAM,CAAC,CAAA,GAAK,IAAA,CAAK,GAAG,CAAA,IAAM,CAAA,EAAE;AAAA,IACnE;AAAA,IACA,KAAK,KAAA;AAAA,IACL,KAAK,KAAA,EAAO;AACV,MAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AACjC,MAAA,IAAI,GAAA,GAAM,QAAQ,CAAC,CAAA;AACnB,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,MAAA,EAAQ,KAAK,CAAA,EAAG;AAC1C,QAAA,MAAM,CAAA,GAAI,QAAQ,CAAC,CAAA;AACnB,QAAA,MAAM,CAAA,GAAI,YAAA,CAAa,GAAA,EAAK,CAAC,CAAA;AAC7B,QAAA,IAAI,MAAM,MAAA,EAAW;AAEnB,UAAA,GAAA,GAAO,EAAA,KAAO,KAAA,KAAW,CAAA,IAAK,CAAA,GAAI,GAAA,GAAM,CAAA;AAAA,QAC1C;AAAA,MAEF;AACA,MAAA,OAAO,GAAA;AAAA,IACT;AAAA;AAEJ,CAAA;AAEA,IAAM,OAAA,GAAU,CAAC,EAAA,EAAW,OAAA,KAAoC;AAC9D,EAAA,QAAQ,EAAA;AAAI,IACV,KAAK,OAAA;AACH,MAAA,OAAO,KAAA;AAAA,IACT,KAAK,MAAA;AAAA,IACL,KAAK,QAAA;AAAA,IACL,KAAK,QAAA;AACH,MAAA,OAAO,OAAA;AAAA,IACT,KAAK,KAAA;AAAA,IACL,KAAK,KAAA;AAAA,IACL,KAAK,KAAA;AAAA,IACL,KAAK,OAAA;AAAA,IACL,KAAK,MAAA;AACH,MAAA,OAAO,OAAA;AAAA;AAEb,CAAA;AAIA,IAAM,aAAA,GAAgB,CACpB,IAAA,EACA,EAAA,EACA,IACA,EAAA,KACW;AACX,EAAA,KAAA,MAAW,EAAE,GAAA,EAAK,GAAA,EAAI,IAAK,EAAA,EAAI;AAC7B,IAAA,MAAM,CAAA,GAAI,QAAA,CAAS,IAAA,EAAM,GAAG,CAAA;AAC5B,IAAA,IAAI,IAAI,CAAA,EAAG;AACX,IAAA,MAAM,CAAA,GAAI,GAAG,CAAC,CAAA;AACd,IAAA,MAAM,CAAA,GAAI,GAAG,CAAC,CAAA;AACd,IAAA,MAAM,EAAA,GAAK,OAAO,CAAC,CAAA;AACnB,IAAA,MAAM,EAAA,GAAK,OAAO,CAAC,CAAA;AACnB,IAAA,IAAI,CAAA;AACJ,IAAA,IAAI,EAAA,IAAM,IAAI,CAAA,GAAI,CAAA;AAAA,SAAA,IACT,MAAM,CAAC,EAAA;AACd,MAAA,CAAA,GAAI,CAAA;AAAA,SAAA,IACG,CAAC,EAAA,IAAM,EAAA,EAAI,CAAA,GAAI,EAAA;AAAA,SACnB;AACH,MAAA,MAAM,EAAA,GAAK,YAAA,CAAa,CAAA,EAAG,CAAC,CAAA;AAC5B,MAAA,CAAA,GAAI,OAAO,MAAA,GAAY,CAAA,GAAI,GAAA,KAAQ,KAAA,GAAQ,KAAK,CAAC,EAAA;AAAA,IACnD;AACA,IAAA,IAAI,CAAA,KAAM,GAAG,OAAO,CAAA;AAAA,EACtB;AACA,EAAA,OAAO,CAAA;AACT,CAAA;AAGA,IAAM,UAAA,GAAa,CAAI,EAAA,EAAkB,GAAA,KAAqC,GAAG,KAAA,EAAM,CAAE,KAAK,GAAG,CAAA;AAIjG,IAAM,OAAA,GAAU,CAAC,CAAA,KAAoB;AACnC,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,MAAA;AACH,MAAA,OAAO,GAAA;AAAA,IACT,KAAK,KAAA;AACH,MAAA,OAAO,GAAA,GAAM,MAAA,CAAO,CAAA,CAAE,KAAK,CAAA;AAAA,IAC7B,KAAK,OAAA;AACH,MAAA,OAAO,GAAA,GAAM,MAAA,CAAO,CAAA,CAAE,KAAK,CAAA;AAAA,IAC7B,KAAK,MAAA;AACH,MAAA,OAAO,GAAA,IAAO,CAAA,CAAE,KAAA,GAAQ,GAAA,GAAM,GAAA,CAAA;AAAA,IAChC,KAAK,KAAA;AACH,MAAA,OAAO,MAAM,CAAA,CAAE,KAAA;AAAA,IACjB,KAAK,MAAA;AACH,MAAA,OAAO,MAAM,CAAA,CAAE,KAAA;AAAA,IACjB,KAAK,WAAA;AACH,MAAA,OAAO,MAAM,CAAA,CAAE,KAAA;AAAA;AAErB,CAAA;AAEA,IAAM,MAAA,GAAS,CAAC,KAAA,KAAmC,KAAA,CAAM,IAAI,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAI9E,IAAM,UAAA,GAAa,CAAC,CAAA,EAAU,IAAA,EAAe,MAAe,SAAA,KAAyB;AACnF,EAAA,MAAM,MAA2B,EAAC;AAClC,EAAA,KAAA,MAAW,GAAA,IAAO,EAAE,IAAA,EAAM;AACxB,IAAA,MAAM,IAAI,QAAA,CAAS,CAAA,CAAE,IAAA,EAAM,GAAA,EAAK,MAAM,GAAG,CAAA;AACzC,IAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,IAAA,IAAI,CAAA,CAAE,MAAM,IAAA,KAAS,MAAA,IAAU,EAAE,KAAA,CAAM,KAAA,EAAO,GAAA,CAAI,IAAA,CAAK,GAAG,CAAA;AAAA,EAC5D;AACA,EAAA,OAAO,IAAI,EAAE,GAAG,CAAA,EAAG,IAAA,EAAM,KAAK,CAAA;AAChC,CAAA;AAEA,IAAM,WAAA,GAAc,CAAC,CAAA,EAAU,KAAA,KAA0D;AACvF,EAAA,MAAM,WAA+D,EAAC;AACtE,EAAA,KAAA,MAAW,EAAE,CAAA,EAAG,CAAA,EAAE,IAAK,KAAA,EAAO;AAC5B,IAAA,MAAM,CAAA,GAAI,QAAA,CAAS,CAAA,CAAE,IAAA,EAAM,CAAC,CAAA;AAC5B,IAAA,IAAI,CAAA,GAAI,CAAA,EAAG,OAAO,IAAA,CAAK,aAAA,CAAc,GAAG,SAAA,CAAU,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AAC1D,IAAA,QAAA,CAAS,IAAA,CAAK,EAAE,GAAA,EAAK,CAAA,EAAG,IAAA,EAAM,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,CAAG,IAAA,EAAM,KAAA,EAAO,CAAA,EAAG,CAAA;AAAA,EAC3D;AACA,EAAA,OAAO,GAAA,CAAI;AAAA,IACT,IAAA,EAAM,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,MAAO,EAAE,IAAA,EAAM,CAAA,CAAE,GAAA,EAAK,IAAA,EAAM,CAAA,CAAE,IAAA,EAAK,CAAE,CAAA;AAAA,IACzD,IAAA,EAAM,CAAA,CAAE,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,KAAQ,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,KAAM,GAAA,CAAI,CAAA,CAAE,KAAK,CAAE,CAAC;AAAA,GAC7D,CAAA;AACH,CAAA;AAEA,IAAM,aAAa,CAAC,CAAA,EAAU,IAAA,EAAc,IAAA,EAAe,MAAe,SAAA,KAAyB;AACjG,EAAA,MAAM,WAAmB,EAAC;AAC1B,EAAA,KAAA,MAAW,GAAA,IAAO,EAAE,IAAA,EAAM;AACxB,IAAA,MAAM,IAAI,QAAA,CAAS,CAAA,CAAE,IAAA,EAAM,GAAA,EAAK,MAAM,GAAG,CAAA;AACzC,IAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,IAAA,QAAA,CAAS,IAAA,CAAK,EAAE,KAAK,CAAA;AAAA,EACvB;AACA,EAAA,MAAM,EAAA,GAAK,UAAU,QAAQ,CAAA;AAC7B,EAAA,MAAM,CAAA,GAAI,QAAA,CAAS,CAAA,CAAE,IAAA,EAAM,IAAI,CAAA;AAC/B,EAAA,IAAI,KAAK,CAAA,EAAG;AACV,IAAA,OAAO,GAAA,CAAI;AAAA,MACT,MAAM,CAAA,CAAE,IAAA,CAAK,GAAA,CAAI,CAAC,GAAG,CAAA,KAAO,CAAA,KAAM,CAAA,GAAI,EAAE,MAAM,CAAA,CAAE,IAAA,EAAM,IAAA,EAAM,EAAA,KAAO,CAAE,CAAA;AAAA,MACrE,MAAM,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,GAAA,EAAK,OAAO,GAAA,CAAI,GAAA,CAAI,CAAC,IAAA,EAAM,MAAO,CAAA,KAAM,CAAA,GAAI,SAAS,EAAE,CAAA,GAAK,IAAK,CAAC;AAAA,KACrF,CAAA;AAAA,EACH;AACA,EAAA,OAAO,GAAA,CAAI;AAAA,IACT,IAAA,EAAM,CAAC,GAAG,CAAA,CAAE,MAAM,EAAE,IAAA,EAAM,IAAA,EAAM,EAAA,EAAI,CAAA;AAAA,IACpC,IAAA,EAAM,CAAA,CAAE,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,EAAK,EAAA,KAAO,CAAC,GAAG,GAAA,EAAK,QAAA,CAAS,EAAE,CAAE,CAAC;AAAA,GACtD,CAAA;AACH,CAAA;AAEA,IAAM,WAAA,GAAc,CAAC,CAAA,EAAU,IAAA,EAAyB,IAAA,KAAoC;AAC1F,EAAA,KAAA,MAAW,KAAK,IAAA,EAAM;AACpB,IAAA,IAAI,QAAA,CAAS,CAAA,CAAE,IAAA,EAAM,CAAC,IAAI,CAAA,EAAG,OAAO,IAAA,CAAK,aAAA,CAAc,CAAA,EAAG,SAAA,CAAU,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AAAA,EAC9E;AACA,EAAA,MAAM,IAAA,GAAO,KAAK,GAAA,CAAI,CAAC,MAAM,QAAA,CAAS,CAAA,CAAE,IAAA,EAAM,CAAC,CAAC,CAAA;AAChD,EAAA,MAAM,KAAA,GAAQ,CAAC,GAAA,KAAiC,IAAA,CAAK,IAAI,CAAC,CAAA,KAAM,GAAA,CAAI,CAAC,CAAE,CAAA;AAEvE,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,MAAM,MAAA,uBAAa,GAAA,EAAwD;AAC3E,EAAA,KAAA,MAAW,GAAA,IAAO,EAAE,IAAA,EAAM;AACxB,IAAA,MAAM,CAAA,GAAI,MAAM,GAAG,CAAA;AACnB,IAAA,MAAM,EAAA,GAAK,OAAO,CAAC,CAAA;AACnB,IAAA,MAAM,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,EAAE,CAAA;AACvB,IAAA,IAAI,MAAM,MAAA,EAAW;AACnB,MAAA,KAAA,CAAM,KAAK,EAAE,CAAA;AACb,MAAA,MAAA,CAAO,GAAA,CAAI,IAAI,EAAE,GAAA,EAAK,GAAG,IAAA,EAAM,CAAC,GAAG,CAAA,EAAG,CAAA;AAAA,IACxC,CAAA,MAAO;AACL,MAAA,CAAA,CAAE,IAAA,CAAK,KAAK,GAAG,CAAA;AAAA,IACjB;AAAA,EACF;AAEA,EAAA,MAAM,eAAgE,EAAC;AACvE,EAAA,KAAA,MAAW,KAAK,IAAA,EAAM;AACpB,IAAA,MAAM,EAAA,GAAK,OAAA,CAAQ,CAAA,CAAE,IAAA,EAAM,EAAE,EAAE,CAAA;AAC/B,IAAA,IAAI,EAAA,KAAO,MAAA,EAAW,OAAO,IAAA,CAAK,aAAA,CAAc,CAAA,CAAE,EAAA,EAAI,SAAA,CAAU,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AACxE,IAAA,YAAA,CAAa,IAAA,CAAK,EAAE,GAAA,EAAK,CAAA,EAAG,IAAA,EAAM,EAAA,EAAI,KAAA,EAAO,QAAA,CAAS,CAAA,CAAE,IAAA,EAAM,CAAA,CAAE,EAAE,GAAG,CAAA;AAAA,EACvE;AAEA,EAAA,MAAM,OAAA,GAAyB,IAAA,CAAK,GAAA,CAAI,CAAC,OAAO,EAAE,IAAA,EAAM,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAA,CAAE,IAAA,EAAM,CAAC,GAAG,CAAE,CAAA;AACvF,EAAA,MAAM,OAAA,GAAyB,YAAA,CAAa,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,IACtD,IAAA,EAAM,EAAE,GAAA,CAAI,IAAA;AAAA,IACZ,MAAM,OAAA,CAAQ,CAAA,CAAE,GAAA,CAAI,EAAA,EAAI,EAAE,IAAI;AAAA,GAChC,CAAE,CAAA;AAEF,EAAA,MAAM,IAAA,GAAO,KAAA,CAAM,GAAA,CAAI,CAAC,EAAA,KAAO;AAC7B,IAAA,MAAM,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,EAAE,CAAA;AACvB,IAAA,MAAM,UAAU,YAAA,CAAa,GAAA;AAAA,MAAI,CAAC,CAAA,KAChC,QAAA;AAAA,QACE,EAAE,GAAA,CAAI,EAAA;AAAA,QACN,CAAA,CAAE,IAAA;AAAA,QACF,CAAA,CAAE,KAAK,GAAA,CAAI,CAAC,QAAQ,GAAA,CAAI,CAAA,CAAE,KAAK,CAAE;AAAA;AACnC,KACF;AACA,IAAA,OAAO,CAAC,GAAG,CAAA,CAAE,GAAA,EAAK,GAAG,OAAO,CAAA;AAAA,EAC9B,CAAC,CAAA;AAED,EAAA,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,CAAC,GAAG,SAAS,GAAG,OAAO,CAAA,EAAG,IAAA,EAAM,CAAA;AACrD,CAAA;AAEA,IAAM,QAAA,GAAW,CAAC,CAAA,EAAU,EAAA,MAAmC;AAAA,EAC7D,GAAG,CAAA;AAAA,EACH,IAAA,EAAM,UAAA,CAAW,CAAA,CAAE,IAAA,EAAM,CAAC,CAAA,EAAG,CAAA,KAAM,aAAA,CAAc,CAAA,CAAE,IAAA,EAAM,EAAA,EAAI,CAAA,EAAG,CAAC,CAAC;AACpE,CAAA,CAAA;AAEA,IAAM,YAAA,GAAe,CAAC,CAAA,KAAoB;AACxC,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,EAAA,MAAM,MAA2B,EAAC;AAClC,EAAA,KAAA,MAAW,GAAA,IAAO,EAAE,IAAA,EAAM;AACxB,IAAA,MAAM,CAAA,GAAI,OAAO,GAAG,CAAA;AACpB,IAAA,IAAI,CAAC,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,EAAG;AAChB,MAAA,IAAA,CAAK,IAAI,CAAC,CAAA;AACV,MAAA,GAAA,CAAI,KAAK,GAAG,CAAA;AAAA,IACd;AAAA,EACF;AACA,EAAA,OAAO,EAAE,GAAG,CAAA,EAAG,IAAA,EAAM,GAAA,EAAI;AAC3B,CAAA;AAEA,IAAM,SAAA,GAAY,CAAC,CAAA,EAAU,CAAA,EAAW,MAAA,KAA0B;AAChE,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,GAAG,MAAM,CAAA,EAAG,CAAA,CAAE,IAAA,CAAK,MAAM,CAAA;AACzD,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,CAAC,CAAA;AAC1B,EAAA,OAAO,EAAE,GAAG,CAAA,EAAG,IAAA,EAAM,CAAA,CAAE,KAAK,KAAA,CAAM,KAAA,EAAO,KAAA,GAAQ,IAAI,CAAA,EAAE;AACzD,CAAA;AAEA,IAAM,QAAA,GAAW,CACf,CAAA,EACA,KAAA,EACA,IACA,GAAA,KACc;AACd,EAAA,MAAM,KAAe,EAAC;AACtB,EAAA,MAAM,KAAe,EAAC;AACtB,EAAA,KAAA,MAAW,EAAE,CAAA,EAAG,CAAA,EAAE,IAAK,EAAA,EAAI;AACzB,IAAA,MAAM,EAAA,GAAK,QAAA,CAAS,CAAA,CAAE,IAAA,EAAM,CAAC,CAAA;AAC7B,IAAA,IAAI,KAAK,CAAA,EAAG,OAAO,KAAK,aAAA,CAAc,CAAA,EAAG,CAAC,GAAG,SAAA,CAAU,CAAA,CAAE,IAAI,GAAG,GAAG,SAAA,CAAU,MAAM,IAAI,CAAC,CAAC,CAAC,CAAA;AAC1F,IAAA,MAAM,EAAA,GAAK,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM,CAAC,CAAA;AACjC,IAAA,IAAI,KAAK,CAAA,EAAG,OAAO,KAAK,aAAA,CAAc,CAAA,EAAG,CAAC,GAAG,SAAA,CAAU,CAAA,CAAE,IAAI,GAAG,GAAG,SAAA,CAAU,MAAM,IAAI,CAAC,CAAC,CAAC,CAAA;AAC1F,IAAA,EAAA,CAAG,KAAK,EAAE,CAAA;AACV,IAAA,EAAA,CAAG,KAAK,EAAE,CAAA;AAAA,EACZ;AACA,EAAA,MAAM,WAAW,CAAC,EAAA,EAAqB,OACrC,EAAA,CAAG,KAAA,CAAM,CAAC,CAAA,EAAG,CAAA,KAAM,MAAA,CAAO,EAAA,CAAG,CAAC,CAAA,EAAI,EAAA,CAAG,GAAG,CAAC,CAAE,CAAE,CAAC,CAAA;AAEhD,EAAA,MAAM,YAAY,IAAI,GAAA,CAAI,SAAA,CAAU,CAAA,CAAE,IAAI,CAAC,CAAA;AAC3C,EAAA,MAAM,SAAA,GAA2B,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,IACtD,IAAA,EAAM,UAAU,GAAA,CAAI,CAAA,CAAE,IAAI,CAAA,GAAI,CAAA,CAAE,IAAA,GAAO,QAAA,GAAW,CAAA,CAAE,IAAA;AAAA,IACpD,MAAM,CAAA,CAAE;AAAA,GACV,CAAE,CAAA;AACF,EAAA,MAAM,UAAU,CAAC,GAAG,CAAA,CAAE,IAAA,EAAM,GAAG,SAAS,CAAA;AACxC,EAAA,MAAM,SAAA,GAAoB,CAAA,CAAE,IAAA,CAAK,GAAA,CAAI,MAAM,IAAI,CAAA;AAC/C,EAAA,MAAM,UAAA,GAAqB,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,MAAM,IAAI,CAAA;AAEpD,EAAA,MAAM,WAAgC,EAAC;AACvC,EAAA,KAAA,MAAW,EAAA,IAAM,EAAE,IAAA,EAAM;AACvB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,MAAA,CAAO,CAAC,EAAA,KAAO,QAAA,CAAS,EAAA,EAAI,EAAE,CAAC,CAAA;AAC1D,IAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,MAAA,IAAI,GAAA,KAAQ,MAAA,IAAU,GAAA,KAAQ,OAAA,EAAS,QAAA,CAAS,IAAA,CAAK,CAAC,GAAG,EAAA,EAAI,GAAG,UAAU,CAAC,CAAA;AAAA,IAE7E,CAAA,MAAO;AACL,MAAA,KAAA,MAAW,EAAA,IAAM,SAAS,QAAA,CAAS,IAAA,CAAK,CAAC,GAAG,EAAA,EAAI,GAAG,EAAE,CAAC,CAAA;AAAA,IACxD;AAAA,EACF;AAEA,EAAA,MAAM,YAAiC,EAAC;AACxC,EAAA,IAAI,GAAA,KAAQ,OAAA,IAAW,GAAA,KAAQ,OAAA,EAAS;AACtC,IAAA,KAAA,MAAW,EAAA,IAAM,MAAM,IAAA,EAAM;AAC3B,MAAA,IAAI,CAAC,CAAA,CAAE,IAAA,CAAK,KAAK,CAAC,EAAA,KAAO,SAAS,EAAA,EAAI,EAAE,CAAC,CAAA,YAAa,IAAA,CAAK,CAAC,GAAG,SAAA,EAAW,GAAG,EAAE,CAAC,CAAA;AAAA,IAClF;AAAA,EACF;AAEA,EAAA,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,CAAC,GAAG,QAAA,EAAU,GAAG,SAAS,CAAA,EAAG,CAAA;AACjE,CAAA;AAEA,IAAM,SAAA,GAAY,CAAC,CAAA,EAAU,KAAA,KAA4B;AACvD,EAAA,MAAM,EAAA,GAAK,SAAA,CAAU,CAAA,CAAE,IAAI,CAAA;AAC3B,EAAA,MAAM,EAAA,GAAK,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA;AAC/B,EAAA,IAAI,EAAA,CAAG,MAAA,KAAW,EAAA,CAAG,MAAA,IAAU,EAAA,CAAG,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,KAAM,EAAA,CAAG,CAAC,CAAC,CAAA,EAAG;AAC7D,IAAA,OAAO,KAAK,EAAE,IAAA,EAAM,WAAA,EAAa,MAAA,EAAQ,wCAAwC,CAAA;AAAA,EACnF;AACA,EAAA,OAAO,GAAA,CAAI,EAAE,GAAG,CAAA,EAAG,IAAA,EAAM,CAAC,GAAG,CAAA,CAAE,IAAA,EAAM,GAAG,KAAA,CAAM,IAAI,GAAG,CAAA;AACvD,CAAA;AAEA,IAAM,UAAA,GAAa,CAAC,CAAA,EAAU,IAAA,KAAoC;AAChE,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,CAAA,CAAE,IAAA,EAAM,KAAK,EAAE,CAAA;AACtC,EAAA,IAAI,QAAQ,CAAA,IAAK,IAAA,CAAK,OAAO,WAAA,IAAe,IAAA,CAAK,OAAO,MAAA,EAAQ;AAC9D,IAAA,OAAO,IAAA,CAAK,cAAc,IAAA,CAAK,EAAA,EAAI,UAAU,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AAAA,EACvD;AACA,EAAA,MAAM,UAAU,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,CAAC,MAAM,QAAA,CAAS,CAAA,CAAE,IAAA,EAAM,CAAC,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,KAAM,KAAK,CAAC,CAAA;AACrF,EAAA,MAAM,OAAA,GAAU,CAAC,GAAA,KAAiC,MAAA,CAAO,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,KAAM,GAAA,CAAI,CAAC,CAAE,CAAC,CAAA;AAGpF,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,MAAM,UAAA,uBAAiB,GAAA,EAAuD;AAC9E,EAAA,CAAA,CAAE,IAAA,CAAK,OAAA,CAAQ,CAAC,GAAA,EAAK,CAAA,KAAM;AACzB,IAAA,MAAM,CAAA,GAAI,QAAQ,GAAG,CAAA;AACrB,IAAA,MAAM,CAAA,GAAI,UAAA,CAAW,GAAA,CAAI,CAAC,CAAA;AAC1B,IAAA,IAAI,MAAM,MAAA,EAAW;AACnB,MAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AACZ,MAAA,UAAA,CAAW,GAAA,CAAI,GAAG,CAAC,EAAE,OAAO,CAAA,EAAG,GAAA,EAAK,CAAC,CAAA;AAAA,IACvC,CAAA,MAAO;AACL,MAAA,CAAA,CAAE,IAAA,CAAK,EAAE,KAAA,EAAO,CAAA,EAAG,KAAK,CAAA;AAAA,IAC1B;AAAA,EACF,CAAC,CAAA;AAED,EAAA,MAAM,UAAU,CAAC,GAAA,KAAgC,SAAS,CAAA,GAAI,GAAA,CAAI,KAAK,CAAA,GAAK,IAAA;AAE5E,EAAA,MAAM,WAA2C,EAAC;AAClD,EAAA,KAAA,MAAW,KAAK,KAAA,EAAO;AACrB,IAAA,MAAM,OAAA,GAAU,UAAA,CAAW,GAAA,CAAI,CAAC,CAAA;AAChC,IAAA,MAAM,OAAA,GAAU,UAAA;AAAA,MAAW,OAAA;AAAA,MAAS,CAAC,CAAA,EAAG,CAAA,KACtC,aAAA,CAAc,CAAA,CAAE,IAAA,EAAM,IAAA,CAAK,OAAA,EAAS,CAAA,CAAE,GAAA,EAAK,CAAA,CAAE,GAAG;AAAA,KAClD;AACA,IAAA,MAAM,IAAA,GAAO,QAAQ,GAAA,CAAI,CAAC,MAAM,OAAA,CAAQ,CAAA,CAAE,GAAG,CAAC,CAAA;AAC9C,IAAA,IAAI,IAAA;AACJ,IAAA,QAAQ,KAAK,EAAA;AAAI,MACf,KAAK,WAAA;AACH,QAAA,IAAA,GAAO,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,MAAO,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,CAAA,GAAI,CAAA,EAAE,CAAE,CAAA;AAC5D,QAAA;AAAA,MACF,KAAK,MAAA,EAAQ;AAEX,QAAA,MAAM,QAAQ,OAAA,CAAQ,GAAA;AAAA,UAAI,CAAC,GAAG,CAAA,KAC5B,CAAA,KAAM,IACF,CAAA,GACA,aAAA,CAAc,EAAE,IAAA,EAAM,IAAA,CAAK,SAAS,OAAA,CAAQ,CAAA,GAAI,CAAC,CAAA,CAAG,GAAA,EAAK,EAAE,GAAG,CAAA,KAAM,IAClE,CAAA,GACA;AAAA,SACR;AACA,QAAA,IAAI,GAAA,GAAM,CAAA;AACV,QAAA,IAAA,GAAO,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM;AACtB,UAAA,GAAA,IAAO,CAAA;AACP,UAAA,OAAO,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,GAAA,EAAI;AAAA,QACnC,CAAC,CAAA;AACD,QAAA;AAAA,MACF;AAAA,MACA,KAAK,KAAA;AACH,QAAA,IAAA,GAAO,CAAC,IAAA,EAAM,GAAG,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,MAAA,GAAS,CAAC,CAAC,CAAC,CAAA;AAC5D,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,IAAA,GAAO,CAAC,GAAG,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,MAAM,CAAC,CAAA,EAAG,IAAI,CAAA;AACrD,QAAA;AAAA,MACF,KAAK,UAAA,EAAY;AACf,QAAA,IAAI,GAAA,GAAM,CAAA;AACV,QAAA,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM;AACrB,UAAA,MAAM,CAAA,GAAI,MAAM,CAAC,CAAA;AACjB,UAAA,IAAI,CAAA,KAAM,QAAW,GAAA,IAAO,CAAA;AAC5B,UAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,GAAA,EAAI;AAAA,QACrC,CAAC,CAAA;AACD,QAAA;AAAA,MACF;AAAA,MACA,KAAK,aAAA;AACH,QAAA,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM;AACxB,UAAA,MAAM,EAAA,GAAK,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAI,CAAC,CAAA;AAC5B,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,EAAA,EAAI,IAAI,CAAC,CAAA;AACnC,UAAA,MAAM,IAAA,GAAO,OAAO,GAAA,CAAI,KAAK,EAAE,MAAA,CAAO,CAAC,CAAA,KAAmB,CAAA,KAAM,MAAS,CAAA;AACzE,UAAA,OAAO,KAAK,MAAA,KAAW,CAAA,GACnB,OACA,EAAE,IAAA,EAAM,SAAS,KAAA,EAAO,IAAA,CAAK,MAAA,CAAO,CAAC,GAAG,CAAA,KAAM,CAAA,GAAI,GAAG,CAAC,CAAA,GAAI,KAAK,MAAA,EAAO;AAAA,QAC5E,CAAC,CAAA;AACD,QAAA;AAAA;AAEJ,IAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,CAAA,EAAG,CAAA,KAAM,SAAS,IAAA,CAAK,EAAE,KAAA,EAAO,CAAA,CAAE,OAAO,GAAA,EAAK,IAAA,CAAK,CAAC,CAAA,EAAI,CAAC,CAAA;AAAA,EAC5E;AAEA,EAAA,QAAA,CAAS,KAAK,CAAC,CAAA,EAAG,MAAM,CAAA,CAAE,KAAA,GAAQ,EAAE,KAAK,CAAA;AACzC,EAAA,MAAM,WAAW,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,GAAG,CAAA;AAE1C,EAAA,IAAI,EAAA;AACJ,EAAA,QAAQ,KAAK,EAAA;AAAI,IACf,KAAK,WAAA;AAAA,IACL,KAAK,MAAA;AACH,MAAA,EAAA,GAAK,KAAA;AACL,MAAA;AAAA,IACF,KAAK,UAAA;AAAA,IACL,KAAK,aAAA;AACH,MAAA,EAAA,GAAK,OAAA;AACL,MAAA;AAAA,IACF,KAAK,KAAA;AAAA,IACL,KAAK,MAAA;AACH,MAAA,EAAA,GAAK,OAAA,CAAQ,CAAA,CAAE,IAAA,EAAM,IAAA,CAAK,EAAE,CAAA,IAAK,QAAA;AACjC,MAAA;AAAA,IACF;AACE,MAAA,EAAA,GAAK,QAAA;AAAA;AAGT,EAAA,OAAO,GAAA,CAAI;AAAA,IACT,IAAA,EAAM,CAAC,GAAG,CAAA,CAAE,IAAA,EAAM,EAAE,IAAA,EAAM,IAAA,CAAK,EAAA,EAAI,IAAA,EAAM,EAAA,EAAI,CAAA;AAAA,IAC7C,IAAA,EAAM,CAAA,CAAE,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,EAAK,CAAA,KAAM,CAAC,GAAG,GAAA,EAAK,QAAA,CAAS,CAAC,CAAE,CAAC;AAAA,GACpD,CAAA;AACH,CAAA;AAEA,IAAM,SAAA,GAAY,CAAC,CAAA,EAAU,IAAA,KAAmC;AAC9D,EAAA,MAAM,IAAA,GAAO,CAAC,IAAA,KAAqC;AACjD,IAAA,MAAM,CAAA,GAAI,QAAA,CAAS,CAAA,CAAE,IAAA,EAAM,IAAI,CAAA;AAC/B,IAAA,OAAO,CAAA,IAAK,IAAI,CAAA,GAAI,MAAA;AAAA,EACtB,CAAA;AACA,EAAA,MAAM,SAAmB,EAAC;AAC1B,EAAA,KAAA,MAAW,CAAA,IAAK,KAAK,KAAA,EAAO;AAC1B,IAAA,MAAM,CAAA,GAAI,KAAK,CAAC,CAAA;AAChB,IAAA,IAAI,CAAA,KAAM,MAAA,EAAW,OAAO,IAAA,CAAK,aAAA,CAAc,GAAG,SAAA,CAAU,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AACpE,IAAA,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,EACf;AACA,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,IAAA,CAAK,EAAE,CAAA;AAC1B,EAAA,IAAI,KAAA,KAAU,MAAA,EAAW,OAAO,IAAA,CAAK,aAAA,CAAc,IAAA,CAAK,EAAA,EAAI,SAAA,CAAU,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AAC9E,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,IAAA,CAAK,MAAM,CAAA;AAC/B,EAAA,IAAI,MAAA,KAAW,MAAA,EAAW,OAAO,IAAA,CAAK,aAAA,CAAc,IAAA,CAAK,MAAA,EAAQ,SAAA,CAAU,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AACnF,EAAA,MAAM,OAAA,GAAU,CAAA,CAAE,IAAA,CAAK,MAAM,CAAA,CAAG,IAAA;AAEhC,EAAA,MAAM,QAAA,GAAW,CAAC,GAAA,KAAiC,MAAA,CAAO,IAAI,CAAC,CAAA,KAAM,GAAA,CAAI,CAAC,CAAE,CAAA;AAG5E,EAAA,MAAM,MAAA,uBAAa,GAAA,EAAY;AAC/B,EAAA,MAAM,WAAmB,EAAC;AAC1B,EAAA,KAAA,MAAW,GAAA,IAAO,EAAE,IAAA,EAAM;AACxB,IAAA,MAAM,CAAA,GAAI,IAAI,KAAK,CAAA;AACnB,IAAA,IAAI,MAAA,CAAO,CAAC,CAAA,EAAG;AACf,IAAA,MAAM,CAAA,GAAI,QAAQ,CAAC,CAAA;AACnB,IAAA,IAAI,CAAC,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,EAAG;AAClB,MAAA,MAAA,CAAO,IAAI,CAAC,CAAA;AACZ,MAAA,QAAA,CAAS,KAAK,CAAC,CAAA;AAAA,IACjB;AAAA,EACF;AACA,EAAA,QAAA,CAAS,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM;AACtB,IAAA,MAAM,EAAA,GAAK,WAAW,CAAC,CAAA;AACvB,IAAA,MAAM,EAAA,GAAK,WAAW,CAAC,CAAA;AACvB,IAAA,OAAO,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,KAAK,CAAA,GAAI,CAAA;AAAA,EACtC,CAAC,CAAA;AAGD,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,MAAM,SAAA,uBAAgB,GAAA,EAAY;AAClC,EAAA,KAAA,MAAW,GAAA,IAAO,EAAE,IAAA,EAAM;AACxB,IAAA,MAAM,CAAA,GAAI,SAAS,GAAG,CAAA;AACtB,IAAA,MAAM,EAAA,GAAK,OAAO,CAAC,CAAA;AACnB,IAAA,IAAI,CAAC,SAAA,CAAU,GAAA,CAAI,EAAE,CAAA,EAAG;AACtB,MAAA,SAAA,CAAU,IAAI,EAAE,CAAA;AAChB,MAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,IACd;AAAA,EACF;AAEA,EAAA,MAAM,OAAA,GAAyB,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,MAAO,EAAE,IAAA,EAAM,CAAA,EAAG,MAAM,OAAA,CAAQ,CAAA,CAAE,IAAA,EAAM,CAAC,GAAG,CAAE,CAAA;AAC7F,EAAA,MAAM,SAAA,GAA2B,QAAA,CAAS,GAAA,CAAI,CAAC,EAAA,MAAQ;AAAA,IACrD,IAAA,EAAM,WAAW,EAAE,CAAA;AAAA,IACnB,IAAA,EAAM,OAAA,CAAQ,IAAA,CAAK,GAAA,EAAK,OAAO;AAAA,GACjC,CAAE,CAAA;AAEF,EAAA,MAAM,IAAA,GAAO,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM;AAC5B,IAAA,MAAM,EAAA,GAAK,OAAO,CAAC,CAAA;AACnB,IAAA,MAAM,QAAA,GAAW,CAAC,EAAA,KAAmB;AACnC,MAAA,MAAM,QAAA,GAAW,CAAA,CAAE,IAAA,CAChB,MAAA,CAAO,CAAC,QAAQ,MAAA,CAAO,QAAA,CAAS,GAAG,CAAC,CAAA,KAAM,EAAA,IAAM,OAAO,GAAA,CAAI,KAAK,CAAA,EAAI,EAAE,CAAC,CAAA,CACvE,IAAI,CAAC,GAAA,KAAQ,GAAA,CAAI,MAAM,CAAE,CAAA;AAC5B,MAAA,OAAO,QAAA,CAAS,IAAA,CAAK,GAAA,EAAK,OAAA,EAAS,QAAQ,CAAA;AAAA,IAC7C,CAAA;AACA,IAAA,OAAO,CAAC,GAAG,CAAA,EAAG,GAAG,QAAA,CAAS,GAAA,CAAI,QAAQ,CAAC,CAAA;AAAA,EACzC,CAAC,CAAA;AAED,EAAA,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,CAAC,GAAG,SAAS,GAAG,SAAS,CAAA,EAAG,IAAA,EAAM,CAAA;AACvD,CAAA;AAEA,IAAM,WAAA,GAAc,CAClB,CAAA,EACA,MAAA,EACA,SAAA,KACc;AACd,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,KAAA,MAAW,KAAK,MAAA,EAAQ;AACtB,IAAA,MAAM,CAAA,GAAI,QAAA,CAAS,CAAA,CAAE,IAAA,EAAM,CAAC,CAAA;AAC5B,IAAA,IAAI,CAAA,GAAI,CAAA,EAAG,OAAO,IAAA,CAAK,aAAA,CAAc,GAAG,SAAA,CAAU,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AAC1D,IAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,EACd;AACA,EAAA,MAAM,SAAmB,EAAC;AAC1B,EAAA,KAAA,MAAW,KAAK,SAAA,EAAW;AACzB,IAAA,MAAM,CAAA,GAAI,QAAA,CAAS,CAAA,CAAE,IAAA,EAAM,CAAC,CAAA;AAC5B,IAAA,IAAI,CAAA,GAAI,CAAA,EAAG,OAAO,IAAA,CAAK,aAAA,CAAc,GAAG,SAAA,CAAU,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AAC1D,IAAA,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,EACf;AACA,EAAA,MAAM,MAAA,GAAwB,MAAA,CAAO,GAAA,CAAI,CAAC,OAAO,EAAE,IAAA,EAAM,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAA,CAAE,IAAA,EAAM,CAAC,GAAG,CAAE,CAAA;AACxF,EAAA,IAAI,OAAA,GAAsB,QAAA;AAC1B,EAAA,KAAA,MAAW,KAAK,SAAA,EAAW;AACzB,IAAA,MAAM,CAAA,GAAI,OAAA,CAAQ,CAAA,CAAE,IAAA,EAAM,CAAC,CAAA;AAC3B,IAAA,IAAI,MAAM,MAAA,EAAW;AACnB,MAAA,OAAA,GAAU,CAAA;AACV,MAAA;AAAA,IACF;AAAA,EACF;AACA,EAAA,MAAM,IAAA,GAAsB;AAAA,IAC1B,GAAG,MAAA;AAAA,IACH,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,QAAA,EAAS;AAAA,IACnC,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,OAAA;AAAQ,GACjC;AACA,EAAA,MAAM,OAAiB,EAAC;AACxB,EAAA,KAAA,MAAW,GAAA,IAAO,EAAE,IAAA,EAAM;AACxB,IAAA,MAAM,UAAU,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,GAAA,CAAI,CAAC,CAAE,CAAA;AACxC,IAAA,SAAA,CAAU,OAAA,CAAQ,CAAC,IAAA,EAAM,CAAA,KAAM;AAC7B,MAAA,IAAA,CAAK,IAAA,CAAK,CAAC,GAAG,OAAA,EAAS,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,IAAA,IAAQ,GAAA,CAAI,MAAA,CAAO,CAAC,CAAE,CAAE,CAAC,CAAA;AAAA,IACxE,CAAC,CAAA;AAAA,EACH;AACA,EAAA,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,IAAA,EAAM,CAAA;AAC3B,CAAA;AAuBO,IAAM,SAAA,GAA4B,CAAC,GAAA,KAAQ,IAAA,CAAK,EAAE,IAAA,EAAM,kBAAA,EAAoB,KAAK;AAGjF,IAAM,UAAA,GAAa,CAAC,OAAA,EAAyB,GAAA,KAClD,GAAA,CAAI,IAAA,KAAS,UAAA,GAAa,GAAA,CAAI,GAAA,CAAI,KAAK,CAAA,GAAI,OAAA,CAAQ,IAAI,IAAI;AAE7D,IAAM,WAAW,CACf,OAAA,EACA,CAAA,EACA,CAAA,EACA,MAAe,SAAA,KACD;AACd,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,QAAA;AACH,MAAA,OAAO,UAAA,CAAW,CAAA,EAAG,CAAA,CAAE,IAAA,EAAM,GAAG,CAAA;AAAA,IAClC,KAAK,SAAA;AACH,MAAA,OAAO,WAAA,CAAY,CAAA,EAAG,CAAA,CAAE,IAAI,CAAA;AAAA,IAC9B,KAAK,QAAA;AACH,MAAA,OAAO,WAAW,CAAA,EAAG,CAAA,CAAE,IAAA,EAAM,CAAA,CAAE,MAAM,GAAG,CAAA;AAAA,IAC1C,KAAK,SAAA;AACH,MAAA,OAAO,WAAA,CAAY,CAAA,EAAG,CAAA,CAAE,IAAA,EAAM,EAAE,IAAI,CAAA;AAAA,IACtC,KAAK,MAAA;AACH,MAAA,OAAO,GAAA,CAAI,QAAA,CAAS,CAAA,EAAG,CAAA,CAAE,EAAE,CAAC,CAAA;AAAA,IAC9B,KAAK,UAAA;AACH,MAAA,OAAO,GAAA,CAAI,YAAA,CAAa,CAAC,CAAC,CAAA;AAAA,IAC5B,KAAK,OAAA;AACH,MAAA,OAAO,IAAI,SAAA,CAAU,CAAA,EAAG,EAAE,CAAA,EAAG,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,IACxC,KAAK,QAAA;AACH,MAAA,OAAO,UAAA,CAAW,CAAA,EAAG,CAAA,CAAE,IAAI,CAAA;AAAA,IAC7B,KAAK,OAAA;AACH,MAAA,OAAO,SAAA,CAAU,CAAA,EAAG,CAAA,CAAE,IAAI,CAAA;AAAA,IAC5B,KAAK,SAAA;AACH,MAAA,OAAO,WAAA,CAAY,CAAA,EAAG,CAAA,CAAE,MAAA,EAAQ,EAAE,SAAS,CAAA;AAAA,IAC7C,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,CAAA,GAAI,UAAA,CAAW,OAAA,EAAS,CAAA,CAAE,MAAM,CAAA;AACtC,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,OAAO,QAAA,CAAS,GAAG,OAAA,CAAQ,CAAA,CAAE,KAAK,CAAA,EAAG,CAAA,CAAE,EAAA,EAAI,CAAA,CAAE,GAAG,CAAA;AAAA,IAClD;AAAA,IACA,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,CAAA,GAAI,UAAA,CAAW,OAAA,EAAS,CAAA,CAAE,MAAM,CAAA;AACtC,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,OAAO,SAAA,CAAU,CAAA,EAAG,OAAA,CAAQ,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,IACtC;AAAA;AAEJ,CAAA;AAMO,IAAM,qBAAA,GAAwB,CACnC,OAAA,EACA,GAAA,EACA,UACA,KAAA,KACc;AACd,EAAA,IAAI,CAAA,GAAI,QAAQ,KAAK,CAAA;AACrB,EAAA,KAAA,MAAW,QAAQ,QAAA,EAAU;AAC3B,IAAA,MAAM,CAAA,GAAI,QAAA,CAAS,OAAA,EAAS,CAAA,EAAG,MAAM,GAAG,CAAA;AACxC,IAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,IAAA,CAAA,GAAI,CAAA,CAAE,KAAA;AAAA,EACR;AACA,EAAA,OAAO,GAAA,CAAI,OAAA,CAAQ,CAAC,CAAC,CAAA;AACvB;AAEO,IAAM,gBAAA,GAAmB,CAC9B,OAAA,EACA,QAAA,EACA,UACc,qBAAA,CAAsB,OAAA,EAAS,SAAA,EAAW,QAAA,EAAU,KAAK;AAGlE,IAAM,eAAe,CAAC,QAAA,EAAgC,UAC3D,gBAAA,CAAiB,SAAA,EAAW,UAAU,KAAK;AAGtC,IAAM,iBAAA,GAAoB,CAC/B,GAAA,EACA,QAAA,EACA,UACc,qBAAA,CAAsB,SAAA,EAAW,GAAA,EAAK,QAAA,EAAU,KAAK;AAG9D,IAAM,eAAA,GAAkB,CAAC,CAAA,KAAyB;AACvD,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,eAAA;AACH,MAAA,OAAO,qBAAqB,CAAA,CAAE,IAAA,GAAO,mBAAmB,CAAA,CAAE,SAAA,CAAU,KAAK,IAAI,CAAA;AAAA,IAC/E,KAAK,WAAA;AACH,MAAA,OAAO,iBAAiB,CAAA,CAAE,MAAA;AAAA,IAC5B,KAAK,UAAA;AACH,MAAA,OAAO,sBAAsB,CAAA,CAAE,MAAA;AAAA,IACjC,KAAK,WAAA;AACH,MAAA,OAAO,iBAAiB,CAAA,CAAE,MAAA;AAAA,IAC5B,KAAK,YAAA;AACH,MAAA,OAAO,eAAe,CAAA,CAAE,EAAA,GAAK,eAAe,CAAA,CAAE,QAAA,GAAW,gBAAgB,CAAA,CAAE,GAAA;AAAA,IAC7E,KAAK,kBAAA;AACH,MAAA,OAAO,4BAA4B,CAAA,CAAE,GAAA;AAAA,IACvC,KAAK,cAAA;AACH,MAAA,OAAO,oBAAoB,CAAA,CAAE,IAAA,GAAO,eAAe,CAAA,CAAE,KAAA,CAAM,KAAK,IAAI,CAAA;AAAA;AAE1E;AAIA,IAAM,aAAA,GAAgB,CAAC,CAAA,KAAyB;AAC9C,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,KAAA;AAAA,IACL,KAAK,KAAA;AACH,MAAA,OAAO,EAAC;AAAA,IACV,KAAK,OAAA;AACH,MAAA,OAAO,CAAC,EAAE,IAAI,CAAA;AAAA,IAChB,KAAK,QAAA;AACH,MAAA,OAAO,CAAC,GAAG,aAAA,CAAc,CAAA,CAAE,IAAI,GAAG,GAAG,aAAA,CAAc,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,IAC7D,KAAK,KAAA;AACH,MAAA,OAAO,aAAA,CAAc,EAAE,IAAI,CAAA;AAAA,IAC7B,KAAK,UAAA;AACH,MAAA,OAAO,CAAA,CAAE,KAAA,CAAM,OAAA,CAAQ,aAAa,CAAA;AAAA,IACtC,KAAK,MAAA;AACH,MAAA,OAAO;AAAA,QACL,GAAG,CAAA,CAAE,KAAA,CAAM,OAAA,CAAQ,CAAC,OAAO,CAAC,GAAG,aAAA,CAAc,EAAA,CAAG,IAAI,CAAA,EAAG,GAAG,cAAc,EAAA,CAAG,IAAI,CAAC,CAAC,CAAA;AAAA,QACjF,GAAG,aAAA,CAAc,CAAA,CAAE,IAAI;AAAA,OACzB;AAAA,IACF,KAAK,MAAA;AACH,MAAA,OAAO,aAAA,CAAc,EAAE,IAAI,CAAA;AAAA,IAC7B,KAAK,OAAA;AACH,MAAA,OAAO,CAAA,CAAE,IAAA,CAAK,OAAA,CAAQ,aAAa,CAAA;AAAA,IACrC,KAAK,IAAA;AACH,MAAA,OAAO,CAAC,GAAG,aAAA,CAAc,CAAA,CAAE,IAAI,CAAA,EAAG,GAAG,CAAA,CAAE,KAAA,CAAM,OAAA,CAAQ,aAAa,CAAC,CAAA;AAAA,IACrE,KAAK,QAAA;AACH,MAAA,OAAO,aAAA,CAAc,EAAE,IAAI,CAAA;AAAA,IAC7B,KAAK,SAAA;AAEH,MAAA,OAAO,CAAC,GAAG,aAAA,CAAc,EAAE,IAAI,CAAA,EAAG,EAAE,KAAK,CAAA;AAAA;AAE/C,CAAA;AAGO,IAAM,UAAA,GAAa,CAAC,CAAA,KAAoC;AAC7D,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,QAAA;AACH,MAAA,OAAO,aAAA,CAAc,EAAE,IAAI,CAAA;AAAA,IAC7B,KAAK,QAAA;AACH,MAAA,OAAO,aAAA,CAAc,EAAE,IAAI,CAAA;AAAA,IAC7B;AACE,MAAA,OAAO,EAAC;AAAA;AAEd;AAGO,IAAM,cAAA,GAAiB,CAAC,QAAA,KAAsD;AAAA,EACnF,GAAG,IAAI,GAAA,CAAI,QAAA,CAAS,OAAA,CAAQ,CAAC,CAAA,KAAM,UAAA,CAAW,CAAC,CAAC,CAAC;AACnD;;;ACrwCA,IAAM,IAAA,GAAO,CAAC,CAAA,KAA2B,CAAA,CAAE,GAAA,GAAM,CAAA,CAAE,IAAA,CAAK,MAAA,GAAS,CAAA,CAAE,IAAA,CAAK,CAAA,CAAE,GAAG,CAAA,GAAK,GAAA;AAElF,IAAM,OAAA,GAAU,CAAC,CAAA,KAAwB;AACvC,EAAA,CAAA,CAAE,GAAA,IAAO,CAAA;AACX,CAAA;AAEA,IAAM,MAAA,GAAS,CAAC,CAAA,KAAwB;AACtC,EAAA,OAAO,CAAA,CAAE,GAAA,GAAM,CAAA,CAAE,IAAA,CAAK,MAAA,EAAQ;AAC5B,IAAA,MAAM,CAAA,GAAI,CAAA,CAAE,IAAA,CAAK,CAAA,CAAE,GAAG,CAAA;AACtB,IAAA,IAAI,MAAM,GAAA,IAAO,CAAA,KAAM,OAAQ,CAAA,KAAM,IAAA,IAAQ,MAAM,IAAA,EAAM;AACvD,MAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,IACX,CAAA,MAAO;AACL,MAAA;AAAA,IACF;AAAA,EACF;AACF,CAAA;AAEA,IAAM,IAAA,GAAO,CAAC,CAAA,EAAe,OAAA,MAAgD;AAAA,EAC3E,EAAA,EAAI,KAAA;AAAA,EACJ,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,EAAE,GAAA;AAC9B,CAAA,CAAA;AAEA,IAAM,UAAA,GAAa,CAAC,CAAA,EAAe,EAAA,KAAyC;AAC1E,EAAA,IAAI,IAAA,CAAK,CAAC,CAAA,KAAM,EAAA,EAAI;AAClB,IAAA,OAAA,CAAQ,CAAC,CAAA;AACT,IAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,IAAA,EAAK;AAAA,EACjC;AACA,EAAA,OAAO,IAAA,CAAK,GAAG,CAAA,UAAA,EAAa,EAAE,gBAAgB,IAAA,CAAK,CAAC,CAAC,CAAA,CAAA,CAAG,CAAA;AAC1D,CAAA;AAIA,IAAM,SAAA,GAAY,aAAA;AAElB,IAAM,cAAA,GAAiB,CAAC,CAAA,KAA8C;AACpE,EAAA,MAAM,IAAA,GAAO,UAAA,CAAW,CAAA,EAAG,GAAG,CAAA;AAC9B,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AAErB,EAAA,IAAI,GAAA,GAAM,EAAA;AACV,EAAA,WAAS;AACP,IAAA,IAAI,CAAA,CAAE,OAAO,CAAA,CAAE,IAAA,CAAK,QAAQ,OAAO,IAAA,CAAK,GAAG,qBAAqB,CAAA;AAChE,IAAA,MAAM,CAAA,GAAI,CAAA,CAAE,IAAA,CAAK,CAAA,CAAE,GAAG,CAAA;AACtB,IAAA,OAAA,CAAQ,CAAC,CAAA;AAET,IAAA,IAAI,MAAM,GAAA,EAAK;AACb,MAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,GAAA,EAAI;AAAA,IAChC,CAAA,MAAA,IAAW,MAAM,IAAA,EAAM;AACrB,MAAA,IAAI,CAAA,CAAE,OAAO,CAAA,CAAE,IAAA,CAAK,QAAQ,OAAO,IAAA,CAAK,GAAG,qBAAqB,CAAA;AAChE,MAAA,MAAM,GAAA,GAAM,CAAA,CAAE,IAAA,CAAK,CAAA,CAAE,GAAG,CAAA;AACxB,MAAA,OAAA,CAAQ,CAAC,CAAA;AACT,MAAA,QAAQ,GAAA;AAAK,QACX,KAAK,GAAA;AACH,UAAA,GAAA,IAAO,GAAA;AACP,UAAA;AAAA,QACF,KAAK,IAAA;AACH,UAAA,GAAA,IAAO,IAAA;AACP,UAAA;AAAA,QACF,KAAK,GAAA;AACH,UAAA,GAAA,IAAO,GAAA;AACP,UAAA;AAAA,QACF,KAAK,GAAA;AACH,UAAA,GAAA,IAAO,IAAA;AACP,UAAA;AAAA,QACF,KAAK,GAAA;AACH,UAAA,GAAA,IAAO,IAAA;AACP,UAAA;AAAA,QACF,KAAK,GAAA;AACH,UAAA,GAAA,IAAO,IAAA;AACP,UAAA;AAAA,QACF,KAAK,GAAA;AACH,UAAA,GAAA,IAAO,IAAA;AACP,UAAA;AAAA,QACF,KAAK,GAAA;AACH,UAAA,GAAA,IAAO,GAAA;AACP,UAAA;AAAA,QACF,KAAK,GAAA,EAAK;AACR,UAAA,IAAI,CAAA,CAAE,MAAM,CAAA,GAAI,CAAA,CAAE,KAAK,MAAA,EAAQ,OAAO,IAAA,CAAK,CAAA,EAAG,uBAAuB,CAAA;AACrE,UAAA,MAAM,GAAA,GAAM,EAAE,IAAA,CAAK,SAAA,CAAU,EAAE,GAAA,EAAK,CAAA,CAAE,MAAM,CAAC,CAAA;AAC7C,UAAA,IACE,CAAC,SAAA,CAAU,IAAA,CAAK,GAAA,CAAI,CAAC,CAAE,CAAA,IACvB,CAAC,SAAA,CAAU,IAAA,CAAK,GAAA,CAAI,CAAC,CAAE,CAAA,IACvB,CAAC,SAAA,CAAU,IAAA,CAAK,GAAA,CAAI,CAAC,CAAE,CAAA,IACvB,CAAC,SAAA,CAAU,IAAA,CAAK,GAAA,CAAI,CAAC,CAAE,CAAA,EACvB;AACA,YAAA,OAAO,IAAA,CAAK,CAAA,EAAG,CAAA,oBAAA,EAAuB,GAAG,CAAA,CAAA,CAAG,CAAA;AAAA,UAC9C;AACA,UAAA,CAAA,CAAE,GAAA,IAAO,CAAA;AACT,UAAA,GAAA,IAAO,MAAA,CAAO,YAAA,CAAa,QAAA,CAAS,GAAA,EAAK,EAAE,CAAC,CAAA;AAC5C,UAAA;AAAA,QACF;AAAA,QACA;AACE,UAAA,OAAO,IAAA,CAAK,CAAA,EAAG,CAAA,kBAAA,EAAqB,GAAG,CAAA,CAAA,CAAG,CAAA;AAAA;AAC9C,IACF,CAAA,MAAO;AACL,MAAA,GAAA,IAAO,CAAA;AAAA,IACT;AAAA,EACF;AACF,CAAA;AAEA,IAAM,YAAA,GAAe,CAAC,CAAA,KACpB,CAAA,KAAM,OAAO,CAAA,KAAM,GAAA,IAAO,CAAA,KAAM,GAAA,IAAO,MAAM,GAAA,IAAO,CAAA,KAAM,GAAA,IAAQ,CAAA,IAAK,OAAO,CAAA,IAAK,GAAA;AAErF,IAAM,cAAA,GAAiB,CAAC,CAAA,KAA8C;AACpE,EAAA,MAAM,QAAQ,CAAA,CAAE,GAAA;AAChB,EAAA,OAAO,CAAA,CAAE,GAAA,GAAM,CAAA,CAAE,IAAA,CAAK,MAAA,IAAU,YAAA,CAAa,CAAA,CAAE,IAAA,CAAK,CAAA,CAAE,GAAG,CAAE,CAAA,EAAG;AAC5D,IAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,EACX;AACA,EAAA,MAAM,QAAQ,CAAA,CAAE,IAAA,CAAK,SAAA,CAAU,KAAA,EAAO,EAAE,GAAG,CAAA;AAC3C,EAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,IAAA,OAAO,IAAA,CAAK,CAAA,EAAG,CAAA,gBAAA,EAAmB,KAAK,CAAA,CAAA,CAAG,CAAA;AAAA,EAC5C;AACA,EAAA,MAAM,CAAA,GAAI,OAAO,KAAK,CAAA;AACtB,EAAA,IAAI,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,EAAG;AACnB,IAAA,OAAO,IAAA,CAAK,CAAA,EAAG,CAAA,gBAAA,EAAmB,KAAK,CAAA,CAAA,CAAG,CAAA;AAAA,EAC5C;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,CAAA,EAAE;AAC9B,CAAA;AAIA,IAAM,UAAA,GAAa,CAAC,CAAA,KAA+C;AACjE,EAAA,MAAA,CAAO,CAAC,CAAA;AACR,EAAA,MAAM,CAAA,GAAI,KAAK,CAAC,CAAA;AAChB,EAAA,QAAQ,CAAA;AAAG,IACT,KAAK,GAAA;AACH,MAAA,OAAO,iBAAiB,CAAC,CAAA;AAAA,IAC3B,KAAK,GAAA;AACH,MAAA,OAAO,gBAAgB,CAAC,CAAA;AAAA,IAC1B,KAAK,GAAA,EAAK;AACR,MAAA,MAAM,CAAA,GAAI,eAAe,CAAC,CAAA;AAC1B,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,EAAE,IAAA,EAAM,SAAA,EAAW,KAAA,EAAO,CAAA,CAAE,KAAA,IAAQ,GAAI,CAAA;AAAA,IAC3E;AAAA,IACA,KAAK,GAAA;AACH,MAAA,IAAI,CAAA,CAAE,KAAK,SAAA,CAAU,CAAA,CAAE,KAAK,CAAA,CAAE,GAAA,GAAM,CAAC,CAAA,KAAM,MAAA,EAAQ;AACjD,QAAA,CAAA,CAAE,GAAA,IAAO,CAAA;AACT,QAAA,OAAO,EAAE,IAAI,IAAA,EAAM,KAAA,EAAO,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAA,EAAK,EAAE;AAAA,MAC3D;AACA,MAAA,OAAO,IAAA,CAAK,GAAG,iBAAiB,CAAA;AAAA,IAClC,KAAK,GAAA;AACH,MAAA,IAAI,CAAA,CAAE,KAAK,SAAA,CAAU,CAAA,CAAE,KAAK,CAAA,CAAE,GAAA,GAAM,CAAC,CAAA,KAAM,OAAA,EAAS;AAClD,QAAA,CAAA,CAAE,GAAA,IAAO,CAAA;AACT,QAAA,OAAO,EAAE,IAAI,IAAA,EAAM,KAAA,EAAO,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,KAAA,EAAM,EAAE;AAAA,MAC5D;AACA,MAAA,OAAO,IAAA,CAAK,GAAG,kBAAkB,CAAA;AAAA,IACnC,KAAK,GAAA;AACH,MAAA,IAAI,CAAA,CAAE,KAAK,SAAA,CAAU,CAAA,CAAE,KAAK,CAAA,CAAE,GAAA,GAAM,CAAC,CAAA,KAAM,MAAA,EAAQ;AACjD,QAAA,CAAA,CAAE,GAAA,IAAO,CAAA;AACT,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,OAAO,EAAE,IAAA,EAAM,SAAQ,EAAE;AAAA,MAC9C;AACA,MAAA,OAAO,IAAA,CAAK,GAAG,iBAAiB,CAAA;AAAA,IAClC,SAAS;AACP,MAAA,MAAM,CAAA,GAAI,eAAe,CAAC,CAAA;AAC1B,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,EAAE,IAAA,EAAM,SAAA,EAAW,KAAA,EAAO,CAAA,CAAE,KAAA,IAAQ,GAAI,CAAA;AAAA,IAC3E;AAAA;AAEJ,CAAA;AAEA,IAAM,gBAAA,GAAmB,CAAC,CAAA,KAA+C;AACvE,EAAA,MAAM,IAAA,GAAO,UAAA,CAAW,CAAA,EAAG,GAAG,CAAA;AAC9B,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAA,CAAO,CAAC,CAAA;AAER,EAAA,MAAM,MAAA,uBAAa,GAAA,EAAqB;AACxC,EAAA,IAAI,IAAA,CAAK,CAAC,CAAA,KAAM,GAAA,EAAK;AACnB,IAAA,OAAA,CAAQ,CAAC,CAAA;AACT,IAAA,OAAO,EAAE,IAAI,IAAA,EAAM,KAAA,EAAO,EAAE,IAAA,EAAM,SAAA,EAAW,QAAO,EAAE;AAAA,EACxD;AAEA,EAAA,WAAS;AACP,IAAA,MAAA,CAAO,CAAC,CAAA;AACR,IAAA,MAAM,IAAA,GAAO,eAAe,CAAC,CAAA;AAC7B,IAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,IAAA,MAAA,CAAO,CAAC,CAAA;AACR,IAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,CAAA,EAAG,GAAG,CAAA;AAC/B,IAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,IAAA,MAAM,IAAA,GAAO,WAAW,CAAC,CAAA;AACzB,IAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,IAAA,MAAA,CAAO,GAAA,CAAI,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,KAAK,CAAA;AACjC,IAAA,MAAA,CAAO,CAAC,CAAA;AACR,IAAA,MAAM,CAAA,GAAI,KAAK,CAAC,CAAA;AAChB,IAAA,IAAI,MAAM,GAAA,EAAK;AACb,MAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,IACX,CAAA,MAAA,IAAW,MAAM,GAAA,EAAK;AACpB,MAAA,OAAA,CAAQ,CAAC,CAAA;AACT,MAAA,OAAO,EAAE,IAAI,IAAA,EAAM,KAAA,EAAO,EAAE,IAAA,EAAM,SAAA,EAAW,QAAO,EAAE;AAAA,IACxD,CAAA,MAAO;AACL,MAAA,OAAO,IAAA,CAAK,CAAA,EAAG,CAAA,+BAAA,EAAkC,CAAC,CAAA,CAAA,CAAG,CAAA;AAAA,IACvD;AAAA,EACF;AACF,CAAA;AAEA,IAAM,eAAA,GAAkB,CAAC,CAAA,KAA+C;AACtE,EAAA,MAAM,IAAA,GAAO,UAAA,CAAW,CAAA,EAAG,GAAG,CAAA;AAC9B,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAA,CAAO,CAAC,CAAA;AAER,EAAA,MAAM,QAAmB,EAAC;AAC1B,EAAA,IAAI,IAAA,CAAK,CAAC,CAAA,KAAM,GAAA,EAAK;AACnB,IAAA,OAAA,CAAQ,CAAC,CAAA;AACT,IAAA,OAAO,EAAE,IAAI,IAAA,EAAM,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,OAAM,EAAE;AAAA,EACtD;AAEA,EAAA,WAAS;AACP,IAAA,MAAM,IAAA,GAAO,WAAW,CAAC,CAAA;AACzB,IAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,IAAA,KAAA,CAAM,IAAA,CAAK,KAAK,KAAK,CAAA;AACrB,IAAA,MAAA,CAAO,CAAC,CAAA;AACR,IAAA,MAAM,CAAA,GAAI,KAAK,CAAC,CAAA;AAChB,IAAA,IAAI,MAAM,GAAA,EAAK;AACb,MAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,IACX,CAAA,MAAA,IAAW,MAAM,GAAA,EAAK;AACpB,MAAA,OAAA,CAAQ,CAAC,CAAA;AACT,MAAA,OAAO,EAAE,IAAI,IAAA,EAAM,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,OAAM,EAAE;AAAA,IACtD,CAAA,MAAO;AACL,MAAA,OAAO,IAAA,CAAK,CAAA,EAAG,CAAA,+BAAA,EAAkC,CAAC,CAAA,CAAA,CAAG,CAAA;AAAA,IACvD;AAAA,EACF;AACF,CAAA;AAQO,IAAM,KAAA,GAAQ,CAAC,KAAA,KAA+C;AACnE,EAAA,MAAM,CAAA,GAAgB,EAAE,IAAA,EAAM,KAAA,EAAO,KAAK,CAAA,EAAE;AAC5C,EAAA,MAAA,CAAO,CAAC,CAAA;AACR,EAAA,IAAI,CAAA,CAAE,GAAA,IAAO,CAAA,CAAE,IAAA,CAAK,MAAA,EAAQ;AAC1B,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,KAAA,EAAO,EAAE,OAAA,EAAS,gBAAA,EAAkB,MAAA,EAAQ,CAAA,EAAE,EAAE;AAAA,EACtE;AACA,EAAA,OAAO,WAAW,CAAC,CAAA;AACrB;AAKO,IAAM,QAAQ,CAAC,MAAA,EAAsC,GAAA,KAC1D,MAAA,CAAO,IAAI,GAAG;;;ACrHhB,IAAM,KAAK,CAAI,KAAA,MAAoB,EAAE,EAAA,EAAI,MAAM,KAAA,EAAM,CAAA;AAErD,IAAM,SAAA,GAAY,CAChB,IAAA,EACA,IAAA,EACA,SACA,aAAA,MACc;AAAA,EACd,EAAA,EAAI,KAAA;AAAA,EACJ,KAAA,EACE,aAAA,KAAkB,MAAA,GAAY,EAAE,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ,GAAI,EAAE,IAAA,EAAM,IAAA,EAAM,OAAA,EAAS,aAAA;AACnF,CAAA,CAAA;AAEA,IAAM,YAAA,GAAe,CAAC,IAAA,EAAc,GAAA,EAAa,aAC/C,SAAA,CAAU,eAAA,EAAiB,CAAA,EAAG,IAAI,IAAI,GAAG,CAAA,CAAA,EAAI,CAAA,wBAAA,EAA2B,GAAG,KAAK,QAAQ,CAAA;AAE1F,IAAM,SAAA,GAAY,CAAC,IAAA,EAAc,QAAA,KAC/B,SAAA,CAAU,cAAc,IAAA,EAAM,CAAA,SAAA,EAAY,QAAQ,CAAA,CAAA,EAAI,QAAQ,CAAA;AAEhE,IAAM,aAAA,GAAgB,CAAC,IAAA,EAAc,GAAA,EAAa,QAAA,KAChD,SAAA,CAAU,iBAAA,EAAmB,CAAA,EAAG,IAAI,CAAA,MAAA,CAAA,EAAU,CAAA,uBAAA,EAA0B,GAAG,KAAK,QAAQ,CAAA;AAE1F,IAAMC,QAAAA,GAAU,WAAA;AAChB,IAAMC,OAAAA,GAAS,UAAA;AAMf,IAAM,aAAA,GAAgB,CAAC,IAAA,EAAc,CAAA,KACnC,CAAA,CAAE,IAAA,KAAS,SAAA,GAAY,EAAA,CAAG,CAAA,CAAE,MAAM,CAAA,GAAI,SAAA,CAAU,MAAM,aAAa,CAAA;AAMrE,IAAM,oBAAA,GAAuB,CAAC,CAAA,KAAwB;AACpD,EAAA,IAAI,CAAA,CAAE,SAAS,SAAA,EAAW;AACxB,IAAA,MAAM,CAAA,GAAI,CAAA,CAAE,MAAA,CAAO,GAAA,CAAI,OAAO,CAAA;AAC9B,IAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,GAAA,CAAI,OAAO,CAAA;AAClC,IAAA,IAAI,CAAA,KAAM,UAAa,CAAA,CAAE,IAAA,KAAS,aAAa,CAAA,CAAE,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,MAAA,EAAW;AAC1F,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,OAAO,CAAA;AACT,CAAA;AAEA,IAAM,aAAA,GAAgB,CAAC,IAAA,EAAc,IAAA,KAA6B;AAChE,EAAA,MAAM,CAAA,GAAI,qBAAqB,IAAI,CAAA;AACnC,EAAA,OAAO,CAAA,CAAE,SAAS,SAAA,GAAY,EAAA,CAAG,EAAE,KAAK,CAAA,GAAI,SAAA,CAAU,IAAA,EAAM,aAAa,CAAA;AAC3E,CAAA;AAEA,IAAM,WAAA,GAAc,CAAC,IAAA,EAAc,IAAA,KAA8B;AAC/D,EAAA,MAAM,CAAA,GAAI,qBAAqB,IAAI,CAAA;AACnC,EAAA,OAAO,CAAA,CAAE,SAAS,OAAA,GAAU,EAAA,CAAG,EAAE,KAAK,CAAA,GAAI,SAAA,CAAU,IAAA,EAAM,cAAc,CAAA;AAC1E,CAAA;AAEA,IAAM,YAAA,GAAe,CAAC,IAAA,EAAc,IAAA,KAA6B;AAC/D,EAAA,MAAM,CAAA,GAAI,qBAAqB,IAAI,CAAA;AACnC,EAAA,IAAI,EAAE,IAAA,KAAS,SAAA,EAAW,OAAO,EAAA,CAAG,EAAE,KAAK,CAAA;AAC3C,EAAA,IAAI,CAAA,CAAE,SAAS,SAAA,EAAW;AACxB,IAAA,IAAI,CAAA,CAAE,KAAA,KAAU,KAAA,EAAO,OAAO,GAAG,GAAG,CAAA;AACpC,IAAA,IAAI,CAAA,CAAE,KAAA,KAAU,UAAA,EAAY,OAAO,GAAG,QAAQ,CAAA;AAC9C,IAAA,IAAI,CAAA,CAAE,KAAA,KAAU,WAAA,EAAa,OAAO,GAAG,CAAA,QAAS,CAAA;AAAA,EAClD;AACA,EAAA,OAAO,SAAA,CAAU,MAAM,mEAAmE,CAAA;AAC5F,CAAA;AAEA,IAAM,UAAA,GAAa,CAAC,IAAA,EAAc,IAAA,KAA6B;AAC7D,EAAA,MAAM,CAAA,GAAI,qBAAqB,IAAI,CAAA;AACnC,EAAA,OAAO,CAAA,CAAE,IAAA,KAAS,SAAA,GAAY,EAAA,CAAG,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,KAAK,CAAC,CAAA,GAAI,SAAA,CAAU,IAAA,EAAM,uBAAuB,CAAA;AACjG,CAAA;AAEA,IAAM,YAAA,GAAe,CAAC,IAAA,EAAc,CAAA,KAClC,CAAA,CAAE,IAAA,KAAS,QAAA,GAAW,EAAA,CAAG,CAAA,CAAE,KAAK,CAAA,GAAI,SAAA,CAAU,MAAM,YAAY,CAAA;AAElE,IAAM,WAAW,CAAC,MAAA,EAAgB,GAAA,KAAqC,MAAA,CAAO,IAAI,GAAG,CAAA;AAErF,IAAM,YAAA,GAAe,CAAC,IAAA,EAAc,MAAA,EAAgB,KAAa,QAAA,KAAiC;AAChG,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,GAAG,CAAA;AACxB,EAAA,OAAO,CAAA,KAAM,SAAY,YAAA,CAAa,IAAA,EAAM,KAAK,QAAQ,CAAA,GAAI,GAAG,CAAC,CAAA;AACnE,CAAA;AAEA,IAAM,oBAAA,GAAuB,CAAC,IAAA,EAAc,MAAA,KAA8B;AACxE,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,OAAO,CAAA;AAC5B,EAAA,IAAI,CAAA,KAAM,MAAA;AACR,IAAA,OAAO,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,qDAAqD,CAAA;AAC1F,EAAA,OAAO,CAAA,CAAE,IAAA,KAAS,SAAA,GACd,EAAA,CAAG,CAAA,CAAE,KAAK,CAAA,GACV,SAAA,CAAU,CAAA,EAAG,IAAI,CAAA,MAAA,CAAA,EAAU,2BAA2B,CAAA;AAC5D,CAAA;AAGA,IAAM,WAAW,CACf,IAAA,EACA,MAAA,EACA,GAAA,EACA,UACA,GAAA,KACS;AACT,EAAA,MAAM,CAAA,GAAI,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,KAAK,QAAQ,CAAA;AAClD,EAAA,OAAO,CAAA,CAAE,EAAA,GAAK,GAAA,CAAI,CAAA,EAAG,IAAI,IAAI,GAAG,CAAA,CAAA,EAAI,CAAA,CAAE,KAAK,CAAA,GAAI,CAAA;AACjD,CAAA;AAGA,IAAM,QAAA,GAAW,CACf,IAAA,EACA,MAAA,EACA,KACA,GAAA,KACqB;AACrB,EAAA,MAAM,CAAA,GAAI,QAAA,CAAS,MAAA,EAAQ,GAAG,CAAA;AAC9B,EAAA,IAAI,CAAA,KAAM,MAAA,EAAW,OAAO,EAAA,CAAG,MAAS,CAAA;AACxC,EAAA,OAAO,IAAI,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,GAAG,IAAI,CAAC,CAAA;AAChC,CAAA;AAMA,IAAM,YAAA,GAAe,CACnB,MAAA,EACA,SAAA,EACA,OAAA,KACwB;AACxB,EAAA,MAAM,CAAA,GAAI,QAAA,CAAS,MAAA,EAAQ,SAAS,CAAA;AACpC,EAAA,IAAI,CAAA,KAAM,QAAW,OAAO,CAAA;AAC5B,EAAA,KAAA,MAAW,KAAK,OAAA,EAAS;AACvB,IAAA,MAAM,CAAA,GAAI,QAAA,CAAS,MAAA,EAAQ,CAAC,CAAA;AAC5B,IAAA,IAAI,CAAA,KAAM,QAAW,OAAO,CAAA;AAAA,EAC9B;AACA,EAAA,OAAO,MAAA;AACT,CAAA;AAGA,IAAM,kBAAkB,CACtB,IAAA,EACA,QACA,SAAA,EACA,OAAA,EACA,UACA,GAAA,KACS;AACT,EAAA,MAAM,CAAA,GAAI,YAAA,CAAa,MAAA,EAAQ,SAAA,EAAW,OAAO,CAAA;AACjD,EAAA,IAAI,MAAM,MAAA,EAAW,OAAO,YAAA,CAAa,IAAA,EAAM,WAAW,QAAQ,CAAA;AAClE,EAAA,OAAO,IAAI,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,SAAS,IAAI,CAAC,CAAA;AACtC,CAAA;AAGA,IAAM,kBAAkB,CACtB,IAAA,EACA,MAAA,EACA,SAAA,EACA,SACA,GAAA,KACqB;AACrB,EAAA,MAAM,CAAA,GAAI,YAAA,CAAa,MAAA,EAAQ,SAAA,EAAW,OAAO,CAAA;AACjD,EAAA,IAAI,CAAA,KAAM,MAAA,EAAW,OAAO,EAAA,CAAG,MAAS,CAAA;AACxC,EAAA,OAAO,IAAI,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,SAAS,IAAI,CAAC,CAAA;AACtC,CAAA;AAEA,IAAM,eAAA,GAAkB,CACtB,KAAA,EACA,CAAA,KACW;AACX,EAAA,MAAM,MAAW,EAAC;AAClB,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,MAAA,EAAQ,KAAK,CAAA,EAAG;AACxC,IAAA,MAAM,CAAA,GAAI,CAAA,CAAE,CAAA,EAAG,KAAA,CAAM,CAAC,CAAE,CAAA;AACxB,IAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,IAAA,GAAA,CAAI,IAAA,CAAK,EAAE,KAAK,CAAA;AAAA,EAClB;AACA,EAAA,OAAO,GAAG,GAAG,CAAA;AACf,CAAA;AAIA,IAAM,cAAA,GAAiB,CAAC,CAAA,KAAwB;AAC9C,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,OAAA;AACH,MAAA,OAAO,IAAA;AAAA,IACT,KAAK,SAAA;AACH,MAAA,OAAO,CAAA,CAAE,KAAA;AAAA,IACX,KAAK,OAAA;AACH,MAAA,OAAO,CAAA,CAAE,KAAA;AAAA,IACX,KAAK,SAAA;AACH,MAAA,OAAO,CAAA,CAAE,KAAA;AAAA,IACX,KAAK,QAAA;AACH,MAAA,OAAO,CAAA,CAAE,KAAA,CAAM,GAAA,CAAI,cAAc,CAAA;AAAA,IACnC,KAAK,SAAA,EAAW;AACd,MAAA,MAAM,IAA6B,EAAC;AACpC,MAAA,KAAA,MAAW,CAAC,CAAA,EAAG,CAAC,CAAA,IAAK,CAAA,CAAE,QAAQ,CAAA,CAAE,CAAC,CAAA,GAAI,cAAA,CAAe,CAAC,CAAA;AACtD,MAAA,OAAO,CAAA;AAAA,IACT;AAAA;AAEJ,CAAA;AAcA,IAAM,oBAAA,GAAuB,CAAC,IAAA,KAC5B,SAAA;AAAA,EACE,YAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA;AAEF,IAAM,UAAA,GAAa,CAAC,IAAA,EAAc,CAAA,KAA6B;AAC7D,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,OAAA;AACH,MAAA,OAAO,qBAAqB,IAAI,CAAA;AAAA,IAClC,KAAK,SAAA;AACH,MAAA,OAAO,EAAA,CAAG,EAAE,KAAK,CAAA;AAAA,IACnB,KAAK,OAAA;AACH,MAAA,OAAO,EAAA,CAAG,EAAE,KAAK,CAAA;AAAA,IACnB,KAAK,SAAA;AACH,MAAA,OAAO,EAAA,CAAG,EAAE,KAAK,CAAA;AAAA,IACnB,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,MAAmB,EAAC;AAC1B,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,EAAE,KAAA,CAAM,MAAA,EAAQ,KAAK,CAAA,EAAG;AAC1C,QAAA,MAAM,CAAA,GAAI,UAAA,CAAW,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAA,EAAK,CAAA,CAAE,KAAA,CAAM,CAAC,CAAE,CAAA;AACjD,QAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,QAAA,GAAA,CAAI,IAAA,CAAK,EAAE,KAAK,CAAA;AAAA,MAClB;AACA,MAAA,OAAO,GAAG,GAAG,CAAA;AAAA,IACf;AAAA,IACA,KAAK,SAAA,EAAW;AACd,MAAA,MAAM,MAAiC,EAAC;AACxC,MAAA,KAAA,MAAW,CAAC,CAAA,EAAG,CAAC,CAAA,IAAK,EAAE,MAAA,EAAQ;AAC7B,QAAA,MAAM,IAAI,UAAA,CAAW,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,CAAC,IAAI,CAAC,CAAA;AACtC,QAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,QAAA,GAAA,CAAI,CAAC,IAAI,CAAA,CAAE,KAAA;AAAA,MACb;AACA,MAAA,OAAO,GAAG,GAAG,CAAA;AAAA,IACf;AAAA;AAEJ,CAAA;AAEA,IAAM,aAAA,GAAgB,CAAC,IAAA,EAAc,CAAA,KAA6C;AAChF,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,MAAiC,EAAC;AACxC,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,CAAC,CAAA,IAAK,GAAG,KAAA,EAAO;AAC7B,IAAA,MAAM,IAAI,UAAA,CAAW,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,CAAC,IAAI,CAAC,CAAA;AACtC,IAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,IAAA,GAAA,CAAI,CAAC,IAAI,CAAA,CAAE,KAAA;AAAA,EACb;AACA,EAAA,OAAO,GAAG,GAAG,CAAA;AACf,CAAA;AAIA,IAAM,QAAA,GAAW,CACf,IAAA,EACA,CAAA,EACA,OACA,KAAA,KACS;AACT,EAAA,IAAI,CAAA,CAAE,SAAS,SAAA,EAAW,OAAO,UAAU,IAAA,EAAM,CAAA,aAAA,EAAgB,KAAK,CAAA,CAAA,CAAG,CAAA;AACzE,EAAA,IAAK,KAAA,CAA4B,SAAS,CAAA,CAAE,KAAK,GAAG,OAAO,EAAA,CAAG,EAAE,KAAU,CAAA;AAC1E,EAAA,OAAO,cAAc,IAAA,EAAM,CAAA,CAAE,OAAO,KAAA,CAAM,IAAA,CAAK,KAAK,CAAC,CAAA;AACvD,CAAA;AAEA,IAAM,mBAAA,GAA6D;AAAA;AAAA,EAEjE,GAAA,EAAK,YAAA;AAAA,EACL,GAAA,EAAK,YAAA;AAAA,EACL,MAAA,EAAQ,UAAA;AAAA,EACR,MAAA,EAAQ;AACV,CAAA;AAEA,IAAM,iBAAA,GAAoB,CAAC,CAAA,EAAW,CAAA,KAA+B;AACnE,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,SAAA,IAAa,CAAA,CAAE,KAAA,IAAS,mBAAA;AACrC,IAAA,OAAO,EAAA,CAAG,mBAAA,CAAoB,CAAA,CAAE,KAAK,CAAE,CAAA;AACzC,EAAA,OAAO,SAAS,CAAA,EAAG,CAAA,EAAG,CAAC,UAAA,EAAY,YAAY,GAAY,aAAa,CAAA;AAC1E,CAAA;AAEA,IAAM,kBAAA,GAAqB,CAAC,CAAA,EAAW,CAAA,KAAgC;AAErE,EAAA,IAAI,CAAA,CAAE,SAAS,SAAA,IAAa,CAAA,CAAE,UAAU,SAAA,EAAW,OAAO,GAAG,SAAS,CAAA;AACtE,EAAA,IAAI,CAAA,CAAE,SAAS,SAAA,IAAa,CAAA,CAAE,UAAU,QAAA,EAAU,OAAO,GAAG,UAAU,CAAA;AACtE,EAAA,OAAO,QAAA;AAAA,IACL,CAAA;AAAA,IACA,CAAA;AAAA,IACA,CAAC,SAAA,EAAW,OAAA,EAAS,SAAA,EAAW,SAAA,EAAW,YAAY,MAAM,CAAA;AAAA,IAC7D;AAAA,GACF;AACF,CAAA;AAEA,IAAM,mBAAA,GAAsB,CAAC,CAAA,EAAW,CAAA,KAAiC;AAEvE,EAAA,IAAI,CAAA,CAAE,SAAS,SAAA,IAAa,CAAA,CAAE,UAAU,QAAA,EAAU,OAAO,GAAG,aAAa,CAAA;AACzE,EAAA,OAAO,QAAA;AAAA,IACL,CAAA;AAAA,IACA,CAAA;AAAA,IACA,CAAC,SAAA,EAAW,WAAA,EAAa,UAAA,EAAY,aAAa,CAAA;AAAA,IAClD;AAAA,GACF;AACF,CAAA;AAEA,IAAM,oBAAA,GAAuB,CAAC,CAAA,EAAW,CAAA,KAAkC;AAEzE,EAAA,IAAI,CAAA,CAAE,SAAS,SAAA,IAAa,CAAA,CAAE,UAAU,SAAA,EAAW,OAAO,GAAG,UAAU,CAAA;AACvE,EAAA,OAAO,QAAA,CAAS,GAAG,CAAA,EAAG,CAAC,YAAY,SAAA,EAAW,SAAA,EAAW,MAAM,CAAA,EAAY,gBAAgB,CAAA;AAC7F,CAAA;AAEA,IAAM,kBAAA,GAAqB,CAAC,CAAA,EAAW,CAAA,KACrC,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAC,SAAA,EAAW,QAAA,EAAU,SAAS,CAAA,EAAY,cAAc,CAAA;AAE1E,IAAM,uBAAA,GAA0B,CAAC,CAAA,EAAW,CAAA,KAC1C,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAC,UAAA,EAAY,YAAA,EAAc,MAAM,CAAA,EAAY,mBAAmB,CAAA;AAEjF,IAAM,iBAAA,GAAoB,CAAC,CAAA,EAAW,CAAA,KACpC,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAC,MAAA,EAAQ,MAAA,EAAQ,UAAU,CAAA,EAAY,aAAa,CAAA;AAErE,IAAM,iBAAA,GAAoB,CAAC,CAAA,EAAW,CAAA,KACpC,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAC,QAAA,EAAU,OAAO,CAAA,EAAY,aAAa,CAAA;AAK5D,IAAM,YAAA,GAAsD;AAAA,EAC1D,QAAA,EAAU,SAAA;AAAA,EACV,MAAA,EAAQ,UAAA;AAAA,EACR,QAAA,EAAU,UAAA;AAAA,EACV,OAAA,EAAS;AACX,CAAA;AAEA,IAAM,gBAAA,GAAuD;AAAA,EAC3D,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,MAAA;AAAA,EACN,MAAA,EAAQ,OAAA;AAAA,EACR,KAAA,EAAO;AACT,CAAA;AAQA,IAAM,UAAA,GAAa;AAAA,EACjB,SAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAM,UAAA,GAAa,CAAC,CAAA,EAAW,CAAA,KAA+B;AAC5D,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,SAAA,IAAa,CAAA,CAAE,KAAA,IAAS,YAAA,EAAc,OAAO,EAAA,CAAG,YAAA,CAAa,CAAA,CAAE,KAAK,CAAE,CAAA;AACrF,EAAA,OAAO,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,UAAA,EAAY,aAAa,CAAA;AACjD,CAAA;AAEA,IAAM,YAAA,GAAe,CAAC,CAAA,EAAW,CAAA;AAAA;AAAA;AAAA,EAG/B,QAAA,CAAS,GAAG,CAAA,EAAG,CAAC,WAAW,UAAA,EAAY,UAAU,GAAY,aAAa;AAAA,CAAA;AAE5E,IAAM,cAAA,GAAiB,CAAC,CAAA,EAAW,CAAA,KAA4B;AAC7D,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,SAAA,IAAa,CAAA,CAAE,KAAA,IAAS,gBAAA,EAAkB,OAAO,EAAA,CAAG,gBAAA,CAAiB,CAAA,CAAE,KAAK,CAAE,CAAA;AAM7F,EAAA,IAAI,CAAA,CAAE,SAAS,OAAA,EAAS,OAAO,GAAG,CAAA,CAAE,KAAA,GAAQ,SAAS,QAAQ,CAAA;AAC7D,EAAA,OAAO,QAAA,CAAS,GAAG,CAAA,EAAG,CAAC,SAAS,QAAA,EAAU,MAAM,GAAY,UAAU,CAAA;AACxE,CAAA;AAYA,IAAM,kBAAA,GAAqB,CAAC,CAAA,EAAW,CAAA,KAA2B;AAChE,EAAA,IAAI,EAAE,IAAA,KAAS,OAAA,EAAS,OAAO,EAAA,CAAG,EAAE,KAAK,CAAA;AACzC,EAAA,IAAI,CAAA,CAAE,SAAS,SAAA,EAAW;AACxB,IAAA,IAAI,CAAA,CAAE,KAAA,KAAU,MAAA,IAAU,CAAA,CAAE,KAAA,KAAU,QAAA,IAAY,CAAA,CAAE,KAAA,KAAU,MAAA,EAAQ,OAAO,EAAA,CAAG,IAAI,CAAA;AACpF,IAAA,IAAI,CAAA,CAAE,KAAA,KAAU,QAAA,IAAY,CAAA,CAAE,KAAA,KAAU,WAAW,CAAA,CAAE,KAAA,KAAU,QAAA,IAAY,CAAA,CAAE,KAAA,KAAU,OAAA;AACrF,MAAA,OAAO,GAAG,KAAK,CAAA;AACjB,IAAA,OAAO,SAAA;AAAA,MACL,YAAA;AAAA,MACA,CAAA;AAAA,MACA,CAAA,4BAAA,EAA+B,EAAE,KAAK,CAAA,uKAAA,CAAA;AAAA,MACtC;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,WAAA,CAAY,GAAG,CAAC,CAAA;AACzB,CAAA;AAGA,IAAM,gBAAA,GAAmB,CAAC,CAAA,EAAW,CAAA,KACnC,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAC,OAAA,EAAS,QAAA,EAAU,KAAK,CAAA,EAAY,YAAY,CAAA;AAIlE,IAAM,eAAA,GAAkB,CAAC,CAAA,EAAW,CAAA,KAClC,SAAS,CAAA,EAAG,CAAA,EAAG,CAAC,MAAA,EAAQ,SAAA,EAAW,MAAA,EAAQ,MAAA,EAAQ,SAAS,GAAY,WAAW,CAAA;AAErF,IAAM,eAAA,GAAkB,CAAC,CAAA,EAAW,CAAA,KAClC,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAC,SAAA,EAAW,SAAA,EAAW,YAAY,CAAA,EAAY,WAAW,CAAA;AAE3E,IAAM,eAAA,GAAkB,CAAC,CAAA,EAAW,CAAA,KAClC,SAAS,CAAA,EAAG,CAAA,EAAG,CAAC,MAAA,EAAQ,OAAO,MAAA,EAAQ,KAAA,EAAO,SAAA,EAAW,SAAS,GAAY,WAAW,CAAA;AAE3F,IAAM,sBAAA,GAAyB,CAAC,CAAA,EAAW,CAAA,KACzC,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAC,MAAA,EAAQ,QAAA,EAAU,SAAS,CAAA,EAAY,kBAAkB,CAAA;AAoB3E,IAAM,cAAA,GAAiB,CAAC,CAAA,EAAW,CAAA,KAA4B;AAG7D,EAAA,IAAI,EAAE,IAAA,KAAS,SAAA,EAAW,OAAO,SAAA,CAAU,GAAG,yBAAyB,CAAA;AACvE,EAAA,OAAO,EAAA,CAAG,EAAE,KAAiB,CAAA;AAC/B,CAAA;AAEA,IAAM,gBAAA,GAAmB,CAAC,CAAA,EAAW,CAAA,KACnC,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAC,QAAA,EAAU,WAAA,EAAa,KAAK,CAAA,EAAY,gBAAgB,CAAA;AAI1E,IAAM,gBAAA,GAAmB,CAAC,IAAA,EAAc,CAAA,KAA8B;AACpE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,CAAA,GAAI,oBAAA,CAAqB,IAAA,EAAM,CAAC,CAAA;AACtC,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,QAAQ,EAAE,KAAA;AAAO,IACf,KAAK,MAAA;AACH,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,MAAA,EAAQ,CAAA;AAAA,IAC5B,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,GAAA,GAAM,QAAA,CAAS,CAAA,EAAG,UAAU,CAAA;AAClC,MAAA,IAAI,QAAQ,MAAA,EAAW,OAAO,GAAG,EAAE,IAAA,EAAM,UAAU,CAAA;AACnD,MAAA,MAAM,CAAA,GAAI,UAAA,CAAW,CAAA,EAAG,IAAI,aAAa,GAAG,CAAA;AAC5C,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,UAAU,QAAA,EAAU,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC5D;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,4BAA4B,aAAa,CAAA;AAC7E,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,OAAO,GAAe,EAAE,IAAA,EAAM,YAAY,IAAA,EAAM,CAAA,CAAE,OAAO,CAAA;AAAA,IAC3D;AAAA,IACA,KAAK,SAAA,EAAW;AACd,MAAA,MAAM,GAAA,GAAM,QAAA,CAAS,CAAA,EAAG,UAAU,CAAA;AAClC,MAAA,IAAI,QAAQ,MAAA,EAAW,OAAO,GAAG,EAAE,IAAA,EAAM,WAAW,CAAA;AACpD,MAAA,MAAM,CAAA,GAAI,UAAA,CAAW,CAAA,EAAG,IAAI,aAAa,GAAG,CAAA;AAC5C,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,WAAW,QAAA,EAAU,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC7D;AAAA,IACA,KAAK,mBAAA,EAAqB;AACxB,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,uBAAuB,UAAU,CAAA;AACvE,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,qBAAqB,MAAA,EAAQ,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACrE;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,iBAAiB,aAAa,CAAA;AACpE,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,QAAQ,MAAA,EAAQ,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACxD;AAAA,IACA,KAAK,QAAA;AACH,MAAA,OAAO,GAAG,EAAE,IAAA,EAAM,UAAU,MAAA,EAAQ,MAAMD,UAAS,CAAA;AAAA,IACrD;AACE,MAAA,OAAO,aAAA;AAAA,QACL,IAAA;AAAA,QACA,CAAA,CAAE,KAAA;AAAA,QACF;AAAA,OACF;AAAA;AAEN,CAAA;AAIA,IAAM,YAAA,GAAe,CAAC,IAAA,EAAc,CAAA,KAA0B;AAC5D,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,CAAA,GAAI,oBAAA,CAAqB,IAAA,EAAM,CAAC,CAAA;AACtC,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,QAAQ,EAAE,KAAA;AAAO,IACf,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,GAAA,GAAM,QAAA,CAAS,CAAA,EAAG,UAAU,CAAA;AAClC,MAAA,IAAI,QAAQ,MAAA,EAAW,OAAO,GAAG,EAAE,IAAA,EAAM,UAAU,CAAA;AACnD,MAAA,MAAM,CAAA,GAAI,UAAA,CAAW,CAAA,EAAG,IAAI,aAAa,GAAG,CAAA;AAC5C,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,UAAU,QAAA,EAAU,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC5D;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,iCAAiC,aAAa,CAAA;AACrF,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAW,EAAE,IAAA,EAAM,YAAY,OAAA,EAAS,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACrE;AAAA,IACA,KAAK,SAAA,EAAW;AACd,MAAA,MAAM,GAAA,GAAM,QAAA,CAAS,CAAA,EAAG,UAAU,CAAA;AAClC,MAAA,IAAI,QAAQ,MAAA,EAAW,OAAO,GAAG,EAAE,IAAA,EAAM,WAAW,CAAA;AACpD,MAAA,MAAM,CAAA,GAAI,UAAA,CAAW,CAAA,EAAG,IAAI,aAAa,GAAG,CAAA;AAC5C,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,WAAW,QAAA,EAAU,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC7D;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,CAAA,GAAI,QAAA;AAAA,QAAS,IAAA;AAAA,QAAM,CAAA;AAAA,QAAG,WAAA;AAAA,QAAa,kBAAA;AAAA,QAAoB,CAAC,CAAA,EAAG,CAAA,KAC/D,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAC,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,MAAM,CAAA,EAAY,WAAW;AAAA,OAC1E;AACA,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAW,EAAE,IAAA,EAAM,QAAQ,SAAA,EAAW,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACnE;AAAA,IACA,KAAK,cAAA,EAAgB;AACnB,MAAA,MAAM,CAAA,GAAI,QAAA;AAAA,QAAS,IAAA;AAAA,QAAM,CAAA;AAAA,QAAG,MAAA;AAAA,QAAQ,yBAAA;AAAA,QAA2B,CAAC,GAAG,CAAA,KACjE,QAAA;AAAA,UACE,CAAA;AAAA,UACA,CAAA;AAAA,UACA,CAAC,QAAA,EAAU,QAAA,EAAU,QAAQ,KAAA,EAAO,MAAA,EAAQ,SAAS,MAAM,CAAA;AAAA,UAC3D;AAAA;AACF,OACF;AACA,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAW,EAAE,IAAA,EAAM,gBAAgB,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACtE;AAAA,IACA;AACE,MAAA,OAAO,aAAA,CAAc,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,mDAAmD,CAAA;AAAA;AAE7F,CAAA;AAEA,IAAM,kBAAA,GAAqB,CAAC,IAAA,EAAc,CAAA,KAAgC;AACxE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,CAAA,GAAI,oBAAA,CAAqB,IAAA,EAAM,CAAC,CAAA;AACtC,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,QAAQ,EAAE,KAAA;AAAO,IACf,KAAK,SAAA;AACH,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAC/B,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,KAAA,EAAO,4BAA4B,aAAa,CAAA;AAC5E,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAiB,EAAE,IAAA,EAAM,YAAY,GAAA,EAAK,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACvE;AAAA,IACA;AACE,MAAA,OAAO,aAAA,CAAc,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,oBAAoB,CAAA;AAAA;AAE9D,CAAA;AAEA,IAAM,iBAAA,GAAoB,CAAC,IAAA,EAAc,CAAA,KAA+B;AACtE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,CAAA,GAAI,oBAAA,CAAqB,IAAA,EAAM,CAAC,CAAA;AACtC,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,QAAQ,EAAE,KAAA;AAAO,IACf,KAAK,MAAA;AACH,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,MAAA,EAAQ,CAAA;AAAA,IAC5B,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,uBAAuB,UAAU,CAAA;AACvE,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,SAAS,MAAA,EAAQ,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACzD;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,gBAAgB,YAAY,CAAA;AAClE,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,QAAQ,MAAA,EAAQ,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACxD;AAAA,IACA;AACE,MAAA,OAAO,aAAA,CAAc,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,qBAAqB,CAAA;AAAA;AAE/D,CAAA;AAEA,IAAM,gBAAA,GAAmB,CAAC,IAAA,EAAc,CAAA,KAA8B;AACpE,EAAA,MAAM,CAAA,GAAI,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAC/B,EAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,CAAA,CAAE,KAAmB,CAAA,GAAI,CAAA;AAC5C,CAAA;AAIA,IAAM,uBAAA,GAA0B,CAAC,IAAA,EAAc,CAAA,KAAqC;AAClF,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,CAAA,GAAI,oBAAA,CAAqB,IAAA,EAAM,CAAC,CAAA;AACtC,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,QAAQ,EAAE,KAAA;AAAO,IACf,KAAK,QAAA;AACH,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,QAAA,EAAU,CAAA;AAAA,IAC9B,KAAK,UAAA;AACH,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,UAAA,EAAY,CAAA;AAAA,IAChC,KAAK,gBAAA;AACH,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,gBAAA,EAAkB,CAAA;AAAA,IACtC,KAAK,YAAA,EAAc;AACjB,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,cAAA,EAAgB,iCAAiC,UAAU,CAAA;AACvF,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,cAAc,YAAA,EAAc,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACpE;AAAA,IACA;AACE,MAAA,OAAO,aAAA,CAAc,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,iDAAiD,CAAA;AAAA;AAE3F,CAAA;AAcA,IAAM,MAAM,CAAI,KAAA,MAAqB,EAAE,EAAA,EAAI,MAAM,KAAA,EAAM,CAAA;AACvD,IAAM,OAAO,CAAC,KAAA,MAA8B,EAAE,EAAA,EAAI,OAAO,KAAA,EAAM,CAAA;AAE/D,IAAM,oBAAA,GAA8C;AAAA,EAClD,KAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA;AACA,IAAM,OAAA,GAAU;AAAA,EACd,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA;AACA,IAAM,UAAA,GAAa;AAAA,EACjB,KAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA;AACA,IAAM,OAAA,GAAU;AAAA,EACd,KAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA;AACA,IAAM,UAAA,GAAa,CAAC,OAAA,EAAS,MAAA,EAAQ,SAAS,OAAO,CAAA;AACrD,IAAM,aAAa,CAAC,WAAA,EAAa,QAAQ,KAAA,EAAO,MAAA,EAAQ,YAAY,aAAa,CAAA;AAEjF,IAAM,OAAA,GAAU,CAAC,CAAA,KAAuB;AACtC,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,SAAA;AACH,MAAA,OAAO,QAAA;AAAA,IACT,KAAK,SAAA;AACH,MAAA,OAAO,QAAA;AAAA,IACT,KAAK,OAAA;AACH,MAAA,OAAO,MAAA;AAAA,IACT,KAAK,QAAA;AACH,MAAA,OAAO,OAAA;AAAA,IACT,KAAK,SAAA;AACH,MAAA,OAAO,QAAA;AAAA,IACT,KAAK,OAAA;AACH,MAAA,OAAO,MAAA;AAAA;AAEb,CAAA;AAEA,IAAM,OAAA,GAAU,CAAC,CAAA,KACf,CAAA,CAAE,SAAS,SAAA,GAAY,GAAA,CAAI,CAAA,CAAE,MAAM,CAAA,GAAI,IAAA,CAAK,kCAAA,GAAqC,OAAA,CAAQ,CAAC,CAAC,CAAA;AAC7F,IAAM,MAAA,GAAS,CAAC,CAAA,EAAW,CAAA,KAA2B;AACpD,EAAA,MAAM,CAAA,GAAI,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA;AACjB,EAAA,OAAO,MAAM,MAAA,GAAY,IAAA,CAAK,oBAAoB,CAAC,CAAA,GAAI,IAAI,CAAC,CAAA;AAC9D,CAAA;AAGA,IAAM,aAAA,GAAgB,CAAC,CAAA,EAAW,SAAA,EAAmB,KAAA,KAA+B;AAClF,EAAA,MAAM,CAAA,GAAI,CAAA,CAAE,GAAA,CAAI,SAAS,CAAA;AACzB,EAAA,MAAM,CAAA,GAAI,CAAA,CAAE,GAAA,CAAI,KAAK,CAAA;AACrB,EAAA,IAAI,CAAA,KAAM,UAAa,CAAA,KAAM,MAAA;AAC3B,IAAA,OAAO,IAAA,CAAK,CAAA,iBAAA,EAAoB,SAAS,CAAA,kBAAA,EAAqB,KAAK,CAAA,mBAAA,CAAqB,CAAA;AAC1F,EAAA,MAAM,IAAI,CAAA,IAAK,CAAA;AACf,EAAA,OAAO,MAAM,MAAA,GAAY,IAAA,CAAK,oBAAoB,SAAS,CAAA,GAAI,IAAI,CAAC,CAAA;AACtE,CAAA;AACA,IAAM,IAAA,GAAO,CAAC,CAAA,KACZ,CAAA,CAAE,SAAS,SAAA,GAAY,GAAA,CAAI,CAAA,CAAE,KAAK,CAAA,GAAI,IAAA,CAAK,kCAAA,GAAqC,OAAA,CAAQ,CAAC,CAAC,CAAA;AAC5F,IAAM,IAAA,GAAO,CAAC,CAAA,KACZ,CAAA,CAAE,SAAS,QAAA,GAAW,GAAA,CAAI,CAAA,CAAE,KAAK,CAAA,GAAI,IAAA,CAAK,iCAAA,GAAoC,OAAA,CAAQ,CAAC,CAAC,CAAA;AAC1F,IAAM,OAAO,CAAC,CAAA,KACZ,CAAA,CAAE,IAAA,KAAS,YACP,GAAA,CAAI,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,KAAK,CAAC,CAAA,GACvB,KAAK,+BAAA,GAAkC,OAAA,CAAQ,CAAC,CAAC,CAAA;AAEvD,IAAM,KAAA,GAAQ,CAAO,EAAA,EAAkB,EAAA,KAAiC;AACtE,EAAA,MAAM,MAAW,EAAC;AAClB,EAAA,KAAA,MAAW,KAAK,EAAA,EAAI;AAClB,IAAA,MAAM,CAAA,GAAI,GAAG,CAAC,CAAA;AACd,IAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,IAAA,GAAA,CAAI,IAAA,CAAK,EAAE,KAAK,CAAA;AAAA,EAClB;AACA,EAAA,OAAO,IAAI,GAAG,CAAA;AAChB,CAAA;AAEA,IAAM,SAAA,GAAY,CAAC,CAAA,EAAW,CAAA,KAA0B;AACtD,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,CAAA,EAAG,CAAC,CAAA;AACrB,EAAA,OAAO,CAAA,CAAE,EAAA,GAAK,IAAA,CAAK,CAAA,CAAE,KAAK,CAAA,GAAI,CAAA;AAChC,CAAA;AACA,IAAM,QAAA,GAAW,CAAC,CAAA,KAA6B;AAC7C,EAAA,MAAM,CAAA,GAAI,KAAK,CAAC,CAAA;AAChB,EAAA,OAAO,EAAE,EAAA,GAAK,KAAA,CAAM,CAAA,CAAE,KAAA,EAAO,IAAI,CAAA,GAAI,CAAA;AACvC,CAAA;AAGA,IAAM,aAAA,GAAgB,CAAC,CAAA,KAAyB;AAC9C,EAAA,MAAM,EAAA,GAAK,QAAQ,CAAC,CAAA;AACpB,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,KAAK,iCAAiC,CAAA;AACzD,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,EAAA,GAAK,CAAA,CAAE,GAAA,CAAI,OAAO,CAAA;AACxB,EAAA,IAAI,OAAO,MAAA,IAAa,EAAA,CAAG,SAAS,SAAA,EAAW,OAAO,KAAK,0BAA0B,CAAA;AACrF,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,IAAI,MAAM,MAAA,EAAQ,OAAO,IAAI,EAAE,IAAA,EAAM,QAAQ,CAAA;AAC7C,EAAA,MAAM,CAAA,GAAI,CAAA,CAAE,GAAA,CAAI,OAAO,CAAA;AACvB,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,CAAA,uBAAA,EAA0B,CAAC,CAAA,iBAAA,CAAmB,CAAA;AACpE,EAAA,IAAI,CAAA,KAAM,QAAW,OAAO,QAAA;AAC5B,EAAA,QAAQ,CAAA;AAAG,IACT,KAAK,KAAA;AACH,MAAA,OAAO,CAAA,CAAE,IAAA,KAAS,SAAA,GAAY,GAAA,CAAI,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,KAAK,CAAA,EAAG,CAAA,GAAI,QAAA;AAAA,IACnF,KAAK,OAAA;AACH,MAAA,OAAO,CAAA,CAAE,IAAA,KAAS,SAAA,GAAY,GAAA,CAAI,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,QAAA;AAAA,IACzE,KAAK,MAAA;AACH,MAAA,OAAO,CAAA,CAAE,IAAA,KAAS,OAAA,GAAU,GAAA,CAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,QAAA;AAAA,IACtE,KAAK,KAAA;AACH,MAAA,OAAO,CAAA,CAAE,IAAA,KAAS,SAAA,GAAY,GAAA,CAAI,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,QAAA;AAAA,IACvE,KAAK,MAAA;AACH,MAAA,OAAO,CAAA,CAAE,IAAA,KAAS,SAAA,GAAY,GAAA,CAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,QAAA;AAAA,IACxE,KAAK,WAAA;AACH,MAAA,OAAO,CAAA,CAAE,IAAA,KAAS,SAAA,GAAY,GAAA,CAAI,EAAE,IAAA,EAAM,WAAA,EAAa,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,QAAA;AAAA,IAC7E;AACE,MAAA,OAAO,QAAA;AAAA;AAEb,CAAA;AAQA,IAAM,iBAAA,GAAoB,CAAC,IAAA,KAAyB;AAClD,EAAA,IAAI,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,IAAA,GAAO,KAAK,CAAA;AAClC,EAAA,IAAI,IAAA,GAAO,KAAA,GAAQ,CAAA,EAAG,IAAA,IAAQ,CAAA;AAC9B,EAAA,MAAM,GAAA,GAAM,OAAO,IAAA,GAAO,KAAA;AAC1B,EAAA,MAAM,IAAI,IAAA,GAAO,MAAA;AACjB,EAAA,MAAM,GAAA,GAAM,KAAK,KAAA,CAAA,CAAO,CAAA,IAAK,IAAI,CAAA,GAAI,CAAA,GAAI,UAAU,MAAM,CAAA;AACzD,EAAA,MAAM,GAAA,GAAM,IAAI,GAAA,GAAM,MAAA;AACtB,EAAA,MAAM,MAAM,IAAA,CAAK,KAAA;AAAA,IAAA,CACd,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,GAAA,GAAM,IAAI,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,GAAA,GAAM,KAAK,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,GAAA,GAAM,MAAM,CAAA,IAAK;AAAA,GACxF;AACA,EAAA,MAAM,GAAA,GAAM,GAAA,IAAO,GAAA,GAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,GAAA,GAAM,CAAC,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,GAAA,GAAM,GAAG,CAAA,CAAA;AACzE,EAAA,MAAM,KAAK,IAAA,CAAK,KAAA,CAAA,CAAO,CAAA,GAAI,GAAA,GAAM,KAAK,GAAG,CAAA;AACzC,EAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,KAAA,CAAA,CAAO,MAAM,EAAA,GAAK,CAAA,IAAK,CAAC,CAAA,GAAI,CAAA;AACnD,EAAA,MAAM,KAAA,GAAQ,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,IAAI,EAAA,GAAK,CAAA;AACtC,EAAA,MAAM,OAAO,GAAA,GAAM,GAAA,GAAM,GAAA,IAAO,KAAA,IAAS,IAAI,CAAA,GAAI,CAAA,CAAA;AACjD,EAAA,MAAM,EAAA,GAAK,CAAC,CAAA,KAAsB,MAAA,CAAO,CAAC,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAC3D,EAAA,MAAM,EAAA,GAAK,CAAC,CAAA,KAAsB,MAAA,CAAO,CAAC,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAC3D,EAAA,OAAO,CAAA,EAAG,EAAA,CAAG,IAAI,CAAC,IAAI,EAAA,CAAG,KAAK,CAAC,CAAA,CAAA,EAAI,EAAA,CAAG,GAAG,CAAC,CAAA,CAAA,EAAI,GAAG,IAAA,CAAK,KAAA,CAAM,GAAA,GAAM,IAAI,CAAC,CAAC,CAAA,CAAA,EAAI,EAAA,CAAG,KAAK,KAAA,CAAO,GAAA,GAAM,IAAA,GAAQ,EAAE,CAAC,CAAC,CAAA,CAAA,EAAI,EAAA,CAAG,GAAA,GAAM,EAAE,CAAC,CAAA,CAAA,CAAA;AAC/H,CAAA;AAWA,IAAM,gBAAA,GAAmB,CAAC,OAAA,EAAiB,EAAA,EAAgB,CAAA,KAAyB;AAClF,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,CAAA,QAAA,EAAW,OAAO,CAAA,YAAA,EAAe,EAAE,CAAA,YAAA,EAAe,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAE,CAAA;AACpF,EAAA,QAAQ,EAAA;AAAI,IACV,KAAK,KAAA;AACH,MAAA,OAAO,CAAA,CAAE,IAAA,KAAS,SAAA,GAAY,GAAA,CAAI,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,KAAK,CAAA,EAAG,CAAA,GAAI,QAAA;AAAA,IACnF,KAAK,OAAA;AACH,MAAA,OAAO,CAAA,CAAE,IAAA,KAAS,SAAA,GAAY,GAAA,CAAI,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,QAAA;AAAA,IACzE,KAAK,MAAA;AACH,MAAA,OAAO,CAAA,CAAE,IAAA,KAAS,OAAA,GAAU,GAAA,CAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,QAAA;AAAA,IACtE,KAAK,QAAA;AACH,MAAA,OAAO,CAAA,CAAE,IAAA,KAAS,SAAA,GAAY,GAAA,CAAI,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,QAAA;AAAA,IACvE,KAAK,MAAA;AACH,MAAA,OAAO,CAAA,CAAE,IAAA,KAAS,SAAA,GAAY,GAAA,CAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,QAAA;AAAA,IACxE,KAAK,WAAA,EAAa;AAChB,MAAA,IAAI,CAAA,CAAE,IAAA,KAAS,SAAA,EAAW,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,WAAA,EAAa,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,CAAA;AAG1E,MAAA,IAAI,CAAA,CAAE,IAAA,KAAS,SAAA,IAAa,CAAA,CAAE,UAAU,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,KAAK,KAAK,IAAA,CAAK,GAAA,CAAI,CAAA,CAAE,KAAK,IAAI,IAAA,EAAM;AACvF,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,CAAA,CAAE,KAAK,CAAA,IAAK,IAAA,GAAkB,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,KAAA,GAAQ,GAAI,IAAI,CAAA,CAAE,KAAA;AACnF,QAAA,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,WAAA,EAAa,OAAO,iBAAA,CAAkB,IAAI,GAAG,CAAA;AAAA,MAClE;AACA,MAAA,OAAO,QAAA;AAAA,IACT;AAAA,IACA;AACE,MAAA,OAAO,QAAA;AAAA;AAEb,CAAA;AAEA,IAAM,eAAA,GAAkB,CAAC,CAAA,KAAkC;AACzD,EAAA,MAAM,CAAA,GAAI,KAAK,CAAC,CAAA;AAChB,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,OAAO,KAAA,CAAM,CAAA,CAAE,KAAA,EAAO,CAAC,CAAA,KAAM;AAC3B,IAAA,MAAM,EAAA,GAAK,QAAQ,CAAC,CAAA;AACpB,IAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,IAAA,MAAM,IAAA,GAAO,SAAA,CAAU,EAAA,CAAG,KAAA,EAAO,MAAM,CAAA;AACvC,IAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,IAAA,MAAM,EAAA,GAAK,SAAA,CAAU,EAAA,CAAG,KAAA,EAAO,MAAM,CAAA;AACrC,IAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,IAAA,IAAI,CAAC,oBAAA,CAAqB,QAAA,CAAS,EAAA,CAAG,KAAmB,CAAA,EAAG;AAC1D,MAAA,OAAO,IAAA;AAAA,QACL,wBAAwB,EAAA,CAAG,KAAK,uBAAuB,oBAAA,CAAqB,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,OACxF;AAAA,IACF;AACA,IAAA,OAAO,GAAA,CAAiB,EAAE,IAAA,EAAM,IAAA,CAAK,OAAO,IAAA,EAAM,EAAA,CAAG,OAAqB,CAAA;AAAA,EAC5E,CAAC,CAAA;AACH,CAAA;AAKA,IAAM,WAAA,GAAc,CAClB,IAAA,EACA,KAAA,KACiD;AACjD,EAAA,IAAI,KAAA,CAAM,SAAS,QAAA,EAAU;AAC3B,IAAA,OAAO,GAAA,CAA8C;AAAA,MACnD,KAAA,CAAM,KAAA;AAAA,MACN,KAAA,CAAM,MAAM,GAAA,CAAI,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAA,EAAK,CAAa;AAAA,KAClE,CAAA;AAAA,EACH;AACA,EAAA,MAAM,EAAA,GAAK,QAAQ,KAAK,CAAA;AACxB,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,EAAA,CAAG,KAAA,EAAO,QAAQ,CAAA;AACzC,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,OAAA,CAAQ,KAAK,CAAA;AACjC,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AAOvB,EAAA,MAAM,SAAA,GAAY,EAAA,CAAG,KAAA,CAAM,GAAA,CAAI,UAAU,CAAA;AACzC,EAAA,IAAI,cAAc,MAAA,EAAW;AAC3B,IAAA,OAAO,GAAA,CAA8C;AAAA,MACnD,MAAA,CAAO,KAAA;AAAA,MACP,MAAA,CAAO,MAAM,GAAA,CAAI,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAA,EAAK,CAAa;AAAA,KACnE,CAAA;AAAA,EACH;AACA,EAAA,MAAM,QAAA,GAAW,KAAK,SAAS,CAAA;AAC/B,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,OAAO,IAA8C,CAAC,MAAA,CAAO,KAAA,EAAO,QAAA,CAAS,KAAK,CAAC,CAAA;AACrF,CAAA;AAEA,IAAM,gBAAA,GAAmB,CAAC,UAAA,EAAoB,IAAA,EAAc,EAAA,KAAmC;AAC7F,EAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,GAAA,CAAI,IAAI,CAAA;AACjC,EAAA,IAAI,KAAA,KAAU,MAAA,EAAW,OAAO,IAAA,CAAK,4BAA4B,IAAI,CAAA;AACrE,EAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,IAAA,EAAM,KAAK,CAAA;AACrC,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,MAAA,GAAS,EAAqB,OAAO,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA,EAAE;AAC1D,EAAA,MAAM,QAAA,GAAW,EAAqB,OAAO,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA,EAAE;AAC5D,EAAA,IAAI,MAAA,CAAO,KAAA,CAAM,MAAA,KAAW,QAAA,CAAS,MAAM,MAAA,EAAQ;AACjD,IAAA,OAAO,IAAA;AAAA,MACL,CAAA,QAAA,EAAW,IAAI,CAAA,oCAAA,EAAuC,MAAA,CAAO,MAAM,MAAM,CAAA,IAAA,EAAO,QAAA,CAAS,KAAA,CAAM,MAAM,CAAA,CAAA;AAAA,KACvG;AAAA,EACF;AACA,EAAA,MAAM,QAAgB,EAAC;AACvB,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,OAAO,KAAA,CAAM,MAAA,EAAQ,KAAK,CAAA,EAAG;AAC/C,IAAA,MAAM,CAAA,GAAI,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA;AAC1B,IAAA,IAAI,CAAA,CAAE,SAAS,OAAA,EAAS;AACtB,MAAA,OAAO,KAAK,CAAA,WAAA,EAAc,IAAI,iCAAiC,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAE,CAAA;AAAA,IAC7E;AACA,IAAA,IAAI,CAAC,EAAE,KAAA,EAAO;AACZ,MAAA,KAAA,CAAM,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,CAAA;AAAA,IAC7B,CAAA,MAAO;AACL,MAAA,MAAM,IAAI,gBAAA,CAAiB,IAAA,EAAM,IAAI,MAAA,CAAO,KAAA,CAAM,CAAC,CAAE,CAAA;AACrD,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,KAAA,CAAM,IAAA,CAAK,EAAE,KAAK,CAAA;AAAA,IACpB;AAAA,EACF;AACA,EAAA,OAAO,IAAgB,EAAE,IAAA,EAAM,IAAA,EAAM,EAAA,EAAI,OAAO,CAAA;AAClD,CAAA;AAKA,IAAM,eAAA,GAAkB,CAAC,IAAA,EAAc,MAAA,KAA+C;AACpF,EAAA,IAAI,OAAO,MAAA,KAAW,CAAA;AACpB,IAAA,OAAO,IAAA;AAAA,MACL,cAAc,IAAI,CAAA,4GAAA;AAAA,KACpB;AACF,EAAA,MAAM,GAAA,GAAM,CAAC,CAAA,KACX,CAAA,CAAE,SAAS,SAAA,GACP,MAAA,CAAO,UAAU,CAAA,CAAE,KAAK,IACtB,KAAA,GACA,OAAA,GACF,EAAE,IAAA,KAAS,OAAA,GACT,SACA,CAAA,CAAE,IAAA,KAAS,YACT,QAAA,GACA,OAAA;AACV,EAAA,MAAM,IAAA,GAAO,CAAC,GAAG,IAAI,IAAI,MAAA,CAAO,GAAA,CAAI,GAAG,CAAC,CAAC,CAAA;AACzC,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,IAAK,IAAA,CAAK,CAAC,CAAA,KAAM,KAAA,EAAO,OAAO,GAAA,CAAgB,KAAK,CAAA;AACxE,EAAA,IAAI,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,KAAM,CAAA,KAAM,KAAA,IAAS,CAAA,KAAM,OAAO,CAAA,EAAG,OAAO,GAAA,CAAgB,OAAO,CAAA;AACnF,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,IAAK,IAAA,CAAK,CAAC,CAAA,KAAM,MAAA,EAAQ,OAAO,GAAA,CAAgB,MAAM,CAAA;AAC1E,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,IAAK,IAAA,CAAK,CAAC,CAAA,KAAM,QAAA,EAAU,OAAO,GAAA,CAAgB,QAAQ,CAAA;AAC9E,EAAA,OAAO,IAAA;AAAA,IACL,cAAc,IAAI,CAAA,2DAAA,EAA8D,IAAA,CAAK,IAAA,CAAK,IAAI,CAAC,CAAA,iDAAA;AAAA,GACjG;AACF,CAAA;AAIA,IAAM,gBAAA,GAAmB,CAAC,CAAA,KAA+B;AACvD,EAAA,MAAM,EAAA,GAAK,QAAQ,CAAC,CAAA;AACpB,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,OAAA,GAAU,EAAA,CAAG,KAAA,CAAM,GAAA,CAAI,QAAQ,CAAA;AACrC,EAAA,IAAI,MAAA;AACJ,EAAA,IAAI,YAAY,MAAA,EAAW;AACzB,IAAA,MAAA,GAAS,gBAAgB,OAAO,CAAA;AAChC,IAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AAAA,EACzB;AACA,EAAA,MAAM,KAAA,GAAQ,EAAA,CAAG,KAAA,CAAM,GAAA,CAAI,KAAK,CAAA;AAChC,EAAA,IAAI,UAAU,MAAA,EAAW;AACvB,IAAA,IAAI,MAAA,KAAW,MAAA;AACb,MAAA,OAAO,IAAA;AAAA,QACL;AAAA,OACF;AACF,IAAA,MAAM,CAAA,GAAI,KAAK,KAAK,CAAA;AACpB,IAAA,OAAO,CAAA,CAAE,EAAA,GAAK,GAAA,CAAgB,EAAE,IAAA,EAAM,OAAO,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,EAClE;AACA,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,EAAA,CAAG,KAAA,EAAO,SAAS,CAAA;AACxC,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA;AAClC,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,IAAI,WAAW,MAAA,EAAW;AACxB,IAAA,MAAM,QAAQ,CAAC,GAAG,OAAO,KAAA,CAAM,IAAA,EAAM,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,MAAO,CAAA,GAAI,CAAA,GAAI,KAAK,CAAA,GAAI,CAAA,GAAI,IAAI,CAAE,CAAA;AAClF,IAAA,MAAM,UAAyB,EAAC;AAChC,IAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,CAAM,GAAA,CAAI,IAAI,CAAA;AACnC,MAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,IAAA,EAAM,KAAK,CAAA;AACrC,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,MAAM,KAAK,eAAA,CAAgB,IAAA,EAAM,KAAA,CAAM,KAAA,CAAM,CAAC,CAAC,CAAA;AAC/C,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,OAAA,CAAQ,KAAK,EAAE,IAAA,EAAM,IAAA,EAAM,EAAA,CAAG,OAAO,CAAA;AAAA,IACvC;AACA,IAAA,MAAA,GAAS,IAAI,OAAO,CAAA;AAAA,EACtB;AACA,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,MAAM,WAAW,MAAA,CAAO,KAAA;AACxB,EAAA,MAAM,IAAA,GAAO,KAAA,CAAM,QAAA,EAAU,CAAC,CAAA,KAAM,gBAAA,CAAiB,MAAA,CAAO,KAAA,EAAO,CAAA,CAAE,IAAA,EAAM,CAAA,CAAE,IAAI,CAAC,CAAA;AAClF,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,OAAO,GAAA,CAAgB;AAAA,IACrB,IAAA,EAAM,UAAA;AAAA,IACN,OAAO,EAAE,MAAA,EAAQ,QAAA,EAAU,OAAA,EAAS,KAAK,KAAA;AAAM,GAChD,CAAA;AACH,CAAA;AAGA,IAAM,iBAAA,GAAoB,CAAC,CAAA,KAA4B;AACrD,EAAA,MAAM,EAAA,GAAK,QAAQ,CAAC,CAAA;AACpB,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,CAAA,GAAI,SAAA,CAAU,CAAA,EAAG,OAAO,CAAA;AAC9B,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,QAAQ,EAAE,KAAA;AAAO,IACf,KAAK,KAAA,EAAO;AACV,MAAA,MAAM,IAAA,GAAO,SAAA,CAAU,CAAA,EAAG,MAAM,CAAA;AAChC,MAAA,OAAO,IAAA,CAAK,EAAA,GAAK,GAAA,CAAa,EAAE,IAAA,EAAM,OAAO,IAAA,EAAM,IAAA,CAAK,KAAA,EAAO,CAAA,GAAI,IAAA;AAAA,IACrE;AAAA,IACA,KAAK,OAAA,EAAS;AAEZ,MAAA,MAAM,IAAA,GAAO,SAAA,CAAU,CAAA,EAAG,MAAM,CAAA;AAChC,MAAA,OAAO,IAAA,CAAK,EAAA,GAAK,GAAA,CAAa,EAAE,IAAA,EAAM,SAAS,IAAA,EAAM,IAAA,CAAK,KAAA,EAAO,CAAA,GAAI,IAAA;AAAA,IACvE;AAAA,IACA,KAAK,KAAA,EAAO;AACV,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,EAAG,MAAM,CAAA;AAC3B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,IAAA,GAAO,aAAA,CAAc,EAAA,CAAG,KAAK,CAAA;AACnC,MAAA,OAAO,IAAA,CAAK,EAAA,GAAK,GAAA,CAAa,EAAE,IAAA,EAAM,OAAO,IAAA,EAAM,IAAA,CAAK,KAAA,EAAO,CAAA,GAAI,IAAA;AAAA,IACrE;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,EAAA,GAAK,SAAA,CAAU,CAAA,EAAG,IAAI,CAAA;AAC5B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,IAAI,CAAE,OAAA,CAA8B,QAAA,CAAS,EAAA,CAAG,KAAK,CAAA,EAAG;AACtD,QAAA,OAAO,IAAA,CAAK,wBAAwB,EAAA,CAAG,KAAK,uBAAuB,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAAA,MACzF;AACA,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,EAAG,MAAM,CAAA;AAC3B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,IAAA,GAAO,iBAAA,CAAkB,EAAA,CAAG,KAAK,CAAA;AACvC,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,EAAG,OAAO,CAAA;AAC5B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,KAAA,GAAQ,iBAAA,CAAkB,EAAA,CAAG,KAAK,CAAA;AACxC,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,OAAO,GAAA,CAAa;AAAA,QAClB,IAAA,EAAM,QAAA;AAAA,QACN,IAAI,EAAA,CAAG,KAAA;AAAA,QACP,MAAM,IAAA,CAAK,KAAA;AAAA,QACX,OAAO,KAAA,CAAM;AAAA,OACd,CAAA;AAAA,IACH;AAAA,IACA,KAAK,KAAA,EAAO;AACV,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,EAAG,MAAM,CAAA;AAC3B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,CAAA,GAAI,iBAAA,CAAkB,EAAA,CAAG,KAAK,CAAA;AACpC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,GAAA,CAAa,EAAE,IAAA,EAAM,OAAO,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC/D;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,EAAG,OAAO,CAAA;AAC5B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,CAAA,GAAI,IAAA,CAAK,EAAA,CAAG,KAAK,CAAA;AACvB,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,CAAA,CAAE,KAAA,EAAO,iBAAiB,CAAA;AAC9C,MAAA,OAAO,KAAA,CAAM,EAAA,GAAK,GAAA,CAAa,EAAE,IAAA,EAAM,YAAY,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,CAAA,GAAI,KAAA;AAAA,IAC7E;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,EAAG,OAAO,CAAA;AAC5B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,EAAA,GAAK,IAAA,CAAK,EAAA,CAAG,KAAK,CAAA;AACxB,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,EAAA,CAAG,KAAA,EAAO,CAAC,CAAA,KAAM;AACnC,QAAA,MAAM,GAAA,GAAM,QAAQ,CAAC,CAAA;AACrB,QAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,QAAA,MAAM,EAAA,GAAK,MAAA,CAAO,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AACnC,QAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,QAAA,MAAM,CAAA,GAAI,iBAAA,CAAkB,EAAA,CAAG,KAAK,CAAA;AACpC,QAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,QAAA,MAAM,EAAA,GAAK,MAAA,CAAO,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AACnC,QAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,QAAA,MAAM,CAAA,GAAI,iBAAA,CAAkB,EAAA,CAAG,KAAK,CAAA;AACpC,QAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,QAAA,OAAO,GAAA,CAAI,EAAE,IAAA,EAAM,CAAA,CAAE,OAAO,IAAA,EAAM,CAAA,CAAE,OAAO,CAAA;AAAA,MAC7C,CAAC,CAAA;AACD,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,EAAG,MAAM,CAAA;AAC3B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,CAAA,GAAI,iBAAA,CAAkB,EAAA,CAAG,KAAK,CAAA;AACpC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,GAAA,CAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACpF;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,EAAA,GAAK,SAAA,CAAU,CAAA,EAAG,MAAM,CAAA;AAC9B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,IAAI,CAAC,oBAAA,CAAqB,QAAA,CAAS,EAAA,CAAG,KAAmB,CAAA,EAAG;AAC1D,QAAA,OAAO,IAAA;AAAA,UACL,wBAAwB,EAAA,CAAG,KAAK,uBAAuB,oBAAA,CAAqB,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,SACxF;AAAA,MACF;AACA,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,EAAG,MAAM,CAAA;AAC3B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,CAAA,GAAI,iBAAA,CAAkB,EAAA,CAAG,KAAK,CAAA;AACpC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,GAAA,CAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,EAAA,CAAG,KAAA,EAAqB,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC9F;AAAA;AAAA;AAAA;AAAA,IAIA,KAAK,OAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL,KAAK,IAAA,EAAM;AACT,MAAA,MAAM,EAAA,GAAK,SAAA,CAAU,CAAA,EAAG,IAAI,CAAA;AAC5B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,IAAI,CAAE,UAAA,CAAiC,QAAA,CAAS,EAAA,CAAG,KAAK,CAAA,EAAG;AACzD,QAAA,OAAO,IAAA,CAAK,wBAAwB,EAAA,CAAG,KAAK,uBAAuB,UAAA,CAAW,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAAA,MAC5F;AACA,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,EAAG,MAAM,CAAA;AAC3B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,CAAA,GAAI,IAAA,CAAK,EAAA,CAAG,KAAK,CAAA;AACvB,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,MAAM,IAAA,GAAO,KAAA,CAAM,CAAA,CAAE,KAAA,EAAO,iBAAiB,CAAA;AAC7C,MAAA,OAAO,IAAA,CAAK,EAAA,GACR,GAAA,CAAa,EAAE,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,EAAA,CAAG,KAAA,EAAmB,IAAA,EAAM,IAAA,CAAK,KAAA,EAAO,CAAA,GAC1E,IAAA;AAAA,IACN;AAAA,IACA,KAAK,IAAA,EAAM;AAGT,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,EAAG,MAAM,CAAA;AAC3B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,OAAA,GAAU,iBAAA,CAAkB,EAAA,CAAG,KAAK,CAAA;AAC1C,MAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,MAAA,MAAM,EAAA,GAAK,CAAA,CAAE,GAAA,CAAI,OAAO,CAAA;AACxB,MAAA,MAAM,EAAA,GAAK,CAAA,CAAE,GAAA,CAAI,OAAO,CAAA;AACxB,MAAA,IAAI,EAAA,KAAO,UAAa,EAAA,KAAO,MAAA;AAC7B,QAAA,OAAO,IAAA;AAAA,UACL;AAAA,SACF;AACF,MAAA,IAAI,OAAO,MAAA,EAAW;AACpB,QAAA,MAAM,CAAA,GAAI,KAAK,EAAE,CAAA;AACjB,QAAA,OAAO,CAAA,CAAE,EAAA,GAAK,GAAA,CAAa,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,OAAA,CAAQ,KAAA,EAAO,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,MACzF;AACA,MAAA,IAAI,EAAA,KAAO,MAAA,EAAW,OAAO,IAAA,CAAK,sBAAsB,CAAA;AACxD,MAAA,MAAM,EAAA,GAAK,KAAK,EAAE,CAAA;AAClB,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,EAAA,CAAG,KAAA,EAAO,iBAAiB,CAAA;AAC/C,MAAA,OAAO,KAAA,CAAM,EAAA,GACT,GAAA,CAAa,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,CAAQ,KAAA,EAAO,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,CAAA,GACpE,KAAA;AAAA,IACN;AAAA,IACA,KAAK,QAAA,EAAU;AAEb,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,EAAG,MAAM,CAAA;AAC3B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,CAAA,GAAI,iBAAA,CAAkB,EAAA,CAAG,KAAK,CAAA;AACpC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,GAAA,CAAa,EAAE,IAAA,EAAM,UAAU,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAClE;AAAA,IACA,KAAK,UAAA;AAAA,IACL,KAAK,YAAA;AAAA,IACL,KAAK,UAAA,EAAY;AAGf,MAAA,MAAM,EAAA,GAAK,aAAA,CAAc,CAAA,EAAG,MAAA,EAAQ,MAAM,CAAA;AAC1C,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,IAAA,GAAO,iBAAA,CAAkB,EAAA,CAAG,KAAK,CAAA;AACvC,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,MAAM,EAAA,GAAK,aAAA,CAAc,CAAA,EAAG,OAAA,EAAS,OAAO,CAAA;AAC5C,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,KAAA,GAAQ,iBAAA,CAAkB,EAAA,CAAG,KAAK,CAAA;AACxC,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,OAAO,GAAA,CAAa;AAAA,QAClB,IAAA,EAAM,QAAA;AAAA,QACN,IAAI,CAAA,CAAE,KAAA;AAAA,QACN,MAAM,IAAA,CAAK,KAAA;AAAA,QACX,OAAO,KAAA,CAAM;AAAA,OACd,CAAA;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,KAAK,KAAA;AAAA,IACL,KAAK,IAAA,EAAM;AACT,MAAA,MAAM,KAAY,CAAA,CAAE,KAAA;AACpB,MAAA,MAAM,OAAA,GAAU,CAAA,CAAE,GAAA,CAAI,OAAO,CAAA;AAC7B,MAAA,IAAI,YAAY,MAAA,EAAW;AACzB,QAAA,MAAM,CAAA,GAAI,KAAK,OAAO,CAAA;AACtB,QAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,QAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,CAAA,CAAE,KAAA,EAAO,iBAAiB,CAAA;AAC9C,QAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,QAAA,IAAI,KAAA,CAAM,MAAM,MAAA,KAAW,CAAA;AACzB,UAAA,OAAO,IAAA,CAAK,CAAA,WAAA,EAAc,CAAA,CAAE,KAAK,CAAA,kCAAA,CAAoC,CAAA;AACvE,QAAA,MAAM,CAAC,KAAA,EAAO,GAAG,IAAI,IAAI,KAAA,CAAM,KAAA;AAC/B,QAAA,OAAO,GAAA;AAAA,UACL,IAAA,CAAK,MAAA,CAAgB,CAAC,GAAA,EAAK,OAAO,EAAE,IAAA,EAAM,QAAA,EAAU,EAAA,EAAI,IAAA,EAAM,GAAA,EAAK,KAAA,EAAO,CAAA,KAAM,KAAM;AAAA,SACxF;AAAA,MACF;AACA,MAAA,MAAM,EAAA,GAAK,aAAA,CAAc,CAAA,EAAG,MAAA,EAAQ,MAAM,CAAA;AAC1C,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,IAAA,GAAO,iBAAA,CAAkB,EAAA,CAAG,KAAK,CAAA;AACvC,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,MAAM,EAAA,GAAK,aAAA,CAAc,CAAA,EAAG,OAAA,EAAS,OAAO,CAAA;AAC5C,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,KAAA,GAAQ,iBAAA,CAAkB,EAAA,CAAG,KAAK,CAAA;AACxC,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,OAAO,GAAA,CAAa,EAAE,IAAA,EAAM,QAAA,EAAU,EAAA,EAAI,IAAA,EAAM,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,CAAA;AAAA,IAClF;AAAA;AAAA;AAAA;AAAA,IAIA,KAAK,IAAA;AAAA,IACL,KAAK,IAAA;AAAA,IACL,KAAK,IAAA;AAAA,IACL,KAAK,IAAA;AAAA,IACL,KAAK,IAAA;AAAA,IACL,KAAK,IAAA,EAAM;AACT,MAAA,MAAM,EAAA,GAAK,aAAA,CAAc,CAAA,EAAG,MAAA,EAAQ,MAAM,CAAA;AAC1C,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,IAAA,GAAO,iBAAA,CAAkB,EAAA,CAAG,KAAK,CAAA;AACvC,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,MAAM,EAAA,GAAK,aAAA,CAAc,CAAA,EAAG,OAAA,EAAS,OAAO,CAAA;AAC5C,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,KAAA,GAAQ,iBAAA,CAAkB,EAAA,CAAG,KAAK,CAAA;AACxC,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,OAAO,GAAA,CAAa;AAAA,QAClB,IAAA,EAAM,QAAA;AAAA,QACN,IAAI,CAAA,CAAE,KAAA;AAAA,QACN,MAAM,IAAA,CAAK,KAAA;AAAA,QACX,OAAO,KAAA,CAAM;AAAA,OACd,CAAA;AAAA,IACH;AAAA,IACA,SAAS;AAKP,MAAA,IAAK,UAAA,CAAiC,QAAA,CAAS,CAAA,CAAE,KAAK,CAAA,EAAG;AACvD,QAAA,MAAM,KAAK,CAAA,CAAE,KAAA;AACb,QAAA,MAAM,MAAA,GAAS,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AAC3B,QAAA,IAAI,WAAW,MAAA,EAAW;AACxB,UAAA,MAAM,CAAA,GAAI,KAAK,MAAM,CAAA;AACrB,UAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,UAAA,MAAM,IAAA,GAAO,KAAA,CAAM,CAAA,CAAE,KAAA,EAAO,iBAAiB,CAAA;AAC7C,UAAA,OAAO,IAAA,CAAK,EAAA,GAAK,GAAA,CAAa,EAAE,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,IAAA,EAAM,IAAA,CAAK,KAAA,EAAO,CAAA,GAAI,IAAA;AAAA,QAC3E;AACA,QAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,EAAG,MAAM,CAAA;AAC3B,QAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,QAAA,MAAM,CAAA,GAAI,iBAAA,CAAkB,EAAA,CAAG,KAAK,CAAA;AACpC,QAAA,OAAO,CAAA,CAAE,EAAA,GAAK,GAAA,CAAa,EAAE,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,IAAA,EAAM,CAAC,CAAA,CAAE,KAAK,CAAA,EAAG,CAAA,GAAI,CAAA;AAAA,MACvE;AACA,MAAA,OAAO,IAAA;AAAA,QACL,CAAA,qBAAA,EAAwB,EAAE,KAAK,CAAA,yFAAA;AAAA,OACjC;AAAA,IACF;AAAA;AAEJ,CAAA;AAEA,IAAM,cAAA,GAAiB,CAAC,CAAA,KAA4B;AAClD,EAAA,MAAM,EAAA,GAAK,QAAQ,CAAC,CAAA;AACpB,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,CAAA,GAAI,SAAA,CAAU,EAAA,CAAG,KAAA,EAAO,GAAG,CAAA;AACjC,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,MAAM,CAAA,GAAI,SAAA,CAAU,EAAA,CAAG,KAAA,EAAO,GAAG,CAAA;AACjC,EAAA,OAAO,CAAA,CAAE,EAAA,GAAK,GAAA,CAAa,EAAE,CAAA,EAAG,CAAA,CAAE,KAAA,EAAO,CAAA,EAAG,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAC3D,CAAA;AAEA,IAAM,aAAA,GAAgB,CAAC,CAAA,KAAwB;AAG7C,EAAA,MAAM,EAAA,GAAK,QAAQ,CAAC,CAAA;AACpB,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,MAAA,GAAS,aAAA,CAAc,EAAA,CAAG,KAAA,EAAO,QAAQ,IAAI,CAAA;AACnD,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA;AAC9B,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,IAAA,GAAO,aAAA,CAAc,EAAA,CAAG,KAAA,EAAO,MAAM,IAAI,CAAA;AAC/C,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA;AAC7B,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,GAAA,GAAM,KAAA,CAAM,KAAA,KAAU,KAAA,GAAQ,SAAS,KAAA,CAAM,KAAA;AACnD,EAAA,IAAI,CAAE,OAAA,CAA8B,QAAA,CAAS,GAAG,CAAA,EAAG;AACjD,IAAA,OAAO,IAAA,CAAK,wBAAwB,GAAG,CAAA,oBAAA,EAAuB,QAAQ,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAAA,EACpF;AACA,EAAA,MAAM,IAAA,GAAO,aAAA,CAAc,EAAA,CAAG,KAAA,EAAO,MAAM,QAAQ,CAAA;AACnD,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,EAAA,GAAK,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA;AAC1B,EAAA,OAAO,EAAA,CAAG,EAAA,GAAK,GAAA,CAAS,EAAE,IAAA,EAAM,IAAA,CAAK,KAAA,EAAO,EAAA,EAAI,GAAA,EAAc,EAAA,EAAI,EAAA,CAAG,KAAA,EAAO,CAAA,GAAI,EAAA;AAClF,CAAA;AAEA,IAAM,eAAA,GAAkB,CAAC,CAAA,KAA4B;AAEnD,EAAA,MAAM,EAAA,GAAK,QAAQ,CAAC,CAAA;AACpB,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,EAAA,CAAG,KAAA,EAAO,OAAO,QAAQ,CAAA;AACrD,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AAC5B,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AAEpB,EAAA,MAAM,KAAA,GAAQ,GAAG,KAAA,CAAM,GAAA,CAAI,KAAK,CAAA,IAAK,EAAA,CAAG,KAAA,CAAM,GAAA,CAAI,WAAW,CAAA;AAC7D,EAAA,MAAM,MAAA,GAAS,EAAA,CAAG,KAAA,CAAM,GAAA,CAAI,YAAY,CAAA;AACxC,EAAA,MAAM,SAAA,GAAY,CAAC,EAAA,CAAG,KAAA,CAAM,GAAA,CAAI,KAAK,CAAA,EAAG,EAAA,CAAG,KAAA,CAAM,GAAA,CAAI,WAAW,CAAA,EAAG,MAAM,CAAA,CAAE,MAAA;AAAA,IACzE,CAAC,MAAM,CAAA,KAAM;AAAA,GACf,CAAE,MAAA;AACF,EAAA,IAAI,SAAA,GAAY,CAAA;AACd,IAAA,OAAO,IAAA;AAAA,MACL;AAAA,KACF;AACF,EAAA,IAAI,WAAW,MAAA,EAAW;AACxB,IAAA,IAAI,MAAA,CAAO,IAAA,KAAS,OAAA,EAAS,OAAO,KAAK,gDAAgD,CAAA;AACzF,IAAA,OAAO,GAAA,CAAa,EAAE,GAAA,EAAK,GAAA,CAAI,KAAA,EAAO,KAAK,MAAA,CAAO,KAAA,GAAQ,MAAA,GAAS,KAAA,EAAO,CAAA;AAAA,EAC5E;AACA,EAAA,IAAI,KAAA,KAAU,MAAA,EAAW,OAAO,GAAA,CAAa,EAAE,KAAK,GAAA,CAAI,KAAA,EAAO,GAAA,EAAK,KAAA,EAAO,CAAA;AAC3E,EAAA,MAAM,GAAA,GAAM,KAAK,KAAK,CAAA;AACtB,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AAEpB,EAAA,OAAO,GAAA,CAAa,EAAE,GAAA,EAAK,GAAA,CAAI,KAAA,EAAO,GAAA,EAAK,GAAA,CAAI,KAAA,KAAU,MAAA,GAAS,MAAA,GAAS,KAAA,EAAO,CAAA;AACpF,CAAA;AAGA,IAAM,mBAAA,GAAsB,CAAC,CAAA,KAA8B;AACzD,EAAA,MAAM,EAAA,GAAK,QAAQ,CAAC,CAAA;AACpB,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,CAAA,GAAI,SAAA,CAAU,CAAA,EAAG,OAAO,CAAA;AAC9B,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,QAAQ,EAAE,KAAA;AAAO,IACf,KAAK,QAAA,EAAU;AAIb,MAAA,MAAM,GAAA,GAAM,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AACxB,MAAA,MAAM,GAAA,GAAM,CAAA,CAAE,GAAA,CAAI,WAAW,CAAA;AAC7B,MAAA,IAAI,GAAA,KAAQ,UAAa,GAAA,KAAQ,MAAA;AAC/B,QAAA,OAAO,KAAK,qEAAqE,CAAA;AACnF,MAAA,MAAM,KAAK,GAAA,IAAO,GAAA;AAClB,MAAA,IAAI,OAAO,MAAA,EAAW;AACpB,QAAA,MAAM,IAAA,GAAO,kBAAkB,EAAE,CAAA;AACjC,QAAA,OAAO,IAAA,CAAK,EAAA,GAAK,GAAA,CAAe,EAAE,IAAA,EAAM,UAAU,IAAA,EAAM,IAAA,CAAK,KAAA,EAAO,CAAA,GAAI,IAAA;AAAA,MAC1E;AACA,MAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,GAAA,CAAI,QAAQ,CAAA;AAC5B,MAAA,MAAM,IAAA,GAAO,CAAA,CAAE,GAAA,CAAI,IAAI,CAAA;AACvB,MAAA,IAAI,KAAA,KAAU,MAAA,IAAa,IAAA,KAAS,MAAA,EAAW;AAC7C,QAAA,MAAM,GAAA,GAAM,KAAK,KAAK,CAAA;AACtB,QAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,QAAA,MAAM,EAAA,GAAK,KAAK,IAAI,CAAA;AACpB,QAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,QAAA,IAAI,CAAE,OAAA,CAA8B,QAAA,CAAS,EAAA,CAAG,KAAK,CAAA;AACnD,UAAA,OAAO,IAAA,CAAK,wBAAwB,EAAA,CAAG,KAAK,uBAAuB,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AACzF,QAAA,MAAM,OAAA,GAAU,CAAA,CAAE,GAAA,CAAI,OAAO,CAAA;AAC7B,QAAA,MAAM,OAAA,GAAU,CAAA,CAAE,GAAA,CAAI,OAAO,CAAA;AAC7B,QAAA,IAAI,OAAA,KAAY,UAAa,OAAA,KAAY,MAAA;AACvC,UAAA,OAAO,IAAA;AAAA,YACL;AAAA,WACF;AACF,QAAA,IAAI,GAAA;AACJ,QAAA,IAAI,YAAY,MAAA,EAAW;AACzB,UAAA,MAAM,KAAA,GAAQ,KAAK,OAAO,CAAA;AAC1B,UAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,UAAA,GAAA,GAAM,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,MAAM,KAAA,EAAM;AAAA,QAC3C,CAAA,MAAA,IAAW,YAAY,MAAA,EAAW;AAChC,UAAA,IAAI,QAAQ,IAAA,KAAS,SAAA;AACnB,YAAA,GAAA,GAAM,EAAE,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,EAAE,MAAM,KAAA,EAAO,KAAA,EAAO,OAAA,CAAQ,KAAA,EAAM,EAAE;AAAA,eAAA,IAC1D,QAAQ,IAAA,KAAS,SAAA;AACxB,YAAA,GAAA,GAAM,MAAA,CAAO,SAAA,CAAU,OAAA,CAAQ,KAAK,CAAA,GAChC,EAAE,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,OAAA,CAAQ,KAAA,EAAM,EAAE,GAC3D,EAAE,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,OAAA,CAAQ,KAAA,EAAM,EAAE;AAAA,eAAA,IAC1D,QAAQ,IAAA,KAAS,OAAA;AACxB,YAAA,GAAA,GAAM,EAAE,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,EAAE,MAAM,MAAA,EAAQ,KAAA,EAAO,OAAA,CAAQ,KAAA,EAAM,EAAE;AAAA;AAElE,YAAA,OAAO,IAAA;AAAA,cACL;AAAA,aACF;AAAA,QACJ,CAAA;AACE,UAAA,OAAO,IAAA;AAAA,YACL;AAAA,WACF;AACF,QAAA,OAAO,GAAA,CAAe;AAAA,UACpB,IAAA,EAAM,QAAA;AAAA,UACN,IAAA,EAAM;AAAA,YACJ,IAAA,EAAM,QAAA;AAAA,YACN,IAAI,EAAA,CAAG,KAAA;AAAA,YACP,MAAM,EAAE,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,IAAI,KAAA,EAAM;AAAA,YACrC,KAAA,EAAO;AAAA;AACT,SACD,CAAA;AAAA,MACH;AACA,MAAA,OAAO,IAAA;AAAA,QACL;AAAA,OACF;AAAA,IACF;AAAA,IACA,KAAK,SAAA,EAAW;AACd,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,EAAG,MAAM,CAAA;AAC3B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,CAAA,GAAI,IAAA,CAAK,EAAA,CAAG,KAAK,CAAA;AACvB,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,MAAM,IAAA,GAAO,KAAA,CAAM,CAAA,CAAE,KAAA,EAAO,cAAc,CAAA;AAC1C,MAAA,OAAO,IAAA,CAAK,EAAA,GAAK,GAAA,CAAe,EAAE,IAAA,EAAM,WAAW,IAAA,EAAM,IAAA,CAAK,KAAA,EAAO,CAAA,GAAI,IAAA;AAAA,IAC3E;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,IAAA,GAAO,SAAA,CAAU,CAAA,EAAG,MAAM,CAAA;AAChC,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,EAAG,MAAM,CAAA;AAC3B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,IAAA,GAAO,iBAAA,CAAkB,EAAA,CAAG,KAAK,CAAA;AACvC,MAAA,OAAO,IAAA,CAAK,EAAA,GACR,GAAA,CAAe,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,IAAA,CAAK,KAAA,EAAO,IAAA,EAAM,IAAA,CAAK,KAAA,EAAO,CAAA,GACrE,IAAA;AAAA,IACN;AAAA,IACA,KAAK,SAAA,EAAW;AAEd,MAAA,MAAM,EAAA,GAAK,aAAA,CAAc,CAAA,EAAG,MAAA,EAAQ,IAAI,CAAA;AACxC,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,IAAA,GAAO,QAAA,CAAS,EAAA,CAAG,KAAK,CAAA;AAC9B,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,MAAM,EAAA,GAAK,aAAA,CAAc,CAAA,EAAG,MAAA,EAAQ,cAAc,CAAA;AAClD,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,EAAA,GAAK,IAAA,CAAK,EAAA,CAAG,KAAK,CAAA;AACxB,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,IAAA,GAAO,KAAA,CAAM,EAAA,CAAG,KAAA,EAAO,aAAa,CAAA;AAC1C,MAAA,OAAO,IAAA,CAAK,EAAA,GACR,GAAA,CAAe,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,IAAA,CAAK,KAAA,EAAO,IAAA,EAAM,IAAA,CAAK,KAAA,EAAO,CAAA,GACtE,IAAA;AAAA,IACN;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,EAAG,QAAQ,CAAA;AAC7B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,MAAA,GAAS,gBAAA,CAAiB,EAAA,CAAG,KAAK,CAAA;AACxC,MAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,EAAG,IAAI,CAAA;AACzB,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,EAAA,GAAK,IAAA,CAAK,EAAA,CAAG,KAAK,CAAA;AACxB,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,EAAA,GAAK,KAAA,CAAM,EAAA,CAAG,KAAA,EAAO,cAAc,CAAA;AACzC,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,GAAA,GAAM,SAAA,CAAU,CAAA,EAAG,KAAK,CAAA;AAC9B,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,IAAI,CAAE,UAAA,CAAiC,QAAA,CAAS,GAAA,CAAI,KAAK,CAAA,EAAG;AAC1D,QAAA,OAAO,IAAA;AAAA,UACL,wBAAwB,GAAA,CAAI,KAAK,uBAAuB,UAAA,CAAW,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,SAC/E;AAAA,MACF;AACA,MAAA,OAAO,GAAA,CAAe;AAAA,QACpB,IAAA,EAAM,MAAA;AAAA,QACN,QAAQ,MAAA,CAAO,KAAA;AAAA,QACf,IAAI,EAAA,CAAG,KAAA;AAAA,QACP,KAAK,GAAA,CAAI;AAAA,OACV,CAAA;AAAA,IACH;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,EAAG,aAAa,CAAA;AAClC,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,WAAA,GAAc,QAAA,CAAS,EAAA,CAAG,KAAK,CAAA;AACrC,MAAA,IAAI,CAAC,WAAA,CAAY,EAAA,EAAI,OAAO,WAAA;AAC5B,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,EAAG,SAAS,CAAA;AAC9B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,EAAA,GAAK,IAAA,CAAK,EAAA,CAAG,KAAK,CAAA;AACxB,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,OAAA,GAAU,KAAA,CAAM,EAAA,CAAG,KAAA,EAAO,eAAe,CAAA;AAC/C,MAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,MAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,CAAA,EAAG,IAAI,CAAA;AAC/B,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AAEtB,MAAA,MAAM,EAAA,GAAK,EAAqB,KAAA,EAAO,MAAM,KAAA,KAAU,QAAA,GAAW,UAAA,GAAa,KAAA,CAAM,KAAA,EAAM;AAC3F,MAAA,IAAI,CAAE,UAAA,CAAiC,QAAA,CAAS,EAAA,CAAG,KAAK,CAAA,EAAG;AACzD,QAAA,OAAO,IAAA,CAAK,wBAAwB,EAAA,CAAG,KAAK,uBAAuB,UAAA,CAAW,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAAA,MAC5F;AACA,MAAA,MAAM,EAAA,GAAK,SAAA,CAAU,CAAA,EAAG,IAAI,CAAA;AAC5B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,OAAA,GAAU,SAAA,CAAU,CAAA,EAAG,IAAI,CAAA;AACjC,MAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,MAAA,OAAO,GAAA,CAAe;AAAA,QACpB,IAAA,EAAM,QAAA;AAAA,QACN,IAAA,EAAM;AAAA,UACJ,aAAa,WAAA,CAAY,KAAA;AAAA,UACzB,SAAS,OAAA,CAAQ,KAAA;AAAA,UACjB,IAAI,EAAA,CAAG,KAAA;AAAA,UACP,IAAI,EAAA,CAAG,KAAA;AAAA,UACP,IAAI,OAAA,CAAQ;AAAA;AACd,OACD,CAAA;AAAA,IACH;AAAA,IACA,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,EAAG,OAAO,CAAA;AAC5B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,EAAA,CAAG,KAAK,CAAA;AAC/B,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,MAAM,EAAA,GAAK,SAAA,CAAU,CAAA,EAAG,IAAI,CAAA;AAC5B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,MAAA,GAAS,SAAA,CAAU,CAAA,EAAG,QAAQ,CAAA;AACpC,MAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,MAAA,MAAM,GAAA,GAAM,SAAA,CAAU,CAAA,EAAG,KAAK,CAAA;AAC9B,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,IAAI,CAAE,OAAA,CAA8B,QAAA,CAAS,GAAA,CAAI,KAAK,CAAA,EAAG;AACvD,QAAA,OAAO,IAAA,CAAK,wBAAwB,GAAA,CAAI,KAAK,uBAAuB,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAAA,MAC1F;AACA,MAAA,OAAO,GAAA,CAAe;AAAA,QACpB,IAAA,EAAM,OAAA;AAAA,QACN,IAAA,EAAM,EAAE,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,EAAA,EAAI,EAAA,CAAG,KAAA,EAAO,MAAA,EAAQ,MAAA,CAAO,KAAA,EAAO,GAAA,EAAK,IAAI,KAAA;AAAe,OACzF,CAAA;AAAA,IACH;AAAA,IACA,KAAK,SAAA,EAAW;AACd,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,EAAG,QAAQ,CAAA;AAC7B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,MAAA,GAAS,QAAA,CAAS,EAAA,CAAG,KAAK,CAAA;AAChC,MAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,EAAG,WAAW,CAAA;AAChC,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,SAAA,GAAY,QAAA,CAAS,EAAA,CAAG,KAAK,CAAA;AACnC,MAAA,OAAO,SAAA,CAAU,EAAA,GACb,GAAA,CAAe,EAAE,IAAA,EAAM,SAAA,EAAW,MAAA,EAAQ,MAAA,CAAO,KAAA,EAAO,SAAA,EAAW,SAAA,CAAU,KAAA,EAAO,CAAA,GACpF,SAAA;AAAA,IACN;AAAA,IACA,KAAK,MAAA,EAAQ;AAEX,MAAA,MAAM,EAAA,GAAK,aAAA,CAAc,CAAA,EAAG,IAAA,EAAM,MAAM,CAAA;AACxC,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,EAAA,GAAK,IAAA,CAAK,EAAA,CAAG,KAAK,CAAA;AACxB,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,EAAA,GAAK,KAAA,CAAM,EAAA,CAAG,KAAA,EAAO,eAAe,CAAA;AAC1C,MAAA,OAAO,EAAA,CAAG,EAAA,GAAK,GAAA,CAAe,EAAE,IAAA,EAAM,QAAQ,EAAA,EAAI,EAAA,CAAG,KAAA,EAAO,CAAA,GAAI,EAAA;AAAA,IAClE;AAAA,IACA,KAAK,UAAA;AACH,MAAA,OAAO,GAAA,CAAe,EAAE,IAAA,EAAM,UAAA,EAAY,CAAA;AAAA,IAC5C,KAAK,OAAA,EAAS;AAEZ,MAAA,MAAM,EAAA,GAAK,aAAA,CAAc,CAAA,EAAG,GAAA,EAAK,OAAO,CAAA;AACxC,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,CAAA,GAAI,IAAA,CAAK,EAAA,CAAG,KAAK,CAAA;AACvB,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,MAAM,EAAA,GAAK,CAAA,CAAE,GAAA,CAAI,QAAQ,CAAA;AACzB,MAAA,MAAM,SAAS,EAAA,KAAO,MAAA,GAAY,IAAI,CAAC,CAAA,GAAI,KAAK,EAAE,CAAA;AAClD,MAAA,OAAO,MAAA,CAAO,EAAA,GACV,GAAA,CAAe,EAAE,IAAA,EAAM,OAAA,EAAS,CAAA,EAAG,CAAA,CAAE,KAAA,EAAO,MAAA,EAAQ,MAAA,CAAO,KAAA,EAAO,CAAA,GAClE,MAAA;AAAA,IACN;AAAA,IACA,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,EAAG,QAAQ,CAAA;AAC7B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,MAAA,GAAS,gBAAA,CAAiB,EAAA,CAAG,KAAK,CAAA;AACxC,MAAA,OAAO,MAAA,CAAO,EAAA,GAAK,GAAA,CAAe,EAAE,IAAA,EAAM,SAAS,MAAA,EAAQ,MAAA,CAAO,KAAA,EAAO,CAAA,GAAI,MAAA;AAAA,IAC/E;AAAA,IACA;AACE,MAAA,OAAO,IAAA;AAAA,QACL,CAAA,qBAAA,EAAwB,EAAE,KAAK,CAAA,gHAAA;AAAA,OACjC;AAAA;AAEN,CAAA;AAEA,IAAM,kBAAA,GAAqB,CAAC,CAAA,KAAgC;AAC1D,EAAA,IAAI,CAAA,CAAE,SAAS,QAAA,EAAU;AACvB,IAAA,OAAO,KAAK,+DAA+D,CAAA;AAAA,EAC7E;AACA,EAAA,OAAO,KAAA,CAAM,CAAA,CAAE,KAAA,EAAO,mBAAmB,CAAA;AAC3C,CAAA;AAOA,IAAM,gBAAA,GAAmB,CAAC,IAAA,EAAc,CAAA,KAA+B;AACrE,EAAA,IAAI,EAAE,IAAA,KAAS,QAAA,EAAU,OAAO,SAAA,CAAU,MAAM,2BAA2B,CAAA;AAC3E,EAAA,OAAO,eAAA,CAAgB,CAAA,CAAE,KAAA,EAAO,CAAC,GAAG,EAAA,KAAO;AACzC,IAAA,MAAM,CAAA,GAAI,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAA;AACtB,IAAA,MAAM,CAAA,GAAI,aAAA,CAAc,CAAA,EAAG,EAAE,CAAA;AAC7B,IAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,IAAA,MAAM,OAAO,QAAA,CAAS,CAAA,EAAG,EAAE,KAAA,EAAO,MAAA,EAAQ,0BAA0B,aAAa,CAAA;AACjF,IAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,IAAA,MAAM,QAAQ,QAAA,CAAS,CAAA,EAAG,EAAE,KAAA,EAAO,OAAA,EAAS,2BAA2B,aAAa,CAAA;AACpF,IAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,IAAA,OAAO,EAAA,CAAc,EAAE,IAAA,EAAM,IAAA,CAAK,OAAO,KAAA,EAAO,KAAA,CAAM,OAAO,CAAA;AAAA,EAC/D,CAAC,CAAA;AACH,CAAA;AAUA,IAAM,aAAA,GAAgB,CACpB,IAAA,EACA,CAAA,EACA,cAAqD,CAAC,EAAA,EAAI,CAAA,KAAM,EAAA,CAAG,cAAA,CAAe,CAAC,CAAC,CAAA,EACpF,cAAuBC,OAAAA,KACC;AAWxB,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,QAAA,IAAY,CAAA,CAAE,IAAA,KAAS,SAAA,IAAa,CAAA,CAAE,IAAA,KAAS,SAAA,IAAa,CAAA,CAAE,IAAA,KAAS,OAAA,EAAS;AAC7F,IAAA,MAAM,MAAA,GAAS,WAAA,CAAY,IAAA,EAAM,CAAC,CAAA;AAClC,IAAA,OAAO,MAAA,CAAO,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,UAAU,KAAA,EAAO,MAAA,CAAO,KAAA,EAAO,CAAA,GAAI,MAAA;AAAA,EACnE;AACA,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,CAAA,GAAI,oBAAA,CAAqB,IAAA,EAAM,CAAC,CAAA;AACtC,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,QAAQ,EAAE,KAAA;AAAO,IACf,KAAK,QAAA,EAAU;AAKb,MAAA,MAAM,MAAM,CAAA,CAAE,GAAA,CAAI,OAAO,CAAA,IAAM,EAAE,MAAM,OAAA,EAAQ;AAC/C,MAAA,MAAM,MAAA,GAAS,WAAA,CAAY,CAAA,EAAG,IAAI,UAAU,GAAG,CAAA;AAC/C,MAAA,OAAO,MAAA,CAAO,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,UAAU,KAAA,EAAO,MAAA,CAAO,KAAA,EAAO,CAAA,GAAI,MAAA;AAAA,IACnE;AAAA,IACA,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,qBAAqB,aAAa,CAAA;AACtE,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAElB,MAAA,MAAM,iBAAiB,YAAA,CAAa,CAAA,EAAG,aAAa,CAAC,MAAA,EAAQ,cAAc,CAAC,CAAA;AAC5E,MAAA,IAAI,SAAA;AACJ,MAAA,IAAI,mBAAmB,MAAA,EAAW;AAChC,QAAA,MAAM,GAAA,GAAM,YAAA,CAAa,CAAA,EAAG,IAAI,cAAc,cAAc,CAAA;AAC5D,QAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,QAAA,MAAM,IAAA,GAAO,eAAA;AAAA,UAAgB,GAAA,CAAI,KAAA;AAAA,UAAO,CAAC,EAAA,EAAI,EAAA,KAC3C,cAAc,CAAA,EAAG,IAAI,gBAAgB,EAAE;AAAA,SACzC;AACA,QAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,QAAA,SAAA,GAAY,IAAA,CAAK,KAAA;AAAA,MACnB;AAGA,MAAA,OAAO,EAAA,CAAG;AAAA,QACR,IAAA,EAAM,OAAA;AAAA,QACN,MAAM,CAAA,CAAE,KAAA;AAAA,QACR,QAAA,EAAU,CAAC,GAAA,KAAiB,GAAA;AAAA,QAC5B,GAAI,SAAA,KAAc,MAAA,GAAY,EAAE,SAAA,KAAc;AAAC,OAChD,CAAA;AAAA,IACH;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,sBAAsB,aAAa,CAAA;AACvE,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAKlB,MAAA,MAAM,EAAA,GAAK,QAAA,CAAS,CAAA,EAAG,cAAc,CAAA;AACrC,MAAA,IAAI,YAAA;AACJ,MAAA,IAAI,UAAA,GAAa,KAAA;AACjB,MAAA,IAAI,OAAO,MAAA,EAAW;AACpB,QAAA,MAAM,MAAA,GAAS,WAAA,CAAY,CAAA,EAAG,IAAI,iBAAiB,EAAE,CAAA;AACrD,QAAA,IAAI,OAAO,EAAA,EAAI;AACb,UAAA,YAAA,GAAe,MAAA,CAAO,KAAA;AACtB,UAAA,UAAA,GAAa,IAAA;AAAA,QACf;AAAA,MACF;AACA,MAAA,MAAM,CAAA,GAAsB;AAAA,QAC1B,IAAA,EAAM,QAAA;AAAA,QACN,MAAM,CAAA,CAAE,KAAA;AAAA,QACR,GAAI,UAAA,GAAa,EAAE,YAAA,KAAiB;AAAC,OACvC;AACA,MAAA,OAAO,GAAG,CAAC,CAAA;AAAA,IACb;AAAA,IACA,KAAK,WAAA,EAAa;AAChB,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,2BAA2B,aAAa,CAAA;AAC9E,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAGlB,MAAA,MAAM,EAAA,GAAK,QAAA,CAAS,CAAA,EAAG,cAAc,CAAA;AACrC,MAAA,IAAI,YAAA;AACJ,MAAA,IAAI,UAAA,GAAa,KAAA;AACjB,MAAA,IAAI,OAAO,MAAA,EAAW;AACpB,QAAA,MAAM,MAAA,GAAS,WAAA,CAAY,CAAA,EAAG,IAAI,iBAAiB,EAAE,CAAA;AACrD,QAAA,IAAI,OAAO,EAAA,EAAI;AACb,UAAA,YAAA,GAAe,MAAA,CAAO,KAAA;AACtB,UAAA,UAAA,GAAa,IAAA;AAAA,QACf;AAAA,MACF;AAYA,MAAA,MAAM,EAAA,GAAK,QAAA,CAAS,CAAA,EAAG,OAAO,CAAA;AAC9B,MAAA,IAAIC,MAAAA;AACJ,MAAA,IAAI,OAAO,MAAA,EAAW;AACpB,QAAA,MAAM,CAAA,GAAI,aAAA,CAAc,CAAA,EAAG,IAAI,UAAU,EAAE,CAAA;AAC3C,QAAA,IAAI,CAAA,CAAE,EAAA,EAAIA,MAAAA,GAAQ,CAAA,CAAE,KAAA;AAAA,MACtB;AACA,MAAA,MAAM,WACJA,MAAAA,KAAU,MAAA,GAAYC,6BAAsBD,MAAK,CAAA,GAAI,CAAC,GAAA,KAAiB,GAAA;AACzE,MAAA,MAAM,CAAA,GAAsB;AAAA,QAC1B,IAAA,EAAM,WAAA;AAAA,QACN,QAAQ,CAAA,CAAE,KAAA;AAAA,QACV,QAAA;AAAA,QACA,GAAI,UAAA,GAAa,EAAE,YAAA,KAAiB,EAAC;AAAA,QACrC,GAAIA,MAAAA,KAAU,MAAA,GAAY,EAAE,KAAA,EAAAA,MAAAA,KAAU;AAAC,OACzC;AACA,MAAA,OAAO,GAAG,CAAC,CAAA;AAAA,IACb;AAAA,IACA,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,MAAM,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,KAAA,EAAO,oBAAoB,aAAa,CAAA;AACtE,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AAOpB,MAAA,MAAM,EAAA,GACJ,YAAA,CAAa,CAAA,EAAG,cAAA,EAAgB,CAAC,cAAA,EAAgB,SAAS,CAAC,CAAA,IAC1D,EAAE,IAAA,EAAM,OAAA,EAAQ;AACnB,MAAA,IAAI,YAAA,GAAwB,WAAA;AAC5B,MAAA,IAAI,OAAO,MAAA,EAAW;AACpB,QAAA,MAAM,MAAA,GAAS,WAAA,CAAY,CAAA,EAAG,IAAI,iBAAiB,EAAE,CAAA;AACrD,QAAA,IAAI,MAAA,CAAO,EAAA,EAAI,YAAA,GAAe,MAAA,CAAO,KAAA;AAAA,MACvC;AACA,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,OAAA,EAAS,KAAK,GAAA,CAAI,KAAA,EAAO,cAAc,CAAA;AAAA,IAC3D;AAAA,IACA,KAAK,UAAA;AACH,MAAA,OAAO,GAAG,EAAE,IAAA,EAAM,YAAY,OAAA,EAAS,MAAM,QAAW,CAAA;AAAA,IAC1D,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,MAAM,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,KAAA,EAAO,mBAAmB,aAAa,CAAA;AACrE,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,CAAA,EAAG,MAAM,CAAA;AAChC,MAAA,IAAI,UAAU,MAAA,EAAW;AACvB,QAAA,MAAME,KAAsB,EAAE,IAAA,EAAM,MAAA,EAAQ,GAAA,EAAK,IAAI,KAAA,EAAM;AAC3D,QAAA,OAAO,GAAGA,EAAC,CAAA;AAAA,MACb;AACA,MAAA,MAAM,KAAA,GAAQ,iBAAA,CAAkB,CAAA,EAAG,IAAI,SAAS,KAAK,CAAA;AACrD,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,MAAM,CAAA,GAAsB,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAK,GAAA,CAAI,KAAA,EAAO,IAAA,EAAM,KAAA,CAAM,KAAA,EAAM;AAC9E,MAAA,OAAO,GAAG,CAAC,CAAA;AAAA,IACb;AAAA,IACA,KAAK,OAAA,EAAS;AAGZ,MAAA,MAAM,OAAA,GAAU,QAAA;AAAA,QAAS,IAAA;AAAA,QAAM,CAAA;AAAA,QAAG,aAAA;AAAA,QAAe,2BAAA;AAAA,QAA6B,CAAC,CAAA,EAAG,CAAA,KAChF,cAAc,CAAA,EAAG,CAAA,EAAG,aAAa,WAAW;AAAA,OAC9C;AACA,MAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,MAAA,MAAM,MAAA,GAAS,QAAA,CAAS,CAAA,EAAG,SAAS,CAAA;AACpC,MAAA,MAAM,KAAA,GACJ,MAAA,KAAW,MAAA,GACP,EAAA,CAAsB,EAAE,IAAA,EAAM,QAAA,EAAU,CAAA,GACxC,uBAAA,CAAwB,CAAA,EAAG,IAAI,YAAY,MAAM,CAAA;AACvD,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,MAAM,CAAA,GAAsB;AAAA,QAC1B,IAAA,EAAM,OAAA;AAAA,QACN,KAAA,EAAO;AAAA,UACL,aAAa,OAAA,CAAQ,KAAA;AAAA,UACrB,SAAS,KAAA,CAAM,KAAA;AAAA,UACf,UAAU,MAAM,MAAA;AAAA,UAChB,OAAO,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,OAAOJ,QAAAA,EAAQ;AAAA;AAC5C,OACF;AACA,MAAA,OAAO,GAAG,CAAC,CAAA;AAAA,IACb;AAAA,IACA,KAAK,QAAA,EAAU;AAGb,MAAA,MAAM,SAAS,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,iCAAiC,aAAa,CAAA;AACzF,MAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,MAAA,MAAM,IAAA,GAAO,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,UAAU,kBAAkB,CAAA;AAC/D,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,MAAM,MAAM,YAAA,CAAa,CAAA,EAAG,IAAI,CAAA,OAAA,CAAA,EAAW,KAAK,KAAK,CAAA;AACrD,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,MAAM,IAAA,GAAO,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,UAAU,wBAAwB,CAAA;AACrE,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,MAAM,MAAM,kBAAA,CAAmB,CAAA,EAAG,IAAI,CAAA,OAAA,CAAA,EAAW,KAAK,KAAK,CAAA;AAC3D,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,MAAM,CAAA,GAAsB;AAAA,QAC1B,IAAA,EAAM,QAAA;AAAA,QACN,QAAQ,MAAA,CAAO,KAAA;AAAA,QACf,QAAQ,GAAA,CAAI,KAAA;AAAA,QACZ,QAAQ,GAAA,CAAI;AAAA,OACd;AACA,MAAA,OAAO,GAAG,CAAC,CAAA;AAAA,IACb;AAAA,IACA,KAAK,WAAA,EAAa;AAKhB,MAAA,MAAM,IAAA,GAAO,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,UAAU,6BAA6B,CAAA;AAC1E,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,YAAY,0BAA0B,CAAA;AAC1E,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,MAAM,GAAA,GAAM,gBAAA,CAAiB,IAAA,CAAK,KAAK,CAAA;AACvC,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,SAAA,CAAU,cAAc,CAAA,EAAG,IAAI,CAAA,OAAA,CAAA,EAAW,GAAA,CAAI,KAAK,CAAA;AACvE,MAAA,MAAM,IAAA,GAAO,kBAAA,CAAmB,KAAA,CAAM,KAAK,CAAA;AAC3C,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,SAAA,CAAU,cAAc,CAAA,EAAG,IAAI,CAAA,SAAA,CAAA,EAAa,IAAA,CAAK,KAAK,CAAA;AAG3E,MAAA,MAAM,WAAA,GAAc,QAAA,CAAS,CAAA,EAAG,QAAQ,CAAA;AACxC,MAAA,IAAI,MAAA;AACJ,MAAA,IAAI,WAAA,KAAgB,MAAA,IAAa,WAAA,CAAY,IAAA,KAAS,SAAA,EAAW;AAK/D,QAAA,MAAM,UAAU,CAAC,GAAG,YAAY,MAAA,CAAO,OAAA,EAAS,CAAA,CAAE,IAAA;AAAA,UAAK,CAAC,CAAC,CAAC,CAAA,EAAG,CAACI,EAAC,CAAA,KAC7D,CAAA,GAAIA,EAAAA,GAAI,EAAA,GAAK,CAAA,GAAIA,EAAAA,GAAI,CAAA,GAAI;AAAA,SAC3B;AACA,QAAA,MAAM,MAAwB,EAAC;AAC/B,QAAA,IAAI,SAAA;AACJ,QAAA,KAAA,MAAW,CAAC,IAAA,EAAM,CAAC,CAAA,IAAK,OAAA,EAAS;AAC/B,UAAA,MAAM,OAAO,aAAA,CAAc,CAAA,EAAG,IAAI,CAAA,QAAA,EAAW,IAAI,SAAS,CAAC,CAAA;AAC3D,UAAA,IAAI,CAAC,KAAK,EAAA,EAAI;AACZ,YAAA,SAAA,GAAY,IAAA;AACZ,YAAA;AAAA,UACF;AACA,UAAA,GAAA,CAAI,KAAK,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,CAAK,OAAO,CAAA;AAAA,QACrC;AACA,QAAA,IAAI,SAAA,KAAc,QAAW,OAAO,SAAA;AACpC,QAAA,MAAA,GAAS,GAAA;AAAA,MACX,CAAA,MAAA,IAAW,gBAAgB,MAAA,EAAW;AACpC,QAAA,MAAM,GAAA,GAAM,YAAA,CAAa,CAAA,EAAG,IAAI,WAAW,WAAW,CAAA;AACtD,QAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,QAAA,MAAM,UAAU,eAAA,CAAgB,GAAA,CAAI,KAAA,EAAO,CAAC,IAAI,EAAA,KAAO;AACrD,UAAA,MAAM,EAAA,GAAK,aAAA,CAAc,CAAA,EAAG,IAAI,aAAa,EAAE,CAAA;AAC/C,UAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,UAAA,MAAM,IAAA,GAAO,QAAA;AAAA,YACX,GAAG,IAAI,CAAA,SAAA,CAAA;AAAA,YACP,EAAA,CAAG,KAAA;AAAA,YACH,MAAA;AAAA,YACA,mBAAA;AAAA,YACA;AAAA,WACF;AACA,UAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AAErB,UAAA,MAAM,IAAA,GAAO,eAAA;AAAA,YACX,GAAG,IAAI,CAAA,SAAA,CAAA;AAAA,YACP,EAAA,CAAG,KAAA;AAAA,YACH,MAAA;AAAA,YACA,CAAC,OAAO,CAAA;AAAA,YACR,sBAAA;AAAA,YACA;AAAA,WACF;AACA,UAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,UAAA,OAAO,EAAA,CAAmB,EAAE,IAAA,EAAM,IAAA,CAAK,OAAO,IAAA,EAAM,IAAA,CAAK,OAAO,CAAA;AAAA,QAClE,CAAC,CAAA;AACD,QAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,QAAA,MAAA,GAAS,OAAA,CAAQ,KAAA;AAAA,MACnB;AACA,MAAA,MAAM,CAAA,GAAsB;AAAA,QAC1B,IAAA,EAAM,WAAA;AAAA,QACN,QAAQ,GAAA,CAAI,KAAA;AAAA,QACZ,UAAU,IAAA,CAAK,KAAA;AAAA,QACf,GAAI,MAAA,KAAW,MAAA,GAAY,EAAE,MAAA,KAAW;AAAC,OAC3C;AACA,MAAA,OAAO,GAAG,CAAC,CAAA;AAAA,IACb;AAAA,IACA,KAAK,QAAA,EAAU;AAEb,MAAA,MAAM,MAAM,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,cAAA,EAAgB,wBAAwB,aAAa,CAAA;AACnF,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,QAAQ,mBAAmB,CAAA;AAC/D,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,MAAM,OAAO,gBAAA,CAAiB,CAAA,EAAG,IAAI,CAAA,KAAA,CAAA,EAAS,MAAM,KAAK,CAAA;AACzD,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,MAAM,CAAA,GAAsB,EAAE,IAAA,EAAM,QAAA,EAAU,cAAc,GAAA,CAAI,KAAA,EAAO,IAAA,EAAM,IAAA,CAAK,KAAA,EAAM;AACxF,MAAA,OAAO,GAAG,CAAC,CAAA;AAAA,IACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,WAAW,4BAA4B,CAAA;AAC3E,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,OAAO,cAAc,CAAA,EAAG,IAAI,YAAY,KAAA,CAAM,KAAA,EAAO,aAAa,WAAW,CAAA;AAAA,IAC/E;AAAA,IACA;AACE,MAAA,OAAO,aAAA;AAAA,QACL,IAAA;AAAA,QACA,CAAA,CAAE,KAAA;AAAA,QACF;AAAA,OACF;AAAA;AAEN,CAAA;AAEA,IAAM,iBAAA,GAAoB,CAAC,IAAA,EAAc,CAAA,KAAsD;AAC7F,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,MAA0C,EAAC;AACjD,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,CAAC,CAAA,IAAK,GAAG,KAAA,EAAO;AAC7B,IAAA,MAAM,IAAI,aAAA,CAAc,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,CAAC,IAAI,CAAC,CAAA;AACzC,IAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,IAAA,GAAA,CAAI,CAAC,IAAI,CAAA,CAAE,KAAA;AAAA,EACb;AACA,EAAA,OAAO,GAAG,GAAG,CAAA;AACf,CAAA;AAEA,IAAM,sBAAsB,CAAC,CAAA,EAAW,CAAA,KACtC,aAAA,CAAc,GAAG,CAAC,CAAA;AACpB,IAAM,oBAAoB,CAAC,CAAA,EAAW,CAAA,KACpC,aAAA,CAAc,GAAG,CAAC,CAAA;AAWpB,IAAM,mBAAA,GAA+C;AAAA,EACnD,EAAE,OAAOH,OAAAA,EAAQ,KAAA,EAAO,EAAE,IAAA,EAAM,SAAA,EAAW,KAAA,EAAOA,OAAAA,EAAO;AAC3D,CAAA;AAEA,IAAM,kBAAA,GAAqB,CAAC,IAAA,EAAc,CAAA,KAAgC;AAMxE,EAAA,IAAI,CAAA,CAAE,SAAS,SAAA,EAAW;AACxB,IAAA,OAAO,EAAA,CAAiB,EAAE,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,KAAA,EAAO,EAAE,IAAA,EAAM,SAAA,EAAW,KAAA,EAAO,CAAA,CAAE,KAAA,IAAS,CAAA;AAAA,EACxF;AACA,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,OAAA,EAAS,uBAAuB,aAAa,CAAA;AACpF,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,OAAA,EAAS,2BAA2B,gBAAgB,CAAA;AAC3F,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,OAAO,EAAA,CAAiB,EAAE,KAAA,EAAO,KAAA,CAAM,OAAO,KAAA,EAAO,KAAA,CAAM,OAAO,CAAA;AACpE,CAAA;AAEA,IAAM,wBAAA,GAA2B,CAAC,CAAA,EAAW,CAAA,KAA2B;AACtE,EAAA,IAAI,EAAE,IAAA,KAAS,OAAA,EAAS,OAAO,EAAA,CAAG,EAAE,CAAA;AACpC,EAAA,IAAI,CAAA,CAAE,SAAS,SAAA,IAAa,CAAA,CAAE,UAAUA,OAAAA,EAAQ,OAAO,GAAG,mBAAmB,CAAA;AAC7E,EAAA,MAAM,GAAA,GAAM,YAAA,CAAa,CAAA,EAAG,CAAC,CAAA;AAC7B,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,EAAA,OAAO,eAAA,CAAgB,GAAA,CAAI,KAAA,EAAO,CAAC,CAAA,EAAG,EAAA,KAAO,kBAAA,CAAmB,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAA,EAAK,EAAE,CAAC,CAAA;AACnF,CAAA;AAEA,IAAM,0BAAA,GAA6B,CAAC,CAAA,EAAW,CAAA,KAC7C,cAAc,CAAA,EAAG,CAAA,EAAG,0BAA0B,mBAAmB,CAAA;AAInE,IAAM,oBAAA,GAAuB,CAAC,CAAA,EAAW,CAAA,KAA2B;AAClE,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,OAAA,EAAS,OAAO,GAAG,MAAS,CAAA;AAC3C,EAAA,IAAI,EAAE,IAAA,KAAS,SAAA,EAAW,OAAO,EAAA,CAAG,EAAE,KAAK,CAAA;AAC3C,EAAA,OAAO,SAAA,CAAU,GAAG,qCAAqC,CAAA;AAC3D,CAAA;AAEA,IAAM,sBAAA,GAAyB,CAAC,CAAA,EAAW,CAAA,KACzC,cAAc,CAAA,EAAG,CAAA,EAAG,sBAAsBA,OAAM,CAAA;AAElD,IAAM,oBAAA,GAAuB,CAAC,CAAA,EAAW,CAAA,KAA2B;AAGlE,EAAA,IAAI,CAAA,CAAE,SAAS,SAAA,EAAW;AACxB,IAAA,MAAM,EAAA,GAAK,CAAA,CAAE,MAAA,CAAO,GAAA,CAAI,KAAK,CAAA;AAC7B,IAAA,MAAM,EAAA,GAAK,CAAA,CAAE,MAAA,CAAO,GAAA,CAAI,KAAK,CAAA;AAC7B,IAAA,IAAI,EAAA,KAAO,MAAA,IAAa,EAAA,KAAO,MAAA,EAAW;AACxC,MAAA,MAAM,CAAA,GAAI,YAAA,CAAa,CAAA,EAAG,CAAC,QAAQ,EAAE,CAAA;AACrC,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,MAAM,CAAA,GAAI,YAAA,CAAa,CAAA,EAAG,CAAC,QAAQ,EAAE,CAAA;AACrC,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,OAAO,GAAG,CAAC,CAAA,CAAE,KAAA,EAAO,CAAA,CAAE,KAAK,CAAU,CAAA;AAAA,IACvC;AACA,IAAA,OAAO,SAAA,CAAU,GAAG,iCAAiC,CAAA;AAAA,EACvD;AACA,EAAA,IAAI,EAAE,IAAA,KAAS,QAAA,IAAY,CAAA,CAAE,KAAA,CAAM,WAAW,CAAA,EAAG;AAC/C,IAAA,MAAM,CAAA,GAAI,aAAa,CAAA,EAAG,CAAC,OAAO,CAAA,CAAE,KAAA,CAAM,CAAC,CAAY,CAAA;AACvD,IAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,IAAA,MAAM,CAAA,GAAI,aAAa,CAAA,EAAG,CAAC,OAAO,CAAA,CAAE,KAAA,CAAM,CAAC,CAAY,CAAA;AACvD,IAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,IAAA,OAAO,GAAG,CAAC,CAAA,CAAE,KAAA,EAAO,CAAA,CAAE,KAAK,CAAU,CAAA;AAAA,EACvC;AACA,EAAA,OAAO,SAAA,CAAU,GAAG,oDAAoD,CAAA;AAC1E,CAAA;AAEA,IAAM,sBAAA,GAAyB,CAAC,CAAA,EAAW,CAAA,KAAsD;AAI/F,EAAA,IACE,CAAA,CAAE,SAAS,SAAA,IACX,CAAA,CAAE,OAAO,GAAA,CAAI,OAAO,MAAM,MAAA,IAC1B,CAAA,CAAE,OAAO,GAAA,CAAI,KAAK,MAAM,MAAA,IACxB,CAAA,CAAE,OAAO,GAAA,CAAI,KAAK,MAAM,MAAA,EACxB;AACA,IAAA,MAAM,MAAA,GAAS,oBAAA,CAAqB,CAAA,EAAG,CAAC,CAAA;AACxC,IAAA,OAAO,MAAA,CAAO,EAAA,GACV,EAAA,CAAG,EAAE,IAAA,EAAM,UAAU,KAAA,EAAO,MAAA,CAAO,KAAA,EAAoC,CAAA,GACvE,MAAA;AAAA,EACN;AACA,EAAA,OAAO,cAAc,CAAA,EAAG,CAAA,EAAG,sBAAsB,CAAC,CAAA,EAAG,CAAC,CAAU,CAAA;AAGlE,CAAA;AAEA,IAAM,qBAAA,GAAwB,CAAC,CAAA,EAAW,CAAA,KAA2B;AASnE,EAAA,MAAM,OAAA,GAAU,CAAC,CAAA,EAAW,CAAA,KAC1B,IAAI,CAAA,GACA,SAAA;AAAA,IACE,YAAA;AAAA,IACA,CAAA;AAAA,IACA,CAAA,kBAAA,EAAqB,CAAC,CAAA,gBAAA,EAAmB,CAAC,CAAA,oIAAA,CAAA;AAAA,IAC1C;AAAA,GACF,GACA,EAAA,CAAG,CAAC,CAAA,EAAG,CAAC,CAAU,CAAA;AACxB,EAAA,IAAI,CAAA,CAAE,SAAS,SAAA,EAAW;AACxB,IAAA,MAAM,IAAA,GAAO,CAAA,CAAE,MAAA,CAAO,GAAA,CAAI,MAAM,CAAA;AAChC,IAAA,MAAM,EAAA,GAAK,CAAA,CAAE,MAAA,CAAO,GAAA,CAAI,IAAI,CAAA;AAC5B,IAAA,IAAI,IAAA,KAAS,MAAA,IAAa,EAAA,KAAO,MAAA,EAAW;AAC1C,MAAA,MAAM,CAAA,GAAI,aAAA,CAAc,CAAA,EAAG,CAAC,SAAS,IAAI,CAAA;AACzC,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,MAAM,CAAA,GAAI,aAAA,CAAc,CAAA,EAAG,CAAC,OAAO,EAAE,CAAA;AACrC,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,OAAO,OAAA,CAAQ,CAAA,CAAE,KAAA,EAAO,CAAA,CAAE,KAAK,CAAA;AAAA,IACjC;AACA,IAAA,OAAO,SAAA,CAAU,GAAG,0CAA0C,CAAA;AAAA,EAChE;AACA,EAAA,IAAI,EAAE,IAAA,KAAS,QAAA,IAAY,CAAA,CAAE,KAAA,CAAM,WAAW,CAAA,EAAG;AAC/C,IAAA,MAAM,CAAA,GAAI,cAAc,CAAA,EAAG,CAAC,OAAO,CAAA,CAAE,KAAA,CAAM,CAAC,CAAY,CAAA;AACxD,IAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,IAAA,MAAM,CAAA,GAAI,cAAc,CAAA,EAAG,CAAC,OAAO,CAAA,CAAE,KAAA,CAAM,CAAC,CAAY,CAAA;AACxD,IAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,IAAA,OAAO,OAAA,CAAQ,CAAA,CAAE,KAAA,EAAO,CAAA,CAAE,KAAK,CAAA;AAAA,EACjC;AACA,EAAA,OAAO,SAAA,CAAU,GAAG,yDAAyD,CAAA;AAC/E,CAAA;AAEA,IAAM,uBAAA,GAA0B,CAAC,CAAA,EAAW,CAAA,KAAsD;AAIhG,EAAA,IACE,CAAA,CAAE,SAAS,SAAA,IACX,CAAA,CAAE,OAAO,GAAA,CAAI,OAAO,MAAM,MAAA,IAC1B,CAAA,CAAE,OAAO,GAAA,CAAI,MAAM,MAAM,MAAA,IACzB,CAAA,CAAE,OAAO,GAAA,CAAI,IAAI,MAAM,MAAA,EACvB;AACA,IAAA,MAAM,MAAA,GAAS,qBAAA,CAAsB,CAAA,EAAG,CAAC,CAAA;AACzC,IAAA,OAAO,MAAA,CAAO,EAAA,GACV,EAAA,CAAG,EAAE,IAAA,EAAM,UAAU,KAAA,EAAO,MAAA,CAAO,KAAA,EAAoC,CAAA,GACvE,MAAA;AAAA,EACN;AACA,EAAA,OAAO,cAAc,CAAA,EAAG,CAAA,EAAG,uBAAuB,CAAC,EAAA,EAAI,EAAE,CAAU,CAAA;AAGrE,CAAA;AAEA,IAAM,qBAAA,GAAwB,CAAC,CAAA,EAAW,CAAA,KAA2B;AACnE,EAAA,IAAI,EAAE,IAAA,KAAS,OAAA,EAAS,OAAO,EAAA,CAAG,EAAE,CAAA;AACpC,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,SAAA,IAAa,CAAA,CAAE,KAAA,KAAUA,SAAQ,OAAO,EAAA,CAAG,CAACA,OAAM,CAAC,CAAA;AAClE,EAAA,MAAM,GAAA,GAAM,YAAA,CAAa,CAAA,EAAG,CAAC,CAAA;AAC7B,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,EAAA,OAAO,eAAA,CAAgB,GAAA,CAAI,KAAA,EAAO,CAAC,CAAA,EAAG,EAAA,KAAO,aAAA,CAAc,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAA,EAAK,EAAE,CAAC,CAAA;AAC9E,CAAA;AAEA,IAAM,uBAAA,GAA0B,CAAC,CAAA,EAAW,CAAA,KAC1C,aAAA,CAAc,GAAG,CAAA,EAAG,qBAAA,EAAuB,CAACA,OAAM,CAAC,CAAA;AAErD,IAAM,mBAAA,GAAsB,CAAC,CAAA,EAAW,CAAA,KAA2B;AACjE,EAAA,IAAI,EAAE,IAAA,KAAS,OAAA,EAAS,OAAO,EAAA,CAAG,EAAE,CAAA;AACpC,EAAA,IAAI,CAAA,CAAE,SAAS,SAAA,IAAa,CAAA,CAAE,UAAUA,OAAAA,EAAQ,OAAO,EAAA,CAAG,EAAE,CAAA;AAC5D,EAAA,MAAM,GAAA,GAAM,YAAA,CAAa,CAAA,EAAG,CAAC,CAAA;AAC7B,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,EAAA,OAAO,eAAA,CAAgB,GAAA,CAAI,KAAA,EAAO,CAAC,CAAA,EAAG,EAAA,KAAO,YAAA,CAAa,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAA,EAAK,EAAE,CAAC,CAAA;AAC7E,CAAA;AAEA,IAAM,qBAAA,GAAwB,CAAC,CAAA,EAAW,CAAA,KACxC,cAAc,CAAA,EAAG,CAAA,EAAG,mBAAA,EAAqB,EAAE,CAAA;AAE7C,IAAM,eAAA,GAAkB,CAAC,IAAA,EAAc,CAAA,KAA6B;AAClE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,OAAA,EAAS,2BAA2B,gBAAgB,CAAA;AAC3F,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,WAAW,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,UAAA,EAAY,yBAAyB,YAAY,CAAA;AAC3F,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,MAAM,YAAY,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,WAAA,EAAa,0BAA0B,YAAY,CAAA;AAC9F,EAAA,IAAI,CAAC,SAAA,CAAU,EAAA,EAAI,OAAO,SAAA;AAC1B,EAAA,OAAO,EAAA,CAAc;AAAA,IACnB,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,UAAU,QAAA,CAAS,KAAA;AAAA,IACnB,WAAW,SAAA,CAAU;AAAA,GACtB,CAAA;AACH,CAAA;AAEA,IAAM,oBAAA,GAAuB,CAAC,CAAA,EAAW,CAAA,KAA2B;AAClE,EAAA,IAAI,EAAE,IAAA,KAAS,OAAA,EAAS,OAAO,EAAA,CAAG,EAAE,CAAA;AACpC,EAAA,IAAI,CAAA,CAAE,SAAS,SAAA,IAAa,CAAA,CAAE,UAAUA,OAAAA,EAAQ,OAAO,EAAA,CAAG,EAAE,CAAA;AAC5D,EAAA,MAAM,GAAA,GAAM,YAAA,CAAa,CAAA,EAAG,CAAC,CAAA;AAC7B,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,EAAA,OAAO,eAAA,CAAgB,GAAA,CAAI,KAAA,EAAO,CAAC,CAAA,EAAG,EAAA,KAAO,eAAA,CAAgB,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAA,EAAK,EAAE,CAAC,CAAA;AAChF,CAAA;AAEA,IAAM,sBAAA,GAAyB,CAAC,CAAA,EAAW,CAAA,KACzC,cAAc,CAAA,EAAG,CAAA,EAAG,oBAAA,EAAsB,EAAE,CAAA;AAI9C,IAAM,gBAAA,GAAmB,CAAC,IAAA,EAAc,CAAA,KAA8B;AAIpE,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,SAAA,EAAW,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,SAAA,EAAW,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,CAAA;AACvE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,CAAA,GAAI,oBAAA,CAAqB,IAAA,EAAM,CAAC,CAAA;AACtC,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,QAAQ,EAAE,KAAA;AAAO,IACf,KAAK,SAAA,EAAW;AACd,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,uBAAuB,aAAa,CAAA;AACxE,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,WAAW,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC1D;AAAA,IACA,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,0BAA0B,mBAAmB,CAAA;AACpF,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,MAAM,IAAgB,EAAE,IAAA,EAAM,OAAA,EAAS,OAAA,EAAS,EAAE,KAAA,EAAM;AACxD,MAAA,OAAO,GAAG,CAAC,CAAA;AAAA,IACb;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,MAAM,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,KAAA,EAAO,mBAAmB,aAAa,CAAA;AACrE,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,CAAA,EAAG,MAAM,CAAA;AAChC,MAAA,IAAI,UAAU,MAAA,EAAW;AACvB,QAAA,MAAMI,EAAAA,GAAgB,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAK,GAAA,CAAI,KAAA,EAAO,IAAA,EAAM,EAAC,EAAE;AAC/D,QAAA,OAAO,GAAGA,EAAC,CAAA;AAAA,MACb;AACA,MAAA,MAAM,IAAA,GAAO,aAAA,CAAc,CAAA,EAAG,IAAI,SAAS,KAAK,CAAA;AAChD,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,MAAM,CAAA,GAAgB,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAK,GAAA,CAAI,KAAA,EAAO,IAAA,EAAM,IAAA,CAAK,KAAA,EAAM;AACvE,MAAA,OAAO,GAAG,CAAC,CAAA;AAAA,IACb;AAAA,IACA;AACE,MAAA,OAAO,aAAA,CAAc,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,wBAAwB,CAAA;AAAA;AAElE,CAAA;AAIA,IAAM,YAAA,GAAe,CAAC,IAAA,EAAc,CAAA,KAAmC;AAIrE,EAAA,IAAI,CAAA,CAAE,SAAS,SAAA,EAAW;AACxB,IAAA,MAAM,CAAA,GAAI,CAAA,CAAE,KAAA,CAAM,MAAA,GAAS,EAAA,GAAK,CAAA,CAAE,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,GAAI,QAAA,GAAM,CAAA,CAAE,KAAA;AAC/D,IAAA,OAAO,SAAA;AAAA,MACL,IAAA;AAAA,MACA,gCAAgC,CAAC,CAAA,+OAAA;AAAA,KACnC;AAAA,EACF;AACA,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,CAAA,GAAI,oBAAA,CAAqB,IAAA,EAAM,CAAC,CAAA;AACtC,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,QAAQ,EAAE,KAAA;AAAO,IACf,KAAK,UAAA;AACH,MAAA,OAAO,GAAG,EAAE,IAAA,EAAM,UAAA,EAAY,GAAA,EAAKL,UAAS,CAAA;AAAA,IAC9C,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,CAAA,GAAI,gBAAgB,IAAA,EAAM,CAAA,EAAG,YAAY,CAAC,KAAK,CAAA,EAAG,oBAAA,EAAsB,aAAa,CAAA;AAC3F,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAGlB,MAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,CAAA,EAAG,MAAM,CAAA;AAChC,MAAA,IAAI,IAAA;AACJ,MAAA,IAAI,UAAU,MAAA,EAAW;AACvB,QAAA,MAAM,EAAA,GAAK,aAAA,CAAc,CAAA,EAAG,IAAI,SAAS,KAAK,CAAA;AAC9C,QAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,QAAA,MAAM,KAAK,oBAAA,CAAqB,CAAA,EAAG,IAAI,CAAA,KAAA,CAAA,EAAS,GAAG,KAAK,CAAA;AACxD,QAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,QAAA,IAAI,EAAA,CAAG,UAAU,OAAA,EAAS;AACxB,UAAA,MAAM,GAAA,GAAM,SAAS,CAAA,EAAG,IAAI,SAAS,EAAA,CAAG,KAAA,EAAO,KAAA,EAAO,kBAAA,EAAoB,aAAa,CAAA;AACvF,UAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,UAAA,IAAA,GAAO,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,IAAI,KAAA,EAAM;AAAA,QACzC,CAAA,MAAA,IAAW,EAAA,CAAG,KAAA,KAAU,OAAA,EAAS;AAC/B,UAAA,MAAM,IAAA,GAAO,QAAA;AAAA,YACX,GAAG,IAAI,CAAA,KAAA,CAAA;AAAA,YACP,EAAA,CAAG,KAAA;AAAA,YACH,MAAA;AAAA,YACA,mBAAA;AAAA,YACA;AAAA,WACF;AACA,UAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,UAAA,IAAA,GAAO,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,KAAK,KAAA,EAAM;AAAA,QAC3C,CAAA,MAAO;AACL,UAAA,OAAO,cAAc,CAAA,EAAG,IAAI,CAAA,KAAA,CAAA,EAAS,EAAA,CAAG,OAAO,eAAe,CAAA;AAAA,QAChE;AAAA,MACF;AACA,MAAA,OAAO,EAAA,CAAG;AAAA,QACR,IAAA,EAAM,MAAA;AAAA,QACN,UAAU,CAAA,CAAE,KAAA;AAAA,QACZ,GAAI,QAAA,CAAS,CAAA,EAAG,UAAU,CAAA,KAAM,MAAA,GAAY,EAAE,QAAA,EAAU,MAAMA,QAAAA,EAAQ,GAAI,EAAC;AAAA,QAC3E,GAAI,IAAA,KAAS,MAAA,GAAY,EAAE,IAAA,KAAS;AAAC,OACtC,CAAA;AAAA,IACH;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,UAAU,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,+BAA+B,aAAa,CAAA;AACzF,MAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,MAAA,MAAM,QAAA,GAAW,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,WAAW,mBAAmB,CAAA;AACrE,MAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,MAAA,MAAM,UAAU,UAAA,CAAW,CAAA,EAAG,IAAI,CAAA,QAAA,CAAA,EAAY,SAAS,KAAK,CAAA;AAC5D,MAAA,OAAO,OAAA,CAAQ,EAAA,GACX,EAAA,CAAG,EAAE,IAAA,EAAM,QAAA,EAAU,OAAA,EAAS,OAAA,CAAQ,KAAA,EAAO,OAAA,EAAS,OAAA,CAAQ,KAAA,EAAO,CAAA,GACrE,OAAA;AAAA,IACN;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,CAAA,GAAI,eAAA;AAAA,QACR,IAAA;AAAA,QACA,CAAA;AAAA,QACA,OAAA;AAAA,QACA,CAAC,MAAA,EAAQ,KAAA,EAAO,IAAI,CAAA;AAAA,QACpB,cAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,YAAY,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC3D;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,MAAM,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,KAAA,EAAO,oBAAoB,aAAa,CAAA;AACtE,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,MAAM,MAAA,GAAS,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,SAAS,iBAAiB,CAAA;AAC/D,MAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,MAAA,MAAM,QAAQ,UAAA,CAAW,CAAA,EAAG,IAAI,CAAA,MAAA,CAAA,EAAU,OAAO,KAAK,CAAA;AACtD,MAAA,OAAO,KAAA,CAAM,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,UAAA,EAAY,GAAA,EAAK,GAAA,CAAI,KAAA,EAAO,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,CAAA,GAAI,KAAA;AAAA,IACnF;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAA,EAAY,uBAAuB,aAAa,CAAA;AAC/E,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,QAAQ,gBAAgB,CAAA;AAC5D,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,MAAM,OAAO,UAAA,CAAW,CAAA,EAAG,IAAI,CAAA,KAAA,CAAA,EAAS,MAAM,KAAK,CAAA;AACnD,MAAA,OAAO,IAAA,CAAK,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,IAAA,CAAK,KAAA,EAAO,IAAA,EAAM,IAAA,CAAK,KAAA,EAAO,CAAA,GAAI,IAAA;AAAA,IACpF;AAAA,IACA,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,IAAA,GAAO,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,OAAO,qBAAqB,CAAA;AAC/D,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,MAAM,MAAM,YAAA,CAAa,CAAA,EAAG,IAAI,CAAA,IAAA,CAAA,EAAQ,KAAK,KAAK,CAAA;AAClD,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,MAAM,KAAA,GAAQ,eAAA;AAAA,QAAgB,GAAA,CAAI,KAAA;AAAA,QAAO,CAAC,GAAG,IAAA,KAC3C,YAAA,CAAa,GAAG,IAAI,CAAA,KAAA,EAAQ,CAAC,CAAA,CAAA,CAAA,EAAK,IAAI;AAAA,OACxC;AACA,MAAA,OAAO,KAAA,CAAM,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,SAAS,OAAA,EAAS,KAAA,CAAM,KAAA,EAAO,CAAA,GAAI,KAAA;AAAA,IAClE;AAAA,IACA,KAAK,aAAA,EAAe;AAClB,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,mCAAmC,aAAa,CAAA;AACtF,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,eAAe,MAAA,EAAQ,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC/D;AAAA,IACA,KAAK,kBAAA,EAAoB;AACvB,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,4BAA4B,aAAa,CAAA;AAC7E,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,oBAAoB,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAClE;AAAA,IACA,KAAK,cAAA,EAAgB;AAInB,MAAA,MAAM,SAAS,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,qBAAqB,aAAa,CAAA;AAC9E,MAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,MAAA,MAAM,MAAM,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAA,EAAY,oBAAoB,sBAAsB,CAAA;AACpF,MAAA,OAAO,GAAA,CAAI,KACP,EAAA,CAAG;AAAA,QACD,IAAA,EAAM,cAAA;AAAA,QACN,IAAA,EAAM,EAAE,EAAA,EAAI,MAAA,CAAO,KAAA,EAAM;AAAA,QACzB,UAAU,GAAA,CAAI,KAAA;AAAA,QACd,QAAQ,MAAMA;AAAA,OACf,CAAA,GACD,GAAA;AAAA,IACN;AAAA,IACA,KAAK,QAAA,EAAU;AAEb,MAAA,MAAM,MAAM,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,cAAA,EAAgB,wBAAwB,aAAa,CAAA;AACnF,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,QAAQ,mBAAmB,CAAA;AAC/D,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,MAAM,OAAO,gBAAA,CAAiB,CAAA,EAAG,IAAI,CAAA,KAAA,CAAA,EAAS,MAAM,KAAK,CAAA;AACzD,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,QAAA,EAAU,YAAA,EAAc,IAAI,KAAA,EAAO,IAAA,EAAM,IAAA,CAAK,KAAA,EAAO,CAAA;AAAA,IACzE;AAAA,IACA;AACE,MAAA,OAAO,aAAA;AAAA,QACL,IAAA;AAAA,QACA,CAAA,CAAE,KAAA;AAAA,QACF;AAAA,OACF;AAAA;AAEN,CAAA;AAIA,IAAM,oBAAqC,EAAE,IAAA,EAAM,OAAA,EAAS,OAAA,EAAS,EAAC,EAAE;AACxE,IAAM,sBAAsB,MAAuB,iBAAA;AAEnD,IAAM,gBAAA,GAAmB,CAAC,IAAA,EAAc,CAAA,KAA8B;AACpE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,2BAA2B,gBAAgB,CAAA;AACpF,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AAGtB,EAAA,MAAM,MAAA,GAAS,gBAAgB,IAAA,EAAM,CAAA,EAAG,SAAS,CAAC,MAAM,CAAA,EAAG,sBAAA,EAAwB,aAAa,CAAA;AAChG,EAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AAId,IAAA,IAAI,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,QAAA,CAAS,sBAAsB,CAAA,EAAG;AACzD,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,KAAA;AAAA,QACJ,KAAA,EAAO;AAAA,UACL,GAAG,MAAA,CAAO,KAAA;AAAA,UACV,OAAA,EACE,MAAA,CAAO,KAAA,CAAM,OAAA,GACb;AAAA;AACJ,OACF;AAAA,IACF;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAGA,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAU,gBAAgB,CAAA;AAC3D,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAQ,UAAU,CAAA;AACjD,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAU,YAAY,CAAA;AACvD,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,YAAY,cAAc,CAAA;AAC7D,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAS,aAAa,CAAA;AACtD,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,WAAA,GAAc,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,eAAe,gBAAgB,CAAA;AACrE,EAAA,IAAI,CAAC,WAAA,CAAY,EAAA,EAAI,OAAO,WAAA;AAC5B,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAQ,gBAAgB,CAAA;AACvD,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,OAAA,GAAU,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,WAAW,gBAAgB,CAAA;AAC7D,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,MAAA,EAAQ,MAAA,CAAO,KAAA,IAAS,EAAE,MAAM,MAAA,EAAO;AAAA,IACvC,IAAA,EAAM,KAAK,KAAA,IAAS,SAAA;AAAA,IACpB,MAAA,EAAQ,OAAO,KAAA,IAAS,UAAA;AAAA,IACxB,QAAA,EAAU,SAAS,KAAA,IAAS,QAAA;AAAA,IAC5B,GAAI,MAAM,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,EAAO,KAAA,CAAM,KAAA,EAAyB,GAAI,EAAC;AAAA,IAC7E,GAAI,YAAY,KAAA,KAAU,MAAA,GAAY,EAAE,WAAA,EAAa,WAAA,CAAY,KAAA,EAAM,GAAI,EAAC;AAAA,IAC5E,GAAI,KAAK,KAAA,KAAU,MAAA,GAAY,EAAE,IAAA,EAAM,IAAA,CAAK,KAAA,EAAM,GAAI,EAAC;AAAA,IACvD,GAAI,QAAQ,KAAA,KAAU,MAAA,GAAY,EAAE,OAAA,EAAS,OAAA,CAAQ,KAAA,EAAM,GAAI;AAAC,GACjE,CAAA;AACH,CAAA;AAEA,IAAM,iBAAA,GAAoB,CAAC,IAAA,EAAc,CAAA,KAA+B;AACtE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,yBAAyB,UAAU,CAAA;AAC5E,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,sBAAsB,gBAAgB,CAAA;AAC7E,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,UAAU,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,kBAAkB,oBAAoB,CAAA;AACnF,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,EAAA,OAAO,EAAA,CAAG,EAAE,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,IAAA,EAAM,IAAA,CAAK,KAAA,EAAO,OAAA,EAAS,OAAA,CAAQ,KAAA,EAAO,CAAA;AAC5E,CAAA;AAEA,IAAM,uBAAA,GAA0B,CAAC,IAAA,EAAc,CAAA,KAAqC;AAClF,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,wBAAwB,gBAAgB,CAAA;AACjF,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,MAAA,GAAS,eAAA;AAAA,IACb,IAAA;AAAA,IACA,CAAA;AAAA,IACA,OAAA;AAAA,IACA,CAAC,MAAM,CAAA;AAAA,IACP,0BAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AAKvB,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAU,gBAAgB,CAAA;AAC3D,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AAKvB,EAAA,MAAM,SAAA,GAAY,QAAA,CAAS,CAAA,EAAG,UAAU,CAAA;AACxC,EAAA,IAAI,WAAA,GAAc,KAAA;AAClB,EAAA,IAAI,cAAc,MAAA,EAAW;AAC3B,IAAA,MAAM,CAAA,GAAI,kBAAA,CAAmB,CAAA,EAAG,IAAI,aAAa,SAAS,CAAA;AAC1D,IAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,IAAA,WAAA,GAAc,CAAA,CAAE,KAAA;AAAA,EAClB;AACA,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAQ,gBAAgB,CAAA;AACvD,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,MAAA,EAAQ,MAAA,CAAO,KAAA,IAAS,EAAE,MAAM,MAAA,EAAO;AAAA,IACvC,QAAA,EAAU,WAAA;AAAA,IACV,GAAI,KAAK,KAAA,KAAU,MAAA,GAAY,EAAE,IAAA,EAAM,IAAA,CAAK,KAAA,EAAM,GAAI;AAAC,GACxD,CAAA;AACH,CAAA;AAEA,IAAM,cAAA,GAAiB,CAAC,IAAA,EAAc,CAAA,KAA4B;AAGhE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,yBAAyB,gBAAgB,CAAA;AAClF,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,yBAAyB,gBAAgB,CAAA;AAClF,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAQ,UAAU,CAAA;AACjD,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AAErB,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,YAAY,kBAAkB,CAAA;AACjE,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAQ,gBAAgB,CAAA;AACvD,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAQ,gBAAgB,CAAA;AACvD,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,IAAA,EAAM,KAAK,KAAA,IAAS,SAAA;AAAA,IACpB,QAAA,EAAU,SAAS,KAAA,IAAS,KAAA;AAAA,IAC5B,GAAI,KAAK,KAAA,KAAU,MAAA,GAAY,EAAE,IAAA,EAAM,IAAA,CAAK,KAAA,EAAM,GAAI,EAAC;AAAA,IACvD,GAAI,KAAK,KAAA,KAAU,MAAA,GAAY,EAAE,IAAA,EAAM,IAAA,CAAK,KAAA,EAAM,GAAI;AAAC,GACxD,CAAA;AACH,CAAA;AAEA,IAAM,kBAAA,GAAqB,CAAC,IAAA,EAAc,CAAA,KAAgC;AACxE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,MAAA,EAAQ,uBAAuB,gBAAgB,CAAA;AACrF,EAAA,OAAO,IAAA,CAAK,KAAK,EAAA,CAAG,EAAE,MAAM,IAAA,CAAK,KAAA,EAAO,CAAA,GAAI,IAAA;AAC9C,CAAA;AAEA,IAAM,eAAA,GAAkB,CAAC,IAAA,EAAc,CAAA,KAA6B;AAClE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,0BAA0B,gBAAgB,CAAA;AACnF,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,UAAU,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,gBAAgB,kBAAkB,CAAA;AAC/E,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,EAAA,OAAO,EAAA,CAAG,EAAE,KAAA,EAAO,KAAA,CAAM,OAAO,OAAA,EAAS,OAAA,CAAQ,OAAO,CAAA;AAC1D,CAAA;AAEA,IAAM,cAAA,GAAiB,CAAC,IAAA,EAAc,CAAA,KAA4B;AAChE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,6BAA6B,mBAAmB,CAAA;AACvF,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,yBAAyB,gBAAgB,CAAA;AAClF,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,WAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAA,EAAY,iBAAiB,WAAW,CAAA;AAC3E,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,MAAM,GAAA,GAAM,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAO,aAAa,CAAA;AAClD,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAU,aAAa,CAAA;AACxD,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,MAAM,IAAA,CAAK,KAAA;AAAA,IACX,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,UAAU,QAAA,CAAS,KAAA;AAAA,IACnB,GAAI,IAAI,KAAA,KAAU,MAAA,GAAY,EAAE,GAAA,EAAK,GAAA,CAAI,KAAA,EAAM,GAAI,EAAC;AAAA,IACpD,GAAI,OAAO,KAAA,KAAU,MAAA,GAAY,EAAE,MAAA,EAAQ,MAAA,CAAO,KAAA,EAAM,GAAI;AAAC,GAC9D,CAAA;AACH,CAAA;AAEA,IAAM,eAAA,GAAkB,CAAC,IAAA,EAAc,CAAA,KAA6B;AAClE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,MAAM,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,KAAA,EAAO,wBAAwB,gBAAgB,CAAA;AAC7E,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,EAAA,MAAM,MAAM,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,KAAA,EAAO,6BAA6B,mBAAmB,CAAA;AACrF,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,EAAA,MAAM,UAAU,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,gBAAgB,kBAAkB,CAAA;AAC/E,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,EAAA,OAAO,EAAA,CAAG,EAAE,GAAA,EAAK,GAAA,CAAI,KAAA,EAAO,GAAA,EAAK,GAAA,CAAI,KAAA,EAAO,OAAA,EAAS,OAAA,CAAQ,KAAA,EAAO,CAAA;AACtE,CAAA;AAEA,IAAM,cAAA,GAAiB,CAAC,IAAA,EAAc,CAAA,KAA4B;AAChE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,MAAA,GAAS,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,SAAS,6BAA6B,CAAA;AAC3E,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,MAAM,MAAM,YAAA,CAAa,CAAA,EAAG,IAAI,CAAA,MAAA,CAAA,EAAU,OAAO,KAAK,CAAA;AACtD,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,EAAA,MAAM,KAAA,GAAQ,eAAA;AAAA,IAAgB,GAAA,CAAI,KAAA;AAAA,IAAO,CAAC,GAAG,IAAA,KAC3C,gBAAA,CAAiB,GAAG,IAAI,CAAA,OAAA,EAAU,CAAC,CAAA,CAAA,CAAA,EAAK,IAAI;AAAA,GAC9C;AACA,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,UAAU,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,gBAAgB,WAAW,CAAA;AACxE,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,EAAA,OAAO,EAAA,CAAG,EAAE,KAAA,EAAO,KAAA,CAAM,OAAO,OAAA,EAAS,OAAA,CAAQ,OAAO,CAAA;AAC1D,CAAA;AAEA,IAAM,eAAA,GAAkB,CAAC,IAAA,EAAc,CAAA,KAA6B;AAClE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,UAAU,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,4BAA4B,gBAAgB,CAAA;AACzF,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AAExB,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAQ,UAAU,CAAA;AACjD,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,sBAAsB,aAAa,CAAA;AAC1E,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AAErB,EAAA,MAAM,WAAA,GAAc,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,eAAe,WAAW,CAAA;AAChE,EAAA,IAAI,CAAC,WAAA,CAAY,EAAA,EAAI,OAAO,WAAA;AAC5B,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,SAAS,OAAA,CAAQ,KAAA;AAAA,IACjB,IAAA,EAAM,KAAK,KAAA,IAAS,SAAA;AAAA,IACpB,MAAM,IAAA,CAAK,KAAA;AAAA,IACX,WAAA,EAAa,YAAY,KAAA,IAAS;AAAA,GACnC,CAAA;AACH,CAAA;AAEA,IAAM,mBAAA,GAAsB,CAAC,IAAA,EAAc,CAAA,KAAiC;AAC1E,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,0BAA0B,aAAa,CAAA;AAC9E,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,WAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAA,EAAY,8BAA8B,aAAa,CAAA;AAC1F,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,MAAM,cAAc,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,aAAA,EAAe,oBAAoB,WAAW,CAAA;AACpF,EAAA,IAAI,CAAC,WAAA,CAAY,EAAA,EAAI,OAAO,WAAA;AAC5B,EAAA,MAAM,WAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAA,EAAY,iBAAiB,WAAW,CAAA;AAC3E,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,MAAM,MAAA,GAAS,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,kBAAkB,0BAA0B,CAAA;AACjF,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,MAAM,MAAM,YAAA,CAAa,CAAA,EAAG,IAAI,CAAA,eAAA,CAAA,EAAmB,OAAO,KAAK,CAAA;AAC/D,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,EAAA,MAAM,cAAA,GAAiB,eAAA;AAAA,IAAgB,GAAA,CAAI,KAAA;AAAA,IAAO,CAAC,GAAG,IAAA,KACpD,UAAA,CAAW,GAAG,IAAI,CAAA,gBAAA,EAAmB,CAAC,CAAA,CAAA,CAAA,EAAK,IAAI;AAAA,GACjD;AACA,EAAA,IAAI,CAAC,cAAA,CAAe,EAAA,EAAI,OAAO,cAAA;AAC/B,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,MAAM,IAAA,CAAK,KAAA;AAAA,IACX,UAAU,QAAA,CAAS,KAAA;AAAA,IACnB,aAAa,WAAA,CAAY,KAAA;AAAA,IACzB,gBAAgB,cAAA,CAAe,KAAA;AAAA,IAC/B,UAAU,QAAA,CAAS;AAAA,GACpB,CAAA;AACH,CAAA;AAEA,IAAM,cAAA,GAAiB,CAAC,IAAA,EAAc,CAAA,KAA4B;AAChE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,SAAS,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,4BAA4B,aAAa,CAAA;AACpF,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,MAAM,UAAU,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,eAAe,iBAAiB,CAAA;AAC7E,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,EAAA,OAAO,EAAA,CAAG,EAAE,MAAA,EAAQ,MAAA,CAAO,OAAO,OAAA,EAAS,OAAA,CAAQ,OAAO,CAAA;AAC5D,CAAA;AAEA,IAAM,mBAAA,GAAsB,CAAC,IAAA,EAAc,CAAA,KAAiC;AAC1E,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,MAAA,GAAS,eAAA;AAAA,IACb,IAAA;AAAA,IACA,EAAA,CAAG,KAAA;AAAA,IACH,QAAA;AAAA,IACA,CAAC,MAAM,CAAA;AAAA,IACP,0BAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,OAAO,MAAA,CAAO,KAAK,EAAA,CAAG,EAAE,QAAQ,MAAA,CAAO,KAAA,EAAO,CAAA,GAAI,MAAA;AACpD,CAAA;AAEA,IAAM,kBAAA,GAAqB,CAAC,IAAA,EAAc,CAAA,KAAgC;AACxE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,MAAA,EAAQ,8BAA8B,UAAU,CAAA;AACtF,EAAA,OAAO,IAAA,CAAK,KAAK,EAAA,CAAG,EAAE,MAAM,IAAA,CAAK,KAAA,EAAO,CAAA,GAAI,IAAA;AAC9C,CAAA;AAEA,IAAM,iBAAA,GAAoB,CAAC,IAAA,EAAc,CAAA,KAA+B;AACtE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,2BAA2B,gBAAgB,CAAA;AAClF,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AAErB,EAAA,MAAM,WAAA,GAAc,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,eAAe,WAAW,CAAA;AAChE,EAAA,IAAI,CAAC,WAAA,CAAY,EAAA,EAAI,OAAO,WAAA;AAE5B,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAQ,UAAU,CAAA;AACjD,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,OAAA,GAAU,gBAAgB,IAAA,EAAM,CAAA,EAAG,WAAW,CAAC,OAAO,GAAG,gBAAgB,CAAA;AAC/E,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAQ,gBAAgB,CAAA;AACvD,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,MAAM,IAAA,CAAK,KAAA;AAAA,IACX,WAAA,EAAa,YAAY,KAAA,IAAS,KAAA;AAAA,IAClC,IAAA,EAAM,KAAK,KAAA,IAAS,SAAA;AAAA,IACpB,GAAI,QAAQ,KAAA,KAAU,MAAA,GAAY,EAAE,OAAA,EAAS,OAAA,CAAQ,KAAA,EAAM,GAAI,EAAC;AAAA,IAChE,GAAI,KAAK,KAAA,KAAU,MAAA,GAAY,EAAE,IAAA,EAAM,IAAA,CAAK,KAAA,EAAM,GAAI;AAAC,GACxD,CAAA;AACH,CAAA;AAEA,IAAM,kBAAA,GAAqB,CAAC,IAAA,EAAc,CAAA,KAAgC;AACxE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,WAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAA,EAAY,6BAA6B,aAAa,CAAA;AACzF,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AAIzB,EAAA,MAAM,aAAA,GAAgB,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,iBAAiB,WAAW,CAAA;AACpE,EAAA,IAAI,CAAC,aAAA,CAAc,EAAA,EAAI,OAAO,aAAA;AAE9B,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAQ,UAAU,CAAA;AACjD,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAS,gBAAgB,CAAA;AACzD,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAU,gBAAgB,CAAA;AAC3D,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,UAAU,QAAA,CAAS,KAAA;AAAA,IACnB,aAAA,EAAe,cAAc,KAAA,IAAS,KAAA;AAAA,IACtC,IAAA,EAAM,KAAK,KAAA,IAAS,SAAA;AAAA,IACpB,GAAI,MAAM,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,EAAO,KAAA,CAAM,KAAA,EAAM,GAAI,EAAC;AAAA,IAC1D,GAAI,OAAO,KAAA,KAAU,MAAA,GAAY,EAAE,MAAA,EAAQ,MAAA,CAAO,KAAA,EAAM,GAAI;AAAC,GAC9D,CAAA;AACH,CAAA;AAIA,IAAM,iBAA4B,EAAC;AAEnC,IAAM,eAAA,GAAkB,CAAC,IAAA,EAAc,CAAA,KAA6B;AAClE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,GAAA,EAAK,qBAAqB,YAAY,CAAA;AACzE,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,GAAA,EAAK,qBAAqB,YAAY,CAAA;AACzE,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,OAAO,EAAA,CAAG,EAAE,CAAA,EAAG,CAAA,CAAE,OAAO,CAAA,EAAG,CAAA,CAAE,OAAO,CAAA;AACtC,CAAA;AAEA,IAAM,aAAA,GAAgB,CAAC,IAAA,EAAc,CAAA,KAA2B;AAC9D,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,sBAAsB,YAAY,CAAA;AACzE,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,sBAAsB,YAAY,CAAA;AACzE,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,uBAAuB,YAAY,CAAA;AAC5E,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,SAAS,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,wBAAwB,YAAY,CAAA;AAC/E,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,IAAA,CAAK,OAAO,IAAA,EAAM,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,MAAA,EAAQ,MAAA,CAAO,OAAO,CAAA;AAC5F,CAAA;AAEA,IAAM,eAAA,GAAkB,CAAC,IAAA,EAAc,CAAA,KAA6B;AAClE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAQ,mBAAmB,CAAA;AAC1D,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAU,mBAAmB,CAAA;AAC9D,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,MAAM,WAAA,GAAc,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,eAAe,aAAa,CAAA;AAClE,EAAA,IAAI,CAAC,WAAA,CAAY,EAAA,EAAI,OAAO,WAAA;AAC5B,EAAA,MAAM,OAAA,GAAU,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,WAAW,aAAa,CAAA;AAC1D,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AAExB,EAAA,MAAM,UAAA,GAAa,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,cAAc,gBAAgB,CAAA;AACnE,EAAA,IAAI,CAAC,UAAA,CAAW,EAAA,EAAI,OAAO,UAAA;AAC3B,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,YAAY,YAAY,CAAA;AAC3D,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,YAAY,cAAc,CAAA;AAC7D,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,MAAM,UAAA,GAAa,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,cAAc,aAAa,CAAA;AAChE,EAAA,IAAI,CAAC,UAAA,CAAW,EAAA,EAAI,OAAO,UAAA;AAE3B,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAU,aAAa,CAAA;AACxD,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,GAAI,KAAK,KAAA,KAAU,MAAA,GAAY,EAAE,IAAA,EAAM,IAAA,CAAK,KAAA,EAAM,GAAI,EAAC;AAAA,IACvD,GAAI,OAAO,KAAA,KAAU,MAAA,GAAY,EAAE,MAAA,EAAQ,MAAA,CAAO,KAAA,EAAM,GAAI,EAAC;AAAA,IAC7D,GAAI,YAAY,KAAA,KAAU,MAAA,GACtB,EAAE,WAAA,EAAa,WAAA,CAAY,KAAA,EAAyB,GACpD,EAAC;AAAA,IACL,GAAI,QAAQ,KAAA,KAAU,MAAA,GAAY,EAAE,OAAA,EAAS,OAAA,CAAQ,KAAA,EAAyB,GAAI,EAAC;AAAA,IACnF,GAAI,WAAW,KAAA,KAAU,MAAA,GAAY,EAAE,UAAA,EAAY,UAAA,CAAW,KAAA,EAAM,GAAI,EAAC;AAAA,IACzE,GAAI,SAAS,KAAA,KAAU,MAAA,GAAY,EAAE,QAAA,EAAU,QAAA,CAAS,KAAA,EAAM,GAAI,EAAC;AAAA,IACnE,GAAI,SAAS,KAAA,KAAU,MAAA,GAAY,EAAE,QAAA,EAAU,QAAA,CAAS,KAAA,EAAM,GAAI,EAAC;AAAA,IACnE,GAAI,WAAW,KAAA,KAAU,MAAA,GAAY,EAAE,UAAA,EAAY,UAAA,CAAW,KAAA,EAAM,GAAI,EAAC;AAAA,IACzE,GAAI,OAAO,KAAA,KAAU,MAAA,GAAY,EAAE,MAAA,EAAQ,MAAA,CAAO,KAAA,EAAM,GAAI;AAAC,GAC9D,CAAA;AACH,CAAA;AAEA,IAAM,kBAAA,GAAqB,CAAC,IAAA,EAAc,CAAA,KAAgC;AACxE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,CAAA,GAAI,oBAAA,CAAqB,IAAA,EAAM,CAAC,CAAA;AACtC,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,MAAM,KAAA,GAAQ,CAAC,GAAA,KACb,QAAA,CAAS,IAAA,EAAM,GAAG,GAAA,EAAK,CAAA,UAAA,EAAa,GAAG,CAAA,CAAA,EAAI,eAAe,CAAA;AAC5D,EAAA,QAAQ,EAAE,KAAA;AAAO,IACf,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,EAAA,GAAK,MAAM,IAAI,CAAA;AACrB,MAAA,OAAO,EAAA,CAAG,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,UAAU,EAAA,EAAI,EAAA,CAAG,KAAA,EAAO,CAAA,GAAI,EAAA;AAAA,IACxD;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,EAAA,GAAK,MAAM,IAAI,CAAA;AACrB,MAAA,OAAO,EAAA,CAAG,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,UAAU,EAAA,EAAI,EAAA,CAAG,KAAA,EAAO,CAAA,GAAI,EAAA;AAAA,IACxD;AAAA,IACA,KAAK,SAAA,EAAW;AACd,MAAA,MAAM,EAAA,GAAK,MAAM,UAAU,CAAA;AAC3B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,EAAA,GAAK,MAAM,UAAU,CAAA;AAC3B,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,EAAA,GAAK,MAAM,IAAI,CAAA;AACrB,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,EAAA,CAAG,KAAA,EAAO,QAAA,EAAU,EAAA,CAAG,KAAA,EAAO,EAAA,EAAI,EAAA,CAAG,OAAO,CAAA;AAAA,IACrF;AAAA,IACA,KAAK,aAAA,EAAe;AAClB,MAAA,MAAM,CAAA,GAAI,MAAM,SAAS,CAAA;AACzB,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,MAAM,EAAA,GAAK,MAAM,IAAI,CAAA;AACrB,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,aAAA,EAAe,OAAA,EAAS,EAAE,KAAA,EAAO,EAAA,EAAI,EAAA,CAAG,KAAA,EAAO,CAAA;AAAA,IACnE;AAAA,IACA,KAAK,OAAA;AACH,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,OAAA,EAAS,CAAA;AAAA,IAC7B;AAEE,MAAA,OAAO,aAAA,CAAc,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,iDAAiD,CAAA;AAAA;AAE3F,CAAA;AAEA,IAAM,WAAA,GAAc,CAAC,IAAA,EAAc,CAAA,KAAyB;AAC1D,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,CAAA,GAAI,oBAAA,CAAqB,IAAA,EAAM,CAAC,CAAA;AACtC,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,MAAM,GAAA,GAAM,CAAC,GAAA,KACX,QAAA,CAAS,IAAA,EAAM,GAAG,GAAA,EAAK,CAAA,MAAA,EAAS,GAAG,CAAA,MAAA,CAAA,EAAU,YAAY,CAAA;AAC3D,EAAA,MAAM,aAAa,MAAoB;AACrC,IAAA,MAAM,CAAA,GAAI,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAS,eAAe,CAAA;AACpD,IAAA,OAAO,EAAE,EAAA,GAAK,EAAA,CAAG,CAAA,CAAE,KAAA,IAAS,cAAc,CAAA,GAAI,CAAA;AAAA,EAChD,CAAA;AACA,EAAA,MAAM,UAAA,GAAa,CAAC,GAAA,KAAyC;AAC3D,IAAA,MAAM,GAAA,GAAM,SAAS,IAAA,EAAM,CAAA,EAAG,KAAK,CAAA,MAAA,EAAS,GAAG,oBAAoB,YAAY,CAAA;AAC/E,IAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,IAAA,OAAO,eAAA,CAAgB,GAAA,CAAI,KAAA,EAAO,CAAC,GAAG,EAAA,KAAO,eAAA,CAAgB,CAAA,EAAG,IAAI,IAAI,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAA,EAAK,EAAE,CAAC,CAAA;AAAA,EAC1F,CAAA;AACA,EAAA,MAAM,QAAQ,UAAA,EAAW;AACzB,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,QAAQ,EAAE,KAAA;AAAO,IACf,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,MAAM,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAA,EAAY,wBAAwB,YAAY,CAAA;AAC9E,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,MAAM,QAAA,GAAW,eAAA;AAAA,QAAgB,GAAA,CAAI,KAAA;AAAA,QAAO,CAAC,GAAG,EAAA,KAC9C,WAAA,CAAY,GAAG,IAAI,CAAA,UAAA,EAAa,CAAC,CAAA,CAAA,CAAA,EAAK,EAAE;AAAA,OAC1C;AACA,MAAA,OAAO,QAAA,CAAS,EAAA,GACZ,EAAA,CAAG,EAAE,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAA,CAAS,KAAA,EAAO,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,CAAA,GAClE,QAAA;AAAA,IACN;AAAA,IACA,KAAK,WAAA,EAAa;AAChB,MAAA,MAAM,CAAA,GAAI,IAAI,GAAG,CAAA;AACjB,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,MAAM,CAAA,GAAI,IAAI,GAAG,CAAA;AACjB,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,MAAM,KAAA,GAAQ,IAAI,OAAO,CAAA;AACzB,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,MAAM,MAAA,GAAS,IAAI,QAAQ,CAAA;AAC3B,MAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,MAAA,MAAM,YAAA,GAAe,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,gBAAgB,YAAY,CAAA;AACnE,MAAA,IAAI,CAAC,YAAA,CAAa,EAAA,EAAI,OAAO,YAAA;AAC7B,MAAA,OAAO,EAAA,CAAG;AAAA,QACR,IAAA,EAAM,WAAA;AAAA,QACN,GAAG,CAAA,CAAE,KAAA;AAAA,QACL,GAAG,CAAA,CAAE,KAAA;AAAA,QACL,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,QAAQ,MAAA,CAAO,KAAA;AAAA,QACf,GAAI,aAAa,KAAA,KAAU,MAAA,GAAY,EAAE,YAAA,EAAc,YAAA,CAAa,KAAA,EAAM,GAAI,EAAC;AAAA,QAC/E,OAAO,KAAA,CAAM;AAAA,OACd,CAAA;AAAA,IACH;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,EAAA,GAAK,IAAI,IAAI,CAAA;AACnB,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,EAAA,GAAK,IAAI,IAAI,CAAA;AACnB,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,EAAA,GAAK,IAAI,IAAI,CAAA;AACnB,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,EAAA,GAAK,IAAI,IAAI,CAAA;AACnB,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,OAAO,EAAA,CAAG;AAAA,QACR,IAAA,EAAM,MAAA;AAAA,QACN,IAAI,EAAA,CAAG,KAAA;AAAA,QACP,IAAI,EAAA,CAAG,KAAA;AAAA,QACP,IAAI,EAAA,CAAG,KAAA;AAAA,QACP,IAAI,EAAA,CAAG,KAAA;AAAA,QACP,OAAO,KAAA,CAAM;AAAA,OACd,CAAA;AAAA,IACH;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,CAAA,GAAI,WAAW,QAAQ,CAAA;AAC7B,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,UAAA,EAAY,MAAA,EAAQ,CAAA,CAAE,KAAA,EAAO,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAChF;AAAA,IACA,KAAK,SAAA,EAAW;AACd,MAAA,MAAM,CAAA,GAAI,WAAW,QAAQ,CAAA;AAC7B,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,SAAA,EAAW,MAAA,EAAQ,CAAA,CAAE,KAAA,EAAO,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC/E;AAAA,IACA,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,MAAM,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAA,EAAY,8BAA8B,YAAY,CAAA;AACpF,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,MAAM,QAAA,GAAW,eAAA;AAAA,QAAgB,GAAA,CAAI,KAAA;AAAA,QAAO,CAAC,GAAG,EAAA,KAC9C,kBAAA,CAAmB,GAAG,IAAI,CAAA,UAAA,EAAa,CAAC,CAAA,CAAA,CAAA,EAAK,EAAE;AAAA,OACjD;AACA,MAAA,OAAO,QAAA,CAAS,EAAA,GACZ,EAAA,CAAG,EAAE,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAA,CAAS,KAAA,EAAO,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,CAAA,GAClE,QAAA;AAAA,IACN;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,EAAA,GAAK,IAAI,IAAI,CAAA;AACnB,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,EAAA,GAAK,IAAI,IAAI,CAAA;AACnB,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,CAAA,GAAI,IAAI,GAAG,CAAA;AACjB,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,OAAO,GAAG,EAAE,IAAA,EAAM,QAAA,EAAU,EAAA,EAAI,GAAG,KAAA,EAAO,EAAA,EAAI,EAAA,CAAG,KAAA,EAAO,GAAG,CAAA,CAAE,KAAA,EAAO,KAAA,EAAO,KAAA,CAAM,OAAO,CAAA;AAAA,IAC1F;AAAA,IACA,KAAK,SAAA,EAAW;AACd,MAAA,MAAM,EAAA,GAAK,IAAI,IAAI,CAAA;AACnB,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,EAAA,GAAK,IAAI,IAAI,CAAA;AACnB,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,EAAA,GAAK,IAAI,IAAI,CAAA;AACnB,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,MAAM,EAAA,GAAK,IAAI,IAAI,CAAA;AACnB,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,OAAO,EAAA,CAAG;AAAA,QACR,IAAA,EAAM,SAAA;AAAA,QACN,IAAI,EAAA,CAAG,KAAA;AAAA,QACP,IAAI,EAAA,CAAG,KAAA;AAAA,QACP,IAAI,EAAA,CAAG,KAAA;AAAA,QACP,IAAI,EAAA,CAAG,KAAA;AAAA,QACP,OAAO,KAAA,CAAM;AAAA,OACd,CAAA;AAAA,IACH;AAAA,IACA,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,CAAA,GAAI,IAAI,GAAG,CAAA;AACjB,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,MAAM,CAAA,GAAI,IAAI,GAAG,CAAA;AACjB,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,+BAA+B,gBAAgB,CAAA;AACtF,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,OAAO,GAAG,EAAE,IAAA,EAAM,OAAA,EAAS,CAAA,EAAG,EAAE,KAAA,EAAO,CAAA,EAAG,CAAA,CAAE,KAAA,EAAO,MAAM,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO,KAAA,CAAM,OAAO,CAAA;AAAA,IAC3F;AAAA,IACA;AAEE,MAAA,OAAO,aAAA;AAAA,QACL,IAAA;AAAA,QACA,CAAA,CAAE,KAAA;AAAA,QACF;AAAA,OACF;AAAA;AAEN,CAAA;AAEA,IAAM,iBAAA,GAAoB,CAAC,IAAA,EAAc,CAAA,KAA+B;AACtE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAMM,WAAU,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,mBAAmB,aAAa,CAAA;AAC7E,EAAA,IAAI,CAACA,QAAAA,CAAQ,EAAA,EAAI,OAAOA,QAAAA;AACxB,EAAA,MAAM,MAAM,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,wBAAwB,YAAY,CAAA;AAC5E,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,EAAA,MAAM,MAAA,GAAS,eAAA,CAAgB,GAAA,CAAI,KAAA,EAAO,CAAC,CAAA,EAAG,EAAA,KAAO,WAAA,CAAY,CAAA,EAAG,IAAI,CAAA,QAAA,EAAW,CAAC,CAAA,CAAA,CAAA,EAAK,EAAE,CAAC,CAAA;AAC5F,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAS,eAAe,CAAA;AACxD,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAS,gBAAgB,CAAA;AACzD,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,WAAA,GAAc,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,eAAe,gBAAgB,CAAA;AACrE,EAAA,IAAI,CAAC,WAAA,CAAY,EAAA,EAAI,OAAO,WAAA;AAC5B,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,SAASA,QAAAA,CAAQ,KAAA;AAAA,IACjB,QAAQ,MAAA,CAAO,KAAA;AAAA,IACf,KAAA,EAAO,MAAM,KAAA,IAAS,cAAA;AAAA,IACtB,GAAI,MAAM,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,EAAO,KAAA,CAAM,KAAA,EAAM,GAAI,EAAC;AAAA,IAC1D,GAAI,YAAY,KAAA,KAAU,MAAA,GAAY,EAAE,WAAA,EAAa,WAAA,CAAY,KAAA,EAAM,GAAI;AAAC,GAC7E,CAAA;AACH,CAAA;AAEA,IAAM,iBAAA,GAAoB,CAAC,IAAA,EAAc,CAAA,KAA+B;AACtE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,CAAA,GAAI,oBAAA,CAAqB,IAAA,EAAM,CAAC,CAAA;AACtC,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAIlB,EAAA,QAAQ,EAAE,KAAA;AAAO,IACf,KAAK,SAAA,EAAW;AACd,MAAA,MAAM,CAAA,GAAI,iBAAA,CAAkB,IAAA,EAAM,CAAC,CAAA;AACnC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,WAAW,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACzD;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,CAAA,GAAI,kBAAA,CAAmB,IAAA,EAAM,CAAC,CAAA;AACpC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,YAAY,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC1D;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,CAAA,GAAI,gBAAA,CAAiB,IAAA,EAAM,CAAC,CAAA;AAClC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAgB,EAAE,IAAA,EAAM,UAAU,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACrE;AAAA,IACA,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,CAAA,GAAI,eAAA,CAAgB,IAAA,EAAM,CAAC,CAAA;AACjC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,SAAS,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACvD;AAAA,IACA,KAAK,WAAA,EAAa;AAChB,MAAA,MAAM,CAAA,GAAI,mBAAA,CAAoB,IAAA,EAAM,CAAC,CAAA;AACrC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,aAAa,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC3D;AAAA,IACA,KAAK,SAAA,EAAW;AACd,MAAA,MAAM,CAAA,GAAI,iBAAA,CAAkB,IAAA,EAAM,CAAC,CAAA;AACnC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAgB,EAAE,IAAA,EAAM,WAAW,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACtE;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,CAAA,GAAI,kBAAA,CAAmB,IAAA,EAAM,CAAC,CAAA;AACpC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,YAAY,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC1D;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,CAAA,GAAI,kBAAA,CAAmB,IAAA,EAAM,CAAC,CAAA;AACpC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,YAAY,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC1D;AAAA,IACA,KAAK,eAAA,EAAiB;AACpB,MAAA,MAAM,CAAA,GAAI,uBAAA,CAAwB,IAAA,EAAM,CAAC,CAAA;AACzC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,iBAAiB,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC/D;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,CAAA,GAAI,cAAA,CAAe,IAAA,EAAM,CAAC,CAAA;AAChC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACtD;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,CAAA,GAAI,cAAA,CAAe,IAAA,EAAM,CAAC,CAAA;AAChC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACtD;AAAA,IACA,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,CAAA,GAAI,eAAA,CAAgB,IAAA,EAAM,CAAC,CAAA;AACjC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,SAAS,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACvD;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,CAAA,GAAI,cAAA,CAAe,IAAA,EAAM,CAAC,CAAA;AAChC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACtD;AAAA,IACA,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,CAAA,GAAI,eAAA,CAAgB,IAAA,EAAM,CAAC,CAAA;AACjC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAgB,EAAE,IAAA,EAAM,SAAS,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACpE;AAAA,IACA,KAAK,WAAA,EAAa;AAChB,MAAA,MAAM,CAAA,GAAI,mBAAA,CAAoB,IAAA,EAAM,CAAC,CAAA;AACrC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAgB,EAAE,IAAA,EAAM,aAAa,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACxE;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,CAAA,GAAI,cAAA,CAAe,IAAA,EAAM,CAAC,CAAA;AAChC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAgB,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACnE;AAAA,IACA,KAAK,SAAA,EAAW;AACd,MAAA,MAAM,CAAA,GAAI,iBAAA,CAAkB,IAAA,EAAM,CAAC,CAAA;AACnC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAgB,EAAE,IAAA,EAAM,WAAW,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACtE;AAAA,IACA;AACE,MAAA,OAAO,aAAA;AAAA,QACL,IAAA;AAAA,QACA,CAAA,CAAE,KAAA;AAAA,QACF;AAAA,OACF;AAAA;AAEN,CAAA;AAwBO,IAAM,0BAAA,GAAqCC,4BAAA,CAAsB,IAAA,CAAK,KAAK,CAAA;AAElF,IAAM,mBAAA,GAAsB,CAC1B,QAAA,EACA,IAAA,EACA,CAAA,KAC8B;AAC9B,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,CAAA,GAAI,oBAAA,CAAqB,IAAA,EAAM,CAAC,CAAA;AACtC,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAMlB,EAAA,MAAM,aAAA,GACJ,QAAA,CAAS,CAAA,EAAG,UAAU,CAAA,KAAM,SAAY,EAAE,QAAA,EAAU,mBAAA,EAAoB,GAAI,EAAC;AAC/E,EAAA,MAAM,aAAA,GACJ,QAAA,CAAS,CAAA,EAAG,UAAU,CAAA,KAAM,SAAY,EAAE,QAAA,EAAU,mBAAA,EAAoB,GAAI,EAAC;AAG/E,EAAA,MAAM,OAAA,GAAU,CACd,GAAA,EACA,WAAA,EACA,QAAA,KACwB;AACxB,IAAA,MAAM,CAAA,GAAI,QAAA,CAAS,CAAA,EAAG,OAAO,CAAA;AAC7B,IAAA,IAAI,MAAM,MAAA,EAAW,OAAO,IAAI,CAAA,EAAG,IAAI,UAAU,CAAC,CAAA;AAClD,IAAA,IAAI,QAAA,EAAU,IAAA,KAAS,QAAA,EAAU,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,QAAA,CAAS,IAAA,EAAM,CAAA;AAClF,IAAA,IAAI,UAAU,IAAA,KAAS,MAAA;AACrB,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,OAAA,EAAS,KAAK,QAAA,CAAS,EAAA,EAAI,YAAA,EAAc,WAAA,EAAa,CAAA;AAC1E,IAAA,OAAO,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAQ,CAAA;AAAA,EAC7C,CAAA;AACA,EAAA,QAAQ,EAAE,KAAA;AAAO,IACf,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,CAAA,GAAI,OAAA,CAAQ,aAAA,EAAeT,2BAAAA,CAAqB,MAAM,oBAAoB,CAAA;AAChF,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,CAAA,CAAE,KAAA,EAA0B,GAAG,aAAA,EAAe,CAAA,GAAI,CAAA;AAAA,IAC5F;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,CAAA,GAAI,OAAA,CAAQ,aAAA,EAAeA,2BAAAA,CAAqB,QAAQ,sBAAsB,CAAA;AACpF,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,CAAA,CAAE,KAAA,EAA0B,GAAG,aAAA,EAAe,CAAA,GAAI,CAAA;AAAA,IAC9F;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,CAAA,GAAI,OAAA,CAAQ,aAAA,EAAeA,2BAAAA,CAAqB,UAAU,wBAAwB,CAAA;AACxF,MAAA,OAAO,CAAA,CAAE,KACL,EAAA,CAAG;AAAA,QACD,IAAA,EAAM,UAAA;AAAA,QACN,OAAO,CAAA,CAAE,KAAA;AAAA,QACT,GAAG;AAAA,OACJ,CAAA,GACD,CAAA;AAAA,IACN;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,OAAA,GAAU,QAAA;AAAA,QACd,IAAA;AAAA,QACA,CAAA;AAAA,QACA,SAAA;AAAA,QACA,wBAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,MAAA,MAAM,KAAA,GAAQ,OAAA;AAAA,QACZ,sBAAA;AAAA,QACAA,2BAAAA,CAAqB,MAAA;AAAA,QACrB;AAAA,OACF;AACA,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,OAAO,EAAA,CAAG;AAAA,QACR,IAAA,EAAM,QAAA;AAAA,QACN,SAAS,OAAA,CAAQ,KAAA;AAAA,QACjB,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,GAAG;AAAA,OACJ,CAAA;AAAA,IACH;AAAA,IACA,KAAK,OAAA,EAAS;AAEZ,MAAA,MAAM,KAAA,GAAQ,OAAA;AAAA,QACZ,sBAAA;AAAA,QACAA,2BAAAA,CAAqB,KAAA;AAAA,QACrB;AAAA,OACF;AACA,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,OAAA,EAAS,OAAO,KAAA,CAAM,KAAA,EAAO,GAAG,aAAA,EAAe,CAAA;AAAA,IACnE;AAAA,IACA,KAAK,cAAA,EAAgB;AACnB,MAAA,MAAM,KAAA,GAAQ,OAAA;AAAA,QACZ,aAAA;AAAA,QACAA,2BAAAA,CAAqB,MAAA;AAAA,QACrB;AAAA,OACF;AACA,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,MAAM,GAAA,GAAM,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAO,YAAY,CAAA;AACjD,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,MAAM,GAAA,GAAM,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAO,YAAY,CAAA;AACjD,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAQ,YAAY,CAAA;AACnD,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,OAAO,EAAA,CAAG;AAAA,QACR,IAAA,EAAM,cAAA;AAAA,QACN,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,GAAG,aAAA;AAAA,QACH,WAAA,EAAa;AAAA,UACX,GAAI,IAAI,KAAA,KAAU,MAAA,GAAY,EAAE,GAAA,EAAK,GAAA,CAAI,KAAA,EAAM,GAAI,EAAC;AAAA,UACpD,GAAI,IAAI,KAAA,KAAU,MAAA,GAAY,EAAE,GAAA,EAAK,GAAA,CAAI,KAAA,EAAM,GAAI,EAAC;AAAA,UACpD,GAAI,KAAK,KAAA,KAAU,MAAA,GAAY,EAAE,IAAA,EAAM,IAAA,CAAK,KAAA,EAAM,GAAI;AAAC;AACzD,OACD,CAAA;AAAA,IACH;AAAA,IACA,KAAK,iBAAA,EAAmB;AACtB,MAAA,MAAM,OAAA,GAAU,QAAA;AAAA,QACd,IAAA;AAAA,QACA,CAAA;AAAA,QACA,SAAA;AAAA,QACA,iCAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AAKxB,MAAA,MAAM,YAAA,GAAe,QAAA,CAAS,CAAA,EAAG,aAAa,CAAA;AAC9C,MAAA,MAAM,WAAA,GACJ,YAAA,KAAiB,MAAA,GACb,EAAA,CAAgB,YAAY,IAC5B,iBAAA,CAAkB,CAAA,EAAG,IAAI,CAAA,YAAA,CAAA,EAAgB,YAAY,CAAA;AAC3D,MAAA,IAAI,CAAC,WAAA,CAAY,EAAA,EAAI,OAAO,WAAA;AAC5B,MAAA,MAAM,KAAA,GAAQ,OAAA;AAAA,QACZ,sBAAA;AAAA,QACAA,2BAAAA,CAAqB,MAAA;AAAA,QACrB;AAAA,OACF;AACA,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,OAAO,EAAA,CAAG;AAAA,QACR,IAAA,EAAM,iBAAA;AAAA,QACN,SAAS,OAAA,CAAQ,KAAA;AAAA,QACjB,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,GAAG,aAAA;AAAA,QACH,aAAa,WAAA,CAAY;AAAA,OAC1B,CAAA;AAAA,IACH;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,8BAA8B,UAAU,CAAA;AAC/E,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,aAAA,EAAeA,2BAAAA,CAAqB,MAAM,wBAAwB,CAAA;AACxF,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,OAAO,EAAA,CAAG;AAAA,QACR,IAAA,EAAM,UAAA;AAAA,QACN,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,GAAG,aAAA;AAAA,QACH,MAAM,IAAA,CAAK;AAAA,OACZ,CAAA;AAAA,IACH;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,aAAA,EAAeA,2BAAAA,CAAqB,MAAM,oBAAoB,CAAA;AACpF,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,MAAM,UAAU,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,eAAe,iBAAiB,CAAA;AAC7E,MAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,MAAA,MAAM,GAAA,GAAM,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAO,aAAa,CAAA;AAClD,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,MAAM,GAAA,GAAM,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAO,aAAa,CAAA;AAClD,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAQ,YAAY,CAAA;AACnD,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,OAAO,EAAA,CAAG;AAAA,QACR,IAAA,EAAM,MAAA;AAAA,QACN,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,GAAG,aAAA;AAAA,QACH,SAAS,OAAA,CAAQ,KAAA;AAAA,QACjB,WAAA,EAAa;AAAA,UACX,GAAI,IAAI,KAAA,KAAU,MAAA,GAAY,EAAE,GAAA,EAAK,GAAA,CAAI,KAAA,EAAM,GAAI,EAAC;AAAA,UACpD,GAAI,IAAI,KAAA,KAAU,MAAA,GAAY,EAAE,GAAA,EAAK,GAAA,CAAI,KAAA,EAAM,GAAI,EAAC;AAAA,UACpD,GAAI,KAAK,KAAA,KAAU,MAAA,GAAY,EAAE,IAAA,EAAM,IAAA,CAAK,KAAA,EAAM,GAAI;AAAC;AACzD,OACD,CAAA;AAAA,IACH;AAAA,IACA,KAAK,WAAA,EAAa;AAIhB,MAAA,MAAM,KAAA,GAAQ,OAAA;AAAA,QACZ,uBAAA;AAAA,QACAA,2BAAAA,CAAqB,SAAA;AAAA,QACrB;AAAA,OACF;AACA,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,MAAM,UAAU,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,eAAe,iBAAiB,CAAA;AAC7E,MAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,MAAA,MAAM,GAAA,GAAM,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAO,aAAa,CAAA;AAClD,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,MAAM,GAAA,GAAM,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAO,aAAa,CAAA;AAClD,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAQ,YAAY,CAAA;AACnD,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,OAAO,EAAA,CAAG;AAAA,QACR,IAAA,EAAM,WAAA;AAAA,QACN,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,GAAG,aAAA;AAAA,QACH,SAAS,OAAA,CAAQ,KAAA;AAAA,QACjB,WAAA,EAAa;AAAA,UACX,GAAI,IAAI,KAAA,KAAU,MAAA,GAAY,EAAE,GAAA,EAAK,GAAA,CAAI,KAAA,EAAM,GAAI,EAAC;AAAA,UACpD,GAAI,IAAI,KAAA,KAAU,MAAA,GAAY,EAAE,GAAA,EAAK,GAAA,CAAI,KAAA,EAAM,GAAI,EAAC;AAAA,UACpD,GAAI,KAAK,KAAA,KAAU,MAAA,GAAY,EAAE,IAAA,EAAM,IAAA,CAAK,KAAA,EAAM,GAAI;AAAC;AACzD,OACD,CAAA;AAAA,IACH;AAAA,IACA;AACE,MAAA,OAAO,aAAA,CAAc,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,0BAA0B,CAAA;AAAA;AAEpE,CAAA;AAEA,IAAM,eAAA,GAAkB,CAAC,IAAA,EAAc,CAAA,KAAsC;AAC3E,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,EAAA,GAAK,gBAAgB,IAAA,EAAM,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,EAAG,sBAAA,EAAwB,aAAa,CAAA;AACzF,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AAInB,EAAA,MAAM,OAAA,GAAU,gBAAgB,IAAA,EAAM,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,EAAG,sBAAA,EAAwB,aAAa,CAAA;AAC9F,EAAA,MAAM,IAAA,GAAO,QAAA;AAAA,IAAS,IAAA;AAAA,IAAM,CAAA;AAAA,IAAG,MAAA;AAAA,IAAQ,eAAA;AAAA,IAAiB,CAAC,CAAA,EAAG,CAAA,KAC1D,mBAAA,CAAoB,QAAQ,EAAA,GAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAI,OAAA,CAAQ,KAAA,EAAM,GAAI,MAAA,EAAW,GAAG,CAAC;AAAA,GACxF;AACA,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,0BAA0B,gBAAgB,CAAA;AACnF,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,WAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAA,EAAY,iBAAiB,WAAW,CAAA;AAC3E,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAQ,gBAAgB,CAAA;AACvD,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,IAAI,EAAA,CAAG,KAAA;AAAA,IACP,MAAM,IAAA,CAAK,KAAA;AAAA,IACX,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,UAAU,QAAA,CAAS,KAAA;AAAA,IACnB,GAAI,KAAK,KAAA,KAAU,MAAA,GAAY,EAAE,IAAA,EAAM,IAAA,CAAK,KAAA,EAAM,GAAI;AAAC,GACxD,CAAA;AACH,CAAA;AAEA,IAAM,cAAA,GAAiB,CAAC,IAAA,EAAc,CAAA,KAAqC;AACzE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,OAAA,GAAU,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,UAAU,iBAAiB,CAAA;AACjE,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,EAAA,MAAM,MAAM,YAAA,CAAa,CAAA,EAAG,IAAI,CAAA,OAAA,CAAA,EAAW,QAAQ,KAAK,CAAA;AACxD,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,EAAA,MAAM,MAAA,GAAS,eAAA;AAAA,IAAgB,GAAA,CAAI,KAAA;AAAA,IAAO,CAAC,GAAG,IAAA,KAC5C,eAAA,CAAgB,GAAG,IAAI,CAAA,QAAA,EAAW,CAAC,CAAA,CAAA,CAAA,EAAK,IAAI;AAAA,GAC9C;AACA,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,MAAM,WAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAA,EAAY,mBAAmB,YAAY,CAAA;AAC9E,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,MAAM,cAAc,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,aAAA,EAAe,0BAA0B,gBAAgB,CAAA;AAC/F,EAAA,IAAI,CAAC,WAAA,CAAY,EAAA,EAAI,OAAO,WAAA;AAE5B,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,YAAY,iBAAiB,CAAA;AAChE,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,QAAQ,MAAA,CAAO,KAAA;AAAA,IACf,UAAU,QAAA,CAAS,KAAA;AAAA,IACnB,aAAa,WAAA,CAAY,KAAA;AAAA,IACzB,GAAI,SAAS,KAAA,KAAU,MAAA,GAAY,EAAE,QAAA,EAAU,QAAA,CAAS,KAAA,EAAM,GAAI;AAAC,GACpE,CAAA;AACH,CAAA;AAEA,IAAM,gBAAA,GAAmB,CAAC,IAAA,EAAc,CAAA,KAAuC;AAC7E,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AAIb,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,sBAAsB,aAAa,CAAA;AAC1E,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,2BAA2B,gBAAgB,CAAA;AACpF,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,IAAA,GAAO,QAAA;AAAA,IAAS,IAAA;AAAA,IAAM,CAAA;AAAA,IAAG,MAAA;AAAA,IAAQ,uBAAA;AAAA,IAAyB,CAAC,CAAA,EAAG,CAAA,KAClE,mBAAA,CAAoB,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,IAAA,CAAK,KAAA,EAAM,EAAG,CAAA,EAAG,CAAC;AAAA,GAChE;AACA,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,KAAA,EAAO,IAAA,CAAK,KAAA,EAAO,CAAA;AACvE,CAAA;AAEA,IAAM,gBAAA,GAAmB,CAAC,IAAA,EAAc,CAAA,KAAuC;AAC7E,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,2BAA2B,gBAAgB,CAAA;AACpF,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,UAAU,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,kBAAkB,YAAY,CAAA;AAC3E,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,EAAA,MAAM,UAAU,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,iBAAiB,mBAAmB,CAAA;AACjF,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAQ,gBAAgB,CAAA;AACvD,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AAErB,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,YAAY,iBAAiB,CAAA;AAChE,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,SAAS,OAAA,CAAQ,KAAA;AAAA,IACjB,SAAS,OAAA,CAAQ,KAAA;AAAA,IACjB,GAAI,KAAK,KAAA,KAAU,MAAA,GAAY,EAAE,IAAA,EAAM,IAAA,CAAK,KAAA,EAAM,GAAI,EAAC;AAAA,IACvD,GAAI,SAAS,KAAA,KAAU,MAAA,GAAY,EAAE,QAAA,EAAU,QAAA,CAAS,KAAA,EAAM,GAAI;AAAC,GACpE,CAAA;AACH,CAAA;AAEA,IAAM,gBAAA,GAAmB,CAAC,IAAA,EAAc,CAAA,KAAuC;AAC7E,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,2BAA2B,gBAAgB,CAAA;AACpF,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,MAAA,GAAS,eAAA;AAAA,IACb,IAAA;AAAA,IACA,CAAA;AAAA,IACA,QAAA;AAAA,IACA,CAAC,WAAW,MAAM,CAAA;AAAA,IAClB,uBAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,wBAAwB,sBAAsB,CAAA;AACvF,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,WAAA,GAAc,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,eAAe,gBAAgB,CAAA;AACrE,EAAA,IAAI,CAAC,WAAA,CAAY,EAAA,EAAI,OAAO,WAAA;AAE5B,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,YAAY,iBAAiB,CAAA;AAChE,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AAKzB,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,YAAY,WAAW,CAAA;AAC1D,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAU,uBAAuB,CAAA;AAClE,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,QAAQ,MAAA,CAAO,KAAA;AAAA,IACf,OAAO,KAAA,CAAM,KAAA;AAAA;AAAA;AAAA;AAAA,IAIb,GAAI,QAAA,CAAS,CAAA,EAAG,UAAU,CAAA,KAAM,SAAY,EAAE,QAAA,EAAU,mBAAA,EAAoB,GAAI,EAAC;AAAA,IACjF,GAAI,YAAY,KAAA,KAAU,MAAA,GAAY,EAAE,WAAA,EAAa,WAAA,CAAY,KAAA,EAAM,GAAI,EAAC;AAAA,IAC5E,GAAI,SAAS,KAAA,KAAU,MAAA,GAAY,EAAE,QAAA,EAAU,QAAA,CAAS,KAAA,EAAM,GAAI,EAAC;AAAA,IACnE,GAAI,SAAS,KAAA,KAAU,IAAA,GAAO,EAAE,QAAA,EAAU,IAAA,KAAS,EAAC;AAAA,IACpD,GAAI,OAAO,KAAA,KAAU,MAAA,GAAY,EAAE,MAAA,EAAQ,MAAA,CAAO,KAAA,EAAM,GAAI,EAAC;AAAA,IAC7D,GAAI,QAAA,CAAS,CAAA,EAAG,eAAe,CAAA,KAAM,SAAY,EAAE,aAAA,EAAe,mBAAA,EAAoB,GAAI;AAAC,GAC5F,CAAA;AACH,CAAA;AAEA,IAAM,oBAAA,GAAuB,CAAC,IAAA,EAAc,CAAA,KAA2C;AACrF,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,OAAA,GAAU,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,UAAU,oBAAoB,CAAA;AACpE,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,EAAA,MAAM,MAAM,YAAA,CAAa,CAAA,EAAG,IAAI,CAAA,OAAA,CAAA,EAAW,QAAQ,KAAK,CAAA;AACxD,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,EAAA,MAAM,MAAA,GAAS,eAAA;AAAA,IAAgB,GAAA,CAAI,KAAA;AAAA,IAAO,CAAC,GAAG,IAAA,KAC5C,aAAA,CAAc,GAAG,IAAI,CAAA,QAAA,EAAW,CAAC,CAAA,CAAA,CAAA,EAAK,IAAI;AAAA,GAC5C;AACA,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,+BAA+B,gBAAgB,CAAA;AACxF,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,WAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAA,EAAY,iBAAiB,WAAW,CAAA;AAC3E,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AAEzB,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,YAAY,iBAAiB,CAAA;AAChE,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,QAAQ,MAAA,CAAO,KAAA;AAAA,IACf,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,UAAU,QAAA,CAAS,KAAA;AAAA,IACnB,UAAU,MAAM,iBAAA;AAAA,IAChB,GAAI,SAAS,KAAA,KAAU,MAAA,GAAY,EAAE,QAAA,EAAU,QAAA,CAAS,KAAA,EAAM,GAAI;AAAC,GACpE,CAAA;AACH,CAAA;AAEA,IAAM,eAAA,GAAkB,CAAC,IAAA,EAAc,CAAA,KAAsC;AAC3E,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,CAAA,GAAI,oBAAA,CAAqB,IAAA,EAAM,CAAC,CAAA;AACtC,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,QAAQ,EAAE,KAAA;AAAO,IACf,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,CAAA,GAAI,cAAA,CAAe,IAAA,EAAM,CAAC,CAAA;AAChC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACtD;AAAA,IACA,KAAK,SAAA,EAAW;AACd,MAAA,MAAM,MAAA,GAAS,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,SAAS,mBAAmB,CAAA;AACjE,MAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,MAAA,MAAM,MAAM,YAAA,CAAa,CAAA,EAAG,IAAI,CAAA,MAAA,CAAA,EAAU,OAAO,KAAK,CAAA;AACtD,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,MAAM,KAAA,GAAQ,eAAA;AAAA,QAAgB,GAAA,CAAI,KAAA;AAAA,QAAO,CAAC,GAAG,IAAA,KAC3C,gBAAA,CAAiB,GAAG,IAAI,CAAA,OAAA,EAAU,CAAC,CAAA,CAAA,CAAA,EAAK,IAAI;AAAA,OAC9C;AACA,MAAA,OAAO,KAAA,CAAM,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,WAAW,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,CAAA,GAAI,KAAA;AAAA,IAClE;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,CAAA,GAAI,gBAAA,CAAiB,IAAA,EAAM,CAAC,CAAA;AAClC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,UAAU,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACxD;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,MAAM,CAAA,GAAI,oBAAA,CAAqB,IAAA,EAAM,CAAC,CAAA;AACtC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,cAAc,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC5D;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,CAAA,GAAI,gBAAA,CAAiB,IAAA,EAAM,CAAC,CAAA;AAClC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,UAAU,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACxD;AAAA,IACA;AACE,MAAA,OAAO,aAAA,CAAc,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,+CAA+C,CAAA;AAAA;AAEzF,CAAA;AAYA,IAAM,aAAA,GAAgB,CAAC,IAAA,EAAc,CAAA,KAA+C;AAClF,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,MAAmC,EAAC;AAC1C,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,CAAC,CAAA,IAAK,GAAG,KAAA,EAAO;AAC7B,IAAA,MAAM,SAAA,GAAY,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA;AAC9B,IAAA,MAAM,CAAA,GAAI,UAAA,CAAW,SAAA,EAAW,CAAC,CAAA;AACjC,IAAA,IAAI,CAAC,EAAE,EAAA,EAAI;AACT,MAAA,IAAI,CAAA,CAAE,KAAA,CAAM,IAAA,KAAS,iBAAA,EAAmB,OAAO,CAAA;AAC/C,MAAA,MAAM,GAAA,GAAM,CAAA,CAAE,IAAA,KAAS,SAAA,GAAY,EAAE,KAAA,GAAQ,EAAA;AAC7C,MAAA,OAAO,SAAA;AAAA,QACL,iBAAA;AAAA,QACA,SAAA;AAAA,QACA,CAAA,gBAAA,EAAmB,GAAG,CAAA,OAAA,EAAU,CAAC,CAAA,sBAAA,CAAA;AAAA,QACjC,UAAA,CAAW,KAAK,KAAK;AAAA,OACvB;AAAA,IACF;AACA,IAAA,GAAA,CAAI,CAAC,IAAI,CAAA,CAAE,KAAA;AAAA,EACb;AACA,EAAA,OAAO,GAAG,GAAG,CAAA;AACf,CAAA;AAGA,IAAM,aAAA,GAAgB,CAAC,KAAA,EAAO,SAAA,EAAW,OAAO,CAAA;AAMhD,IAAM,eAAA,GAAkB,CAAC,IAAA,EAAc,CAAA,KAA0C;AAC/E,EAAA,MAAMI,MAAAA,GAAQ,QAAA;AAAA,IACZ,IAAA;AAAA,IACA,CAAA;AAAA,IACA,OAAA;AAAA,IACA,6DAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,CAACA,MAAAA,CAAM,EAAA,EAAI,OAAOA,MAAAA;AAGtB,EAAA,MAAM,GAAA,GAAM,eAAA;AAAA,IACV,IAAA;AAAA,IACA,CAAA;AAAA,IACA,KAAA;AAAA,IACA,CAAC,WAAW,OAAO,CAAA;AAAA,IACnB,sCAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AAEpB,EAAA,MAAM,WAAA,GAAc,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,WAAW,UAAU,CAAA;AAC3D,EAAA,IAAI,CAAC,WAAA,CAAY,EAAA,EAAI,OAAO,WAAA;AAC5B,EAAA,MAAM,CAAA,GAA6B;AAAA,IACjC,IAAA,EAAM,WAAA;AAAA,IACN,OAAOA,MAAAA,CAAM,KAAA;AAAA,IACb,KAAK,GAAA,CAAI,KAAA;AAAA,IACT,WAAA,EAAa,YAAY,KAAA,IAAS;AAAA,GACpC;AACA,EAAA,OAAO,GAAG,CAAC,CAAA;AACb,CAAA;AAEA,IAAM,oBAAA,GAAuB,CAAC,IAAA,EAAc,CAAA,KAA2C;AACrF,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,CAAA,GAAI,oBAAA,CAAqB,IAAA,EAAM,CAAC,CAAA;AACtC,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,QAAQ,EAAE,KAAA;AAAO,IACf,KAAK,MAAA;AACH,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,MAAA,EAAQ,CAAA;AAAA,IAC5B,KAAK,SAAA;AACH,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAC/B,KAAK,MAAA;AACH,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,MAAA,EAAQ,CAAA;AAAA,IAC5B,KAAK,UAAA;AACH,MAAA,OAAO,GAAG,EAAE,IAAA,EAAM,YAAY,MAAA,EAAQ,MAAM,mBAAmB,CAAA;AAAA,IACjE,KAAK,UAAA;AACH,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,UAAA,EAAY,GAAA,EAAK,MAAM,KAAA,EAAO,QAAA,EAAU,MAAM,iBAAA,EAAmB,CAAA;AAAA,IACrF,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,gCAAgC,gBAAgB,CAAA;AACzF,MAAA,OAAO,KAAA,CAAM,EAAA,GACT,EAAA,CAAG,EAAE,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,OAAA,EAAS,MAAM,iBAAA,EAAmB,CAAA,GAC3E,KAAA;AAAA,IACN;AAAA,IACA,KAAK,aAAA,EAAe;AAClB,MAAA,MAAM,QAAA,GAAW,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,WAAW,mBAAmB,CAAA;AACrE,MAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,MAAA,MAAM,MAAM,YAAA,CAAa,CAAA,EAAG,IAAI,CAAA,QAAA,CAAA,EAAY,SAAS,KAAK,CAAA;AAC1D,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AAEpB,MAAA,MAAM,UAAU,eAAA,CAAqB,GAAA,CAAI,KAAA,EAAO,CAAC,GAAG,IAAA,KAAS;AAC3D,QAAA,MAAM,KAAK,aAAA,CAAc,CAAA,EAAG,IAAI,CAAA,SAAA,EAAY,CAAC,KAAK,IAAI,CAAA;AACtD,QAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,QAAA,MAAM,KAAA,GAAQ,QAAA;AAAA,UACZ,CAAA,EAAG,IAAI,CAAA,SAAA,EAAY,CAAC,CAAA,CAAA,CAAA;AAAA,UACpB,EAAA,CAAG,KAAA;AAAA,UACH,OAAA;AAAA,UACA,yBAAA;AAAA,UACA;AAAA,SACF;AACA,QAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,QAAA,OAAO,GAAQ,CAAC,KAAA,CAAM,KAAA,EAAO,MAAM,iBAAiB,CAAC,CAAA;AAAA,MACvD,CAAC,CAAA;AACD,MAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,MAAA,MAAM,IAA6B,EAAE,IAAA,EAAM,aAAA,EAAe,OAAA,EAAS,QAAQ,KAAA,EAAM;AACjF,MAAA,OAAO,GAAG,CAAC,CAAA;AAAA,IACb;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,CAAA,GAA6B;AAAA,QACjC,IAAA,EAAM,MAAA;AAAA,QACN,MAAM,MAAMF,QAAAA;AAAA,QACZ,OAAO,OAAO,EAAE,IAAA,EAAM,SAAA,EAAW,OAAOA,QAAAA,EAAQ;AAAA,OAClD;AACA,MAAA,OAAO,GAAG,CAAC,CAAA;AAAA,IACb;AAAA,IACA,KAAK,MAAA,EAAQ;AAMX,MAAA,IAAI,aAAA,CAAc,KAAK,CAAC,GAAA,KAAQ,SAAS,CAAA,EAAG,GAAG,MAAM,MAAS,CAAA;AAC5D,QAAA,OAAO,eAAA,CAAgB,MAAM,CAAC,CAAA;AAChC,MAAA,MAAM,CAAA,GAA6B;AAAA,QACjC,IAAA,EAAM,MAAA;AAAA,QACN,OAAO,OAAO,EAAE,IAAA,EAAM,SAAA,EAAW,OAAOA,QAAAA,EAAQ,CAAA;AAAA,QAChD,MAAM,MAAM;AAAA,OACd;AACA,MAAA,OAAO,GAAG,CAAC,CAAA;AAAA,IACb;AAAA,IACA,KAAK,WAAA;AACH,MAAA,OAAO,eAAA,CAAgB,MAAM,CAAC,CAAA;AAAA,IAChC,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,IAA6B,EAAE,IAAA,EAAM,UAAA,EAAY,QAAA,EAAU,MAAM,CAAA,EAAE;AACzE,MAAA,OAAO,GAAG,CAAC,CAAA;AAAA,IACb;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,CAAA,GAA6B;AAAA,QACjC,IAAA,EAAM,QAAA;AAAA,QACN,QAAQ,MAAM;AAAA,OAChB;AACA,MAAA,OAAO,GAAG,CAAC,CAAA;AAAA,IACb;AAAA,IACA;AACE,MAAA,OAAO,aAAA;AAAA,QACL,IAAA;AAAA,QACA,CAAA,CAAE,KAAA;AAAA,QACF;AAAA,OACF;AAAA;AAEN,CAAA;AAEA,IAAM,kBAAA,GAAqB,CAAC,IAAA,EAAc,CAAA,KAAyC;AACjF,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AAEb,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAU,gBAAgB,CAAA;AAC3D,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,MAAM,IAAA,GAAO,gBAAgB,IAAA,EAAM,CAAA,EAAG,QAAQ,CAAC,MAAM,CAAA,EAAG,gBAAA,EAAkB,oBAAoB,CAAA;AAC9F,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,KAAA,GAAQ,eAAA;AAAA,IACZ,IAAA;AAAA,IACA,CAAA;AAAA,IACA,OAAA;AAAA,IACA,CAAC,UAAU,OAAO,CAAA;AAAA,IAClB,qBAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAS,iBAAiB,CAAA;AAC1D,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AAGtB,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,CAAA,EAAG,OAAO,CAAA,KAAM,MAAA;AAC1C,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,CAAA,EAAG,OAAO,CAAA;AAClC,EAAA,IAAIE,MAAAA;AACJ,EAAA,IAAI,WAAW,MAAA,EAAW;AACxB,IAAA,MAAM,EAAA,GAAK,aAAA,CAAc,CAAA,EAAG,IAAI,UAAU,MAAM,CAAA;AAChD,IAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,IAAAA,SAAQ,EAAA,CAAG,KAAA;AAAA,EACb;AACA,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,MAAA,EAAQ,MAAA,CAAO,KAAA,IAAS,EAAE,MAAM,MAAA,EAAO;AAAA,IACvC,MAAM,IAAA,CAAK,KAAA;AAAA,IACX,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,KAAA,EAAO,KAAA,CAAM,KAAA,IAAS,EAAE,MAAM,MAAA,EAAO;AAAA,IACrC,GAAI,QAAA,GAAW,EAAE,KAAA,EAAO,OAAO,EAAE,IAAA,EAAM,OAAA,EAAiB,CAAA,EAAG,GAAI,EAAC;AAAA,IAChE,GAAIA,MAAAA,KAAU,MAAA,GAAY,EAAE,KAAA,EAAAA,MAAAA,KAAU;AAAC,GACxC,CAAA;AACH,CAAA;AAQA,IAAM,gBAAA,GAAmB,CAAC,IAAA,EAAc,CAAA,KAA8B;AACpE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,QAAA,GAAW,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,WAAW,yBAAyB,CAAA;AAC3E,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,MAAM,OAAO,YAAA,CAAa,CAAA,EAAG,IAAI,CAAA,QAAA,CAAA,EAAY,SAAS,KAAK,CAAA;AAC3D,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,OAAA,GAAU,eAAA;AAAA,IAAgB,IAAA,CAAK,KAAA;AAAA,IAAO,CAAC,GAAG,IAAA,KAC9C,gBAAA,CAAiB,GAAG,IAAI,CAAA,SAAA,EAAY,CAAC,CAAA,CAAA,CAAA,EAAK,IAAI;AAAA,GAChD;AACA,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,EAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,QAAQ,wBAAwB,CAAA;AACpE,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,OAAO,YAAA,CAAa,CAAA,EAAG,IAAI,CAAA,KAAA,CAAA,EAAS,MAAM,KAAK,CAAA;AACrD,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,OAAO,eAAA,CAAgB,IAAA,CAAK,KAAA,EAAO,CAAC,GAAG,IAAA,KAAS;AACpD,IAAA,MAAM,KAAK,YAAA,CAAa,CAAA,EAAG,IAAI,CAAA,MAAA,EAAS,CAAC,KAAK,IAAI,CAAA;AAClD,IAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,IAAA,OAAO,eAAA;AAAA,MAAgB,EAAA,CAAG,KAAA;AAAA,MAAO,CAAC,CAAA,EAAG,IAAA,KACnC,gBAAA,CAAiB,CAAA,EAAG,IAAI,CAAA,MAAA,EAAS,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,CAAA,EAAK,IAAI;AAAA,KACnD;AAAA,EACF,CAAC,CAAA;AACD,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,OAAO,EAAA,CAAG,EAAE,OAAA,EAAS,OAAA,CAAQ,OAAO,IAAA,EAAM,IAAA,CAAK,OAAO,CAAA;AACxD,CAAA;AAEA,IAAM,cAAA,GAAiB,CAAC,IAAA,EAAc,CAAA,KAAqC;AACzE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,QAAA,GAAW,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,WAAW,cAAc,CAAA;AAChE,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,MAAM,MAAM,YAAA,CAAa,CAAA,EAAG,IAAI,CAAA,QAAA,CAAA,EAAY,SAAS,KAAK,CAAA;AAC1D,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,EAAA,MAAM,OAAA,GAAU,eAAA;AAAA,IAAgB,GAAA,CAAI,KAAA;AAAA,IAAO,CAAC,GAAG,IAAA,KAC7C,kBAAA,CAAmB,GAAG,IAAI,CAAA,SAAA,EAAY,CAAC,CAAA,CAAA,CAAA,EAAK,IAAI;AAAA,GAClD;AACA,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AAExB,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,YAAY,WAAW,CAAA;AAC1D,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,MAAM,MAAA,GAAS,eAAA;AAAA,IACb,IAAA;AAAA,IACA,CAAA;AAAA,IACA,QAAA;AAAA,IACA,CAAC,QAAQ,MAAM,CAAA;AAAA,IACf,qBAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,MAAM,WAAA,GAAc,QAAA,CAAS,CAAA,EAAG,YAAY,CAAA,KAAM,MAAA;AAElD,EAAA,MAAM,SAAA,GAAY,QAAA,CAAS,CAAA,EAAG,QAAQ,CAAA,KAAM,MAAA;AAC5C,EAAA,MAAM,YAAA,GAAe,QAAA,CAAS,CAAA,EAAG,aAAa,CAAA;AAC9C,EAAA,IAAI,WAAA;AACJ,EAAA,IAAI,iBAAiB,MAAA,EAAW;AAC9B,IAAA,MAAM,EAAA,GAAK,aAAA,CAAc,CAAA,EAAG,IAAI,gBAAgB,YAAY,CAAA;AAC5D,IAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,IAAA,WAAA,GAAc,EAAA,CAAG,KAAA;AAAA,EACnB;AAGA,EAAA,MAAM,WAAA,GAAc,QAAA,CAAS,CAAA,EAAG,YAAY,CAAA;AAC5C,EAAA,IAAI,UAAA;AACJ,EAAA,IAAI,gBAAgB,MAAA,EAAW;AAC7B,IAAA,MAAM,EAAA,GAAK,gBAAA,CAAiB,CAAA,EAAG,IAAI,eAAe,WAAW,CAAA;AAC7D,IAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,IAAA,UAAA,GAAa,EAAA,CAAG,KAAA;AAAA,EAClB;AACA,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,SAAS,OAAA,CAAQ,KAAA;AAAA,IACjB,QAAA,EAAU,SAAS,KAAA,IAAS,KAAA;AAAA,IAC5B,QAAQ,MAAA,CAAO,KAAA;AAAA,IACf,GAAI,WAAA,GAAc,EAAE,YAAY,MAAM,iBAAA,KAAsB,EAAC;AAAA,IAC7D,GAAI,SAAA,GAAY,EAAE,QAAQ,MAAMF,QAAAA,KAAY,EAAC;AAAA,IAC7C,GAAI,WAAA,KAAgB,MAAA,GAAY,EAAE,WAAA,KAAgB,EAAC;AAAA,IACnD,GAAI,UAAA,KAAe,MAAA,GAAY,EAAE,UAAA,KAAe;AAAC,GAClD,CAAA;AACH,CAAA;AAEA,IAAM,eAAA,GAAkB,CAAC,IAAA,EAAc,CAAA,KAAsC;AAC3E,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,aAAa,eAAe,CAAA;AACnE,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,MAAA,GAAS,eAAA;AAAA,IACb,IAAA;AAAA,IACA,CAAA;AAAA,IACA,QAAA;AAAA,IACA,CAAC,MAAM,CAAA;AAAA,IACP,sBAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,MAAM,SAAS,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,iBAAiB,aAAa,CAAA;AACzE,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,MAAM,QAAA,GAAW,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,WAAW,qBAAqB,CAAA;AACvE,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,MAAM,MAAM,YAAA,CAAa,CAAA,EAAG,IAAI,CAAA,QAAA,CAAA,EAAY,SAAS,KAAK,CAAA;AAC1D,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,EAAA,MAAM,OAAA,GAAU,eAAA;AAAA,IAAgB,GAAA,CAAI,KAAA;AAAA,IAAO,CAAC,GAAG,IAAA,KAC7C,aAAA,CAAc,GAAG,IAAI,CAAA,SAAA,EAAY,CAAC,CAAA,CAAA,CAAA,EAAK,IAAI;AAAA,GAC7C;AACA,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAS,gBAAgB,CAAA;AACzD,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,aAAA,GAAgB,QAAA,CAAS,CAAA,EAAG,cAAc,CAAA,KAAM,MAAA;AAEtD,EAAA,MAAM,OAAA,GAAU,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,WAAW,WAAW,CAAA;AACxD,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,MAAM,IAAA,CAAK,KAAA;AAAA,IACX,QAAQ,MAAA,CAAO,KAAA;AAAA,IACf,QAAQ,MAAA,CAAO,KAAA;AAAA,IACf,SAAS,OAAA,CAAQ,KAAA;AAAA,IACjB,OAAA,EAAS,QAAQ,KAAA,IAAS,KAAA;AAAA,IAC1B,GAAI,MAAM,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,EAAO,KAAA,CAAM,KAAA,EAAM,GAAI,EAAC;AAAA,IAC1D,GAAI,aAAA,GAAgB,EAAE,cAAc,MAAM,iBAAA,KAAsB;AAAC,GAClE,CAAA;AACH,CAAA;AAEA,IAAM,aAAA,GAAgB,CACpB,IAAA,EACA,CAAA,KACoD;AACpD,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,iBAAiB,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,gBAAA,EAAkB,yBAAyB,YAAY,CAAA;AAChG,EAAA,IAAI,CAAC,cAAA,CAAe,EAAA,EAAI,OAAO,cAAA;AAC/B,EAAA,MAAM,eAAA,GAAkB,QAAA;AAAA,IACtB,IAAA;AAAA,IACA,CAAA;AAAA,IACA,iBAAA;AAAA,IACA,wBAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,CAAC,eAAA,CAAgB,EAAA,EAAI,OAAO,eAAA;AAChC,EAAA,MAAM,MAAA,GAAS,eAAA;AAAA,IACb,IAAA;AAAA,IACA,CAAA;AAAA,IACA,QAAA;AAAA,IACA,CAAC,QAAQ,SAAS,CAAA;AAAA,IAClB,oBAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,gBAAgB,UAAU,CAAA;AACjE,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,cAAA,GAAiB,QAAA,CAAS,CAAA,EAAG,eAAe,CAAA,KAAM,MAAA;AACxD,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,gBAAgB,cAAA,CAAe,KAAA;AAAA,IAC/B,iBAAiB,eAAA,CAAgB,KAAA;AAAA,IACjC,QAAQ,MAAA,CAAO,KAAA;AAAA,IACf,MAAM,IAAA,CAAK,KAAA;AAAA,IACX,GAAI,cAAA,GAAiB,EAAE,eAAe,MAAM,iBAAA,KAAsB;AAAC,GACpE,CAAA;AACH,CAAA;AAEA,IAAM,aAAA,GAAgB,CAAC,IAAA,EAAc,CAAA,KAAoC;AACvE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,CAAA,GAAI,oBAAA,CAAqB,IAAA,EAAM,CAAC,CAAA;AACtC,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,QAAQ,EAAE,KAAA;AAAO;AAAA,IAEf,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,CAAA,GAAI,cAAA,CAAe,IAAA,EAAM,CAAC,CAAA;AAChC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACtD;AAAA,IACA,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,CAAA,GAAI,eAAA,CAAgB,IAAA,EAAM,CAAC,CAAA;AACjC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,SAAS,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACvD;AAAA,IACA,KAAK,KAAA,EAAO;AACV,MAAA,MAAM,CAAA,GAAI,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAC/B,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,OAAO,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACrD;AAAA,IACA;AACE,MAAA,OAAO,aAAA,CAAc,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,gCAAgC,CAAA;AAAA;AAE1E,CAAA;AAIA,IAAM,cAAA,GAAiB,CAAC,IAAA,EAAc,MAAA,KAAgD;AACpF,EAAA,MAAM,SAAA,GAAY,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,YAAY,oBAAoB,CAAA;AAC7E,EAAA,IAAI,CAAC,SAAA,CAAU,EAAA,EAAI,OAAO,SAAA;AAC1B,EAAA,MAAM,MAAM,YAAA,CAAa,CAAA,EAAG,IAAI,CAAA,SAAA,CAAA,EAAa,UAAU,KAAK,CAAA;AAC5D,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,EAAA,OAAO,eAAA,CAAgB,GAAA,CAAI,KAAA,EAAO,CAAC,CAAA,EAAG,IAAA,KAAS,aAAA,CAAc,CAAA,EAAG,IAAI,CAAA,UAAA,EAAa,CAAC,CAAA,CAAA,CAAA,EAAK,IAAI,CAAC,CAAA;AAC9F,CAAA;AAIA,IAAM,eAAA,GAAkB,CAAC,IAAA,EAAc,CAAA,KAA6B;AAClE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,CAAA,GAAI,oBAAA,CAAqB,IAAA,EAAM,CAAC,CAAA;AACtC,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,QAAQ,EAAE,KAAA;AAAO,IACf,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,YAAY,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,WAAA,EAAa,eAAe,iBAAiB,CAAA;AACjF,MAAA,IAAI,CAAC,SAAA,CAAU,EAAA,EAAI,OAAO,SAAA;AAC1B,MAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,aAAa,WAAW,CAAA;AAC/D,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,MAAM,GAAA,GAAM,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAO,UAAU,CAAA;AAC/C,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,OAAO,EAAA,CAAG;AAAA,QACR,IAAA,EAAM,MAAA;AAAA,QACN,WAAW,SAAA,CAAU,KAAA;AAAA,QACrB,MAAM,IAAA,CAAK,KAAA;AAAA,QACX,GAAI,IAAI,KAAA,KAAU,MAAA,GAAY,EAAE,GAAA,EAAK,GAAA,CAAI,KAAA,EAAM,GAAI;AAAC,OACrD,CAAA;AAAA,IACH;AAAA,IACA,KAAK,MAAA,EAAQ;AAIX,MAAA,IACE,QAAA,CAAS,CAAA,EAAG,MAAM,CAAA,KAAM,UACxB,QAAA,CAAS,CAAA,EAAG,SAAS,CAAA,KAAM,MAAA,IAC3B,QAAA,CAAS,CAAA,EAAG,iBAAiB,MAAM,MAAA,EACnC;AACA,QAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,MAAA,EAAQ,CAAA;AAAA,MAC5B;AAGA,MAAA,MAAM,IAAA,GACJ,SAAS,CAAA,EAAG,MAAM,MAAM,MAAA,IAAa,QAAA,CAAS,CAAA,EAAG,SAAS,CAAA,KAAM,MAAA,GAC5D,GAAG,CAAC,CAAA,GACJ,gBAAgB,IAAA,EAAM,CAAA,EAAG,QAAQ,CAAC,SAAS,CAAA,EAAG,cAAA,EAAgB,UAAU,CAAA;AAC9E,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,MAAM,GAAA,GAAM,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAO,UAAU,CAAA;AAC/C,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,MAAM,eAAA,GAAkB,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,mBAAmB,aAAa,CAAA;AAC1E,MAAA,IAAI,CAAC,eAAA,CAAgB,EAAA,EAAI,OAAO,eAAA;AAChC,MAAA,OAAO,EAAA,CAAG;AAAA,QACR,IAAA,EAAM,MAAA;AAAA,QACN,MAAM,IAAA,CAAK,KAAA;AAAA,QACX,GAAI,IAAI,KAAA,KAAU,MAAA,GAAY,EAAE,GAAA,EAAK,GAAA,CAAI,KAAA,EAAM,GAAI,EAAC;AAAA,QACpD,GAAI,gBAAgB,KAAA,KAAU,MAAA,GAAY,EAAE,eAAA,EAAiB,eAAA,CAAgB,KAAA,EAAM,GAAI;AAAC,OACzF,CAAA;AAAA,IACH;AAAA,IACA,KAAK,MAAA;AACH,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,MAAA,EAAQ,CAAA;AAAA,IAC5B;AACE,MAAA,OAAO,aAAA,CAAc,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,oBAAoB,CAAA;AAAA;AAE9D,CAAA;AAEA,IAAM,aAAA,GAAgB,CAAC,IAAA,EAAc,CAAA,KAA2B;AAC9D,EAAA,MAAM,CAAA,GAAI,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAC/B,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,QAAQ,EAAE,KAAA;AAAO,IACf,KAAK,OAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL,KAAK,WAAA;AAAA,IACL,KAAK,WAAA;AACH,MAAA,OAAO,EAAA,CAAG,EAAE,KAAK,CAAA;AAAA,IACnB;AACE,MAAA,OAAO,aAAA,CAAc,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,sCAAsC,CAAA;AAAA;AAEhF,CAAA;AAEA,IAAM,SAAA,GAAY,CAAC,IAAA,EAAc,CAAA,KAAoC;AACnE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,QAAA,GAAW,cAAA,CAAe,IAAA,EAAM,CAAC,CAAA;AACvC,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,MAAM,OAAA,GAAU,gBAAgB,IAAA,EAAM,CAAA,EAAG,WAAW,CAAC,OAAO,GAAG,gBAAgB,CAAA;AAC/E,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,EAAA,MAAM,SAAS,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,iBAAiB,eAAe,CAAA;AAC3E,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,eAAe,aAAa,CAAA;AACnE,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,UAAU,QAAA,CAAS,KAAA;AAAA,IACnB,GAAI,QAAQ,KAAA,KAAU,MAAA,GAAY,EAAE,OAAA,EAAS,OAAA,CAAQ,KAAA,EAAM,GAAI,EAAC;AAAA,IAChE,QAAQ,MAAA,CAAO,KAAA;AAAA,IACf,MAAM,IAAA,CAAK;AAAA,GACZ,CAAA;AACH,CAAA;AAEA,IAAM,oBAAA,GAAuB,CAAC,IAAA,EAAc,CAAA,KAA2C;AACrF,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,QAAA,GAAW,cAAA,CAAe,IAAA,EAAM,CAAC,CAAA;AACvC,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,MAAM,SAAS,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,gBAAgB,YAAY,CAAA;AACvE,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,OAAO,EAAA,CAAG,EAAE,QAAA,EAAU,QAAA,CAAS,OAAO,MAAA,EAAQ,MAAA,CAAO,OAAO,CAAA;AAC9D,CAAA;AAEA,IAAM,eAAA,GAAkB,CAAC,IAAA,EAAc,CAAA,KAA6B;AAClE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,+BAA+B,gBAAgB,CAAA;AACxF,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAQ,gBAAgB,CAAA;AACvD,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,YAAY,iBAAiB,CAAA;AAChE,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,GAAI,KAAK,KAAA,KAAU,MAAA,GAAY,EAAE,IAAA,EAAM,IAAA,CAAK,KAAA,EAAM,GAAI,EAAC;AAAA,IACvD,GAAI,SAAS,KAAA,KAAU,MAAA,GAAY,EAAE,QAAA,EAAU,QAAA,CAAS,KAAA,EAAM,GAAI;AAAC,GACpE,CAAA;AACH,CAAA;AAEA,IAAM,cAAA,GAAiB,CAAC,IAAA,EAAc,CAAA,KAAqC;AACzE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,QAAA,GAAW,cAAA,CAAe,IAAA,EAAM,CAAC,CAAA;AACvC,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AAEzB,EAAA,MAAM,YAAA,GAAe,QAAA,CAAS,CAAA,EAAG,aAAa,CAAA;AAC9C,EAAA,MAAM,WAAA,GACJ,YAAA,KAAiB,MAAA,GACb,EAAA,CAAgB,YAAY,IAC5B,iBAAA,CAAkB,CAAA,EAAG,IAAI,CAAA,YAAA,CAAA,EAAgB,YAAY,CAAA;AAC3D,EAAA,IAAI,CAAC,WAAA,CAAY,EAAA,EAAI,OAAO,WAAA;AAC5B,EAAA,IAAI,UAAA;AACJ,EAAA,MAAM,GAAA,GAAM,QAAA,CAAS,CAAA,EAAG,YAAY,CAAA;AACpC,EAAA,IAAI,QAAQ,MAAA,EAAW;AACrB,IAAA,MAAM,GAAA,GAAM,YAAA,CAAa,CAAA,EAAG,IAAI,eAAe,GAAG,CAAA;AAClD,IAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,IAAA,MAAM,EAAA,GAAK,eAAA;AAAA,MAAgB,GAAA,CAAI,KAAA;AAAA,MAAO,CAAC,GAAG,IAAA,KACxC,eAAA,CAAgB,GAAG,IAAI,CAAA,YAAA,EAAe,CAAC,CAAA,CAAA,CAAA,EAAK,IAAI;AAAA,KAClD;AACA,IAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,IAAA,UAAA,GAAa,EAAA,CAAG,KAAA;AAAA,EAClB;AACA,EAAA,IAAI,OAAA;AACJ,EAAA,MAAM,GAAA,GAAM,QAAA,CAAS,CAAA,EAAG,SAAS,CAAA;AACjC,EAAA,IAAI,QAAQ,MAAA,EAAW;AACrB,IAAA,MAAM,GAAA,GAAM,YAAA,CAAa,CAAA,EAAG,IAAI,YAAY,GAAG,CAAA;AAC/C,IAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,IAAA,MAAM,EAAA,GAAK,eAAA;AAAA,MAAgB,GAAA,CAAI,KAAA;AAAA,MAAO,CAAC,GAAG,IAAA,KACxC,aAAA,CAAc,GAAG,IAAI,CAAA,SAAA,EAAY,CAAC,CAAA,CAAA,CAAA,EAAK,IAAI;AAAA,KAC7C;AACA,IAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,IAAA,OAAA,GAAU,EAAA,CAAG,KAAA;AAAA,EACf;AACA,EAAA,MAAM,SAAA,GAAY,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,aAAa,mBAAmB,CAAA;AACpE,EAAA,IAAI,CAAC,SAAA,CAAU,EAAA,EAAI,OAAO,SAAA;AAK1B,EAAA,MAAM,WAAA,GAAc,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,eAAe,aAAa,CAAA;AAClE,EAAA,IAAI,CAAC,WAAA,CAAY,EAAA,EAAI,OAAO,WAAA;AAC5B,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,UAAU,QAAA,CAAS,KAAA;AAAA,IACnB,aAAa,WAAA,CAAY,KAAA;AAAA,IACzB,aAAc,WAAA,CAAY,KAAA,IAAyC,EAAE,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA,IAC9F,GAAI,QAAA,CAAS,CAAA,EAAG,UAAU,CAAA,KAAM,MAAA,GAAY,EAAE,QAAA,EAAU,MAAM,iBAAA,EAAkB,GAAI,EAAC;AAAA,IACrF,GAAI,UAAA,KAAe,MAAA,GAAY,EAAE,UAAA,KAAe,EAAC;AAAA,IACjD,GAAI,OAAA,KAAY,MAAA,GAAY,EAAE,OAAA,KAAY,EAAC;AAAA,IAC3C,GAAI,UAAU,KAAA,KAAU,MAAA,GAAY,EAAE,SAAA,EAAW,SAAA,CAAU,KAAA,EAAM,GAAI,EAAC;AAAA,IACtE,GAAI,QAAA,CAAS,CAAA,EAAG,aAAa,CAAA,KAAM,MAAA,GAAY,EAAE,WAAA,EAAa,MAAM,iBAAA,EAAkB,GAAI;AAAC,GAC5F,CAAA;AACH,CAAA;AAEA,IAAM,iBAAA,GAAoB,CAAC,IAAA,EAAc,CAAA,KAAwC;AAC/E,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,aAAa,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,YAAA,EAAc,sBAAsB,aAAa,CAAA;AACtF,EAAA,IAAI,CAAC,UAAA,CAAW,EAAA,EAAI,OAAO,UAAA;AAC3B,EAAA,MAAM,QAAA,GAAW,cAAA,CAAe,IAAA,EAAM,CAAC,CAAA;AACvC,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AAGzB,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,YAAY,UAAA,CAAW,KAAA;AAAA,IACvB,UAAU,QAAA,CAAS,KAAA;AAAA,IACnB,UAAU,MAAM;AAAA,GACjB,CAAA;AACH,CAAA;AAEA,IAAM,qBAAA,GAAwB,CAAC,IAAA,EAAc,CAAA,KAA4C;AACvF,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,QAAA,GAAW,cAAA,CAAe,IAAA,EAAM,CAAC,CAAA;AACvC,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,MAAM,OAAA,GAAU,gBAAgB,IAAA,EAAM,CAAA,EAAG,WAAW,CAAC,OAAO,GAAG,gBAAgB,CAAA;AAC/E,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,UAAU,QAAA,CAAS,KAAA;AAAA,IACnB,GAAI,QAAQ,KAAA,KAAU,MAAA,GAAY,EAAE,OAAA,EAAS,OAAA,CAAQ,KAAA,EAAM,GAAI;AAAC,GACjE,CAAA;AACH,CAAA;AAEA,IAAM,oBAAA,GAAuB,CAAC,IAAA,EAAc,CAAA,KAA2C;AACrF,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,QAAA,GAAW,cAAA,CAAe,IAAA,EAAM,CAAC,CAAA;AACvC,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,MAAM,cAAc,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,aAAA,EAAe,oBAAoB,WAAW,CAAA;AACpF,EAAA,IAAI,CAAC,WAAA,CAAY,EAAA,EAAI,OAAO,WAAA;AAC5B,EAAA,MAAM,OAAA,GAAU,eAAA;AAAA,IACd,IAAA;AAAA,IACA,CAAA;AAAA,IACA,SAAA;AAAA,IACA,CAAC,OAAO,CAAA;AAAA,IACR,+BAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,gBAAgB,aAAa,CAAA;AACpE,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,UAAU,QAAA,CAAS,KAAA;AAAA,IACnB,aAAa,WAAA,CAAY,KAAA;AAAA,IACzB,SAAS,OAAA,CAAQ,KAAA;AAAA,IACjB,MAAM,IAAA,CAAK,KAAA;AAAA;AAAA;AAAA,IAGX,GAAI,QAAA,CAAS,CAAA,EAAG,UAAU,CAAA,KAAM,MAAA,GAAY,EAAE,QAAA,EAAU,MAAM,iBAAA,EAAkB,GAAI;AAAC,GACtF,CAAA;AACH,CAAA;AAEA,IAAM,eAAA,GAAkB,CAAC,IAAA,EAAc,CAAA,KAAsC;AAC3E,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,QAAA,GAAW,cAAA,CAAe,IAAA,EAAM,CAAC,CAAA;AACvC,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,MAAM,cAAc,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,aAAA,EAAe,oBAAoB,WAAW,CAAA;AACpF,EAAA,IAAI,CAAC,WAAA,CAAY,EAAA,EAAI,OAAO,WAAA;AAG5B,EAAA,MAAM,SAAA,GAAY,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,aAAa,YAAY,CAAA;AAC7D,EAAA,IAAI,CAAC,SAAA,CAAU,EAAA,EAAI,OAAO,SAAA;AAC1B,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,gBAAgB,aAAa,CAAA;AACpE,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,OAAA,GAAU,gBAAgB,IAAA,EAAM,CAAA,EAAG,WAAW,CAAC,OAAO,GAAG,gBAAgB,CAAA;AAC/E,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,UAAU,QAAA,CAAS,KAAA;AAAA,IACnB,aAAa,WAAA,CAAY,KAAA;AAAA,IACzB,GAAI,UAAU,KAAA,KAAU,MAAA,GAAY,EAAE,SAAA,EAAW,SAAA,CAAU,KAAA,EAAM,GAAI,EAAC;AAAA,IACtE,MAAM,IAAA,CAAK,KAAA;AAAA,IACX,GAAI,QAAQ,KAAA,KAAU,MAAA,GAAY,EAAE,OAAA,EAAS,OAAA,CAAQ,KAAA,EAAM,GAAI;AAAC,GACjE,CAAA;AACH,CAAA;AAEA,IAAM,oBAAA,GAAuB,CAAC,IAAA,EAAc,CAAA,KAA2C;AACrF,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,QAAA,GAAW,cAAA,CAAe,IAAA,EAAM,CAAC,CAAA;AACvC,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,MAAM,WAAA,GAAc,QAAA;AAAA,IAClB,IAAA;AAAA,IACA,CAAA;AAAA,IACA,aAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,CAAC,WAAA,CAAY,EAAA,EAAI,OAAO,WAAA;AAC5B,EAAA,MAAM,SAAA,GAAY,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,aAAa,UAAU,CAAA;AAC3D,EAAA,IAAI,CAAC,SAAA,CAAU,EAAA,EAAI,OAAO,SAAA;AAC1B,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,YAAY,UAAU,CAAA;AACzD,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,UAAU,QAAA,CAAS,KAAA;AAAA,IACnB,aAAa,WAAA,CAAY,KAAA;AAAA,IACzB,GAAI,UAAU,KAAA,KAAU,MAAA,GAAY,EAAE,SAAA,EAAW,SAAA,CAAU,KAAA,EAAM,GAAI,EAAC;AAAA,IACtE,GAAI,SAAS,KAAA,KAAU,MAAA,GAAY,EAAE,QAAA,EAAU,QAAA,CAAS,KAAA,EAAM,GAAI;AAAC,GACpE,CAAA;AACH,CAAA;AAEA,IAAM,gBAAA,GAAmB,CAAC,IAAA,EAAc,CAAA,KAAuC;AAC7E,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,CAAA,GAAI,oBAAA,CAAqB,IAAA,EAAM,CAAC,CAAA;AACtC,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAGlB,EAAA,QAAQ,EAAE,KAAA;AAAO;AAAA,IAEf,KAAK,KAAA,EAAO;AACV,MAAA,MAAM,CAAA,GAAI,SAAA,CAAU,IAAA,EAAM,CAAC,CAAA;AAC3B,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,OAAO,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACrD;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,MAAM,CAAA,GAAI,oBAAA,CAAqB,IAAA,EAAM,CAAC,CAAA;AACtC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,cAAc,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC5D;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,CAAA,GAAI,cAAA,CAAe,IAAA,EAAM,CAAC,CAAA;AAChC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACtD;AAAA,IACA,KAAK,SAAA,EAAW;AACd,MAAA,MAAM,CAAA,GAAI,iBAAA,CAAkB,IAAA,EAAM,CAAC,CAAA;AACnC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,WAAW,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACzD;AAAA,IACA,KAAK,aAAA,EAAe;AAClB,MAAA,MAAM,CAAA,GAAI,qBAAA,CAAsB,IAAA,EAAM,CAAC,CAAA;AACvC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,eAAe,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC7D;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,MAAM,CAAA,GAAI,oBAAA,CAAqB,IAAA,EAAM,CAAC,CAAA;AACtC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,cAAc,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC5D;AAAA,IACA,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,CAAA,GAAI,eAAA,CAAgB,IAAA,EAAM,CAAC,CAAA;AACjC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,SAAS,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACvD;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,MAAM,CAAA,GAAI,oBAAA,CAAqB,IAAA,EAAM,CAAC,CAAA;AACtC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,cAAc,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC5D;AAAA,IACA;AACE,MAAA,OAAO,aAAA;AAAA,QACL,IAAA;AAAA,QACA,CAAA,CAAE,KAAA;AAAA,QACF;AAAA,OACF;AAAA;AAEN,CAAA;AAIA,IAAM,iBAAA,GAAoB,CAAC,IAAA,EAAc,CAAA,KAA+B;AACtE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,YAAY,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,WAAA,EAAa,yBAAyB,aAAa,CAAA;AACvF,EAAA,IAAI,CAAC,SAAA,CAAU,EAAA,EAAI,OAAO,SAAA;AAC1B,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,eAAe,aAAa,CAAA;AACnE,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,WAAA,GAAc,QAAA;AAAA,IAClB,IAAA;AAAA,IACA,CAAA;AAAA,IACA,YAAA;AAAA,IACA,iDAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,CAAC,WAAA,CAAY,EAAA,EAAI,OAAO,WAAA;AAC5B,EAAA,MAAM,IAAI,WAAA,CAAY,KAAA;AACtB,EAAA,IAAI,CAAA,KAAM,cAAA,IAAkB,CAAA,KAAM,iBAAA,IAAqB,MAAM,UAAA,EAAY;AACvE,IAAA,OAAO,aAAA,CAAc,CAAA,EAAG,IAAI,CAAA,WAAA,CAAA,EAAe,GAAG,2CAA2C,CAAA;AAAA,EAC3F;AACA,EAAA,OAAO,EAAA,CAAG,EAAE,SAAA,EAAW,SAAA,CAAU,KAAA,EAAO,MAAM,IAAA,CAAK,KAAA,EAAO,UAAA,EAAY,CAAA,EAAqB,CAAA;AAC7F,CAAA;AAIA,IAAM,oBAAA,GAAuB,CAAC,IAAA,EAAc,CAAA,KAAkC;AAC5E,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAA,GAAO,oBAAA,CAAqB,IAAA,EAAM,EAAA,CAAG,KAAK,CAAA;AAChD,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,QAAQ,KAAK,KAAA;AAAO,IAClB,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,MAAM,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,KAAA,EAAO,gBAAgB,UAAU,CAAA;AACtE,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,MAAM,MAAM,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,KAAA,EAAO,gBAAgB,UAAU,CAAA;AACtE,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,UAAA,EAAY,GAAA,EAAK,IAAI,KAAA,EAAO,GAAA,EAAK,GAAA,CAAI,KAAA,EAAO,CAAA;AAAA,IAChE;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,MAAM,MAAM,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,KAAA,EAAO,kBAAkB,YAAY,CAAA;AAC1E,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,MAAM,MAAM,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,KAAA,EAAO,kBAAkB,YAAY,CAAA;AAC1E,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,YAAA,EAAc,GAAA,EAAK,IAAI,KAAA,EAAO,GAAA,EAAK,GAAA,CAAI,KAAA,EAAO,CAAA;AAAA,IAClE;AAAA,IACA,KAAK,WAAA,EAAa;AAChB,MAAA,MAAM,SAAS,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,QAAA,EAAU,oBAAoB,UAAU,CAAA;AAChF,MAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,MAAA,MAAM,SAAS,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,QAAA,EAAU,oBAAoB,UAAU,CAAA;AAChF,MAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,WAAA,EAAa,MAAA,EAAQ,OAAO,KAAA,EAAO,MAAA,EAAQ,MAAA,CAAO,KAAA,EAAO,CAAA;AAAA,IAC7E;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,MAAM,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,SAAA,EAAW,gBAAgB,YAAY,CAAA;AAC5E,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,MAAM,OAAA,GAAU,eAAA;AAAA,QAAgB,GAAA,CAAI,KAAA;AAAA,QAAO,CAAC,GAAG,IAAA,KAC7C,aAAA,CAAc,GAAG,IAAI,CAAA,SAAA,EAAY,CAAC,CAAA,CAAA,CAAA,EAAK,IAAI;AAAA,OAC7C;AACA,MAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,MAAA,OAAO,GAAG,EAAE,IAAA,EAAM,QAAQ,OAAA,EAAS,OAAA,CAAQ,OAAO,CAAA;AAAA,IACpD;AAAA,IACA,KAAK,WAAA;AACH,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,WAAA,EAAa,CAAA;AAAA,IACjC;AACE,MAAA,OAAO,aAAA;AAAA,QACL,IAAA;AAAA,QACA,IAAA,CAAK,KAAA;AAAA,QACL;AAAA,OACF;AAAA;AAEN,CAAA;AAEA,IAAM,oBAAA,GAAuB,CAAC,IAAA,EAAc,CAAA,KAAkC;AAC5E,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAA,GAAO,oBAAA,CAAqB,IAAA,EAAM,EAAA,CAAG,KAAK,CAAA;AAChD,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,QAAQ,KAAK,KAAA;AAAO,IAClB,KAAK,KAAA,EAAO;AACV,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,OAAA,EAAS,aAAa,UAAU,CAAA;AACnE,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,OAAO,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACtD;AAAA,IACA,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,OAAA,EAAS,eAAe,YAAY,CAAA;AACvE,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,SAAS,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACxD;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,OAAA,EAAS,cAAc,WAAW,CAAA;AACrE,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,QAAQ,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACvD;AAAA,IACA,KAAK,KAAA,EAAO;AACV,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,OAAA,EAAS,aAAa,aAAa,CAAA;AACtE,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,OAAO,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACtD;AAAA,IACA;AACE,MAAA,OAAO,aAAA,CAAc,IAAA,EAAM,IAAA,CAAK,KAAA,EAAO,0BAA0B,CAAA;AAAA;AAEvE,CAAA;AAEA,IAAM,cAAA,GAAiB,CAAC,IAAA,EAAc,CAAA,KAA4B;AAChE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAA,GAAO,oBAAA,CAAqB,IAAA,EAAM,EAAA,CAAG,KAAK,CAAA;AAChD,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,QAAQ,KAAK,KAAA;AAAO,IAClB,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,MAAA,EAAQ,mBAAmB,aAAa,CAAA;AAC9E,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,OAAA,EAAS,oBAAoB,oBAAoB,CAAA;AACxF,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,MAAM,MAAM,QAAA,CAAS,IAAA,EAAM,EAAA,CAAG,KAAA,EAAO,WAAW,oBAAoB,CAAA;AACpE,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,OAAO,EAAA,CAAG;AAAA,QACR,IAAA,EAAM,OAAA;AAAA,QACN,MAAM,IAAA,CAAK,KAAA;AAAA,QACX,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,GAAI,IAAI,KAAA,KAAU,MAAA,GAAY,EAAE,OAAA,EAAS,GAAA,CAAI,KAAA,EAAM,GAAI;AAAC,OACzD,CAAA;AAAA,IACH;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,MAAA,EAAQ,kBAAkB,aAAa,CAAA;AAC7E,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,MAAM,KAAK,QAAA,CAAS,IAAA,EAAM,EAAA,CAAG,KAAA,EAAO,kBAAkB,aAAa,CAAA;AACnE,MAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,MAAA,OAAO,EAAA,CAAG;AAAA,QACR,IAAA,EAAM,MAAA;AAAA,QACN,MAAM,IAAA,CAAK,KAAA;AAAA,QACX,GAAI,GAAG,KAAA,KAAU,MAAA,GAAY,EAAE,cAAA,EAAgB,EAAA,CAAG,KAAA,EAAM,GAAI;AAAC,OAC9D,CAAA;AAAA,IACH;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,MAAA,EAAQ,oBAAoB,aAAa,CAAA;AAC/E,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,MAAM,KAAA,GAAQ,QAAA;AAAA,QACZ,IAAA;AAAA,QACA,EAAA,CAAG,KAAA;AAAA,QACH,YAAA;AAAA,QACA,wBAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,KAAK,KAAA,EAAO,UAAA,EAAY,KAAA,CAAM,KAAA,EAAO,CAAA;AAAA,IACzE;AAAA,IACA;AACE,MAAA,OAAO,aAAA,CAAc,IAAA,EAAM,IAAA,CAAK,KAAA,EAAO,uBAAuB,CAAA;AAAA;AAEpE,CAAA;AAEA,IAAM,iBAAA,GAAoB,CAAC,IAAA,EAAc,CAAA,KAA+B;AACtE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,YAAA,EAAc,0BAA0B,aAAa,CAAA;AAC3F,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,IAAI,KAAK,KAAA,KAAU,MAAA,IAAU,KAAK,KAAA,KAAU,WAAA,IAAe,KAAK,KAAA,KAAU,YAAA;AACxE,IAAA,OAAO,cAAc,CAAA,EAAG,IAAI,CAAA,WAAA,CAAA,EAAe,IAAA,CAAK,OAAO,+BAA+B,CAAA;AACxF,EAAA,MAAM,MAAM,QAAA,CAAS,IAAA,EAAM,GAAG,KAAA,EAAO,aAAA,EAAe,2BAA2B,aAAa,CAAA;AAC5F,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,EAAA,IACE,GAAA,CAAI,KAAA,KAAU,eAAA,IACd,GAAA,CAAI,KAAA,KAAU,WACd,GAAA,CAAI,KAAA,KAAU,QAAA,IACd,GAAA,CAAI,KAAA,KAAU,SAAA;AAEd,IAAA,OAAO,aAAA;AAAA,MACL,GAAG,IAAI,CAAA,YAAA,CAAA;AAAA,MACP,GAAA,CAAI,KAAA;AAAA,MACJ;AAAA,KACF;AACF,EAAA,OAAO,EAAA,CAAG,EAAE,UAAA,EAAY,IAAA,CAAK,OAAqB,WAAA,EAAa,GAAA,CAAI,OAA4B,CAAA;AACjG,CAAA;AAcO,IAAM,wBAAgC,MAAM;AAIjD,EAAA,MAAM,UAAA,GAAaQ,wBAAiB,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,KAAA,KAAU,YAAY,CAAA,CACvE,GAAA;AAAA,IACC,CAAC,MACC,CAAA,EAAG,OAAA,CAAQ,SAAS,CAAA,CAAE,KAAA,CAAM,CAAC,CAAE,CAAA,GAAI,OAAO,GAAG,CAAA,CAAA,EAAI,EAAE,KAAK,CAAA,YAAA,EAAe,EAAE,KAAA,CAAM,IAAA,CAAK,KAAK,CAAC,CAAA,CAAA;AAAA,GAC9F,CACC,KAAK,IAAI,CAAA;AACZ,EAAA,MAAM,UAAA,GAAaA,uBAAA,CAAiB,IAAA,CAAK,CAAC,CAAA,KAAM,EAAE,KAAA,KAAU,YAAY,CAAA,EAAG,KAAA,IAAS,EAAC;AACrF,EAAA,OAAO,GAAG,UAAU,CAAA,KAAA,EAAQ,UAAA,CAAW,IAAA,CAAK,KAAK,CAAC,CAAA,CAAA;AACpD,CAAA,GAAG;AAEH,IAAM,cAAA,GAAiB,CAAC,IAAA,EAAc,CAAA,KAAqC;AACzE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,CAAA,GAAI,oBAAA,CAAqB,IAAA,EAAM,CAAC,CAAA;AACtC,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,QAAQ,EAAE,KAAA;AAAO;AAAA;AAAA;AAAA;AAAA,IAKf,KAAK,KAAA;AAAA,IACL,KAAK,YAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL,KAAK,SAAA;AAAA,IACL,KAAK,aAAA;AAAA,IACL,KAAK,YAAA;AAAA,IACL,KAAK,OAAA;AAAA,IACL,KAAK,YAAA,EAAc;AACjB,MAAA,MAAM,CAAA,GAAI,gBAAA,CAAiB,IAAA,EAAM,CAAC,CAAA;AAClC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,UAAU,MAAA,EAAQ,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC1D;AAAA,IACA,KAAK,SAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,QAAA;AAAA,IACL,KAAK,OAAA;AAAA,IACL,KAAK,WAAA;AAAA,IACL,KAAK,SAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,eAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL,KAAK,OAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL,KAAK,OAAA;AAAA,IACL,KAAK,WAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL,KAAK,SAAA,EAAW;AACd,MAAA,MAAM,CAAA,GAAI,iBAAA,CAAkB,IAAA,EAAM,CAAC,CAAA;AACnC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,WAAW,OAAA,EAAS,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC5D;AAAA,IACA,KAAK,MAAA;AAAA,IACL,KAAK,SAAA;AAAA,IACL,KAAK,QAAA;AAAA,IACL,KAAK,YAAA;AAAA,IACL,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,CAAA,GAAI,eAAA,CAAgB,IAAA,EAAM,CAAC,CAAA;AACjC,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,SAAS,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACxD;AAAA,IACA,KAAK,UAAA;AAAA,IACL,KAAK,OAAA;AAAA,IACL,KAAK,KAAA,EAAO;AACV,MAAA,MAAM,CAAA,GAAI,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAC/B,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,iBAAiB,aAAA,EAAe,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IACxE;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,WAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAA,EAAY,0BAA0B,aAAa,CAAA;AACtF,MAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,MAAA,MAAM,WAAA,GAAc,QAAA;AAAA,QAClB,IAAA;AAAA,QACA,CAAA;AAAA,QACA,aAAA;AAAA,QACA,2BAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,IAAI,CAAC,WAAA,CAAY,EAAA,EAAI,OAAO,WAAA;AAC5B,MAAA,MAAM,MAAA,GAAS,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,SAAS,kBAAkB,CAAA;AAChE,MAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,MAAA,MAAM,QAAQ,aAAA,CAAc,CAAA,EAAG,IAAI,CAAA,MAAA,CAAA,EAAU,OAAO,KAAK,CAAA;AACzD,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,MAAM,WAAA,GAAc,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,eAAe,iBAAiB,CAAA;AACtE,MAAA,IAAI,CAAC,WAAA,CAAY,EAAA,EAAI,OAAO,WAAA;AAC5B,MAAA,IAAI,iBAAoC,EAAC;AACzC,MAAA,MAAM,GAAA,GAAM,QAAA,CAAS,CAAA,EAAG,gBAAgB,CAAA;AACxC,MAAA,IAAI,QAAQ,MAAA,EAAW;AACrB,QAAA,MAAM,GAAA,GAAM,YAAA,CAAa,CAAA,EAAG,IAAI,mBAAmB,GAAG,CAAA;AACtD,QAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,QAAA,MAAM,GAAA,GAAM,eAAA;AAAA,UAAgB,GAAA,CAAI,KAAA;AAAA,UAAO,CAAC,GAAG,IAAA,KACzC,aAAA,CAAc,GAAG,IAAI,CAAA,gBAAA,EAAmB,CAAC,CAAA,CAAA,CAAA,EAAK,IAAI;AAAA,SACpD;AACA,QAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,QAAA,cAAA,GAAiB,GAAA,CAAI,KAAA;AAAA,MACvB;AACA,MAAA,OAAO,EAAA,CAAG;AAAA,QACR,IAAA,EAAM,QAAA;AAAA,QACN,UAAU,QAAA,CAAS,KAAA;AAAA,QACnB,aAAa,WAAA,CAAY,KAAA;AAAA,QACzB,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,cAAA;AAAA,QACA,GAAI,YAAY,KAAA,KAAU,MAAA,GAAY,EAAE,WAAA,EAAa,WAAA,CAAY,KAAA,EAAM,GAAI;AAAC,OAC7E,CAAA;AAAA,IACH;AAAA,IACA,KAAK,eAAA,EAAiB;AACpB,MAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,4BAA4B,aAAa,CAAA;AAClF,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,MAAM,WAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAA,EAAY,+BAA+B,aAAa,CAAA;AAC3F,MAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,EAAE,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,QAAA,EAAU,QAAA,CAAS,KAAA,IAAS,CAAA;AAAA,IAC7F;AAAA,IACA,KAAK,QAAA,EAAU;AAKb,MAAA,MAAM,WAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAA,EAAY,0BAA0B,aAAa,CAAA;AACtF,MAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,MAAA,MAAM,WAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,sBAAsB,YAAY,CAAA;AAC9E,MAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,MAAA,MAAM,QAAQ,eAAA,CAAgB,QAAA,CAAS,KAAA,EAAO,CAAC,GAAG,IAAA,KAAS;AACzD,QAAA,MAAM,EAAA,GAAK,CAAA,EAAG,IAAI,CAAA,OAAA,EAAU,CAAC,CAAA,CAAA,CAAA;AAC7B,QAAA,MAAM,EAAA,GAAK,aAAA,CAAc,EAAA,EAAI,IAAI,CAAA;AACjC,QAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,QAAA,MAAM,IAAI,QAAA,CAAS,EAAA,EAAI,GAAG,KAAA,EAAO,OAAA,EAAS,4BAA4B,aAAa,CAAA;AACnF,QAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,QAAA,MAAM,IAAI,QAAA,CAAS,EAAA,EAAI,GAAG,KAAA,EAAO,OAAA,EAAS,0BAA0B,aAAa,CAAA;AACjF,QAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,QAAA,OAAO,EAAA,CAAG,EAAE,KAAA,EAAO,CAAA,CAAE,OAAO,KAAA,EAAO,CAAA,CAAE,OAAO,CAAA;AAAA,MAC9C,CAAC,CAAA;AACD,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,MAAA,MAAM,MAAM,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,uBAAuB,aAAa,CAAA;AAC7E,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,OAAO,EAAA,CAAG;AAAA,QACR,IAAA,EAAM,QAAA;AAAA,QACN,IAAA,EAAM,EAAE,QAAA,EAAU,QAAA,CAAS,KAAA,EAAO,OAAO,KAAA,CAAM,KAAA,EAAO,OAAA,EAAS,GAAA,CAAI,KAAA;AAAM,OAC1E,CAAA;AAAA,IACH;AAAA,IACA,KAAK,cAAA,EAAgB;AACnB,MAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,4BAA4B,aAAa,CAAA;AAChF,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,0BAA0B,aAAa,CAAA;AAC9E,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AAErB,MAAA,IAAI,QAA6B,EAAC;AAClC,MAAA,MAAM,MAAA,GAAS,QAAA,CAAS,CAAA,EAAG,OAAO,CAAA;AAClC,MAAA,IAAI,WAAW,MAAA,EAAW;AACxB,QAAA,MAAM,GAAA,GAAM,YAAA,CAAa,CAAA,EAAG,IAAI,UAAU,MAAM,CAAA;AAChD,QAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,QAAA,MAAM,OAAA,GAAU,eAAA;AAAA,UAAgB,GAAA,CAAI,KAAA;AAAA,UAAO,CAAC,GAAG,IAAA,KAC7C,cAAA,CAAe,GAAG,IAAI,CAAA,OAAA,EAAU,CAAC,CAAA,CAAA,CAAA,EAAK,IAAI;AAAA,SAC5C;AACA,QAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,QAAA,KAAA,GAAQ,OAAA,CAAQ,KAAA;AAAA,MAClB;AACA,MAAA,IAAI,MAAA,GAAsB,EAAE,UAAA,EAAY,MAAA,EAAQ,aAAa,eAAA,EAAgB;AAC7E,MAAA,MAAM,OAAA,GAAU,QAAA,CAAS,CAAA,EAAG,QAAQ,CAAA;AACpC,MAAA,IAAI,YAAY,MAAA,EAAW;AACzB,QAAA,MAAM,CAAA,GAAI,iBAAA,CAAkB,CAAA,EAAG,IAAI,WAAW,OAAO,CAAA;AACrD,QAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,QAAA,MAAA,GAAS,CAAA,CAAE,KAAA;AAAA,MACb;AACA,MAAA,OAAO,EAAA,CAAG;AAAA,QACR,IAAA,EAAM,cAAA;AAAA,QACN,IAAA,EAAM,EAAE,IAAA,EAAM,IAAA,CAAK,OAAqB,IAAA,EAAM,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO,MAAA;AAAO,OACzE,CAAA;AAAA,IACH;AAAA,IACA,KAAK,aAAA,EAAe;AAClB,MAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,2BAA2B,aAAa,CAAA;AAC/E,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AAErB,MAAA,MAAM,OAA6C,EAAC;AACpD,MAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,CAAA,EAAG,MAAM,CAAA;AAChC,MAAA,IAAI,UAAU,MAAA,EAAW;AACvB,QAAA,MAAM,OAAA,GAAU,aAAA,CAAc,CAAA,EAAG,IAAI,SAAS,KAAK,CAAA;AACnD,QAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,QAAA,KAAA,MAAW,CAAC,GAAA,EAAK,MAAM,CAAA,IAAK,QAAQ,KAAA,EAAO;AACzC,UAAA,MAAM,OAAA,GAAU,CAAA,EAAG,IAAI,CAAA,MAAA,EAAS,GAAG,CAAA,CAAA;AACnC,UAAA,MAAMC,GAAAA,GAAK,aAAA,CAAc,OAAA,EAAS,MAAM,CAAA;AACxC,UAAA,IAAI,CAACA,GAAAA,CAAG,EAAA,EAAI,OAAOA,GAAAA;AACnB,UAAA,MAAM,IAAA,GAAO,oBAAA,CAAqB,OAAA,EAASA,GAAAA,CAAG,KAAK,CAAA;AACnD,UAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,UAAA,IAAI,IAAA,CAAK,UAAU,SAAA,EAAW;AAC5B,YAAA,MAAM,OAAO,QAAA,CAAS,OAAA,EAASA,IAAG,KAAA,EAAO,MAAA,EAAQ,qBAAqB,aAAa,CAAA;AACnF,YAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,YAAA,IAAA,CAAK,GAAG,CAAA,GAAI,EAAE,MAAM,MAAA,EAAQ,IAAA,EAAM,KAAK,KAAA,EAAM;AAAA,UAC/C,CAAA,MAAO;AAEL,YAAA,MAAM,MAAA,GAAS,oBAAA,CAAqB,OAAA,EAAS,MAAM,CAAA;AACnD,YAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,YAAA,IAAA,CAAK,GAAG,CAAA,GAAI,EAAE,MAAM,OAAA,EAAS,KAAA,EAAO,OAAO,KAAA,EAAM;AAAA,UACnD;AAAA,QACF;AAAA,MACF;AACA,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,EAAE,IAAA,EAAM,IAAA,CAAK,KAAA,EAAqB,IAAA,EAAK,EAAG,CAAA;AAAA,IACnF;AAAA,IACA,KAAK,OAAA,EAAS;AAMZ,MAAA,MAAM,UAAU,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,wBAAwB,aAAa,CAAA;AAClF,MAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AAExB,MAAA,MAAM,aAAa,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,wBAAwB,aAAa,CAAA;AACrF,MAAA,IAAI,CAAC,UAAA,CAAW,EAAA,EAAI,OAAO,UAAA;AAC3B,MAAA,MAAM,SAAA,GAAY,QAAA;AAAA,QAChB,GAAG,IAAI,CAAA,QAAA,CAAA;AAAA,QACP,UAAA,CAAW,KAAA;AAAA,QACX,WAAA;AAAA,QACA,0BAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,IAAI,CAAC,SAAA,CAAU,EAAA,EAAI,OAAO,SAAA;AAC1B,MAAA,IAAI,SAAA,CAAU,KAAA,KAAU,SAAA,IAAa,SAAA,CAAU,KAAA,KAAU,QAAA;AACvD,QAAA,OAAO,SAAA;AAAA,UACL,iBAAA;AAAA,UACA,GAAG,IAAI,CAAA,kBAAA,CAAA;AAAA,UACP,CAAA,0BAAA,EAA6B,UAAU,KAAK,CAAA,CAAA,CAAA;AAAA,UAC5C;AAAA,SACF;AACF,MAAA,MAAM,MAAM,SAAA,CAAU,KAAA;AACtB,MAAA,IAAI,YAAA;AACJ,MAAA,MAAM,SAAA,GAAY,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO,cAAc,CAAA;AAC3D,MAAA,IAAI,cAAc,MAAA,EAAW;AAC3B,QAAA,MAAM,EAAA,GAAK,aAAA,CAAc,CAAA,EAAG,IAAI,yBAAyB,SAAS,CAAA;AAClE,QAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,QAAA,YAAA,GAAe,EAAA,CAAG,KAAA;AAAA,MACpB;AAEA,MAAA,MAAM,UAAU,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,cAAA,EAAgB,4BAA4B,YAAY,CAAA;AAC1F,MAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,MAAA,MAAM,eAAyB,EAAC;AAChC,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AAC7C,QAAA,MAAM,CAAA,GAAI,aAAA,CAAc,CAAA,EAAG,IAAI,CAAA,cAAA,EAAiB,CAAC,CAAA,CAAA,CAAA,EAAK,OAAA,CAAQ,KAAA,CAAM,CAAC,CAAE,CAAA;AACvE,QAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,QAAA,YAAA,CAAa,IAAA,CAAK,EAAE,KAAK,CAAA;AAAA,MAC3B;AAIA,MAAA,MAAM,SAA+C,EAAC;AACtD,MAAA,MAAM,OAAA,GAAU,QAAA,CAAS,CAAA,EAAG,QAAQ,CAAA;AACpC,MAAA,IAAI,YAAY,MAAA,EAAW;AACzB,QAAA,MAAM,SAAA,GAAY,aAAA,CAAc,CAAA,EAAG,IAAI,WAAW,OAAO,CAAA;AACzD,QAAA,IAAI,CAAC,SAAA,CAAU,EAAA,EAAI,OAAO,SAAA;AAC1B,QAAA,KAAA,MAAW,CAAC,GAAA,EAAK,MAAM,CAAA,IAAK,UAAU,KAAA,EAAO;AAC3C,UAAA,MAAM,OAAA,GAAU,CAAA,EAAG,IAAI,CAAA,QAAA,EAAW,GAAG,CAAA,CAAA;AACrC,UAAA,MAAMA,GAAAA,GAAK,aAAA,CAAc,OAAA,EAAS,MAAM,CAAA;AACxC,UAAA,IAAI,CAACA,GAAAA,CAAG,EAAA,EAAI,OAAOA,GAAAA;AACnB,UAAA,MAAM,IAAA,GAAO,oBAAA,CAAqB,OAAA,EAASA,GAAAA,CAAG,KAAK,CAAA;AACnD,UAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,UAAA,IAAI,IAAA,CAAK,UAAU,SAAA,EAAW;AAC5B,YAAA,MAAM,OAAO,QAAA,CAAS,OAAA,EAASA,IAAG,KAAA,EAAO,MAAA,EAAQ,qBAAqB,aAAa,CAAA;AACnF,YAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,YAAA,MAAA,CAAO,GAAG,CAAA,GAAI,EAAE,MAAM,MAAA,EAAQ,IAAA,EAAM,KAAK,KAAA,EAAM;AAAA,UACjD,CAAA,MAAO;AACL,YAAA,MAAM,MAAA,GAAS,oBAAA,CAAqB,OAAA,EAAS,MAAM,CAAA;AACnD,YAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,YAAA,MAAA,CAAO,GAAG,CAAA,GAAI,EAAE,MAAM,OAAA,EAAS,KAAA,EAAO,OAAO,KAAA,EAAM;AAAA,UACrD;AAAA,QACF;AAAA,MACF;AAIA,MAAA,MAAM,OAAA,GACJ,YAAA,KAAiB,MAAA,GAAY,EAAE,SAAA,EAAW,KAAK,YAAA,EAAa,GAAI,EAAE,SAAA,EAAW,GAAA,EAAI;AAEnF,MAAA,OAAO,EAAA,CAAG;AAAA,QACR,IAAA,EAAM,OAAA;AAAA,QACN,IAAA,EAAM;AAAA,UACJ,SAAS,OAAA,CAAQ,KAAA;AAAA,UACjB,MAAA;AAAA,UACA,OAAA;AAAA,UACA;AAAA;AACF,OACD,CAAA;AAAA,IACH;AAAA,IACA;AACE,MAAA,OAAO,SAAA;AAAA,QACL,iBAAA;AAAA,QACA,GAAG,IAAI,CAAA,MAAA,CAAA;AAAA,QACP,CAAA,gCAAA,EAAmC,EAAE,KAAK,CAAA,CAAA,CAAA;AAAA,QAC1C;AAAA,OACF;AAAA;AAEN,CAAA;AAIA,IAAM,oBAAA,GAAuB,CAAC,IAAA,EAAc,CAAA,KAA2C;AACrF,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,SAAA,GAAY,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,aAAa,aAAa,CAAA;AAC9D,EAAA,IAAI,CAAC,SAAA,CAAU,EAAA,EAAI,OAAO,SAAA;AAC1B,EAAA,MAAM,OAAA,GAAU,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,WAAW,aAAa,CAAA;AAC1D,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,EAAA,MAAM,UAAA,GAAa,QAAA,CAAS,CAAA,EAAG,SAAS,CAAA,KAAM,MAAA;AAC9C,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,GAAI,UAAU,KAAA,KAAU,MAAA,GAAY,EAAE,SAAA,EAAW,SAAA,CAAU,KAAA,EAAM,GAAI,EAAC;AAAA,IACtE,GAAI,QAAQ,KAAA,KAAU,MAAA,GAAY,EAAE,OAAA,EAAS,OAAA,CAAQ,KAAA,EAAM,GAAI,EAAC;AAAA,IAChE,GAAI,aAAa,EAAE,OAAA,EAAS,CAAC,EAAA,KAAoC,sBAAA,KAA2B;AAAC,GAC9F,CAAA;AACH,CAAA;AAEA,IAAM,mBAAA,GAAsB,CAAC,IAAA,EAAc,CAAA,KAAiC;AAC1E,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AAGb,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAQ,UAAU,CAAA;AACjD,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAU,YAAY,CAAA;AACvD,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,YAAY,cAAc,CAAA;AAC7D,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AAGzB,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAQ,eAAe,CAAA;AACtD,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAS,eAAe,CAAA;AACxD,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,IAAA,EAAM,KAAK,KAAA,IAAS,SAAA;AAAA,IACpB,MAAA,EAAQ,OAAO,KAAA,IAAS,UAAA;AAAA,IACxB,QAAA,EAAU,SAAS,KAAA,IAAS,QAAA;AAAA,IAC5B,IAAA,EAAM,KAAK,KAAA,IAAS,MAAA;AAAA,IACpB,KAAA,EAAO,MAAM,KAAA,IAAS;AAAA,GACvB,CAAA;AACH,CAAA;AAEA,IAAM,mBAAA,GAAsB,CAAC,IAAA,EAAc,CAAA,KAAiC;AAC1E,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAS,mBAAmB,CAAA;AAC5D,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,UAAA,GAAa,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,cAAc,aAAa,CAAA;AAChE,EAAA,IAAI,CAAC,UAAA,CAAW,EAAA,EAAI,OAAO,UAAA;AAC3B,EAAA,MAAM,WAAA,GAAc,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,eAAe,aAAa,CAAA;AAClE,EAAA,IAAI,CAAC,WAAA,CAAY,EAAA,EAAI,OAAO,WAAA;AAC5B,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAQ,cAAc,CAAA;AACrD,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,EAAA,MAAM,UAAA,GAAa,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,cAAc,gBAAgB,CAAA;AACnE,EAAA,IAAI,CAAC,UAAA,CAAW,EAAA,EAAI,OAAO,UAAA;AAC3B,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAU,iBAAiB,CAAA;AAC5D,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,GAAI,MAAM,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,EAAO,KAAA,CAAM,KAAA,EAAM,GAAI,EAAC;AAAA,IAC1D,GAAI,WAAW,KAAA,KAAU,MAAA,GAAY,EAAE,UAAA,EAAY,UAAA,CAAW,KAAA,EAAgB,GAAI,EAAC;AAAA,IACnF,GAAI,YAAY,KAAA,KAAU,MAAA,GAAY,EAAE,WAAA,EAAa,WAAA,CAAY,KAAA,EAAgB,GAAI,EAAC;AAAA,IACtF,GAAI,KAAK,KAAA,KAAU,MAAA,GAAY,EAAE,IAAA,EAAM,IAAA,CAAK,KAAA,EAAM,GAAI,EAAC;AAAA,IACvD,GAAI,WAAW,KAAA,KAAU,MAAA,GAAY,EAAE,UAAA,EAAY,UAAA,CAAW,KAAA,EAAM,GAAI,EAAC;AAAA,IACzE,GAAI,OAAO,KAAA,KAAU,MAAA,GAAY,EAAE,MAAA,EAAQ,MAAA,CAAO,KAAA,EAAM,GAAI;AAAC,GAC9D,CAAA;AACH,CAAA;AAGA,IAAM,sBAA+C,EAAC;AAGtD,IAAM,oBAAA,GAAsC;AAAA,EAC1C,IAAA,EAAM,SAAA;AAAA,EACN,MAAA,EAAQ,UAAA;AAAA,EACR,QAAA,EAAU,QAAA;AAAA,EACV,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,sBAAA,GAAwC;AAAA,EAC5C,EAAA,EAAIT,QAAAA;AAAA,EACJ,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,EAAE,IAAA,EAAM,EAAE,IAAA,EAAM,SAAA,EAAW,KAAA,EAAOA,QAAAA,IAAU;AAAE,GACnF;AAAA,EACA,OAAO,EAAC;AAAA,EACR,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,UAAA;AAAA,IACR,QAAA,EAAU,QAAA;AAAA,IACV,IAAA,EAAM,MAAA;AAAA,IACN,KAAA,EAAO;AAAA;AAEX,CAAA;AAEA,IAAM,aAAA,GAAgB,CAAC,IAAA,EAAc,CAAA,KAAiC;AACpE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,GAAA,GAAM,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,MAAM,gBAAgB,CAAA;AACxD,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,EAAA,MAAM,QAAQ,aAAA,CAAc,CAAA,EAAG,IAAI,CAAA,GAAA,CAAA,EAAO,IAAI,KAAK,CAAA;AACnD,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,IAAI,KAAA,CAAM,UAAU,EAAA,EAAI;AACtB,IAAA,OAAO,UAAU,eAAA,EAAiB,CAAA,EAAG,IAAI,CAAA,GAAA,CAAA,EAAO,oBAAoB,kBAAkB,CAAA;AAAA,EACxF;AACA,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,iCAAiC,cAAc,CAAA;AACtF,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AAGrB,EAAA,MAAM,KAAA,GACJ,QAAA,CAAS,CAAA,EAAG,OAAO,MAAM,MAAA,GACrB,EAAA,CAA4B,mBAAmB,CAAA,GAC/C,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,yBAAyB,oBAAoB,CAAA;AAC9E,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAM,KAAA,GACJ,QAAA,CAAS,CAAA,EAAG,OAAO,MAAM,MAAA,GACrB,EAAA,CAAkB,oBAAoB,CAAA,GACtC,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,wBAAwB,mBAAmB,CAAA;AAC5E,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,EAAA,MAAMU,cAAAA,GAAgB,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,iBAAiB,mBAAmB,CAAA;AAC5E,EAAA,IAAI,CAACA,cAAAA,CAAc,EAAA,EAAI,OAAOA,cAAAA;AAC9B,EAAA,OAAO,EAAA,CAAG;AAAA,IACR,IAAI,KAAA,CAAM,KAAA;AAAA,IACV,MAAM,IAAA,CAAK,KAAA;AAAA,IACX,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,GAAIA,eAAc,KAAA,KAAU,MAAA,GAAY,EAAE,aAAA,EAAeA,cAAAA,CAAc,KAAA,EAAM,GAAI;AAAC,GACnF,CAAA;AACH,CAAA;AAIA,IAAM,eAAA,GAAkB,CAAC,IAAA,EAAc,CAAA,KAAmC;AACxE,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,EAAM,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,EAAA,MAAM,IAAI,EAAA,CAAG,KAAA;AACb,EAAA,MAAM,CAAA,GAAI,oBAAA,CAAqB,IAAA,EAAM,CAAC,CAAA;AACtC,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,MAAM,SAAS,MAAiB;AAC9B,IAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,iBAAiB,aAAa,CAAA;AACpE,IAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,CAAA,CAAE,KAAe,CAAA,GAAI,CAAA;AAAA,EACxC,CAAA;AACA,EAAA,QAAQ,EAAE,KAAA;AAAO,IACf,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,IAAI,MAAA,EAAO;AACjB,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,MAAM,UAAU,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,mBAAmB,cAAc,CAAA;AAC9E,MAAA,OAAO,OAAA,CAAQ,EAAA,GACX,EAAA,CAAG,EAAE,IAAA,EAAM,UAAA,EAAY,MAAA,EAAQ,CAAA,CAAE,KAAA,EAAO,OAAA,EAAS,OAAA,CAAQ,KAAA,EAAO,CAAA,GAChE,OAAA;AAAA,IACN;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,MAAM,IAAI,MAAA,EAAO;AACjB,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,6BAA6B,aAAa,CAAA;AAC9E,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,MAAM,MAAA,GAAS,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,SAAS,mBAAmB,CAAA;AACjE,MAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,MAAA,MAAM,QAAQ,UAAA,CAAW,CAAA,EAAG,IAAI,CAAA,MAAA,CAAA,EAAU,OAAO,KAAK,CAAA;AACtD,MAAA,OAAO,KAAA,CAAM,KACT,EAAA,CAAG;AAAA,QACD,IAAA,EAAM,YAAA;AAAA,QACN,QAAQ,CAAA,CAAE,KAAA;AAAA,QACV,MAAM,CAAA,CAAE,KAAA;AAAA,QACR,OAAO,KAAA,CAAM;AAAA,OACd,CAAA,GACD,KAAA;AAAA,IACN;AAAA,IACA,KAAK,gBAAA,EAAkB;AACrB,MAAA,MAAM,IAAI,MAAA,EAAO;AACjB,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,oBAAoB,aAAa,CAAA;AACxE,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,kBAAkB,aAAa,CAAA;AACtE,MAAA,OAAO,EAAE,EAAA,GACL,EAAA,CAAG,EAAE,IAAA,EAAM,kBAAkB,MAAA,EAAQ,CAAA,CAAE,KAAA,EAAO,IAAA,EAAM,KAAK,KAAA,EAAO,OAAA,EAAS,CAAA,CAAE,KAAA,EAAO,CAAA,GAClF,CAAA;AAAA,IACN;AAAA,IACA,KAAK,aAAA,EAAe;AAClB,MAAA,MAAM,IAAI,MAAA,EAAO;AACjB,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,wBAAwB,mBAAmB,CAAA;AACpF,MAAA,OAAO,KAAA,CAAM,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,aAAA,EAAe,MAAA,EAAQ,CAAA,CAAE,KAAA,EAAO,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,CAAA,GAAI,KAAA;AAAA,IACvF;AAAA,IACA,KAAK,aAAA,EAAe;AAClB,MAAA,MAAM,IAAI,MAAA,EAAO;AACjB,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,MAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,yBAAyB,oBAAoB,CAAA;AACtF,MAAA,OAAO,KAAA,CAAM,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,aAAA,EAAe,MAAA,EAAQ,CAAA,CAAE,KAAA,EAAO,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,CAAA,GAAI,KAAA;AAAA,IACvF;AAAA,IACA,KAAK,aAAA,EAAe;AAClB,MAAA,MAAM,UAAU,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAA,EAAY,iBAAiB,aAAa,CAAA;AAC5E,MAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AASxB,MAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,qBAAqB,aAAa,CAAA;AAC3E,MAAA,OAAO,KAAA,CAAM,KACT,EAAA,CAAG;AAAA,QACD,IAAA,EAAM,aAAA;AAAA,QACN,UAAU,OAAA,CAAQ,KAAA;AAAA,QAClB,OAAO,KAAA,CAAM;AAAA,OACd,CAAA,GACD,KAAA;AAAA,IACN;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,MAAM,IAAI,MAAA,EAAO;AACjB,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,cAAc,MAAA,EAAQ,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC9D;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,IAAI,MAAA,EAAO;AACjB,MAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAElB,MAAA,MAAM,YAAY,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,aAAA,EAAe,qBAAqB,aAAa,CAAA;AACrF,MAAA,OAAO,SAAA,CAAU,KACb,EAAA,CAAG;AAAA,QACD,IAAA,EAAM,UAAA;AAAA,QACN,QAAQ,CAAA,CAAE,KAAA;AAAA,QACV,aAAa,SAAA,CAAU;AAAA,OACxB,CAAA,GACD,SAAA;AAAA,IACN;AAAA,IACA,KAAK,iBAAA,EAAmB;AACtB,MAAA,MAAM,UAAU,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,UAAA,EAAY,iBAAiB,aAAa,CAAA;AAC5E,MAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,MAAA,MAAM,SAAA,GAAY,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,YAAY,aAAa,CAAA;AACjE,MAAA,IAAI,CAAC,SAAA,CAAU,EAAA,EAAI,OAAO,SAAA;AAC1B,MAAA,MAAM,MAAM,YAAA,CAAa,CAAA,EAAG,IAAI,CAAA,SAAA,CAAA,EAAa,UAAU,KAAK,CAAA;AAC5D,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,MAAM,QAAA,GAAW,eAAA;AAAA,QAAgB,GAAA,CAAI,KAAA;AAAA,QAAO,CAAC,GAAG,IAAA,KAC9C,aAAA,CAAc,GAAG,IAAI,CAAA,UAAA,EAAa,CAAC,CAAA,CAAA,CAAA,EAAK,IAAI;AAAA,OAC9C;AACA,MAAA,OAAO,QAAA,CAAS,KACZ,EAAA,CAAG;AAAA,QACD,IAAA,EAAM,iBAAA;AAAA,QACN,UAAU,OAAA,CAAQ,KAAA;AAAA,QAClB,UAAU,QAAA,CAAS;AAAA,OACpB,CAAA,GACD,QAAA;AAAA,IACN;AAAA,IACA,KAAK,aAAA,EAAe;AAClB,MAAA,MAAM,IAAI,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,oBAAoB,aAAa,CAAA;AACrE,MAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,eAAe,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO,CAAA,GAAI,CAAA;AAAA,IAC7D;AAAA,IACA,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,IAAA,GAAO,YAAA,CAAa,IAAA,EAAM,CAAA,EAAG,OAAO,qBAAqB,CAAA;AAC/D,MAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,MAAA,MAAM,MAAM,YAAA,CAAa,CAAA,EAAG,IAAI,CAAA,IAAA,CAAA,EAAQ,KAAK,KAAK,CAAA;AAClD,MAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,MAAA,MAAM,GAAA,GAAM,eAAA;AAAA,QAAgB,GAAA,CAAI,KAAA;AAAA,QAAO,CAAC,GAAG,IAAA,KACzC,eAAA,CAAgB,GAAG,IAAI,CAAA,KAAA,EAAQ,CAAC,CAAA,CAAA,CAAA,EAAK,IAAI;AAAA,OAC3C;AACA,MAAA,OAAO,GAAA,CAAI,EAAA,GAAK,EAAA,CAAG,EAAE,IAAA,EAAM,SAAS,GAAA,EAAK,GAAA,CAAI,KAAA,EAAO,CAAA,GAAI,GAAA;AAAA,IAC1D;AAAA,IACA;AACE,MAAA,OAAO,aAAA;AAAA,QACL,IAAA;AAAA,QACA,CAAA,CAAE,KAAA;AAAA,QACF;AAAA,OACF;AAAA;AAEN,CAAA;AAWA,IAAM,UAAA,GAAa,CAAC,CAAA,KAA0B;AAC5C,EAAA,IAAI,CAAA,KAAM,IAAA,EAAM,OAAO,EAAE,MAAM,OAAA,EAAQ;AACvC,EAAA,IAAI,OAAO,MAAM,SAAA,EAAW,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA,EAAE;AAC7D,EAAA,IAAI,OAAO,MAAM,QAAA,EAAU,OAAO,EAAE,IAAA,EAAM,SAAA,EAAW,OAAO,CAAA,EAAE;AAC9D,EAAA,IAAI,OAAO,MAAM,QAAA,EAAU,OAAO,EAAE,IAAA,EAAM,SAAA,EAAW,OAAO,CAAA,EAAE;AAC9D,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,EAAG,OAAO,EAAE,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,CAAA,CAAE,GAAA,CAAI,UAAU,CAAA,EAAE;AACxE,EAAA,MAAM,CAAA,uBAAQ,GAAA,EAAqB;AACnC,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,EAAE,CAAA,IAAK,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAA,EAAG,CAAA,CAAE,GAAA,CAAI,CAAA,EAAG,UAAA,CAAW,EAAE,CAAC,CAAA;AAChE,EAAA,OAAO,EAAE,IAAA,EAAM,SAAA,EAAW,MAAA,EAAQ,CAAA,EAAE;AACtC,CAAA;AAEA,IAAM,MAAA,GAAS,CAAI,CAAA,EAAc,GAAA,KAA4D;AAC3F,EAAA,MAAM,CAAA,GAAI,GAAA,CAAI,QAAA,EAAU,UAAA,CAAW,CAAC,CAAC,CAAA;AACrC,EAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAE,EAAA,EAAI,MAAM,KAAA,EAAO,CAAA,CAAE,KAAA,EAAM,GAAI,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,CAAA,CAAE,MAAM,OAAA,EAAQ;AACnF,CAAA;AAEA,IAAM,MAAM,CAAI,KAAA,MAAiC,EAAE,EAAA,EAAI,MAAM,KAAA,EAAM,CAAA;AACnE,IAAM,OAAO,CAAC,KAAA,MAA0C,EAAE,EAAA,EAAI,OAAO,KAAA,EAAM,CAAA;AAGpE,IAAM,MAAA,GAAS;AAAA,EACpB,GAAA,EAAK,CAAC,CAAA,KACJ,OAAO,CAAA,KAAM,QAAA,GAAW,GAAA,CAAI,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA,GAAI,KAAK,kCAAkC,CAAA;AAAA,EACtF,KAAA,EAAO,CAAC,CAAA,KACN,OAAO,CAAA,KAAM,WAAW,GAAA,CAAI,CAAC,CAAA,GAAI,IAAA,CAAK,wBAAwB,CAAA;AAAA,EAChE,IAAA,EAAM,CAAC,CAAA,KACL,OAAO,CAAA,KAAM,YAAY,GAAA,CAAI,CAAC,CAAA,GAAI,IAAA,CAAK,yBAAyB,CAAA;AAAA,EAClE,MAAA,EAAQ,CAAC,CAAA,KACP,OAAO,CAAA,KAAM,WAAW,GAAA,CAAI,CAAC,CAAA,GAAI,IAAA,CAAK,wBAAwB,CAAA;AAAA,EAChE,UAAA,EAAY,CAAC,CAAA,KAA6C,MAAA,CAAO,GAAG,gBAAgB,CAAA;AAAA,EACpF,aAAA,EAAe,CAAC,CAAA,KACd,MAAA,CAAO,GAAG,aAAa,CAAA;AAAA,EACzB,UAAA,EAAY,CAAC,CAAA,KACX,MAAA,CAAO,GAAG,aAAa,CAAA;AAAA,EACzB,WAAA,EAAa,CAAC,CAAA,KAAmD,MAAA,CAAO,GAAG,iBAAiB,CAAA;AAAA,EAC5F,aAAA,EAAe,CAAC,CAAA,KAAkD,MAAA,CAAO,GAAG,mBAAmB,CAAA;AAAA,EAC/F,UAAA,EAAY,CAAC,CAAA,KAA6C,MAAA,CAAO,GAAG,gBAAgB,CAAA;AAAA,EACpF,WAAA,EAAa,CAAC,CAAA,KAA8C,MAAA,CAAO,GAAG,iBAAiB,CAAA;AAAA,EACvF,WAAA,EAAa,CAAC,CAAA,KAA8C,MAAA,CAAO,GAAG,iBAAiB,CAAA;AAAA,EACvF,IAAA,EAAM,CAAC,CAAA,KAA8C,MAAA,CAAO,GAAG,UAAU,CAAA;AAAA,EACzE,MAAA,EAAQ,CAAC,CAAA,KAA8C,MAAA,CAAO,GAAG,YAAY,CAAA;AAAA,EAC7E,QAAA,EAAU,CAAC,CAAA,KAA2C,MAAA,CAAO,GAAG,cAAc,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM9E,YAAA,EAAc,CAAC,CAAA,KAA0C,MAAA,CAAO,GAAG,kBAAkB,CAAA;AAAA,EACrF,cAAA,EAAgB,CAAC,CAAA,KAAiD,MAAA,CAAO,GAAG,oBAAoB,CAAA;AAAA,EAChG,YAAA,EAAc,CAAC,CAAA,KAA+C,MAAA,CAAO,GAAG,kBAAkB,CAAA;AAAA,EAC1F,UAAA,EAAY,CAAC,CAAA,KAA6C,MAAA,CAAO,GAAG,gBAAgB;AACtF;AAIA,IAAM,WAAA,GAAc,CAAC,YAAA,KACnB,SAAA;AAAA,EACE,cAAA;AAAA,EACA,GAAA;AAAA,EACA,4BAA4B,YAAY,CAAA,CAAA;AAAA,EACxC;AACF,CAAA;AAGK,IAAM,UAAA,GAAa,CAAC,IAAA,KAAmC;AAC5D,EAAA,MAAM,MAAA,GAAS,MAAM,IAAI,CAAA;AACzB,EAAA,OAAO,MAAA,CAAO,EAAA,GAAK,aAAA,CAAc,GAAA,EAAK,MAAA,CAAO,KAAK,CAAA,GAAI,WAAA,CAAY,MAAA,CAAO,KAAA,CAAM,OAAO,CAAA;AACxF;AAGO,IAAM,QAAA,GAAW,CAAC,IAAA,KAAqC;AAC5D,EAAA,MAAM,MAAA,GAAS,MAAM,IAAI,CAAA;AACzB,EAAA,OAAO,MAAA,CAAO,EAAA,GAAK,eAAA,CAAgB,GAAA,EAAK,MAAA,CAAO,KAAK,CAAA,GAAI,WAAA,CAAY,MAAA,CAAO,KAAA,CAAM,OAAO,CAAA;AAC1F;;;AChgKA,IAAMC,MAAK,CAAC,KAAA,MAAiB,EAAE,EAAA,EAAI,MAAM,KAAA,EAAM,CAAA;AAC/C,IAAMC,KAAAA,GAAO,CAAC,IAAA,EAAsB,OAAA,EAAiB,UAAA,MAA4B;AAAA,EAC/E,EAAA,EAAI,KAAA;AAAA,EACJ,KAAA,EAAO,UAAA,KAAe,MAAA,GAAY,EAAE,IAAA,EAAM,SAAQ,GAAI,EAAE,IAAA,EAAM,OAAA,EAAS,UAAA;AACzE,CAAA,CAAA;AAEA,IAAM,IAAA,GAAO,CAAC,CAAA,KAAiB,CAAA,CAAE,EAAA;AASjC,IAAM,kBAAA,GAAqB,CAAC,CAAA,EAAM,QAAA,KAA8B;AAC9D,EAAA,MAAM,IAAI,CAAA,CAAE,IAAA;AACZ,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,QAAA,EAAU,OAAO,CAAA;AAChC,EAAA,MAAM,MAAA,GAAS,EAAE,GAAG,CAAA,CAAE,MAAA,EAAQ,IAAA,EAAM,EAAE,GAAG,CAAA,CAAE,MAAA,CAAO,IAAA,EAAM,QAAA,EAAS,EAAE;AACnE,EAAA,OAAO,EAAE,GAAG,CAAA,EAAG,IAAA,EAAM,EAAE,IAAA,EAAM,QAAA,EAAU,QAAO,EAAE;AAClD,CAAA;AAEA,IAAM,cAAA,GAAiB,CAAC,CAAA,KACtB,CAAA,CAAE,IAAA,CAAK,IAAA,KAAS,QAAA,GAAW,CAAA,CAAE,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,QAAA,GAAW,MAAA;AAG3D,IAAM,UAAA,GAAa,CAAC,CAAA,KAAsB;AACxC,EAAA,MAAM,QAAqB,EAAC;AAC5B,EAAA,MAAM,IAAI,CAAA,CAAE,IAAA;AACZ,EAAA,IAAI,CAAA,CAAE,SAAS,QAAA,EAAU;AACvB,IAAA,MAAM,QAAA,GAAW,CAAA,CAAE,MAAA,CAAO,IAAA,CAAK,QAAA;AAC/B,IAAA,QAAA,CAAS,OAAA,CAAQ,CAAC,KAAA,EAAO,CAAA,KAAM;AAC7B,MAAA,KAAA,CAAM,IAAA,CAAK;AAAA,QACT,KAAA;AAAA,QACA,OAAA,EAAS,CAAC,CAAA,KACR,kBAAA;AAAA,UACE,CAAA;AAAA,UACA,QAAA,CAAS,IAAI,CAAC,EAAA,EAAI,MAAO,CAAA,KAAM,CAAA,GAAI,IAAI,EAAG;AAAA;AAC5C,OACH,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH,CAAA,MAAA,IAAW,CAAA,CAAE,IAAA,KAAS,eAAA,EAAiB;AACrC,IAAA,KAAA,CAAM,IAAA,CAAK;AAAA,MACT,KAAA,EAAO,EAAE,IAAA,CAAK,KAAA;AAAA,MACd,SAAS,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,EAAG,MAAM,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,EAAE,GAAG,CAAA,CAAE,MAAM,KAAA,EAAO,CAAA,IAAI,EAAE;AAAA,KACzF,CAAA;AACD,IAAA,KAAA,CAAM,IAAA,CAAK;AAAA,MACT,KAAA,EAAO,EAAE,IAAA,CAAK,QAAA;AAAA,MACd,SAAS,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,EAAG,MAAM,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,EAAE,GAAG,CAAA,CAAE,MAAM,QAAA,EAAU,CAAA,IAAI,EAAE;AAAA,KAC5F,CAAA;AAAA,EACH,CAAA,MAAA,IAAW,CAAA,CAAE,IAAA,KAAS,QAAA,EAAU;AAG9B,IAAA,CAAA,CAAE,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,CAAC,KAAK,CAAA,KAAM;AAC/B,MAAA,KAAA,CAAM,IAAA,CAAK;AAAA,QACT,OAAO,GAAA,CAAI,KAAA;AAAA,QACX,OAAA,EAAS,CAAC,CAAA,MAAO;AAAA,UACf,GAAG,CAAA;AAAA,UACH,IAAA,EAAM;AAAA,YACJ,IAAA,EAAM,QAAA;AAAA,YACN,IAAA,EAAM;AAAA,cACJ,GAAG,CAAA,CAAE,IAAA;AAAA,cACL,OAAO,CAAA,CAAE,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,CAAC,EAAA,EAAI,CAAA,KAAO,CAAA,KAAM,CAAA,GAAI,EAAE,GAAG,EAAA,EAAI,KAAA,EAAO,CAAA,KAAM,EAAG;AAAA;AACzE;AACF,SACF;AAAA,OACD,CAAA;AAAA,IACH,CAAC,CAAA;AACD,IAAA,KAAA,CAAM,IAAA,CAAK;AAAA,MACT,KAAA,EAAO,EAAE,IAAA,CAAK,OAAA;AAAA,MACd,SAAS,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,EAAG,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,EAAE,GAAG,CAAA,CAAE,MAAM,OAAA,EAAS,CAAA,IAAI,EAAE;AAAA,KACpF,CAAA;AAAA,EACH,CAAA,MAAA,IAAW,CAAA,CAAE,IAAA,KAAS,cAAA,EAAgB;AACpC,IAAA,KAAA,CAAM,IAAA,CAAK;AAAA,MACT,KAAA,EAAO,EAAE,IAAA,CAAK,IAAA;AAAA,MACd,SAAS,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,EAAG,MAAM,EAAE,IAAA,EAAM,cAAA,EAAgB,IAAA,EAAM,EAAE,GAAG,CAAA,CAAE,MAAM,IAAA,EAAM,CAAA,IAAI,EAAE;AAAA,KACvF,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAA,CAAE,KAAA,CAAM,SAAA,KAAc,MAAA,EAAW;AACnC,IAAA,MAAM,SAAA,GAAY,EAAE,KAAA,CAAM,SAAA;AAC1B,IAAA,KAAA,CAAM,IAAA,CAAK;AAAA,MACT,KAAA,EAAO,SAAA;AAAA,MACP,OAAA,EAAS,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,EAAE,GAAG,CAAA,CAAE,KAAA,EAAO,SAAA,EAAW,GAAE,EAAE;AAAA,KAC9D,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAA,CAAE,KAAA,CAAM,OAAA,KAAY,MAAA,EAAW;AACjC,IAAA,MAAM,OAAA,GAAU,EAAE,KAAA,CAAM,OAAA;AACxB,IAAA,KAAA,CAAM,KAAK,EAAE,KAAA,EAAO,SAAS,OAAA,EAAS,CAAC,OAAO,EAAE,GAAG,GAAG,KAAA,EAAO,EAAE,GAAG,CAAA,CAAE,KAAA,EAAO,SAAS,CAAA,EAAE,KAAM,CAAA;AAAA,EAC9F;AACA,EAAA,OAAO,KAAA;AACT,CAAA;AAEA,IAAM,QAAA,GAAW,CAAC,MAAA,EAAgB,CAAA,KAAwB;AACxD,EAAA,IAAI,IAAA,CAAK,CAAC,CAAA,KAAM,MAAA,EAAQ,OAAO,CAAA;AAC/B,EAAA,KAAA,MAAW,CAAA,IAAK,UAAA,CAAW,CAAC,CAAA,EAAG;AAC7B,IAAA,MAAM,CAAA,GAAI,QAAA,CAAS,MAAA,EAAQ,CAAA,CAAE,KAAK,CAAA;AAClC,IAAA,IAAI,CAAA,KAAM,QAAW,OAAO,CAAA;AAAA,EAC9B;AACA,EAAA,OAAO,MAAA;AACT,CAAA;AAEA,IAAM,OAAA,GAAU,CAAC,MAAA,EAAgB,CAAA,EAAgB,CAAA,KAAwB;AACvE,EAAA,IAAI,KAAK,CAAC,CAAA,KAAM,MAAA,EAAQ,OAAO,EAAE,CAAC,CAAA;AAClC,EAAA,KAAA,MAAW,CAAA,IAAK,UAAA,CAAW,CAAC,CAAA,EAAG;AAC7B,IAAA,MAAM,CAAA,GAAI,OAAA,CAAQ,MAAA,EAAQ,CAAA,EAAG,EAAE,KAAK,CAAA;AACpC,IAAA,IAAI,CAAA,KAAM,MAAA,EAAW,OAAO,CAAA,CAAE,QAAQ,CAAC,CAAA;AAAA,EACzC;AACA,EAAA,OAAO,MAAA;AACT,CAAA;AAQO,IAAM,UAAA,GAAa,CAAC,CAAA,KAAmB;AAAA,EAC5C,KAAK,CAAC,CAAA;AAAA,EACN,GAAG,UAAA,CAAW,CAAC,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,KAAM,UAAA,CAAW,CAAA,CAAE,KAAK,CAAC;AACrD,CAAA;AAEA,IAAM,gBAAA,GAAmB,CAAC,MAAA,EAAgB,CAAA,KAAwB;AAChE,EAAA,MAAM,QAAA,GAAW,eAAe,CAAC,CAAA;AACjC,EAAA,IAAI,QAAA,KAAa,MAAA,IAAa,QAAA,CAAS,IAAA,CAAK,CAAC,CAAA,KAAM,IAAA,CAAK,CAAC,CAAA,KAAM,MAAM,CAAA,EAAG,OAAO,CAAA;AAC/E,EAAA,KAAA,MAAW,CAAA,IAAK,UAAA,CAAW,CAAC,CAAA,EAAG;AAC7B,IAAA,MAAM,CAAA,GAAI,gBAAA,CAAiB,MAAA,EAAQ,CAAA,CAAE,KAAK,CAAA;AAC1C,IAAA,IAAI,CAAA,KAAM,QAAW,OAAO,CAAA;AAAA,EAC9B;AACA,EAAA,OAAO,MAAA;AACT,CAAA;AAEA,IAAM,UAAA,GAAa,CAAC,UAAA,EAAoB,YAAA,EAAsB,IAAA,KAAqB;AACjF,EAAA,MAAM,CAAA,GAAI,QAAA,CAAS,UAAA,EAAY,IAAI,CAAA;AACnC,EAAA,IAAI,CAAA,KAAM,QAAW,OAAO,KAAA;AAC5B,EAAA,OAAO,UAAA,CAAW,CAAC,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,KAAM,UAAA,CAAW,CAAA,CAAE,KAAK,CAAA,CAAE,QAAA,CAAS,YAAY,CAAC,CAAA;AAC7E,CAAA;AAUA,IAAM,UAAU,CAAC,IAAA,MAA4C,EAAE,GAAA,EAAK,WAAW,IAAA,EAAK,CAAA;AACpF,IAAM,eAAe,CAAC,MAAA,MAAmC,EAAE,GAAA,EAAK,gBAAgB,MAAA,EAAO,CAAA;AAGvF,IAAM,KAAA,GAAQ,CAAI,CAAA,EAAsB,KAAA,KACtC,EAAE,EAAA,GAAK,OAAA,CAAQ,KAAA,CAAM,CAAA,CAAE,KAAK,CAAC,CAAA,GAAI,YAAA,CAAa,EAAE,KAAK,CAAA;AAEvD,IAAM,WAAA,GAAc,CAClBV,MAAAA,EACA,KAAA,EACA,IAAA,KACkB;AAClB,EAAA,IAAI,IAAA,CAAK,SAAS,SAAA,EAAW;AAC3B,IAAA,MAAM,IAAI,IAAA,CAAK,OAAA;AACf,IAAA,MAAM,IAAA,GAAO,CAAC,OAAA,MAAyE;AAAA,MACrF,IAAA,EAAM,SAAA;AAAA,MACN;AAAA,KACF,CAAA;AACA,IAAA,QAAQ,EAAE,IAAA;AAAM,MACd,KAAK,QAAA,EAAU;AACb,QAAA,MAAM,IAAI,CAAA,CAAE,IAAA;AACZ,QAAA,QAAQA,MAAAA;AAAO,UACb,KAAK,OAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACtC,IAAA,CAAK,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,CAAA,IAAK;AAAA,aACnD;AAAA,UACF,KAAK,OAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,cAAc,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACzC,IAAA,CAAK,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,CAAA,IAAK;AAAA,aACnD;AAAA,UACF,KAAK,QAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACtC,IAAA,CAAK,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,MAAA,EAAQ,CAAA,IAAK;AAAA,aACpD;AAAA,UACF,KAAK,MAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KAChC,IAAA,CAAK,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,IAAA,EAAM,CAAA,IAAK;AAAA,aAClD;AAAA,UACF,KAAK,QAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,OAAO,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KAClC,IAAA,CAAK,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,MAAA,EAAQ,CAAA,IAAK;AAAA,aACpD;AAAA,UACF,KAAK,UAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,SAAS,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACpC,IAAA,CAAK,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,QAAA,EAAU,CAAA,IAAK;AAAA,aACtD;AAAA,UACF,KAAK,OAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,cAAc,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACzC,IAAA,CAAK,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,CAAA,IAAK;AAAA,aACnD;AAAA,UACF,KAAK,aAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACtC,IAAA,CAAK,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,WAAA,EAAa,CAAA,IAAK;AAAA,aACzD;AAAA,UACF,KAAK,MAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACtC,IAAA,CAAK,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,IAAA,EAAM,CAAA,IAAK;AAAA,aAClD;AAAA,UACF,KAAK,SAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACtC,IAAA,CAAK,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,OAAA,EAAS,CAAA,IAAK;AAAA,aACrD;AAAA,UACF;AACE,YAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA;AACjC,MACF;AAAA,MACA,KAAK,SAAA,EAAW;AACd,QAAA,MAAM,IAAI,CAAA,CAAE,IAAA;AACZ,QAAA,QAAQA,MAAAA;AAAO,UACb,KAAK,OAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,IAAI,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KAC/B,IAAA,CAAK,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,CAAA,IAAK;AAAA,aACpD;AAAA,UACF,KAAK,MAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACtC,IAAA,CAAK,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,IAAA,EAAM,CAAA,IAAK;AAAA,aACnD;AAAA,UACF,KAAK,SAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,eAAe,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KAC1C,IAAA,CAAK,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,OAAA,EAAS,CAAA,IAAK;AAAA,aACtD;AAAA,UACF;AACE,YAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA;AACjC,MACF;AAAA,MACA,KAAK,UAAA;AACH,QAAA,OAAOA,MAAAA,KAAU,SACb,KAAA,CAAM,MAAA,CAAO,WAAW,KAAK,CAAA,EAAG,CAAC,CAAA,KAAM,IAAA,CAAK,EAAE,MAAM,UAAA,EAAY,IAAA,EAAM,EAAE,IAAA,EAAM,CAAA,EAAE,EAAG,CAAC,CAAA,GACpF,EAAE,GAAA,EAAK,cAAA,EAAe;AAAA,MAC5B,KAAK,OAAA,EAAS;AACZ,QAAA,MAAM,IAAI,CAAA,CAAE,IAAA;AACZ,QAAA,QAAQA,MAAAA;AAAO,UACb,KAAK,OAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACtC,IAAA,CAAK,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,CAAA,IAAK;AAAA,aAClD;AAAA,UACF,KAAK,SAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,aAAa,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACxC,IAAA,CAAK,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,OAAA,EAAS,CAAA,IAAK;AAAA,aACpD;AAAA,UACF;AACE,YAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA;AACjC,MACF;AAAA,MACA,KAAK,UAAA;AACH,QAAA,OAAOA,MAAAA,KAAU,SACb,KAAA,CAAM,MAAA,CAAO,IAAI,KAAK,CAAA,EAAG,CAAC,CAAA,KAAM,IAAA,CAAK,EAAE,MAAM,UAAA,EAAY,IAAA,EAAM,EAAE,IAAA,EAAM,CAAA,EAAE,EAAG,CAAC,CAAA,GAC7E,EAAE,GAAA,EAAK,cAAA,EAAe;AAAA,MAC5B,KAAK,SAAA,EAAW;AACd,QAAA,MAAM,IAAI,CAAA,CAAE,IAAA;AACZ,QAAA,QAAQA,MAAAA;AAAO,UACb,KAAK,MAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KAChC,IAAA,CAAK,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,IAAA,EAAM,CAAA,IAAK;AAAA,aACnD;AAAA,UACF,KAAK,MAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACtC,IAAA,CAAK,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,IAAA,EAAM,CAAA,IAAK;AAAA,aACnD;AAAA,UACF,KAAK,aAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KAChC,IAAA,CAAK,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,WAAA,EAAa,CAAA,IAAK;AAAA,aAC1D;AAAA,UACF,KAAK,SAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACtC,IAAA,CAAK,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,OAAA,EAAS,CAAA,IAAK;AAAA,aACtD;AAAA,UACF,KAAK,MAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACtC,IAAA,CAAK,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,IAAA,EAAM,CAAA,IAAK;AAAA,aACnD;AAAA,UACF;AACE,YAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA;AACjC,MACF;AAAA,MACA,KAAK,UAAA,EAAY;AACf,QAAA,MAAM,IAAI,CAAA,CAAE,IAAA;AACZ,QAAA,QAAQA,MAAAA;AAAO,UACb,KAAK,UAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,cAAc,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACzC,IAAA,CAAK,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,QAAA,EAAU,CAAA,IAAK;AAAA,aACxD;AAAA,UACF,KAAK,eAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KAChC,IAAA,CAAK,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,aAAA,EAAe,CAAA,IAAK;AAAA,aAC7D;AAAA,UACF,KAAK,MAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KAChC,IAAA,CAAK,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,IAAA,EAAM,CAAA,IAAK;AAAA,aACpD;AAAA,UACF,KAAK,OAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACtC,IAAA,CAAK,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,CAAA,IAAK;AAAA,aACrD;AAAA,UACF,KAAK,QAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACtC,IAAA,CAAK,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,MAAA,EAAQ,CAAA,IAAK;AAAA,aACtD;AAAA,UACF;AACE,YAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA;AACjC,MACF;AAAA,MACA,KAAK,MAAA,EAAQ;AACX,QAAA,MAAM,IAAI,CAAA,CAAE,IAAA;AACZ,QAAA,QAAQA,MAAAA;AAAO,UACb,KAAK,OAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACtC,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,CAAA,IAAK;AAAA,aACjD;AAAA,UACF,KAAK,OAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACtC,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,CAAA,IAAK;AAAA,aACjD;AAAA,UACF,KAAK,MAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KAChC,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,IAAA,EAAM,CAAA,IAAK;AAAA,aAChD;AAAA,UACF,KAAK,UAAA;AAGH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,aAAa,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACxC,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,QAAA,EAAU,CAAA,IAAK;AAAA,aACpD;AAAA,UACF,KAAK,MAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACtC,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,IAAA,EAAM,CAAA,IAAK;AAAA,aAChD;AAAA,UACF;AACE,YAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA;AACjC,MACF;AAAA,MACA,KAAK,eAAA,EAAiB;AACpB,QAAA,MAAM,IAAI,CAAA,CAAE,IAAA;AACZ,QAAA,QAAQA,MAAAA;AAAO,UACb,KAAK,OAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACtC,IAAA,CAAK,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,CAAA,IAAK;AAAA,aAC1D;AAAA,UACF,KAAK,OAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,cAAc,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACzC,IAAA,CAAK,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,CAAA,IAAK;AAAA,aAC1D;AAAA,UACF,KAAK,QAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACtC,IAAA,CAAK,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,MAAA,EAAQ,CAAA,IAAK;AAAA,aAC3D;AAAA,UACF,KAAK,UAAA;AAEH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,aAAa,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACxC,IAAA,CAAK,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,QAAA,EAAU,CAAA,IAAK;AAAA,aAC7D;AAAA,UACF,KAAK,MAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACtC,IAAA,CAAK,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,IAAA,EAAM,CAAA,IAAK;AAAA,aACzD;AAAA,UACF;AACE,YAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA;AACjC,MACF;AAAA,MACA,KAAK,MAAA,EAAQ;AACX,QAAA,MAAM,IAAI,CAAA,CAAE,IAAA;AACZ,QAAA,QAAQA,MAAAA;AAAO,UACb,KAAK,MAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,cAAc,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACzC,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,IAAA,EAAM,CAAA,IAAK;AAAA,aAChD;AAAA,UACF,KAAK,OAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACtC,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,CAAA,IAAK;AAAA,aACjD;AAAA,UACF,KAAK,KAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,OAAO,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KAClC,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,GAAA,EAAK,CAAA,IAAK;AAAA,aAC/C;AAAA,UACF,KAAK,QAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,OAAO,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KAClC,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,MAAA,EAAQ,CAAA,IAAK;AAAA,aAClD;AAAA,UACF,KAAK,UAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KAChC,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,QAAA,EAAU,CAAA,IAAK;AAAA,aACpD;AAAA,UACF;AACE,YAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA;AACjC,MACF;AAAA,MACA,KAAK,WAAA;AACH,QAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA,MAC/B;AACE,QAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA;AACjC,EACF;AAEA,EAAA,IAAI,IAAA,CAAK,SAAS,QAAA,EAAU;AAC1B,IAAA,MAAM,IAAI,IAAA,CAAK,MAAA;AACf,IAAA,MAAM,MAAM,CAAC,MAAA,MAAoD,EAAE,IAAA,EAAM,UAAU,MAAA,EAAO,CAAA;AAC1F,IAAA,QAAQ,EAAE,IAAA;AAAM;AAAA;AAAA;AAAA;AAAA,MAKd,KAAK,KAAA,EAAO;AACV,QAAA,MAAM,IAAI,CAAA,CAAE,IAAA;AACZ,QAAA,MAAM,OAAO,CAAA,CAAE,MAAA;AACf,QAAA,IAAIA,MAAAA,KAAU,aAAA,IAAiB,IAAA,CAAK,IAAA,KAAS,MAAA,EAAQ;AACnD,UAAA,OAAO,KAAA;AAAA,YAAM,MAAA,CAAO,YAAY,KAAK,CAAA;AAAA,YAAG,CAAC,CAAA,KACvC,GAAA,CAAI,EAAE,IAAA,EAAM,KAAA,EAAO,MAAM,EAAE,GAAG,CAAA,EAAG,MAAA,EAAQ,EAAE,GAAG,IAAA,EAAM,WAAW,CAAA,EAAE,IAAK;AAAA,WACxE;AAAA,QACF;AACA,QAAA,IAAIA,MAAAA,KAAU,MAAA,IAAU,IAAA,CAAK,IAAA,KAAS,MAAA,EAAQ;AAC5C,UAAA,OAAO,KAAA;AAAA,YAAM,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,YAAG,CAAC,CAAA,KAChC,GAAA,CAAI,EAAE,IAAA,EAAM,KAAA,EAAO,MAAM,EAAE,GAAG,CAAA,EAAG,MAAA,EAAQ,EAAE,GAAG,IAAA,EAAM,MAAM,CAAA,EAAE,IAAK;AAAA,WACnE;AAAA,QACF;AACA,QAAA,IAAIA,MAAAA,KAAU,MAAA,IAAU,IAAA,CAAK,IAAA,KAAS,MAAA,EAAQ;AAC5C,UAAA,OAAO,KAAA;AAAA,YAAM,MAAA,CAAO,IAAI,KAAK,CAAA;AAAA,YAAG,CAAC,CAAA,KAC/B,GAAA,CAAI,EAAE,IAAA,EAAM,KAAA,EAAO,MAAM,EAAE,GAAG,CAAA,EAAG,MAAA,EAAQ,EAAE,GAAG,IAAA,EAAM,MAAM,CAAA,EAAE,IAAK;AAAA,WACnE;AAAA,QACF;AACA,QAAA,IAAIA,MAAAA,KAAU,iBAAA,IAAqB,IAAA,CAAK,IAAA,KAAS,MAAA,EAAQ;AACvD,UAAA,OAAO,KAAA;AAAA,YAAM,MAAA,CAAO,OAAO,KAAK,CAAA;AAAA,YAAG,CAAC,CAAA,KAClC,GAAA,CAAI,EAAE,IAAA,EAAM,KAAA,EAAO,MAAM,EAAE,GAAG,CAAA,EAAG,MAAA,EAAQ,EAAE,GAAG,IAAA,EAAM,iBAAiB,CAAA,EAAE,IAAK;AAAA,WAC9E;AAAA,QACF;AACA,QAAA,IAAIA,WAAU,SAAA,EAAW;AACvB,UAAA,OAAO,KAAA;AAAA,YAAM,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,YAAG,CAAC,CAAA,KACtC,GAAA,CAAI,EAAE,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,OAAA,EAAS,CAAA,IAAK;AAAA,WACjD;AAAA,QACF;AACA,QAAA,IAAIA,MAAAA,KAAU,UAAA,EAAY,OAAO,EAAE,KAAK,cAAA,EAAe;AACvD,QAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA,MAC/B;AAAA,MACA,KAAK,YAAA,EAAc;AACjB,QAAA,MAAM,IAAI,CAAA,CAAE,IAAA;AACZ,QAAA,QAAQA,MAAAA;AAAO,UACb,KAAK,QAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,MAAM,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACjC,GAAA,CAAI,EAAE,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,MAAA,EAAQ,CAAA,IAAK;AAAA,aACvD;AAAA,UACF,KAAK,UAAA;AACH,YAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA,UAC/B;AACE,YAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA;AACjC,MACF;AAAA,MACA,KAAK,MAAA,EAAQ;AACX,QAAA,MAAM,IAAI,CAAA,CAAE,IAAA;AACZ,QAAA,QAAQA,MAAAA;AAAO,UACb,KAAK,aAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,YAAY,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACvC,GAAA,CAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,WAAA,EAAa,CAAA,IAAK;AAAA,aACtD;AAAA,UACF,KAAK,UAAA;AACH,YAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA,UAC/B;AACE,YAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA;AACjC,MACF;AAAA,MACA,KAAK,SAAA,EAAW;AACd,QAAA,MAAM,IAAI,CAAA,CAAE,IAAA;AACZ,QAAA,QAAQA,MAAAA;AAAO,UACb,KAAK,YAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACtC,GAAA,CAAI,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,UAAA,EAAY,CAAA,IAAK;AAAA,aACxD;AAAA,UACF,KAAK,UAAA;AACH,YAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA,UAC/B;AACE,YAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA;AACjC,MACF;AAAA,MACA,KAAK,aAAA,EAAe;AAClB,QAAA,MAAM,IAAI,CAAA,CAAE,IAAA;AACZ,QAAA,QAAQA,MAAAA;AAAO,UACb,KAAK,SAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACtC,GAAA,CAAI,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,OAAA,EAAS,CAAA,IAAK;AAAA,aACzD;AAAA,UACF,KAAK,UAAA;AACH,YAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA,UAC/B;AACE,YAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA;AACjC,MACF;AAAA,MACA,KAAK,YAAA,EAAc;AACjB,QAAA,MAAM,IAAI,CAAA,CAAE,IAAA;AACZ,QAAA,QAAQA,MAAAA;AAAO,UACb,KAAK,SAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACtC,GAAA,CAAI,EAAE,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,OAAA,EAAS,CAAA,IAAK;AAAA,aACxD;AAAA,UACF,KAAK,MAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,YAAY,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KACvC,GAAA,CAAI,EAAE,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,IAAA,EAAM,CAAA,IAAK;AAAA,aACrD;AAAA,UACF,KAAK,aAAA;AACH,YAAA,OAAO,KAAA;AAAA,cAAM,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,cAAG,CAAC,CAAA,KAChC,GAAA,CAAI,EAAE,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,EAAE,GAAG,CAAA,EAAG,WAAA,EAAa,CAAA,IAAK;AAAA,aAC5D;AAAA,UACF,KAAK,UAAA;AACH,YAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA,UAC/B;AACE,YAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA;AACjC,MACF;AAAA,MACA;AACE,QAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA;AACjC,EACF;AAEA,EAAA,IAAI,IAAA,CAAK,SAAS,cAAA,EAAgB;AAChC,IAAA,OAAOA,MAAAA,KAAU,SACb,KAAA,CAAM,MAAA,CAAO,OAAO,KAAK,CAAA,EAAG,CAAC,CAAA,MAAO;AAAA,MAClC,IAAA,EAAM,cAAA;AAAA,MACN,MAAM,EAAE,GAAG,IAAA,CAAK,IAAA,EAAM,MAAM,CAAA;AAA4C,KAC1E,CAAE,CAAA,GACF,EAAE,GAAA,EAAK,cAAA,EAAe;AAAA,EAC5B;AACA,EAAA,IAAI,IAAA,CAAK,SAAS,aAAA,EAAe;AAC/B,IAAA,OAAOA,MAAAA,KAAU,SACb,KAAA,CAAM,MAAA,CAAO,OAAO,KAAK,CAAA,EAAG,CAAC,CAAA,MAAO;AAAA,MAClC,IAAA,EAAM,aAAA;AAAA,MACN,MAAM,EAAE,GAAG,IAAA,CAAK,IAAA,EAAM,MAAM,CAAA;AAA4C,KAC1E,CAAE,CAAA,GACF,EAAE,GAAA,EAAK,cAAA,EAAe;AAAA,EAC5B;AAGA,EAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAC/B,CAAA;AAiBA,IAAM,YAAA,GAAe,CAAC,CAAA,KACnB,CAAA,IAAK,GAAA,IAAO,CAAA,IAAK,GAAA,IAAS,CAAA,IAAK,GAAA,IAAO,CAAA,IAAK,GAAA,IAAQ,CAAA,KAAM,GAAA;AAC5D,IAAM,WAAA,GAAc,CAAC,CAAA,KAAuB,YAAA,CAAa,CAAC,CAAA,IAAM,CAAA,IAAK,OAAO,CAAA,IAAK,GAAA;AACjF,IAAM,YAAA,GAAe,CAAC,CAAA,KAAuB,CAAA,IAAK,OAAO,CAAA,IAAK,GAAA;AAE9D,IAAM,YAAA,GAAe,CAAC,GAAA,KAAyC;AAC7D,EAAA,IAAI,GAAA,CAAI,WAAW,CAAA,EAAG,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,OAAO,eAAA,EAAgB;AACjE,EAAA,MAAM,OAAA,GAAU,GAAA,CAAI,OAAA,CAAQ,GAAG,CAAA;AAC/B,EAAA,MAAM,YAAY,OAAA,GAAU,CAAA,GAAI,MAAM,GAAA,CAAI,KAAA,CAAM,GAAG,OAAO,CAAA;AAC1D,EAAA,IAAI,SAAA,CAAU,MAAA,KAAW,CAAA,IAAK,CAAC,aAAa,SAAA,CAAU,CAAC,CAAE,CAAA,IAAK,CAAC,CAAC,GAAG,SAAS,CAAA,CAAE,MAAM,WAAW,CAAA;AAC7F,IAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,CAAA,SAAA,EAAY,GAAG,CAAA,qBAAA,CAAA,EAAwB;AACpE,EAAA,IAAI,OAAA,GAAU,CAAA,EAAG,OAAO,EAAE,EAAA,EAAI,MAAM,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAU,EAAE;AAChE,EAAA,MAAM,SAAA,GAAY,GAAA,CAAI,KAAA,CAAM,OAAO,CAAA;AACnC,EAAA,IAAI,UAAU,MAAA,GAAS,CAAA,IAAK,UAAU,SAAA,CAAU,MAAA,GAAS,CAAC,CAAA,KAAM,GAAA;AAC9D,IAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,CAAA,4BAAA,EAA+B,GAAG,CAAA,CAAA,CAAA,EAAI;AACnE,EAAA,MAAM,MAAA,GAAS,SAAA,CAAU,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AACpC,EAAA,IAAI,MAAA,CAAO,WAAW,CAAA,IAAK,CAAC,CAAC,GAAG,MAAM,CAAA,CAAE,KAAA,CAAM,YAAY,CAAA;AACxD,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,qBAAqB,GAAG,CAAA,wCAAA;AAAA,KACjC;AACF,EAAA,IAAI,MAAA,CAAO,MAAA,GAAS,CAAA,IAAK,MAAA,CAAO,CAAC,CAAA,KAAM,GAAA;AACrC,IAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,CAAA,kBAAA,EAAqB,GAAG,CAAA,oBAAA,CAAA,EAAuB;AAC5E,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,QAAA,CAAS,MAAA,EAAQ,EAAE,CAAA;AACpC,EAAA,IAAI,CAAC,MAAA,CAAO,aAAA,CAAc,CAAC,CAAA;AACzB,IAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,CAAA,kBAAA,EAAqB,GAAG,CAAA,iBAAA,CAAA,EAAoB;AACzE,EAAA,OAAO,EAAE,IAAI,IAAA,EAAM,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,CAAA,EAAE,EAAE;AAC3D,CAAA;AAEA,IAAM,SAAA,GAAY,CAAC,IAAA,KAAqD;AACtE,EAAA,IAAI,IAAA,CAAK,MAAK,KAAM,EAAA,SAAW,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,YAAA,EAAa;AAChE,EAAA,MAAM,OAAkB,EAAC;AACzB,EAAA,KAAA,MAAW,GAAA,IAAO,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA,EAAG;AACjC,IAAA,MAAM,CAAA,GAAI,aAAa,GAAG,CAAA;AAC1B,IAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,IAAA,IAAA,CAAK,IAAA,CAAK,EAAE,KAAK,CAAA;AAAA,EACnB;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,IAAA,EAAK;AACjC,CAAA;AA0BA,IAAM,WAAA,GAAc,CAClB,CAAA,EACA,KAAA,KAEA,EAAE,EAAA,GAAK,EAAE,KAAK,SAAA,EAAW,IAAA,EAAM,MAAM,CAAA,CAAE,KAAK,GAAE,GAAI,EAAE,KAAK,cAAA,EAAgB,MAAA,EAAQ,EAAE,KAAA,EAAM;AAE3F,IAAM,SAAA,GAAY,CAAI,EAAA,EAAkB,CAAA,EAAW,IAAA,KACjD,EAAA,CAAG,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAO,CAAA,KAAM,CAAA,GAAI,OAAO,CAAE,CAAA;AAEvC,IAAM,YAAA,GAAe,CACnB,IAAA,EACA,KAAA,EACA,IAAA,KACkB;AAClB,EAAA,MAAM,CAAC,IAAA,EAAM,GAAG,IAAI,CAAA,GAAI,IAAA;AACxB,EAAA,IAAI,IAAA,KAAS,MAAA,EAAW,OAAO,EAAE,KAAK,cAAA,EAAe;AAErD,EAAA,IAAI,IAAA,CAAK,SAAS,eAAA,EAAiB;AACjC,IAAA,MAAM,IAAI,IAAA,CAAK,aAAA;AACf,IAAA,IAAI,CAAA,CAAE,SAAS,MAAA,EAAQ;AACrB,MAAA,MAAM,IAAI,CAAA,CAAE,IAAA;AACZ,MAAA,IAAI,IAAA,CAAK,UAAU,SAAA,EAAW;AAC5B,QAAA,IAAI,KAAK,KAAA,KAAU,MAAA;AACjB,UAAA,OAAO,EAAE,KAAK,cAAA,EAAgB,SAAA,EAAW,WAAW,KAAA,EAAO,CAAA,CAAE,QAAQ,MAAA,EAAO;AAC9E,QAAA,IAAI,IAAA,CAAK,KAAA,IAAS,CAAA,CAAE,OAAA,CAAQ,MAAA;AAC1B,UAAA,OAAO;AAAA,YACL,GAAA,EAAK,iBAAA;AAAA,YACL,SAAA,EAAW,SAAA;AAAA,YACX,KAAA,EAAO,EAAE,OAAA,CAAQ,MAAA;AAAA,YACjB,WAAW,IAAA,CAAK;AAAA,WAClB;AACF,QAAA,MAAM,IAAI,IAAA,CAAK,KAAA;AACf,QAAA,MAAM,GAAA,GAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA;AACvB,QAAA,MAAM,OAAA,GAAU,CAAC,CAAA,MAAsD;AAAA,UACrE,IAAA,EAAM,eAAA;AAAA,UACN,aAAA,EAAe,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,EAAE,GAAG,CAAA,EAAG,OAAA,EAAS,UAAU,CAAA,CAAE,OAAA,EAAS,CAAA,EAAG,CAAC,GAAE;AAAE,SACrF,CAAA;AACA,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,MAAA,KAAW,CAAA,IAAK,IAAA,CAAK,CAAC,CAAA,CAAG,KAAA,KAAU,MAAA,GAAY,IAAA,CAAK,CAAC,CAAA,CAAG,KAAA,GAAQ,MAAA;AAClF,QAAA,IAAI,IAAA,KAAS,MAAA,EAAW,OAAO,EAAE,KAAK,cAAA,EAAe;AACrD,QAAA,QAAQ,IAAA;AAAM,UACZ,KAAK,OAAA;AACH,YAAA,OAAO,WAAA,CAAY,MAAA,CAAO,MAAA,CAAO,KAAK,GAAG,CAAC,CAAA,KAAM,OAAA,CAAQ,EAAE,GAAG,GAAA,EAAK,KAAA,EAAO,CAAA,EAAG,CAAC,CAAA;AAAA,UAC/E,KAAK,QAAA;AACH,YAAA,OAAO,WAAA,CAAY,MAAA,CAAO,UAAA,CAAW,KAAK,GAAG,CAAC,CAAA,KAAM,OAAA,CAAQ,EAAE,GAAG,GAAA,EAAK,MAAA,EAAQ,CAAA,EAAG,CAAC,CAAA;AAAA,UACpF,KAAK,OAAA;AACH,YAAA,OAAO,WAAA,CAAY,MAAA,CAAO,WAAA,CAAY,KAAK,GAAG,CAAC,CAAA,KAAM,OAAA,CAAQ,EAAE,GAAG,GAAA,EAAK,KAAA,EAAO,CAAA,EAAG,CAAC,CAAA;AAAA,UACpF,KAAK,OAAA;AAAA,UACL,KAAK,MAAA;AAEH,YAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA,UAC/B;AACE,YAAA,OAAO,EAAE,GAAA,EAAK,eAAA,EAAiB,OAAA,EAAS,IAAA,EAAM,WAAW,CAAC,OAAA,EAAS,QAAA,EAAU,OAAO,CAAA,EAAE;AAAA;AAC1F,MACF;AACA,MAAA,OAAO,EAAE,KAAK,eAAA,EAAiB,OAAA,EAAS,KAAK,KAAA,EAAO,SAAA,EAAW,CAAC,SAAS,CAAA,EAAE;AAAA,IAC7E;AACA,IAAA,IAAI,CAAA,CAAE,SAAS,OAAA,EAAS;AACtB,MAAA,MAAM,IAAI,CAAA,CAAE,IAAA;AACZ,MAAA,IAAI,IAAA,CAAK,UAAU,SAAA,EAAW;AAC5B,QAAA,IAAI,KAAK,KAAA,KAAU,MAAA;AACjB,UAAA,OAAO,EAAE,KAAK,cAAA,EAAgB,SAAA,EAAW,WAAW,KAAA,EAAO,CAAA,CAAE,QAAQ,MAAA,EAAO;AAC9E,QAAA,IAAI,IAAA,CAAK,KAAA,IAAS,CAAA,CAAE,OAAA,CAAQ,MAAA;AAC1B,UAAA,OAAO;AAAA,YACL,GAAA,EAAK,iBAAA;AAAA,YACL,SAAA,EAAW,SAAA;AAAA,YACX,KAAA,EAAO,EAAE,OAAA,CAAQ,MAAA;AAAA,YACjB,WAAW,IAAA,CAAK;AAAA,WAClB;AACF,QAAA,IAAI,KAAK,MAAA,GAAS,CAAA,EAAG,OAAO,EAAE,KAAK,cAAA,EAAe;AAClD,QAAA,MAAM,IAAI,IAAA,CAAK,KAAA;AACf,QAAA,OAAO,YAAY,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA,EAAG,CAAC,CAAA,MAAO;AAAA,UAC/C,IAAA,EAAM,eAAA;AAAA,UACN,aAAA,EAAe,EAAE,IAAA,EAAM,OAAA,EAAS,MAAM,EAAE,GAAG,CAAA,EAAG,OAAA,EAAS,UAAU,CAAA,CAAE,OAAA,EAAS,CAAA,EAAG,CAAC,GAAE;AAAE,SACtF,CAAE,CAAA;AAAA,MACJ;AACA,MAAA,OAAO,EAAE,KAAK,eAAA,EAAiB,OAAA,EAAS,KAAK,KAAA,EAAO,SAAA,EAAW,CAAC,SAAS,CAAA,EAAE;AAAA,IAC7E;AACA,IAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA,EAC/B;AAEA,EAAA,IAAI,KAAK,IAAA,KAAS,QAAA,IAAY,IAAA,CAAK,MAAA,CAAO,SAAS,MAAA,EAAQ;AACzD,IAAA,MAAM,CAAA,GAAI,KAAK,MAAA,CAAO,IAAA;AAEtB,IAAA,MAAM,OAAA,GAAU,CAAA,CAAE,UAAA,IAAc,EAAC;AACjC,IAAA,IAAI,IAAA,CAAK,UAAU,YAAA,EAAc;AAC/B,MAAA,IAAI,KAAK,KAAA,KAAU,MAAA;AACjB,QAAA,OAAO,EAAE,GAAA,EAAK,cAAA,EAAgB,WAAW,YAAA,EAAc,KAAA,EAAO,QAAQ,MAAA,EAAO;AAC/E,MAAA,IAAI,IAAA,CAAK,SAAS,OAAA,CAAQ,MAAA;AACxB,QAAA,OAAO;AAAA,UACL,GAAA,EAAK,iBAAA;AAAA,UACL,SAAA,EAAW,YAAA;AAAA,UACX,OAAO,OAAA,CAAQ,MAAA;AAAA,UACf,WAAW,IAAA,CAAK;AAAA,SAClB;AACF,MAAA,MAAM,IAAI,IAAA,CAAK,KAAA;AACf,MAAA,MAAM,GAAA,GAAM,QAAQ,CAAC,CAAA;AACrB,MAAA,MAAM,OAAA,GAAU,CAAC,CAAA,MAAoD;AAAA,QACnE,IAAA,EAAM,QAAA;AAAA,QACN,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,EAAE,GAAG,CAAA,EAAG,UAAA,EAAY,SAAA,CAAU,OAAA,EAAS,CAAA,EAAG,CAAC,GAAE;AAAE,OAC/E,CAAA;AACA,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,MAAA,KAAW,CAAA,IAAK,IAAA,CAAK,CAAC,CAAA,CAAG,KAAA,KAAU,MAAA,GAAY,IAAA,CAAK,CAAC,CAAA,CAAG,KAAA,GAAQ,MAAA;AAClF,MAAA,IAAI,IAAA,KAAS,MAAA,EAAW,OAAO,EAAE,KAAK,cAAA,EAAe;AACrD,MAAA,QAAQ,IAAA;AAAM,QACZ,KAAK,OAAA;AACH,UAAA,OAAO,WAAA,CAAY,MAAA,CAAO,UAAA,CAAW,KAAK,GAAG,CAAC,CAAA,KAAM,OAAA,CAAQ,EAAE,GAAG,GAAA,EAAK,KAAA,EAAO,CAAA,EAAG,CAAC,CAAA;AAAA,QACnF,KAAK,MAAA;AACH,UAAA,OAAO,WAAA,CAAY,MAAA,CAAO,UAAA,CAAW,KAAK,GAAG,CAAC,CAAA,KAAM,OAAA,CAAQ,EAAE,GAAG,GAAA,EAAK,IAAA,EAAM,CAAA,EAAG,CAAC,CAAA;AAAA,QAClF,KAAK,UAAA;AAEH,UAAA,OAAO,WAAA,CAAY,MAAA,CAAO,WAAA,CAAY,KAAK,GAAG,CAAC,CAAA,KAAM,OAAA,CAAQ,EAAE,GAAG,GAAA,EAAK,QAAA,EAAU,CAAA,EAAG,CAAC,CAAA;AAAA,QACvF;AACE,UAAA,OAAO,EAAE,GAAA,EAAK,eAAA,EAAiB,OAAA,EAAS,IAAA,EAAM,WAAW,CAAC,OAAA,EAAS,MAAA,EAAQ,UAAU,CAAA,EAAE;AAAA;AAC3F,IACF;AACA,IAAA,OAAO,EAAE,KAAK,eAAA,EAAiB,OAAA,EAAS,KAAK,KAAA,EAAO,SAAA,EAAW,CAAC,YAAY,CAAA,EAAE;AAAA,EAChF;AAEA,EAAA,IAAI,KAAK,IAAA,KAAS,OAAA,IAAW,IAAA,CAAK,KAAA,CAAM,SAAS,MAAA,EAAQ;AACvD,IAAA,MAAM,CAAA,GAAI,KAAK,KAAA,CAAM,IAAA;AACrB,IAAA,IAAI,IAAA,CAAK,UAAU,QAAA,EAAU;AAC3B,MAAA,IAAI,KAAK,KAAA,KAAU,MAAA;AACjB,QAAA,OAAO,EAAE,KAAK,cAAA,EAAgB,SAAA,EAAW,UAAU,KAAA,EAAO,CAAA,CAAE,OAAO,MAAA,EAAO;AAC5E,MAAA,IAAI,IAAA,CAAK,KAAA,IAAS,CAAA,CAAE,MAAA,CAAO,MAAA;AACzB,QAAA,OAAO;AAAA,UACL,GAAA,EAAK,iBAAA;AAAA,UACL,SAAA,EAAW,QAAA;AAAA,UACX,KAAA,EAAO,EAAE,MAAA,CAAO,MAAA;AAAA,UAChB,WAAW,IAAA,CAAK;AAAA,SAClB;AACF,MAAA,MAAM,IAAI,IAAA,CAAK,KAAA;AACf,MAAA,MAAM,GAAA,GAAM,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA;AACtB,MAAA,MAAM,OAAA,GAAU,CAAC,CAAA,MAAqD;AAAA,QACpE,IAAA,EAAM,OAAA;AAAA,QACN,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,EAAE,GAAG,CAAA,EAAG,MAAA,EAAQ,UAAU,CAAA,CAAE,MAAA,EAAQ,CAAA,EAAG,CAAC,GAAE;AAAE,OAC3E,CAAA;AACA,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,MAAA,KAAW,CAAA,IAAK,IAAA,CAAK,CAAC,CAAA,CAAG,KAAA,KAAU,MAAA,GAAY,IAAA,CAAK,CAAC,CAAA,CAAG,KAAA,GAAQ,MAAA;AAClF,MAAA,IAAI,IAAA,KAAS,MAAA,EAAW,OAAO,EAAE,KAAK,cAAA,EAAe;AACrD,MAAA,QAAQ,IAAA;AAAM,QACZ,KAAK,OAAA;AACH,UAAA,OAAO,WAAA,CAAY,MAAA,CAAO,UAAA,CAAW,KAAK,GAAG,CAAC,CAAA,KAAM,OAAA,CAAQ,EAAE,GAAG,GAAA,EAAK,KAAA,EAAO,CAAA,EAAG,CAAC,CAAA;AAAA,QACnF,KAAK,UAAA;AACH,UAAA,OAAO,WAAA,CAAY,MAAA,CAAO,IAAA,CAAK,KAAK,GAAG,CAAC,CAAA,KAAM,OAAA,CAAQ,EAAE,GAAG,GAAA,EAAK,QAAA,EAAU,CAAA,EAAG,CAAC,CAAA;AAAA,QAChF,KAAK,MAAA;AACH,UAAA,OAAO,WAAA,CAAY,MAAA,CAAO,UAAA,CAAW,KAAK,GAAG,CAAC,CAAA,KAAM,OAAA,CAAQ,EAAE,GAAG,GAAA,EAAK,IAAA,EAAM,CAAA,EAAG,CAAC,CAAA;AAAA,QAClF,KAAK,IAAA;AAAA,QACL,KAAK,MAAA;AAEH,UAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAAA,QAC/B;AACE,UAAA,OAAO,EAAE,GAAA,EAAK,eAAA,EAAiB,OAAA,EAAS,IAAA,EAAM,WAAW,CAAC,OAAA,EAAS,UAAA,EAAY,MAAM,CAAA,EAAE;AAAA;AAC3F,IACF;AACA,IAAA,OAAO,EAAE,KAAK,eAAA,EAAiB,OAAA,EAAS,KAAK,KAAA,EAAO,SAAA,EAAW,CAAC,QAAQ,CAAA,EAAE;AAAA,EAC5E;AAEA,EAAA,OAAO,EAAE,KAAK,cAAA,EAAe;AAC/B,CAAA;AAIA,IAAM,cAAA,GAAiB,CACrB,IAAA,EACA,CAAA,EACA,IAAA,KACkC;AAClC,EAAA,IAAI,IAAA,CAAK,SAAS,SAAA,EAAW;AAC3B,IAAA,MAAM,IAAI,IAAA,CAAK,OAAA;AACf,IAAA,IAAI,CAAA,CAAE,IAAA,KAAS,QAAA,IAAY,IAAA,KAAS,OAAA;AAClC,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,SAAA;AAAA,QACN,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,EAAE,GAAG,CAAA,CAAE,IAAA,EAAM,KAAA,EAAO,CAAA,EAAqB;AAAE,OAC9E;AACF,IAAA,IAAI,CAAA,CAAE,IAAA,KAAS,QAAA,IAAY,IAAA,KAAS,OAAA;AAClC,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,SAAA;AAAA,QACN,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,EAAE,GAAG,CAAA,CAAE,IAAA,EAAM,KAAA,EAAO,CAAA,EAAqB;AAAE,OAC9E;AACF,IAAA,IAAI,CAAA,CAAE,IAAA,KAAS,WAAA,IAAe,IAAA,KAAS,QAAA;AACrC,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,SAAA;AAAA,QACN,OAAA,EAAS,EAAE,IAAA,EAAM,WAAA,EAAa,MAAM,EAAE,MAAA,EAAQ,GAAgC;AAAE,OAClF;AACF,IAAA,IAAI,CAAA,CAAE,IAAA,KAAS,UAAA,IAAc,IAAA,KAAS,UAAA;AACpC,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,SAAA;AAAA,QACN,OAAA,EAAS,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,EAAE,GAAG,CAAA,CAAE,IAAA,EAAM,QAAA,EAAU,CAAA,EAAqB;AAAE,OACnF;AACF,IAAA,IAAI,CAAA,CAAE,IAAA,KAAS,eAAA,IAAmB,IAAA,KAAS,OAAA;AACzC,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,SAAA;AAAA,QACN,OAAA,EAAS,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,EAAE,GAAG,CAAA,CAAE,IAAA,EAAM,KAAA,EAAO,CAAA,EAAqB;AAAE,OACrF;AAAA,EACJ,CAAA,MAAA,IAAW,IAAA,CAAK,IAAA,KAAS,QAAA,EAAU;AACjC,IAAA,MAAM,IAAI,IAAA,CAAK,MAAA;AACf,IAAA,IAAI,CAAA,CAAE,IAAA,KAAS,SAAA,IAAa,IAAA,KAAS,YAAA;AACnC,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,QAAA;AAAA,QACN,MAAA,EAAQ,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,EAAE,GAAG,CAAA,CAAE,IAAA,EAAM,UAAA,EAAY,CAAA,EAAqB;AAAE,OACnF;AAAA,EACJ,CAAA,MAAA,IAAW,IAAA,CAAK,IAAA,KAAS,OAAA,EAAS;AAChC,IAAA,MAAM,IAAI,IAAA,CAAK,KAAA;AAEf,IAAA,IAAI,CAAA,CAAE,IAAA,KAAS,QAAA,IAAY,IAAA,KAAS,UAAA;AAClC,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,OAAA;AAAA,QACN,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,EAAE,GAAG,CAAA,CAAE,IAAA,EAAM,QAAA,EAAU,CAAA,EAAsB;AAAE,OAChF;AAEF,IAAA,IAAI,CAAA,CAAE,IAAA,KAAS,QAAA,IAAY,IAAA,KAAS,UAAA;AAClC,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,OAAA;AAAA,QACN,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,EAAE,GAAG,CAAA,CAAE,IAAA,EAAM,QAAA,EAAU,CAAA,EAAsB;AAAE,OAChF;AACF,IAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,IAAU,IAAA,KAAS,UAAA;AAChC,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,OAAA;AAAA,QACN,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,EAAE,GAAG,CAAA,CAAE,IAAA,EAAM,QAAA,EAAU,CAAA,EAAsB;AAAE,OAC9E;AACF,IAAA,IAAI,CAAA,CAAE,IAAA,KAAS,YAAA,IAAgB,IAAA,KAAS,UAAA;AACtC,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,OAAA;AAAA,QACN,KAAA,EAAO,EAAE,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,EAAE,GAAG,CAAA,CAAE,IAAA,EAAM,QAAA,EAAU,CAAA,EAAsB;AAAE,OACpF;AAAA,EACJ,CAAA,MAAA,IAAW,IAAA,CAAK,IAAA,KAAS,eAAA,EAAiB;AACxC,IAAA,MAAM,IAAI,IAAA,CAAK,aAAA;AACf,IAAA,IAAI,CAAA,CAAE,IAAA,KAAS,MAAA,IAAU,IAAA,KAAS,QAAA;AAChC,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,eAAA;AAAA,QACN,aAAA,EAAe;AAAA,UACb,IAAA,EAAM,MAAA;AAAA,UACN,MAAM,EAAE,GAAG,CAAA,CAAE,IAAA,EAAM,QAAQ,CAAA;AAAiC;AAC9D,OACF;AACF,IAAA,IAAI,CAAA,CAAE,IAAA,KAAS,OAAA,IAAW,IAAA,KAAS,QAAA;AACjC,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,eAAA;AAAA,QACN,aAAA,EAAe;AAAA,UACb,IAAA,EAAM,OAAA;AAAA,UACN,MAAM,EAAE,GAAG,CAAA,CAAE,IAAA,EAAM,QAAQ,CAAA;AAAiC;AAC9D,OACF;AACF,IAAA,IAAI,CAAA,CAAE,IAAA,KAAS,KAAA,IAAS,IAAA,KAAS,QAAA;AAC/B,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,eAAA;AAAA,QACN,aAAA,EAAe;AAAA,UACb,IAAA,EAAM,KAAA;AAAA,UACN,IAAA,EAAM;AAAA,YACJ,GAAG,CAAA,CAAE,IAAA;AAAA,YACL,MAAA,EAAQ;AAAA;AACV;AACF,OACF;AAAA,EACJ;AACA,EAAA,OAAO,MAAA;AACT,CAAA;AAIA,IAAM,QAAA,GAAW,CAAC,EAAA,EAAqB,IAAA,EAAS,KAAA,KAAuC;AACrF,EAAA,QAAQ,GAAG,IAAA;AAAM,IACf,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,EAAA,CAAG,MAAA,EAAQ,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,EAAG,IAAA,EAAM,EAAA,CAAG,OAAA,KAAY,IAAI,CAAA;AAChF,MAAA,IAAI,WAAA,KAAgB,MAAA;AAClB,QAAA,OAAOU,KAAAA,CAAK,cAAA,EAAgB,CAAA,MAAA,EAAS,EAAA,CAAG,MAAM,CAAA,oBAAA,CAAsB,CAAA;AACtE,MAAA,KAAA,CAAM,KAAK,EAAE,EAAA,EAAI,YAAY,QAAA,EAAU,EAAA,CAAG,QAAQ,CAAA;AAClD,MAAA,OAAOD,IAAG,WAAW,CAAA;AAAA,IACvB;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,MAAM,MAAA,GAAS,SAAA,CAAU,EAAA,CAAG,IAAI,CAAA;AAChC,MAAA,IAAI,CAAC,MAAA,CAAO,EAAA;AACV,QAAA,OAAOC,KAAAA,CAAK,eAAe,CAAA,MAAA,EAAS,EAAA,CAAG,IAAI,CAAA,2BAAA,EAA8B,MAAA,CAAO,KAAK,CAAA,CAAA,CAAG,CAAA;AAC1F,MAAA,MAAM,UAAA,GAAa,QAAA,CAAS,EAAA,CAAG,MAAA,EAAQ,IAAI,CAAA;AAC3C,MAAA,IAAI,UAAA,KAAe,MAAA;AACjB,QAAA,OAAOA,KAAAA,CAAK,cAAA,EAAgB,CAAA,MAAA,EAAS,EAAA,CAAG,MAAM,CAAA,oBAAA,CAAsB,CAAA;AACtE,MAAA,MAAM,OAAO,MAAA,CAAO,KAAA;AACpB,MAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAA+B;AAC7C,QAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,EAAA,CAAG,MAAA,EAAQ,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,EAAG,IAAA,EAAK,CAAA,EAAI,IAAI,CAAA;AAChE,QAAA,IAAI,OAAA,KAAY,MAAA;AACd,UAAA,OAAOA,KAAAA,CAAK,cAAA,EAAgB,CAAA,MAAA,EAAS,EAAA,CAAG,MAAM,CAAA,oBAAA,CAAsB,CAAA;AACtE,QAAA,KAAA,CAAM,KAAK,EAAE,EAAA,EAAI,cAAc,QAAA,EAAU,EAAA,CAAG,QAAQ,CAAA;AACpD,QAAA,OAAOD,IAAG,OAAO,CAAA;AAAA,MACnB,CAAA;AACA,MAAA,IAAI,KAAK,MAAA,KAAW,CAAA,IAAK,KAAK,CAAC,CAAA,CAAG,UAAU,MAAA,EAAW;AAErD,QAAA,MAAME,WAAU,WAAA,CAAY,EAAA,CAAG,MAAM,EAAA,CAAG,KAAA,EAAO,WAAW,IAAI,CAAA;AAC9D,QAAA,QAAQA,SAAQ,GAAA;AAAK,UACnB,KAAK,SAAA;AACH,YAAA,OAAO,MAAA,CAAOA,SAAQ,IAAI,CAAA;AAAA,UAC5B,KAAK,cAAA;AACH,YAAA,OAAOD,KAAAA,CAAK,iBAAiB,CAAA,OAAA,EAAU,EAAA,CAAG,IAAI,CAAA,qBAAA,EAAwB,EAAA,CAAG,MAAM,CAAA,EAAA,CAAI,CAAA;AAAA,UACrF,KAAK,cAAA;AACH,YAAA,OAAOA,KAAAA;AAAA,cACL,qBAAA;AAAA,cACA,CAAA,MAAA,EAAS,EAAA,CAAG,IAAI,CAAA,WAAA,EAAc,GAAG,MAAM,CAAA,2CAAA;AAAA,aACzC;AAAA,UACF,KAAK,cAAA;AACH,YAAA,OAAOA,KAAAA;AAAA,cACL,cAAA;AAAA,cACA,CAAA,sBAAA,EAAyB,GAAG,IAAI,CAAA,WAAA,EAAc,GAAG,MAAM,CAAA,4CAAA,EAA+CC,SAAQ,MAAM,CAAA;AAAA,aACtH;AAAA;AAEJ,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,UAAU,YAAA,CAAa,IAAA,EAAM,EAAA,CAAG,KAAA,EAAO,WAAW,IAAI,CAAA;AAC5D,MAAA,QAAQ,QAAQ,GAAA;AAAK,QACnB,KAAK,SAAA;AACH,UAAA,OAAO,MAAA,CAAO,QAAQ,IAAI,CAAA;AAAA,QAC5B,KAAK,cAAA;AACH,UAAA,OAAOD,KAAAA;AAAA,YACL,aAAA;AAAA,YACA,CAAA,OAAA,EAAU,QAAQ,SAAS,CAAA,WAAA,EAAc,GAAG,MAAM,CAAA,yEAAA,EAAuE,QAAQ,KAAK,CAAA,aAAA;AAAA,WACxI;AAAA,QACF,KAAK,iBAAA;AACH,UAAA,OAAOA,KAAAA;AAAA,YACL,oBAAA;AAAA,YACA,SAAS,OAAA,CAAQ,SAAS,yBAAyB,OAAA,CAAQ,SAAS,cAAc,EAAA,CAAG,MAAM,CAAA,GAAA,EACzF,OAAA,CAAQ,UAAU,CAAA,GAAI,mBAAA,GAAsB,aAAa,OAAA,CAAQ,KAAA,GAAQ,CAAC,CAAA,CAC5E,CAAA,EAAA;AAAA,WACF;AAAA,QACF,KAAK,eAAA;AACH,UAAA,OAAOA,KAAAA;AAAA,YACL,eAAA;AAAA,YACA,CAAA,OAAA,EAAU,OAAA,CAAQ,OAAO,CAAA,YAAA,EAAe,GAAG,IAAI,CAAA,sBAAA,EAAyB,EAAA,CAAG,MAAM,CAAA,8BAAA,EAAiC,OAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAAA,WAChJ;AAAA,QACF,KAAK,cAAA;AACH,UAAA,OAAOA,KAAAA;AAAA,YACL,qBAAA;AAAA,YACA,CAAA,MAAA,EAAS,EAAA,CAAG,IAAI,CAAA,WAAA,EAAc,GAAG,MAAM,CAAA,2CAAA;AAAA,WACzC;AAAA,QACF,KAAK,cAAA;AACH,UAAA,OAAOA,KAAAA;AAAA,YACL,cAAA;AAAA,YACA,CAAA,sBAAA,EAAyB,GAAG,IAAI,CAAA,WAAA,EAAc,GAAG,MAAM,CAAA,4CAAA,EAA+C,QAAQ,MAAM,CAAA;AAAA,WACtH;AAAA;AAEJ,MAAA;AAAA,IACF;AAAA,IACA,KAAK,gBAAA,EAAkB;AACrB,MAAA,MAAM,UAAA,GAAa,QAAA,CAAS,EAAA,CAAG,MAAA,EAAQ,IAAI,CAAA;AAC3C,MAAA,IAAI,UAAA,KAAe,MAAA;AACjB,QAAA,OAAOA,KAAAA,CAAK,cAAA,EAAgB,CAAA,MAAA,EAAS,EAAA,CAAG,MAAM,CAAA,oBAAA,CAAsB,CAAA;AACtE,MAAA,MAAM,UAAU,cAAA,CAAe,EAAA,CAAG,MAAM,EAAA,CAAG,OAAA,EAAS,WAAW,IAAI,CAAA;AACnE,MAAA,IAAI,OAAA,KAAY,MAAA;AACd,QAAA,OAAOA,KAAAA,CAAK,gBAAgB,CAAA,cAAA,EAAiB,EAAA,CAAG,IAAI,CAAA,qBAAA,EAAwB,EAAA,CAAG,MAAM,CAAA,EAAA,CAAI,CAAA;AAC3F,MAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,EAAA,CAAG,MAAA,EAAQ,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,EAAG,IAAA,EAAM,OAAA,EAAQ,CAAA,EAAI,IAAI,CAAA;AACzE,MAAA,IAAI,OAAA,KAAY,MAAA;AACd,QAAA,OAAOA,KAAAA,CAAK,cAAA,EAAgB,CAAA,MAAA,EAAS,EAAA,CAAG,MAAM,CAAA,oBAAA,CAAsB,CAAA;AACtE,MAAA,KAAA,CAAM,KAAK,EAAE,EAAA,EAAI,kBAAkB,QAAA,EAAU,EAAA,CAAG,QAAQ,CAAA;AACxD,MAAA,OAAOD,IAAG,OAAO,CAAA;AAAA,IACnB;AAAA,IACA,KAAK,aAAA,EAAe;AAClB,MAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,EAAA,CAAG,MAAA,EAAQ,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,EAAA,CAAG,KAAA,KAA2B,IAAI,CAAA;AAC5F,MAAA,IAAI,OAAA,KAAY,MAAA;AACd,QAAA,OAAOC,KAAAA,CAAK,cAAA,EAAgB,CAAA,MAAA,EAAS,EAAA,CAAG,MAAM,CAAA,oBAAA,CAAsB,CAAA;AACtE,MAAA,KAAA,CAAM,KAAK,EAAE,EAAA,EAAI,eAAe,QAAA,EAAU,EAAA,CAAG,QAAQ,CAAA;AACrD,MAAA,OAAOD,IAAG,OAAO,CAAA;AAAA,IACnB;AAAA,IACA,KAAK,aAAA,EAAe;AAClB,MAAA,MAAM,OAAA,GAAU,OAAA;AAAA,QACd,EAAA,CAAG,MAAA;AAAA,QACH,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,GAAG,KAAA,EAAiC,CAAA;AAAA,QAC3D;AAAA,OACF;AACA,MAAA,IAAI,OAAA,KAAY,MAAA;AACd,QAAA,OAAOC,KAAAA,CAAK,cAAA,EAAgB,CAAA,MAAA,EAAS,EAAA,CAAG,MAAM,CAAA,oBAAA,CAAsB,CAAA;AACtE,MAAA,KAAA,CAAM,KAAK,EAAE,EAAA,EAAI,eAAe,QAAA,EAAU,EAAA,CAAG,QAAQ,CAAA;AACrD,MAAA,OAAOD,IAAG,OAAO,CAAA;AAAA,IACnB;AAAA,IACA,KAAK,aAAA,EAAe;AAClB,MAAA,MAAM,MAAA,GAAS,QAAA,CAAS,EAAA,CAAG,QAAA,EAAU,IAAI,CAAA;AACzC,MAAA,IAAI,MAAA,KAAW,MAAA;AACb,QAAA,OAAOC,KAAAA,CAAK,gBAAA,EAAkB,CAAA,aAAA,EAAgB,EAAA,CAAG,QAAQ,CAAA,oBAAA,CAAsB,CAAA;AACjF,MAAA,MAAM,QAAA,GAAW,eAAe,MAAM,CAAA;AACtC,MAAA,IAAI,QAAA,KAAa,MAAA;AACf,QAAA,OAAOA,KAAAA;AAAA,UACL,eAAA;AAAA,UACA,SAAS,EAAA,CAAG,QAAQ,CAAA,QAAA,EAAW,MAAA,CAAO,KAAK,IAAI,CAAA,6EAAA;AAAA,SACjD;AACF,MAAA,MAAM,QAAA,GAAW,IAAI,GAAA,CAAI,UAAA,CAAW,IAAI,CAAC,CAAA;AACzC,MAAA,MAAM,SAAA,GAAY,UAAA,CAAW,EAAA,CAAG,KAAK,CAAA,CAAE,IAAA,CAAK,CAAC,EAAA,KAAO,QAAA,CAAS,GAAA,CAAI,EAAE,CAAC,CAAA;AACpE,MAAA,IAAI,SAAA,KAAc,MAAA;AAChB,QAAA,OAAOA,KAAAA;AAAA,UACL,iBAAA;AAAA,UACA,WAAW,SAAS,CAAA,qDAAA;AAAA,SACtB;AAGF,MAAA,MAAM,WAAA,GAAc,CAAC,GAAG,QAAA,EAAU,GAAG,KAAK,CAAA;AAC1C,MAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,EAAA,CAAG,QAAA,EAAU,CAAC,MAAM,kBAAA,CAAmB,CAAA,EAAG,WAAW,CAAA,EAAG,IAAI,CAAA;AACpF,MAAA,IAAI,OAAA,KAAY,MAAA;AACd,QAAA,OAAOA,KAAAA,CAAK,gBAAA,EAAkB,CAAA,aAAA,EAAgB,EAAA,CAAG,QAAQ,CAAA,oBAAA,CAAsB,CAAA;AACjF,MAAA,KAAA,CAAM,KAAK,EAAE,EAAA,EAAI,eAAe,QAAA,EAAU,EAAA,CAAG,UAAU,CAAA;AACvD,MAAA,OAAOD,IAAG,OAAO,CAAA;AAAA,IACnB;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,IAAI,IAAA,CAAK,IAAI,CAAA,KAAM,EAAA,CAAG,QAAQ,OAAOC,KAAAA,CAAK,gBAAgB,6BAA6B,CAAA;AACvF,MAAA,MAAM,MAAA,GAAS,gBAAA,CAAiB,EAAA,CAAG,MAAA,EAAQ,IAAI,CAAA;AAC/C,MAAA,IAAI,MAAA,KAAW,MAAA;AACb,QAAA,OAAOA,KAAAA,CAAK,cAAA,EAAgB,CAAA,MAAA,EAAS,EAAA,CAAG,MAAM,CAAA,oBAAA,CAAsB,CAAA;AACtE,MAAA,MAAM,QAAA,GAAW,eAAe,MAAM,CAAA;AACtC,MAAA,MAAM,OAAA,GAAU,OAAA;AAAA,QACd,KAAK,MAAM,CAAA;AAAA,QACX,CAAC,CAAA,KACC,kBAAA;AAAA,UACE,CAAA;AAAA,UACA,QAAA,CAAS,OAAO,CAAC,CAAA,KAAM,KAAK,CAAC,CAAA,KAAM,GAAG,MAAM;AAAA,SAC9C;AAAA,QACF;AAAA,OACF;AACA,MAAA,IAAI,OAAA,KAAY,MAAA;AACd,QAAA,OAAOA,MAAK,gBAAA,EAAkB,CAAA,aAAA,EAAgB,IAAA,CAAK,MAAM,CAAC,CAAA,oBAAA,CAAsB,CAAA;AAClF,MAAA,KAAA,CAAM,KAAK,EAAE,EAAA,EAAI,cAAc,QAAA,EAAU,EAAA,CAAG,QAAQ,CAAA;AACpD,MAAA,OAAOD,IAAG,OAAO,CAAA;AAAA,IACnB;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,IAAI,EAAA,CAAG,WAAW,EAAA,CAAG,WAAA;AACnB,QAAA,OAAOC,KAAAA,CAAK,gBAAgB,iCAAiC,CAAA;AAC/D,MAAA,IAAI,UAAA,CAAW,EAAA,CAAG,MAAA,EAAQ,EAAA,CAAG,aAAa,IAAI,CAAA;AAC5C,QAAA,OAAOA,KAAAA;AAAA,UACL,cAAA;AAAA,UACA;AAAA,SACF;AACF,MAAA,MAAM,MAAA,GAAS,QAAA,CAAS,EAAA,CAAG,MAAA,EAAQ,IAAI,CAAA;AACvC,MAAA,IAAI,MAAA,KAAW,MAAA;AACb,QAAA,OAAOA,KAAAA,CAAK,cAAA,EAAgB,CAAA,MAAA,EAAS,EAAA,CAAG,MAAM,CAAA,oBAAA,CAAsB,CAAA;AACtE,MAAA,MAAM,SAAA,GAAY,QAAA,CAAS,EAAA,CAAG,WAAA,EAAa,IAAI,CAAA;AAC/C,MAAA,IAAI,SAAA,KAAc,MAAA;AAChB,QAAA,OAAOA,KAAAA,CAAK,gBAAA,EAAkB,CAAA,aAAA,EAAgB,EAAA,CAAG,WAAW,CAAA,oBAAA,CAAsB,CAAA;AACpF,MAAA,IAAI,cAAA,CAAe,SAAS,CAAA,KAAM,MAAA;AAChC,QAAA,OAAOA,KAAAA;AAAA,UACL,eAAA;AAAA,UACA,SAAS,EAAA,CAAG,WAAW,CAAA,QAAA,EAAW,SAAA,CAAU,KAAK,IAAI,CAAA,wBAAA;AAAA,SACvD;AACF,MAAA,MAAM,WAAA,GAAc,QAAA,CAAS,EAAE,IAAA,EAAM,YAAA,EAAc,MAAA,EAAQ,EAAA,CAAG,MAAA,EAAO,EAAG,IAAA,EAAM,EAAE,CAAA;AAChF,MAAA,IAAI,CAAC,WAAA,CAAY,EAAA,EAAI,OAAO,WAAA;AAC5B,MAAA,MAAM,QAAA,GAAW,QAAA;AAAA,QACf,EAAE,IAAA,EAAM,aAAA,EAAe,UAAU,EAAA,CAAG,WAAA,EAAa,OAAO,MAAA,EAAO;AAAA,QAC/D,WAAA,CAAY,KAAA;AAAA,QACZ;AAAC,OACH;AACA,MAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,MAAA,KAAA,CAAM,KAAK,EAAE,EAAA,EAAI,YAAY,QAAA,EAAU,EAAA,CAAG,QAAQ,CAAA;AAClD,MAAA,OAAOD,GAAAA,CAAG,SAAS,KAAK,CAAA;AAAA,IAC1B;AAAA,IACA,KAAK,iBAAA,EAAmB;AACtB,MAAA,MAAM,MAAA,GAAS,QAAA,CAAS,EAAA,CAAG,QAAA,EAAU,IAAI,CAAA;AACzC,MAAA,IAAI,MAAA,KAAW,MAAA;AACb,QAAA,OAAOC,KAAAA,CAAK,gBAAA,EAAkB,CAAA,aAAA,EAAgB,EAAA,CAAG,QAAQ,CAAA,oBAAA,CAAsB,CAAA;AACjF,MAAA,MAAM,QAAA,GAAW,eAAe,MAAM,CAAA;AACtC,MAAA,IAAI,QAAA,KAAa,MAAA;AACf,QAAA,OAAOA,KAAAA;AAAA,UACL,eAAA;AAAA,UACA,SAAS,EAAA,CAAG,QAAQ,CAAA,QAAA,EAAW,MAAA,CAAO,KAAK,IAAI,CAAA,wBAAA;AAAA,SACjD;AACF,MAAA,MAAM,UAAA,GAAa,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA;AACpC,MAAA,MAAM,aAAA,GAAgB,CAAC,GAAG,UAAU,EAAE,IAAA,EAAK;AAC3C,MAAA,MAAM,SAAA,GAAY,CAAC,GAAG,EAAA,CAAG,QAAQ,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,KAAM,CAAW,CAAA,CAAE,IAAA,EAAK;AAChE,MAAA,IACE,aAAA,CAAc,MAAA,KAAW,SAAA,CAAU,MAAA,IACnC,aAAA,CAAc,IAAA,CAAK,CAAC,EAAA,EAAI,CAAA,KAAM,EAAA,KAAO,SAAA,CAAU,CAAC,CAAC,CAAA;AAEjD,QAAA,OAAOA,KAAAA;AAAA,UACL,kBAAA;AAAA,UACA,CAAA,qBAAA,EAAwB,GAAG,QAAQ,CAAA,6CAAA;AAAA,SACrC;AACF,MAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,KAAM,CAAC,IAAA,CAAK,CAAC,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA;AACtD,MAAA,MAAM,SAAA,GAAY,EAAA,CAAG,QAAA,CAClB,GAAA,CAAI,CAAC,EAAA,KAAO,IAAA,CAAK,GAAA,CAAI,EAAY,CAAE,CAAA,CACnC,MAAA,CAAO,CAAC,CAAA,KAAc,MAAM,MAAS,CAAA;AACxC,MAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,EAAA,CAAG,QAAA,EAAU,CAAC,MAAM,kBAAA,CAAmB,CAAA,EAAG,SAAS,CAAA,EAAG,IAAI,CAAA;AAClF,MAAA,IAAI,OAAA,KAAY,MAAA;AACd,QAAA,OAAOA,KAAAA,CAAK,gBAAA,EAAkB,CAAA,aAAA,EAAgB,EAAA,CAAG,QAAQ,CAAA,oBAAA,CAAsB,CAAA;AACjF,MAAA,KAAA,CAAM,KAAK,EAAE,EAAA,EAAI,mBAAmB,QAAA,EAAU,EAAA,CAAG,UAAU,CAAA;AAC3D,MAAA,OAAOD,IAAG,OAAO,CAAA;AAAA,IACnB;AAAA,IACA,KAAK,aAAA;AAEH,MAAA,OAAOA,GAAAA,CAAG,GAAG,IAAI,CAAA;AAAA,IACnB,KAAK,OAAA,EAAS;AACZ,MAAA,IAAI,KAAA,GAAQ,IAAA;AACZ,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,GAAG,GAAA,CAAI,MAAA,EAAQ,KAAK,CAAA,EAAG;AACzC,QAAA,MAAM,IAAI,QAAA,CAAS,EAAA,CAAG,IAAI,CAAC,CAAA,EAAI,OAAO,KAAK,CAAA;AAC3C,QAAA,IAAI,CAAC,EAAE,EAAA,EAAI;AAET,UAAA,OAAO;AAAA,YACL,EAAA,EAAI,KAAA;AAAA,YACJ,KAAA,EAAO;AAAA,cACL,IAAA,EAAM,cAAA;AAAA,cACN,SAAS,CAAA,2BAAA,EAA8B,CAAC,CAAA,EAAA,EAAK,CAAA,CAAE,MAAM,OAAO,CAAA,CAAA;AAAA,cAC5D,UAAA,EAAY;AAAA;AACd,WACF;AAAA,QACF;AACA,QAAA,KAAA,GAAQ,CAAA,CAAE,KAAA;AAAA,MACZ;AACA,MAAA,OAAOA,IAAG,KAAK,CAAA;AAAA,IACjB;AAAA;AAGF,EAAA,OAAOC,KAAAA,CAAK,gBAAgB,0BAA0B,CAAA;AACxD,CAAA;AASO,IAAM,KAAA,GAAQ,CAAO,IAAA,EAAkB,EAAA,KAAwC;AACpF,EAAA,MAAM,QAAkC,EAAC;AACzC,EAAA,MAAM,CAAA,GAAI,QAAA,CAAS,EAAA,EAAuB,IAAA,EAAW,KAAK,CAAA;AAC1D,EAAA,IAAI,CAAC,CAAA,CAAE,EAAA,EAAI,OAAO,CAAA;AAClB,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,EAAE,SAAS,CAAA,CAAE,KAAA,EAAqB,gBAAA,EAAkB,KAAA,EAAM,EAAE;AACxF;;;AC7nCA,IAAME,IAAAA,GAAM,CAAC,CAAA,KAAsB;AACjC,EAAA,IAAI,GAAA,GAAM,GAAA;AACV,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,CAAA,CAAE,MAAA,EAAQ,KAAK,CAAA,EAAG;AACpC,IAAA,MAAM,CAAA,GAAI,EAAE,CAAC,CAAA;AACb,IAAA,MAAM,IAAA,GAAO,CAAA,CAAE,UAAA,CAAW,CAAC,CAAA;AAC3B,IAAA,IAAI,CAAA,KAAM,KAAK,GAAA,IAAO,KAAA;AAAA,SAAA,IACb,CAAA,KAAM,MAAM,GAAA,IAAO,MAAA;AAAA,SAAA,IACnB,IAAA,GAAO,EAAA,EAAM,GAAA,IAAO,KAAA,GAAQ,IAAA,CAAK,SAAS,EAAE,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAA;AAAA,SACjE,GAAA,IAAO,CAAA;AAAA,EACd;AACA,EAAA,OAAO,GAAA,GAAM,GAAA;AACf,CAAA;AAEA,IAAM,iBAAiB,CAAC,CAAA,KACtB,CAAA,CAAE,KAAA,KAAU,YACR,qBAAA,GACA,CAAA,0BAAA,EAA6BA,IAAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA,WAAA,EAAcA,IAAAA,CAAI,CAAA,CAAE,OAAO,CAAC,CAAA,CAAA,CAAA;AASnE,IAAM,eAAA,GAAkB,CAAO,MAAA,KAAsC;AAC1E,EAAA,IAAI,GAAA,GAAM,GAAA;AACV,EAAA,GAAA,IAAO,CAAA,OAAA,EAAUA,IAAAA,CAAI,MAAA,CAAO,IAAI,CAAC,CAAA,CAAA;AACjC,EAAA,GAAA,IAAO,CAAA,MAAA,EAAS,QAAA,CAAS,MAAA,CAAO,EAAqB,CAAC,CAAA,CAAA;AACtD,EAAA,IAAI,MAAA,CAAO,gBAAgB,MAAA,EAAW,GAAA,IAAO,kBAAkBA,IAAAA,CAAI,MAAA,CAAO,WAAW,CAAC,CAAA,CAAA;AACtF,EAAA,GAAA,IAAO,CAAA,YAAA,EAAe,OAAO,OAAA,CAAQ,GAAA,CAAIA,IAAG,CAAA,CAAE,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CAAA;AACvD,EAAA,IAAI,MAAA,CAAO,aAAa,MAAA,EAAW,GAAA,IAAO,eAAeA,IAAAA,CAAI,MAAA,CAAO,QAAQ,CAAC,CAAA,CAAA;AAC7E,EAAA,GAAA,IAAO,CAAA,kBAAA,EAAqB,cAAA,CAAe,MAAA,CAAO,cAAc,CAAC,CAAA,CAAA;AACjE,EAAA,GAAA,IAAO,CAAA,YAAA,EAAeA,IAAAA,CAAI,MAAA,CAAO,QAAQ,CAAC,CAAA,CAAA;AAC1C,EAAA,GAAA,IAAO,CAAA,aAAA,EAAgB,OAAO,SAAS,CAAA,CAAA;AACvC,EAAA,GAAA,IAAO,CAAA,cAAA,EAAiB,MAAA,CAAO,UAAA,GAAa,MAAA,GAAS,OAAO,CAAA,CAAA;AAC5D,EAAA,GAAA,IAAO,CAAA,UAAA,EAAaA,IAAAA,CAAI,MAAA,CAAO,MAAM,CAAC,CAAA,CAAA;AACtC,EAAA,OAAO,GAAA,GAAM,GAAA;AACf;AAOA,IAAM,SAAA,GAAY,CAAC,GAAA,KAAyB;AAC1C,EAAA,QAAQ,IAAI,IAAA;AAAM,IAChB,KAAK,OAAA;AACH,MAAA,OAAO,MAAA;AAAA,IACT,KAAK,OAAA;AACH,MAAA,OAAO,GAAA,CAAI,QAAQ,MAAA,GAAS,OAAA;AAAA,IAC9B,KAAK,SAAA;AACH,MAAA,OAAO,MAAA,CAAO,IAAI,KAAK,CAAA;AAAA,IACzB,KAAK,SAAA;AACH,MAAA,OAAOA,IAAAA,CAAI,IAAI,KAAK,CAAA;AAAA,IACtB,KAAK,QAAA;AACH,MAAA,OAAO,CAAA,CAAA,EAAI,IAAI,KAAA,CAAM,GAAA,CAAI,SAAS,CAAA,CAAE,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CAAA;AAAA,IAC/C,KAAK,SAAA,EAAW;AACd,MAAA,MAAM,QAAkB,EAAC;AACzB,MAAA,KAAA,MAAW,CAAC,CAAA,EAAG,CAAC,CAAA,IAAK,GAAA,CAAI,QAAQ,KAAA,CAAM,IAAA,CAAK,CAAA,EAAGA,IAAAA,CAAI,CAAC,CAAC,CAAA,CAAA,EAAI,SAAA,CAAU,CAAC,CAAC,CAAA,CAAE,CAAA;AACvE,MAAA,OAAO,CAAA,CAAA,EAAI,KAAA,CAAM,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CAAA;AAAA,IAC5B;AAAA;AAEJ,CAAA;AAEA,IAAM,QAAA,GAAW,CAAC,GAAA,KAChB,GAAA,KAAQ,UAAa,GAAA,CAAI,IAAA,KAAS,SAAA,GAAY,GAAA,CAAI,KAAA,GAAQ,MAAA;AAOrD,IAAM,eAAA,GAAkB,CAAC,IAAA,KAAqD;AACnF,EAAA,MAAM,MAAA,GAAS,MAAM,IAAI,CAAA;AACzB,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,CAAA,oBAAA,EAAuB,MAAA,CAAO,KAAA,CAAM,OAAO,CAAA,CAAA,EAAG;AACzF,EAAA,MAAM,OAAO,MAAA,CAAO,KAAA;AACpB,EAAA,IAAI,IAAA,CAAK,SAAS,SAAA,EAAW,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,OAAO,kCAAA,EAAmC;AAC3F,EAAA,MAAM,IAAI,IAAA,CAAK,MAAA;AAEf,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,MAAM,CAAC,CAAA;AACtC,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,UAAU,CAAC,CAAA;AAC9C,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,QAAQ,CAAC,CAAA;AAC1C,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,CAAA,EAAG,IAAI,CAAA;AAC3B,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,CAAA,EAAG,SAAS,CAAA;AACrC,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,CAAA,EAAG,WAAW,CAAA;AAElC,EAAA,IAAI,IAAA,KAAS,MAAA,IAAa,QAAA,KAAa,MAAA,IAAa,MAAA,KAAW,MAAA;AAC7D,IAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,4CAAA,EAA6C;AAC1E,EAAA,IAAI,UAAU,MAAA,EAAW,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,OAAO,0BAAA,EAA2B;AAC/E,EAAA,IAAI,UAAA,KAAe,MAAA,IAAa,UAAA,CAAW,IAAA,KAAS,QAAA;AAClD,IAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,sCAAA,EAAuC;AACpE,EAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,CAAM,IAAA,KAAS,SAAA;AACxC,IAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,yCAAA,EAA0C;AAEvE,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,SAAA,CAAU,KAAK,CAAC,CAAA;AAC1C,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA;AACZ,IAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,CAAA,eAAA,EAAkB,QAAA,CAAS,KAAA,CAAM,IAAI,CAAA,GAAA,EAAM,QAAA,CAAS,KAAA,CAAM,IAAI,CAAA,CAAA,EAAG;AAE9F,EAAA,MAAM,UAAoB,EAAC;AAC3B,EAAA,KAAA,MAAW,IAAA,IAAQ,WAAW,KAAA,EAAO;AACnC,IAAA,IAAI,IAAA,CAAK,SAAS,SAAA,EAAW,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,OAAO,iCAAA,EAAkC;AAC1F,IAAA,OAAA,CAAQ,IAAA,CAAK,KAAK,KAAK,CAAA;AAAA,EACzB;AAEA,EAAA,MAAM,MAAA,GAAS,KAAA,CAAM,CAAA,EAAG,gBAAgB,CAAA;AACxC,EAAA,IAAI,cAAA,GAAoC,EAAE,KAAA,EAAO,SAAA,EAAU;AAC3D,EAAA,IAAI,MAAA,KAAW,MAAA,IAAa,MAAA,CAAO,IAAA,KAAS,SAAA,EAAW;AACrD,IAAA,MAAM,IAAI,QAAA,CAAS,KAAA,CAAM,MAAA,CAAO,MAAA,EAAQ,OAAO,CAAC,CAAA;AAChD,IAAA,IAAI,MAAM,SAAA,EAAW;AACnB,MAAA,cAAA,GAAiB;AAAA,QACf,KAAA,EAAO,SAAA;AAAA,QACP,MAAM,QAAA,CAAS,KAAA,CAAM,OAAO,MAAA,EAAQ,MAAM,CAAC,CAAA,IAAK,EAAA;AAAA,QAChD,SAAS,QAAA,CAAS,KAAA,CAAM,OAAO,MAAA,EAAQ,SAAS,CAAC,CAAA,IAAK;AAAA,OACxD;AAAA,IACF;AAAA,EACF;AAEA,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,CAAA,EAAG,YAAY,CAAA;AACrC,EAAA,MAAM,WAAA,GAAc,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,aAAa,CAAC,CAAA;AACpD,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,UAAU,CAAC,CAAA;AAG9C,EAAA,MAAM,KAAA,GAA8B;AAAA,IAClC,QAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAI,QAAA,CAAS,KAAA;AAAA,IACb,GAAI,WAAA,KAAgB,MAAA,GAAY,EAAE,WAAA,KAAgB,EAAC;AAAA,IACnD,GAAI,QAAA,KAAa,MAAA,GAAY,EAAE,QAAA,KAAa,EAAC;AAAA,IAC7C,MAAA;AAAA,IACA,WAAW,KAAA,CAAM,KAAA;AAAA,IACjB,cAAA;AAAA,IACA,YAAY,OAAA,KAAY,MAAA,IAAa,OAAA,CAAQ,IAAA,KAAS,WAAW,OAAA,CAAQ;AAAA,GAC3E;AAEA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAM;AAC3B;AC7IA,IAAM,SAAS,CACb,IAAA,EACA,IAAA,EACA,KAAA,EACA,OACAJ,cAAAA,KACM;AACN,EAAA,MAAM,EAAE,aAAA,EAAe,KAAA,EAAO,GAAG,MAAK,GAAI,IAAA;AAC1C,EAAA,OAAOA,mBAAkB,MAAA,GACrB,EAAE,GAAG,IAAA,EAAM,MAAM,KAAA,EAAO,KAAA,EAAO,aAAA,EAAAA,cAAAA,KAC/B,EAAE,GAAG,IAAA,EAAM,IAAA,EAAM,OAAO,KAAA,EAAM;AACpC,CAAA;AAaA,IAAM,KAAA,GAAQ,CAAC,CAAA,KAAiB,CAAA,CAAE,EAAA;AAIlC,IAAM,UAAA,GAAa,CAAC,CAAA,KAClB,CAAA,CAAE,IAAA,CAAK,IAAA,KAAS,QAAA,GAAW,CAAA,CAAE,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,QAAA,GAAW,EAAC;AAK5D,IAAM,mBAAmB,CAAC,CAAA,EAAsB,QAAA,KAC9C,CAAA,CAAE,SAAS,QAAA,GACP;AAAA,EACE,IAAA,EAAM,QAAA;AAAA;AAAA;AAAA;AAAA,EAIN,MAAA,EAAQ,EAAE,GAAG,CAAA,CAAE,MAAA,EAAQ,IAAA,EAAM,EAAE,GAAG,CAAA,CAAE,MAAA,CAAO,IAAA,EAAM,QAAA,EAAS;AAC5D,CAAA,GACA,CAAA;AAEN,IAAM,gBAAgB,CAAC,CAAA,KAA4C,gBAAA,CAAiB,CAAA,EAAG,EAAE,CAAA;AAOzF,IAAM,YAAA,GAAeK,gBAAS,cAAA,EAAwB;AAGtD,IAAM,aAAA,GAAgB,CAAC,CAAA,KACrB,UAAA,CAAW,OAAO,CAAA,EAAG,aAAA,CAAc,CAAA,CAAE,IAAI,CAAA,EAAGA,eAAA,CAAS,KAAA,EAAO,YAAA,EAAc,MAAS,CAAC,CAAA;AAGtF,IAAM,cAAA,GAAiB,CAAC,KAAA,EAA0B,CAAA,KAChD,UAAA,CAAW,MAAA,CAAO,CAAA,EAAG,KAAA,EAAOA,eAAA,CAAS,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,MAAS,CAAC,CAAA;AAGjE,IAAM,sBAAA,GAAyB,CAAC,KAAA,EAA0B,CAAA,KACxD,UAAA,CAAW,MAAA,CAAO,CAAA,EAAG,KAAA,EAAOA,eAAA,CAAS,KAAA,EAAO,YAAA,EAAc,CAAA,CAAE,aAAa,CAAC,CAAA;AAI5E,IAAM,OAAA,GAAU,CAAC,CAAA,EAAW,CAAA,KAAuB,IAAI,CAAA,GAAI,EAAA,GAAK,CAAA,GAAI,CAAA,GAAI,CAAA,GAAI,CAAA;AAG5E,IAAM,cAAA,GAAiB,CAAC,OAAA,EAA4B,OAAA,KAAwC;AAC1F,EAAA,MAAM,OAAA,GAAU,IAAI,GAAA,CAAI,OAAO,CAAA;AAC/B,EAAA,MAAM,OAAA,GAAU,QAAQ,MAAA,CAAO,CAAC,MAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAC,CAAA;AACpD,EAAA,MAAM,QAAA,GAAW,QAAQ,MAAA,CAAO,CAAC,MAAM,OAAA,CAAQ,QAAA,CAAS,CAAC,CAAC,CAAA;AAC1D,EAAA,OACE,OAAA,CAAQ,MAAA,KAAW,OAAA,CAAQ,MAAA,IAC3B,OAAA,CAAQ,KAAA,CAAM,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,KAAM,OAAA,CAAQ,CAAC,CAAC,KACxC,QAAA,CAAS,MAAA,KAAW,OAAA,CAAQ,MAAA,IAC5B,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,KAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAE7C,CAAA;AAIA,IAAM,QAAQ,CAAI,CAAA,EAAkB,CAAA,KAAA,CAA+B,CAAA,IAAK,WAAW,CAAA,IAAK,IAAA,CAAA;AAGxF,IAAM,YAAY,CAChB,SAAA,EACA,QACA,KAAA,EACA,KAAA,EACA,IACA,EAAA,KACkB;AAClB,EAAA,MAAM,GAAA,GAAM,CAAC,KAAA,CAAM,EAAA,EAAI,KAAK,CAAA;AAC5B,EAAA,MAAM,GAAA,GAAM,CAAC,KAAA,CAAM,EAAA,EAAI,KAAK,CAAA;AAC5B,EAAA,IAAI,OAAO,GAAA,IAAO,CAAC,KAAA,CAAM,EAAA,EAAI,EAAE,CAAA,EAAG;AAChC,IAAA,SAAA,CAAU,IAAA,CAAK,EAAE,MAAA,EAAQ,KAAA,EAAO,CAAA;AAChC,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,KAAK,OAAO,EAAA;AAChB,EAAA,IAAI,KAAK,OAAO,EAAA;AAChB,EAAA,OAAO,KAAA;AACT,CAAA;AAGA,IAAM,gBAAgB,CACpB,SAAA,EACA,QACA,KAAA,EACA,KAAA,EACA,IACA,EAAA,KACc;AACd,EAAA,MAAM,MAAM,EAAA,KAAO,KAAA;AACnB,EAAA,MAAM,MAAM,EAAA,KAAO,KAAA;AACnB,EAAA,IAAI,GAAA,IAAO,GAAA,IAAO,EAAA,KAAO,EAAA,EAAI;AAC3B,IAAA,SAAA,CAAU,IAAA,CAAK,EAAE,MAAA,EAAQ,KAAA,EAAO,CAAA;AAChC,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,IAAI,KAAK,OAAO,CAAA;AAChB,EAAA,IAAI,KAAK,OAAO,CAAA;AAChB,EAAA,OAAO,CAAA;AACT,CAAA;AAEA,IAAM,aAAa,CAAC,SAAA,EAA4B,EAAA,EAAY,IAAA,EAAS,GAAM,CAAA,KAAwB;AACjG,EAAA,MAAM,KAAK,IAAA,CAAK,KAAA;AAChB,EAAA,MAAM,MAAM,CAAA,CAAE,KAAA;AACd,EAAA,MAAM,MAAM,CAAA,CAAE,KAAA;AACd,EAAA,MAAM,IAAA,GAAO,SAAA,CAAU,SAAA,EAAW,EAAA,EAAI,YAAA,EAAc,GAAG,IAAA,EAAM,GAAA,CAAI,IAAA,EAAM,GAAA,CAAI,IAAI,CAAA;AAC/E,EAAA,MAAM,MAAA,GAAS,SAAA,CAAU,SAAA,EAAW,EAAA,EAAI,cAAA,EAAgB,GAAG,MAAA,EAAQ,GAAA,CAAI,MAAA,EAAQ,GAAA,CAAI,MAAM,CAAA;AACzF,EAAA,MAAM,QAAA,GAAW,SAAA;AAAA,IACf,SAAA;AAAA,IACA,EAAA;AAAA,IACA,gBAAA;AAAA,IACA,EAAA,CAAG,QAAA;AAAA,IACH,GAAA,CAAI,QAAA;AAAA,IACJ,GAAA,CAAI;AAAA,GACN;AACA,EAAA,MAAM,IAAA,GAAO,SAAA,CAAU,SAAA,EAAW,EAAA,EAAI,YAAA,EAAc,GAAG,IAAA,EAAM,GAAA,CAAI,IAAA,EAAM,GAAA,CAAI,IAAI,CAAA;AAC/E,EAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,SAAA,EAAW,EAAA,EAAI,aAAA,EAAe,GAAG,KAAA,EAAO,GAAA,CAAI,KAAA,EAAO,GAAA,CAAI,KAAK,CAAA;AAGpF,EAAA,MAAM,KAAA,GAAuB,EAAE,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAS;AACtD,EAAA,OAAO;AAAA,IACL,GAAG,KAAA;AAAA,IACH,GAAI,IAAA,KAAS,MAAA,GAAY,EAAE,IAAA,KAAS,EAAC;AAAA,IACrC,GAAI,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,KAAU;AAAC,GACzC;AACF,CAAA;AAEA,IAAM,MAAA,GAAS,CACb,SAAA,EACA,IAAA,EACA,MACA,IAAA,KACM;AACN,EAAA,MAAM,IAAI,IAAA,IAAQ,IAAA;AAClB,EAAA,MAAM,IAAI,IAAA,IAAQ,IAAA;AAClB,EAAA,MAAM,EAAA,GAAK,MAAM,IAAI,CAAA;AACrB,EAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,IAAA,CAAK,IAAI,CAAA;AAGrC,EAAA,MAAM,QAAA,GAAW,aAAA;AAAA,IACf,SAAA;AAAA,IACA,EAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAc,IAAI,CAAA;AAAA,IAClB,cAAc,CAAC,CAAA;AAAA,IACf,cAAc,CAAC;AAAA,GACjB;AACA,EAAA,MAAM,aAAa,QAAA,KAAa,CAAA,GAAI,CAAA,GAAI,QAAA,KAAa,IAAI,CAAA,GAAI,IAAA;AAG7D,EAAA,MAAM,cAAc,UAAA,CAAW,SAAA,EAAW,EAAA,EAAI,IAAA,EAAM,GAAG,CAAC,CAAA;AAGxD,EAAA,MAAM,SAAA,GAAY,aAAA;AAAA,IAChB,SAAA;AAAA,IACA,EAAA;AAAA,IACA,OAAA;AAAA,IACA,cAAA,CAAe,OAAO,IAAI,CAAA;AAAA,IAC1B,cAAA,CAAe,OAAO,CAAC,CAAA;AAAA,IACvB,cAAA,CAAe,OAAO,CAAC;AAAA,GACzB;AACA,EAAA,MAAM,WAAA,GAAc,cAAc,CAAA,GAAI,CAAA,CAAE,QAAQ,SAAA,KAAc,CAAA,GAAI,CAAA,CAAE,KAAA,GAAQ,IAAA,CAAK,KAAA;AAGjF,EAAA,MAAM,OAAA,GAAU,aAAA;AAAA,IACd,SAAA;AAAA,IACA,EAAA;AAAA,IACA,eAAA;AAAA,IACA,sBAAA,CAAuB,OAAO,IAAI,CAAA;AAAA,IAClC,sBAAA,CAAuB,OAAO,CAAC,CAAA;AAAA,IAC/B,sBAAA,CAAuB,OAAO,CAAC;AAAA,GACjC;AACA,EAAA,MAAM,SAAA,GACJ,YAAY,CAAA,GAAI,CAAA,CAAE,gBAAgB,OAAA,KAAY,CAAA,GAAI,CAAA,CAAE,aAAA,GAAgB,IAAA,CAAK,aAAA;AAG3E,EAAA,MAAM,QAAA,GAAW,WAAW,IAAI,CAAA;AAChC,EAAA,MAAM,KAAA,GAAQ,WAAW,CAAC,CAAA;AAC1B,EAAA,MAAM,KAAA,GAAQ,WAAW,CAAC,CAAA;AAC1B,EAAA,MAAM,OAAA,GAAU,QAAA,CAAS,GAAA,CAAI,KAAK,CAAA;AAClC,EAAA,MAAM,IAAA,GAAO,KAAA,CAAM,GAAA,CAAI,KAAK,CAAA;AAC5B,EAAA,MAAM,IAAA,GAAO,KAAA,CAAM,GAAA,CAAI,KAAK,CAAA;AAC5B,EAAA,MAAM,UAAU,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA,KAAM,IAAA,CAAK,UAAU,OAAO,CAAA;AAC/D,EAAA,MAAM,UAAU,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA,KAAM,IAAA,CAAK,UAAU,OAAO,CAAA;AAC/D,EAAA,MAAM,OAAA,GAAU,IAAI,GAAA,CAAI,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,KAAM,CAAC,KAAA,CAAM,CAAC,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA;AAC1D,EAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,CAAC,KAAA,CAAM,CAAC,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA;AACpD,EAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,CAAC,KAAA,CAAM,CAAC,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA;AAEpD,EAAA,MAAM,YAAA,GAAe,CAAC,GAAA,KAAmB;AACvC,IAAA,MAAM,EAAA,GAAK,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA;AAC1B,IAAA,IAAI,EAAA,KAAO,MAAA,EAAW,OAAO,MAAA,CAAO,SAAA,EAAW,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,GAAG,CAAC,CAAA;AAC/E,IAAA,MAAM,EAAA,GAAK,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA;AACvB,IAAA,IAAI,EAAA,KAAO,QAAW,OAAO,EAAA;AAC7B,IAAA,MAAM,EAAA,GAAK,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA;AACvB,IAAA,IAAI,EAAA,KAAO,QAAW,OAAO,EAAA;AAC7B,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,iBAAA,EAAoB,GAAG,CAAA,SAAA,CAAW,CAAA;AAAA,EACpD,CAAA;AAEA,EAAA,IAAI,cAAA;AACJ,EAAA,IAAI,CAAC,OAAA,IAAW,CAAC,OAAA,EAAS;AACxB,IAAA,cAAA,GAAiB,OAAA,CAAQ,IAAI,YAAY,CAAA;AAAA,EAC3C,CAAA,MAAA,IAAW,OAAA,IAAW,CAAC,OAAA,EAAS;AAC9B,IAAA,cAAA,GAAiB,IAAA,CAAK,IAAI,YAAY,CAAA;AAAA,EACxC,CAAA,MAAA,IAAW,CAAC,OAAA,IAAW,OAAA,EAAS;AAC9B,IAAA,cAAA,GAAiB,IAAA,CAAK,IAAI,YAAY,CAAA;AAAA,EACxC,CAAA,MAAO;AACL,IAAA,MAAM,OAAA,GAAU,IAAI,GAAA,CAAI,OAAO,CAAA;AAC/B,IAAA,MAAM,IAAA,GAAO,KAAK,MAAA,CAAO,CAAC,MAAM,CAAC,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAC,CAAA;AAC/C,IAAA,MAAM,IAAA,GAAO,KAAK,MAAA,CAAO,CAAC,MAAM,CAAC,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAC,CAAA;AAC/C,IAAA,MAAM,OAAA,GAAU,IAAI,GAAA,CAAI,IAAI,CAAA;AAC5B,IAAA,MAAM,WACJ,cAAA,CAAe,OAAA,EAAS,IAAI,CAAA,IAC5B,eAAe,OAAA,EAAS,IAAI,CAAA,IAC5B,CAAC,KAAK,IAAA,CAAK,CAAC,MAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAC,CAAA;AAClC,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,GAAA,CAAI,YAAY,CAAA;AAC1C,MAAA,MAAM,MAAA,GAAS,CAAC,mBAAG,IAAI,IAAI,CAAC,GAAG,IAAA,EAAM,GAAG,IAAI,CAAC,CAAC,CAAA,CAAE,KAAK,OAAO,CAAA;AAC5D,MAAA,cAAA,GAAiB,CAAC,GAAG,SAAA,EAAW,GAAG,MAAA,CAAO,GAAA,CAAI,YAAY,CAAC,CAAA;AAAA,IAC7D,CAAA,MAAO;AACL,MAAA,SAAA,CAAU,KAAK,EAAE,MAAA,EAAQ,EAAA,EAAI,KAAA,EAAO,YAAY,CAAA;AAChD,MAAA,cAAA,GAAiB,OAAA,CAAQ,IAAI,YAAY,CAAA;AAAA,IAC3C;AAAA,EACF;AAEA,EAAA,MAAM,aAAa,gBAAA,CAAiB,aAAA,CAAc,UAAA,CAAW,IAAI,GAAG,cAAc,CAAA;AAClF,EAAA,OAAO,MAAA,CAAO,IAAA,EAAM,UAAA,EAAY,WAAA,EAAa,aAAa,SAAS,CAAA;AACrE,CAAA;AAQO,IAAM,SAAA,GAAY,CAAC,IAAA,EAAS,CAAA,EAAM,CAAA,KAAsB;AAC7D,EAAA,MAAM,YAA6B,EAAC;AACpC,EAAA,MAAM,MAAA,GAAS,MAAA,CAAO,SAAA,EAAW,IAAA,EAAM,GAAG,CAAC,CAAA;AAC3C,EAAA,OAAO,SAAA,CAAU,MAAA,KAAW,CAAA,GAAI,EAAE,EAAA,EAAI,IAAA,EAAM,IAAA,EAAM,MAAA,EAAO,GAAI,EAAE,EAAA,EAAI,KAAA,EAAO,SAAA,EAAU;AACtF;;;AC7QO,IAAM,aAAA,GAAgB,CAAC,CAAA,KAAuB,CAAA,EAAG,CAAA,CAAE,IAAI,CAAA,CAAA,EAAI,CAAA,CAAE,KAAK,CAAA,CAAA,EAAI,CAAA,CAAE,KAAK,CAAA;AAG7E,IAAM,SAAkB,EAAE,IAAA,EAAM,QAAQ,KAAA,EAAO,CAAA,EAAG,OAAO,CAAA;AAQzD,IAAM,eAAA,GAAkB,CAAC,CAAA,KAAuC;AACrE,EAAA,MAAM,EAAA,GAAK,CAAA,CAAE,WAAA,CAAY,GAAG,CAAA;AAC5B,EAAA,IAAI,EAAA,IAAM,CAAA,IAAK,EAAA,KAAO,CAAA,CAAE,SAAS,CAAA,EAAG;AAClC,IAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,CAAA,uDAAA,EAA0D,CAAC,CAAA,CAAA,EAAG;AAAA,EAC3F;AACA,EAAA,MAAM,IAAA,GAAO,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AAC1B,EAAA,MAAM,GAAA,GAAM,CAAA,CAAE,KAAA,CAAM,EAAA,GAAK,CAAC,CAAA;AAC1B,EAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,KAAA,CAAM,GAAG,CAAA;AAC3B,EAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,IAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,CAAA,wDAAA,EAA2D,GAAG,CAAA,CAAA,EAAG;AAAA,EAC9F;AACA,EAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAkC;AAErD,IAAA,IAAI,CAAC,OAAA,CAAQ,IAAA,CAAK,CAAC,GAAG,OAAO,MAAA;AAC7B,IAAA,MAAM,CAAA,GAAI,OAAO,CAAC,CAAA;AAClB,IAAA,OAAO,OAAO,SAAA,CAAU,CAAC,CAAA,IAAK,CAAA,IAAK,IAAI,CAAA,GAAI,MAAA;AAAA,EAC7C,CAAA;AACA,EAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,KAAA,CAAM,CAAC,CAAE,CAAA;AACnC,EAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,KAAA,CAAM,CAAC,CAAE,CAAA;AACnC,EAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,MAAA,EAAW;AAC9C,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,wEAAwE,GAAG,CAAA;AAAA,KACpF;AAAA,EACF;AACA,EAAA,OAAO,EAAE,IAAI,IAAA,EAAM,KAAA,EAAO,EAAE,IAAA,EAAM,KAAA,EAAO,OAAM,EAAE;AACnD;AAyBO,IAAM,SAAA,GAAY,CAAC,QAAA,EAAmB,QAAA,KAAqC;AAChF,EAAA,IAAI,SAAS,IAAA,KAAS,QAAA,CAAS,QAAQ,QAAA,CAAS,KAAA,KAAU,SAAS,KAAA,EAAO;AACxE,IAAA,OAAO,EAAE,IAAA,EAAM,SAAA,EAAW,QAAA,EAAS;AAAA,EACrC;AACA,EAAA,IAAI,QAAA,CAAS,QAAQ,QAAA,CAAS,KAAA,SAAc,EAAE,IAAA,EAAM,UAAU,QAAA,EAAS;AACvE,EAAA,OAAO,EAAE,MAAM,SAAA,EAAU;AAC3B;AAKO,IAAM,WAAA,GAAc;AAEpB,IAAM,WAAA,GAAc;AAEpB,IAAM,oBAAA,GAAuB;AAmBpC,IAAM,MAAA,GAAS,CAAC,IAAA,EAAyB,IAAA,EAAc,OAAA,MAAoC;AAAA,EACzF,IAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,CAAA;AAgBO,IAAMC,eAAAA,GAAiB,CAAC,GAAA,KAC7B,kBAAA,CAAmB;AAAA,EACjB,IAAA,EAAM,SAAA;AAAA,EACN,MAAA,sBAAY,GAAA,CAAqB;AAAA,IAC/B,CAAC,WAAA,EAAa,GAAA,CAAI,OAAO,CAAA;AAAA,IACzB,CAAC,WAAA,EAAa,EAAE,IAAA,EAAM,SAAA,EAAW,OAAO,aAAA,CAAc,GAAA,CAAI,OAAO,CAAA,EAAG;AAAA,GACrE;AACH,CAAC;AAOI,IAAM,iBAAA,GAAoB,CAAC,GAAA,KAAkD;AAClF,EAAA,IAAI,GAAA,CAAI,SAAS,SAAA,EAAW;AAC1B,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,KAAA,EAAO,OAAO,YAAA,EAAc,GAAA,EAAK,gCAAgC,CAAA,EAAE;AAAA,EACzF;AACA,EAAA,MAAM,QAAA,GAAW,GAAA,CAAI,MAAA,CAAO,GAAA,CAAI,WAAW,CAAA;AAC3C,EAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,OAAO,eAAA,EAAiB,CAAA,EAAA,EAAK,WAAW,CAAA,CAAA,EAAI,CAAA,wBAAA,EAA2B,WAAW,CAAA,CAAA,CAAG;AAAA,KAC9F;AAAA,EACF;AACA,EAAA,IAAI,QAAA,CAAS,SAAS,SAAA,EAAW;AAC/B,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,OAAO,YAAA,EAAc,CAAA,EAAA,EAAK,WAAW,CAAA,CAAA,EAAI,CAAA,CAAA,EAAI,WAAW,CAAA,0BAAA,CAA4B;AAAA,KAC7F;AAAA,EACF;AACA,EAAA,MAAM,OAAA,GAAU,eAAA,CAAgB,QAAA,CAAS,KAAK,CAAA;AAC9C,EAAA,IAAI,CAAC,QAAQ,EAAA,EAAI;AACf,IAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,MAAA,CAAO,mBAAA,EAAqB,CAAA,EAAA,EAAK,WAAW,CAAA,CAAA,EAAI,OAAA,CAAQ,KAAK,CAAA,EAAE;AAAA,EAC5F;AACA,EAAA,MAAM,OAAA,GAAU,GAAA,CAAI,MAAA,CAAO,GAAA,CAAI,WAAW,CAAA;AAC1C,EAAA,IAAI,YAAY,MAAA,EAAW;AACzB,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,OAAO,eAAA,EAAiB,CAAA,EAAA,EAAK,WAAW,CAAA,CAAA,EAAI,CAAA,wBAAA,EAA2B,WAAW,CAAA,CAAA,CAAG;AAAA,KAC9F;AAAA,EACF;AACA,EAAA,OAAO,EAAE,IAAI,IAAA,EAAM,KAAA,EAAO,EAAE,OAAA,EAAS,OAAA,CAAQ,KAAA,EAAO,OAAA,EAAQ,EAAE;AAChE;AAGO,IAAM,cAAA,GAAiB,CAAC,IAAA,KAAkD;AAC/E,EAAA,MAAM,MAAA,GAAS,MAAM,IAAI,CAAA;AACzB,EAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,IAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,MAAA,CAAO,gBAAgB,GAAA,EAAK,MAAA,CAAO,KAAA,CAAM,OAAO,CAAA,EAAE;AAAA,EAC/E;AACA,EAAA,OAAO,iBAAA,CAAkB,OAAO,KAAK,CAAA;AACvC;AA8BA,IAAM,mBAAA,GAAsB,CAAC,GAAA,KAAsC;AACjE,EAAA,IAAI,GAAA,CAAI,IAAA,KAAS,SAAA,EAAW,OAAO,MAAA;AACnC,EAAA,MAAM,CAAA,GAAI,GAAA,CAAI,MAAA,CAAO,GAAA,CAAI,oBAAoB,CAAA;AAC7C,EAAA,IAAI,CAAA,KAAM,MAAA,IAAa,CAAA,CAAE,IAAA,KAAS,WAAW,OAAO,MAAA;AACpD,EAAA,MAAM,CAAA,GAAI,eAAA,CAAgB,CAAA,CAAE,KAAK,CAAA;AACjC,EAAA,OAAO,CAAA,CAAE,EAAA,GAAK,CAAA,CAAE,KAAA,GAAQ,MAAA;AAC1B,CAAA;AAUO,IAAM,cAAA,GAAiB,CAC5B,KAAA,EACA,OAAA,EACA,aACA,GAAA,KACsC;AACtC,EAAA,MAAM,GAAA,GAAM,MAAM,GAAG,CAAA;AACrB,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,EAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,KAAK,CAAA,EAAG;AACtB,IAAA,MAAM,CAAA,GAAI,YAAY,GAAG,CAAA;AACzB,IAAA,OAAO,CAAA,CAAE,EAAA,GAAK,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,EAAE,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,CAAA,CAAE,KAAA,IAAQ,GAAI,CAAA;AAAA,EACvE;AACA,EAAA,MAAM,UAAuB,EAAE,IAAA,EAAM,GAAA,CAAI,KAAA,EAAO,SAAS,GAAA,EAAI;AAC7D,EAAA,MAAM,EAAA,GAAK,oBAAoB,GAAG,CAAA;AAClC,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,IAAA;AAAA,IACJ,KAAA,EAAO;AAAA,MACL,KAAA,EAAO,KAAA;AAAA,MACP,OAAA,EAAS,OAAO,MAAA,GAAY,OAAA,GAAU,EAAE,GAAG,OAAA,EAAS,iBAAiB,EAAA;AAAG;AAC1E,GACF;AACF;AASO,IAAM,YAAA,GAAe,CAAC,CAAA,KAC3B,CAAA,CAAE,KAAA,GAAQ,UAAA,CAAW,CAAA,CAAE,KAAK,CAAA,GAAI,kBAAA,CAAmB,CAAA,CAAE,OAAA,CAAQ,OAAO;AAKtE,IAAM,SAAA,GAAY,CAAC,GAAA,KAAgD;AACjE,EAAA,IAAI,GAAA,CAAI,SAAS,SAAA,EAAW;AAC1B,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,KAAA,EAAO,OAAO,YAAA,EAAc,GAAA,EAAK,4BAA4B,CAAA,EAAE;AAAA,EACrF;AACA,EAAA,MAAM,IAAA,GAAO,GAAA,CAAI,MAAA,CAAO,GAAA,CAAI,MAAM,CAAA;AAClC,EAAA,IAAI,SAAS,MAAA,EAAW;AACtB,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,KAAA,EAAO,OAAO,eAAA,EAAiB,QAAA,EAAU,+BAA+B,CAAA,EAAE;AAAA,EAChG;AACA,EAAA,IAAI,IAAA,CAAK,SAAS,SAAA,EAAW;AAC3B,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,KAAA,EAAO,OAAO,YAAA,EAAc,QAAA,EAAU,4BAA4B,CAAA,EAAE;AAAA,EAC1F;AACA,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,OAAO,CAAA;AACpC,EAAA,IAAI,SAAS,MAAA,EAAW;AACtB,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,MAAA,CAAO,eAAA,EAAiB,cAAA,EAAgB,yCAAyC;AAAA,KAC1F;AAAA,EACF;AACA,EAAA,IAAI,IAAA,CAAK,SAAS,SAAA,EAAW;AAC3B,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,KAAA,EAAO,OAAO,YAAA,EAAc,cAAA,EAAgB,wBAAwB,CAAA,EAAE;AAAA,EAC5F;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,KAAK,KAAA,EAAM;AACvC,CAAA;AAUA,IAAM,eAAA,GAAkB,CAAC,GAAA,KAAyB;AAChD,EAAA,MAAM,QAAQ,UAAA,CAAW,CAAA,oCAAA,EAAuC,KAAK,SAAA,CAAU,GAAG,CAAC,CAAA,EAAA,CAAI,CAAA;AACvF,EAAA,OAAO,KAAA,CAAM,EAAA,IAAM,KAAA,CAAM,KAAA,CAAM,IAAA,KAAS,iBAAA;AAC1C,CAAA;AAGA,IAAM,eAAA,GAAkB,CAAC,CAAA,MAAmC;AAAA,EAC1D,MAAM,CAAA,CAAE,IAAA;AAAA,EACR,MAAM,CAAA,CAAE,IAAA;AAAA,EACR,SAAS,CAAA,CAAE;AACb,CAAA,CAAA;AAEA,IAAM,eAAA,GAAkB,CAAC,GAAA,KAAuD;AAC9E,EAAA,MAAM,CAAA,GAAI,UAAA,CAAW,kBAAA,CAAmB,GAAG,CAAC,CAAA;AAC5C,EAAA,OAAO,CAAA,CAAE,EAAA,GAAK,CAAA,GAAI,EAAE,EAAA,EAAI,OAAO,KAAA,EAAO,eAAA,CAAgB,CAAA,CAAE,KAAK,CAAA,EAAE;AACjE,CAAA;AASO,IAAM,kBAAA,GAAqB,CAAC,IAAA,KAAgE;AACjG,EAAA,MAAM,MAAA,GAAS,MAAM,IAAI,CAAA;AACzB,EAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,IAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,MAAA,CAAO,gBAAgB,GAAA,EAAK,MAAA,CAAO,KAAA,CAAM,OAAO,CAAA,EAAE;AAAA,EAC/E;AACA,EAAA,OAAO,cAAA,CAA8B,SAAA,EAAW,eAAA,EAAiB,eAAA,EAAiB,OAAO,KAAK,CAAA;AAChG;AAiBO,IAAM,iBAAA,GAAoB,CAC/B,IAAA,EACA,QAAA,GAAoB,MAAA,KACc;AAClC,EAAA,MAAM,GAAA,GAAM,eAAe,IAAI,CAAA;AAC/B,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AAEpB,EAAA,MAAM,MAAA,GAAS,SAAA,CAAU,QAAA,EAAU,GAAA,CAAI,MAAM,OAAO,CAAA;AACpD,EAAA,IAAI,MAAA,CAAO,SAAS,SAAA,EAAW;AAC7B,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,MAAA;AAAA,QACL,iBAAA;AAAA,QACA,KAAK,WAAW,CAAA,CAAA;AAAA,QAChB,oBAAoB,aAAA,CAAc,GAAA,CAAI,KAAA,CAAM,OAAO,CAAC,CAAA,wBAAA,EAA2B,aAAA;AAAA,UAC7E;AAAA,SACD,CAAA,4CAAA;AAAA;AACH,KACF;AAAA,EACF;AAEA,EAAA,MAAM,OAAA,GAAU,cAAA;AAAA,IACd,SAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA,IACA,IAAI,KAAA,CAAM;AAAA,GACZ;AACA,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AAExB,EAAA,MAAM,YAAA,GAAe,YAAA,CAAa,OAAA,CAAQ,KAAK,CAAA;AAC/C,EAAA,MAAM,UAAA,GAAa,MAAM,YAAY,CAAA;AAGrC,EAAA,IAAI,CAAC,WAAW,EAAA,EAAI;AAClB,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,OAAO,cAAA,EAAgB,CAAA,EAAA,EAAK,WAAW,CAAA,CAAA,EAAI,UAAA,CAAW,MAAM,OAAO;AAAA,KAC5E;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,IAAA;AAAA,IACJ,KAAA,EAAOA,eAAAA,CAAe,EAAE,OAAA,EAAS,GAAA,CAAI,MAAM,OAAA,EAAS,OAAA,EAAS,UAAA,CAAW,KAAA,EAAO;AAAA,GACjF;AACF;;;AC3XO,IAAM,eAAA,GAAkB;AAExB,IAAM,mBAAA,GAAsB;AA4BnC,IAAM,KAAA,GAAQ,CAAC,IAAA,EAA4B,IAAA,EAAc,OAAA,MAAuC;AAAA,EAC9F,IAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,CAAA;AAGA,IAAM,MAAA,GAAS,CAAC,MAAA,EAAgB,CAAA,MAAsC;AAAA,EACpE,MAAM,CAAA,CAAE,IAAA;AAAA,EACR,IAAA,EACE,EAAE,IAAA,KAAS,GAAA,GACP,SACA,CAAA,CAAE,IAAA,CAAK,WAAW,GAAG,CAAA,GACnB,SAAS,CAAA,CAAE,IAAA,CAAK,MAAM,CAAC,CAAA,GACvB,GAAG,MAAM,CAAA,CAAA,EAAI,EAAE,IAAI,CAAA,CAAA;AAAA,EAC3B,SAAS,CAAA,CAAE;AACb,CAAA,CAAA;AAsEA,IAAM,OAAA,GAAU,CAAC,CAAA,KAAuB,MAAA,CAAO,UAAU,CAAC,CAAA,IAAK,CAAA,IAAK,WAAA,IAAe,CAAA,IAAK,UAAA;AAExF,IAAM,OAAO,CAAC,KAAA,MAA4B,EAAE,IAAA,EAAM,WAAW,KAAA,EAAM,CAAA;AACnE,IAAM,OAAO,CAAC,KAAA,MAA4B,EAAE,IAAA,EAAM,WAAW,KAAA,EAAM,CAAA;AACnE,IAAM,IAAA,GAAO,CAAC,OAAA,MAA+D;AAAA,EAC3E,IAAA,EAAM,SAAA;AAAA,EACN,MAAA,EAAQ,IAAI,GAAA,CAAI,OAAO;AACzB,CAAA,CAAA;AAGA,IAAM,eAAA,GAAkB,CACtB,OAAA,EACA,MAAA,KACuB;AACvB,EAAA,KAAA,MAAW,CAAA,IAAK,MAAA,CAAO,IAAA,EAAK,EAAG,IAAI,CAAC,OAAA,CAAQ,QAAA,CAAS,CAAC,CAAA,EAAG,OAAO,CAAA;AAChE,EAAA,OAAO,MAAA;AACT,CAAA;AAEA,IAAM,kBAAA,GAAqB,CACzB,IAAA,EACA,IAAA,EACA,MAAA,KACqC;AACrC,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,IAAI,CAAA;AACzB,EAAA,IAAI,CAAA,KAAM,MAAA;AACR,IAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,KAAA,CAAM,iBAAiB,IAAA,EAAM,CAAA,wBAAA,EAA2B,IAAI,CAAA,CAAA,CAAG,CAAA,EAAE;AAC9F,EAAA,IAAI,EAAE,IAAA,KAAS,SAAA;AACb,IAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,KAAA,CAAM,cAAc,IAAA,EAAM,CAAA,CAAA,EAAI,IAAI,CAAA,kBAAA,CAAoB,CAAA,EAAE;AACrF,EAAA,IAAI,EAAE,KAAA,KAAU,EAAA;AACd,IAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,KAAA,CAAM,cAAc,IAAA,EAAM,CAAA,CAAA,EAAI,IAAI,CAAA,4BAAA,CAA8B,CAAA,EAAE;AAC/F,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,EAAE,KAAA,EAAM;AACpC,CAAA;AAIA,IAAM,WAAA,GAAc,CAAC,CAAA,KAA4B;AAC/C,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,UAAA;AACH,MAAA,OAAO,IAAA,CAAK;AAAA,QACV,CAAC,OAAA,EAAS,IAAA,CAAK,UAAU,CAAC,CAAA;AAAA,QAC1B,CAAC,KAAA,EAAO,IAAA,CAAK,CAAA,CAAE,GAAG,CAAC,CAAA;AAAA,QACnB,CAAC,KAAA,EAAO,IAAA,CAAK,CAAA,CAAE,GAAG,CAAC;AAAA,OACpB,CAAA;AAAA,IACH,KAAK,YAAA;AACH,MAAA,OAAO,IAAA,CAAK;AAAA,QACV,CAAC,OAAA,EAAS,IAAA,CAAK,YAAY,CAAC,CAAA;AAAA,QAC5B,CAAC,KAAA,EAAO,IAAA,CAAK,CAAA,CAAE,GAAG,CAAC,CAAA;AAAA,QACnB,CAAC,KAAA,EAAO,IAAA,CAAK,CAAA,CAAE,GAAG,CAAC;AAAA,OACpB,CAAA;AAAA,IACH,KAAK,WAAA;AACH,MAAA,OAAO,IAAA,CAAK;AAAA,QACV,CAAC,OAAA,EAAS,IAAA,CAAK,WAAW,CAAC,CAAA;AAAA,QAC3B,CAAC,KAAA,EAAO,IAAA,CAAK,CAAA,CAAE,GAAG,CAAC,CAAA;AAAA,QACnB,CAAC,KAAA,EAAO,IAAA,CAAK,CAAA,CAAE,GAAG,CAAC;AAAA,OACpB,CAAA;AAAA,IACH,KAAK,MAAA;AACH,MAAA,OAAO,IAAA,CAAK;AAAA,QACV,CAAC,OAAA,EAAS,IAAA,CAAK,MAAM,CAAC,CAAA;AAAA,QACtB,CAAC,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,GAAA,CAAI,IAAI,CAAA,EAAG;AAAA,OACzD,CAAA;AAAA,IACH,KAAK,WAAA;AACH,MAAA,OAAO,IAAA,CAAK,CAAC,CAAC,OAAA,EAAS,KAAK,WAAW,CAAC,CAAC,CAAC,CAAA;AAAA;AAEhD,CAAA;AAEA,IAAM,WAAA,GAAc,CAAC,IAAA,EAAc,EAAA,KAAuD;AACxF,EAAA,IAAI,GAAG,IAAA,KAAS,SAAA;AACd,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,KAAA,EAAO,MAAM,YAAA,EAAc,IAAA,EAAM,6BAA6B,CAAA,EAAE;AACtF,EAAA,MAAM,IAAA,GAAO,EAAA,CAAG,MAAA,CAAO,GAAA,CAAI,OAAO,CAAA;AAClC,EAAA,IAAI,IAAA,KAAS,MAAA;AACX,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,OAAO,KAAA,CAAM,eAAA,EAAiB,CAAA,EAAG,IAAI,UAAU,0CAA0C;AAAA,KAC3F;AACF,EAAA,IAAI,KAAK,IAAA,KAAS,SAAA;AAChB,IAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,KAAA,CAAM,cAAc,CAAA,EAAG,IAAI,CAAA,MAAA,CAAA,EAAU,0BAA0B,CAAA,EAAE;AAC9F,EAAA,MAAM,MAAM,IAAA,CAAK,KAAA;AAEjB,EAAA,MAAM,MAAA,GAAS,CACb,OAAA,EACA,CAAA,KACgC;AAChC,IAAA,MAAM,KAAA,GAAQ,gBAAgB,CAAC,OAAA,EAAS,GAAG,OAAO,CAAA,EAAG,GAAG,MAAM,CAAA;AAC9D,IAAA,IAAI,KAAA,KAAU,MAAA;AACZ,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,KAAA;AAAA,QACJ,KAAA,EAAO,KAAA;AAAA,UACL,kBAAA;AAAA,UACA,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA;AAAA,UAChB,CAAA,gBAAA,EAAmB,KAAK,CAAA,QAAA,EAAW,GAAG,CAAA,OAAA;AAAA;AACxC,OACF;AACF,IAAA,OAAO,CAAA,EAAE;AAAA,EACX,CAAA;AAEA,EAAA,MAAM,QAAA,GAAW,CAAC,IAAA,KAAmD;AACnE,IAAA,MAAM,CAAA,GAAI,EAAA,CAAG,MAAA,CAAO,GAAA,CAAI,IAAI,CAAA;AAC5B,IAAA,IAAI,CAAA,KAAM,MAAA;AACR,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,KAAA;AAAA,QACJ,KAAA,EAAO,KAAA,CAAM,eAAA,EAAiB,CAAA,EAAG,IAAI,IAAI,IAAI,CAAA,CAAA,EAAI,CAAA,wBAAA,EAA2B,IAAI,CAAA,CAAA,CAAG;AAAA,OACrF;AACF,IAAA,IAAI,EAAE,IAAA,KAAS,SAAA,IAAa,CAAC,MAAA,CAAO,SAAA,CAAU,EAAE,KAAK,CAAA;AACnD,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,KAAA;AAAA,QACJ,KAAA,EAAO,KAAA,CAAM,YAAA,EAAc,CAAA,EAAG,IAAI,IAAI,IAAI,CAAA,CAAA,EAAI,CAAA,CAAA,EAAI,IAAI,CAAA,oBAAA,CAAsB;AAAA,OAC9E;AACF,IAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,EAAE,KAAA,EAAM;AAAA,EACpC,CAAA;AAEA,EAAA,MAAM,QAAA,GAAW,CAAC,IAAA,KAAmD;AACnE,IAAA,MAAM,CAAA,GAAI,EAAA,CAAG,MAAA,CAAO,GAAA,CAAI,IAAI,CAAA;AAC5B,IAAA,IAAI,CAAA,KAAM,MAAA;AACR,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,KAAA;AAAA,QACJ,KAAA,EAAO,KAAA,CAAM,eAAA,EAAiB,CAAA,EAAG,IAAI,IAAI,IAAI,CAAA,CAAA,EAAI,CAAA,wBAAA,EAA2B,IAAI,CAAA,CAAA,CAAG;AAAA,OACrF;AACF,IAAA,IAAI,EAAE,IAAA,KAAS,SAAA;AACb,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,KAAA;AAAA,QACJ,KAAA,EAAO,KAAA,CAAM,YAAA,EAAc,CAAA,EAAG,IAAI,IAAI,IAAI,CAAA,CAAA,EAAI,CAAA,CAAA,EAAI,IAAI,CAAA,kBAAA,CAAoB;AAAA,OAC5E;AACF,IAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,EAAE,KAAA,EAAM;AAAA,EACpC,CAAA;AAEA,EAAA,MAAM,OAAA,GAAU,CAAI,EAAA,EAAY,EAAA,EAAY,OAC1C,EAAA,GAAK,EAAA,GACD,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,MAAM,YAAA,EAAc,IAAA,EAAM,sCAAsC,CAAA,EAAE,GACtF,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,EAAA,EAAG,EAAE;AAE9B,EAAA,MAAM,KAAA,GAAQ,CACZ,IAAA,EACA,KAAA,KAEA,OAAO,CAAC,KAAA,EAAO,KAAK,CAAA,EAAG,MAAM;AAC3B,IAAA,MAAM,GAAA,GAAM,MAAM,KAAK,CAAA;AACvB,IAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,IAAA,MAAM,GAAA,GAAM,MAAM,KAAK,CAAA;AACvB,IAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,OAAO,GAAA;AACpB,IAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,KAAA,EAAO,GAAA,CAAI,OAAO,OAAO,EAAE,IAAA,EAAM,GAAA,EAAK,GAAA,CAAI,KAAA,EAAO,GAAA,EAAK,GAAA,CAAI,OAAM,CAAE,CAAA;AAAA,EACvF,CAAC,CAAA;AAEH,EAAA,QAAQ,GAAA;AAAK,IACX,KAAK,UAAA;AACH,MAAA,OAAO,KAAA,CAAM,YAAY,QAAQ,CAAA;AAAA,IACnC,KAAK,YAAA;AACH,MAAA,OAAO,KAAA,CAAM,cAAc,QAAQ,CAAA;AAAA,IACrC,KAAK,WAAA;AACH,MAAA,OAAO,KAAA,CAAM,aAAa,QAAQ,CAAA;AAAA,IACpC,KAAK,MAAA;AACH,MAAA,OAAO,MAAA,CAAO,CAAC,QAAQ,CAAA,EAAG,MAAM;AAC9B,QAAA,MAAM,CAAA,GAAI,EAAA,CAAG,MAAA,CAAO,GAAA,CAAI,QAAQ,CAAA;AAChC,QAAA,IAAI,CAAA,KAAM,MAAA;AACR,UAAA,OAAO;AAAA,YACL,EAAA,EAAI,KAAA;AAAA,YACJ,OAAO,KAAA,CAAM,eAAA,EAAiB,CAAA,EAAG,IAAI,WAAW,iCAAiC;AAAA,WACnF;AACF,QAAA,IAAI,CAAA,CAAE,IAAA,KAAS,QAAA,IAAY,CAAA,CAAE,KAAA,CAAM,KAAK,CAAC,EAAA,KAAO,EAAA,CAAG,IAAA,KAAS,SAAS,CAAA;AACnE,UAAA,OAAO;AAAA,YACL,EAAA,EAAI,KAAA;AAAA,YACJ,OAAO,KAAA,CAAM,YAAA,EAAc,CAAA,EAAG,IAAI,WAAW,sCAAsC;AAAA,WACrF;AACF,QAAA,IAAI,CAAA,CAAE,MAAM,MAAA,KAAW,CAAA;AACrB,UAAA,OAAO;AAAA,YACL,EAAA,EAAI,KAAA;AAAA,YACJ,OAAO,KAAA,CAAM,YAAA,EAAc,CAAA,EAAG,IAAI,WAAW,oCAAoC;AAAA,WACnF;AACF,QAAA,OAAO;AAAA,UACL,EAAA,EAAI,IAAA;AAAA,UACJ,KAAA,EAAO;AAAA,YACL,IAAA,EAAM,MAAA;AAAA,YACN,QAAQ,CAAA,CAAE,KAAA,CAAM,IAAI,CAAC,EAAA,KAAQ,GAA0C,KAAK;AAAA;AAC9E,SACF;AAAA,MACF,CAAC,CAAA;AAAA,IACH,KAAK,WAAA;AACH,MAAA,OAAO,MAAA,CAAO,EAAC,EAAG,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,EAAE,IAAA,EAAM,WAAA,EAAY,EAAE,CAAE,CAAA;AAAA,IACtE;AACE,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,KAAA;AAAA,QACJ,KAAA,EAAO,KAAA;AAAA,UACL,iBAAA;AAAA,UACA,GAAG,IAAI,CAAA,MAAA,CAAA;AAAA,UACP,sCAAsC,GAAG,CAAA,CAAA;AAAA;AAC3C,OACF;AAAA;AAEN,CAAA;AAIA,IAAM,eAAA,GAAkB,CAAC,MAAA,KACvB,IAAA,CAAK,CAAC,GAAG,MAAA,CAAO,OAAA,EAAS,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM,CAAC,CAAA,EAAG,OAAO,CAAA,KAAM,QAAA,GAAW,IAAA,CAAK,CAAC,CAAA,GAAI,IAAA,CAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAE5F,IAAM,kBAAA,GAAqB,CAAC,QAAA,EAAkB,EAAA,KAAkD;AAC9F,EAAA,IAAI,GAAG,IAAA,KAAS,SAAA;AACd,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,KAAA,EAAO,MAAM,YAAA,EAAc,QAAA,EAAU,8BAA8B,CAAA,EAAE;AAC3F,EAAA,MAAM,GAAA,uBAAU,GAAA,EAAyB;AACzC,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,CAAC,CAAA,IAAK,GAAG,MAAA,EAAQ;AAC9B,IAAA,IAAI,EAAE,IAAA,KAAS,SAAA,MAAe,GAAA,CAAI,CAAA,EAAG,EAAE,KAAK,CAAA;AAAA,SAAA,IACnC,EAAE,IAAA,KAAS,SAAA,MAAe,GAAA,CAAI,CAAA,EAAG,EAAE,KAAK,CAAA;AAAA;AAE/C,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,KAAA;AAAA,QACJ,KAAA,EAAO,KAAA;AAAA,UACL,YAAA;AAAA,UACA,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA;AAAA,UAChB;AAAA;AACF,OACF;AAAA,EACJ;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,GAAA,EAAI;AAChC,CAAA;AAUO,IAAM,gBAAA,GAAmB,CAC9B,QAAA,EACA,QAAA,EACA,MAAA,KACwC;AACxC,EAAA,MAAM,QAAA,GAAW,IAAI,GAAA,CAAI,QAAA,CAAS,MAAA,CAAO,IAAI,CAAC,CAAA,KAAM,CAAA,CAAE,IAAI,CAAC,CAAA;AAC3D,EAAA,MAAM,QAAQ,CAAC,GAAG,MAAA,CAAO,IAAA,EAAM,CAAA,CAAE,IAAA,EAAK,CAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAC,QAAA,CAAS,GAAA,CAAI,CAAC,CAAC,CAAA;AACpE,EAAA,IAAI,KAAA,KAAU,MAAA;AACZ,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,KAAA;AAAA,QACL,yBAAA;AAAA,QACA,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA;AAAA,QACpB,IAAI,KAAK,CAAA,gCAAA;AAAA;AACX,KACF;AAEF,EAAA,KAAA,MAAWd,MAAAA,IAAS,SAAS,MAAA,EAAQ;AACnC,IAAA,MAAM,IAAA,GAAO,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAIA,OAAM,IAAI,CAAA,CAAA;AACtC,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,GAAA,CAAIA,MAAAA,CAAM,IAAI,CAAA;AACnC,IAAA,IAAI,UAAU,MAAA,EAAW;AACvB,MAAA,IAAIA,MAAAA,CAAM,QAAA;AACR,QAAA,OAAO;AAAA,UACL,EAAA,EAAI,KAAA;AAAA,UACJ,KAAA,EAAO,KAAA;AAAA,YACL,sBAAA;AAAA,YACA,IAAA;AAAA,YACA,CAAA,uBAAA,EAA0BA,OAAM,IAAI,CAAA,YAAA;AAAA;AACtC,SACF;AACF,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,QAAA,GAAW,CAAC,QAAA,MAA2D;AAAA,MAC3E,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,KAAA;AAAA,QACL,sBAAA;AAAA,QACA,IAAA;AAAA,QACA,CAAA,CAAA,EAAIA,MAAAA,CAAM,IAAI,CAAA,UAAA,EAAa,QAAQ,CAAA,uBAAA;AAAA;AACrC,KACF,CAAA;AACA,IAAA,MAAM,UAAA,GAAa,CAAC,MAAA,MAAyD;AAAA,MAC3E,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,KAAA;AAAA,QACL,qBAAA;AAAA,QACA,IAAA;AAAA,QACA,CAAA,CAAA,EAAIA,MAAAA,CAAM,IAAI,CAAA,iCAAA,EAAoC,MAAM,CAAA;AAAA;AAC1D,KACF,CAAA;AAEA,IAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAChB,IAAA,QAAQ,EAAE,IAAA;AAAM,MACd,KAAK,UAAA,EAAY;AACf,QAAA,IAAI,OAAO,UAAU,QAAA,IAAY,CAAC,QAAQ,KAAK,CAAA,EAAG,OAAO,QAAA,CAAS,YAAY,CAAA;AAC9E,QAAA,IAAI,KAAA,GAAQ,CAAA,CAAE,GAAA,IAAO,KAAA,GAAQ,CAAA,CAAE,GAAA;AAC7B,UAAA,OAAO,UAAA,CAAW,GAAG,KAAK,CAAA,YAAA,EAAe,EAAE,GAAG,CAAA,EAAA,EAAK,CAAA,CAAE,GAAG,CAAA,CAAA,CAAG,CAAA;AAC7D,QAAA;AAAA,MACF;AAAA,MACA,KAAK,YAAA,EAAc;AACjB,QAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,SAAS,UAAU,CAAA;AACzD,QAAA,IAAI,KAAA,GAAQ,CAAA,CAAE,GAAA,IAAO,KAAA,GAAQ,CAAA,CAAE,GAAA;AAC7B,UAAA,OAAO,UAAA,CAAW,GAAG,KAAK,CAAA,YAAA,EAAe,EAAE,GAAG,CAAA,EAAA,EAAK,CAAA,CAAE,GAAG,CAAA,CAAA,CAAG,CAAA;AAC7D,QAAA;AAAA,MACF;AAAA,MACA,KAAK,WAAA,EAAa;AAChB,QAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,SAAS,UAAU,CAAA;AACzD,QAAA,IAAI,MAAM,MAAA,GAAS,CAAA,CAAE,GAAA,IAAO,KAAA,CAAM,SAAS,CAAA,CAAE,GAAA;AAC3C,UAAA,OAAO,WAAW,wCAAwC,CAAA;AAC5D,QAAA;AAAA,MACF;AAAA,MACA,KAAK,MAAA,EAAQ;AACX,QAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,SAAS,UAAU,CAAA;AACzD,QAAA,IAAI,CAAC,EAAE,MAAA,CAAO,QAAA,CAAS,KAAK,CAAA,EAAG,OAAO,WAAW,wCAAwC,CAAA;AACzF,QAAA;AAAA,MACF;AAAA,MACA,KAAK,WAAA,EAAa;AAChB,QAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,SAAS,UAAU,CAAA;AACzD,QAAA;AAAA,MACF;AAAA;AACF,EACF;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,MAAA,EAAU;AACtC;AAMO,IAAM,iBAAiB,CAC5B,QAAA,EACA,WACwC,gBAAA,CAAiB,UAAA,EAAY,UAAU,MAAM;AAIvF,IAAM,WAAA,GAAc,CAAC,CAAA,KACnB,IAAA,CAAK;AAAA,EACH,CAAC,MAAA,EAAQ,IAAA,CAAK,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,EACrB,CAAC,QAAA,EAAU,IAAA,CAAK,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,EACzB,CAAC,YAAY,EAAE,IAAA,EAAM,SAAS,KAAA,EAAO,CAAA,CAAE,UAAU,CAAA;AAAA,EACjD,CAAC,OAAA,EAAS,WAAA,CAAY,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,EAC9B,CAAC,UAAA,EAAY,IAAA,CAAK,CAAA,CAAE,QAAQ,CAAC;AAC/B,CAAC,CAAA;AAEH,IAAM,iBAAiB,CAAC,CAAA,KACtB,KAAK,CAAC,CAAC,UAAU,EAAE,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,EAAE,MAAA,CAAO,GAAA,CAAI,WAAW,CAAA,EAAG,CAAC,CAAC,CAAA;AAEzE,IAAM,cAAA,GAAiB,CACrB,QAAA,EACA,UAAA,EACA,EAAA,KAC6C;AAC7C,EAAA,IAAI,GAAG,IAAA,KAAS,SAAA;AACd,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,KAAA,EAAO,MAAM,YAAA,EAAc,QAAA,EAAU,gCAAgC,CAAA,EAAE;AAC7F,EAAA,MAAM,QAAQ,eAAA,CAAgB,CAAC,QAAQ,CAAA,EAAG,GAAG,MAAM,CAAA;AACnD,EAAA,IAAI,KAAA,KAAU,MAAA;AACZ,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,KAAA;AAAA,QACL,kBAAA;AAAA,QACA,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA;AAAA,QACpB,mBAAmB,KAAK,CAAA,iBAAA;AAAA;AAC1B,KACF;AACF,EAAA,MAAM,OAAA,GAAU,EAAA,CAAG,MAAA,CAAO,GAAA,CAAI,QAAQ,CAAA;AACtC,EAAA,IAAI,OAAA,KAAY,MAAA;AACd,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,OAAO,KAAA,CAAM,eAAA,EAAiB,CAAA,EAAG,QAAQ,WAAW,iCAAiC;AAAA,KACvF;AACF,EAAA,IAAI,QAAQ,IAAA,KAAS,QAAA;AACnB,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,OAAO,KAAA,CAAM,YAAA,EAAc,CAAA,EAAG,QAAQ,WAAW,2BAA2B;AAAA,KAC9E;AACF,EAAA,IAAI,OAAA,CAAQ,MAAM,MAAA,KAAW,CAAA;AAC3B,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,KAAA;AAAA,QACL,gBAAA;AAAA,QACA,GAAG,QAAQ,CAAA,OAAA,CAAA;AAAA,QACX;AAAA;AACF,KACF;AAEF,EAAA,MAAM,MAAqB,EAAC;AAC5B,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AAC7C,IAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,KAAA,CAAM,CAAC,CAAA;AAC5B,IAAA,MAAM,IAAA,GAAO,CAAA,EAAG,QAAQ,CAAA,QAAA,EAAW,CAAC,CAAA,CAAA,CAAA;AACpC,IAAA,IAAI,KAAK,IAAA,KAAS,SAAA;AAChB,MAAA,OAAO,EAAE,IAAI,KAAA,EAAO,KAAA,EAAO,MAAM,YAAA,EAAc,IAAA,EAAM,oCAAoC,CAAA,EAAE;AAC7F,IAAA,MAAM,MAAA,GAAS,eAAA;AAAA,MACb,CAAC,MAAA,EAAQ,QAAA,EAAU,UAAA,EAAY,SAAS,UAAU,CAAA;AAAA,MAClD,IAAA,CAAK;AAAA,KACP;AACA,IAAA,IAAI,MAAA,KAAW,MAAA;AACb,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,KAAA;AAAA,QACJ,KAAA,EAAO,KAAA;AAAA,UACL,kBAAA;AAAA,UACA,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA;AAAA,UACjB,mBAAmB,MAAM,CAAA,oBAAA;AAAA;AAC3B,OACF;AACF,IAAA,MAAM,OAAO,kBAAA,CAAmB,CAAA,EAAG,IAAI,CAAA,KAAA,CAAA,EAAS,MAAA,EAAQ,KAAK,MAAM,CAAA;AACnE,IAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA;AACrB,IAAA,MAAM,SAAS,kBAAA,CAAmB,CAAA,EAAG,IAAI,CAAA,OAAA,CAAA,EAAW,QAAA,EAAU,KAAK,MAAM,CAAA;AACzE,IAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,IAAA,IAAI,CAAC,UAAA,CAAW,MAAA,CAAO,KAAK,CAAA;AAC1B,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,KAAA;AAAA,QACJ,KAAA,EAAO,KAAA;AAAA,UACL,uBAAA;AAAA,UACA,GAAG,IAAI,CAAA,OAAA,CAAA;AAAA,UACP,CAAA,CAAA,EAAI,OAAO,KAAK,CAAA,uCAAA;AAAA;AAClB,OACF;AACF,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,UAAU,CAAA;AAC5C,IAAA,IAAI,SAAA,KAAc,MAAA;AAChB,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,KAAA;AAAA,QACJ,OAAO,KAAA,CAAM,eAAA,EAAiB,CAAA,EAAG,IAAI,aAAa,mCAAmC;AAAA,OACvF;AACF,IAAA,IAAI,UAAU,IAAA,KAAS,OAAA;AACrB,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,KAAA;AAAA,QACJ,OAAO,KAAA,CAAM,YAAA,EAAc,CAAA,EAAG,IAAI,aAAa,8BAA8B;AAAA,OAC/E;AACF,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,OAAO,CAAA;AACtC,IAAA,IAAI,MAAA,KAAW,MAAA;AACb,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,KAAA;AAAA,QACJ,OAAO,KAAA,CAAM,eAAA,EAAiB,CAAA,EAAG,IAAI,UAAU,gCAAgC;AAAA,OACjF;AACF,IAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,CAAA,EAAG,IAAI,UAAU,MAAM,CAAA;AACjD,IAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AACtB,IAAA,MAAM,WAAW,kBAAA,CAAmB,CAAA,EAAG,IAAI,CAAA,SAAA,CAAA,EAAa,UAAA,EAAY,KAAK,MAAM,CAAA;AAC/E,IAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,IAAA,IAAI,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,KAAK,CAAA;AACrB,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,KAAA;AAAA,QACJ,KAAA,EAAO,KAAA;AAAA,UACL,0BAAA;AAAA,UACA,GAAG,IAAI,CAAA,KAAA,CAAA;AAAA,UACP,CAAA,6BAAA,EAAgC,KAAK,KAAK,CAAA,CAAA;AAAA;AAC5C,OACF;AACF,IAAA,IAAA,CAAK,GAAA,CAAI,KAAK,KAAK,CAAA;AACnB,IAAA,GAAA,CAAI,IAAA,CAAK;AAAA,MACP,MAAM,IAAA,CAAK,KAAA;AAAA,MACX,QAAQ,MAAA,CAAO,KAAA;AAAA,MACf,UAAU,QAAA,CAAS,KAAA;AAAA,MACnB,OAAO,KAAA,CAAM,KAAA;AAAA,MACb,UAAU,SAAA,CAAU;AAAA,KACrB,CAAA;AAAA,EACH;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,OAAO,EAAE,MAAA,EAAQ,KAAI,EAAE;AAC5C,CAAA;AAQO,IAAM,iBAAA,GAAoB,CAAC,GAAA,KAA+D;AAC/F,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,UAAA,CAAW,GAAA,CAAI,IAAI,CAAC,CAAA;AAC1C,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA;AACX,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,KAAA;AAAA,QACL,YAAA;AAAA,QACA,QAAA;AAAA,QACA,CAAA,gCAAA,EAAmC,OAAA,CAAQ,KAAA,CAAM,OAAO,CAAA;AAAA;AAC1D,KACF;AACF,EAAA,MAAM,OAAA,GAA0C;AAAA,IAC9C,CAAC,eAAA,EAAiB,IAAA,CAAK,mBAAmB,CAAC,CAAA;AAAA,IAC3C,CAAC,UAAA,EAAY,cAAA,CAAe,GAAA,CAAI,QAAQ,CAAC;AAAA,GAC3C;AACA,EAAA,IAAI,IAAI,aAAA,KAAkB,MAAA;AACxB,IAAA,OAAA,CAAQ,KAAK,CAAC,SAAA,EAAW,gBAAgB,GAAA,CAAI,aAAa,CAAC,CAAC,CAAA;AAC9D,EAAA,OAAA,CAAQ,KAAK,CAAC,IAAA,EAAM,KAAK,GAAA,CAAI,EAAE,CAAC,CAAC,CAAA;AACjC,EAAA,IAAI,GAAA,CAAI,SAAA,KAAc,MAAA,EAAW,OAAA,CAAQ,IAAA,CAAK,CAAC,WAAA,EAAa,IAAA,CAAK,GAAA,CAAI,SAAS,CAAC,CAAC,CAAA;AAChF,EAAA,OAAA,CAAQ,IAAA,CAAK,CAAC,MAAA,EAAQ,OAAA,CAAQ,KAAK,CAAC,CAAA;AACpC,EAAA,OAAO,EAAE,IAAI,IAAA,EAAM,KAAA,EAAO,mBAAmB,IAAA,CAAK,OAAO,CAAC,CAAA,EAAE;AAC9D;AAQO,IAAM,iBAAA,GAAoB,CAAC,IAAA,KAAgE;AAChG,EAAA,MAAM,MAAA,GAAS,MAAM,IAAI,CAAA;AACzB,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA;AACV,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,MAAM,cAAA,EAAgB,GAAA,EAAK,4BAA4B,MAAA,CAAO,KAAA,CAAM,OAAO,CAAA,CAAE;AAAA,KACtF;AACF,EAAA,MAAM,OAAO,MAAA,CAAO,KAAA;AACpB,EAAA,IAAI,KAAK,IAAA,KAAS,SAAA;AAChB,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,KAAA,CAAM,YAAA,EAAc,GAAA,EAAK,4CAA4C;AAAA,KAC9E;AAEF,EAAA,MAAM,KAAA,GAAQ,eAAA;AAAA,IACZ,CAAC,eAAA,EAAiB,UAAA,EAAY,SAAA,EAAW,IAAA,EAAM,aAAa,MAAM,CAAA;AAAA,IAClE,IAAA,CAAK;AAAA,GACP;AACA,EAAA,IAAI,KAAA,KAAU,MAAA;AACZ,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,KAAA;AAAA,QACL,kBAAA;AAAA,QACA,KAAK,KAAK,CAAA,CAAA;AAAA,QACV,mBAAmB,KAAK,CAAA,6BAAA;AAAA;AAC1B,KACF;AAEF,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,eAAe,CAAA;AAChD,EAAA,IAAI,QAAA,KAAa,MAAA;AACf,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,KAAA;AAAA,QACL,eAAA;AAAA,QACA,KAAK,eAAe,CAAA,CAAA;AAAA,QACpB,2BAA2B,eAAe,CAAA,CAAA;AAAA;AAC5C,KACF;AACF,EAAA,IAAI,SAAS,IAAA,KAAS,SAAA;AACpB,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,MAAM,YAAA,EAAc,CAAA,EAAA,EAAK,eAAe,CAAA,CAAA,EAAI,CAAA,CAAA,EAAI,eAAe,CAAA,kBAAA,CAAoB;AAAA,KAC5F;AACF,EAAA,IAAI,SAAS,KAAA,KAAU,mBAAA;AACrB,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,KAAA;AAAA,QACL,qBAAA;AAAA,QACA,KAAK,eAAe,CAAA,CAAA;AAAA,QACpB,CAAA,wCAAA,EAA2C,QAAA,CAAS,KAAK,CAAA,uBAAA,EAA0B,mBAAmB,CAAA,EAAA;AAAA;AACxG,KACF;AAEF,EAAA,MAAM,EAAA,GAAK,kBAAA,CAAmB,MAAA,EAAQ,IAAA,EAAM,KAAK,MAAM,CAAA;AACvD,EAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AAEnB,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,MAAM,CAAA;AACpC,EAAA,IAAI,KAAA,KAAU,MAAA;AACZ,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,KAAA,EAAO,MAAM,eAAA,EAAiB,QAAA,EAAU,+BAA+B,CAAA,EAAE;AAC/F,EAAA,MAAM,IAAA,GAAO,UAAA,CAAW,kBAAA,CAAmB,KAAK,CAAC,CAAA;AACjD,EAAA,IAAI,CAAC,IAAA,CAAK,EAAA,EAAI,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,MAAA,CAAO,QAAA,EAAU,IAAA,CAAK,KAAK,CAAA,EAAE;AAEtE,EAAA,MAAM,MAAM,IAAI,GAAA,CAAI,UAAA,CAAW,IAAA,CAAK,KAAK,CAAC,CAAA;AAC1C,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,UAAU,CAAA;AAC5C,EAAA,IAAI,SAAA,KAAc,MAAA;AAChB,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,KAAA,CAAM,eAAA,EAAiB,YAAA,EAAc,mCAAmC;AAAA,KACjF;AACF,EAAA,MAAM,QAAA,GAAW,eAAe,YAAA,EAAc,CAAC,WAAW,GAAA,CAAI,GAAA,CAAI,MAAM,CAAA,EAAG,SAAS,CAAA;AACpF,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AAEzB,EAAA,IAAI,SAAA;AACJ,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,WAAW,CAAA;AAC5C,EAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,IAAA,IAAI,QAAA,CAAS,IAAA,KAAS,SAAA,IAAa,CAAC,MAAA,CAAO,UAAU,QAAA,CAAS,KAAK,CAAA,IAAK,QAAA,CAAS,KAAA,GAAQ,CAAA;AACvF,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,KAAA;AAAA,QACJ,KAAA,EAAO,KAAA,CAAM,YAAA,EAAc,aAAA,EAAe,qCAAqC;AAAA,OACjF;AACF,IAAA,SAAA,GAAY,QAAA,CAAS,KAAA;AAAA,EACvB;AAEA,EAAA,IAAI,aAAA;AACJ,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,SAAS,CAAA;AAC1C,EAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,IAAA,MAAM,MAAA,GAAS,kBAAA,CAAmB,WAAA,EAAa,QAAQ,CAAA;AACvD,IAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,IAAA,MAAM,UAAU,gBAAA,CAAiB,WAAA,EAAa,QAAA,CAAS,KAAA,EAAO,OAAO,KAAK,CAAA;AAC1E,IAAA,IAAI,CAAC,OAAA,CAAQ,EAAA;AACX,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,KAAA;AAAA,QACJ,KAAA,EAAO,KAAA;AAAA,UACL,uBAAA;AAAA,UACA,QAAQ,KAAA,CAAM,IAAA;AAAA,UACd,qCAAqC,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA,GAAA,EAAM,OAAA,CAAQ,MAAM,OAAO,CAAA;AAAA;AACpF,OACF;AACF,IAAA,aAAA,GAAgB,MAAA,CAAO,KAAA;AAAA,EACzB;AAEA,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,IAAA;AAAA,IACJ,KAAA,EAAO;AAAA,MACL,IAAI,EAAA,CAAG,KAAA;AAAA,MACP,MAAM,IAAA,CAAK,KAAA;AAAA,MACX,UAAU,QAAA,CAAS,KAAA;AAAA,MACnB,GAAI,SAAA,KAAc,MAAA,GAAY,EAAE,SAAA,KAAc,EAAC;AAAA,MAC/C,GAAI,aAAA,KAAkB,MAAA,GAAY,EAAE,aAAA,KAAkB;AAAC;AACzD,GACF;AACF;AAKO,IAAM,wBAAA,GAA2B,CAAC,GAAA,KAA4C;AACnF,EAAA,MAAM,IAAI,GAAA,CAAI,OAAA;AACd,EAAA,MAAM,OAAA,GAA0C,CAAC,CAAC,OAAA,EAAS,KAAK,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AACxE,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,UAAA,EAAY,OAAA,CAAQ,IAAA,CAAK,CAAC,QAAA,EAAU,eAAA,CAAgB,CAAA,CAAE,MAAM,CAAC,CAAC,CAAA;AAC7E,EAAA,IAAI,CAAA,CAAE,IAAA,KAAS,YAAA,IAAgB,CAAA,CAAE,OAAO,MAAA,EAAW,OAAA,CAAQ,IAAA,CAAK,CAAC,IAAA,EAAM,IAAA,CAAK,CAAA,CAAE,EAAE,CAAC,CAAC,CAAA;AAClF,EAAA,OAAA,CAAQ,KAAK,CAAC,eAAA,EAAiB,KAAK,GAAA,CAAI,aAAa,CAAC,CAAC,CAAA;AACvD,EAAA,OAAO,kBAAA,CAAmB,IAAA,CAAK,OAAO,CAAC,CAAA;AACzC;AAQO,IAAM,wBAAA,GAA2B,CACtC,IAAA,KACyD;AACzD,EAAA,MAAM,MAAA,GAAS,MAAM,IAAI,CAAA;AACzB,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA;AACV,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,MAAM,cAAA,EAAgB,GAAA,EAAK,4BAA4B,MAAA,CAAO,KAAA,CAAM,OAAO,CAAA,CAAE;AAAA,KACtF;AACF,EAAA,MAAM,OAAO,MAAA,CAAO,KAAA;AACpB,EAAA,IAAI,KAAK,IAAA,KAAS,SAAA;AAChB,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,KAAA,EAAO,MAAM,YAAA,EAAc,GAAA,EAAK,+BAA+B,CAAA,EAAE;AAEvF,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,OAAO,CAAA;AACpC,EAAA,IAAI,IAAA,KAAS,MAAA;AACX,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,KAAA,CAAM,eAAA,EAAiB,SAAA,EAAW,4CAA4C;AAAA,KACvF;AACF,EAAA,IAAI,KAAK,IAAA,KAAS,SAAA;AAChB,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,KAAA,EAAO,MAAM,YAAA,EAAc,SAAA,EAAW,0BAA0B,CAAA,EAAE;AACxF,EAAA,MAAM,MAAM,IAAA,CAAK,KAAA;AAEjB,EAAA,MAAM,MAAA,GAAS,CAAC,OAAA,KAA6D;AAC3E,IAAA,MAAM,KAAA,GAAQ,gBAAgB,CAAC,OAAA,EAAS,iBAAiB,GAAG,OAAO,CAAA,EAAG,IAAA,CAAK,MAAM,CAAA;AACjF,IAAA,OAAO,KAAA,KAAU,MAAA,GACb,MAAA,GACA,KAAA,CAAM,kBAAA,EAAoB,CAAA,EAAA,EAAK,KAAK,CAAA,CAAA,EAAI,CAAA,gBAAA,EAAmB,KAAK,CAAA,QAAA,EAAW,GAAG,CAAA,SAAA,CAAW,CAAA;AAAA,EAC/F,CAAA;AAEA,EAAA,MAAM,MAAA,GAAS,CACb,OAAA,EACA,EAAA,KACyD;AACzD,IAAA,MAAM,QAAA,GAAW,OAAO,OAAO,CAAA;AAC/B,IAAA,IAAI,aAAa,MAAA,EAAW,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,OAAO,QAAA,EAAS;AAChE,IAAA,MAAM,EAAA,GAAK,kBAAA,CAAmB,iBAAA,EAAmB,eAAA,EAAiB,KAAK,MAAM,CAAA;AAC7E,IAAA,IAAI,CAAC,EAAA,CAAG,EAAA,EAAI,OAAO,EAAA;AACnB,IAAA,OAAO,EAAA,CAAG,GAAG,KAAK,CAAA;AAAA,EACpB,CAAA;AAEA,EAAA,QAAQ,GAAA;AAAK,IACX,KAAK,UAAA;AACH,MAAA,OAAO,MAAA,CAAO,CAAC,QAAQ,CAAA,EAAG,CAAC,EAAA,KAAO;AAChC,QAAA,MAAM,OAAA,GAAU,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,QAAQ,CAAA;AACxC,QAAA,IAAI,OAAA,KAAY,MAAA;AACd,UAAA,OAAO;AAAA,YACL,EAAA,EAAI,KAAA;AAAA,YACJ,KAAA,EAAO,KAAA,CAAM,eAAA,EAAiB,UAAA,EAAY,iCAAiC;AAAA,WAC7E;AACF,QAAA,MAAM,MAAA,GAAS,kBAAA,CAAmB,UAAA,EAAY,OAAO,CAAA;AACrD,QAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,QAAA,OAAO;AAAA,UACL,EAAA,EAAI,IAAA;AAAA,UACJ,KAAA,EAAO,EAAE,aAAA,EAAe,EAAA,EAAI,OAAA,EAAS,EAAE,IAAA,EAAM,UAAA,EAAY,MAAA,EAAQ,MAAA,CAAO,KAAA,EAAM;AAAE,SAClF;AAAA,MACF,CAAC,CAAA;AAAA,IACH,KAAK,UAAA;AACH,MAAA,OAAO,MAAA,CAAO,EAAC,EAAG,CAAC,EAAA,MAAQ;AAAA,QACzB,EAAA,EAAI,IAAA;AAAA,QACJ,KAAA,EAAO,EAAE,aAAA,EAAe,EAAA,EAAI,SAAS,EAAE,IAAA,EAAM,YAAW;AAAE,OAC5D,CAAE,CAAA;AAAA,IACJ,KAAK,UAAA;AACH,MAAA,OAAO,MAAA,CAAO,EAAC,EAAG,CAAC,EAAA,MAAQ;AAAA,QACzB,EAAA,EAAI,IAAA;AAAA,QACJ,KAAA,EAAO,EAAE,aAAA,EAAe,EAAA,EAAI,SAAS,EAAE,IAAA,EAAM,YAAW;AAAE,OAC5D,CAAE,CAAA;AAAA,IACJ,KAAK,YAAA;AACH,MAAA,OAAO,MAAA,CAAO,CAAC,IAAI,CAAA,EAAG,CAAC,EAAA,KAAO;AAC5B,QAAA,MAAM,GAAA,GAAM,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,IAAI,CAAA;AAChC,QAAA,IAAI,GAAA,KAAQ,MAAA;AACV,UAAA,OAAO;AAAA,YACL,EAAA,EAAI,IAAA;AAAA,YACJ,KAAA,EAAO,EAAE,aAAA,EAAe,EAAA,EAAI,SAAS,EAAE,IAAA,EAAM,cAAa;AAAE,WAC9D;AACF,QAAA,IAAI,GAAA,CAAI,IAAA,KAAS,SAAA,IAAa,GAAA,CAAI,KAAA,KAAU,EAAA;AAC1C,UAAA,OAAO;AAAA,YACL,EAAA,EAAI,KAAA;AAAA,YACJ,KAAA,EAAO,KAAA,CAAM,YAAA,EAAc,MAAA,EAAQ,iCAAiC;AAAA,WACtE;AACF,QAAA,OAAO;AAAA,UACL,EAAA,EAAI,IAAA;AAAA,UACJ,KAAA,EAAO,EAAE,aAAA,EAAe,EAAA,EAAI,OAAA,EAAS,EAAE,IAAA,EAAM,YAAA,EAAc,EAAA,EAAI,GAAA,CAAI,KAAA,EAAM;AAAE,SAC7E;AAAA,MACF,CAAC,CAAA;AAAA,IACH;AACE,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,KAAA;AAAA,QACJ,OAAO,KAAA,CAAM,iBAAA,EAAmB,SAAA,EAAW,CAAA,+BAAA,EAAkC,GAAG,CAAA,CAAA,CAAG;AAAA,OACrF;AAAA;AAEN;AAUO,IAAM,sBAAA,GAAyB,CAAC,IAAA,KAAsD;AAC3F,EAAA,MAAM,MAAA,GAAS,MAAM,IAAI,CAAA;AACzB,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA;AACV,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,MAAM,cAAA,EAAgB,GAAA,EAAK,4BAA4B,MAAA,CAAO,KAAA,CAAM,OAAO,CAAA,CAAE;AAAA,KACtF;AACF,EAAA,MAAM,OAAO,MAAA,CAAO,KAAA;AACpB,EAAA,IAAI,KAAK,IAAA,KAAS,SAAA;AAChB,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,KAAA,CAAM,YAAA,EAAc,GAAA,EAAK,mDAAmD;AAAA,KACrF;AACF,EAAA,MAAM,QAAQ,eAAA,CAAgB,CAAC,UAAU,UAAU,CAAA,EAAG,KAAK,MAAM,CAAA;AACjE,EAAA,IAAI,KAAA,KAAU,MAAA;AACZ,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,KAAA;AAAA,QACL,kBAAA;AAAA,QACA,KAAK,KAAK,CAAA,CAAA;AAAA,QACV,mBAAmB,KAAK,CAAA,mCAAA;AAAA;AAC1B,KACF;AACF,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,UAAU,CAAA;AAC5C,EAAA,IAAI,SAAA,KAAc,MAAA;AAChB,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,KAAA,CAAM,eAAA,EAAiB,YAAA,EAAc,mCAAmC;AAAA,KACjF;AACF,EAAA,MAAM,QAAA,GAAW,cAAA,CAAe,YAAA,EAAc,MAAM,MAAM,SAAS,CAAA;AACnE,EAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,QAAA;AACzB,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,QAAQ,CAAA;AACxC,EAAA,IAAI,OAAA,KAAY,MAAA;AACd,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,KAAA,CAAM,eAAA,EAAiB,UAAA,EAAY,iCAAiC;AAAA,KAC7E;AACF,EAAA,MAAM,MAAA,GAAS,kBAAA,CAAmB,UAAA,EAAY,OAAO,CAAA;AACrD,EAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,EAAA,OAAO,gBAAA,CAAiB,UAAA,EAAY,QAAA,CAAS,KAAA,EAAO,OAAO,KAAK,CAAA;AAClE","file":"index.cjs","sourcesContent":["// ============================================================================\n// @fuaran-ui/ops — canonical-JSON encoder.\n//\n// Symmetric port of Fuaran.UI.OpStream.Abstractions.CanonicalJson\n// (encodeNode / encodeOp). Produces the deterministic, byte-stable wire form\n// pinned by fuaran-dotnet/docs/WIRE_FORMAT.md §2:\n//\n// - object keys sorted by Ordinal (UTF-16 code-unit) comparison;\n// - `None` / `undefined` option fields omitted entirely (never `\"k\":null`);\n// - DU cases as `{\"$type\":\"<CaseName>\", …}` objects;\n// - bare-string enums (Orientation / ToneVariant / …) as plain strings;\n// - NaN / ±∞ as the quoted sentinels \"NaN\" / \"Infinity\" / \"-Infinity\";\n// - closures / unobservable runtime payloads as \"<closure>\";\n// - un-introspectable `Binding.Static` payloads as \"<opaque>\";\n// - Node.motion / Node.extraAttributes wire-omitted (WIRE_FORMAT.md §9).\n//\n// Verified byte-for-byte against the workspace wire-format-fixtures corpus by\n// test/corpus.test.ts. This is the load-bearing \"no silent drift\" surface:\n// the encoder must reproduce the F# encoder's exact bytes for every fixture.\n// ============================================================================\n\nimport { controlValueDefaults } from '@fuaran-ui/schema';\nimport type {\n Accessibility,\n Action,\n Agg,\n BadgeSpec,\n Cell,\n ColExpr,\n ColPair,\n ColumnType,\n DataColumn,\n DataSource,\n InvokeArg,\n SortKey,\n Transform,\n LinkSpec,\n Binding,\n BoxLayout,\n BoxSpec,\n ButtonSpec,\n CalloutSpec,\n CellFormat,\n CellKindErased,\n ChartSpec,\n ColumnErased,\n ColumnWidth,\n DisclosureSpec,\n DisplayKind,\n EffectClass,\n ImageSpec,\n ListSpec,\n ModalSpec,\n ScrollAreaSpec,\n ToastSpec,\n CodeBlockSpec,\n CurveCommand,\n DrawPoint,\n DrawStyle,\n DrawingSpec,\n MathSpec,\n Shape,\n ViewBox,\n MathDisplay,\n FileUploadSpec,\n FilterSpec,\n FragmentArg,\n FragmentScalar,\n Format,\n FormField,\n FormFieldKind,\n FormSpec,\n LocaleSource,\n GridSpec,\n HeadingSpec,\n HoleDecl,\n HoleValueSpace,\n InputKind,\n JsonValue,\n MetricSpec,\n LabelValueRowSpec,\n FactSpec,\n LayoutKind,\n LocalFlushTrigger,\n MapMarker,\n MapSpec,\n MarkdownSpec,\n Node,\n NodeKind,\n ProgressSpec,\n SelectOption,\n SelectSpec,\n SemanticStyle,\n SkeletonSpec,\n SparklineSpec,\n SplitPanelSpec,\n StateBehaviour,\n SummaryListSpec,\n StepperSpec,\n StyleWeight,\n Emphasis,\n ToneVariant,\n TabHeader,\n TableSpec,\n TabsSpec,\n TextSource,\n VisKind,\n} from '@fuaran-ui/schema';\n\nimport type { JsonAst } from './parse.js';\nimport type { TreeOp } from './treeOp.js';\n\n// ─── Primitive emitters ──────────────────────────────────────────────────────\n\nconst assertNever = (x: never): never => {\n throw new Error(`@fuaran-ui/ops encode: unreachable case ${JSON.stringify(x)}`);\n};\n\n/** Quote + escape a string per WIRE_FORMAT.md §2 rule 6 (only \" \\ and control chars). */\nconst str = (s: string): string => {\n let out = '\"';\n for (let i = 0; i < s.length; i += 1) {\n const c = s[i]!;\n const code = s.charCodeAt(i);\n if (c === '\"') {\n out += '\\\\\"';\n } else if (c === '\\\\') {\n out += '\\\\\\\\';\n } else if (code < 0x20) {\n out += '\\\\u' + code.toString(16).padStart(4, '0');\n } else {\n out += c;\n }\n }\n return out + '\"';\n};\n\n/**\n * Render a finite double in .NET `Double.ToString(\"R\", InvariantCulture)`\n * layout — the canonical numeric form mandated by WIRE_FORMAT.md §2 rule 5.\n *\n * Both runtimes compute the SAME shortest round-trip *digits* (.NET \"R\" and\n * JS `Number.prototype.toString()` are both shortest-round-trip since .NET\n * Core 3.0). They diverge only in *layout*: the fixed-vs-scientific threshold\n * and the scientific spelling. .NET uses fixed notation iff the leading-digit\n * decimal exponent `e` is in `[-4, 16]`, else scientific with an uppercase\n * `E`, an always-present sign, and a ≥2-digit zero-padded exponent\n * (`1E+21`, `1E-07`, `1.2345678901234568E+17`). JS's thresholds are wider\n * (scientific only for `e ≥ 21` or `e ≤ -7`) and its scientific form is\n * lowercase with an unpadded exponent (`1e+21`, `1e-7`).\n *\n * This normaliser extracts the shared shortest digits + exponent from JS's\n * own `toString()` and re-lays them out in .NET form, so the TS encoder is\n * byte-identical to the F# encoder across the whole finite-double range — not\n * just the int53 plain-decimal sub-range the two happened to already agree on\n * (Phase 117).\n */\nexport const formatFiniteDouble = (n: number): string => {\n if (n === 0) return '0';\n const neg = n < 0;\n const s = Math.abs(n).toString();\n\n // Decompose into significant `digits` (no point) + `exp`, the base-10\n // exponent of the leading digit (value = d0.d1d2… × 10^exp).\n let digits: string;\n let exp: number;\n const eIdx = s.indexOf('e');\n if (eIdx >= 0) {\n const mant = s.slice(0, eIdx);\n const mantExp = parseInt(s.slice(eIdx + 1), 10);\n const dot = mant.indexOf('.');\n if (dot < 0) {\n digits = mant;\n exp = mantExp + (mant.length - 1);\n } else {\n digits = mant.slice(0, dot) + mant.slice(dot + 1);\n exp = mantExp + (dot - 1);\n }\n } else {\n const dot = s.indexOf('.');\n if (dot < 0) {\n digits = s;\n exp = s.length - 1;\n } else {\n const intPart = s.slice(0, dot);\n const fracPart = s.slice(dot + 1);\n if (intPart === '0') {\n const leadingZeros = fracPart.length - fracPart.replace(/^0+/, '').length;\n digits = fracPart.slice(leadingZeros);\n exp = -(leadingZeros + 1);\n } else {\n digits = intPart + fracPart;\n exp = intPart.length - 1;\n }\n }\n }\n\n // Reduce to shortest significant digits (the leading digit is already\n // significant, so only trailing zeros can be dropped).\n digits = digits.replace(/0+$/, '') || '0';\n\n let out: string;\n if (exp >= -4 && exp <= 16) {\n // Fixed-point layout.\n if (exp >= 0) {\n if (digits.length <= exp + 1) {\n out = digits + '0'.repeat(exp + 1 - digits.length);\n } else {\n out = digits.slice(0, exp + 1) + '.' + digits.slice(exp + 1);\n }\n } else {\n out = '0.' + '0'.repeat(-exp - 1) + digits;\n }\n } else {\n // Scientific layout: uppercase E, signed, ≥2-digit zero-padded exponent.\n const mantissa = digits.length === 1 ? digits : digits[0] + '.' + digits.slice(1);\n const expSign = exp >= 0 ? '+' : '-';\n const expDigits = Math.abs(exp).toString().padStart(2, '0');\n out = mantissa + 'E' + expSign + expDigits;\n }\n\n return neg ? '-' + out : out;\n};\n\n/** Number rule (§2 rule 5): finite via .NET \"R\" layout; specials as quoted sentinels; −0 → 0. */\nexport const num = (n: number): string => {\n if (Number.isNaN(n)) return '\"NaN\"';\n if (n === Infinity) return '\"Infinity\"';\n if (n === -Infinity) return '\"-Infinity\"';\n return formatFiniteDouble(n);\n};\n\nconst bool = (b: boolean): string => (b ? 'true' : 'false');\n\ntype Field = readonly [string, string];\n\n/** Emit an object with Ordinal-sorted keys (§2 rule 2). */\nconst jObject = (fields: readonly Field[]): string => {\n const sorted = [...fields].sort((a, b) => (a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0));\n return '{' + sorted.map(([k, v]) => str(k) + ':' + v).join(',') + '}';\n};\n\nconst jArray = (items: readonly string[]): string => '[' + items.join(',') + ']';\n\n/** A `$type`-discriminated DU object (§2 rule 8). */\nconst caseObj = (discriminator: string, fields: readonly Field[]): string =>\n jObject([['$type', str(discriminator)], ...fields]);\n\n/**\n * Hoist a spec's fields directly under the kind's `$type` discriminator — the\n * flat wire carries no `spec` wrapper (WIRE_FORMAT.md §3.2). `specJson` is the\n * spec's `{…}` object string (keys already Ordinal-sorted); we splice\n * `\"$type\":\"<disc>\"` in front of those fields. Byte-correct because `$` (0x24)\n * sorts before every lowercase spec field name, so `$type` stays the canonical\n * first key and the spliced result remains Ordinal-sorted. Port of the F#\n * `CanonicalJson.hoistSpec` helper.\n */\nconst hoistSpec = (discriminator: string, specJson: string): string => {\n const head = '{' + str('$type') + ':' + str(discriminator);\n // specJson is \"{…}\" (or \"{}\" for a field-less spec); splice its inner fields\n // in after $type when present.\n return specJson.length > 2 ? head + ',' + specJson.slice(1, -1) + '}' : head + '}';\n};\n\nconst CLOSURE = str('<closure>');\nconst OPAQUE = str('<opaque>');\n\n/**\n * Best-effort `obj`-typed encoder — port of F# `appendObj`. Recognised JS\n * primitives encode natively; everything else (arrays, plain objects, …) is\n * the `\"<opaque>\"` sentinel (§5). No reflection. `Date` → Unix seconds (§2\n * rule 11). Since Phase 429 the enumerated slot-typed payloads (options /\n * values / series / markers) bypass this via `binding`'s `staticEnc`\n * parameter; this catch-all is the residual-opaque boundary for genuinely\n * host-typed payloads, whose decoded \"<opaque>\" placeholder re-encodes here\n * as `\"<opaque>\"`, keeping the round-trip byte-stable.\n */\nconst objValue = (v: unknown): string => {\n if (v === null || v === undefined) return 'null';\n if (typeof v === 'string') return str(v);\n if (typeof v === 'boolean') return bool(v);\n if (typeof v === 'number') return num(v);\n if (v instanceof Date) return num(Math.trunc(v.getTime() / 1000));\n return OPAQUE;\n};\n\n/**\n * A structured `JsonValue` payload (Custom props, action payloads, I18n args, a\n * wire-form `UpdateProp` value) — port of F# `encodeJVal`. Renders the value\n * FAITHFULLY at any nesting depth: objects with Ordinal-sorted keys, arrays in\n * order, the pinned number layout — no `\"<opaque>\"` collapse. (The wire model\n * has no null, so a null leaf is unrepresentable; the decoder rejects it, so it\n * cannot reach here from a decoded value.) Keeping this distinct from `objValue`\n * — which stays the best-effort encoder for the genuinely obj-erased seams\n * (`Binding.Static`) — is exactly the F# `encodeJVal` vs `appendObj` split.\n */\nconst jsonValue = (v: JsonValue): string => {\n if (v === null) return 'null';\n if (typeof v === 'string') return str(v);\n if (typeof v === 'boolean') return bool(v);\n if (typeof v === 'number') return num(v);\n if (Array.isArray(v)) return jArray(v.map(jsonValue));\n return jObject(\n Object.entries(v as Record<string, JsonValue>).map(([k, x]) => [k, jsonValue(x)] as const),\n );\n};\n\n/** A `Map<string, JsonValue>` — port of F# `encodeMap` (structural keys, faithful per-value). */\nconst jsonMap = (m: Readonly<Record<string, JsonValue>>): string =>\n jObject(Object.entries(m).map(([k, v]) => [k, jsonValue(v)] as const));\n\n/**\n * Re-render a parsed JSON AST (parse.ts) to canonical wire bytes — Ordinal-\n * sorted object keys (§2 rule 2), the §2 rule-5 number layout, the §2 rule-6\n * string escapes — using the very primitives the encoder uses. For input that\n * was already canonical, `renderAstCanonical(parse(x)) === x`. This is the\n * §15 wire-versioning building block: it re-emits a preserved `Unknown`\n * payload byte-for-byte (must-ignore-but-preserve, WIRE_FORMAT.md §15.3) and\n * renders the `$profile` / `$payload` envelope. Mirrors F#\n * `Fuaran.Core.Wire.Canon.render` composed over the same JVal shape.\n */\nexport const renderAstCanonical = (ast: JsonAst): string => {\n switch (ast.kind) {\n case 'JNull':\n return 'null';\n case 'JBool':\n return bool(ast.value);\n case 'JNumber':\n return num(ast.value);\n case 'JString':\n return str(ast.value);\n case 'JArray':\n return jArray(ast.items.map(renderAstCanonical));\n case 'JObject':\n return jObject([...ast.fields].map(([k, v]) => [k, renderAstCanonical(v)] as const));\n }\n};\n\n// ─── Compute layer (Phase 282 / 284) — DataSource / Transform / ColExpr / Cell ─\n//\n// Byte-identical port of the Fuaran.Core columnar + dataframe-algebra wire codecs\n// (`Fuaran.Core.ColumnCodec` / `Fuaran.Core.DataFrameCodec`), which render under\n// the SAME canonical `$type` discipline this encoder uses (Ordinal-sorted keys,\n// the pinned float layout, `caseObj` for `$type`-tagged DU positions). Verified\n// against nodes/grid-transform.json in the workspace corpus. The host\n// `Binding.Transform` (below) splices a pipeline array + a DataSource object —\n// `$type` (0x24) sorts before `pipeline` < `source`, so the composite stays\n// canonical.\n\n/** A JInt-shaped integer literal (decimal, no point/exponent) — port of F# `string i`. */\nconst intLit = (n: number): string => String(Math.trunc(n));\n\n/** Cell type tags map 1:1 onto the in-memory `ColumnType` values (canonical wire tags). */\ntype WireColumnType = ColumnType;\n\n/**\n * The present-cell JSON value for a column of type `ty` — port of F#\n * `ColumnCodec.cellJson`. A `Null` cell emits the type-default placeholder (the\n * validity mask records the nullity); an `Int` widens to a float in a float\n * column; every other present cell encodes as-is.\n */\nconst columnCellWire = (ty: WireColumnType, c: Cell): string => {\n switch (c.kind) {\n case 'Null':\n // Cell.defaultFor ty, then cellJson: int→\"0\", float→\"0\", bool→false, others→\"\".\n return ty === 'bool' ? bool(false) : ty === 'int' || ty === 'float' ? '0' : str('');\n case 'Int':\n return ty === 'float' ? num(c.value) : intLit(c.value);\n case 'Float':\n return num(c.value);\n case 'Bool':\n return bool(c.value);\n case 'Str':\n case 'Date':\n case 'Timestamp':\n return str(c.value);\n default:\n return assertNever(c);\n }\n};\n\nconst dataColumnJson = (c: DataColumn): string =>\n jObject([\n ['values', jArray(c.cells.map((cell) => columnCellWire(c.type, cell)))],\n ['validity', jArray(c.cells.map((cell) => bool(cell.kind !== 'Null')))],\n ]);\n\nconst schemaJson = (\n schema: readonly { readonly name: string; readonly type: ColumnType }[],\n): string =>\n jArray(\n schema.map((e) =>\n jObject([\n ['name', str(e.name)],\n ['type', str(e.type)],\n ]),\n ),\n );\n\n/** Encode a `DataSource` — port of F# `ColumnCodec.encodeJson`. */\nconst dataSource = (src: DataSource): string => {\n if (src.kind === 'Ref') {\n return jObject([\n ['schema', jArray([])],\n ['ref', str(src.name)],\n ]);\n }\n const t = src.table;\n const columns: Field[] = t.schema.map((e) => {\n const col: DataColumn = t.columns.find((c) => c.name === e.name) ?? {\n name: e.name,\n type: 'string',\n cells: [],\n };\n return [e.name, dataColumnJson(col)];\n });\n return jObject([\n ['schema', schemaJson(t.schema)],\n ['columns', jObject(columns)],\n ]);\n};\n\n/** A type-tagged literal cell — port of F# `DataFrameCodec.cellToJson`. */\nconst cellLit = (c: Cell): string => {\n switch (c.kind) {\n case 'Null':\n return caseObj('Null', []);\n case 'Int':\n return caseObj('Int', [['value', intLit(c.value)]]);\n case 'Float':\n return caseObj('Float', [['value', num(c.value)]]);\n case 'Bool':\n return caseObj('Bool', [['value', bool(c.value)]]);\n case 'Str':\n return caseObj('Str', [['value', str(c.value)]]);\n case 'Date':\n return caseObj('Date', [['value', str(c.value)]]);\n case 'Timestamp':\n return caseObj('Timestamp', [['value', str(c.value)]]);\n default:\n return assertNever(c);\n }\n};\n\n/** A `ColExpr` — port of F# `DataFrameCodec.encodeExpr`. */\nconst colExpr = (e: ColExpr): string => {\n switch (e.kind) {\n case 'col':\n return caseObj('col', [['name', str(e.name)]]);\n case 'param':\n return caseObj('param', [['name', str(e.name)]]);\n case 'lit':\n return caseObj('lit', [['cell', cellLit(e.cell)]]);\n case 'binary':\n return caseObj('binary', [\n ['op', str(e.op)],\n ['left', colExpr(e.left)],\n ['right', colExpr(e.right)],\n ]);\n case 'not':\n return caseObj('not', [['expr', colExpr(e.expr)]]);\n case 'coalesce':\n return caseObj('coalesce', [['exprs', jArray(e.exprs.map(colExpr))]]);\n case 'case':\n return caseObj('case', [\n [\n 'cases',\n jArray(\n e.cases.map((c) =>\n jObject([\n ['when', colExpr(c.when)],\n ['then', colExpr(c.then)],\n ]),\n ),\n ),\n ],\n ['else', colExpr(e.else)],\n ]);\n case 'cast':\n return caseObj('cast', [\n ['type', str(e.type)],\n ['expr', colExpr(e.expr)],\n ]);\n case 'apply':\n return caseObj('apply', [\n ['fn', str(e.fn)],\n ['args', jArray(e.args.map(colExpr))],\n ]);\n case 'in':\n return caseObj('in', [\n ['expr', colExpr(e.expr)],\n ['items', jArray(e.items.map(colExpr))],\n ]);\n case 'inParam':\n return caseObj('in', [\n ['expr', colExpr(e.expr)],\n ['param', str(e.param)],\n ]);\n case 'isNull':\n return caseObj('isNull', [['expr', colExpr(e.expr)]]);\n default:\n return assertNever(e);\n }\n};\n\nconst pairJson = (p: ColPair): string =>\n jObject([\n ['a', str(p.a)],\n ['b', str(p.b)],\n ]);\n\nconst aggJson = (a: Agg): string =>\n jObject([\n ['name', str(a.name)],\n ['fn', str(a.fn)],\n ['of', str(a.of)],\n ]);\n\nconst orderJson = (s: SortKey): string =>\n jObject([\n ['col', str(s.col)],\n ['dir', str(s.dir)],\n ]);\n\n/** A `Transform` step — port of F# `DataFrameCodec.encodeTransform`. */\nconst transformStep = (t: Transform): string => {\n switch (t.kind) {\n case 'filter':\n return caseObj('filter', [['pred', colExpr(t.pred)]]);\n case 'project':\n return caseObj('project', [['cols', jArray(t.cols.map(pairJson))]]);\n case 'derive':\n return caseObj('derive', [\n ['name', str(t.name)],\n ['expr', colExpr(t.expr)],\n ]);\n case 'groupBy':\n return caseObj('groupBy', [\n ['keys', jArray(t.keys.map(str))],\n ['aggs', jArray(t.aggs.map(aggJson))],\n ]);\n case 'join':\n return caseObj('join', [\n ['source', dataSource(t.source)],\n ['on', jArray(t.on.map(pairJson))],\n ['how', str(t.how)],\n ]);\n case 'window':\n return caseObj('window', [\n ['partitionBy', jArray(t.spec.partitionBy.map(str))],\n ['orderBy', jArray(t.spec.orderBy.map(orderJson))],\n ['fn', str(t.spec.fn)],\n ['of', str(t.spec.of)],\n ['as', str(t.spec.as)],\n ]);\n case 'pivot':\n return caseObj('pivot', [\n ['index', jArray(t.spec.index.map(str))],\n ['on', str(t.spec.on)],\n ['values', str(t.spec.values)],\n ['agg', str(t.spec.agg)],\n ]);\n case 'unpivot':\n return caseObj('unpivot', [\n ['idVars', jArray(t.idVars.map(str))],\n ['valueVars', jArray(t.valueVars.map(str))],\n ]);\n case 'sort':\n return caseObj('sort', [['by', jArray(t.by.map(orderJson))]]);\n case 'distinct':\n return caseObj('distinct', []);\n case 'limit':\n return caseObj('limit', [\n ['n', intLit(t.n)],\n ['offset', intLit(t.offset)],\n ]);\n case 'union':\n return caseObj('union', [['source', dataSource(t.source)]]);\n default:\n return assertNever(t);\n }\n};\n\n/** Encode a `DataSource` to its canonical-JSON string (Compute layer). */\nexport const encodeDataSource = (src: DataSource): string => dataSource(src);\n\n/** Encode a literal `Cell` to its `$type`-tagged canonical-JSON string. */\nexport const encodeCell = (c: Cell): string => cellLit(c);\n\n/** Encode a `ColExpr` to its canonical-JSON string. */\nexport const encodeColExpr = (e: ColExpr): string => colExpr(e);\n\n/** Encode a transform `pipeline` (ordered steps) to its canonical-JSON array string. */\nexport const encodePipeline = (pipeline: readonly Transform[]): string =>\n jArray(pipeline.map(transformStep));\n\n/**\n * The canonical `args` array of a `Binding.Invoke` / `Action.Invoke` (Phase 283)\n * — scalar `(addr, value)` pairs `[{\"addr\":…,\"value\":…}]`. Shared by both arms.\n */\nconst invokeArgs = (args: readonly InvokeArg[]): string =>\n jArray(\n args.map((a) =>\n jObject([\n ['addr', str(a.addr)],\n ['value', str(a.value)],\n ]),\n ),\n );\n\n// ─── Bindings / actions / text ───────────────────────────────────────────────\n\nconst flushTrigger = (t: LocalFlushTrigger): string => {\n switch (t.kind) {\n case 'OnBlur':\n return caseObj('OnBlur', []);\n case 'OnSubmit':\n return caseObj('OnSubmit', []);\n case 'OnCommitAction':\n return caseObj('OnCommitAction', []);\n case 'OnDebounce':\n return caseObj('OnDebounce', [['milliseconds', num(t.milliseconds)]]);\n default:\n return assertNever(t);\n }\n};\n\n/**\n * Phase 429 — the typed-static-payload seam. `staticEnc` names the slot's own\n * encoding for the `T` payload positions (`Static.value` and\n * `State.defaultValue`; `Local.initialFrom` recurses with the same encoder).\n * The default is `objValue` (primitives + the `\"<opaque>\"` catch-all), so\n * untyped slots stay byte-identical; the enumerated slot-typed call sites pass\n * the typed encoders below. Mirror of the F# `encodeBindingWith` parameter.\n */\nconst binding = <T>(b: Binding<T>, staticEnc: (v: T) => string = objValue): string => {\n switch (b.kind) {\n case 'Static': {\n // Phase 677 — absence is structural: a binding carrying no value omits the\n // key rather than emitting JSON null, for which the wire model has no case.\n const valueFields: readonly Field[] =\n b.value === null || b.value === undefined ? [] : [['value', staticEnc(b.value)]];\n return caseObj('Static', valueFields);\n }\n case 'Query': {\n // Phase 421 — `dependsOn` rides as a string array, omitted-when-empty.\n // 0.2.0 — the `accessor` closure sentinel is OFF the wire (decoders\n // never read it; pure token weight).\n const dependsOnFields: readonly Field[] =\n b.dependsOn !== undefined && b.dependsOn.length > 0\n ? [['dependsOn', jArray(b.dependsOn.map((s) => str(s)))]]\n : [];\n return caseObj('Query', [...dependsOnFields, ['name', str(b.name)]]);\n }\n case 'Filter': {\n // 0.2.0 — `defaultValue` rides the wire when present (typed via the\n // slot's static encoder, mirroring `State.defaultValue`); omitted\n // otherwise, keeping the plain chip byte-stable.\n const defaultField: readonly Field[] =\n b.defaultValue !== undefined ? [['defaultValue', staticEnc(b.defaultValue as T)]] : [];\n return caseObj('Filter', [...defaultField, ['name', str(b.name)]]);\n }\n case 'Selection': {\n // 0.2.0 — the `accessor` sentinel is off the wire (same as Query).\n // 0.2.9 (Phase 629) — `defaultValue` rides the wire when present,\n // exactly the `Filter.defaultValue` convention; omitted when absent so\n // the pre-629 minimal form stays byte-identical.\n // 0.2.10 (Phase 632) — `field` (the declarative row-field projection)\n // rides the same convention; the accessor closure is not serialisable,\n // so the carried name is the encode source.\n const defaultField: readonly Field[] =\n b.defaultValue !== undefined ? [['defaultValue', staticEnc(b.defaultValue)]] : [];\n const fieldField: readonly Field[] = b.field !== undefined ? [['field', str(b.field)]] : [];\n return caseObj('Selection', [...defaultField, ...fieldField, ['nodeId', str(b.nodeId)]]);\n }\n case 'State': {\n // Phase 677 — same rule as `Static`: absence omits, never null.\n const defaultFields: readonly Field[] =\n b.defaultValue === null || b.defaultValue === undefined\n ? []\n : [['defaultValue', staticEnc(b.defaultValue)]];\n return caseObj('State', [...defaultFields, ['key', str(b.key)]]);\n }\n case 'Computed':\n return caseObj('Computed', [['fn', CLOSURE]]);\n case 'I18n': {\n const fields: Field[] = [];\n if (b.args !== undefined) {\n fields.push([\n 'args',\n jObject(Object.entries(b.args).map(([k, v]) => [k, binding(v)] as const)),\n ]);\n }\n fields.push(['key', str(b.key)]);\n return caseObj('I18n', fields);\n }\n case 'Local':\n return caseObj('Local', [\n ['flushOn', flushTrigger(b.local.flushOn)],\n ['format', CLOSURE],\n ['initialFrom', binding(b.local.initialFrom, staticEnc)],\n ['onCommit', CLOSURE],\n ['parse', CLOSURE],\n ]);\n case 'Format':\n // Phase 102: source is always a numeric Binding; format / locale are\n // bounded DUs. Keys sort to format < locale < source.\n return caseObj('Format', [\n ['format', formatIntent(b.format)],\n ['locale', localeSource(b.locale)],\n ['source', binding(b.source)],\n ]);\n case 'Transform': {\n // Phase 282 — the Compute layer. `pipeline` + `source` are Core values\n // whose codecs render under the SAME canonical `$type` discipline; `$type`\n // (0x24) sorts before `params` < `pipeline` < `source`, so the composite is canonical.\n // Phase 424 — `params` binds `ColExpr.Param` names to scalar `Binding` sources;\n // omitted-when-empty so a param-free Transform is byte-identical to the Phase 282 wire.\n const paramFields: readonly Field[] =\n b.params !== undefined && b.params.length > 0\n ? [\n [\n 'params',\n jArray(\n b.params.map((p) =>\n jObject([\n ['from', binding(p.from)],\n ['name', str(p.name)],\n ]),\n ),\n ),\n ],\n ]\n : [];\n return caseObj('Transform', [\n ...paramFields,\n ['pipeline', jArray(b.pipeline.map(transformStep))],\n ['source', dataSource(b.source)],\n ]);\n }\n case 'Invoke':\n // Phase 283 — host-registered capability for a value; the body never on the wire.\n return caseObj('Invoke', [\n ['args', invokeArgs(b.args)],\n ['capabilityId', str(b.capabilityId)],\n ]);\n default:\n return assertNever(b);\n }\n};\n\nconst action = <T>(a: Action<T>): string => {\n switch (a.kind) {\n case 'Dispatch':\n // 0.2.0 — the `msg` closure sentinel is off the wire (decoders never\n // read it).\n return caseObj('Dispatch', []);\n case 'Call': {\n // Phase 428: `onResult` rides the wire only when present (byte-identical\n // sentinel); `into` is the declarative result target, omitted when absent.\n const fields: Field[] = [['endpoint', str(a.endpoint)]];\n if (a.into !== undefined) {\n fields.push([\n 'into',\n a.into.kind === 'State'\n ? caseObj('State', [['key', str(a.into.key)]])\n : caseObj('Query', [['name', str(a.into.name)]]),\n ]);\n }\n if (a.onResult !== undefined) fields.push(['onResult', CLOSURE]);\n return caseObj('Call', fields);\n }\n case 'Notify':\n return caseObj('Notify', [\n ['channel', str(a.channel)],\n ['payload', jsonValue(a.payload)],\n ]);\n case 'Navigate':\n return caseObj('Navigate', [['route', str(a.route)]]);\n case 'SetState':\n return caseObj('SetState', [\n ['key', str(a.key)],\n ['value', jsonValue(a.value)],\n ]);\n case 'AiTool':\n return caseObj('AiTool', [\n ['args', jsonValue(a.args)],\n ['toolName', str(a.toolName)],\n ]);\n case 'Chain':\n return caseObj('Chain', [['ops', jArray(a.actions.map(action))]]);\n case 'CommitLocal':\n return caseObj('CommitLocal', [['nodeId', str(a.nodeId)]]);\n case 'WriteToClipboard':\n return caseObj('WriteToClipboard', [['text', str(a.text)]]);\n case 'ReadFileBody':\n // Phase 136 — only file.id + encoding cross the wire; the blob is\n // host-held (file.handle) and onRead is the closure sentinel (§4).\n // Keys sort to encoding < fileRef < onRead.\n return caseObj('ReadFileBody', [\n ['encoding', str(a.encoding)],\n ['fileRef', str(a.file.id)],\n ['onRead', CLOSURE],\n ]);\n case 'Invoke':\n // Phase 283 — capability invoked as an effect; same wire shape as Binding.Invoke.\n return caseObj('Invoke', [\n ['args', invokeArgs(a.args)],\n ['capabilityId', str(a.capabilityId)],\n ]);\n default:\n return assertNever(a);\n }\n};\n\nconst textSource = (t: TextSource): string => {\n switch (t.kind) {\n case 'Literal':\n // 0.2.0 — the CANONICAL Literal form is the bare JSON string; the\n // {\"$type\":\"Literal\"} envelope stays decode-accepted.\n return str(t.value);\n case 'Bound':\n return caseObj('Bound', [['binding', binding(t.binding)]]);\n case 'I18n':\n return caseObj('I18n', [\n ['args', jsonMap(t.args)],\n ['key', str(t.key)],\n ]);\n default:\n return assertNever(t);\n }\n};\n\nconst cellFormat = (f: CellFormat): string => {\n switch (f.kind) {\n case 'None':\n return caseObj('None', []);\n case 'Number':\n return caseObj('Number', f.decimals !== undefined ? [['decimals', num(f.decimals)]] : []);\n case 'Currency':\n return caseObj('Currency', [['code', str(f.code)]]);\n case 'Percent':\n return caseObj('Percent', f.decimals !== undefined ? [['decimals', num(f.decimals)]] : []);\n case 'SignificantDigits':\n return caseObj('SignificantDigits', [['digits', num(f.digits)]]);\n case 'Date':\n return caseObj('Date', [['format', str(f.format)]]);\n case 'Custom':\n return caseObj('Custom', [['fn', CLOSURE]]);\n default:\n return assertNever(f);\n }\n};\n\nconst formatIntent = (f: Format): string => {\n switch (f.kind) {\n case 'Number':\n return caseObj('Number', f.decimals !== undefined ? [['decimals', num(f.decimals)]] : []);\n case 'Currency':\n return caseObj('Currency', [['isoCode', str(f.isoCode)]]);\n case 'Percent':\n return caseObj('Percent', f.decimals !== undefined ? [['decimals', num(f.decimals)]] : []);\n case 'Date':\n return caseObj('Date', [['dateStyle', str(f.dateStyle)]]);\n case 'RelativeTime':\n return caseObj('RelativeTime', [['unit', str(f.unit)]]);\n default:\n return assertNever(f);\n }\n};\n\nconst localeSource = (l: LocaleSource): string => {\n switch (l.kind) {\n case 'Ambient':\n return caseObj('Ambient', []);\n case 'Explicit':\n return caseObj('Explicit', [['tag', str(l.tag)]]);\n default:\n return assertNever(l);\n }\n};\n\nconst columnWidth = (w: ColumnWidth): string => {\n switch (w.kind) {\n case 'Auto':\n return caseObj('Auto', []);\n case 'Fixed':\n return caseObj('Fixed', [['pixels', num(w.pixels)]]);\n case 'Flex':\n return caseObj('Flex', [['weight', num(w.weight)]]);\n default:\n return assertNever(w);\n }\n};\n\n// ─── Display specs ───────────────────────────────────────────────────────────\n\n// Phase 460 — the stylistic fields are emitted only when non-default (identity:\n// CellFormat.None / ColumnWidth.Auto / tone Default / weight Standard / emphasis\n// Normal), mirroring the F# encoder + the role/voice precedent. `jObject` sorts\n// keys, so push order is irrelevant.\nconst pushToneOptional = (fields: Field[], t: ToneVariant): void => {\n if (t !== 'Default') fields.push(['tone', str(t)]);\n};\nconst pushWeightOptional = (fields: Field[], w: StyleWeight): void => {\n if (w !== 'Standard') fields.push(['weight', str(w)]);\n};\nconst pushEmphasisOptional = (fields: Field[], e: Emphasis): void => {\n if (e !== 'Normal') fields.push(['emphasis', str(e)]);\n};\nconst pushCellFormatOptional = (fields: Field[], key: string, f: CellFormat): void => {\n if (f.kind !== 'None') fields.push([key, cellFormat(f)]);\n};\nconst pushColumnWidthOptional = (fields: Field[], key: string, w: ColumnWidth): void => {\n if (w.kind !== 'Auto') fields.push([key, columnWidth(w)]);\n};\n\nconst metricSpec = (s: MetricSpec): string => {\n const fields: Field[] = [\n ['label', textSource(s.label)],\n ['value', binding(s.value)],\n ];\n pushCellFormatOptional(fields, 'format', s.format);\n pushToneOptional(fields, s.tone);\n pushWeightOptional(fields, s.weight);\n pushEmphasisOptional(fields, s.emphasis);\n if (s.trend !== undefined) fields.push(['trend', binding(s.trend)]);\n if (s.trendFormat !== undefined) fields.push(['trendFormat', cellFormat(s.trendFormat)]);\n if (s.icon !== undefined) fields.push(['icon', str(s.icon)]);\n if (s.subtext !== undefined) fields.push(['subtext', textSource(s.subtext)]);\n return jObject(fields);\n};\n\nconst headingSpec = (s: HeadingSpec): string =>\n jObject([\n ['level', num(s.level)],\n ['text', textSource(s.text)],\n ['variant', str(s.variant)],\n ]);\n\nconst labelValueRowSpec = (s: LabelValueRowSpec): string => {\n // 0.2.2 — `emphasis` omitted-when-false (aligning with Fact); `format`\n // omitted-when-default (Phase 460).\n const fields: Field[] = [\n ...(s.emphasis ? ([['emphasis', bool(true)]] as const) : []),\n ['label', textSource(s.label)],\n ['value', binding(s.value)],\n ];\n pushCellFormatOptional(fields, 'format', s.format);\n if (s.help !== undefined) fields.push(['help', textSource(s.help)]);\n return jObject(fields);\n};\n\nconst factSpec = (s: FactSpec): string => {\n // New-kind posture: label + value required; emphasis omitted-when-false,\n // tone omitted-when-default (both boundaries); help/icon optional.\n const fields: Field[] = [\n ['label', textSource(s.label)],\n ['value', textSource(s.value)],\n ];\n if (s.emphasis) fields.push(['emphasis', bool(true)]);\n pushToneOptional(fields, s.tone);\n if (s.help !== undefined) fields.push(['help', textSource(s.help)]);\n if (s.icon !== undefined) fields.push(['icon', str(s.icon)]);\n return jObject(fields);\n};\n\nconst markdownSpec = (s: MarkdownSpec): string => jObject([['text', textSource(s.text)]]);\n\nconst badgeSpec = (s: BadgeSpec): string =>\n jObject([\n ['label', textSource(s.label)],\n ['variant', str(s.variant)],\n ]);\n\nconst linkSpec = (s: LinkSpec): string => {\n const fields: Field[] = [\n ['href', binding(s.href)],\n ['label', textSource(s.label)],\n ['download', bool(s.download)],\n ];\n if (s.rel !== undefined) fields.push(['rel', str(s.rel)]);\n if (s.target !== undefined) fields.push(['target', str(s.target)]);\n return jObject(fields);\n};\n\nconst imageSpec = (s: ImageSpec): string =>\n jObject([\n ['alt', textSource(s.alt)],\n ['src', binding(s.src)],\n ['variant', str(s.variant)],\n ]);\n\nconst listSpec = (s: ListSpec): string =>\n jObject([\n ['items', jArray(s.items.map(textSource))],\n ['ordered', bool(s.ordered)],\n ]);\n\nconst toastSpec = (s: ToastSpec): string => {\n // Phase 460 — `tone` omitted-when-default.\n const fields: Field[] = [\n // 0.2.0 omitted-when-TRUE (a Toast is dismissable unless said otherwise).\n ...(s.dismissable ? [] : ([['dismissable', bool(false)]] as const)),\n ['message', textSource(s.message)],\n ['open', binding(s.open)],\n ];\n pushToneOptional(fields, s.tone);\n return jObject(fields);\n};\n\n/** `MathDisplay` bare-string enum (WIRE_FORMAT.md §3.5). */\nconst mathDisplay = (d: MathDisplay): string => str(d);\n\nconst codeBlockSpec = (s: CodeBlockSpec): string =>\n jObject([\n ['code', str(s.code)],\n ['copyable', bool(s.copyable)],\n // highlightLines is always present (possibly empty); ints render as decimal\n // literals (port of F# `int_`), not the float layout.\n ['highlightLines', jArray(s.highlightLines.map(intLit))],\n ['language', str(s.language)],\n ['lineNumbers', bool(s.lineNumbers)],\n ]);\n\nconst mathSpec = (s: MathSpec): string =>\n jObject([\n ['display', mathDisplay(s.display)],\n ['source', str(s.source)],\n ]);\n\nconst sparklineSpec = (s: SparklineSpec): string =>\n jObject([['source', binding(s.source, staticFloatSeq)]]);\n\nconst skeletonSpec = (s: SkeletonSpec): string => jObject([['rows', num(s.rows)]]);\n\nconst calloutSpec = (s: CalloutSpec): string => {\n // Phase 460 — `tone` omitted-when-default.\n const fields: Field[] = [\n ['body', textSource(s.body)],\n // 0.2.0 omitted-when-false.\n ...(s.dismissable ? ([['dismissable', bool(true)]] as const) : []),\n ];\n pushToneOptional(fields, s.tone);\n if (s.heading !== undefined) fields.push(['heading', textSource(s.heading)]);\n if (s.icon !== undefined) fields.push(['icon', str(s.icon)]);\n return jObject(fields);\n};\n\nconst progressSpec = (s: ProgressSpec): string => {\n // Phase 460 — `tone` omitted-when-default.\n const fields: Field[] = [\n ['fraction', binding(s.fraction)],\n // 0.2.0 omitted-when-false.\n ...(s.indeterminate ? ([['indeterminate', bool(true)]] as const) : []),\n ];\n pushToneOptional(fields, s.tone);\n if (s.label !== undefined) fields.push(['label', textSource(s.label)]);\n if (s.caveat !== undefined) fields.push(['caveat', textSource(s.caveat)]);\n return jObject(fields);\n};\n\n// ─── Drawing (Phase 524) ─────────────────────────────────────────────────────\n\nconst drawPoint = (p: DrawPoint): string =>\n jObject([\n ['x', num(p.x)],\n ['y', num(p.y)],\n ]);\n\nconst viewBox = (v: ViewBox): string =>\n jObject([\n ['height', num(v.height)],\n ['minX', num(v.minX)],\n ['minY', num(v.minY)],\n ['width', num(v.width)],\n ]);\n\nconst drawStyle = (s: DrawStyle): string => {\n const fields: Field[] = [];\n if (s.fill !== undefined) fields.push(['fill', binding(s.fill)]);\n if (s.opacity !== undefined) fields.push(['opacity', binding(s.opacity)]);\n if (s.stroke !== undefined) fields.push(['stroke', binding(s.stroke)]);\n if (s.strokeWidth !== undefined) fields.push(['strokeWidth', binding(s.strokeWidth)]);\n // Text-only fields (Phase 528.1) — omitted when unset; jObject sorts keys.\n if (s.textAnchor !== undefined) fields.push(['textAnchor', str(s.textAnchor)]);\n if (s.fontSize !== undefined) fields.push(['fontSize', num(s.fontSize)]);\n if (s.emphasis !== undefined) fields.push(['emphasis', str(s.emphasis)]);\n if (s.fontFamily !== undefined) fields.push(['fontFamily', str(s.fontFamily)]);\n // Phase 642 — keyed mark identity; omitted when unset.\n if (s.markId !== undefined) fields.push(['markId', str(s.markId)]);\n return jObject(fields);\n};\n\nconst curveCommand = (c: CurveCommand): string => {\n switch (c.kind) {\n case 'MoveTo':\n return caseObj('MoveTo', [['to', drawPoint(c.to)]]);\n case 'LineTo':\n return caseObj('LineTo', [['to', drawPoint(c.to)]]);\n case 'CubicTo':\n return caseObj('CubicTo', [\n ['control1', drawPoint(c.control1)],\n ['control2', drawPoint(c.control2)],\n ['to', drawPoint(c.to)],\n ]);\n case 'QuadraticTo':\n return caseObj('QuadraticTo', [\n ['control', drawPoint(c.control)],\n ['to', drawPoint(c.to)],\n ]);\n case 'Close':\n return caseObj('Close', []);\n }\n};\n\nconst shape = (sh: Shape): string => {\n switch (sh.kind) {\n case 'Group':\n return caseObj('Group', [\n ['children', jArray(sh.children.map(shape))],\n ['style', drawStyle(sh.style)],\n ]);\n case 'Rectangle': {\n const fields: Field[] = [\n ['height', num(sh.height)],\n ['style', drawStyle(sh.style)],\n ['width', num(sh.width)],\n ['x', num(sh.x)],\n ['y', num(sh.y)],\n ];\n if (sh.cornerRadius !== undefined) fields.push(['cornerRadius', num(sh.cornerRadius)]);\n return caseObj('Rectangle', fields);\n }\n case 'Line':\n return caseObj('Line', [\n ['style', drawStyle(sh.style)],\n ['x1', num(sh.x1)],\n ['x2', num(sh.x2)],\n ['y1', num(sh.y1)],\n ['y2', num(sh.y2)],\n ]);\n case 'Polyline':\n return caseObj('Polyline', [\n ['points', jArray(sh.points.map(drawPoint))],\n ['style', drawStyle(sh.style)],\n ]);\n case 'Polygon':\n return caseObj('Polygon', [\n ['points', jArray(sh.points.map(drawPoint))],\n ['style', drawStyle(sh.style)],\n ]);\n case 'Curve':\n return caseObj('Curve', [\n ['commands', jArray(sh.commands.map(curveCommand))],\n ['style', drawStyle(sh.style)],\n ]);\n case 'Circle':\n return caseObj('Circle', [\n ['cx', num(sh.cx)],\n ['cy', num(sh.cy)],\n ['r', num(sh.r)],\n ['style', drawStyle(sh.style)],\n ]);\n case 'Ellipse':\n return caseObj('Ellipse', [\n ['cx', num(sh.cx)],\n ['cy', num(sh.cy)],\n ['rx', num(sh.rx)],\n ['ry', num(sh.ry)],\n ['style', drawStyle(sh.style)],\n ]);\n case 'Label':\n return caseObj('Label', [\n ['style', drawStyle(sh.style)],\n ['text', textSource(sh.text)],\n ['x', num(sh.x)],\n ['y', num(sh.y)],\n ]);\n }\n};\n\nconst drawingSpec = (s: DrawingSpec): string => {\n const fields: Field[] = [\n ['shapes', jArray(s.shapes.map(shape))],\n ['style', drawStyle(s.style)],\n ['viewBox', viewBox(s.viewBox)],\n ];\n if (s.description !== undefined) fields.push(['description', textSource(s.description)]);\n if (s.title !== undefined) fields.push(['title', textSource(s.title)]);\n return jObject(fields);\n};\n\nconst displayKind = (d: DisplayKind): string => {\n switch (d.kind) {\n case 'Heading':\n return hoistSpec('Heading', headingSpec(d.spec));\n case 'Markdown':\n return hoistSpec('Markdown', markdownSpec(d.spec));\n case 'Metric':\n return hoistSpec('Metric', metricSpec(d.spec));\n case 'Badge':\n return hoistSpec('Badge', badgeSpec(d.spec));\n case 'Sparkline':\n return hoistSpec('Sparkline', sparklineSpec(d.spec));\n case 'Callout':\n return hoistSpec('Callout', calloutSpec(d.spec));\n case 'Progress':\n return hoistSpec('Progress', progressSpec(d.spec));\n case 'Skeleton':\n return hoistSpec('Skeleton', skeletonSpec(d.spec));\n case 'LabelValueRow':\n return hoistSpec('LabelValueRow', labelValueRowSpec(d.spec));\n case 'Fact':\n return hoistSpec('Fact', factSpec(d.spec));\n case 'Link':\n return hoistSpec('Link', linkSpec(d.spec));\n case 'Image':\n return hoistSpec('Image', imageSpec(d.spec));\n case 'List':\n return hoistSpec('List', listSpec(d.spec));\n case 'Toast':\n return hoistSpec('Toast', toastSpec(d.spec));\n case 'CodeBlock':\n return hoistSpec('CodeBlock', codeBlockSpec(d.spec));\n case 'Math':\n return hoistSpec('Math', mathSpec(d.spec));\n case 'Drawing':\n return hoistSpec('Drawing', drawingSpec(d.spec));\n default:\n return assertNever(d);\n }\n};\n\n// ─── Input specs ─────────────────────────────────────────────────────────────\n\n/**\n * Phase 596 — the auto-bind context for a control's `value` slot, mirroring\n * the decoder's synthesis exactly: a `value` that is the context's exact\n * auto-binding is OMITTED — `Filter(name)` (no defaultValue) on a chip,\n * `State(field id, typed placeholder)` on a form field — so the canonical\n * minimal control carries no `value` key. Any other binding always emits.\n */\ntype ControlAutoBind =\n | { readonly kind: 'filter'; readonly name: string }\n | { readonly kind: 'form'; readonly id: string }\n | undefined;\n\nconst formFieldKind = (autoBind: ControlAutoBind, k: FormFieldKind<unknown>): string => {\n // Handlers ride the wire only when present (Phase 426, generalising the\n // Phase 423 chip mechanics): a defined handler → the `\"<closure>\"`\n // sentinel (byte-identical to before); an omitted (declarative) handler\n // omits the key entirely and arms the renderer's write-back default.\n const handlerField = (name: string, h: unknown): readonly Field[] =>\n h !== undefined ? [[name, CLOSURE]] : [];\n const isAutoBinding = (b: Binding<unknown>, autoDefault: unknown): boolean => {\n if (autoBind?.kind === 'filter')\n return b.kind === 'Filter' && b.name === autoBind.name && b.defaultValue === undefined;\n if (autoBind?.kind === 'form')\n return (\n b.kind === 'State' &&\n b.key === autoBind.id &&\n // structural equality — the range placeholder is a tuple\n JSON.stringify(b.defaultValue) === JSON.stringify(autoDefault)\n );\n return false;\n };\n const valueField = <V>(\n b: Binding<V>,\n autoDefault: unknown,\n enc: (v: Binding<V>) => string,\n ): readonly Field[] =>\n isAutoBinding(b as Binding<unknown>, autoDefault) ? [] : [['value', enc(b)]];\n switch (k.kind) {\n case 'Text':\n return caseObj('Text', [\n ...handlerField('onChange', k.onChange),\n ...valueField(k.value, controlValueDefaults.text, (v) => binding(v)),\n ]);\n case 'Number':\n return caseObj('Number', [\n ...handlerField('onChange', k.onChange),\n ...valueField(k.value, controlValueDefaults.number, (v) => binding(v)),\n ]);\n case 'Checkbox':\n return caseObj('Checkbox', [\n ...handlerField('onToggle', k.onToggle),\n ...valueField(k.value, controlValueDefaults.checkbox, (v) => binding(v)),\n ]);\n case 'Choice':\n return caseObj('Choice', [\n ...handlerField('onChange', k.onChange),\n ['options', binding(k.options, staticSelectOptions)],\n ...valueField(k.value, controlValueDefaults.choice, (v) => binding(v, staticStringOpt)),\n ]);\n case 'Range': {\n // 0.2.0 — dual-thumb range (absorbed FilterKind.RangeFilter). The\n // Static pair rides as the typed {min, max} object; constraints\n // omitted when absent (rule 4).\n const staticPair = (p: readonly [number, number]): string =>\n jObject([\n ['max', num(p[1])],\n ['min', num(p[0])],\n ]);\n const fields: Field[] = [\n ...handlerField('onChange', k.onChange),\n ...valueField(k.value, controlValueDefaults.range, (v) =>\n v.kind === 'Static' ? staticPair(v.value) : binding(v, staticPair),\n ),\n ];\n if (k.constraints?.min !== undefined) fields.push(['min', num(k.constraints.min)]);\n if (k.constraints?.max !== undefined) fields.push(['max', num(k.constraints.max)]);\n if (k.constraints?.step !== undefined) fields.push(['step', num(k.constraints.step)]);\n return caseObj('Range', fields);\n }\n case 'RangedNumber': {\n const fields: Field[] = [\n ...handlerField('onChange', k.onChange),\n ...valueField(k.value, controlValueDefaults.number, (v) => binding(v)),\n ];\n if (k.constraints.min !== undefined) fields.push(['min', num(k.constraints.min)]);\n if (k.constraints.max !== undefined) fields.push(['max', num(k.constraints.max)]);\n if (k.constraints.step !== undefined) fields.push(['step', num(k.constraints.step)]);\n return caseObj('RangedNumber', fields);\n }\n case 'SegmentedChoice':\n return caseObj('SegmentedChoice', [\n ...handlerField('onChange', k.onChange),\n ['options', binding(k.options, staticSelectOptions)],\n ['orientation', str(k.orientation)],\n ...valueField(k.value, controlValueDefaults.choice, (v) => binding(v, staticStringOpt)),\n ]);\n case 'TextArea':\n return caseObj('TextArea', [\n ...handlerField('onChange', k.onChange),\n ['rows', num(k.rows)],\n ...valueField(k.value, controlValueDefaults.text, (v) => binding(v)),\n ]);\n case 'Date': {\n // Phase 288 — value is Binding<string> (ISO-8601); variant required;\n // min/max (ISO strings) + step (seconds) omitted when undefined, mirroring\n // RangedNumber's optional-constraint discipline.\n const fields: Field[] = [\n ...handlerField('onChange', k.onChange),\n ...valueField(k.value, controlValueDefaults.date, (v) => binding(v)),\n ['variant', str(k.variant)],\n ];\n if (k.constraints.min !== undefined) fields.push(['min', str(k.constraints.min)]);\n if (k.constraints.max !== undefined) fields.push(['max', str(k.constraints.max)]);\n if (k.constraints.step !== undefined) fields.push(['step', num(k.constraints.step)]);\n return caseObj('Date', fields);\n }\n case 'DateRange': {\n // Phase 725 — single-control date range. The Static pair rides as the\n // BARE {from, to} object (the Range posture, no envelope); min/max (ISO\n // strings) + step (seconds) are flat and bound both ends.\n const staticPair = (p: readonly [string, string]): string =>\n jObject([\n ['from', str(p[0])],\n ['to', str(p[1])],\n ]);\n const fields: Field[] = [\n ...handlerField('onChange', k.onChange),\n ...valueField(k.value, controlValueDefaults.dateRange, (v) =>\n v.kind === 'Static' ? staticPair(v.value) : binding(v, staticPair),\n ),\n ['variant', str(k.variant)],\n ];\n if (k.constraints.min !== undefined) fields.push(['min', str(k.constraints.min)]);\n if (k.constraints.max !== undefined) fields.push(['max', str(k.constraints.max)]);\n if (k.constraints.step !== undefined) fields.push(['step', num(k.constraints.step)]);\n return caseObj('DateRange', fields);\n }\n default:\n return assertNever(k);\n }\n};\n\nconst formField = (f: FormField<unknown>): string => {\n const fields: Field[] = [\n ['id', str(f.id)],\n ['kind', formFieldKind({ kind: 'form', id: f.id }, f.kind)],\n ['label', textSource(f.label)],\n ['required', bool(f.required)],\n ];\n if (f.help !== undefined) fields.push(['help', textSource(f.help)]);\n return jObject(fields);\n};\n\nconst formSpec = (s: FormSpec<unknown>): string => {\n const fields: Field[] = [\n ['fields', jArray(s.fields.map(formField))],\n ['onSubmit', action(s.onSubmit)],\n ['submitLabel', textSource(s.submitLabel)],\n ];\n // Phase 130: optional bound form-level disabled-state — emitted only when\n // present, mirroring ButtonSpec.disabled.\n if (s.disabled !== undefined) fields.push(['disabled', binding(s.disabled)]);\n return jObject(fields);\n};\n\nconst filterSpec = (s: FilterSpec<unknown>): string =>\n // 0.2.0 filters-unification: the chip's control is an ordinary\n // FormFieldKind; a `value` equal to the auto-binding `Filter(name)` is\n // omitted (see formFieldKind).\n jObject([\n ['kind', formFieldKind({ kind: 'filter', name: s.name }, s.field)],\n ['label', textSource(s.label)],\n ['name', str(s.name)],\n ]);\n\nconst buttonSpec = (s: ButtonSpec<unknown>): string => {\n const fields: Field[] = [\n ['label', textSource(s.label)],\n ['onClick', action(s.onClick)],\n ['variant', str(s.variant)],\n ];\n if (s.icon !== undefined) fields.push(['icon', str(s.icon)]);\n // Phase 129: optional bound disabled-state — emitted only when present,\n // mirroring MetricSpec.trend's optional-binding shape.\n if (s.disabled !== undefined) fields.push(['disabled', binding(s.disabled)]);\n return jObject(fields);\n};\n\nconst selectSpec = (s: SelectSpec<unknown>): string => {\n const fields: Field[] = [\n ['label', textSource(s.label)],\n ['source', binding(s.source, staticSelectOptions)],\n ['value', binding(s.value, staticStringOpt)],\n ];\n // Phase 426: `onChange` rides the wire only when present (byte-identical\n // sentinel); omitted, the renderer writes the chosen option back to a\n // writable `value` binding.\n if (s.onChange !== undefined) fields.push(['onChange', CLOSURE]);\n if (s.placeholder !== undefined) fields.push(['placeholder', textSource(s.placeholder)]);\n // Phase 130: optional bound disabled-state.\n if (s.disabled !== undefined) fields.push(['disabled', binding(s.disabled)]);\n // Phase 291: multi-select. `multiple` emitted ONLY when true and `values` ONLY\n // when present, so single-select wire stays byte-identical to pre-multi-select\n // fixtures (the degenerate case).\n if (s.multiple) fields.push(['multiple', bool(true)]);\n if (s.values !== undefined) fields.push(['values', binding(s.values, staticStringList)]);\n // Phase 426: the multi-select handler carries its own sentinel key when\n // present (previously never encoded).\n if (s.onChangeMulti !== undefined) fields.push(['onChangeMulti', CLOSURE]);\n return jObject(fields);\n};\n\nconst fileUploadSpec = (s: FileUploadSpec<unknown>): string => {\n const fields: Field[] = [\n ['accept', jArray(s.accept.map(str))],\n ['label', textSource(s.label)],\n ['multiple', bool(s.multiple)],\n ['onSelect', CLOSURE],\n ];\n // Phase 130: optional bound disabled-state.\n if (s.disabled !== undefined) fields.push(['disabled', binding(s.disabled)]);\n return jObject(fields);\n};\n\nconst inputKind = (i: InputKind<unknown>): string => {\n switch (i.kind) {\n case 'Form':\n return hoistSpec('Form', formSpec(i.spec));\n case 'Filters':\n return caseObj('Filters', [['items', jArray(i.specs.map(filterSpec))]]);\n case 'Button':\n return hoistSpec('Button', buttonSpec(i.spec));\n case 'FileUpload':\n return hoistSpec('FileUpload', fileUploadSpec(i.spec));\n case 'Select':\n return hoistSpec('Select', selectSpec(i.spec));\n default:\n return assertNever(i);\n }\n};\n\n// ─── Typed Static payload encoders (Phase 429) ───────────────────────────────\n//\n// The `objValue` catch-all collapses non-primitive `Binding.Static` payloads to\n// `\"<opaque>\"`. For the shapes the language itself enumerates — options,\n// values, series, markers — the encoder emits the typed forms the decoders\n// parse, passed per slot through `binding`'s `staticEnc` parameter (the mirror\n// of F# `encodeBindingWith`). A `Static` of a host domain type (grid/table\n// rows) still falls through to the catch-all — the residual-opaque boundary is\n// by design (WIRE_FORMAT.md §\"Typed Static payloads\").\n\nconst selectOption = (o: SelectOption): string =>\n jObject([\n ['label', textSource(o.label)],\n ['value', str(o.value)],\n ]);\n\nconst staticSelectOptions = (v: readonly SelectOption[]): string => jArray(v.map(selectOption));\n\nconst staticStringOpt = (v: string | undefined): string => (v === undefined ? 'null' : str(v));\n\nconst staticStringList = (v: readonly string[]): string => jArray(v.map(str));\n\nconst staticFloatSeq = (v: readonly number[]): string => jArray(v.map(num));\n\nconst staticMarkerSeq = (v: readonly MapMarker[]): string => jArray(v.map(mapMarker));\n\n// ─── Visualisation specs ─────────────────────────────────────────────────────\n\nconst cellKindErased = (k: CellKindErased<unknown>): string => {\n switch (k.kind) {\n case 'Text':\n return caseObj('Text', []);\n case 'Numeric':\n return caseObj('Numeric', []);\n case 'Date':\n return caseObj('Date', []);\n case 'Editable':\n return caseObj('Editable', [['onEdit', CLOSURE]]);\n case 'Checkbox':\n return caseObj('Checkbox', [\n ['get', CLOSURE],\n ['onToggle', CLOSURE],\n ]);\n case 'Button':\n return caseObj('Button', [\n ['label', textSource(k.label)],\n ['onClick', CLOSURE],\n ]);\n case 'ButtonGroup':\n return caseObj('ButtonGroup', [\n [\n 'buttons',\n jArray(\n k.buttons.map(([label]) =>\n jObject([\n ['label', textSource(label)],\n ['onClick', CLOSURE],\n ]),\n ),\n ),\n ],\n ]);\n case 'Link':\n return caseObj('Link', [\n ['hrefFn', CLOSURE],\n ['labelFn', CLOSURE],\n ]);\n case 'Pill':\n return caseObj('Pill', [\n ['labelFn', CLOSURE],\n ['toneFn', CLOSURE],\n ]);\n // Phase 750 — the declarative pill. `default` is omitted-when-`Default` (the Phase\n // 460 discipline); `jObject` Ordinal-sorts, so push order is irrelevant.\n case 'TonedPill': {\n const fields: Field[] = [\n ['field', str(k.field)],\n ['map', jObject(Object.entries(k.map).map(([v, t]) => [v, str(t)] as const))],\n ];\n if (k.defaultTone !== 'Default') fields.push(['default', str(k.defaultTone)]);\n return caseObj('TonedPill', fields);\n }\n case 'Progress':\n return caseObj('Progress', [\n ['fractionFn', CLOSURE],\n ['labelFn', CLOSURE],\n ]);\n case 'Custom':\n return caseObj('Custom', [['fn', CLOSURE]]);\n default:\n return assertNever(k);\n }\n};\n\nconst columnErased = (c: ColumnErased<unknown>): string => {\n // Phase 425 — `value` (closure) + `field` (declarative) are sibling optional slots.\n // Phase 460 — `format`/`width` omitted-when-default (`None`/`Auto`).\n const fields: Field[] = [\n ['kind', cellKindErased(c.kind)],\n ['label', str(c.label)],\n ];\n pushCellFormatOptional(fields, 'format', c.format);\n pushColumnWidthOptional(fields, 'width', c.width);\n if (c.value !== undefined) fields.push(['value', CLOSURE]);\n if (c.field !== undefined) fields.push(['field', str(c.field)]);\n return jObject(fields);\n};\n\nconst gridSpec = (s: GridSpec<unknown>): string => {\n const fields: Field[] = [\n ['columns', jArray(s.columns.map(columnErased))],\n // 0.2.0 omitted-when-false.\n ...(s.editable ? ([['editable', bool(true)]] as const) : []),\n ['source', binding(s.source)],\n ];\n if (s.onRowClick !== undefined) fields.push(['onRowClick', CLOSURE]);\n // Phase 425 — `rowKey` (closure) + `rowKeyField` (declarative) are sibling optional slots.\n if (s.rowKey !== undefined) fields.push(['rowKey', CLOSURE]);\n if (s.rowKeyField !== undefined) fields.push(['rowKeyField', str(s.rowKeyField)]);\n // Phase 393 — the static read-only mode; omitted for a data-bound grid so every existing\n // grid fixture stays byte-identical.\n if (s.staticRows !== undefined)\n fields.push([\n 'staticRows',\n jObject([\n ['headers', jArray(s.staticRows.headers.map(textSource))],\n ['rows', jArray(s.staticRows.rows.map((row) => jArray(row.map(textSource))))],\n ]),\n ]);\n return jObject(fields);\n};\n\nconst chartSpec = (s: ChartSpec<unknown>): string => {\n // `stacked` (Phase 126) is now carried — previously dropped on the wire,\n // losing a chart's stacked-vs-grouped intent on every round-trip.\n const fields: Field[] = [\n ['kind', str(s.kind)],\n ['source', binding(s.source)],\n ['stacked', bool(s.stacked)],\n ['xField', str(s.xField)],\n ['yFields', jArray(s.yFields.map(str))],\n ];\n if (s.title !== undefined) fields.push(['title', textSource(s.title)]);\n if (s.onPointClick !== undefined) fields.push(['onPointClick', CLOSURE]);\n return jObject(fields);\n};\n\nconst mapMarker = (m: MapMarker): string =>\n jObject([\n ['label', textSource(m.label)],\n ['latitude', num(m.latitude)],\n ['longitude', num(m.longitude)],\n ]);\n\nconst mapSpec = (s: MapSpec<unknown>): string => {\n const fields: Field[] = [\n ['centreLatitude', num(s.centreLatitude)],\n ['centreLongitude', num(s.centreLongitude)],\n ['source', binding(s.source, staticMarkerSeq)],\n ['zoom', num(s.zoom)],\n ];\n if (s.onMarkerClick !== undefined) fields.push(['onMarkerClick', CLOSURE]);\n return jObject(fields);\n};\n\nconst visKind = (v: VisKind<unknown>): string => {\n switch (v.kind) {\n // In-memory tag stays 'Grid'; the wire discriminator is 'DataGrid' (the\n // data-bound grid) — globally unique vs the Layout 'GridLayout' so the\n // flat wire stays unambiguous (WIRE_FORMAT §3.2).\n case 'Grid':\n return hoistSpec('DataGrid', gridSpec(v.spec));\n case 'Chart':\n return hoistSpec('Chart', chartSpec(v.spec));\n case 'Map':\n return hoistSpec('Map', mapSpec(v.spec));\n default:\n return assertNever(v);\n }\n};\n\n// ─── Layout specs ────────────────────────────────────────────────────────────\n\n// Phase 390 — the unified Box container. Ordinal key order:\n// children < heading < layout < role. `layout` is a discriminated object\n// (Flex | Grid | Auto), `role` a string; `heading` emits only when set. Every\n// nested optional (gap / templateColumns) emits only when present, preserving\n// byte-identical encoding. Mirrors F# `layoutKindAppender`'s Box arm.\nconst boxLayout = (l: BoxLayout): string => {\n switch (l.kind) {\n case 'Flex': {\n // direction < gap < wrap\n const fields: Field[] = [['direction', str(l.direction)]];\n if (l.gap !== undefined) fields.push(['gap', intLit(l.gap)]);\n fields.push(['wrap', bool(l.wrap)]);\n return caseObj('Flex', fields);\n }\n case 'Grid': {\n // cols < gap < templateColumns\n const fields: Field[] = [['cols', intLit(l.cols)]];\n if (l.gap !== undefined) fields.push(['gap', intLit(l.gap)]);\n if (l.templateColumns !== undefined) fields.push(['templateColumns', str(l.templateColumns)]);\n return caseObj('Grid', fields);\n }\n case 'Auto':\n return caseObj('Auto', []);\n default:\n return assertNever(l);\n }\n};\n\nconst boxSpec = (s: BoxSpec<unknown>): string => {\n const fields: Field[] = [['children', jArray(s.children.map(node))]];\n if (s.heading !== undefined) fields.push(['heading', textSource(s.heading)]);\n fields.push(['layout', boxLayout(s.layout)]);\n fields.push(['role', str(s.role)]);\n return jObject(fields);\n};\n\nconst splitPanelSpec = (s: SplitPanelSpec<unknown>): string =>\n jObject([\n ['children', jArray(s.children.map(node))],\n ['weight', num(s.weight)],\n ]);\n\nconst tabHeader = (h: TabHeader): string => {\n const fields: Field[] = [['label', textSource(h.label)]];\n if (h.icon !== undefined) fields.push(['icon', str(h.icon)]);\n if (h.disabled !== undefined) fields.push(['disabled', binding(h.disabled)]);\n return jObject(fields);\n};\n\nconst tabsSpec = (s: TabsSpec<unknown>): string => {\n // `activeIndex` (Phase 126) is carried. `onSelect` / `onSelectTag` (Phase\n // 426): each rides the wire only when present — a defined closure → the\n // `\"<closure>\"` sentinel (byte-identical to the pre-426 always-emitted\n // `onSelect`); omitted, the renderer's ActiveIndex/ActiveTag write-back\n // default takes over.\n const fields: Field[] = [\n ['children', jArray(s.children.map(node))],\n // 0.2.0 omitted-when-default (`Horizontal`).\n ...(s.orientation === 'Horizontal' ? [] : ([['orientation', str(s.orientation)]] as const)),\n ['activeIndex', binding(s.activeIndex)],\n ];\n if (s.onSelect !== undefined) fields.push(['onSelect', CLOSURE]);\n if (s.tabHeaders !== undefined) fields.push(['tabHeaders', jArray(s.tabHeaders.map(tabHeader))]);\n if (s.tabTags !== undefined) fields.push(['tabTags', jArray(s.tabTags.map(str))]);\n if (s.activeTag !== undefined) fields.push(['activeTag', binding(s.activeTag)]);\n if (s.onSelectTag !== undefined) fields.push(['onSelectTag', CLOSURE]);\n return jObject(fields);\n};\n\n// `onSelect` is a closure → the `\"<closure>\"` sentinel (decodes to a no-op,\n// re-encodes to the same sentinel; byte-stable) — same treatment as Tabs\n// `onSelect` (Phase 126).\nconst stepperSpec = (s: StepperSpec<unknown>): string =>\n jObject([\n ['activeStep', binding(s.activeStep)],\n ['children', jArray(s.children.map(node))],\n ['onSelect', CLOSURE],\n ]);\n\nconst summaryListSpec = (s: SummaryListSpec<unknown>): string => {\n const fields: Field[] = [['children', jArray(s.children.map(node))]];\n if (s.heading !== undefined) fields.push(['heading', textSource(s.heading)]);\n return jObject(fields);\n};\n\nconst disclosureSpec = (s: DisclosureSpec<unknown>): string => {\n // `onToggle` (Phase 426): rides the wire only when present — a defined\n // closure → the `\"onToggle\":\"<closure>\"` sentinel (previously never encoded,\n // so every pre-426 fixture omits it and stays byte-identical); omitted, the\n // renderer's `open` write-back default takes over.\n const fields: Field[] = [\n ['children', jArray(s.children.map(node))],\n ['defaultOpen', bool(s.defaultOpen)],\n ['heading', textSource(s.heading)],\n ['open', binding(s.open)],\n ];\n if (s.onToggle !== undefined) fields.push(['onToggle', CLOSURE]);\n return jObject(fields);\n};\n\nconst modalSpec = (s: ModalSpec<unknown>): string => {\n // `onDismiss` is a full wire-survivable Action (encoded via the Action codec,\n // NOT a closure sentinel) — optional since Phase 426: omitted, a dismissable\n // modal falls to the `open` write-back default; `heading` omitted when\n // undefined.\n const fields: Field[] = [\n ['children', jArray(s.children.map(node))],\n ['dismissable', bool(s.dismissable)],\n ['open', binding(s.open)],\n ];\n if (s.onDismiss !== undefined) fields.push(['onDismiss', action(s.onDismiss)]);\n if (s.heading !== undefined) fields.push(['heading', textSource(s.heading)]);\n return jObject(fields);\n};\n\nconst scrollAreaSpec = (s: ScrollAreaSpec<unknown>): string => {\n const fields: Field[] = [\n ['children', jArray(s.children.map(node))],\n ['orientation', str(s.orientation)],\n ];\n if (s.maxHeight !== undefined) fields.push(['maxHeight', num(s.maxHeight)]);\n if (s.maxWidth !== undefined) fields.push(['maxWidth', num(s.maxWidth)]);\n return jObject(fields);\n};\n\nconst layoutKind = (l: LayoutKind<unknown>): string => {\n switch (l.kind) {\n // Phase 390 — the unified container. `Stack` / `GridLayout` / `Dashboard` /\n // `Card` all encode as `Box`; the role + layout mode carry what the retired\n // kinds encoded. A legacy tag never re-encodes to its old form.\n case 'Box':\n return hoistSpec('Box', boxSpec(l.spec));\n case 'SplitPanel':\n return hoistSpec('SplitPanel', splitPanelSpec(l.spec));\n case 'Tabs':\n return hoistSpec('Tabs', tabsSpec(l.spec));\n case 'Stepper':\n return hoistSpec('Stepper', stepperSpec(l.spec));\n case 'SummaryList':\n return hoistSpec('SummaryList', summaryListSpec(l.spec));\n case 'Disclosure':\n return hoistSpec('Disclosure', disclosureSpec(l.spec));\n case 'Modal':\n return hoistSpec('Modal', modalSpec(l.spec));\n case 'ScrollArea':\n return hoistSpec('ScrollArea', scrollAreaSpec(l.spec));\n default:\n return assertNever(l);\n }\n};\n\n// ─── Parameterised-fragment hole / effect / scalar emitters (Phase 180) ──────\n\nconst fragmentScalar = (s: FragmentScalar): string => {\n switch (s.kind) {\n case 'int':\n return caseObj('Int', [['value', String(s.value)]]);\n case 'float':\n return caseObj('Float', [['value', num(s.value)]]);\n case 'bool':\n return caseObj('Bool', [['value', bool(s.value)]]);\n case 'str':\n return caseObj('Str', [['value', str(s.value)]]);\n default:\n return assertNever(s);\n }\n};\n\nconst holeValueSpace = (s: HoleValueSpace): string => {\n switch (s.kind) {\n case 'IntRange':\n return caseObj('IntRange', [\n ['max', String(s.max)],\n ['min', String(s.min)],\n ]);\n case 'FloatRange':\n return caseObj('FloatRange', [\n ['max', num(s.max)],\n ['min', num(s.min)],\n ]);\n case 'StringLen':\n return caseObj('StringLen', [\n ['maxLen', String(s.maxLen)],\n ['minLen', String(s.minLen)],\n ]);\n case 'Enum':\n return caseObj('Enum', [['choices', jArray(s.choices.map(str))]]);\n case 'AnyString':\n return caseObj('AnyString', []);\n default:\n return assertNever(s);\n }\n};\n\nconst holeDecl = (h: HoleDecl): string => {\n switch (h.kind) {\n case 'Value': {\n const fields: Field[] = [\n ['name', str(h.name)],\n ['space', holeValueSpace(h.space)],\n ];\n if (h.default !== undefined) fields.push(['default', fragmentScalar(h.default)]);\n return caseObj('Value', fields);\n }\n case 'Slot': {\n const fields: Field[] = [['name', str(h.name)]];\n if (h.kindConstraint !== undefined) fields.push(['kindConstraint', str(h.kindConstraint)]);\n return caseObj('Slot', fields);\n }\n case 'Repeat':\n return caseObj('Repeat', [\n ['countSpace', holeValueSpace(h.countSpace)],\n ['name', str(h.name)],\n ]);\n default:\n return assertNever(h);\n }\n};\n\nconst effectClass = (e: EffectClass): string =>\n jObject([\n ['determinism', str(e.determinism)],\n ['hostEffect', str(e.hostEffect)],\n ]);\n\nconst isPureDeterministic = (e: EffectClass): boolean =>\n e.hostEffect === 'Pure' && e.determinism === 'Deterministic';\n\nconst fragmentArg = (a: FragmentArg<unknown>): string => {\n switch (a.kind) {\n case 'value':\n return fragmentScalar(a.value);\n case 'slot':\n return caseObj('SlotArg', [['tree', node(a.tree)]]);\n default:\n return assertNever(a);\n }\n};\n\n// ─── NodeKind / Node / StateBehaviour / Style / Accessibility ────────────────\n\nconst nodeKind = (k: NodeKind<unknown>): string => {\n switch (k.kind) {\n // The four behavioural categories are flat on the wire (WIRE_FORMAT §3.2):\n // emit the inner kind directly into the `kind` slot with no category\n // envelope. The category is a host-side classification, not a wire level.\n case 'Layout':\n return layoutKind(k.layout);\n case 'Display':\n return displayKind(k.display);\n case 'Input':\n return inputKind(k.input);\n case 'Visualisation':\n return visKind(k.visualisation);\n case 'Custom': {\n // Phase 70 arm: contentHash + exposedNodeIds emit only when populated\n // (None / [] omitted), matching the F# encoder — so a Custom with no\n // exposed ids encodes without the key.\n const fields: Field[] = [\n ['componentId', str(k.componentId)],\n ['moduleId', str(k.moduleId)],\n ['props', jsonMap(k.props)],\n ];\n if (k.contentHash !== undefined) {\n fields.push([\n 'contentHash',\n jObject([\n ['algorithm', str(k.contentHash.algorithm)],\n ['hash', str(k.contentHash.hash)],\n ['strictness', str(k.contentHash.strictness)],\n ]),\n ]);\n }\n if (k.exposedNodeIds.length > 0) {\n fields.push(['exposedNodeIds', jArray(k.exposedNodeIds.map(str))]);\n }\n return caseObj('Custom', fields);\n }\n case 'ErrorBoundary':\n return caseObj('ErrorBoundary', [\n ['child', node(k.spec.child)],\n ['fallback', node(k.spec.fallback)],\n ]);\n case 'Switch':\n // State-bound conditional child (Phase 392). Each case encodes as a\n // `{child,match}` object (keys sort child < match); the whole kind's keys\n // sort cases < default < stateKey. jObject sorts, so the listed order is\n // cosmetic.\n return caseObj('Switch', [\n [\n 'cases',\n jArray(\n k.spec.cases.map((c) =>\n jObject([\n ['child', node(c.child)],\n ['match', str(c.match)],\n ]),\n ),\n ),\n ],\n ['default', node(k.spec.default)],\n ['stateKey', str(k.spec.stateKey)],\n ]);\n case 'FragmentDecl': {\n // Phase 180 — `holes` / `effect` additive; omitted at the degenerate\n // (zero-hole, pure-deterministic) case so the fixed-body shape is\n // byte-identical.\n const fields: Field[] = [\n ['body', node(k.spec.body)],\n ['name', str(k.spec.name)],\n ];\n if (k.spec.holes.length > 0) fields.push(['holes', jArray(k.spec.holes.map(holeDecl))]);\n if (!isPureDeterministic(k.spec.effect)) fields.push(['effect', effectClass(k.spec.effect)]);\n return caseObj('FragmentDecl', fields);\n }\n case 'FragmentRef': {\n // Phase 180 — `args` additive; omitted at the zero-arg case.\n const fields: Field[] = [['name', str(k.spec.name)]];\n const argKeys = Object.keys(k.spec.args);\n if (argKeys.length > 0)\n fields.push([\n 'args',\n jObject(argKeys.map((key) => [key, fragmentArg(k.spec.args[key]!)] as const)),\n ]);\n return caseObj('FragmentRef', fields);\n }\n case 'Mount': {\n // Phase 265, §4o — the isolation/embedding boundary. `scopeId` + `channel`\n // + `capabilities` + the `onBubble` closure sentinel always present;\n // `inputs` additive (omitted when empty, reusing the FragmentArg encoding).\n // `capabilities` always emits (even `[]`) — the explicit visible\n // default-deny posture. Mirrors the F# CanonicalJson Mount arm.\n const s = k.spec;\n const channelFields: Field[] = [['direction', str(s.channel.direction)]];\n if (s.channel.messageShape !== undefined)\n channelFields.push(['messageShape', str(s.channel.messageShape)]);\n const fields: Field[] = [\n ['capabilities', jArray(s.capabilities.map(str))],\n ['channel', jObject(channelFields)],\n ['onBubble', CLOSURE],\n ['scopeId', str(s.scopeId)],\n ];\n const inputKeys = Object.keys(s.inputs);\n if (inputKeys.length > 0)\n fields.push([\n 'inputs',\n jObject(inputKeys.map((key) => [key, fragmentArg(s.inputs[key]!)] as const)),\n ]);\n return caseObj('Mount', fields);\n }\n default:\n return assertNever(k);\n }\n};\n\nconst stateBehaviour = (s: StateBehaviour<unknown>): string => {\n const fields: Field[] = [];\n if (s.onLoading !== undefined) fields.push(['onLoading', node(s.onLoading)]);\n if (s.onEmpty !== undefined) fields.push(['onEmpty', node(s.onEmpty)]);\n if (s.onError !== undefined) fields.push(['onError', CLOSURE]);\n return jObject(fields);\n};\n\nconst semanticStyle = (s: SemanticStyle): string => {\n // Every field is emitted only when non-default: `role`/`voice` since Phase 147,\n // and `emphasis`/`tone`/`weight` since Phase 460, so a style object authored\n // before a field existed round-trips byte-identically and an all-default style\n // encodes as `{}`. Per the wire contract an absent field IS the default, so\n // `undefined` (a loosely-typed object literal lacking the key) is treated as the\n // default and omitted — symmetric with the decoder's `?? default` on absence.\n // `jObject` sorts keys, so order is irrelevant.\n const fields: Field[] = [];\n if (s.emphasis !== undefined && s.emphasis !== 'Normal')\n fields.push(['emphasis', str(s.emphasis)]);\n if (s.tone !== undefined && s.tone !== 'Default') fields.push(['tone', str(s.tone)]);\n if (s.weight !== undefined && s.weight !== 'Standard') fields.push(['weight', str(s.weight)]);\n if (s.role !== undefined && s.role !== 'None') fields.push(['role', str(s.role)]);\n if (s.voice !== undefined && s.voice !== 'Default') fields.push(['voice', str(s.voice)]);\n return jObject(fields);\n};\n\nconst accessibility = (a: Accessibility): string => {\n const fields: Field[] = [];\n if (a.label !== undefined) fields.push(['label', binding(a.label)]);\n if (a.labelledBy !== undefined) fields.push(['labelledBy', str(a.labelledBy)]);\n if (a.describedBy !== undefined) fields.push(['describedBy', str(a.describedBy)]);\n if (a.role !== undefined) fields.push(['role', str(a.role)]);\n if (a.liveRegion !== undefined) fields.push(['liveRegion', str(a.liveRegion)]);\n if (a.hidden !== undefined) fields.push(['hidden', binding(a.hidden)]);\n return jObject(fields);\n};\n\n/** All-empty StateBehaviour (no onLoading / onEmpty / onError) — port of F# `isEmptyState`. */\nconst isEmptyState = (s: StateBehaviour<unknown>): boolean =>\n s.onLoading === undefined && s.onEmpty === undefined && s.onError === undefined;\n\n/** All-default SemanticStyle (Normal / Default / Standard / None / Default) — port of F# `isDefaultStyle`.\n * An absent role/voice (undefined) is the default per the wire contract. */\nconst isDefaultStyle = (s: SemanticStyle): boolean =>\n (s.emphasis === undefined || s.emphasis === 'Normal') &&\n (s.tone === undefined || s.tone === 'Default') &&\n (s.weight === undefined || s.weight === 'Standard') &&\n (s.role === undefined || s.role === 'None') &&\n (s.voice === undefined || s.voice === 'Default');\n\nconst node = (n: Node<unknown>): string => {\n const fields: Field[] = [\n ['id', str(n.id)],\n ['kind', nodeKind(n.kind)],\n ];\n // `state` / `style` are omitted when empty / all-default — the common case\n // (WIRE_FORMAT.md §3.1). The decoder restores the default on absence.\n if (!isEmptyState(n.state)) fields.push(['state', stateBehaviour(n.state)]);\n if (!isDefaultStyle(n.style)) fields.push(['style', semanticStyle(n.style)]);\n if (n.accessibility !== undefined) fields.push(['accessibility', accessibility(n.accessibility)]);\n return jObject(fields);\n};\n\n// ─── TreeOp ──────────────────────────────────────────────────────────────────\n\nconst treeOp = (op: TreeOp<unknown>): string => {\n switch (op.kind) {\n case 'EditNode':\n return caseObj('EditNode', [\n ['newKind', nodeKind(op.newKind)],\n ['target', str(op.target)],\n ]);\n case 'UpdateProp':\n return caseObj('UpdateProp', [\n ['path', str(op.path)],\n ['target', str(op.target)],\n ['value', jsonValue(op.value)],\n ]);\n case 'ReplaceBinding':\n return caseObj('ReplaceBinding', [\n ['binding', binding(op.binding)],\n ['slot', str(op.slot)],\n ['target', str(op.target)],\n ]);\n case 'UpdateStyle':\n return caseObj('UpdateStyle', [\n ['style', semanticStyle(op.style)],\n ['target', str(op.target)],\n ]);\n case 'UpdateState':\n return caseObj('UpdateState', [\n ['state', stateBehaviour(op.state)],\n ['target', str(op.target)],\n ]);\n case 'InsertChild':\n return caseObj('InsertChild', [\n ['child', node(op.child)],\n ['parentId', str(op.parentId)],\n ]);\n case 'RemoveNode':\n return caseObj('RemoveNode', [['target', str(op.target)]]);\n case 'MoveNode':\n return caseObj('MoveNode', [\n ['newParentId', str(op.newParentId)],\n ['target', str(op.target)],\n ]);\n case 'ReorderChildren':\n return caseObj('ReorderChildren', [\n ['newOrder', jArray(op.newOrder.map(str))],\n ['parentId', str(op.parentId)],\n ]);\n case 'ReplaceRoot':\n return caseObj('ReplaceRoot', [['node', node(op.node)]]);\n case 'Batch':\n return caseObj('Batch', [['ops', jArray(op.ops.map(treeOp))]]);\n default:\n return assertNever(op);\n }\n};\n\n// ─── Public surface ──────────────────────────────────────────────────────────\n\n/** Encode a `Node<TMsg>` to its canonical-JSON string (WIRE_FORMAT.md). */\nexport const encodeNode = <TMsg>(n: Node<TMsg>): string => node(n as Node<unknown>);\n\n/** Encode a `TreeOp<TMsg>` to its canonical-JSON string (WIRE_FORMAT.md). */\nexport const encodeOp = <TMsg>(op: TreeOp<TMsg>): string => treeOp(op as TreeOp<unknown>);\n","// ============================================================================\n// @fuaran-ui/ops — the native-JS columnar dataframe evaluator (Phase 284).\n//\n// A faithful port of the `Fuaran.Core.DataFrame` reference evaluator: a pure\n// fold over the columnar model that runs a serialisable `Transform` pipeline\n// client-side **as data** (no Pyodide). The pinned semantics — null/NA\n// propagation, int↔float coercion, group/sort stability, round-half-away,\n// division-by-zero, the canonical float layout — match the reference exactly, so\n// the evaluator's output `Table` is byte-identical to the reference's under the\n// shared `Canon` codec (`encodeDataSource` ∘ Embedded — the §11.1 parity\n// contract `Conformance.transformLaws` enforces across hosts).\n//\n// Total: every recoverable failure is an `EvalError`, never a throw.\n// ============================================================================\n\nimport type {\n Agg,\n AggFn,\n Cell,\n ColExpr,\n ColumnType,\n DataColumn,\n DataSource,\n EvalError,\n SchemaEntry,\n SortKey,\n Table,\n Transform,\n} from '@fuaran-ui/schema';\nimport type { Result } from '@fuaran-ui/schema';\n\nimport { num } from './encode.js';\n\ntype DR<T> = Result<T, EvalError>;\nconst dok = <T>(value: T): DR<T> => ({ ok: true, value });\nconst derr = (error: EvalError): DR<never> => ({ ok: false, error });\n\nconst unknownColumn = (name: string, available: readonly string[]): EvalError => ({\n kind: 'UnknownColumn',\n name,\n available,\n});\nconst typeError = (detail: string): EvalError => ({ kind: 'TypeError', detail });\nconst unboundParam = (name: string, bound: readonly string[]): EvalError => ({\n kind: 'UnboundParam',\n name,\n bound,\n});\nconst arityError = (fn: string, expected: number, got: number): EvalError => ({\n kind: 'ArityError',\n fn,\n expected,\n got,\n});\n\n// ─── internal row-oriented frame (the evaluator's working form) ──────────────\n\ninterface Frame {\n readonly cols: readonly SchemaEntry[];\n readonly rows: readonly (readonly Cell[])[];\n}\n\nconst NULL: Cell = { kind: 'Null' };\n\nconst isNull = (c: Cell): boolean => c.kind === 'Null';\n\nconst rowCount = (t: Table): number => (t.columns.length > 0 ? t.columns[0]!.cells.length : 0);\n\nconst toFrame = (t: Table): Frame => {\n const n = rowCount(t);\n const byName = new Map(t.columns.map((c) => [c.name, c] as const));\n const rows: Cell[][] = [];\n for (let i = 0; i < n; i += 1) {\n rows.push(\n t.schema.map((e) => {\n const c = byName.get(e.name);\n return c !== undefined && i >= 0 && i < c.cells.length ? c.cells[i]! : NULL;\n }),\n );\n }\n return { cols: t.schema, rows };\n};\n\nconst ofFrame = (f: Frame): Table => {\n const columns: DataColumn[] = f.cols.map((e, ci) => ({\n name: e.name,\n type: e.type,\n cells: f.rows.map((row) => row[ci]!),\n }));\n return { schema: f.cols, columns };\n};\n\nconst colIndex = (cols: readonly SchemaEntry[], name: string): number =>\n cols.findIndex((e) => e.name === name);\n\nconst colType = (cols: readonly SchemaEntry[], name: string): ColumnType | undefined =>\n cols.find((e) => e.name === name)?.type;\n\nconst available = (cols: readonly SchemaEntry[]): string[] => cols.map((e) => e.name);\n\n// ─── pinned scalar semantics ─────────────────────────────────────────────────\n\n/** The canonical string of a cell (float via the shared `Canon` layout). */\nexport const cellString = (c: Cell): string => {\n switch (c.kind) {\n case 'Int':\n return String(Math.trunc(c.value));\n case 'Float':\n return num(c.value);\n case 'Bool':\n return c.value ? 'true' : 'false';\n case 'Str':\n case 'Date':\n case 'Timestamp':\n return c.value;\n case 'Null':\n return '';\n }\n};\n\nconst asNum = (c: Cell): number | undefined =>\n c.kind === 'Int' || c.kind === 'Float' ? c.value : undefined;\n\nconst sign = (n: number): number => (n < 0 ? -1 : n > 0 ? 1 : 0);\n\n/** Total comparison of two present, same-family cells. `undefined` ⇒ incomparable. */\nconst compareCells = (a: Cell, b: Cell): number | undefined => {\n const an = asNum(a);\n const bn = asNum(b);\n if (an !== undefined && bn !== undefined) return sign(an - bn);\n if (a.kind === 'Bool' && b.kind === 'Bool') return a.value === b.value ? 0 : a.value ? 1 : -1;\n if (a.kind === 'Str' && b.kind === 'Str')\n return a.value < b.value ? -1 : a.value > b.value ? 1 : 0;\n if (a.kind === 'Date' && b.kind === 'Date')\n return a.value < b.value ? -1 : a.value > b.value ? 1 : 0;\n if (a.kind === 'Timestamp' && b.kind === 'Timestamp')\n return a.value < b.value ? -1 : a.value > b.value ? 1 : 0;\n return undefined;\n};\n\nconst cellEq = (a: Cell, b: Cell): boolean => {\n if (a.kind === 'Null' || b.kind === 'Null') return false;\n return compareCells(a, b) === 0;\n};\n\nconst bothInt = (a: Cell, b: Cell): boolean => a.kind === 'Int' && b.kind === 'Int';\n\nconst arith = (op: string, a: Cell, b: Cell): DR<Cell> => {\n if (a.kind === 'Null' || b.kind === 'Null') return dok(NULL);\n const x = asNum(a);\n const y = asNum(b);\n if (x === undefined || y === undefined)\n return derr(typeError('arithmetic on a non-numeric operand'));\n const bi = bothInt(a, b);\n switch (op) {\n case 'add':\n return dok(\n bi\n ? { kind: 'Int', value: Math.trunc(x) + Math.trunc(y) }\n : { kind: 'Float', value: x + y },\n );\n case 'sub':\n return dok(\n bi\n ? { kind: 'Int', value: Math.trunc(x) - Math.trunc(y) }\n : { kind: 'Float', value: x - y },\n );\n case 'mul':\n return dok(\n bi\n ? { kind: 'Int', value: Math.trunc(x) * Math.trunc(y) }\n : { kind: 'Float', value: x * y },\n );\n case 'div':\n return dok(y === 0 ? NULL : { kind: 'Float', value: x / y });\n case 'mod':\n if (!bi) return derr(typeError('mod requires integer operands'));\n if (Math.trunc(y) === 0) return dok(NULL);\n return dok({ kind: 'Int', value: Math.trunc(x) % Math.trunc(y) });\n default:\n return derr(typeError('not an arithmetic operator'));\n }\n};\n\nconst comparison = (op: string, a: Cell, b: Cell): DR<Cell> => {\n if (a.kind === 'Null' || b.kind === 'Null') return dok(NULL);\n const c = compareCells(a, b);\n if (c === undefined) return derr(typeError('comparison between incompatible types'));\n let r: boolean;\n switch (op) {\n case 'eq':\n r = c === 0;\n break;\n case 'ne':\n r = c !== 0;\n break;\n case 'lt':\n r = c < 0;\n break;\n case 'le':\n r = c <= 0;\n break;\n case 'gt':\n r = c > 0;\n break;\n case 'ge':\n r = c >= 0;\n break;\n default:\n r = false;\n }\n return dok({ kind: 'Bool', value: r });\n};\n\n/** Kleene three-valued AND/OR over Bool/Null operands. */\nconst logical = (op: string, a: Cell, b: Cell): DR<Cell> => {\n const asBool = (c: Cell): DR<boolean | undefined> => {\n if (c.kind === 'Bool') return dok(c.value);\n if (c.kind === 'Null') return dok(undefined);\n return derr(typeError('logical operator on a non-bool operand'));\n };\n const x = asBool(a);\n if (!x.ok) return x;\n const y = asBool(b);\n if (!y.ok) return y;\n const xv = x.value;\n const yv = y.value;\n if (op === 'and') {\n if (xv === false || yv === false) return dok({ kind: 'Bool', value: false });\n if (xv === true && yv === true) return dok({ kind: 'Bool', value: true });\n return dok(NULL);\n }\n if (op === 'or') {\n if (xv === true || yv === true) return dok({ kind: 'Bool', value: true });\n if (xv === false && yv === false) return dok({ kind: 'Bool', value: false });\n return dok(NULL);\n }\n return derr(typeError('not a logical operator'));\n};\n\n// .NET Double.TryParse(NumberStyles.Float, InvariantCulture) — leading/trailing\n// whitespace + sign + decimal + exponent. JS Number over a trimmed, regex-gated\n// string approximates it without accepting hex / Infinity literals .NET rejects.\nconst FLOAT_RE = /^[+-]?(\\d+\\.?\\d*|\\.\\d+)([eE][+-]?\\d+)?$/;\nconst tryParseFloat = (s: string): number | undefined => {\n const t = s.trim();\n if (!FLOAT_RE.test(t)) return undefined;\n const n = Number(t);\n return Number.isFinite(n) ? n : undefined;\n};\nconst INT_RE = /^[+-]?\\d+$/;\nconst tryParseInt = (s: string): number | undefined => {\n const t = s.trim();\n return INT_RE.test(t) ? parseInt(t, 10) : undefined;\n};\n\nconst castCell = (ty: ColumnType, c: Cell): DR<Cell> => {\n if (c.kind === 'Null') return dok(NULL);\n switch (ty) {\n case 'string':\n return dok({ kind: 'Str', value: cellString(c) });\n case 'float': {\n const n = asNum(c);\n if (n !== undefined) return dok({ kind: 'Float', value: n });\n if (c.kind === 'Str') {\n const p = tryParseFloat(c.value);\n return p !== undefined\n ? dok({ kind: 'Float', value: p })\n : derr(typeError(\"cannot cast '\" + c.value + \"' to float\"));\n }\n return derr(typeError('cannot cast to float'));\n }\n case 'int':\n if (c.kind === 'Int') return dok(c);\n if (c.kind === 'Float') return dok({ kind: 'Int', value: Math.trunc(c.value) });\n if (c.kind === 'Bool') return dok({ kind: 'Int', value: c.value ? 1 : 0 });\n if (c.kind === 'Str') {\n const p = tryParseInt(c.value);\n return p !== undefined\n ? dok({ kind: 'Int', value: p })\n : derr(typeError(\"cannot cast '\" + c.value + \"' to int\"));\n }\n return derr(typeError('cannot cast to int'));\n case 'bool':\n if (c.kind === 'Bool') return dok(c);\n if (c.kind === 'Int') return dok({ kind: 'Bool', value: c.value !== 0 });\n return derr(typeError('cannot cast to bool'));\n case 'date':\n if (c.kind === 'Date') return dok(c);\n if (c.kind === 'Str') return dok({ kind: 'Date', value: c.value });\n return derr(typeError('cannot cast to date'));\n case 'timestamp':\n if (c.kind === 'Timestamp') return dok(c);\n if (c.kind === 'Str') return dok({ kind: 'Timestamp', value: c.value });\n return derr(typeError('cannot cast to timestamp'));\n }\n};\n\n/** Round half away from zero — host-independent (not banker's rounding). */\nconst roundHalfAway = (x: number): number => (x >= 0 ? Math.floor(x + 0.5) : Math.ceil(x - 0.5));\n\nconst applyScalar = (fn: string, args: readonly Cell[]): DR<Cell> => {\n const arity = (n: number): DR<undefined> =>\n args.length === n ? dok(undefined) : derr(arityError(fn, n, args.length));\n const unary = (g: (c: Cell) => DR<Cell>): DR<Cell> => {\n const a = arity(1);\n if (!a.ok) return a;\n const c = args[0]!;\n return c.kind === 'Null' ? dok(NULL) : g(c);\n };\n switch (fn) {\n case 'abs':\n return unary((c) =>\n c.kind === 'Int'\n ? dok({ kind: 'Int', value: Math.abs(c.value) })\n : c.kind === 'Float'\n ? dok({ kind: 'Float', value: Math.abs(c.value) })\n : derr(typeError('abs of a non-numeric')),\n );\n case 'round':\n return unary((c) => {\n const n = asNum(c);\n return n !== undefined\n ? dok({ kind: 'Float', value: roundHalfAway(n) })\n : derr(typeError('round of a non-numeric'));\n });\n case 'floor':\n return unary((c) => {\n const n = asNum(c);\n return n !== undefined\n ? dok({ kind: 'Float', value: Math.floor(n) })\n : derr(typeError('floor of a non-numeric'));\n });\n case 'ceil':\n return unary((c) => {\n const n = asNum(c);\n return n !== undefined\n ? dok({ kind: 'Float', value: Math.ceil(n) })\n : derr(typeError('ceil of a non-numeric'));\n });\n case 'length':\n return unary((c) =>\n c.kind === 'Str'\n ? dok({ kind: 'Int', value: c.value.length })\n : derr(typeError('length of a non-string')),\n );\n case 'lower':\n return unary((c) =>\n c.kind === 'Str'\n ? dok({ kind: 'Str', value: c.value.toLowerCase() })\n : derr(typeError('lower of a non-string')),\n );\n case 'upper':\n return unary((c) =>\n c.kind === 'Str'\n ? dok({ kind: 'Str', value: c.value.toUpperCase() })\n : derr(typeError('upper of a non-string')),\n );\n case 'substr': {\n const a = arity(3);\n if (!a.ok) return a;\n const s = args[0]!;\n const start = args[1]!;\n const len = args[2]!;\n if (s.kind === 'Null') return dok(NULL);\n if (s.kind === 'Str' && start.kind === 'Int' && len.kind === 'Int') {\n let st = Math.max(0, start.value);\n st = Math.min(st, s.value.length);\n const ln = Math.max(0, Math.min(len.value, s.value.length - st));\n return dok({ kind: 'Str', value: s.value.substring(st, st + ln) });\n }\n return derr(typeError('substr expects (string, int, int)'));\n }\n case 'datePart': {\n const a = arity(2);\n if (!a.ok) return a;\n const part = args[0]!;\n const date = args[1]!;\n if (date.kind === 'Null') return dok(NULL);\n if (\n part.kind === 'Str' &&\n (date.kind === 'Date' || date.kind === 'Timestamp' || date.kind === 'Str')\n ) {\n const s = date.value;\n const slice = (lo: number, len: number): DR<Cell> => {\n if (s.length >= lo + len) {\n const v = tryParseInt(s.substring(lo, lo + len));\n return v !== undefined\n ? dok({ kind: 'Int', value: v })\n : derr(typeError(\"datePart: unparseable component in '\" + s + \"'\"));\n }\n return derr(typeError(\"datePart: '\" + s + \"' too short for \" + part.value));\n };\n switch (part.value) {\n case 'year':\n return slice(0, 4);\n case 'month':\n return slice(5, 2);\n case 'day':\n return slice(8, 2);\n default:\n return derr(typeError(\"datePart: unknown part '\" + part.value + \"'\"));\n }\n }\n return derr(typeError('datePart expects (string part, date/timestamp/string)'));\n }\n case 'concat': {\n // fuaran-core#90 — variadic; any null arg propagates (compose coalesce for treat-as-empty).\n // Non-string args stringify via the SAME rendering as a cast to string — no cast noise.\n if (args.length === 0) return derr(arityError(fn, 1, 0));\n if (args.some((c) => c.kind === 'Null')) return dok(NULL);\n return dok({ kind: 'Str', value: args.map(cellString).join('') });\n }\n case 'trim':\n return unary((c) =>\n c.kind === 'Str'\n ? // Pinned ASCII set (space/tab/CR/LF) — NOT the host's Unicode trim (parity pin).\n dok({ kind: 'Str', value: c.value.replace(/^[ \\t\\r\\n]+|[ \\t\\r\\n]+$/g, '') })\n : derr(typeError('trim of a non-string')),\n );\n case 'replace': {\n const a = arity(3);\n if (!a.ok) return a;\n const subj = args[0]!;\n const find = args[1]!;\n const repl = args[2]!;\n if (subj.kind === 'Null' || find.kind === 'Null' || repl.kind === 'Null') return dok(NULL);\n if (subj.kind === 'Str' && find.kind === 'Str' && repl.kind === 'Str') {\n // Pinned: empty `find` returns the subject unchanged.\n if (find.value === '') return dok(subj);\n return dok({ kind: 'Str', value: subj.value.split(find.value).join(repl.value) });\n }\n return derr(typeError('replace expects (string, string, string)'));\n }\n case 'dateDiffDays': {\n const a = arity(2);\n if (!a.ok) return a;\n const from = args[0]!;\n const to = args[1]!;\n if (from.kind === 'Null' || to.kind === 'Null') return dok(NULL);\n const da = civilDays(from);\n if (!da.ok) return da;\n const db = civilDays(to);\n if (!db.ok) return db;\n return dok({ kind: 'Int', value: db.value - da.value });\n }\n default:\n return derr(typeError(\"unknown scalar function '\" + fn + \"'\"));\n }\n};\n\nconst ARITH_OPS = new Set(['add', 'sub', 'mul', 'div', 'mod']);\nconst CMP_OPS = new Set(['eq', 'ne', 'lt', 'le', 'gt', 'ge']);\nconst STR_OPS = new Set(['contains', 'startsWith', 'endsWith']);\n\n/**\n * Ordinal substring predicates (fuaran-core#90). Null propagates (matching `comparison`); a\n * non-string operand is a typed error. JS string methods are code-unit-wise over UTF-16 —\n * exactly the reference evaluator's Ordinal pin.\n */\nconst stringPred = (op: string, a: Cell, b: Cell): DR<Cell> => {\n if (a.kind === 'Null' || b.kind === 'Null') return dok(NULL);\n if (a.kind === 'Str' && b.kind === 'Str') {\n const r =\n op === 'contains'\n ? a.value.includes(b.value)\n : op === 'startsWith'\n ? a.value.startsWith(b.value)\n : a.value.endsWith(b.value);\n return dok({ kind: 'Bool', value: r });\n }\n return derr(typeError('string predicate on a non-string operand'));\n};\n\n/**\n * Days since 1970-01-01 for the first 10 chars (`YYYY-MM-DD`) of a date-like cell —\n * days-from-civil as pure integer math (fuaran-core#90, `dateDiffDays`). No host date library.\n */\nconst civilDays = (c: Cell): DR<number> => {\n if (c.kind === 'Date' || c.kind === 'Timestamp' || c.kind === 'Str') {\n const s = c.value;\n const bad = (): DR<number> =>\n derr(typeError(\"dateDiffDays: '\" + s + \"' is not YYYY-MM-DD[...]\"));\n if (s.length < 10 || s[4] !== '-' || s[7] !== '-') return bad();\n const y0 = tryParseInt(s.substring(0, 4));\n const m0 = tryParseInt(s.substring(5, 7));\n const d0 = tryParseInt(s.substring(8, 10));\n if (y0 === undefined || m0 === undefined || d0 === undefined) return bad();\n const y = m0 <= 2 ? y0 - 1 : y0;\n const era = Math.trunc((y >= 0 ? y : y - 399) / 400);\n const yoe = y - era * 400;\n const mp = (m0 + 9) % 12;\n const doy = Math.trunc((153 * mp + 2) / 5) + d0 - 1;\n const doe = yoe * 365 + Math.trunc(yoe / 4) - Math.trunc(yoe / 100) + doy;\n return dok(era * 146097 + doe - 719468);\n }\n return derr(typeError('dateDiffDays expects date/timestamp/string operands'));\n};\n\n/** Evaluate a `ColExpr` against one row. */\n/** The evaluation environment (fuaran-core#77) — binds each `ColExpr.param` name to a `Cell`. */\nexport type EvalEnv = Readonly<Record<string, Cell>>;\nconst EMPTY_ENV: EvalEnv = {};\n\nconst evalExpr = (\n cols: readonly SchemaEntry[],\n row: readonly Cell[],\n e: ColExpr,\n env: EvalEnv = EMPTY_ENV,\n): DR<Cell> => {\n switch (e.kind) {\n case 'col': {\n const i = colIndex(cols, e.name);\n return i >= 0 ? dok(row[i]!) : derr(unknownColumn(e.name, available(cols)));\n }\n case 'lit':\n return dok(e.cell);\n case 'param': {\n // fuaran-core#77 — resolve a named param from the env; a miss is a strict `UnboundParam`.\n const c = Object.prototype.hasOwnProperty.call(env, e.name) ? env[e.name] : undefined;\n return c !== undefined ? dok(c) : derr(unboundParam(e.name, Object.keys(env).sort()));\n }\n case 'binary': {\n const a = evalExpr(cols, row, e.left, env);\n if (!a.ok) return a;\n const b = evalExpr(cols, row, e.right, env);\n if (!b.ok) return b;\n if (ARITH_OPS.has(e.op)) return arith(e.op, a.value, b.value);\n if (CMP_OPS.has(e.op)) return comparison(e.op, a.value, b.value);\n if (STR_OPS.has(e.op)) return stringPred(e.op, a.value, b.value);\n return logical(e.op, a.value, b.value);\n }\n case 'not': {\n const inner = evalExpr(cols, row, e.expr, env);\n if (!inner.ok) return inner;\n const c = inner.value;\n if (c.kind === 'Bool') return dok({ kind: 'Bool', value: !c.value });\n if (c.kind === 'Null') return dok(NULL);\n return derr(typeError('not of a non-bool'));\n }\n case 'coalesce': {\n for (const x of e.exprs) {\n const r = evalExpr(cols, row, x, env);\n if (!r.ok) return r;\n if (r.value.kind !== 'Null') return dok(r.value);\n }\n return dok(NULL);\n }\n case 'case': {\n for (const br of e.cases) {\n const w = evalExpr(cols, row, br.when, env);\n if (!w.ok) return w;\n if (w.value.kind === 'Bool' && w.value.value) return evalExpr(cols, row, br.then, env);\n }\n return evalExpr(cols, row, e.else, env);\n }\n case 'cast': {\n const inner = evalExpr(cols, row, e.expr, env);\n return inner.ok ? castCell(e.type, inner.value) : inner;\n }\n case 'apply': {\n const vals: Cell[] = [];\n for (const a of e.args) {\n const r = evalExpr(cols, row, a, env);\n if (!r.ok) return r;\n vals.push(r.value);\n }\n return applyScalar(e.fn, vals);\n }\n case 'in': {\n // fuaran-core#90 — SQL three-valued membership: null subject => null; any equal item =>\n // true; no match having seen a null item => null; else false.\n const sv = evalExpr(cols, row, e.expr, env);\n if (!sv.ok) return sv;\n if (sv.value.kind === 'Null') return dok(NULL);\n let sawNull = false;\n for (const it of e.items) {\n const iv = evalExpr(cols, row, it, env);\n if (!iv.ok) return iv;\n if (iv.value.kind === 'Null') {\n sawNull = true;\n continue;\n }\n const c = compareCells(sv.value, iv.value);\n if (c === undefined) return derr(typeError('in: comparison between incompatible types'));\n if (c === 0) return dok({ kind: 'Bool', value: true });\n }\n return sawNull ? dok(NULL) : dok({ kind: 'Bool', value: false });\n }\n case 'isNull': {\n // fuaran-core#90 — total: always Bool, never null.\n const inner = evalExpr(cols, row, e.expr, env);\n return inner.ok ? dok({ kind: 'Bool', value: inner.value.kind === 'Null' }) : inner;\n }\n case 'inParam':\n // fuaran-core#91 — list params resolve by substitution BEFORE evaluation; one that\n // reaches the evaluator is unbound (scalar-param strictness parity).\n return derr(unboundParam(e.param, Object.keys(env).sort()));\n }\n};\n\n// ─── type inference for derived/melted columns ───────────────────────────────\n\nconst cellTypeOf = (c: Cell): ColumnType | undefined => {\n switch (c.kind) {\n case 'Int':\n return 'int';\n case 'Float':\n return 'float';\n case 'Bool':\n return 'bool';\n case 'Str':\n return 'string';\n case 'Date':\n return 'date';\n case 'Timestamp':\n return 'timestamp';\n case 'Null':\n return undefined;\n }\n};\n\nconst inferType = (cells: readonly Cell[]): ColumnType => {\n for (const c of cells) {\n const t = cellTypeOf(c);\n if (t !== undefined) return t;\n }\n return 'string';\n};\n\n// ─── aggregates (pinned) ─────────────────────────────────────────────────────\n\nconst presentNums = (cells: readonly Cell[]): number[] =>\n cells.map(asNum).filter((n): n is number => n !== undefined);\n\nconst aggCells = (fn: AggFn, srcType: ColumnType, cells: readonly Cell[]): Cell => {\n const present = cells.filter((c) => !isNull(c));\n switch (fn) {\n case 'count':\n return { kind: 'Int', value: present.length };\n case 'first':\n return cells.length === 0 ? NULL : cells[0]!;\n case 'last':\n return cells.length === 0 ? NULL : cells[cells.length - 1]!;\n case 'sum': {\n const nums = presentNums(cells);\n if (nums.length === 0) return NULL;\n return srcType === 'int'\n ? { kind: 'Int', value: nums.reduce((acc, x) => acc + Math.trunc(x), 0) }\n : { kind: 'Float', value: nums.reduce((acc, x) => acc + x, 0) };\n }\n case 'mean': {\n const nums = presentNums(cells);\n if (nums.length === 0) return NULL;\n return { kind: 'Float', value: nums.reduce((a, x) => a + x, 0) / nums.length };\n }\n case 'stddev': {\n const nums = presentNums(cells);\n if (nums.length === 0) return NULL;\n const n = nums.length;\n const mean = nums.reduce((a, x) => a + x, 0) / n;\n const variance = nums.reduce((a, x) => a + (x - mean) * (x - mean), 0) / n;\n return { kind: 'Float', value: Math.sqrt(variance) };\n }\n case 'median': {\n const nums = presentNums(cells)\n .slice()\n .sort((a, b) => a - b);\n if (nums.length === 0) return NULL;\n const n = nums.length;\n const mid = Math.floor(n / 2);\n if (n % 2 === 1) return { kind: 'Float', value: nums[mid]! };\n return { kind: 'Float', value: (nums[mid - 1]! + nums[mid]!) / 2 };\n }\n case 'min':\n case 'max': {\n if (present.length === 0) return NULL;\n let acc = present[0]!;\n for (let i = 1; i < present.length; i += 1) {\n const b = present[i]!;\n const c = compareCells(acc, b);\n if (c !== undefined) {\n // keep `acc` iff (fn=min) == (c<=0); else take b\n acc = (fn === 'min') === c <= 0 ? acc : b;\n }\n // c === undefined ⇒ keep acc (matches F# `None -> a`)\n }\n return acc;\n }\n }\n};\n\nconst aggType = (fn: AggFn, srcType: ColumnType): ColumnType => {\n switch (fn) {\n case 'count':\n return 'int';\n case 'mean':\n case 'median':\n case 'stddev':\n return 'float';\n case 'sum':\n case 'min':\n case 'max':\n case 'first':\n case 'last':\n return srcType;\n }\n};\n\n// ─── sort (pinned: stable; nulls last regardless of direction) ───────────────\n\nconst rowKeyCompare = (\n cols: readonly SchemaEntry[],\n by: readonly SortKey[],\n r1: readonly Cell[],\n r2: readonly Cell[],\n): number => {\n for (const { col, dir } of by) {\n const i = colIndex(cols, col);\n if (i < 0) continue;\n const a = r1[i]!;\n const b = r2[i]!;\n const an = isNull(a);\n const bn = isNull(b);\n let c: number;\n if (an && bn) c = 0;\n else if (an && !bn)\n c = 1; // null sorts last\n else if (!an && bn) c = -1;\n else {\n const cc = compareCells(a, b);\n c = cc === undefined ? 0 : dir === 'asc' ? cc : -cc;\n }\n if (c !== 0) return c;\n }\n return 0;\n};\n\n// A stable sort over an immutable rows array (Array.prototype.sort is stable).\nconst stableSort = <T>(xs: readonly T[], cmp: (a: T, b: T) => number): T[] => xs.slice().sort(cmp);\n\n// ─── grouping keys (structural, type-aware) ──────────────────────────────────\n\nconst cellKey = (c: Cell): string => {\n switch (c.kind) {\n case 'Null':\n return 'N';\n case 'Int':\n return 'I' + String(c.value);\n case 'Float':\n return 'F' + String(c.value);\n case 'Bool':\n return 'B' + (c.value ? '1' : '0');\n case 'Str':\n return 'S' + c.value;\n case 'Date':\n return 'D' + c.value;\n case 'Timestamp':\n return 'T' + c.value;\n }\n};\n\nconst rowKey = (cells: readonly Cell[]): string => cells.map(cellKey).join('\u0001');\n\n// ─── per-verb evaluation ─────────────────────────────────────────────────────\n\nconst evalFilter = (f: Frame, pred: ColExpr, env: EvalEnv = EMPTY_ENV): DR<Frame> => {\n const out: (readonly Cell[])[] = [];\n for (const row of f.rows) {\n const r = evalExpr(f.cols, row, pred, env);\n if (!r.ok) return r;\n if (r.value.kind === 'Bool' && r.value.value) out.push(row);\n }\n return dok({ ...f, rows: out });\n};\n\nconst evalProject = (f: Frame, pairs: readonly { a: string; b: string }[]): DR<Frame> => {\n const resolved: { out: string; type: ColumnType; index: number }[] = [];\n for (const { a, b } of pairs) {\n const i = colIndex(f.cols, a);\n if (i < 0) return derr(unknownColumn(a, available(f.cols)));\n resolved.push({ out: b, type: f.cols[i]!.type, index: i });\n }\n return dok({\n cols: resolved.map((r) => ({ name: r.out, type: r.type })),\n rows: f.rows.map((row) => resolved.map((r) => row[r.index]!)),\n });\n};\n\nconst evalDerive = (f: Frame, name: string, expr: ColExpr, env: EvalEnv = EMPTY_ENV): DR<Frame> => {\n const newCells: Cell[] = [];\n for (const row of f.rows) {\n const r = evalExpr(f.cols, row, expr, env);\n if (!r.ok) return r;\n newCells.push(r.value);\n }\n const ty = inferType(newCells);\n const i = colIndex(f.cols, name);\n if (i >= 0) {\n return dok({\n cols: f.cols.map((e, j) => (j === i ? { name: e.name, type: ty } : e)),\n rows: f.rows.map((row, ri) => row.map((cell, j) => (j === i ? newCells[ri]! : cell))),\n });\n }\n return dok({\n cols: [...f.cols, { name, type: ty }],\n rows: f.rows.map((row, ri) => [...row, newCells[ri]!]),\n });\n};\n\nconst evalGroupBy = (f: Frame, keys: readonly string[], aggs: readonly Agg[]): DR<Frame> => {\n for (const k of keys) {\n if (colIndex(f.cols, k) < 0) return derr(unknownColumn(k, available(f.cols)));\n }\n const idxs = keys.map((k) => colIndex(f.cols, k));\n const keyOf = (row: readonly Cell[]): Cell[] => idxs.map((i) => row[i]!);\n\n const order: string[] = [];\n const groups = new Map<string, { key: Cell[]; rows: (readonly Cell[])[] }>();\n for (const row of f.rows) {\n const k = keyOf(row);\n const ks = rowKey(k);\n const g = groups.get(ks);\n if (g === undefined) {\n order.push(ks);\n groups.set(ks, { key: k, rows: [row] });\n } else {\n g.rows.push(row);\n }\n }\n\n const resolvedAggs: { agg: Agg; type: ColumnType; index: number }[] = [];\n for (const a of aggs) {\n const ty = colType(f.cols, a.of);\n if (ty === undefined) return derr(unknownColumn(a.of, available(f.cols)));\n resolvedAggs.push({ agg: a, type: ty, index: colIndex(f.cols, a.of) });\n }\n\n const keyCols: SchemaEntry[] = keys.map((k) => ({ name: k, type: colType(f.cols, k)! }));\n const aggCols: SchemaEntry[] = resolvedAggs.map((r) => ({\n name: r.agg.name,\n type: aggType(r.agg.fn, r.type),\n }));\n\n const rows = order.map((ks) => {\n const g = groups.get(ks)!;\n const aggVals = resolvedAggs.map((r) =>\n aggCells(\n r.agg.fn,\n r.type,\n g.rows.map((row) => row[r.index]!),\n ),\n );\n return [...g.key, ...aggVals];\n });\n\n return dok({ cols: [...keyCols, ...aggCols], rows });\n};\n\nconst evalSort = (f: Frame, by: readonly SortKey[]): Frame => ({\n ...f,\n rows: stableSort(f.rows, (a, b) => rowKeyCompare(f.cols, by, a, b)),\n});\n\nconst evalDistinct = (f: Frame): Frame => {\n const seen = new Set<string>();\n const out: (readonly Cell[])[] = [];\n for (const row of f.rows) {\n const k = rowKey(row);\n if (!seen.has(k)) {\n seen.add(k);\n out.push(row);\n }\n }\n return { ...f, rows: out };\n};\n\nconst evalLimit = (f: Frame, n: number, offset: number): Frame => {\n const start = Math.min(Math.max(0, offset), f.rows.length);\n const take = Math.max(0, n);\n return { ...f, rows: f.rows.slice(start, start + take) };\n};\n\nconst evalJoin = (\n f: Frame,\n right: Frame,\n on: readonly { a: string; b: string }[],\n how: string,\n): DR<Frame> => {\n const li: number[] = [];\n const ri: number[] = [];\n for (const { a, b } of on) {\n const il = colIndex(f.cols, a);\n if (il < 0) return derr(unknownColumn(a, [...available(f.cols), ...available(right.cols)]));\n const ir = colIndex(right.cols, b);\n if (ir < 0) return derr(unknownColumn(b, [...available(f.cols), ...available(right.cols)]));\n li.push(il);\n ri.push(ir);\n }\n const keyMatch = (lr: readonly Cell[], rr: readonly Cell[]): boolean =>\n li.every((i, k) => cellEq(lr[i]!, rr[ri[k]!]!));\n\n const leftNames = new Set(available(f.cols));\n const rightCols: SchemaEntry[] = right.cols.map((e) => ({\n name: leftNames.has(e.name) ? e.name + '_right' : e.name,\n type: e.type,\n }));\n const outCols = [...f.cols, ...rightCols];\n const leftNulls: Cell[] = f.cols.map(() => NULL);\n const rightNulls: Cell[] = right.cols.map(() => NULL);\n\n const leftSide: (readonly Cell[])[] = [];\n for (const lr of f.rows) {\n const matches = right.rows.filter((rr) => keyMatch(lr, rr));\n if (matches.length === 0) {\n if (how === 'left' || how === 'outer') leftSide.push([...lr, ...rightNulls]);\n // inner / right with no match: emit nothing\n } else {\n for (const rr of matches) leftSide.push([...lr, ...rr]);\n }\n }\n\n const rightOnly: (readonly Cell[])[] = [];\n if (how === 'right' || how === 'outer') {\n for (const rr of right.rows) {\n if (!f.rows.some((lr) => keyMatch(lr, rr))) rightOnly.push([...leftNulls, ...rr]);\n }\n }\n\n return dok({ cols: outCols, rows: [...leftSide, ...rightOnly] });\n};\n\nconst evalUnion = (f: Frame, other: Frame): DR<Frame> => {\n const an = available(f.cols);\n const bn = available(other.cols);\n if (an.length !== bn.length || an.some((n, i) => n !== bn[i])) {\n return derr({ kind: 'JoinError', detail: 'union requires matching column names' });\n }\n return dok({ ...f, rows: [...f.rows, ...other.rows] });\n};\n\nconst evalWindow = (f: Frame, spec: WindowSpecLike): DR<Frame> => {\n const ofIdx = colIndex(f.cols, spec.of);\n if (ofIdx < 0 && spec.fn !== 'rowNumber' && spec.fn !== 'rank') {\n return derr(unknownColumn(spec.of, available(f.cols)));\n }\n const partIdx = spec.partitionBy.map((p) => colIndex(f.cols, p)).filter((i) => i >= 0);\n const partKey = (row: readonly Cell[]): string => rowKey(partIdx.map((i) => row[i]!));\n\n // partition (first-appearance order), tagging each row with its original index\n const order: string[] = [];\n const partitions = new Map<string, { index: number; row: readonly Cell[] }[]>();\n f.rows.forEach((row, i) => {\n const k = partKey(row);\n const p = partitions.get(k);\n if (p === undefined) {\n order.push(k);\n partitions.set(k, [{ index: i, row }]);\n } else {\n p.push({ index: i, row });\n }\n });\n\n const valueAt = (row: readonly Cell[]): Cell => (ofIdx >= 0 ? row[ofIdx]! : NULL);\n\n const computed: { index: number; out: Cell }[] = [];\n for (const k of order) {\n const members = partitions.get(k)!;\n const ordered = stableSort(members, (a, b) =>\n rowKeyCompare(f.cols, spec.orderBy, a.row, b.row),\n );\n const vals = ordered.map((m) => valueAt(m.row));\n let outs: Cell[];\n switch (spec.fn) {\n case 'rowNumber':\n outs = ordered.map((_, i) => ({ kind: 'Int', value: i + 1 }));\n break;\n case 'rank': {\n // ties (equal order keys) share a rank; running sum of step (0/1)\n const steps = ordered.map((m, i) =>\n i === 0\n ? 1\n : rowKeyCompare(f.cols, spec.orderBy, ordered[i - 1]!.row, m.row) === 0\n ? 0\n : 1,\n );\n let acc = 0;\n outs = steps.map((s) => {\n acc += s;\n return { kind: 'Int', value: acc };\n });\n break;\n }\n case 'lag':\n outs = [NULL, ...vals.slice(0, Math.max(0, vals.length - 1))];\n break;\n case 'lead':\n outs = [...vals.slice(Math.min(1, vals.length)), NULL];\n break;\n case 'cumulSum': {\n let acc = 0;\n outs = vals.map((v) => {\n const n = asNum(v);\n if (n !== undefined) acc += n;\n return { kind: 'Float', value: acc };\n });\n break;\n }\n case 'rollingMean':\n outs = vals.map((_, i) => {\n const lo = Math.max(0, i - 2);\n const window = vals.slice(lo, i + 1);\n const nums = window.map(asNum).filter((n): n is number => n !== undefined);\n return nums.length === 0\n ? NULL\n : { kind: 'Float', value: nums.reduce((a, x) => a + x, 0) / nums.length };\n });\n break;\n }\n ordered.forEach((m, i) => computed.push({ index: m.index, out: outs[i]! }));\n }\n\n computed.sort((a, b) => a.index - b.index);\n const outCells = computed.map((c) => c.out);\n\n let ty: ColumnType;\n switch (spec.fn) {\n case 'rowNumber':\n case 'rank':\n ty = 'int';\n break;\n case 'cumulSum':\n case 'rollingMean':\n ty = 'float';\n break;\n case 'lag':\n case 'lead':\n ty = colType(f.cols, spec.of) ?? 'string';\n break;\n default:\n ty = 'string';\n }\n\n return dok({\n cols: [...f.cols, { name: spec.as, type: ty }],\n rows: f.rows.map((row, i) => [...row, outCells[i]!]),\n });\n};\n\nconst evalPivot = (f: Frame, spec: PivotSpecLike): DR<Frame> => {\n const need = (name: string): number | undefined => {\n const i = colIndex(f.cols, name);\n return i >= 0 ? i : undefined;\n };\n const idxIdx: number[] = [];\n for (const n of spec.index) {\n const i = need(n);\n if (i === undefined) return derr(unknownColumn(n, available(f.cols)));\n idxIdx.push(i);\n }\n const onIdx = need(spec.on);\n if (onIdx === undefined) return derr(unknownColumn(spec.on, available(f.cols)));\n const valIdx = need(spec.values);\n if (valIdx === undefined) return derr(unknownColumn(spec.values, available(f.cols)));\n const valType = f.cols[valIdx]!.type;\n\n const indexKey = (row: readonly Cell[]): Cell[] => idxIdx.map((i) => row[i]!);\n\n // distinct on-values (sorted by canonical string for a deterministic column order)\n const onSeen = new Set<string>();\n const onValues: Cell[] = [];\n for (const row of f.rows) {\n const c = row[onIdx]!;\n if (isNull(c)) continue;\n const k = cellKey(c);\n if (!onSeen.has(k)) {\n onSeen.add(k);\n onValues.push(c);\n }\n }\n onValues.sort((a, b) => {\n const sa = cellString(a);\n const sb = cellString(b);\n return sa < sb ? -1 : sa > sb ? 1 : 0;\n });\n\n // index groups, first-appearance order\n const order: Cell[][] = [];\n const orderSeen = new Set<string>();\n for (const row of f.rows) {\n const k = indexKey(row);\n const ks = rowKey(k);\n if (!orderSeen.has(ks)) {\n orderSeen.add(ks);\n order.push(k);\n }\n }\n\n const idxCols: SchemaEntry[] = spec.index.map((n) => ({ name: n, type: colType(f.cols, n)! }));\n const pivotCols: SchemaEntry[] = onValues.map((ov) => ({\n name: cellString(ov),\n type: aggType(spec.agg, valType),\n }));\n\n const rows = order.map((k) => {\n const ks = rowKey(k);\n const cellsFor = (ov: Cell): Cell => {\n const matching = f.rows\n .filter((row) => rowKey(indexKey(row)) === ks && cellEq(row[onIdx]!, ov))\n .map((row) => row[valIdx]!);\n return aggCells(spec.agg, valType, matching);\n };\n return [...k, ...onValues.map(cellsFor)];\n });\n\n return dok({ cols: [...idxCols, ...pivotCols], rows });\n};\n\nconst evalUnpivot = (\n f: Frame,\n idVars: readonly string[],\n valueVars: readonly string[],\n): DR<Frame> => {\n const idIdx: number[] = [];\n for (const n of idVars) {\n const i = colIndex(f.cols, n);\n if (i < 0) return derr(unknownColumn(n, available(f.cols)));\n idIdx.push(i);\n }\n const valIdx: number[] = [];\n for (const n of valueVars) {\n const i = colIndex(f.cols, n);\n if (i < 0) return derr(unknownColumn(n, available(f.cols)));\n valIdx.push(i);\n }\n const idCols: SchemaEntry[] = idVars.map((n) => ({ name: n, type: colType(f.cols, n)! }));\n let valType: ColumnType = 'string';\n for (const n of valueVars) {\n const t = colType(f.cols, n);\n if (t !== undefined) {\n valType = t;\n break;\n }\n }\n const cols: SchemaEntry[] = [\n ...idCols,\n { name: 'variable', type: 'string' },\n { name: 'value', type: valType },\n ];\n const rows: Cell[][] = [];\n for (const row of f.rows) {\n const idCells = idIdx.map((i) => row[i]!);\n valueVars.forEach((name, k) => {\n rows.push([...idCells, { kind: 'Str', value: name }, row[valIdx[k]!]!]);\n });\n }\n return dok({ cols, rows });\n};\n\n// Window/Pivot spec aliases (the schema `WindowSpec`/`PivotSpec` shapes).\ninterface WindowSpecLike {\n readonly partitionBy: readonly string[];\n readonly orderBy: readonly SortKey[];\n readonly fn: 'rowNumber' | 'rank' | 'lag' | 'lead' | 'cumulSum' | 'rollingMean';\n readonly of: string;\n readonly as: string;\n}\ninterface PivotSpecLike {\n readonly index: readonly string[];\n readonly on: string;\n readonly values: string;\n readonly agg: AggFn;\n}\n\n// ─── pipeline driver ─────────────────────────────────────────────────────────\n\n/** Resolve a `Ref` source to a concrete `Table` (default: reject every ref). */\nexport type SourceResolver = (ref: string) => DR<Table>;\n\n/** A `Ref`-rejecting resolver — the default for embedded-only pipelines. */\nexport const noResolve: SourceResolver = (ref) => derr({ kind: 'UnresolvedSource', ref });\n\n/** Evaluate a `DataSource` to a concrete `Table`, resolving a `Ref` through `resolve`. */\nexport const evalSource = (resolve: SourceResolver, src: DataSource): DR<Table> =>\n src.kind === 'Embedded' ? dok(src.table) : resolve(src.name);\n\nconst evalStep = (\n resolve: SourceResolver,\n f: Frame,\n t: Transform,\n env: EvalEnv = EMPTY_ENV,\n): DR<Frame> => {\n switch (t.kind) {\n case 'filter':\n return evalFilter(f, t.pred, env);\n case 'project':\n return evalProject(f, t.cols);\n case 'derive':\n return evalDerive(f, t.name, t.expr, env);\n case 'groupBy':\n return evalGroupBy(f, t.keys, t.aggs);\n case 'sort':\n return dok(evalSort(f, t.by));\n case 'distinct':\n return dok(evalDistinct(f));\n case 'limit':\n return dok(evalLimit(f, t.n, t.offset));\n case 'window':\n return evalWindow(f, t.spec);\n case 'pivot':\n return evalPivot(f, t.spec);\n case 'unpivot':\n return evalUnpivot(f, t.idVars, t.valueVars);\n case 'join': {\n const r = evalSource(resolve, t.source);\n if (!r.ok) return r;\n return evalJoin(f, toFrame(r.value), t.on, t.how);\n }\n case 'union': {\n const r = evalSource(resolve, t.source);\n if (!r.ok) return r;\n return evalUnion(f, toFrame(r.value));\n }\n }\n};\n\n/**\n * The reference evaluator: fold the pipeline over the input table, threading a\n * `Frame`. `resolve` provides any `Ref` source a `Join` / `Union` names.\n */\nexport const evalPipelineWithInEnv = (\n resolve: SourceResolver,\n env: EvalEnv,\n pipeline: readonly Transform[],\n input: Table,\n): DR<Table> => {\n let f = toFrame(input);\n for (const step of pipeline) {\n const r = evalStep(resolve, f, step, env);\n if (!r.ok) return r;\n f = r.value;\n }\n return dok(ofFrame(f));\n};\n\nexport const evalPipelineWith = (\n resolve: SourceResolver,\n pipeline: readonly Transform[],\n input: Table,\n): DR<Table> => evalPipelineWithInEnv(resolve, EMPTY_ENV, pipeline, input);\n\n/** The reference evaluator over embedded sources only (`Ref` ⇒ `UnresolvedSource`). */\nexport const evalPipeline = (pipeline: readonly Transform[], input: Table): DR<Table> =>\n evalPipelineWith(noResolve, pipeline, input);\n\n/** The env-aware evaluator over embedded sources only (fuaran-core#77 / Phase 424). */\nexport const evalPipelineInEnv = (\n env: EvalEnv,\n pipeline: readonly Transform[],\n input: Table,\n): DR<Table> => evalPipelineWithInEnv(noResolve, env, pipeline, input);\n\n/** Render an `EvalError` as a stable human string (mirrors F# `DataFrame.errorString`). */\nexport const evalErrorString = (e: EvalError): string => {\n switch (e.kind) {\n case 'UnknownColumn':\n return \"unknown column '\" + e.name + \"'; available: \" + e.available.join(', ');\n case 'TypeError':\n return 'type error: ' + e.detail;\n case 'AggError':\n return 'aggregate error: ' + e.detail;\n case 'JoinError':\n return 'join error: ' + e.detail;\n case 'ArityError':\n return \"function '\" + e.fn + \"' expects \" + e.expected + ' args, got ' + e.got;\n case 'UnresolvedSource':\n return 'unresolved source ref: ' + e.ref;\n case 'UnboundParam':\n return \"unbound param '\" + e.name + \"'; bound: \" + e.bound.join(', ');\n }\n};\n\n// ─── param derivation (fuaran-core#77 / Phase 424) ───────────────────────────\n\nconst colExprParams = (e: ColExpr): string[] => {\n switch (e.kind) {\n case 'col':\n case 'lit':\n return [];\n case 'param':\n return [e.name];\n case 'binary':\n return [...colExprParams(e.left), ...colExprParams(e.right)];\n case 'not':\n return colExprParams(e.expr);\n case 'coalesce':\n return e.exprs.flatMap(colExprParams);\n case 'case':\n return [\n ...e.cases.flatMap((br) => [...colExprParams(br.when), ...colExprParams(br.then)]),\n ...colExprParams(e.else),\n ];\n case 'cast':\n return colExprParams(e.expr);\n case 'apply':\n return e.args.flatMap(colExprParams);\n case 'in':\n return [...colExprParams(e.expr), ...e.items.flatMap(colExprParams)];\n case 'isNull':\n return colExprParams(e.expr);\n case 'inParam':\n // A list param shares the scalar params' namespace (reactivity derivation needs it).\n return [...colExprParams(e.expr), e.param];\n }\n};\n\n/** Every `ColExpr.param` name a single step references (only `filter` / `derive` carry a ColExpr). */\nexport const stepParams = (t: Transform): readonly string[] => {\n switch (t.kind) {\n case 'filter':\n return colExprParams(t.pred);\n case 'derive':\n return colExprParams(t.expr);\n default:\n return [];\n }\n};\n\n/** Every distinct param name a pipeline references — the TS mirror of Core `Transform.paramsOf`. */\nexport const pipelineParams = (pipeline: readonly Transform[]): readonly string[] => [\n ...new Set(pipeline.flatMap((t) => stepParams(t))),\n];\n","// ============================================================================\n// @fuaran-ui/ops — hand-rolled JSON parser.\n//\n// Port of the local-private `Json` DU + recursive-descent parser inside the\n// F# decoder (Fuaran.UI.Ops.JsonDecode). The F# tier hand-rolls its parser\n// because Fable.SimpleJson / Newtonsoft / System.Text.Json are each pipeline-\n// incompatible (see fuaran-dotnet/docs/migrations/12-E-0-json-decoder.md). TypeScript\n// has `JSON.parse`, but the decoder hand-rolls its own for the same reason the\n// F# tier does: bit-identical handling of the number-edge string sentinels\n// (\"NaN\" / \"Infinity\" / \"-Infinity\"), key-order tolerance, and structural\n// error reporting (path + offset) that `JSON.parse` flattens into an opaque\n// SyntaxError. The AST DU mirrors the F# shape exactly\n// (JNull | JBool | JNumber | JString | JArray | JObject) so the per-NodeKind\n// dispatch in decode.ts stays a straight port.\n//\n// WIRE_FORMAT.md §2 conventions the parser must honour:\n// - object keys arrive in any order (decoder tolerates; encoder sorts) — the\n// AST stores fields in a Map keyed by name, lookups are by key.\n// - number sentinels arrive as quoted strings, so they parse to JString here\n// and decode.ts maps them to the IEEE-754 specials at float slots.\n// ============================================================================\n\nimport type { Result } from '@fuaran-ui/schema';\n\n/** Local JSON AST. Shape-for-shape port of the F# decoder's private `Json` DU. */\nexport type JsonAst =\n | { readonly kind: 'JNull' }\n | { readonly kind: 'JBool'; readonly value: boolean }\n | { readonly kind: 'JNumber'; readonly value: number }\n | { readonly kind: 'JString'; readonly value: string }\n | { readonly kind: 'JArray'; readonly items: readonly JsonAst[] }\n | { readonly kind: 'JObject'; readonly fields: ReadonlyMap<string, JsonAst> };\n\n/** Structural parse failure carrying the byte offset where it was detected. */\nexport interface ParseError {\n readonly message: string;\n readonly offset: number;\n}\n\n// ─── Mutable cursor over the source text ─────────────────────────────────────\n\ninterface ParseState {\n readonly text: string;\n pos: number;\n}\n\nconst peek = (s: ParseState): string => (s.pos < s.text.length ? s.text[s.pos]! : ' ');\n\nconst advance = (s: ParseState): void => {\n s.pos += 1;\n};\n\nconst skipWs = (s: ParseState): void => {\n while (s.pos < s.text.length) {\n const c = s.text[s.pos]!;\n if (c === ' ' || c === '\\t' || c === '\\n' || c === '\\r') {\n advance(s);\n } else {\n break;\n }\n }\n};\n\nconst fail = (s: ParseState, message: string): Result<never, ParseError> => ({\n ok: false,\n error: { message, offset: s.pos },\n});\n\nconst expectChar = (s: ParseState, ch: string): Result<true, ParseError> => {\n if (peek(s) === ch) {\n advance(s);\n return { ok: true, value: true };\n }\n return fail(s, `expected '${ch}' but found '${peek(s)}'`);\n};\n\n// ─── Primitive parsers ───────────────────────────────────────────────────────\n\nconst HEX_DIGIT = /[0-9a-fA-F]/;\n\nconst parseStringRaw = (s: ParseState): Result<string, ParseError> => {\n const open = expectChar(s, '\"');\n if (!open.ok) return open;\n\n let out = '';\n for (;;) {\n if (s.pos >= s.text.length) return fail(s, 'unterminated string');\n const c = s.text[s.pos]!;\n advance(s);\n\n if (c === '\"') {\n return { ok: true, value: out };\n } else if (c === '\\\\') {\n if (s.pos >= s.text.length) return fail(s, 'unterminated escape');\n const esc = s.text[s.pos]!;\n advance(s);\n switch (esc) {\n case '\"':\n out += '\"';\n break;\n case '\\\\':\n out += '\\\\';\n break;\n case '/':\n out += '/';\n break;\n case 'b':\n out += '\\b';\n break;\n case 'f':\n out += '\\f';\n break;\n case 'n':\n out += '\\n';\n break;\n case 'r':\n out += '\\r';\n break;\n case 't':\n out += '\\t';\n break;\n case 'u': {\n if (s.pos + 4 > s.text.length) return fail(s, 'incomplete \\\\u escape');\n const hex = s.text.substring(s.pos, s.pos + 4);\n if (\n !HEX_DIGIT.test(hex[0]!) ||\n !HEX_DIGIT.test(hex[1]!) ||\n !HEX_DIGIT.test(hex[2]!) ||\n !HEX_DIGIT.test(hex[3]!)\n ) {\n return fail(s, `invalid \\\\u escape '${hex}'`);\n }\n s.pos += 4;\n out += String.fromCharCode(parseInt(hex, 16));\n break;\n }\n default:\n return fail(s, `unknown escape '\\\\${esc}'`);\n }\n } else {\n out += c;\n }\n }\n};\n\nconst isNumberChar = (c: string): boolean =>\n c === '-' || c === '+' || c === '.' || c === 'e' || c === 'E' || (c >= '0' && c <= '9');\n\nconst parseNumberRaw = (s: ParseState): Result<number, ParseError> => {\n const start = s.pos;\n while (s.pos < s.text.length && isNumberChar(s.text[s.pos]!)) {\n advance(s);\n }\n const slice = s.text.substring(start, s.pos);\n if (slice.length === 0) {\n return fail(s, `invalid number '${slice}'`);\n }\n const n = Number(slice);\n if (Number.isNaN(n)) {\n return fail(s, `invalid number '${slice}'`);\n }\n return { ok: true, value: n };\n};\n\n// ─── Recursive-descent value parser ──────────────────────────────────────────\n\nconst parseValue = (s: ParseState): Result<JsonAst, ParseError> => {\n skipWs(s);\n const c = peek(s);\n switch (c) {\n case '{':\n return parseObjectValue(s);\n case '[':\n return parseArrayValue(s);\n case '\"': {\n const r = parseStringRaw(s);\n return r.ok ? { ok: true, value: { kind: 'JString', value: r.value } } : r;\n }\n case 't':\n if (s.text.substring(s.pos, s.pos + 4) === 'true') {\n s.pos += 4;\n return { ok: true, value: { kind: 'JBool', value: true } };\n }\n return fail(s, \"expected 'true'\");\n case 'f':\n if (s.text.substring(s.pos, s.pos + 5) === 'false') {\n s.pos += 5;\n return { ok: true, value: { kind: 'JBool', value: false } };\n }\n return fail(s, \"expected 'false'\");\n case 'n':\n if (s.text.substring(s.pos, s.pos + 4) === 'null') {\n s.pos += 4;\n return { ok: true, value: { kind: 'JNull' } };\n }\n return fail(s, \"expected 'null'\");\n default: {\n const r = parseNumberRaw(s);\n return r.ok ? { ok: true, value: { kind: 'JNumber', value: r.value } } : r;\n }\n }\n};\n\nconst parseObjectValue = (s: ParseState): Result<JsonAst, ParseError> => {\n const open = expectChar(s, '{');\n if (!open.ok) return open;\n skipWs(s);\n\n const fields = new Map<string, JsonAst>();\n if (peek(s) === '}') {\n advance(s);\n return { ok: true, value: { kind: 'JObject', fields } };\n }\n\n for (;;) {\n skipWs(s);\n const keyR = parseStringRaw(s);\n if (!keyR.ok) return keyR;\n skipWs(s);\n const colon = expectChar(s, ':');\n if (!colon.ok) return colon;\n const valR = parseValue(s);\n if (!valR.ok) return valR;\n fields.set(keyR.value, valR.value);\n skipWs(s);\n const c = peek(s);\n if (c === ',') {\n advance(s);\n } else if (c === '}') {\n advance(s);\n return { ok: true, value: { kind: 'JObject', fields } };\n } else {\n return fail(s, `expected ',' or '}' but found '${c}'`);\n }\n }\n};\n\nconst parseArrayValue = (s: ParseState): Result<JsonAst, ParseError> => {\n const open = expectChar(s, '[');\n if (!open.ok) return open;\n skipWs(s);\n\n const items: JsonAst[] = [];\n if (peek(s) === ']') {\n advance(s);\n return { ok: true, value: { kind: 'JArray', items } };\n }\n\n for (;;) {\n const valR = parseValue(s);\n if (!valR.ok) return valR;\n items.push(valR.value);\n skipWs(s);\n const c = peek(s);\n if (c === ',') {\n advance(s);\n } else if (c === ']') {\n advance(s);\n return { ok: true, value: { kind: 'JArray', items } };\n } else {\n return fail(s, `expected ',' or ']' but found '${c}'`);\n }\n }\n};\n\n/**\n * Parse a JSON document into the local AST. Mirrors the F# `tryParse`: empty /\n * whitespace-only input is a structural error; otherwise a single top-level\n * value is parsed (trailing content after the first value is not inspected,\n * matching the F# parser).\n */\nexport const parse = (input: string): Result<JsonAst, ParseError> => {\n const s: ParseState = { text: input, pos: 0 };\n skipWs(s);\n if (s.pos >= s.text.length) {\n return { ok: false, error: { message: 'input is empty', offset: 0 } };\n }\n return parseValue(s);\n};\n\n// ─── AST field-lookup helpers (used by decode.ts) ────────────────────────────\n\n/** Look up an object field by key (key-order tolerant per WIRE_FORMAT.md §2). */\nexport const field = (fields: ReadonlyMap<string, JsonAst>, key: string): JsonAst | undefined =>\n fields.get(key);\n","// ============================================================================\n// @fuaran-ui/ops — structural decoder for the canonical-JSON wire form.\n//\n// Port of Fuaran.UI.Ops.JsonDecode (decodeNode / decodeOp). The inverse of\n// encode.ts: parses the hand-rolled JSON AST (parse.ts) into the typed tree,\n// storage-shape erased to `Node<unknown>` / `TreeOp<unknown>` (the wire carries\n// no typed-`'Msg` information — every `'Msg` payload encoded as \"<closure>\").\n//\n// Every wire-shape violation surfaces a structured, recoverable `DecodeError`\n// (never a throw) carrying one of the six `DecodeErrorCode`s + a `$`-rooted\n// dotted path, byte-identical to the F# decoder's codes/paths (WIRE_FORMAT.md\n// §6). The six codes are the stable AI-recovery surface.\n//\n// Closure-bearing slots (§4) decode to placeholders that re-encode to\n// \"<closure>\"; opaque `Binding.Static` payloads (§5) decode to the literal\n// string \"<opaque>\", which re-encodes to \"<opaque>\" — keeping the round-trip\n// byte-stable. Typed re-attachment of the erased payloads is the host's job.\n// ============================================================================\n\nimport {\n FORM_FIELD_KIND_NAMES,\n NODE_KIND_GROUPS,\n controlValueDefaults,\n projectSelectionField,\n} from '@fuaran-ui/schema';\nimport type {\n Accessibility,\n Action,\n Agg,\n AggFn,\n AriaRole,\n BadgeSpec,\n BinOp,\n Cell,\n ColExpr,\n ColPair,\n ColumnType,\n DataColumn,\n DataSource,\n InvokeArg,\n JoinKind,\n ScalarFn,\n SchemaEntry,\n SortKey,\n Transform,\n TransformParam,\n WindowFn,\n LinkSpec,\n BadgeVariant,\n Binding,\n BoxLayout,\n BoxRole,\n BoxSpec,\n CallResultTarget,\n ButtonSpec,\n ButtonVariant,\n CalloutSpec,\n CellFormat,\n CellKindErased,\n ChartKind,\n ChartSpec,\n ColumnErased,\n ColumnWidth,\n ContentHash,\n DateVariant,\n DeterminismSource,\n DisclosureSpec,\n DisplayKind,\n EffectClass,\n Emphasis,\n ImageSpec,\n ImageVariant,\n ListSpec,\n ModalSpec,\n ScrollAreaSpec,\n ScrollOrientation,\n ToastSpec,\n CodeBlockSpec,\n CurveCommand,\n DrawPoint,\n DrawStyle,\n DrawingSpec,\n Shape,\n ViewBox,\n MathSpec,\n MathDisplay,\n FontVoice,\n StyleRole,\n ErrorPayload,\n FileReadEncoding,\n FileUploadSpec,\n FilterSpec,\n FragmentArg,\n FragmentScalar,\n Format,\n FormField,\n FormFieldKind,\n FormSpec,\n FragmentId,\n GridSpec,\n HashStrictness,\n HeadingSpec,\n HeadingVariant,\n HoleDecl,\n HoleValueSpace,\n HostEffect,\n IconSource,\n InputKind,\n JsonValue,\n MapMarker,\n MetricSpec,\n LabelValueRowSpec,\n FactSpec,\n LayoutKind,\n LiveRegionKind,\n LocaleSource,\n LocalFlushTrigger,\n MarkdownSpec,\n Node,\n NodeId,\n NodeKind,\n Orientation,\n ProgressSpec,\n Result,\n SelectOption,\n SelectSpec,\n SemanticStyle,\n SkeletonSpec,\n SparklineSpec,\n SplitPanelSpec,\n StateBehaviour,\n SummaryListSpec,\n StepperSpec,\n StyleWeight,\n TabHeader,\n TableSpec,\n TabsSpec,\n TextAnchor,\n TextSource,\n ToneVariant,\n VisKind,\n} from '@fuaran-ui/schema';\n\nimport { type JsonAst, parse } from './parse.js';\nimport type { TreeOp } from './treeOp.js';\n\n// ─── DecodeError surface ─────────────────────────────────────────────────────\n\n/** Stable AI-friendly discriminator for decode-time failures (WIRE_FORMAT.md §6). */\nexport type DecodeErrorCode =\n | 'INVALID_JSON'\n | 'MISSING_FIELD'\n | 'WRONG_TYPE'\n | 'UNKNOWN_DU_CASE'\n | 'WRONG_NODE_KIND'\n | 'EMPTY_NODE_ID';\n\n/** AI-recoverable decode-time failure. Mirrors the F# `DecodeError` record. */\nexport interface DecodeError {\n readonly code: DecodeErrorCode;\n readonly path: string;\n readonly message: string;\n readonly expectedShape?: string;\n}\n\ntype R<T> = Result<T, DecodeError>;\n\nconst ok = <T>(value: T): R<T> => ({ ok: true, value });\n\nconst makeError = (\n code: DecodeErrorCode,\n path: string,\n message: string,\n expectedShape?: string,\n): R<never> => ({\n ok: false,\n error:\n expectedShape === undefined ? { code, path, message } : { code, path, message, expectedShape },\n});\n\nconst missingField = (path: string, key: string, expected: string): R<never> =>\n makeError('MISSING_FIELD', `${path}.${key}`, `missing required field '${key}'`, expected);\n\nconst wrongType = (path: string, expected: string): R<never> =>\n makeError('WRONG_TYPE', path, `expected ${expected}`, expected);\n\nconst unknownDuCase = (path: string, got: string, expected: string): R<never> =>\n makeError('UNKNOWN_DU_CASE', `${path}.$type`, `unknown discriminator '${got}'`, expected);\n\nconst CLOSURE = '<closure>';\nconst OPAQUE = '<opaque>';\n\n// ─── AST require-helpers ─────────────────────────────────────────────────────\n\ntype Fields = ReadonlyMap<string, JsonAst>;\n\nconst requireObject = (path: string, j: JsonAst): R<Fields> =>\n j.kind === 'JObject' ? ok(j.fields) : wrongType(path, 'JSON object');\n\n// Lenient AI-ingest (WIRE_FORMAT.md 3.6, generalised 2026-07-18): a Static\n// envelope wrapped around a PLAIN scalar unwraps before the scalar readers —\n// the inverse of the bare-scalar-in-Binding-slot confusion, applied at every\n// plain-scalar position in one place. Mirror of F# unwrapStaticEnvelope.\nconst unwrapStaticEnvelope = (j: JsonAst): JsonAst => {\n if (j.kind === 'JObject') {\n const t = j.fields.get('$type');\n const inner = j.fields.get('value');\n if (t !== undefined && t.kind === 'JString' && t.value === 'Static' && inner !== undefined) {\n return inner;\n }\n }\n return j;\n};\n\nconst requireString = (path: string, jRaw: JsonAst): R<string> => {\n const j = unwrapStaticEnvelope(jRaw);\n return j.kind === 'JString' ? ok(j.value) : wrongType(path, 'JSON string');\n};\n\nconst requireBool = (path: string, jRaw: JsonAst): R<boolean> => {\n const j = unwrapStaticEnvelope(jRaw);\n return j.kind === 'JBool' ? ok(j.value) : wrongType(path, 'JSON boolean');\n};\n\nconst requireFloat = (path: string, jRaw: JsonAst): R<number> => {\n const j = unwrapStaticEnvelope(jRaw);\n if (j.kind === 'JNumber') return ok(j.value);\n if (j.kind === 'JString') {\n if (j.value === 'NaN') return ok(NaN);\n if (j.value === 'Infinity') return ok(Infinity);\n if (j.value === '-Infinity') return ok(-Infinity);\n }\n return wrongType(path, \"JSON number (or 'NaN' / 'Infinity' / '-Infinity' sentinel string)\");\n};\n\nconst requireInt = (path: string, jRaw: JsonAst): R<number> => {\n const j = unwrapStaticEnvelope(jRaw);\n return j.kind === 'JNumber' ? ok(Math.trunc(j.value)) : wrongType(path, 'JSON number (integer)');\n};\n\nconst requireArray = (path: string, j: JsonAst): R<readonly JsonAst[]> =>\n j.kind === 'JArray' ? ok(j.items) : wrongType(path, 'JSON array');\n\nconst tryField = (fields: Fields, key: string): JsonAst | undefined => fields.get(key);\n\nconst requireField = (path: string, fields: Fields, key: string, expected: string): R<JsonAst> => {\n const v = fields.get(key);\n return v === undefined ? missingField(path, key, expected) : ok(v);\n};\n\nconst requireDiscriminator = (path: string, fields: Fields): R<string> => {\n const v = fields.get('$type');\n if (v === undefined)\n return missingField(path, '$type', \"DU object must carry a '$type' discriminator string\");\n return v.kind === 'JString'\n ? ok(v.value)\n : wrongType(`${path}.$type`, 'JSON string discriminator');\n};\n\n/** Decode a required field through `dec` at `path.key`. */\nconst reqField = <T>(\n path: string,\n fields: Fields,\n key: string,\n expected: string,\n dec: (p: string, j: JsonAst) => R<T>,\n): R<T> => {\n const v = requireField(path, fields, key, expected);\n return v.ok ? dec(`${path}.${key}`, v.value) : v;\n};\n\n/** Decode an optional field; absent → `undefined` (None per WIRE_FORMAT.md §2 rule 4). */\nconst optField = <T>(\n path: string,\n fields: Fields,\n key: string,\n dec: (p: string, j: JsonAst) => R<T>,\n): R<T | undefined> => {\n const v = tryField(fields, key);\n if (v === undefined) return ok(undefined);\n return dec(`${path}.${key}`, v);\n};\n\n// 2026-07-17 - lenient-ingest FIELD-NAME aliases (decode-only; WIRE_FORMAT 3.6).\n// Mirrors the F# requireFieldAliased/optFieldAliased: the canonical name wins\n// when both are present; faithful same-concept mappings only (href->route);\n// re-encode always normalises. Pinned by the lenient/lenient-alias-* fixtures.\nconst fieldAliased = (\n fields: Fields,\n canonical: string,\n aliases: readonly string[],\n): JsonAst | undefined => {\n const v = tryField(fields, canonical);\n if (v !== undefined) return v;\n for (const a of aliases) {\n const w = tryField(fields, a);\n if (w !== undefined) return w;\n }\n return undefined;\n};\n\n/** `reqField` with decode-only field-name aliases; the error names the canonical key. */\nconst reqFieldAliased = <T>(\n path: string,\n fields: Fields,\n canonical: string,\n aliases: readonly string[],\n expected: string,\n dec: (p: string, j: JsonAst) => R<T>,\n): R<T> => {\n const v = fieldAliased(fields, canonical, aliases);\n if (v === undefined) return missingField(path, canonical, expected);\n return dec(`${path}.${canonical}`, v);\n};\n\n/** `optField` with decode-only field-name aliases. */\nconst optFieldAliased = <T>(\n path: string,\n fields: Fields,\n canonical: string,\n aliases: readonly string[],\n dec: (p: string, j: JsonAst) => R<T>,\n): R<T | undefined> => {\n const v = fieldAliased(fields, canonical, aliases);\n if (v === undefined) return ok(undefined);\n return dec(`${path}.${canonical}`, v);\n};\n\nconst traverseIndexed = <T>(\n items: readonly JsonAst[],\n f: (i: number, j: JsonAst) => R<T>,\n): R<T[]> => {\n const out: T[] = [];\n for (let i = 0; i < items.length; i += 1) {\n const r = f(i, items[i]!);\n if (!r.ok) return r;\n out.push(r.value);\n }\n return ok(out);\n};\n\n// ─── obj-erased value decode (port of decodeObj) ─────────────────────────────\n\nconst decodeAstValue = (j: JsonAst): unknown => {\n switch (j.kind) {\n case 'JNull':\n return null;\n case 'JString':\n return j.value;\n case 'JBool':\n return j.value;\n case 'JNumber':\n return j.value;\n case 'JArray':\n return j.items.map(decodeAstValue);\n case 'JObject': {\n const o: Record<string, unknown> = {};\n for (const [k, v] of j.fields) o[k] = decodeAstValue(v);\n return o;\n }\n }\n};\n\n// ─── strict JVal decode (port of jsonToJValStrict / decodeJVal / decodeJValMap) ─\n//\n// The JSON-valued PAYLOAD positions — NodeKind.Custom props, Action.Notify /\n// SetState / AiTool payloads, TextSource.I18n args, and a wire-form UpdateProp\n// value — decode null-REJECTING at any depth: the Fuaran wire model has no null\n// (omit the field instead), and F# `JVal` makes that unrepresentable by\n// construction. Mirrors the F# `jsonToJValStrict` position-for-position — same\n// WRONG_TYPE code + message + `$`-rooted path — so an AI author recovers by\n// omission, not by re-encoding null. This is DISTINCT from `decodeAstValue`\n// above (the Binding.Static / obj seam), which faithfully accepts JNull -> null\n// per the F# `decodeObj`; those positions are left permissive on purpose.\n\nconst nullNotRepresentable = (path: string): R<never> =>\n makeError(\n 'WRONG_TYPE',\n path,\n 'null is not representable in the Fuaran wire model — omit the field instead',\n );\n\nconst decodeJVal = (path: string, j: JsonAst): R<JsonValue> => {\n switch (j.kind) {\n case 'JNull':\n return nullNotRepresentable(path);\n case 'JString':\n return ok(j.value);\n case 'JBool':\n return ok(j.value);\n case 'JNumber':\n return ok(j.value);\n case 'JArray': {\n const out: JsonValue[] = [];\n for (let i = 0; i < j.items.length; i += 1) {\n const r = decodeJVal(`${path}[${i}]`, j.items[i]!);\n if (!r.ok) return r;\n out.push(r.value);\n }\n return ok(out);\n }\n case 'JObject': {\n const out: Record<string, JsonValue> = {};\n for (const [k, v] of j.fields) {\n const r = decodeJVal(`${path}.${k}`, v);\n if (!r.ok) return r;\n out[k] = r.value;\n }\n return ok(out);\n }\n }\n};\n\nconst decodeJValMap = (path: string, j: JsonAst): R<Record<string, JsonValue>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const out: Record<string, JsonValue> = {};\n for (const [k, v] of fo.value) {\n const r = decodeJVal(`${path}.${k}`, v);\n if (!r.ok) return r;\n out[k] = r.value;\n }\n return ok(out);\n};\n\n// ─── Bare-string enum decoders ───────────────────────────────────────────────\n\nconst bareEnum = <T extends string>(\n path: string,\n j: JsonAst,\n valid: readonly T[],\n label: string,\n): R<T> => {\n if (j.kind !== 'JString') return wrongType(path, `JSON string (${label})`);\n if ((valid as readonly string[]).includes(j.value)) return ok(j.value as T);\n return unknownDuCase(path, j.value, valid.join(' | '));\n};\n\nconst ORIENTATION_ALIASES: Readonly<Record<string, Orientation>> = {\n // CSS flex-direction prior: a row lays out horizontally, a column vertically.\n Row: 'Horizontal',\n row: 'Horizontal',\n Column: 'Vertical',\n column: 'Vertical',\n};\n\nconst decodeOrientation = (p: string, j: JsonAst): R<Orientation> => {\n if (j.kind === 'JString' && j.value in ORIENTATION_ALIASES)\n return ok(ORIENTATION_ALIASES[j.value]!);\n return bareEnum(p, j, ['Vertical', 'Horizontal'] as const, 'Orientation');\n};\n\nconst decodeBadgeVariant = (p: string, j: JsonAst): R<BadgeVariant> => {\n // Default -> the identity case; Danger -> the Bootstrap prior (WIRE_FORMAT 3.6).\n if (j.kind === 'JString' && j.value === 'Default') return ok('Neutral');\n if (j.kind === 'JString' && j.value === 'Danger') return ok('Critical');\n return bareEnum(\n p,\n j,\n ['Neutral', 'Brand', 'Success', 'Warning', 'Critical', 'Info'] as const,\n 'BadgeVariant',\n );\n};\n\nconst decodeButtonVariant = (p: string, j: JsonAst): R<ButtonVariant> => {\n // Bootstrap's Danger names the same concept as Destructive (WIRE_FORMAT 3.6).\n if (j.kind === 'JString' && j.value === 'Danger') return ok('Destructive');\n return bareEnum(\n p,\n j,\n ['Primary', 'Secondary', 'Tertiary', 'Destructive'] as const,\n 'ButtonVariant',\n );\n};\n\nconst decodeHeadingVariant = (p: string, j: JsonAst): R<HeadingVariant> => {\n // Default -> the identity case; Title/Page/Section stay rejects (ambiguous mapping).\n if (j.kind === 'JString' && j.value === 'Default') return ok('Standard');\n return bareEnum(p, j, ['Standard', 'Eyebrow', 'Caption', 'Lead'] as const, 'HeadingVariant');\n};\n\nconst decodeImageVariant = (p: string, j: JsonAst): R<ImageVariant> =>\n bareEnum(p, j, ['Default', 'Avatar', 'Rounded'] as const, 'ImageVariant');\n\nconst decodeScrollOrientation = (p: string, j: JsonAst): R<ScrollOrientation> =>\n bareEnum(p, j, ['Vertical', 'Horizontal', 'Both'] as const, 'ScrollOrientation');\n\nconst decodeDateVariant = (p: string, j: JsonAst): R<DateVariant> =>\n bareEnum(p, j, ['Date', 'Time', 'DateTime'] as const, 'DateVariant');\n\nconst decodeMathDisplay = (p: string, j: JsonAst): R<MathDisplay> =>\n bareEnum(p, j, ['Inline', 'Block'] as const, 'MathDisplay');\n\n// Phase 460 — lenient-ingest aliases (decode-only; never encoded — canonical\n// re-encode normalises to the DU case names). Faithful semantic mappings only,\n// documented in WIRE_FORMAT.md §3.6; mirrors the F# `decodeTone`/`decodeEmphasis`.\nconst TONE_ALIASES: Readonly<Record<string, ToneVariant>> = {\n Positive: 'Success',\n Danger: 'Critical',\n Negative: 'Critical',\n Neutral: 'Default',\n};\n\nconst EMPHASIS_ALIASES: Readonly<Record<string, Emphasis>> = {\n Strong: 'Loud',\n Bold: 'Loud',\n Subtle: 'Quiet',\n Muted: 'Quiet',\n};\n\n/**\n * The legal `ToneVariant` names, in one place because two positions now teach them — a\n * `tone` field and (Phase 750) a `TonedPill` tone-map value. A second inline copy is\n * exactly how one of them comes to name six tones. Parity-locked with the F#\n * `toneVariantNames`.\n */\nconst TONE_NAMES = [\n 'Default',\n 'Subdued',\n 'Brand',\n 'Success',\n 'Warning',\n 'Critical',\n 'Info',\n] as const;\n\nconst decodeTone = (p: string, j: JsonAst): R<ToneVariant> => {\n if (j.kind === 'JString' && j.value in TONE_ALIASES) return ok(TONE_ALIASES[j.value]!);\n return bareEnum(p, j, TONE_NAMES, 'ToneVariant');\n};\n\nconst decodeWeight = (p: string, j: JsonAst): R<StyleWeight> =>\n // StyleWeight deliberately not aliased — `Bold`/`Heavy` is font-weight intent, but\n // Compact|Standard|Spacious means density (WIRE_FORMAT.md §3.6).\n bareEnum(p, j, ['Compact', 'Standard', 'Spacious'] as const, 'StyleWeight');\n\nconst decodeEmphasis = (p: string, j: JsonAst): R<Emphasis> => {\n if (j.kind === 'JString' && j.value in EMPHASIS_ALIASES) return ok(EMPHASIS_ALIASES[j.value]!);\n // 0.2.8 (2026-07-19 collision sweep) — `emphasis` is a same-name\n // cross-vocabulary collision (style ENUM here vs behavioural BOOL on\n // Fact/LabelValueRow); models cross it in both directions. A bool in the\n // enum slot projects one-to-one: true ⇒ Loud, false ⇒ Normal. The bool\n // sites' direction lives in `decodeEmphasisFlag`.\n if (j.kind === 'JBool') return ok(j.value ? 'Loud' : 'Normal');\n return bareEnum(p, j, ['Quiet', 'Normal', 'Loud'] as const, 'Emphasis');\n};\n\n/**\n * The behavioural `emphasis` BOOL (Fact / LabelValueRow) — the other half of\n * the same-name collision with the `Emphasis` style enum. ONE shared reader\n * for every bool site (the 0.2.2 coercion lived only on LabelValueRow and\n * only for the exact enum spellings — Fact hard-failed, and the Phase-460\n * alias set never carried over; the 2026-07-19 sweep closed the asymmetry):\n * booleans pass through; the enum AND its aliases project one-to-one\n * (Loud/Strong/Bold ⇒ true, Normal/Quiet/Subtle/Muted ⇒ false); any other\n * string is the didactic reject naming both vocabularies.\n */\nconst decodeEmphasisFlag = (p: string, j: JsonAst): R<boolean> => {\n if (j.kind === 'JBool') return ok(j.value);\n if (j.kind === 'JString') {\n if (j.value === 'Loud' || j.value === 'Strong' || j.value === 'Bold') return ok(true);\n if (j.value === 'Normal' || j.value === 'Quiet' || j.value === 'Subtle' || j.value === 'Muted')\n return ok(false);\n return makeError(\n 'WRONG_TYPE',\n p,\n `expected JSON boolean, got '${j.value}' — this \\`emphasis\\` is a BOOL (is this an emphasised row/fact?); the Emphasis style enum (Quiet|Normal|Loud) lives on style/Metric.emphasis. Write true or false`,\n 'JSON boolean',\n );\n }\n return requireBool(p, j);\n};\n\n// Phase 528.1 — SVG text-anchor for DrawStyle (Shape.Label alignment).\nconst decodeTextAnchor = (p: string, j: JsonAst): R<TextAnchor> =>\n bareEnum(p, j, ['Start', 'Middle', 'End'] as const, 'TextAnchor');\n\n// Phase 147 — the additive style-role / font-voice DUs. Optional on the wire\n// (omitted at default); the style decoder restores the default on absence.\nconst decodeStyleRole = (p: string, j: JsonAst): R<StyleRole> =>\n bareEnum(p, j, ['None', 'Eyebrow', 'Data', 'Lede', 'Caption'] as const, 'StyleRole');\n\nconst decodeFontVoice = (p: string, j: JsonAst): R<FontVoice> =>\n bareEnum(p, j, ['Default', 'Display', 'Structural'] as const, 'FontVoice');\n\nconst decodeChartKind = (p: string, j: JsonAst): R<ChartKind> =>\n bareEnum(p, j, ['Line', 'Bar', 'Area', 'Pie', 'Scatter', 'Heatmap'] as const, 'ChartKind');\n\nconst decodeFileReadEncoding = (p: string, j: JsonAst): R<FileReadEncoding> =>\n bareEnum(p, j, ['Text', 'Base64', 'DataUrl'] as const, 'FileReadEncoding');\n\nconst NAMED_ARIA_ROLES = [\n 'button',\n 'link',\n 'dialog',\n 'alert',\n 'status',\n 'banner',\n 'navigation',\n 'main',\n 'form',\n 'region',\n 'heading',\n 'progressbar',\n 'tab',\n 'tablist',\n 'tabpanel',\n] as const;\n\nconst decodeAriaRole = (p: string, j: JsonAst): R<AriaRole> => {\n // Any string is accepted — named roles or the AriaRole.Custom raw escape\n // (WIRE_FORMAT.md §10.2: both encode as the raw string, decode prefers it).\n if (j.kind !== 'JString') return wrongType(p, 'JSON string (ARIA role)');\n return ok(j.value as AriaRole);\n};\n\nconst decodeLiveRegion = (p: string, j: JsonAst): R<LiveRegionKind> =>\n bareEnum(p, j, ['polite', 'assertive', 'off'] as const, 'LiveRegionKind');\n\n// ─── CellFormat / ColumnWidth / IconSource ───────────────────────────────────\n\nconst decodeCellFormat = (path: string, j: JsonAst): R<CellFormat> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n case 'None':\n return ok({ kind: 'None' });\n case 'Number': {\n const dec = tryField(f, 'decimals');\n if (dec === undefined) return ok({ kind: 'Number' });\n const r = requireInt(`${path}.decimals`, dec);\n return r.ok ? ok({ kind: 'Number', decimals: r.value }) : r;\n }\n case 'Currency': {\n const r = reqField(path, f, 'code', 'ISO currency code string', requireString);\n if (!r.ok) return r;\n return ok<CellFormat>({ kind: 'Currency', code: r.value });\n }\n case 'Percent': {\n const dec = tryField(f, 'decimals');\n if (dec === undefined) return ok({ kind: 'Percent' });\n const r = requireInt(`${path}.decimals`, dec);\n return r.ok ? ok({ kind: 'Percent', decimals: r.value }) : r;\n }\n case 'SignificantDigits': {\n const r = reqField(path, f, 'digits', 'integer digit count', requireInt);\n return r.ok ? ok({ kind: 'SignificantDigits', digits: r.value }) : r;\n }\n case 'Date': {\n const r = reqField(path, f, 'format', 'format string', requireString);\n return r.ok ? ok({ kind: 'Date', format: r.value }) : r;\n }\n case 'Custom':\n return ok({ kind: 'Custom', format: () => CLOSURE });\n default:\n return unknownDuCase(\n path,\n d.value,\n 'None | Number | Currency | Percent | SignificantDigits | Date | Custom',\n );\n }\n};\n\n// ─── Format / LocaleSource (Phase 102) ───────────────────────────────────────\n\nconst decodeFormat = (path: string, j: JsonAst): R<Format> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n case 'Number': {\n const dec = tryField(f, 'decimals');\n if (dec === undefined) return ok({ kind: 'Number' });\n const r = requireInt(`${path}.decimals`, dec);\n return r.ok ? ok({ kind: 'Number', decimals: r.value }) : r;\n }\n case 'Currency': {\n const r = reqField(path, f, 'isoCode', 'ISO-4217 currency code string', requireString);\n return r.ok ? ok<Format>({ kind: 'Currency', isoCode: r.value }) : r;\n }\n case 'Percent': {\n const dec = tryField(f, 'decimals');\n if (dec === undefined) return ok({ kind: 'Percent' });\n const r = requireInt(`${path}.decimals`, dec);\n return r.ok ? ok({ kind: 'Percent', decimals: r.value }) : r;\n }\n case 'Date': {\n const r = reqField(path, f, 'dateStyle', 'DateStyle string', (p, v) =>\n bareEnum(p, v, ['Short', 'Medium', 'Long', 'Full'] as const, 'DateStyle'),\n );\n return r.ok ? ok<Format>({ kind: 'Date', dateStyle: r.value }) : r;\n }\n case 'RelativeTime': {\n const r = reqField(path, f, 'unit', 'RelativeTimeUnit string', (p, v) =>\n bareEnum(\n p,\n v,\n ['Second', 'Minute', 'Hour', 'Day', 'Week', 'Month', 'Year'] as const,\n 'RelativeTimeUnit',\n ),\n );\n return r.ok ? ok<Format>({ kind: 'RelativeTime', unit: r.value }) : r;\n }\n default:\n return unknownDuCase(path, d.value, 'Number | Currency | Percent | Date | RelativeTime');\n }\n};\n\nconst decodeLocaleSource = (path: string, j: JsonAst): R<LocaleSource> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n case 'Ambient':\n return ok({ kind: 'Ambient' });\n case 'Explicit': {\n const r = reqField(path, f, 'tag', 'BCP-47 locale tag string', requireString);\n return r.ok ? ok<LocaleSource>({ kind: 'Explicit', tag: r.value }) : r;\n }\n default:\n return unknownDuCase(path, d.value, 'Ambient | Explicit');\n }\n};\n\nconst decodeColumnWidth = (path: string, j: JsonAst): R<ColumnWidth> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n case 'Auto':\n return ok({ kind: 'Auto' });\n case 'Fixed': {\n const r = reqField(path, f, 'pixels', 'integer pixel count', requireInt);\n return r.ok ? ok({ kind: 'Fixed', pixels: r.value }) : r;\n }\n case 'Flex': {\n const r = reqField(path, f, 'weight', 'float weight', requireFloat);\n return r.ok ? ok({ kind: 'Flex', weight: r.value }) : r;\n }\n default:\n return unknownDuCase(path, d.value, 'Auto | Fixed | Flex');\n }\n};\n\nconst decodeIconSource = (path: string, j: JsonAst): R<IconSource> => {\n const r = requireString(path, j);\n return r.ok ? ok(r.value as IconSource) : r;\n};\n\n// ─── LocalFlushTrigger / Binding (recursive) ─────────────────────────────────\n\nconst decodeLocalFlushTrigger = (path: string, j: JsonAst): R<LocalFlushTrigger> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n case 'OnBlur':\n return ok({ kind: 'OnBlur' });\n case 'OnSubmit':\n return ok({ kind: 'OnSubmit' });\n case 'OnCommitAction':\n return ok({ kind: 'OnCommitAction' });\n case 'OnDebounce': {\n const r = reqField(path, f, 'milliseconds', 'debounce milliseconds integer', requireInt);\n return r.ok ? ok({ kind: 'OnDebounce', milliseconds: r.value }) : r;\n }\n default:\n return unknownDuCase(path, d.value, 'OnBlur | OnSubmit | OnDebounce | OnCommitAction');\n }\n};\n\n// ─── Compute layer (Phase 282 / 284) — DataSource / Transform / ColExpr / Cell ─\n//\n// Structural decoders mirroring the Fuaran.Core codecs (`ColumnCodec.decodeJson`\n// / `DataFrameCodec.decodeTransform` / `decodeExpr` / `cellOfJson`). They surface\n// a Core-style string error (matching `ColumnCodec.errorString`); the\n// `Binding.Transform` arm of `decodeBinding` wraps that into a `WRONG_TYPE`\n// `DecodeError` rooted at `$….source` / `$….pipeline` — byte-identical to the F#\n// UI host's `coreError` wrapping.\n\ntype CR<T> =\n | { readonly ok: true; readonly value: T }\n | { readonly ok: false; readonly error: string };\nconst cok = <T>(value: T): CR<T> => ({ ok: true, value });\nconst cerr = (error: string): CR<never> => ({ ok: false, error });\n\nconst COMPUTE_COLUMN_TYPES: readonly ColumnType[] = [\n 'int',\n 'float',\n 'bool',\n 'string',\n 'date',\n 'timestamp',\n];\nconst BIN_OPS = [\n 'add',\n 'sub',\n 'mul',\n 'div',\n 'mod',\n 'eq',\n 'ne',\n 'lt',\n 'le',\n 'gt',\n 'ge',\n 'and',\n 'or',\n 'contains',\n 'startsWith',\n 'endsWith',\n] as const;\nconst SCALAR_FNS = [\n 'abs',\n 'round',\n 'floor',\n 'ceil',\n 'length',\n 'lower',\n 'upper',\n 'substr',\n 'datePart',\n 'concat',\n 'trim',\n 'replace',\n 'dateDiffDays',\n] as const;\nconst AGG_FNS = [\n 'sum',\n 'mean',\n 'min',\n 'max',\n 'count',\n 'median',\n 'stddev',\n 'first',\n 'last',\n] as const;\nconst JOIN_KINDS = ['inner', 'left', 'right', 'outer'] as const;\nconst WINDOW_FNS = ['rowNumber', 'rank', 'lag', 'lead', 'cumulSum', 'rollingMean'] as const;\n\nconst astKind = (j: JsonAst): string => {\n switch (j.kind) {\n case 'JString':\n return 'string';\n case 'JNumber':\n return 'number';\n case 'JBool':\n return 'bool';\n case 'JArray':\n return 'array';\n case 'JObject':\n return 'object';\n case 'JNull':\n return 'null';\n }\n};\n\nconst cFields = (j: JsonAst): CR<Fields> =>\n j.kind === 'JObject' ? cok(j.fields) : cerr('malformed: expected object, got ' + astKind(j));\nconst cField = (f: Fields, k: string): CR<JsonAst> => {\n const v = f.get(k);\n return v === undefined ? cerr('missing field: ' + k) : cok(v);\n};\n// fuaran-core#92 — accept exactly one of the canonical field or its observed alias (the\n// SQL/pandas prior); both present is ambiguous, neither reports the canonical name.\nconst cFieldAliased = (f: Fields, canonical: string, alias: string): CR<JsonAst> => {\n const c = f.get(canonical);\n const a = f.get(alias);\n if (c !== undefined && a !== undefined)\n return cerr(`malformed: give \"${canonical}\" (canonical) or \"${alias}\" (alias), not both`);\n const v = c ?? a;\n return v === undefined ? cerr('missing field: ' + canonical) : cok(v);\n};\nconst cStr = (j: JsonAst): CR<string> =>\n j.kind === 'JString' ? cok(j.value) : cerr('malformed: expected string, got ' + astKind(j));\nconst cArr = (j: JsonAst): CR<readonly JsonAst[]> =>\n j.kind === 'JArray' ? cok(j.items) : cerr('malformed: expected array, got ' + astKind(j));\nconst cInt = (j: JsonAst): CR<number> =>\n j.kind === 'JNumber'\n ? cok(Math.trunc(j.value))\n : cerr('malformed: expected int, got ' + astKind(j));\n\nconst cMapM = <A, B>(xs: readonly A[], fn: (a: A) => CR<B>): CR<B[]> => {\n const out: B[] = [];\n for (const x of xs) {\n const r = fn(x);\n if (!r.ok) return r;\n out.push(r.value);\n }\n return cok(out);\n};\n\nconst cStrField = (f: Fields, k: string): CR<string> => {\n const v = cField(f, k);\n return v.ok ? cStr(v.value) : v;\n};\nconst cStrList = (j: JsonAst): CR<string[]> => {\n const a = cArr(j);\n return a.ok ? cMapM(a.value, cStr) : a;\n};\n\n/** A type-tagged literal `Cell` — port of F# `DataFrameCodec.cellOfJson`. */\nconst decodeCellLit = (j: JsonAst): CR<Cell> => {\n const fo = cFields(j);\n if (!fo.ok) return cerr('malformed: lit: expected object');\n const f = fo.value;\n const dt = f.get('$type');\n if (dt === undefined || dt.kind !== 'JString') return cerr('missing field: lit.$type');\n const t = dt.value;\n if (t === 'Null') return cok({ kind: 'Null' });\n const v = f.get('value');\n const mismatch = cerr(`column 'lit': expected ${t} value, got value`);\n if (v === undefined) return mismatch;\n switch (t) {\n case 'Int':\n return v.kind === 'JNumber' ? cok({ kind: 'Int', value: Math.trunc(v.value) }) : mismatch;\n case 'Float':\n return v.kind === 'JNumber' ? cok({ kind: 'Float', value: v.value }) : mismatch;\n case 'Bool':\n return v.kind === 'JBool' ? cok({ kind: 'Bool', value: v.value }) : mismatch;\n case 'Str':\n return v.kind === 'JString' ? cok({ kind: 'Str', value: v.value }) : mismatch;\n case 'Date':\n return v.kind === 'JString' ? cok({ kind: 'Date', value: v.value }) : mismatch;\n case 'Timestamp':\n return v.kind === 'JString' ? cok({ kind: 'Timestamp', value: v.value }) : mismatch;\n default:\n return mismatch;\n }\n};\n\n/**\n * fuaran-core#94 (lenient-ingest) — render an epoch-seconds instant as the\n * canonical ISO-8601 UTC timestamp string. Pure integer arithmetic\n * (civil-from-days), clock-free; negative epochs (pre-1970) are handled.\n * Every division mirrors the F# int64 truncating division.\n */\nconst isoOfEpochSeconds = (secs: number): string => {\n let days = Math.trunc(secs / 86400);\n if (secs % 86400 < 0) days -= 1;\n const sod = secs - days * 86400;\n const z = days + 719468;\n const era = Math.trunc((z >= 0 ? z : z - 146096) / 146097);\n const doe = z - era * 146097;\n const yoe = Math.trunc(\n (doe - Math.trunc(doe / 1460) + Math.trunc(doe / 36524) - Math.trunc(doe / 146096)) / 365,\n );\n const doy = doe - (365 * yoe + Math.trunc(yoe / 4) - Math.trunc(yoe / 100));\n const mp = Math.trunc((5 * doy + 2) / 153);\n const day = doy - Math.trunc((153 * mp + 2) / 5) + 1;\n const month = mp < 10 ? mp + 3 : mp - 9;\n const year = yoe + era * 400 + (month <= 2 ? 1 : 0);\n const p2 = (n: number): string => String(n).padStart(2, '0');\n const p4 = (n: number): string => String(n).padStart(4, '0');\n return `${p4(year)}-${p2(month)}-${p2(day)}T${p2(Math.trunc(sod / 3600))}:${p2(Math.trunc((sod % 3600) / 60))}:${p2(sod % 60)}Z`;\n};\n\n/**\n * One present column cell decoded against its declared type — port of F#\n * `decodeCell`. A float column accepts an integer JSON token (lossless\n * widening); a timestamp column accepts a whole-valued epoch number\n * (fuaran-core#94 — models emit epoch instants against their own correct\n * `\"timestamp\"` schema; unit by magnitude: ≥ 1e11 ⇒ milliseconds, else\n * seconds — epoch-seconds stay below 1e11 until year 5138). Every other type\n * requires its exact JSON kind.\n */\nconst decodeColumnCell = (colName: string, ty: ColumnType, v: JsonAst): CR<Cell> => {\n const mismatch = cerr(`column '${colName}': expected ${ty} value, got ${astKind(v)}`);\n switch (ty) {\n case 'int':\n return v.kind === 'JNumber' ? cok({ kind: 'Int', value: Math.trunc(v.value) }) : mismatch;\n case 'float':\n return v.kind === 'JNumber' ? cok({ kind: 'Float', value: v.value }) : mismatch;\n case 'bool':\n return v.kind === 'JBool' ? cok({ kind: 'Bool', value: v.value }) : mismatch;\n case 'string':\n return v.kind === 'JString' ? cok({ kind: 'Str', value: v.value }) : mismatch;\n case 'date':\n return v.kind === 'JString' ? cok({ kind: 'Date', value: v.value }) : mismatch;\n case 'timestamp': {\n if (v.kind === 'JString') return cok({ kind: 'Timestamp', value: v.value });\n // Whole-valued epoch number (the F# JInt path + the whole-JFloat path,\n // unified — TS has one number kind); |x| ≥ 9e15 stays a mismatch.\n if (v.kind === 'JNumber' && v.value === Math.floor(v.value) && Math.abs(v.value) < 9e15) {\n const secs = Math.abs(v.value) >= 100_000_000_000 ? Math.trunc(v.value / 1000) : v.value;\n return cok({ kind: 'Timestamp', value: isoOfEpochSeconds(secs) });\n }\n return mismatch;\n }\n default:\n return mismatch;\n }\n};\n\nconst decodeColSchema = (j: JsonAst): CR<SchemaEntry[]> => {\n const a = cArr(j);\n if (!a.ok) return a;\n return cMapM(a.value, (e) => {\n const fo = cFields(e);\n if (!fo.ok) return fo;\n const name = cStrField(fo.value, 'name');\n if (!name.ok) return name;\n const ty = cStrField(fo.value, 'type');\n if (!ty.ok) return ty;\n if (!COMPUTE_COLUMN_TYPES.includes(ty.value as ColumnType)) {\n return cerr(\n `unknown column type '${ty.value}'; expected one of: ${COMPUTE_COLUMN_TYPES.join(', ')}`,\n );\n }\n return cok<SchemaEntry>({ name: name.value, type: ty.value as ColumnType });\n });\n};\n\n// Phase 88 (fuaran-core, mirrored) — a bare-array column is the \"just the\n// data\" shorthand: values = the array, validity all-present (the wire has no\n// JSON null, so the shape is unambiguous). Wrapped form stays canonical.\nconst columnParts = (\n name: string,\n colEl: JsonAst,\n): CR<[readonly JsonAst[], readonly JsonAst[]]> => {\n if (colEl.kind === 'JArray') {\n return cok<[readonly JsonAst[], readonly JsonAst[]]>([\n colEl.items,\n colEl.items.map(() => ({ kind: 'JBool', value: true }) as JsonAst),\n ]);\n }\n const fo = cFields(colEl);\n if (!fo.ok) return fo;\n const valuesJ = cField(fo.value, 'values');\n if (!valuesJ.ok) return valuesJ;\n const values = cArr(valuesJ.value);\n if (!values.ok) return values;\n // fuaran-core#94 (lenient-ingest) — a wrapped column object carrying\n // `values` but NO `validity` mask is the same all-present statement as the\n // Phase-88 bare array (the wire has no JSON null, so omission cannot mean\n // absent cells): models reproduce the canonical object shape minus the\n // mask. Synthesize all-present; absent cells still require the full\n // wrapped form, which stays canonical.\n const validityJ = fo.value.get('validity');\n if (validityJ === undefined) {\n return cok<[readonly JsonAst[], readonly JsonAst[]]>([\n values.value,\n values.value.map(() => ({ kind: 'JBool', value: true }) as JsonAst),\n ]);\n }\n const validity = cArr(validityJ);\n if (!validity.ok) return validity;\n return cok<[readonly JsonAst[], readonly JsonAst[]]>([values.value, validity.value]);\n};\n\nconst decodeDataColumn = (columnsObj: Fields, name: string, ty: ColumnType): CR<DataColumn> => {\n const colEl = columnsObj.get(name);\n if (colEl === undefined) return cerr('missing field: columns.' + name);\n const parts = columnParts(name, colEl);\n if (!parts.ok) return parts;\n const values = { ok: true as const, value: parts.value[0] };\n const validity = { ok: true as const, value: parts.value[1] };\n if (values.value.length !== validity.value.length) {\n return cerr(\n `column '${name}': values/validity length mismatch (${values.value.length} vs ${validity.value.length})`,\n );\n }\n const cells: Cell[] = [];\n for (let i = 0; i < values.value.length; i += 1) {\n const p = validity.value[i]!;\n if (p.kind !== 'JBool') {\n return cerr(`malformed: ${name}.validity: expected bool, got ${astKind(p)}`);\n }\n if (!p.value) {\n cells.push({ kind: 'Null' });\n } else {\n const c = decodeColumnCell(name, ty, values.value[i]!);\n if (!c.ok) return c;\n cells.push(c.value);\n }\n }\n return cok<DataColumn>({ name, type: ty, cells });\n};\n\n// Phase 88 (fuaran-core, mirrored) — infer a column's type from its cells.\n// PINNED rules: all-int -> int, any fractional -> float, all-bool -> bool,\n// all-string -> string, NEVER date/timestamp; empty/mixed = didactic reject.\nconst inferColumnType = (name: string, values: readonly JsonAst[]): CR<ColumnType> => {\n if (values.length === 0)\n return cerr(\n `malformed: ${name}: cannot infer a column type from an empty / all-null column — declare it in an explicit \"schema\" array`,\n );\n const tag = (v: JsonAst): string =>\n v.kind === 'JNumber'\n ? Number.isInteger(v.value)\n ? 'int'\n : 'float'\n : v.kind === 'JBool'\n ? 'bool'\n : v.kind === 'JString'\n ? 'string'\n : 'other';\n const tags = [...new Set(values.map(tag))];\n if (tags.length === 1 && tags[0] === 'int') return cok<ColumnType>('int');\n if (tags.every((t) => t === 'int' || t === 'float')) return cok<ColumnType>('float');\n if (tags.length === 1 && tags[0] === 'bool') return cok<ColumnType>('bool');\n if (tags.length === 1 && tags[0] === 'string') return cok<ColumnType>('string');\n return cerr(\n `malformed: ${name}: cannot infer a single column type from mixed cell kinds (${tags.join(', ')}) — declare it in an explicit \"schema\" array`,\n );\n};\n\n/** A `DataSource` — port of F# `ColumnCodec.decodeJson` (Phase 88: `schema`\n * may be omitted on an embedded source; inferred in Ordinal column order). */\nconst decodeDataSource = (j: JsonAst): CR<DataSource> => {\n const fo = cFields(j);\n if (!fo.ok) return fo;\n const schemaJ = fo.value.get('schema');\n let schema: CR<SchemaEntry[]> | undefined;\n if (schemaJ !== undefined) {\n schema = decodeColSchema(schemaJ);\n if (!schema.ok) return schema;\n }\n const refEl = fo.value.get('ref');\n if (refEl !== undefined) {\n if (schema === undefined)\n return cerr(\n 'malformed: a ref source requires an explicit \"schema\" array — there are no cells to infer column types from',\n );\n const r = cStr(refEl);\n return r.ok ? cok<DataSource>({ kind: 'Ref', name: r.value }) : r;\n }\n const colsJ = cField(fo.value, 'columns');\n if (!colsJ.ok) return colsJ;\n const colsFo = cFields(colsJ.value);\n if (!colsFo.ok) return colsFo;\n if (schema === undefined) {\n const names = [...colsFo.value.keys()].sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));\n const entries: SchemaEntry[] = [];\n for (const name of names) {\n const colEl = colsFo.value.get(name)!;\n const parts = columnParts(name, colEl);\n if (!parts.ok) return parts;\n const ty = inferColumnType(name, parts.value[0]);\n if (!ty.ok) return ty;\n entries.push({ name, type: ty.value });\n }\n schema = cok(entries);\n }\n if (!schema.ok) return schema;\n const resolved = schema.value;\n const cols = cMapM(resolved, (e) => decodeDataColumn(colsFo.value, e.name, e.type));\n if (!cols.ok) return cols;\n return cok<DataSource>({\n kind: 'Embedded',\n table: { schema: resolved, columns: cols.value },\n });\n};\n\n/** A `ColExpr` — port of F# `DataFrameCodec.decodeExpr`. */\nconst decodeColExprCore = (j: JsonAst): CR<ColExpr> => {\n const fo = cFields(j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const k = cStrField(f, '$type');\n if (!k.ok) return k;\n switch (k.value) {\n case 'col': {\n const name = cStrField(f, 'name');\n return name.ok ? cok<ColExpr>({ kind: 'col', name: name.value }) : name;\n }\n case 'param': {\n // fuaran-core#77 — a named param resolved from the host env at evaluation time.\n const name = cStrField(f, 'name');\n return name.ok ? cok<ColExpr>({ kind: 'param', name: name.value }) : name;\n }\n case 'lit': {\n const cj = cField(f, 'cell');\n if (!cj.ok) return cj;\n const cell = decodeCellLit(cj.value);\n return cell.ok ? cok<ColExpr>({ kind: 'lit', cell: cell.value }) : cell;\n }\n case 'binary': {\n const op = cStrField(f, 'op');\n if (!op.ok) return op;\n if (!(BIN_OPS as readonly string[]).includes(op.value)) {\n return cerr(`unknown column type '${op.value}'; expected one of: ${BIN_OPS.join(', ')}`);\n }\n const lj = cField(f, 'left');\n if (!lj.ok) return lj;\n const left = decodeColExprCore(lj.value);\n if (!left.ok) return left;\n const rj = cField(f, 'right');\n if (!rj.ok) return rj;\n const right = decodeColExprCore(rj.value);\n if (!right.ok) return right;\n return cok<ColExpr>({\n kind: 'binary',\n op: op.value as BinOp,\n left: left.value,\n right: right.value,\n });\n }\n case 'not': {\n const ej = cField(f, 'expr');\n if (!ej.ok) return ej;\n const e = decodeColExprCore(ej.value);\n return e.ok ? cok<ColExpr>({ kind: 'not', expr: e.value }) : e;\n }\n case 'coalesce': {\n const ej = cField(f, 'exprs');\n if (!ej.ok) return ej;\n const a = cArr(ej.value);\n if (!a.ok) return a;\n const exprs = cMapM(a.value, decodeColExprCore);\n return exprs.ok ? cok<ColExpr>({ kind: 'coalesce', exprs: exprs.value }) : exprs;\n }\n case 'case': {\n const cj = cField(f, 'cases');\n if (!cj.ok) return cj;\n const ca = cArr(cj.value);\n if (!ca.ok) return ca;\n const cases = cMapM(ca.value, (c) => {\n const cfo = cFields(c);\n if (!cfo.ok) return cfo;\n const wj = cField(cfo.value, 'when');\n if (!wj.ok) return wj;\n const w = decodeColExprCore(wj.value);\n if (!w.ok) return w;\n const tj = cField(cfo.value, 'then');\n if (!tj.ok) return tj;\n const t = decodeColExprCore(tj.value);\n if (!t.ok) return t;\n return cok({ when: w.value, then: t.value });\n });\n if (!cases.ok) return cases;\n const ej = cField(f, 'else');\n if (!ej.ok) return ej;\n const e = decodeColExprCore(ej.value);\n return e.ok ? cok<ColExpr>({ kind: 'case', cases: cases.value, else: e.value }) : e;\n }\n case 'cast': {\n const ty = cStrField(f, 'type');\n if (!ty.ok) return ty;\n if (!COMPUTE_COLUMN_TYPES.includes(ty.value as ColumnType)) {\n return cerr(\n `unknown column type '${ty.value}'; expected one of: ${COMPUTE_COLUMN_TYPES.join(', ')}`,\n );\n }\n const ej = cField(f, 'expr');\n if (!ej.ok) return ej;\n const e = decodeColExprCore(ej.value);\n return e.ok ? cok<ColExpr>({ kind: 'cast', type: ty.value as ColumnType, expr: e.value }) : e;\n }\n // fuaran-core#93 — `call` aliases `apply` (same fn/args fields);\n // fuaran-core#94 adds the third observed spelling `fn`\n // ({\"$type\":\"fn\",\"fn\":\"lower\",\"args\":[…]}).\n case 'apply':\n case 'call':\n case 'fn': {\n const fn = cStrField(f, 'fn');\n if (!fn.ok) return fn;\n if (!(SCALAR_FNS as readonly string[]).includes(fn.value)) {\n return cerr(`unknown column type '${fn.value}'; expected one of: ${SCALAR_FNS.join(', ')}`);\n }\n const aj = cField(f, 'args');\n if (!aj.ok) return aj;\n const a = cArr(aj.value);\n if (!a.ok) return a;\n const args = cMapM(a.value, decodeColExprCore);\n return args.ok\n ? cok<ColExpr>({ kind: 'apply', fn: fn.value as ScalarFn, args: args.value })\n : args;\n }\n case 'in': {\n // fuaran-core#90 — SQL three-valued membership; #91 — exactly one of `items` (literal\n // list) / `param` (a bound multi-select list param).\n const ej = cField(f, 'expr');\n if (!ej.ok) return ej;\n const subject = decodeColExprCore(ej.value);\n if (!subject.ok) return subject;\n const ij = f.get('items');\n const pj = f.get('param');\n if (ij !== undefined && pj !== undefined)\n return cerr(\n 'malformed: in: give exactly ONE of \"items\" (a literal list) or \"param\" (a multi-select list param), not both',\n );\n if (pj !== undefined) {\n const p = cStr(pj);\n return p.ok ? cok<ColExpr>({ kind: 'inParam', expr: subject.value, param: p.value }) : p;\n }\n if (ij === undefined) return cerr('missing field: items');\n const ia = cArr(ij);\n if (!ia.ok) return ia;\n const items = cMapM(ia.value, decodeColExprCore);\n return items.ok\n ? cok<ColExpr>({ kind: 'in', expr: subject.value, items: items.value })\n : items;\n }\n case 'isNull': {\n // fuaran-core#90 — the honest presence test.\n const ej = cField(f, 'expr');\n if (!ej.ok) return ej;\n const e = decodeColExprCore(ej.value);\n return e.ok ? cok<ColExpr>({ kind: 'isNull', expr: e.value }) : e;\n }\n case 'contains':\n case 'startsWith':\n case 'endsWith': {\n // fuaran-core#93 — expression-level string-predicate spellings denote exactly\n // Binary(op, left|expr, right|other); canonical stays the 'binary' form.\n const lj = cFieldAliased(f, 'left', 'expr');\n if (!lj.ok) return lj;\n const left = decodeColExprCore(lj.value);\n if (!left.ok) return left;\n const rj = cFieldAliased(f, 'right', 'other');\n if (!rj.ok) return rj;\n const right = decodeColExprCore(rj.value);\n if (!right.ok) return right;\n return cok<ColExpr>({\n kind: 'binary',\n op: k.value as BinOp,\n left: left.value,\n right: right.value,\n });\n }\n // fuaran-core#94 — flat logical spellings (pilot-5 census): SQL-prior models\n // emit {\"$type\":\"or\",\"exprs\":[e1,e2,…]} (variadic) or\n // {\"$type\":\"and\",\"left\":X,\"right\":Y} instead of the canonical nested\n // \"binary\". A variadic list left-folds into the nested form (and/or are\n // associative); canonical stays \"binary\" — these normalise on re-encode.\n case 'and':\n case 'or': {\n const op: BinOp = k.value as BinOp;\n const exprsEl = f.get('exprs');\n if (exprsEl !== undefined) {\n const a = cArr(exprsEl);\n if (!a.ok) return a;\n const exprs = cMapM(a.value, decodeColExprCore);\n if (!exprs.ok) return exprs;\n if (exprs.value.length === 0)\n return cerr(`malformed: ${k.value}.exprs: expected a non-empty array`);\n const [first, ...rest] = exprs.value;\n return cok<ColExpr>(\n rest.reduce<ColExpr>((acc, e) => ({ kind: 'binary', op, left: acc, right: e }), first!),\n );\n }\n const lj = cFieldAliased(f, 'left', 'expr');\n if (!lj.ok) return lj;\n const left = decodeColExprCore(lj.value);\n if (!left.ok) return left;\n const rj = cFieldAliased(f, 'right', 'other');\n if (!rj.ok) return rj;\n const right = decodeColExprCore(rj.value);\n if (!right.ok) return right;\n return cok<ColExpr>({ kind: 'binary', op, left: left.value, right: right.value });\n }\n // fuaran-core#94 — flat comparison spellings, the same class:\n // {\"$type\":\"eq\",\"left\":X,\"right\":Y} denotes exactly Binary(eq, X, Y);\n // same for ne/lt/le/gt/ge.\n case 'eq':\n case 'ne':\n case 'lt':\n case 'le':\n case 'gt':\n case 'ge': {\n const lj = cFieldAliased(f, 'left', 'expr');\n if (!lj.ok) return lj;\n const left = decodeColExprCore(lj.value);\n if (!left.ok) return left;\n const rj = cFieldAliased(f, 'right', 'other');\n if (!rj.ok) return rj;\n const right = decodeColExprCore(rj.value);\n if (!right.ok) return right;\n return cok<ColExpr>({\n kind: 'binary',\n op: k.value as BinOp,\n left: left.value,\n right: right.value,\n });\n }\n default: {\n // fuaran-core#94 — flat scalar-fn spellings: {\"$type\":\"lower\",\"expr\":X} /\n // {\"$type\":\"concat\",\"args\":[…]} denote ApplyFn(fn, args). The scalar-fn\n // name vocabulary is disjoint from the node-kind vocabulary, so the\n // mapping is one-to-one; canonical stays \"apply\".\n if ((SCALAR_FNS as readonly string[]).includes(k.value)) {\n const fn = k.value as ScalarFn;\n const argsEl = f.get('args');\n if (argsEl !== undefined) {\n const a = cArr(argsEl);\n if (!a.ok) return a;\n const args = cMapM(a.value, decodeColExprCore);\n return args.ok ? cok<ColExpr>({ kind: 'apply', fn, args: args.value }) : args;\n }\n const ej = cField(f, 'expr');\n if (!ej.ok) return ej;\n const e = decodeColExprCore(ej.value);\n return e.ok ? cok<ColExpr>({ kind: 'apply', fn, args: [e.value] }) : e;\n }\n return cerr(\n `unknown column type '${k.value}'; expected one of: col, lit, param, binary, not, coalesce, case, cast, apply, in, isNull`,\n );\n }\n }\n};\n\nconst decodePairCore = (j: JsonAst): CR<ColPair> => {\n const fo = cFields(j);\n if (!fo.ok) return fo;\n const a = cStrField(fo.value, 'a');\n if (!a.ok) return a;\n const b = cStrField(fo.value, 'b');\n return b.ok ? cok<ColPair>({ a: a.value, b: b.value }) : b;\n};\n\nconst decodeAggCore = (j: JsonAst): CR<Agg> => {\n // fuaran-core#92 — aggregate-entry aliases: `as` for `name`, `op` for `fn`, `column` for `of`;\n // AggFn alias `avg` -> `mean`.\n const fo = cFields(j);\n if (!fo.ok) return fo;\n const nameEl = cFieldAliased(fo.value, 'name', 'as');\n if (!nameEl.ok) return nameEl;\n const name = cStr(nameEl.value);\n if (!name.ok) return name;\n const fnEl = cFieldAliased(fo.value, 'fn', 'op');\n if (!fnEl.ok) return fnEl;\n const fnStr = cStr(fnEl.value);\n if (!fnStr.ok) return fnStr;\n const fnv = fnStr.value === 'avg' ? 'mean' : fnStr.value;\n if (!(AGG_FNS as readonly string[]).includes(fnv)) {\n return cerr(`unknown column type '${fnv}'; expected one of: ${AGG_FNS.join(', ')}`);\n }\n const ofEl = cFieldAliased(fo.value, 'of', 'column');\n if (!ofEl.ok) return ofEl;\n const of = cStr(ofEl.value);\n return of.ok ? cok<Agg>({ name: name.value, fn: fnv as AggFn, of: of.value }) : of;\n};\n\nconst decodeOrderCore = (j: JsonAst): CR<SortKey> => {\n // fuaran-core#92 — sort-key aliases: `column` for `col`, boolean `descending` for `dir`.\n const fo = cFields(j);\n if (!fo.ok) return fo;\n const colEl = cFieldAliased(fo.value, 'col', 'column');\n if (!colEl.ok) return colEl;\n const col = cStr(colEl.value);\n if (!col.ok) return col;\n // fuaran-core#93 — `direction` is a third spelling; a directionless entry is asc (SQL default).\n const dirEl = fo.value.get('dir') ?? fo.value.get('direction');\n const descEl = fo.value.get('descending');\n const spellings = [fo.value.get('dir'), fo.value.get('direction'), descEl].filter(\n (x) => x !== undefined,\n ).length;\n if (spellings > 1)\n return cerr(\n 'malformed: give ONE of \"dir\" (canonical: asc|desc), \"descending\" (alias boolean), or \"direction\" (alias: asc|desc)',\n );\n if (descEl !== undefined) {\n if (descEl.kind !== 'JBool') return cerr('malformed: \"descending\" must be a JSON boolean');\n return cok<SortKey>({ col: col.value, dir: descEl.value ? 'desc' : 'asc' });\n }\n if (dirEl === undefined) return cok<SortKey>({ col: col.value, dir: 'asc' });\n const dir = cStr(dirEl);\n if (!dir.ok) return dir;\n // Port of F# `dirOf`: only \"desc\" → Desc; anything else → Asc.\n return cok<SortKey>({ col: col.value, dir: dir.value === 'desc' ? 'desc' : 'asc' });\n};\n\n/** A `Transform` step — port of F# `DataFrameCodec.decodeTransform`. */\nconst decodeTransformCore = (j: JsonAst): CR<Transform> => {\n const fo = cFields(j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const k = cStrField(f, '$type');\n if (!k.ok) return k;\n switch (k.value) {\n case 'filter': {\n // Phase 89 (fuaran-core, mirrored) — the flat filter-step prior\n // {column, op, param|value} coerces to the canonical nested predicate.\n // fuaran-core#93 — `predicate` aliases `pred`.\n const pj0 = f.get('pred');\n const pj1 = f.get('predicate');\n if (pj0 !== undefined && pj1 !== undefined)\n return cerr('malformed: give \"pred\" (canonical) or \"predicate\" (alias), not both');\n const pj = pj0 ?? pj1;\n if (pj !== undefined) {\n const pred = decodeColExprCore(pj);\n return pred.ok ? cok<Transform>({ kind: 'filter', pred: pred.value }) : pred;\n }\n const colEl = f.get('column');\n const opEl = f.get('op');\n if (colEl !== undefined && opEl !== undefined) {\n const col = cStr(colEl);\n if (!col.ok) return col;\n const op = cStr(opEl);\n if (!op.ok) return op;\n if (!(BIN_OPS as readonly string[]).includes(op.value))\n return cerr(`unknown column type '${op.value}'; expected one of: ${BIN_OPS.join(', ')}`);\n const paramEl = f.get('param');\n const valueEl = f.get('value');\n if (paramEl !== undefined && valueEl !== undefined)\n return cerr(\n 'malformed: flat filter step: give exactly ONE of \"param\" (a pipeline param name) or \"value\" (a scalar literal), not both',\n );\n let rhs: ColExpr;\n if (paramEl !== undefined) {\n const pName = cStr(paramEl);\n if (!pName.ok) return pName;\n rhs = { kind: 'param', name: pName.value };\n } else if (valueEl !== undefined) {\n if (valueEl.kind === 'JString')\n rhs = { kind: 'lit', cell: { kind: 'Str', value: valueEl.value } };\n else if (valueEl.kind === 'JNumber')\n rhs = Number.isInteger(valueEl.value)\n ? { kind: 'lit', cell: { kind: 'Int', value: valueEl.value } }\n : { kind: 'lit', cell: { kind: 'Float', value: valueEl.value } };\n else if (valueEl.kind === 'JBool')\n rhs = { kind: 'lit', cell: { kind: 'Bool', value: valueEl.value } };\n else\n return cerr(\n 'malformed: flat filter step: \"value\" must be a scalar (string/int/float/bool)',\n );\n } else\n return cerr(\n 'malformed: flat filter step: {column, op} needs \"param\" (a pipeline param name) or \"value\" (a scalar literal) as the right-hand side',\n );\n return cok<Transform>({\n kind: 'filter',\n pred: {\n kind: 'binary',\n op: op.value as BinOp,\n left: { kind: 'col', name: col.value },\n right: rhs,\n },\n });\n }\n return cerr(\n 'malformed: a filter step carries \"pred\" (a $type-discriminated expression: binary/col/param/lit/apply) — or the flat short form {\"column\":…,\"op\":…,\"param\":…|\"value\":…}',\n );\n }\n case 'project': {\n const cj = cField(f, 'cols');\n if (!cj.ok) return cj;\n const a = cArr(cj.value);\n if (!a.ok) return a;\n const cols = cMapM(a.value, decodePairCore);\n return cols.ok ? cok<Transform>({ kind: 'project', cols: cols.value }) : cols;\n }\n case 'derive': {\n const name = cStrField(f, 'name');\n if (!name.ok) return name;\n const ej = cField(f, 'expr');\n if (!ej.ok) return ej;\n const expr = decodeColExprCore(ej.value);\n return expr.ok\n ? cok<Transform>({ kind: 'derive', name: name.value, expr: expr.value })\n : expr;\n }\n case 'groupBy': {\n // fuaran-core#92 — `by` (pandas prior) aliases `keys`; `aggregations` aliases `aggs`.\n const kj = cFieldAliased(f, 'keys', 'by');\n if (!kj.ok) return kj;\n const keys = cStrList(kj.value);\n if (!keys.ok) return keys;\n const aj = cFieldAliased(f, 'aggs', 'aggregations');\n if (!aj.ok) return aj;\n const aa = cArr(aj.value);\n if (!aa.ok) return aa;\n const aggs = cMapM(aa.value, decodeAggCore);\n return aggs.ok\n ? cok<Transform>({ kind: 'groupBy', keys: keys.value, aggs: aggs.value })\n : aggs;\n }\n case 'join': {\n const sj = cField(f, 'source');\n if (!sj.ok) return sj;\n const source = decodeDataSource(sj.value);\n if (!source.ok) return source;\n const oj = cField(f, 'on');\n if (!oj.ok) return oj;\n const oa = cArr(oj.value);\n if (!oa.ok) return oa;\n const on = cMapM(oa.value, decodePairCore);\n if (!on.ok) return on;\n const how = cStrField(f, 'how');\n if (!how.ok) return how;\n if (!(JOIN_KINDS as readonly string[]).includes(how.value)) {\n return cerr(\n `unknown column type '${how.value}'; expected one of: ${JOIN_KINDS.join(', ')}`,\n );\n }\n return cok<Transform>({\n kind: 'join',\n source: source.value,\n on: on.value,\n how: how.value as JoinKind,\n });\n }\n case 'window': {\n const pj = cField(f, 'partitionBy');\n if (!pj.ok) return pj;\n const partitionBy = cStrList(pj.value);\n if (!partitionBy.ok) return partitionBy;\n const oj = cField(f, 'orderBy');\n if (!oj.ok) return oj;\n const oa = cArr(oj.value);\n if (!oa.ok) return oa;\n const orderBy = cMapM(oa.value, decodeOrderCore);\n if (!orderBy.ok) return orderBy;\n const fnRaw = cStrField(f, 'fn');\n if (!fnRaw.ok) return fnRaw;\n // Legacy alias — the pre-rename wire tag (2026-07-19); normalises on re-encode.\n const fn = { ok: true as const, value: fnRaw.value === 'cumSum' ? 'cumulSum' : fnRaw.value };\n if (!(WINDOW_FNS as readonly string[]).includes(fn.value)) {\n return cerr(`unknown column type '${fn.value}'; expected one of: ${WINDOW_FNS.join(', ')}`);\n }\n const of = cStrField(f, 'of');\n if (!of.ok) return of;\n const asField = cStrField(f, 'as');\n if (!asField.ok) return asField;\n return cok<Transform>({\n kind: 'window',\n spec: {\n partitionBy: partitionBy.value,\n orderBy: orderBy.value,\n fn: fn.value as WindowFn,\n of: of.value,\n as: asField.value,\n },\n });\n }\n case 'pivot': {\n const ij = cField(f, 'index');\n if (!ij.ok) return ij;\n const index = cStrList(ij.value);\n if (!index.ok) return index;\n const on = cStrField(f, 'on');\n if (!on.ok) return on;\n const values = cStrField(f, 'values');\n if (!values.ok) return values;\n const agg = cStrField(f, 'agg');\n if (!agg.ok) return agg;\n if (!(AGG_FNS as readonly string[]).includes(agg.value)) {\n return cerr(`unknown column type '${agg.value}'; expected one of: ${AGG_FNS.join(', ')}`);\n }\n return cok<Transform>({\n kind: 'pivot',\n spec: { index: index.value, on: on.value, values: values.value, agg: agg.value as AggFn },\n });\n }\n case 'unpivot': {\n const ij = cField(f, 'idVars');\n if (!ij.ok) return ij;\n const idVars = cStrList(ij.value);\n if (!idVars.ok) return idVars;\n const vj = cField(f, 'valueVars');\n if (!vj.ok) return vj;\n const valueVars = cStrList(vj.value);\n return valueVars.ok\n ? cok<Transform>({ kind: 'unpivot', idVars: idVars.value, valueVars: valueVars.value })\n : valueVars;\n }\n case 'sort': {\n // fuaran-core#92 — `keys` (SQL ORDER-BY-list prior) aliases `by`.\n const bj = cFieldAliased(f, 'by', 'keys');\n if (!bj.ok) return bj;\n const ba = cArr(bj.value);\n if (!ba.ok) return ba;\n const by = cMapM(ba.value, decodeOrderCore);\n return by.ok ? cok<Transform>({ kind: 'sort', by: by.value }) : by;\n }\n case 'distinct':\n return cok<Transform>({ kind: 'distinct' });\n case 'limit': {\n // fuaran-core#92 — `count` aliases `n`; an absent `offset` is unambiguously 0.\n const nj = cFieldAliased(f, 'n', 'count');\n if (!nj.ok) return nj;\n const n = cInt(nj.value);\n if (!n.ok) return n;\n const oj = f.get('offset');\n const offset = oj === undefined ? cok(0) : cInt(oj);\n return offset.ok\n ? cok<Transform>({ kind: 'limit', n: n.value, offset: offset.value })\n : offset;\n }\n case 'union': {\n const sj = cField(f, 'source');\n if (!sj.ok) return sj;\n const source = decodeDataSource(sj.value);\n return source.ok ? cok<Transform>({ kind: 'union', source: source.value }) : source;\n }\n default:\n return cerr(\n `unknown column type '${k.value}'; expected one of: filter, project, derive, groupBy, join, window, pivot, unpivot, sort, distinct, limit, union`,\n );\n }\n};\n\nconst decodePipelineCore = (j: JsonAst): CR<Transform[]> => {\n if (j.kind !== 'JArray') {\n return cerr('malformed: pipeline: expected a JSON array of transform steps');\n }\n return cMapM(j.items, decodeTransformCore);\n};\n\n/**\n * Decode the `args` array of a `Binding.Invoke` / `Action.Invoke` (Phase 283) —\n * `[{\"addr\",\"value\"}]` scalar pairs. Shared by both decoders; surfaces the\n * standard `DecodeError` surface (byte-identical paths/codes to the F# decoder).\n */\nconst decodeInvokeArgs = (path: string, j: JsonAst): R<InvokeArg[]> => {\n if (j.kind !== 'JArray') return wrongType(path, 'JSON array of invoke args');\n return traverseIndexed(j.items, (i, el) => {\n const p = `${path}[${i}]`;\n const m = requireObject(p, el);\n if (!m.ok) return m;\n const addr = reqField(p, m.value, 'addr', 'invoke arg addr string', requireString);\n if (!addr.ok) return addr;\n const value = reqField(p, m.value, 'value', 'invoke arg value string', requireString);\n if (!value.ok) return value;\n return ok<InvokeArg>({ addr: addr.value, value: value.value });\n });\n};\n\n/**\n * Phase 429 — the typed-static-payload seam (mirror of F# `bindingGeneric`'s\n * `parseStatic` / `placeholder` parameters). `parseStatic` decodes the slot's\n * `Static.value` / `State.defaultValue` payload; `placeholder` is the typed\n * fallback for an absent / unparseable `State` default. The defaults preserve\n * the generic behaviour exactly (faithful AST value; `\"<opaque>\"` fallback);\n * the enumerated slot-typed wrappers below supply the typed pair.\n */\nconst decodeBinding = (\n path: string,\n j: JsonAst,\n parseStatic: (p: string, v: JsonAst) => R<unknown> = (_p, v) => ok(decodeAstValue(v)),\n placeholder: unknown = OPAQUE,\n): R<Binding<unknown>> => {\n // Lenient AI-ingest shape coercion (WIRE_FORMAT.md §3.6): a bare JSON array\n // where a Binding is expected is accepted as `Static` with the array as its\n // value — `options: [\"A\",\"B\"]` (the HTML select prior) and `data: [1,2,3]`\n // (the Chart.js prior). Unambiguous: every Binding case is a\n // `$type`-discriminated object, so an array can only mean Static.\n // Decode-only — the canonical encoder still emits the envelope. Bare\n // scalars/objects stay strict: an object without `$type` is more plausibly\n // a mistyped binding than a Static value. Mirror of F# `bindingGeneric`.\n // Extended 2026-07-17 second wave: bare SCALARS coerce too (fraction: 0.9,\n // activeStep: 1 — launch-eval evidence); null / untyped objects stay strict.\n if (j.kind === 'JArray' || j.kind === 'JString' || j.kind === 'JNumber' || j.kind === 'JBool') {\n const parsed = parseStatic(path, j);\n return parsed.ok ? ok({ kind: 'Static', value: parsed.value }) : parsed;\n }\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n case 'Static': {\n // Phase 677 — absence is structural: a MISSING `value` means the binding\n // carries none. The legacy `\"value\": null` form still decodes (§16\n // shorthand) by routing to the very same per-slot absent handling, so the\n // two spellings cannot disagree.\n const raw = f.get('value') ?? ({ kind: 'JNull' } as const);\n const parsed = parseStatic(`${path}.value`, raw);\n return parsed.ok ? ok({ kind: 'Static', value: parsed.value }) : parsed;\n }\n case 'Query': {\n const r = reqField(path, f, 'name', 'query name string', requireString);\n if (!r.ok) return r;\n // Phase 421 — optional `dependsOn` string array (the declared filter edge); absent → omitted.\n const dependsOnField = fieldAliased(f, 'dependsOn', ['deps', 'dependencies']);\n let dependsOn: readonly string[] | undefined;\n if (dependsOnField !== undefined) {\n const arr = requireArray(`${path}.dependsOn`, dependsOnField);\n if (!arr.ok) return arr;\n const strs = traverseIndexed(arr.value, (_i, el) =>\n requireString(`${path}.dependsOn[]`, el),\n );\n if (!strs.ok) return strs;\n dependsOn = strs.value;\n }\n // Phase 421 identity-accessor fix: project the host's queryResults value straight through\n // (`(raw) => raw`) instead of discarding it, so host-fed data flows through decoded trees.\n return ok({\n kind: 'Query',\n name: r.value,\n accessor: (raw: unknown) => raw,\n ...(dependsOn !== undefined ? { dependsOn } : {}),\n });\n }\n case 'Filter': {\n const r = reqField(path, f, 'name', 'filter name string', requireString);\n if (!r.ok) return r;\n // 0.2.0 — optional `defaultValue`: the value the resolver yields (and\n // the renderer seeds the store with) before the filter is first\n // written. Decoded through the slot's typed static parser, mirroring\n // `State.defaultValue`; an absent / unparseable default stays omitted.\n const dv = tryField(f, 'defaultValue');\n let defaultValue: unknown;\n let hasDefault = false;\n if (dv !== undefined) {\n const parsed = parseStatic(`${path}.defaultValue`, dv);\n if (parsed.ok) {\n defaultValue = parsed.value;\n hasDefault = true;\n }\n }\n const b: Binding<unknown> = {\n kind: 'Filter',\n name: r.value,\n ...(hasDefault ? { defaultValue } : {}),\n };\n return ok(b);\n }\n case 'Selection': {\n const r = reqField(path, f, 'nodeId', 'selection NodeId string', requireString);\n if (!r.ok) return r;\n // 0.2.9 (Phase 629) — optional `defaultValue`, the `Filter.defaultValue`\n // convention: yielded until the user first selects a row on `nodeId`.\n const dv = tryField(f, 'defaultValue');\n let defaultValue: unknown;\n let hasDefault = false;\n if (dv !== undefined) {\n const parsed = parseStatic(`${path}.defaultValue`, dv);\n if (parsed.ok) {\n defaultValue = parsed.value;\n hasDefault = true;\n }\n }\n // Phase 427 identity-accessor fix (the 421 `Query` fix replayed): a\n // decoded `Selection` projects the stored row straight through instead\n // of a value-discarding placeholder, so a written selection flows to\n // decoded readers.\n //\n // 0.2.10 (Phase 632) — optional `field`: the declarative row-field\n // projection. Present ⇒ the accessor projects that field off the\n // clicked row (the grid writes the FULL row), so the binding stays\n // scalar after a real click; absent ⇒ the 427 identity, pre-632\n // behaviour byte-for-byte. A missing field / non-row value throws in\n // the accessor — the resolver's loud path, never silent.\n const fv = tryField(f, 'field');\n let field: string | undefined;\n if (fv !== undefined) {\n const s = requireString(`${path}.field`, fv);\n if (s.ok) field = s.value;\n }\n const accessor: (raw: unknown) => unknown =\n field !== undefined ? projectSelectionField(field) : (raw: unknown) => raw;\n const b: Binding<unknown> = {\n kind: 'Selection',\n nodeId: r.value as NodeId,\n accessor,\n ...(hasDefault ? { defaultValue } : {}),\n ...(field !== undefined ? { field } : {}),\n };\n return ok(b);\n }\n case 'State': {\n const key = reqField(path, f, 'key', 'state key string', requireString);\n if (!key.ok) return key;\n // Decode the carried `defaultValue` through the slot's static parser\n // when it parses (Phase 426/429); an absent / unparseable default falls\n // back to the typed placeholder — byte-for-byte with the F# decoder.\n // Phase 677 — an ABSENT default decodes exactly as the legacy\n // `\"defaultValue\": null` did, or the encoder re-emits a placeholder and\n // the round-trip breaks.\n const dv =\n fieldAliased(f, 'defaultValue', ['initialValue', 'default']) ??\n ({ kind: 'JNull' } as const);\n let defaultValue: unknown = placeholder;\n if (dv !== undefined) {\n const parsed = parseStatic(`${path}.defaultValue`, dv);\n if (parsed.ok) defaultValue = parsed.value;\n }\n return ok({ kind: 'State', key: key.value, defaultValue });\n }\n case 'Computed':\n return ok({ kind: 'Computed', compute: () => undefined });\n case 'I18n': {\n const key = reqField(path, f, 'key', 'i18n key string', requireString);\n if (!key.ok) return key;\n const argsJ = tryField(f, 'args');\n if (argsJ === undefined) {\n const b: Binding<unknown> = { kind: 'I18n', key: key.value };\n return ok(b);\n }\n const argsR = decodeBindingArgs(`${path}.args`, argsJ);\n if (!argsR.ok) return argsR;\n const b: Binding<unknown> = { kind: 'I18n', key: key.value, args: argsR.value };\n return ok(b);\n }\n case 'Local': {\n // `initialFrom` recurses with the same typed pair (mirror of the F#\n // `bindingGeneric` recursion).\n const initial = reqField(path, f, 'initialFrom', 'Local InitialFrom Binding', (p, v) =>\n decodeBinding(p, v, parseStatic, placeholder),\n );\n if (!initial.ok) return initial;\n const flushJ = tryField(f, 'flushOn');\n const flush =\n flushJ === undefined\n ? ok<LocalFlushTrigger>({ kind: 'OnBlur' })\n : decodeLocalFlushTrigger(`${path}.flushOn`, flushJ);\n if (!flush.ok) return flush;\n const b: Binding<unknown> = {\n kind: 'Local',\n local: {\n initialFrom: initial.value,\n flushOn: flush.value,\n onCommit: () => undefined,\n parse: () => ({ ok: false, error: CLOSURE }),\n },\n };\n return ok(b);\n }\n case 'Format': {\n // Phase 102: source is always a numeric Binding; format / locale are\n // bounded DUs. The case is structurally independent of the slot type.\n const source = reqField(path, f, 'source', 'Binding<number> source object', decodeBinding);\n if (!source.ok) return source;\n const fmtJ = requireField(path, f, 'format', 'Format DU object');\n if (!fmtJ.ok) return fmtJ;\n const fmt = decodeFormat(`${path}.format`, fmtJ.value);\n if (!fmt.ok) return fmt;\n const locJ = requireField(path, f, 'locale', 'LocaleSource DU object');\n if (!locJ.ok) return locJ;\n const loc = decodeLocaleSource(`${path}.locale`, locJ.value);\n if (!loc.ok) return loc;\n const b: Binding<unknown> = {\n kind: 'Format',\n source: source.value as Binding<number>,\n format: fmt.value,\n locale: loc.value,\n };\n return ok(b);\n }\n case 'Transform': {\n // Phase 282 — the Compute layer. `source` (a DataSource) and `pipeline` (a\n // Transform list) decode through the Core-style structural decoders; a Core\n // decode failure wraps to WRONG_TYPE at `.source` / `.pipeline`, byte-\n // identical to the F# UI host's `coreError` wrapping.\n const srcJ = requireField(path, f, 'source', 'Transform DataSource object');\n if (!srcJ.ok) return srcJ;\n const pipeJ = requireField(path, f, 'pipeline', 'Transform pipeline array');\n if (!pipeJ.ok) return pipeJ;\n const src = decodeDataSource(srcJ.value);\n if (!src.ok) return makeError('WRONG_TYPE', `${path}.source`, src.error);\n const pipe = decodePipelineCore(pipeJ.value);\n if (!pipe.ok) return makeError('WRONG_TYPE', `${path}.pipeline`, pipe.error);\n // Phase 424 — optional `params`: [{ from: <Binding>, name: <string> }, …] binding each\n // `ColExpr.Param` name to a scalar source. Absent → omitted (byte-identical to Phase 282).\n const paramsField = tryField(f, 'params');\n let params: readonly TransformParam[] | undefined;\n if (paramsField !== undefined && paramsField.kind === 'JObject') {\n // Lenient AI-ingest (WIRE_FORMAT.md 3.6, 2026-07-17): the name->binding\n // MAP form coerces to the canonical [{name, from}] array — params are a\n // name-keyed set, so key order carries no meaning. Mirror of F#\n // (Map.toList = sorted keys; sorted here to match).\n const entries = [...paramsField.fields.entries()].sort(([a], [b]) =>\n a < b ? -1 : a > b ? 1 : 0,\n );\n const out: TransformParam[] = [];\n let coerceErr: R<never> | undefined;\n for (const [name, v] of entries) {\n const from = decodeBinding(`${path}.params.${name}.from`, v);\n if (!from.ok) {\n coerceErr = from;\n break;\n }\n out.push({ name, from: from.value });\n }\n if (coerceErr !== undefined) return coerceErr;\n params = out;\n } else if (paramsField !== undefined) {\n const arr = requireArray(`${path}.params`, paramsField);\n if (!arr.ok) return arr;\n const decoded = traverseIndexed(arr.value, (_i, el) => {\n const po = requireObject(`${path}.params[]`, el);\n if (!po.ok) return po;\n const name = reqField(\n `${path}.params[]`,\n po.value,\n 'name',\n 'param name string',\n requireString,\n );\n if (!name.ok) return name;\n // Field alias: value — the observed repair-attempt shape ({name, value}).\n const from = reqFieldAliased(\n `${path}.params[]`,\n po.value,\n 'from',\n ['value'],\n 'param source Binding',\n decodeBinding,\n );\n if (!from.ok) return from;\n return ok<TransformParam>({ name: name.value, from: from.value });\n });\n if (!decoded.ok) return decoded;\n params = decoded.value;\n }\n const b: Binding<unknown> = {\n kind: 'Transform',\n source: src.value,\n pipeline: pipe.value,\n ...(params !== undefined ? { params } : {}),\n };\n return ok(b);\n }\n case 'Invoke': {\n // Phase 283 — host-registered capability dispatched for a value.\n const cid = reqField(path, f, 'capabilityId', 'capability id string', requireString);\n if (!cid.ok) return cid;\n const argsJ = requireField(path, f, 'args', 'invoke args array');\n if (!argsJ.ok) return argsJ;\n const args = decodeInvokeArgs(`${path}.args`, argsJ.value);\n if (!args.ok) return args;\n const b: Binding<unknown> = { kind: 'Invoke', capabilityId: cid.value, args: args.value };\n return ok(b);\n }\n // 0.2.12 (Phase 633) — the `TextSource.Bound` wrapper convention\n // transferred to a bare-Binding slot: models emit\n // {\"$type\":\"Bound\",\"binding\":X} in Metric.value / LabelValueRow etc.\n // `Bound` carries exactly one payload field, so the unwrap is one-to-one:\n // decode the inner binding in place. Decode-only — the canonical encoder\n // never wraps bare-Binding slots.\n case 'Bound': {\n const inner = requireField(path, f, 'binding', 'the wrapped Binding object');\n if (!inner.ok) return inner;\n return decodeBinding(`${path}.binding`, inner.value, parseStatic, placeholder);\n }\n default:\n return unknownDuCase(\n path,\n d.value,\n 'Static | Query | Filter | Selection | State | Computed | I18n | Local | Format | Transform | Invoke',\n );\n }\n};\n\nconst decodeBindingArgs = (path: string, j: JsonAst): R<Record<string, Binding<JsonValue>>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const out: Record<string, Binding<JsonValue>> = {};\n for (const [k, v] of fo.value) {\n const r = decodeBinding(`${path}.${k}`, v);\n if (!r.ok) return r;\n out[k] = r.value as Binding<JsonValue>;\n }\n return ok(out);\n};\n\nconst decodeBindingString = (p: string, j: JsonAst): R<Binding<string>> =>\n decodeBinding(p, j) as R<Binding<string>>;\nconst decodeBindingBool = (p: string, j: JsonAst): R<Binding<boolean>> =>\n decodeBinding(p, j) as R<Binding<boolean>>;\n\n// ─── Typed Static payload decoders (Phase 429) ───────────────────────────────\n//\n// Mirrors of the F# `decodeBinding*` family: the typed wire form is preferred\n// (the encoder emits it since 429), the legacy `\"<opaque>\"` sentinel decodes\n// to a tagged placeholder (whose typed re-encode is byte-stable across both\n// hosts), and JSON `null` — the pre-429 F# boxes-to-null empty-collection\n// form — decodes to the typed empty. Only genuinely host-typed payloads\n// (grid/table row seqs) stay on the generic `decodeAstValue` path by design.\n\nconst OPTIONS_PLACEHOLDER: readonly SelectOption[] = [\n { value: OPAQUE, label: { kind: 'Literal', value: OPAQUE } },\n];\n\nconst decodeSelectOption = (path: string, j: JsonAst): R<SelectOption> => {\n // Lenient AI-ingest shape coercion (WIRE_FORMAT.md §3.6): a bare string\n // element coerces to `{value: s, label: Literal s}` — the HTML `<select>`\n // prior. The value→label map form (`{\"A\":\"A\"}`) is deliberately NOT\n // coerced: JSON key order is not contractual, so it could silently reorder\n // visible options. Mirror of F# `decodeSelectOption`.\n if (j.kind === 'JString') {\n return ok<SelectOption>({ value: j.value, label: { kind: 'Literal', value: j.value } });\n }\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const value = reqField(path, fo.value, 'value', 'option value string', requireString);\n if (!value.ok) return value;\n const label = reqField(path, fo.value, 'label', 'option label TextSource', decodeTextSource);\n if (!label.ok) return label;\n return ok<SelectOption>({ value: value.value, label: label.value });\n};\n\nconst parseStaticSelectOptions = (p: string, v: JsonAst): R<unknown> => {\n if (v.kind === 'JNull') return ok([]); // pre-429 read-compat: empty list boxed to `null`\n if (v.kind === 'JString' && v.value === OPAQUE) return ok(OPTIONS_PLACEHOLDER);\n const arr = requireArray(p, v);\n if (!arr.ok) return arr;\n return traverseIndexed(arr.value, (i, el) => decodeSelectOption(`${p}[${i}]`, el));\n};\n\nconst decodeBindingSelectOptions = (p: string, j: JsonAst): R<Binding<readonly SelectOption[]>> =>\n decodeBinding(p, j, parseStaticSelectOptions, OPTIONS_PLACEHOLDER) as R<\n Binding<readonly SelectOption[]>\n >;\n\nconst parseStaticStringOpt = (p: string, v: JsonAst): R<unknown> => {\n if (v.kind === 'JNull') return ok(undefined);\n if (v.kind === 'JString') return ok(v.value); // includes the opaque sentinel (read-compat)\n return wrongType(p, 'JSON string or null (string option)');\n};\n\nconst decodeBindingStringOpt = (p: string, j: JsonAst): R<Binding<string | undefined>> =>\n decodeBinding(p, j, parseStaticStringOpt, OPAQUE) as R<Binding<string | undefined>>;\n\nconst parseStaticFloatPair = (p: string, v: JsonAst): R<unknown> => {\n // 0.2.0 — the dual-thumb Range control's [min, max] pair. Static forms:\n // the object `{min, max}` (canonical) or a two-element array (lenient).\n if (v.kind === 'JObject') {\n const mn = v.fields.get('min');\n const mx = v.fields.get('max');\n if (mn !== undefined && mx !== undefined) {\n const a = requireFloat(`${p}.min`, mn);\n if (!a.ok) return a;\n const b = requireFloat(`${p}.max`, mx);\n if (!b.ok) return b;\n return ok([a.value, b.value] as const);\n }\n return wrongType(p, 'object with min and max numbers');\n }\n if (v.kind === 'JArray' && v.items.length === 2) {\n const a = requireFloat(`${p}[0]`, v.items[0] as JsonAst);\n if (!a.ok) return a;\n const b = requireFloat(`${p}[1]`, v.items[1] as JsonAst);\n if (!b.ok) return b;\n return ok([a.value, b.value] as const);\n }\n return wrongType(p, 'range pair ({min, max} object or [min, max] array)');\n};\n\nconst decodeBindingFloatPair = (p: string, j: JsonAst): R<Binding<readonly [number, number]>> => {\n // The canonical Static pair rides as the BARE `{min, max}` object (the\n // Phase-423 range shape, no envelope) — accept it before the generic\n // binding dispatch, which would otherwise demand a `$type`.\n if (\n j.kind === 'JObject' &&\n j.fields.get('$type') === undefined &&\n j.fields.get('min') !== undefined &&\n j.fields.get('max') !== undefined\n ) {\n const parsed = parseStaticFloatPair(p, j);\n return parsed.ok\n ? ok({ kind: 'Static', value: parsed.value as readonly [number, number] })\n : parsed;\n }\n return decodeBinding(p, j, parseStaticFloatPair, [0, 0] as const) as R<\n Binding<readonly [number, number]>\n >;\n};\n\nconst parseStaticStringPair = (p: string, v: JsonAst): R<unknown> => {\n // Phase 725 — the DateRange control's (from, to) ISO-8601 pair. Mirrors\n // `parseStaticFloatPair`: the bare `{from, to}` object is canonical, a\n // two-element `[from, to]` array is the §3.6 lenient coercion.\n //\n // Didactic domain rule: a LITERAL pair must be ordered. Same-variant ISO-8601\n // strings sort lexicographically in chronological order, so an ordinal\n // compare is total here — no date parsing, no locale. Only a literal pair is\n // checked; a bound pair's ordering is a runtime concern.\n const ordered = (a: string, b: string): R<readonly [string, string]> =>\n a > b\n ? makeError(\n 'WRONG_TYPE',\n p,\n `date-range start '${a}' is after end '${b}' — a DateRange pair is ordered (from <= to); ISO-8601 strings of one variant compare lexicographically, so swap the two values`,\n 'ordered ISO-8601 pair ({\"from\": <iso>, \"to\": <iso>} with from <= to)',\n )\n : ok([a, b] as const);\n if (v.kind === 'JObject') {\n const from = v.fields.get('from');\n const to = v.fields.get('to');\n if (from !== undefined && to !== undefined) {\n const a = requireString(`${p}.from`, from);\n if (!a.ok) return a;\n const b = requireString(`${p}.to`, to);\n if (!b.ok) return b;\n return ordered(a.value, b.value);\n }\n return wrongType(p, 'object with from and to ISO-8601 strings');\n }\n if (v.kind === 'JArray' && v.items.length === 2) {\n const a = requireString(`${p}[0]`, v.items[0] as JsonAst);\n if (!a.ok) return a;\n const b = requireString(`${p}[1]`, v.items[1] as JsonAst);\n if (!b.ok) return b;\n return ordered(a.value, b.value);\n }\n return wrongType(p, 'date-range pair ({from, to} object or [from, to] array)');\n};\n\nconst decodeBindingStringPair = (p: string, j: JsonAst): R<Binding<readonly [string, string]>> => {\n // The canonical Static pair rides as the BARE `{from, to}` object (the\n // `Range` posture, no envelope) — accept it before the generic binding\n // dispatch, which would otherwise demand a `$type`.\n if (\n j.kind === 'JObject' &&\n j.fields.get('$type') === undefined &&\n j.fields.get('from') !== undefined &&\n j.fields.get('to') !== undefined\n ) {\n const parsed = parseStaticStringPair(p, j);\n return parsed.ok\n ? ok({ kind: 'Static', value: parsed.value as readonly [string, string] })\n : parsed;\n }\n return decodeBinding(p, j, parseStaticStringPair, ['', ''] as const) as R<\n Binding<readonly [string, string]>\n >;\n};\n\nconst parseStaticStringList = (p: string, v: JsonAst): R<unknown> => {\n if (v.kind === 'JNull') return ok([]);\n if (v.kind === 'JString' && v.value === OPAQUE) return ok([OPAQUE]);\n const arr = requireArray(p, v);\n if (!arr.ok) return arr;\n return traverseIndexed(arr.value, (i, el) => requireString(`${p}[${i}]`, el));\n};\n\nconst decodeBindingStringList = (p: string, j: JsonAst): R<Binding<readonly string[]>> =>\n decodeBinding(p, j, parseStaticStringList, [OPAQUE]) as R<Binding<readonly string[]>>;\n\nconst parseStaticFloatSeq = (p: string, v: JsonAst): R<unknown> => {\n if (v.kind === 'JNull') return ok([]); // pre-429 read-compat: empty list-backed seq boxed to `null`\n if (v.kind === 'JString' && v.value === OPAQUE) return ok([]);\n const arr = requireArray(p, v);\n if (!arr.ok) return arr;\n return traverseIndexed(arr.value, (i, el) => requireFloat(`${p}[${i}]`, el));\n};\n\nconst decodeBindingFloatSeq = (p: string, j: JsonAst): R<Binding<readonly number[]>> =>\n decodeBinding(p, j, parseStaticFloatSeq, []) as R<Binding<readonly number[]>>;\n\nconst decodeMapMarker = (path: string, j: JsonAst): R<MapMarker> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const label = reqField(path, fo.value, 'label', 'marker label TextSource', decodeTextSource);\n if (!label.ok) return label;\n const latitude = reqField(path, fo.value, 'latitude', 'marker latitude float', requireFloat);\n if (!latitude.ok) return latitude;\n const longitude = reqField(path, fo.value, 'longitude', 'marker longitude float', requireFloat);\n if (!longitude.ok) return longitude;\n return ok<MapMarker>({\n label: label.value,\n latitude: latitude.value,\n longitude: longitude.value,\n });\n};\n\nconst parseStaticMarkerSeq = (p: string, v: JsonAst): R<unknown> => {\n if (v.kind === 'JNull') return ok([]); // pre-429 read-compat: empty list-backed seq boxed to `null`\n if (v.kind === 'JString' && v.value === OPAQUE) return ok([]);\n const arr = requireArray(p, v);\n if (!arr.ok) return arr;\n return traverseIndexed(arr.value, (i, el) => decodeMapMarker(`${p}[${i}]`, el));\n};\n\nconst decodeBindingMarkerSeq = (p: string, j: JsonAst): R<Binding<readonly MapMarker[]>> =>\n decodeBinding(p, j, parseStaticMarkerSeq, []) as R<Binding<readonly MapMarker[]>>;\n\n// ─── TextSource / SelectOption ───────────────────────────────────────────────\n\nconst decodeTextSource = (path: string, j: JsonAst): R<TextSource> => {\n // 0.2.0 — the bare JSON string IS the canonical Literal form (the encoder\n // emits it); the `{\"$type\":\"Literal\"}` envelope stays decode-accepted, so\n // pre-0.2.0 trees keep parsing. Byte-for-byte with the F# decoder.\n if (j.kind === 'JString') return ok({ kind: 'Literal', value: j.value });\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n case 'Literal': {\n const r = reqField(path, f, 'text', 'literal text string', requireString);\n return r.ok ? ok({ kind: 'Literal', value: r.value }) : r;\n }\n case 'Bound': {\n const r = reqField(path, f, 'binding', 'Binding<string> object', decodeBindingString);\n if (!r.ok) return r;\n const t: TextSource = { kind: 'Bound', binding: r.value };\n return ok(t);\n }\n case 'I18n': {\n const key = reqField(path, f, 'key', 'i18n key string', requireString);\n if (!key.ok) return key;\n const argsJ = tryField(f, 'args');\n if (argsJ === undefined) {\n const t: TextSource = { kind: 'I18n', key: key.value, args: {} };\n return ok(t);\n }\n const args = decodeJValMap(`${path}.args`, argsJ);\n if (!args.ok) return args;\n const t: TextSource = { kind: 'I18n', key: key.value, args: args.value };\n return ok(t);\n }\n default:\n return unknownDuCase(path, d.value, 'Literal | Bound | I18n');\n }\n};\n\n// ─── Action ──────────────────────────────────────────────────────────────────\n\nconst decodeAction = (path: string, j: JsonAst): R<Action<unknown>> => {\n // 0.2.2 DIDACTIC — a bare string in an Action slot (the \"<closure>\"\n // sentinel written as the value). Never coerced (a sentinel action would\n // be a dead control passing the gate); the error names the fix.\n if (j.kind === 'JString') {\n const s = j.value.length > 24 ? j.value.slice(0, 24) + '…' : j.value;\n return wrongType(\n path,\n `JSON object, got the string '${s}' — an action is a $type-discriminated object (SetState | Navigate | Call | Notify | Chain | AiTool | WriteToClipboard | Invoke); \"<closure>\" is not authorable. Pick a real action, e.g. {\"$type\":\"SetState\",\"key\":…,\"value\":…}`,\n );\n }\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n case 'Dispatch':\n return ok({ kind: 'Dispatch', msg: CLOSURE });\n case 'Call': {\n const r = reqFieldAliased(path, f, 'endpoint', ['url'], 'ApiEndpoint string', requireString);\n if (!r.ok) return r;\n // Phase 428: a present `\"<closure>\"` onResult → the inert placeholder;\n // absent → omitted. `into` is the optional declarative result target.\n const intoJ = tryField(f, 'into');\n let into: CallResultTarget | undefined;\n if (intoJ !== undefined) {\n const io = requireObject(`${path}.into`, intoJ);\n if (!io.ok) return io;\n const id = requireDiscriminator(`${path}.into`, io.value);\n if (!id.ok) return id;\n if (id.value === 'State') {\n const key = reqField(`${path}.into`, io.value, 'key', 'state key string', requireString);\n if (!key.ok) return key;\n into = { kind: 'State', key: key.value };\n } else if (id.value === 'Query') {\n const name = reqField(\n `${path}.into`,\n io.value,\n 'name',\n 'query name string',\n requireString,\n );\n if (!name.ok) return name;\n into = { kind: 'Query', name: name.value };\n } else {\n return unknownDuCase(`${path}.into`, id.value, 'State | Query');\n }\n }\n return ok({\n kind: 'Call',\n endpoint: r.value as import('@fuaran-ui/schema').ApiEndpoint,\n ...(tryField(f, 'onResult') !== undefined ? { onResult: () => CLOSURE } : {}),\n ...(into !== undefined ? { into } : {}),\n });\n }\n case 'Notify': {\n const channel = reqField(path, f, 'channel', 'notification channel string', requireString);\n if (!channel.ok) return channel;\n const payloadJ = requireField(path, f, 'payload', 'JsonValue payload');\n if (!payloadJ.ok) return payloadJ;\n const payload = decodeJVal(`${path}.payload`, payloadJ.value);\n return payload.ok\n ? ok({ kind: 'Notify', channel: channel.value, payload: payload.value })\n : payload;\n }\n case 'Navigate': {\n const r = reqFieldAliased(\n path,\n f,\n 'route',\n ['href', 'url', 'to'],\n 'route string',\n requireString,\n );\n return r.ok ? ok({ kind: 'Navigate', route: r.value }) : r;\n }\n case 'SetState': {\n const key = reqField(path, f, 'key', 'state key string', requireString);\n if (!key.ok) return key;\n const valueJ = requireField(path, f, 'value', 'JsonValue value');\n if (!valueJ.ok) return valueJ;\n const value = decodeJVal(`${path}.value`, valueJ.value);\n return value.ok ? ok({ kind: 'SetState', key: key.value, value: value.value }) : value;\n }\n case 'AiTool': {\n const name = reqField(path, f, 'toolName', 'AI tool name string', requireString);\n if (!name.ok) return name;\n const argsJ = requireField(path, f, 'args', 'JsonValue args');\n if (!argsJ.ok) return argsJ;\n const args = decodeJVal(`${path}.args`, argsJ.value);\n return args.ok ? ok({ kind: 'AiTool', toolName: name.value, args: args.value }) : args;\n }\n case 'Chain': {\n const opsJ = requireField(path, f, 'ops', 'Action list (Chain)');\n if (!opsJ.ok) return opsJ;\n const arr = requireArray(`${path}.ops`, opsJ.value);\n if (!arr.ok) return arr;\n const inner = traverseIndexed(arr.value, (i, item) =>\n decodeAction(`${path}.ops[${i}]`, item),\n );\n return inner.ok ? ok({ kind: 'Chain', actions: inner.value }) : inner;\n }\n case 'CommitLocal': {\n const r = reqField(path, f, 'nodeId', 'Local-bound input NodeId string', requireString);\n return r.ok ? ok({ kind: 'CommitLocal', nodeId: r.value }) : r;\n }\n case 'WriteToClipboard': {\n const r = reqField(path, f, 'text', 'clipboard payload string', requireString);\n return r.ok ? ok({ kind: 'WriteToClipboard', text: r.value }) : r;\n }\n case 'ReadFileBody': {\n // Phase 136 — only fileRef (the opaque id) + encoding cross the wire.\n // The decoded FileRef carries no handle (no blob on a decoded tree);\n // onRead reconstructs as a no-op closure that re-encodes to \"<closure>\".\n const fileId = reqField(path, f, 'fileRef', 'FileRef id string', requireString);\n if (!fileId.ok) return fileId;\n const enc = reqField(path, f, 'encoding', 'FileReadEncoding', decodeFileReadEncoding);\n return enc.ok\n ? ok({\n kind: 'ReadFileBody',\n file: { id: fileId.value },\n encoding: enc.value,\n onRead: () => CLOSURE,\n })\n : enc;\n }\n case 'Invoke': {\n // Phase 283 — capability invoked as an effect; same wire shape as Binding.Invoke.\n const cid = reqField(path, f, 'capabilityId', 'capability id string', requireString);\n if (!cid.ok) return cid;\n const argsJ = requireField(path, f, 'args', 'invoke args array');\n if (!argsJ.ok) return argsJ;\n const args = decodeInvokeArgs(`${path}.args`, argsJ.value);\n if (!args.ok) return args;\n return ok({ kind: 'Invoke', capabilityId: cid.value, args: args.value });\n }\n default:\n return unknownDuCase(\n path,\n d.value,\n 'Dispatch | Call | Notify | Navigate | SetState | AiTool | Chain | CommitLocal | WriteToClipboard | ReadFileBody | Invoke',\n );\n }\n};\n\n// ─── Display specs ───────────────────────────────────────────────────────────\n\nconst placeholderAction: Action<unknown> = { kind: 'Chain', actions: [] };\nconst onChangePlaceholder = (): Action<unknown> => placeholderAction;\n\nconst decodeMetricSpec = (path: string, j: JsonAst): R<MetricSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const label = reqField(path, f, 'label', 'Metric label TextSource', decodeTextSource);\n if (!label.ok) return label;\n // 0.2.0 rename law: the scalar displayed value is `value` (clean break —\n // the old `source` name is NOT an accepted alias; `data` is the web prior).\n const source = reqFieldAliased(path, f, 'value', ['data'], 'Metric value binding', decodeBinding);\n if (!source.ok) {\n // DIDACTIC ERROR (2026-07-17): a text value here is the top observed\n // emission error — name the right kind so the structured repair channel\n // self-corrects. Mirror of F#.\n if (source.error.message.includes('expected JSON number')) {\n return {\n ok: false,\n error: {\n ...source.error,\n message:\n source.error.message +\n ' — Metric is numeric-only (trendable KPI); a labeled TEXT fact belongs in Fact: {\"$type\":\"Fact\",\"label\":\\u2026,\"value\":\\u2026}',\n },\n };\n }\n return source;\n }\n // Phase 460 — stylistic fields omitted-when-default; restore the identity\n // default on absence (mirrors the Phase 147 role/voice decode).\n const format = optField(path, f, 'format', decodeCellFormat);\n if (!format.ok) return format;\n const tone = optField(path, f, 'tone', decodeTone);\n if (!tone.ok) return tone;\n const weight = optField(path, f, 'weight', decodeWeight);\n if (!weight.ok) return weight;\n const emphasis = optField(path, f, 'emphasis', decodeEmphasis);\n if (!emphasis.ok) return emphasis;\n const trend = optField(path, f, 'trend', decodeBinding);\n if (!trend.ok) return trend;\n const trendFormat = optField(path, f, 'trendFormat', decodeCellFormat);\n if (!trendFormat.ok) return trendFormat;\n const icon = optField(path, f, 'icon', decodeIconSource);\n if (!icon.ok) return icon;\n const subtext = optField(path, f, 'subtext', decodeTextSource);\n if (!subtext.ok) return subtext;\n return ok({\n label: label.value,\n value: source.value as Binding<number>,\n format: format.value ?? { kind: 'None' },\n tone: tone.value ?? 'Default',\n weight: weight.value ?? 'Standard',\n emphasis: emphasis.value ?? 'Normal',\n ...(trend.value !== undefined ? { trend: trend.value as Binding<number> } : {}),\n ...(trendFormat.value !== undefined ? { trendFormat: trendFormat.value } : {}),\n ...(icon.value !== undefined ? { icon: icon.value } : {}),\n ...(subtext.value !== undefined ? { subtext: subtext.value } : {}),\n });\n};\n\nconst decodeHeadingSpec = (path: string, j: JsonAst): R<HeadingSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const level = reqField(path, f, 'level', 'heading level integer', requireInt);\n if (!level.ok) return level;\n const text = reqField(path, f, 'text', 'heading TextSource', decodeTextSource);\n if (!text.ok) return text;\n const variant = reqField(path, f, 'variant', 'HeadingVariant', decodeHeadingVariant);\n if (!variant.ok) return variant;\n return ok({ level: level.value, text: text.value, variant: variant.value });\n};\n\nconst decodeLabelValueRowSpec = (path: string, j: JsonAst): R<LabelValueRowSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const label = reqField(path, f, 'label', 'row TextSource label', decodeTextSource);\n if (!label.ok) return label;\n const source = reqFieldAliased(\n path,\n f,\n 'value',\n ['data'],\n 'row Binding<float> value',\n decodeBinding,\n );\n if (!source.ok) return source;\n // Phase 460 — `format` omitted-when-default. 0.2.2 — `emphasis` is\n // omitted-when-false (aligning with Fact), and the style-enum prior\n // coerces: \"Loud\" → true, \"Normal\"/\"Quiet\" → false; any other string is a\n // didactic reject naming the bool and where the enum lives.\n const format = optField(path, f, 'format', decodeCellFormat);\n if (!format.ok) return format;\n // 0.2.8 — the cross-vocabulary coercion moved to the shared\n // `decodeEmphasisFlag` (2026-07-19 sweep: the 0.2.2 site-local version\n // missed the Phase-460 aliases — 'Strong' hard-failed here — and Fact's\n // identical flag had no coercion at all).\n const emphasisJ = tryField(f, 'emphasis');\n let emphasisVal = false;\n if (emphasisJ !== undefined) {\n const b = decodeEmphasisFlag(`${path}.emphasis`, emphasisJ);\n if (!b.ok) return b;\n emphasisVal = b.value;\n }\n const help = optField(path, f, 'help', decodeTextSource);\n if (!help.ok) return help;\n return ok({\n label: label.value,\n value: source.value as Binding<number>,\n format: format.value ?? { kind: 'None' },\n emphasis: emphasisVal,\n ...(help.value !== undefined ? { help: help.value } : {}),\n });\n};\n\nconst decodeFactSpec = (path: string, j: JsonAst): R<FactSpec> => {\n // New kind (2026-07-17): minimal wire — only label + value required;\n // tone/emphasis omitted-when-default on both boundaries. Mirror of F#.\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const label = reqField(path, f, 'label', 'fact TextSource label', decodeTextSource);\n if (!label.ok) return label;\n const value = reqField(path, f, 'value', 'fact TextSource value', decodeTextSource);\n if (!value.ok) return value;\n const tone = optField(path, f, 'tone', decodeTone);\n if (!tone.ok) return tone;\n // 0.2.8 — the shared cross-vocabulary reader (enum spellings coerce to the bool).\n const emphasis = optField(path, f, 'emphasis', decodeEmphasisFlag);\n if (!emphasis.ok) return emphasis;\n const help = optField(path, f, 'help', decodeTextSource);\n if (!help.ok) return help;\n const icon = optField(path, f, 'icon', decodeIconSource);\n if (!icon.ok) return icon;\n return ok({\n label: label.value,\n value: value.value,\n tone: tone.value ?? 'Default',\n emphasis: emphasis.value ?? false,\n ...(help.value !== undefined ? { help: help.value } : {}),\n ...(icon.value !== undefined ? { icon: icon.value } : {}),\n });\n};\n\nconst decodeMarkdownSpec = (path: string, j: JsonAst): R<MarkdownSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const text = reqField(path, fo.value, 'text', 'markdown TextSource', decodeTextSource);\n return text.ok ? ok({ text: text.value }) : text;\n};\n\nconst decodeBadgeSpec = (path: string, j: JsonAst): R<BadgeSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const label = reqField(path, f, 'label', 'Badge label TextSource', decodeTextSource);\n if (!label.ok) return label;\n const variant = reqField(path, f, 'variant', 'BadgeVariant', decodeBadgeVariant);\n if (!variant.ok) return variant;\n return ok({ label: label.value, variant: variant.value });\n};\n\nconst decodeLinkSpec = (path: string, j: JsonAst): R<LinkSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const href = reqField(path, f, 'href', 'link Binding<string> Href', decodeBindingString);\n if (!href.ok) return href;\n const label = reqField(path, f, 'label', 'link label TextSource', decodeTextSource);\n if (!label.ok) return label;\n const download = reqField(path, f, 'download', 'download bool', requireBool);\n if (!download.ok) return download;\n const rel = optField(path, f, 'rel', requireString);\n if (!rel.ok) return rel;\n const target = optField(path, f, 'target', requireString);\n if (!target.ok) return target;\n return ok({\n href: href.value,\n label: label.value,\n download: download.value,\n ...(rel.value !== undefined ? { rel: rel.value } : {}),\n ...(target.value !== undefined ? { target: target.value } : {}),\n });\n};\n\nconst decodeImageSpec = (path: string, j: JsonAst): R<ImageSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const alt = reqField(path, f, 'alt', 'Image alt TextSource', decodeTextSource);\n if (!alt.ok) return alt;\n const src = reqField(path, f, 'src', 'Image Binding<string> Src', decodeBindingString);\n if (!src.ok) return src;\n const variant = reqField(path, f, 'variant', 'ImageVariant', decodeImageVariant);\n if (!variant.ok) return variant;\n return ok({ alt: alt.value, src: src.value, variant: variant.value });\n};\n\nconst decodeListSpec = (path: string, j: JsonAst): R<ListSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const itemsJ = requireField(path, f, 'items', 'List items TextSource array');\n if (!itemsJ.ok) return itemsJ;\n const arr = requireArray(`${path}.items`, itemsJ.value);\n if (!arr.ok) return arr;\n const items = traverseIndexed(arr.value, (i, item) =>\n decodeTextSource(`${path}.items[${i}]`, item),\n );\n if (!items.ok) return items;\n const ordered = reqField(path, f, 'ordered', 'ordered bool', requireBool);\n if (!ordered.ok) return ordered;\n return ok({ items: items.value, ordered: ordered.value });\n};\n\nconst decodeToastSpec = (path: string, j: JsonAst): R<ToastSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const message = reqField(path, f, 'message', 'Toast message TextSource', decodeTextSource);\n if (!message.ok) return message;\n // Phase 460 — `tone` omitted-when-default.\n const tone = optField(path, f, 'tone', decodeTone);\n if (!tone.ok) return tone;\n const open = reqField(path, f, 'open', 'Toast open binding', decodeBinding);\n if (!open.ok) return open;\n // 0.2.0 omitted-when-TRUE (a Toast is dismissable unless said otherwise).\n const dismissable = optField(path, f, 'dismissable', requireBool);\n if (!dismissable.ok) return dismissable;\n return ok({\n message: message.value,\n tone: tone.value ?? 'Default',\n open: open.value as Binding<boolean>,\n dismissable: dismissable.value ?? true,\n });\n};\n\nconst decodeCodeBlockSpec = (path: string, j: JsonAst): R<CodeBlockSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const code = reqField(path, f, 'code', 'code-block code string', requireString);\n if (!code.ok) return code;\n const language = reqField(path, f, 'language', 'code-block language string', requireString);\n if (!language.ok) return language;\n const lineNumbers = reqField(path, f, 'lineNumbers', 'lineNumbers bool', requireBool);\n if (!lineNumbers.ok) return lineNumbers;\n const copyable = reqField(path, f, 'copyable', 'copyable bool', requireBool);\n if (!copyable.ok) return copyable;\n const linesJ = requireField(path, f, 'highlightLines', 'highlightLines int array');\n if (!linesJ.ok) return linesJ;\n const arr = requireArray(`${path}.highlightLines`, linesJ.value);\n if (!arr.ok) return arr;\n const highlightLines = traverseIndexed(arr.value, (i, item) =>\n requireInt(`${path}.highlightLines[${i}]`, item),\n );\n if (!highlightLines.ok) return highlightLines;\n return ok({\n code: code.value,\n language: language.value,\n lineNumbers: lineNumbers.value,\n highlightLines: highlightLines.value,\n copyable: copyable.value,\n });\n};\n\nconst decodeMathSpec = (path: string, j: JsonAst): R<MathSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const source = reqField(path, f, 'source', 'math LaTeX source string', requireString);\n if (!source.ok) return source;\n const display = reqField(path, f, 'display', 'MathDisplay', decodeMathDisplay);\n if (!display.ok) return display;\n return ok({ source: source.value, display: display.value });\n};\n\nconst decodeSparklineSpec = (path: string, j: JsonAst): R<SparklineSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const source = reqFieldAliased(\n path,\n fo.value,\n 'source',\n ['data'],\n 'Sparkline Source binding',\n decodeBindingFloatSeq,\n );\n return source.ok ? ok({ source: source.value }) : source;\n};\n\nconst decodeSkeletonSpec = (path: string, j: JsonAst): R<SkeletonSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const rows = reqField(path, fo.value, 'rows', 'skeleton row count integer', requireInt);\n return rows.ok ? ok({ rows: rows.value }) : rows;\n};\n\nconst decodeCalloutSpec = (path: string, j: JsonAst): R<CalloutSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const body = reqField(path, f, 'body', 'Callout body TextSource', decodeTextSource);\n if (!body.ok) return body;\n // 0.2.0 omitted-when-false.\n const dismissable = optField(path, f, 'dismissable', requireBool);\n if (!dismissable.ok) return dismissable;\n // Phase 460 — `tone` omitted-when-default.\n const tone = optField(path, f, 'tone', decodeTone);\n if (!tone.ok) return tone;\n const heading = optFieldAliased(path, f, 'heading', ['title'], decodeTextSource);\n if (!heading.ok) return heading;\n const icon = optField(path, f, 'icon', decodeIconSource);\n if (!icon.ok) return icon;\n return ok({\n body: body.value,\n dismissable: dismissable.value ?? false,\n tone: tone.value ?? 'Default',\n ...(heading.value !== undefined ? { heading: heading.value } : {}),\n ...(icon.value !== undefined ? { icon: icon.value } : {}),\n });\n};\n\nconst decodeProgressSpec = (path: string, j: JsonAst): R<ProgressSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const fraction = reqField(path, f, 'fraction', 'Progress fraction binding', decodeBinding);\n if (!fraction.ok) return fraction;\n // The Static-envelope unwrap now lives in requireBool itself (generalised\n // 2026-07-18 after the pilot found `emphasis` wrapped the same way).\n // 0.2.0 omitted-when-false.\n const indeterminate = optField(path, f, 'indeterminate', requireBool);\n if (!indeterminate.ok) return indeterminate;\n // Phase 460 — `tone` omitted-when-default.\n const tone = optField(path, f, 'tone', decodeTone);\n if (!tone.ok) return tone;\n const label = optField(path, f, 'label', decodeTextSource);\n if (!label.ok) return label;\n const caveat = optField(path, f, 'caveat', decodeTextSource);\n if (!caveat.ok) return caveat;\n return ok({\n fraction: fraction.value as Binding<number>,\n indeterminate: indeterminate.value ?? false,\n tone: tone.value ?? 'Default',\n ...(label.value !== undefined ? { label: label.value } : {}),\n ...(caveat.value !== undefined ? { caveat: caveat.value } : {}),\n });\n};\n\n// ─── Drawing (Phase 524) ─────────────────────────────────────────────────────\n\nconst emptyDrawStyle: DrawStyle = {};\n\nconst decodeDrawPoint = (path: string, j: JsonAst): R<DrawPoint> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const x = reqField(path, fo.value, 'x', 'DrawPoint x float', requireFloat);\n if (!x.ok) return x;\n const y = reqField(path, fo.value, 'y', 'DrawPoint y float', requireFloat);\n if (!y.ok) return y;\n return ok({ x: x.value, y: y.value });\n};\n\nconst decodeViewBox = (path: string, j: JsonAst): R<ViewBox> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const minX = reqField(path, f, 'minX', 'ViewBox minX float', requireFloat);\n if (!minX.ok) return minX;\n const minY = reqField(path, f, 'minY', 'ViewBox minY float', requireFloat);\n if (!minY.ok) return minY;\n const width = reqField(path, f, 'width', 'ViewBox width float', requireFloat);\n if (!width.ok) return width;\n const height = reqField(path, f, 'height', 'ViewBox height float', requireFloat);\n if (!height.ok) return height;\n return ok({ minX: minX.value, minY: minY.value, width: width.value, height: height.value });\n};\n\nconst decodeDrawStyle = (path: string, j: JsonAst): R<DrawStyle> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const fill = optField(path, f, 'fill', decodeBindingString);\n if (!fill.ok) return fill;\n const stroke = optField(path, f, 'stroke', decodeBindingString);\n if (!stroke.ok) return stroke;\n const strokeWidth = optField(path, f, 'strokeWidth', decodeBinding);\n if (!strokeWidth.ok) return strokeWidth;\n const opacity = optField(path, f, 'opacity', decodeBinding);\n if (!opacity.ok) return opacity;\n // Text-only fields (Phase 528.1) — all optional, omitted when unset.\n const textAnchor = optField(path, f, 'textAnchor', decodeTextAnchor);\n if (!textAnchor.ok) return textAnchor;\n const fontSize = optField(path, f, 'fontSize', requireFloat);\n if (!fontSize.ok) return fontSize;\n const emphasis = optField(path, f, 'emphasis', decodeEmphasis);\n if (!emphasis.ok) return emphasis;\n const fontFamily = optField(path, f, 'fontFamily', requireString);\n if (!fontFamily.ok) return fontFamily;\n // Phase 642 — keyed mark identity; optional.\n const markId = optField(path, f, 'markId', requireString);\n if (!markId.ok) return markId;\n return ok({\n ...(fill.value !== undefined ? { fill: fill.value } : {}),\n ...(stroke.value !== undefined ? { stroke: stroke.value } : {}),\n ...(strokeWidth.value !== undefined\n ? { strokeWidth: strokeWidth.value as Binding<number> }\n : {}),\n ...(opacity.value !== undefined ? { opacity: opacity.value as Binding<number> } : {}),\n ...(textAnchor.value !== undefined ? { textAnchor: textAnchor.value } : {}),\n ...(fontSize.value !== undefined ? { fontSize: fontSize.value } : {}),\n ...(emphasis.value !== undefined ? { emphasis: emphasis.value } : {}),\n ...(fontFamily.value !== undefined ? { fontFamily: fontFamily.value } : {}),\n ...(markId.value !== undefined ? { markId: markId.value } : {}),\n });\n};\n\nconst decodeCurveCommand = (path: string, j: JsonAst): R<CurveCommand> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n const point = (key: string): R<DrawPoint> =>\n reqField(path, f, key, `DrawPoint ${key}`, decodeDrawPoint);\n switch (d.value) {\n case 'MoveTo': {\n const to = point('to');\n return to.ok ? ok({ kind: 'MoveTo', to: to.value }) : to;\n }\n case 'LineTo': {\n const to = point('to');\n return to.ok ? ok({ kind: 'LineTo', to: to.value }) : to;\n }\n case 'CubicTo': {\n const c1 = point('control1');\n if (!c1.ok) return c1;\n const c2 = point('control2');\n if (!c2.ok) return c2;\n const to = point('to');\n if (!to.ok) return to;\n return ok({ kind: 'CubicTo', control1: c1.value, control2: c2.value, to: to.value });\n }\n case 'QuadraticTo': {\n const c = point('control');\n if (!c.ok) return c;\n const to = point('to');\n if (!to.ok) return to;\n return ok({ kind: 'QuadraticTo', control: c.value, to: to.value });\n }\n case 'Close':\n return ok({ kind: 'Close' });\n default:\n // Default-deny (WIRE_FORMAT §11 / Phase 524): an unknown command is a typed defect.\n return unknownDuCase(path, d.value, 'MoveTo | LineTo | CubicTo | QuadraticTo | Close');\n }\n};\n\nconst decodeShape = (path: string, j: JsonAst): R<Shape> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n const flt = (key: string): R<number> =>\n reqField(path, f, key, `Shape ${key} float`, requireFloat);\n const styleField = (): R<DrawStyle> => {\n const s = optField(path, f, 'style', decodeDrawStyle);\n return s.ok ? ok(s.value ?? emptyDrawStyle) : s;\n };\n const pointArray = (key: string): R<readonly DrawPoint[]> => {\n const arr = reqField(path, f, key, `Shape ${key} DrawPoint array`, requireArray);\n if (!arr.ok) return arr;\n return traverseIndexed(arr.value, (i, el) => decodeDrawPoint(`${path}.${key}[${i}]`, el));\n };\n const style = styleField();\n if (!style.ok) return style;\n switch (d.value) {\n case 'Group': {\n const arr = reqField(path, f, 'children', 'Shape children array', requireArray);\n if (!arr.ok) return arr;\n const children = traverseIndexed(arr.value, (i, el) =>\n decodeShape(`${path}.children[${i}]`, el),\n );\n return children.ok\n ? ok({ kind: 'Group', children: children.value, style: style.value })\n : children;\n }\n case 'Rectangle': {\n const x = flt('x');\n if (!x.ok) return x;\n const y = flt('y');\n if (!y.ok) return y;\n const width = flt('width');\n if (!width.ok) return width;\n const height = flt('height');\n if (!height.ok) return height;\n const cornerRadius = optField(path, f, 'cornerRadius', requireFloat);\n if (!cornerRadius.ok) return cornerRadius;\n return ok({\n kind: 'Rectangle',\n x: x.value,\n y: y.value,\n width: width.value,\n height: height.value,\n ...(cornerRadius.value !== undefined ? { cornerRadius: cornerRadius.value } : {}),\n style: style.value,\n });\n }\n case 'Line': {\n const x1 = flt('x1');\n if (!x1.ok) return x1;\n const y1 = flt('y1');\n if (!y1.ok) return y1;\n const x2 = flt('x2');\n if (!x2.ok) return x2;\n const y2 = flt('y2');\n if (!y2.ok) return y2;\n return ok({\n kind: 'Line',\n x1: x1.value,\n y1: y1.value,\n x2: x2.value,\n y2: y2.value,\n style: style.value,\n });\n }\n case 'Polyline': {\n const p = pointArray('points');\n return p.ok ? ok({ kind: 'Polyline', points: p.value, style: style.value }) : p;\n }\n case 'Polygon': {\n const p = pointArray('points');\n return p.ok ? ok({ kind: 'Polygon', points: p.value, style: style.value }) : p;\n }\n case 'Curve': {\n const arr = reqField(path, f, 'commands', 'Shape Curve commands array', requireArray);\n if (!arr.ok) return arr;\n const commands = traverseIndexed(arr.value, (i, el) =>\n decodeCurveCommand(`${path}.commands[${i}]`, el),\n );\n return commands.ok\n ? ok({ kind: 'Curve', commands: commands.value, style: style.value })\n : commands;\n }\n case 'Circle': {\n const cx = flt('cx');\n if (!cx.ok) return cx;\n const cy = flt('cy');\n if (!cy.ok) return cy;\n const r = flt('r');\n if (!r.ok) return r;\n return ok({ kind: 'Circle', cx: cx.value, cy: cy.value, r: r.value, style: style.value });\n }\n case 'Ellipse': {\n const cx = flt('cx');\n if (!cx.ok) return cx;\n const cy = flt('cy');\n if (!cy.ok) return cy;\n const rx = flt('rx');\n if (!rx.ok) return rx;\n const ry = flt('ry');\n if (!ry.ok) return ry;\n return ok({\n kind: 'Ellipse',\n cx: cx.value,\n cy: cy.value,\n rx: rx.value,\n ry: ry.value,\n style: style.value,\n });\n }\n case 'Label': {\n const x = flt('x');\n if (!x.ok) return x;\n const y = flt('y');\n if (!y.ok) return y;\n const text = reqField(path, f, 'text', 'Shape Label text TextSource', decodeTextSource);\n if (!text.ok) return text;\n return ok({ kind: 'Label', x: x.value, y: y.value, text: text.value, style: style.value });\n }\n default:\n // Default-deny (typed-surface guard, Phase 524): an unknown shape is a typed defect.\n return unknownDuCase(\n path,\n d.value,\n 'Group | Rectangle | Line | Polyline | Polygon | Curve | Circle | Ellipse | Label',\n );\n }\n};\n\nconst decodeDrawingSpec = (path: string, j: JsonAst): R<DrawingSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const viewBox = reqField(path, f, 'viewBox', 'Drawing ViewBox', decodeViewBox);\n if (!viewBox.ok) return viewBox;\n const arr = reqField(path, f, 'shapes', 'Drawing shapes array', requireArray);\n if (!arr.ok) return arr;\n const shapes = traverseIndexed(arr.value, (i, el) => decodeShape(`${path}.shapes[${i}]`, el));\n if (!shapes.ok) return shapes;\n const style = optField(path, f, 'style', decodeDrawStyle);\n if (!style.ok) return style;\n const title = optField(path, f, 'title', decodeTextSource);\n if (!title.ok) return title;\n const description = optField(path, f, 'description', decodeTextSource);\n if (!description.ok) return description;\n return ok({\n viewBox: viewBox.value,\n shapes: shapes.value,\n style: style.value ?? emptyDrawStyle,\n ...(title.value !== undefined ? { title: title.value } : {}),\n ...(description.value !== undefined ? { description: description.value } : {}),\n });\n};\n\nconst decodeDisplayKind = (path: string, j: JsonAst): R<DisplayKind> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n // Flat wire: spec fields are hoisted onto the kind object itself (no `spec`\n // wrapper, WIRE_FORMAT.md §3.2) — pass `j` to the spec decoder, which reads\n // its fields by name and ignores the extra `$type` key.\n switch (d.value) {\n case 'Heading': {\n const r = decodeHeadingSpec(path, j);\n return r.ok ? ok({ kind: 'Heading', spec: r.value }) : r;\n }\n case 'Markdown': {\n const r = decodeMarkdownSpec(path, j);\n return r.ok ? ok({ kind: 'Markdown', spec: r.value }) : r;\n }\n case 'Metric': {\n const r = decodeMetricSpec(path, j);\n return r.ok ? ok<DisplayKind>({ kind: 'Metric', spec: r.value }) : r;\n }\n case 'Badge': {\n const r = decodeBadgeSpec(path, j);\n return r.ok ? ok({ kind: 'Badge', spec: r.value }) : r;\n }\n case 'Sparkline': {\n const r = decodeSparklineSpec(path, j);\n return r.ok ? ok({ kind: 'Sparkline', spec: r.value }) : r;\n }\n case 'Callout': {\n const r = decodeCalloutSpec(path, j);\n return r.ok ? ok<DisplayKind>({ kind: 'Callout', spec: r.value }) : r;\n }\n case 'Progress': {\n const r = decodeProgressSpec(path, j);\n return r.ok ? ok({ kind: 'Progress', spec: r.value }) : r;\n }\n case 'Skeleton': {\n const r = decodeSkeletonSpec(path, j);\n return r.ok ? ok({ kind: 'Skeleton', spec: r.value }) : r;\n }\n case 'LabelValueRow': {\n const r = decodeLabelValueRowSpec(path, j);\n return r.ok ? ok({ kind: 'LabelValueRow', spec: r.value }) : r;\n }\n case 'Fact': {\n const r = decodeFactSpec(path, j);\n return r.ok ? ok({ kind: 'Fact', spec: r.value }) : r;\n }\n case 'Link': {\n const r = decodeLinkSpec(path, j);\n return r.ok ? ok({ kind: 'Link', spec: r.value }) : r;\n }\n case 'Image': {\n const r = decodeImageSpec(path, j);\n return r.ok ? ok({ kind: 'Image', spec: r.value }) : r;\n }\n case 'List': {\n const r = decodeListSpec(path, j);\n return r.ok ? ok({ kind: 'List', spec: r.value }) : r;\n }\n case 'Toast': {\n const r = decodeToastSpec(path, j);\n return r.ok ? ok<DisplayKind>({ kind: 'Toast', spec: r.value }) : r;\n }\n case 'CodeBlock': {\n const r = decodeCodeBlockSpec(path, j);\n return r.ok ? ok<DisplayKind>({ kind: 'CodeBlock', spec: r.value }) : r;\n }\n case 'Math': {\n const r = decodeMathSpec(path, j);\n return r.ok ? ok<DisplayKind>({ kind: 'Math', spec: r.value }) : r;\n }\n case 'Drawing': {\n const r = decodeDrawingSpec(path, j);\n return r.ok ? ok<DisplayKind>({ kind: 'Drawing', spec: r.value }) : r;\n }\n default:\n return unknownDuCase(\n path,\n d.value,\n 'Heading | Markdown | Metric | Badge | Link | Image | List | Toast | CodeBlock | Math | Drawing | Sparkline | Callout | Progress | Skeleton | LabelValueRow',\n );\n }\n};\n\n// ─── Input specs ─────────────────────────────────────────────────────────────\n\n/**\n * Phase 596 — the auto-bind context for a control's ABSENT `value` slot. One\n * rule across the whole control vocabulary: a filter chip auto-binds\n * `Filter(<its name>)`, a form field auto-binds `State(<its id>, <typed\n * placeholder>)` (placeholders pinned in `controlValueDefaults`); no context\n * keeps `value` required.\n */\ntype ControlAutoBind =\n | { readonly kind: 'filter'; readonly name: string }\n | { readonly kind: 'form'; readonly id: string }\n | undefined;\n\n/**\n * The `expectedShape` hint on every `UNKNOWN_DU_CASE` a control discriminator\n * raises, projected from the single `FORM_FIELD_KIND_NAMES` vocabulary in\n * `@fuaran-ui/schema` rather than hand-maintained — the same discipline\n * `WRONG_NODE_KIND_HINT` follows, and for the same reason. Pinned against the\n * generated manifest `formFieldKinds` by the corpus test suite\n * (WIRE_FORMAT.md §11.2).\n */\nexport const WRONG_FORM_FIELD_KIND_HINT: string = FORM_FIELD_KIND_NAMES.join(' | ');\n\nconst decodeFormFieldKind = (\n autoBind: ControlAutoBind,\n path: string,\n j: JsonAst,\n): R<FormFieldKind<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n // Handlers are optional (Phase 426, the Phase 423 `filterKind` mechanics\n // generalised): a present `\"<closure>\"` → the inert placeholder (a decoded\n // handler never dispatches, same dead behaviour as before); an absent key →\n // omitted (exactOptionalPropertyTypes), the shape that arms the renderer's\n // write-back default.\n const onChangeField: { onChange?: () => Action<unknown> } =\n tryField(f, 'onChange') !== undefined ? { onChange: onChangePlaceholder } : {};\n const onToggleField: { onToggle?: () => Action<unknown> } =\n tryField(f, 'onToggle') !== undefined ? { onToggle: onChangePlaceholder } : {};\n // Value slot: present => typed decode; absent in a FILTER context => the\n // auto `Filter(name)` binding; absent in a Form => MISSING_FIELD as before.\n const valueOr = (\n dec: (p: string, v: JsonAst) => R<Binding<unknown>>,\n autoDefault: unknown,\n expected: string,\n ): R<Binding<unknown>> => {\n const v = tryField(f, 'value');\n if (v !== undefined) return dec(`${path}.value`, v);\n if (autoBind?.kind === 'filter') return ok({ kind: 'Filter', name: autoBind.name });\n if (autoBind?.kind === 'form')\n return ok({ kind: 'State', key: autoBind.id, defaultValue: autoDefault });\n return missingField(path, 'value', expected);\n };\n switch (d.value) {\n case 'Text': {\n const v = valueOr(decodeBinding, controlValueDefaults.text, 'Text value binding');\n return v.ok ? ok({ kind: 'Text', value: v.value as Binding<string>, ...onChangeField }) : v;\n }\n case 'Number': {\n const v = valueOr(decodeBinding, controlValueDefaults.number, 'Number value binding');\n return v.ok ? ok({ kind: 'Number', value: v.value as Binding<number>, ...onChangeField }) : v;\n }\n case 'Checkbox': {\n const v = valueOr(decodeBinding, controlValueDefaults.checkbox, 'Checkbox value binding');\n return v.ok\n ? ok({\n kind: 'Checkbox',\n value: v.value as Binding<boolean>,\n ...onToggleField,\n })\n : v;\n }\n case 'Choice': {\n const options = reqField(\n path,\n f,\n 'options',\n 'Choice options binding',\n decodeBindingSelectOptions,\n );\n if (!options.ok) return options;\n const value = valueOr(\n decodeBindingStringOpt as (p: string, v: JsonAst) => R<Binding<unknown>>,\n controlValueDefaults.choice,\n 'Choice value binding',\n ) as R<Binding<string | undefined>>;\n if (!value.ok) return value;\n return ok({\n kind: 'Choice',\n options: options.value,\n value: value.value,\n ...onChangeField,\n });\n }\n case 'Range': {\n // 0.2.0 — dual-thumb numeric range (absorbed FilterKind.RangeFilter).\n const value = valueOr(\n decodeBindingFloatPair as (p: string, v: JsonAst) => R<Binding<unknown>>,\n controlValueDefaults.range,\n 'Binding<[number, number]> value',\n ) as R<Binding<readonly [number, number]>>;\n if (!value.ok) return value;\n return ok({ kind: 'Range', value: value.value, ...onChangeField });\n }\n case 'RangedNumber': {\n const value = valueOr(\n decodeBinding,\n controlValueDefaults.number,\n 'RangedNumber value binding',\n );\n if (!value.ok) return value;\n const min = optField(path, f, 'min', requireFloat);\n if (!min.ok) return min;\n const max = optField(path, f, 'max', requireFloat);\n if (!max.ok) return max;\n const step = optField(path, f, 'step', requireFloat);\n if (!step.ok) return step;\n return ok({\n kind: 'RangedNumber',\n value: value.value as Binding<number>,\n ...onChangeField,\n constraints: {\n ...(min.value !== undefined ? { min: min.value } : {}),\n ...(max.value !== undefined ? { max: max.value } : {}),\n ...(step.value !== undefined ? { step: step.value } : {}),\n },\n });\n }\n case 'SegmentedChoice': {\n const options = reqField(\n path,\n f,\n 'options',\n 'SegmentedChoice options binding',\n decodeBindingSelectOptions,\n );\n if (!options.ok) return options;\n // Lenient AI-ingest omitted-when-default (WIRE_FORMAT.md §3.6 family):\n // absent segmented `orientation` restores the language default\n // `Horizontal`. Decode-only — the encoder still always emits it.\n // Mirror of the F# decoder.\n const orientationJ = tryField(f, 'orientation');\n const orientation =\n orientationJ === undefined\n ? ok<Orientation>('Horizontal')\n : decodeOrientation(`${path}.orientation`, orientationJ);\n if (!orientation.ok) return orientation;\n const value = valueOr(\n decodeBindingStringOpt as (p: string, v: JsonAst) => R<Binding<unknown>>,\n controlValueDefaults.choice,\n 'SegmentedChoice value binding',\n ) as R<Binding<string | undefined>>;\n if (!value.ok) return value;\n return ok({\n kind: 'SegmentedChoice',\n options: options.value,\n value: value.value,\n ...onChangeField,\n orientation: orientation.value,\n });\n }\n case 'TextArea': {\n const rows = reqField(path, f, 'rows', 'textarea row count integer', requireInt);\n if (!rows.ok) return rows;\n const value = valueOr(decodeBinding, controlValueDefaults.text, 'TextArea value binding');\n if (!value.ok) return value;\n return ok({\n kind: 'TextArea',\n value: value.value as Binding<string>,\n ...onChangeField,\n rows: rows.value,\n });\n }\n case 'Date': {\n const value = valueOr(decodeBinding, controlValueDefaults.date, 'Date value binding');\n if (!value.ok) return value;\n const variant = reqField(path, f, 'variant', 'DateVariant', decodeDateVariant);\n if (!variant.ok) return variant;\n const min = optField(path, f, 'min', requireString);\n if (!min.ok) return min;\n const max = optField(path, f, 'max', requireString);\n if (!max.ok) return max;\n const step = optField(path, f, 'step', requireFloat);\n if (!step.ok) return step;\n return ok({\n kind: 'Date',\n value: value.value as Binding<string>,\n ...onChangeField,\n variant: variant.value,\n constraints: {\n ...(min.value !== undefined ? { min: min.value } : {}),\n ...(max.value !== undefined ? { max: max.value } : {}),\n ...(step.value !== undefined ? { step: step.value } : {}),\n },\n });\n }\n case 'DateRange': {\n // Phase 725 — single-control date range: `Range`'s pair mechanics with\n // `Date`'s value conventions. `min` / `max` / `step` are flat (they bound\n // BOTH ends), same omit-when-absent discipline as `Date`.\n const value = valueOr(\n decodeBindingStringPair as (p: string, v: JsonAst) => R<Binding<unknown>>,\n controlValueDefaults.dateRange,\n 'Binding<[from, to]> ISO-8601 pair value',\n ) as R<Binding<readonly [string, string]>>;\n if (!value.ok) return value;\n const variant = reqField(path, f, 'variant', 'DateVariant', decodeDateVariant);\n if (!variant.ok) return variant;\n const min = optField(path, f, 'min', requireString);\n if (!min.ok) return min;\n const max = optField(path, f, 'max', requireString);\n if (!max.ok) return max;\n const step = optField(path, f, 'step', requireFloat);\n if (!step.ok) return step;\n return ok({\n kind: 'DateRange',\n value: value.value,\n ...onChangeField,\n variant: variant.value,\n constraints: {\n ...(min.value !== undefined ? { min: min.value } : {}),\n ...(max.value !== undefined ? { max: max.value } : {}),\n ...(step.value !== undefined ? { step: step.value } : {}),\n },\n });\n }\n default:\n return unknownDuCase(path, d.value, WRONG_FORM_FIELD_KIND_HINT);\n }\n};\n\nconst decodeFormField = (path: string, j: JsonAst): R<FormField<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const id = reqFieldAliased(path, f, 'id', ['name'], 'form field id string', requireString);\n if (!id.ok) return id;\n // Phase 596 — id decodes first so the form context's auto-bind can use it\n // (the chip-name-first precedent from the filters unification). `id` is\n // re-read below by the original ordering; a malformed id surfaces there.\n const idFirst = reqFieldAliased(path, f, 'id', ['name'], 'form-field id string', requireString);\n const kind = reqField(path, f, 'kind', 'FormFieldKind', (p, v) =>\n decodeFormFieldKind(idFirst.ok ? { kind: 'form', id: idFirst.value } : undefined, p, v),\n );\n if (!kind.ok) return kind;\n const label = reqField(path, f, 'label', 'field label TextSource', decodeTextSource);\n if (!label.ok) return label;\n const required = reqField(path, f, 'required', 'required bool', requireBool);\n if (!required.ok) return required;\n const help = optField(path, f, 'help', decodeTextSource);\n if (!help.ok) return help;\n return ok({\n id: id.value,\n kind: kind.value,\n label: label.value,\n required: required.value,\n ...(help.value !== undefined ? { help: help.value } : {}),\n });\n};\n\nconst decodeFormSpec = (path: string, j: JsonAst): R<FormSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const fieldsJ = requireField(path, f, 'fields', 'form field list');\n if (!fieldsJ.ok) return fieldsJ;\n const arr = requireArray(`${path}.fields`, fieldsJ.value);\n if (!arr.ok) return arr;\n const fields = traverseIndexed(arr.value, (i, item) =>\n decodeFormField(`${path}.fields[${i}]`, item),\n );\n if (!fields.ok) return fields;\n const onSubmit = reqField(path, f, 'onSubmit', 'onSubmit Action', decodeAction);\n if (!onSubmit.ok) return onSubmit;\n const submitLabel = reqField(path, f, 'submitLabel', 'submitLabel TextSource', decodeTextSource);\n if (!submitLabel.ok) return submitLabel;\n // Phase 130: optional bound form-level disabled-state.\n const disabled = optField(path, f, 'disabled', decodeBindingBool);\n if (!disabled.ok) return disabled;\n return ok({\n fields: fields.value,\n onSubmit: onSubmit.value,\n submitLabel: submitLabel.value,\n ...(disabled.value !== undefined ? { disabled: disabled.value } : {}),\n });\n};\n\nconst decodeFilterSpec = (path: string, j: JsonAst): R<FilterSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n // 0.2.0 filters-unification: the chip's control is an ordinary\n // FormFieldKind; its absent `value` auto-binds `Filter(name)` (see\n // decodeFormFieldKind). Name decodes first so the synthesis can use it.\n const name = reqField(path, f, 'name', 'filter name string', requireString);\n if (!name.ok) return name;\n const label = reqField(path, f, 'label', 'filter label TextSource', decodeTextSource);\n if (!label.ok) return label;\n const kind = reqField(path, f, 'kind', 'FormFieldKind control', (p, v) =>\n decodeFormFieldKind({ kind: 'filter', name: name.value }, p, v),\n );\n if (!kind.ok) return kind;\n return ok({ name: name.value, label: label.value, field: kind.value });\n};\n\nconst decodeButtonSpec = (path: string, j: JsonAst): R<ButtonSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const label = reqField(path, f, 'label', 'Button label TextSource', decodeTextSource);\n if (!label.ok) return label;\n const onClick = reqField(path, f, 'onClick', 'onClick Action', decodeAction);\n if (!onClick.ok) return onClick;\n const variant = reqField(path, f, 'variant', 'ButtonVariant', decodeButtonVariant);\n if (!variant.ok) return variant;\n const icon = optField(path, f, 'icon', decodeIconSource);\n if (!icon.ok) return icon;\n // Phase 129: optional bound disabled-state.\n const disabled = optField(path, f, 'disabled', decodeBindingBool);\n if (!disabled.ok) return disabled;\n return ok({\n label: label.value,\n onClick: onClick.value,\n variant: variant.value,\n ...(icon.value !== undefined ? { icon: icon.value } : {}),\n ...(disabled.value !== undefined ? { disabled: disabled.value } : {}),\n });\n};\n\nconst decodeSelectSpec = (path: string, j: JsonAst): R<SelectSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const label = reqField(path, f, 'label', 'Select label TextSource', decodeTextSource);\n if (!label.ok) return label;\n const source = reqFieldAliased(\n path,\n f,\n 'source',\n ['options', 'data'],\n 'Select source binding',\n decodeBindingSelectOptions,\n );\n if (!source.ok) return source;\n const value = reqField(path, f, 'value', 'Select value binding', decodeBindingStringOpt);\n if (!value.ok) return value;\n const placeholder = optField(path, f, 'placeholder', decodeTextSource);\n if (!placeholder.ok) return placeholder;\n // Phase 130: optional bound disabled-state.\n const disabled = optField(path, f, 'disabled', decodeBindingBool);\n if (!disabled.ok) return disabled;\n // Phase 291: multi-select. `multiple` absent ⇒ false (single-select); `values`\n // absent ⇒ omitted. The multi onChange is a closure reconstructed by the\n // existing `onChange` placeholder. `values` decodes through the typed\n // string-list decoder (Phase 429 — typed form preferred, opaque read-compat).\n const multiple = optField(path, f, 'multiple', requireBool);\n if (!multiple.ok) return multiple;\n const values = optField(path, f, 'values', decodeBindingStringList);\n if (!values.ok) return values;\n return ok({\n label: label.value,\n source: source.value,\n value: value.value,\n // Phase 426: a present `\"<closure>\"` sentinel → the inert placeholder; an\n // absent key → omitted, arming the renderer's write-back default against\n // `value` / `values`.\n ...(tryField(f, 'onChange') !== undefined ? { onChange: onChangePlaceholder } : {}),\n ...(placeholder.value !== undefined ? { placeholder: placeholder.value } : {}),\n ...(disabled.value !== undefined ? { disabled: disabled.value } : {}),\n ...(multiple.value === true ? { multiple: true } : {}),\n ...(values.value !== undefined ? { values: values.value } : {}),\n ...(tryField(f, 'onChangeMulti') !== undefined ? { onChangeMulti: onChangePlaceholder } : {}),\n });\n};\n\nconst decodeFileUploadSpec = (path: string, j: JsonAst): R<FileUploadSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const acceptJ = requireField(path, f, 'accept', 'accept string list');\n if (!acceptJ.ok) return acceptJ;\n const arr = requireArray(`${path}.accept`, acceptJ.value);\n if (!arr.ok) return arr;\n const accept = traverseIndexed(arr.value, (i, item) =>\n requireString(`${path}.accept[${i}]`, item),\n );\n if (!accept.ok) return accept;\n const label = reqField(path, f, 'label', 'FileUpload label TextSource', decodeTextSource);\n if (!label.ok) return label;\n const multiple = reqField(path, f, 'multiple', 'multiple bool', requireBool);\n if (!multiple.ok) return multiple;\n // Phase 130: optional bound disabled-state.\n const disabled = optField(path, f, 'disabled', decodeBindingBool);\n if (!disabled.ok) return disabled;\n return ok({\n accept: accept.value,\n label: label.value,\n multiple: multiple.value,\n onSelect: () => placeholderAction,\n ...(disabled.value !== undefined ? { disabled: disabled.value } : {}),\n });\n};\n\nconst decodeInputKind = (path: string, j: JsonAst): R<InputKind<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n case 'Form': {\n const r = decodeFormSpec(path, j);\n return r.ok ? ok({ kind: 'Form', spec: r.value }) : r;\n }\n case 'Filters': {\n const itemsJ = requireField(path, f, 'items', 'Filters item list');\n if (!itemsJ.ok) return itemsJ;\n const arr = requireArray(`${path}.items`, itemsJ.value);\n if (!arr.ok) return arr;\n const specs = traverseIndexed(arr.value, (i, item) =>\n decodeFilterSpec(`${path}.items[${i}]`, item),\n );\n return specs.ok ? ok({ kind: 'Filters', specs: specs.value }) : specs;\n }\n case 'Button': {\n const r = decodeButtonSpec(path, j);\n return r.ok ? ok({ kind: 'Button', spec: r.value }) : r;\n }\n case 'FileUpload': {\n const r = decodeFileUploadSpec(path, j);\n return r.ok ? ok({ kind: 'FileUpload', spec: r.value }) : r;\n }\n case 'Select': {\n const r = decodeSelectSpec(path, j);\n return r.ok ? ok({ kind: 'Select', spec: r.value }) : r;\n }\n default:\n return unknownDuCase(path, d.value, 'Form | Filters | Button | FileUpload | Select');\n }\n};\n\n// ─── Visualisation specs ─────────────────────────────────────────────────────\n\n/**\n * Phase 750 — a `TonedPill`'s `map`: a string-keyed object whose VALUES are\n * `ToneVariant`s. Routed through `decodeTone` per entry, so the §3.6 tone aliases work\n * inside the map exactly as at a `tone` field. The refusal is RE-ISSUED rather than\n * passed through: `decodeTone` reports at `<path>.$type` with \"unknown discriminator\",\n * and a map value is neither, so the raw error names a path the document does not\n * contain. Parity-locked with the F# `decodeToneMap`.\n */\nconst decodeToneMap = (path: string, j: JsonAst): R<Record<string, ToneVariant>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const out: Record<string, ToneVariant> = {};\n for (const [k, v] of fo.value) {\n const entryPath = `${path}.${k}`;\n const t = decodeTone(entryPath, v);\n if (!t.ok) {\n if (t.error.code !== 'UNKNOWN_DU_CASE') return t;\n const got = v.kind === 'JString' ? v.value : '';\n return makeError(\n 'UNKNOWN_DU_CASE',\n entryPath,\n `tone-map value '${got}' for '${k}' is not a ToneVariant`,\n TONE_NAMES.join(' | '),\n );\n }\n out[k] = t.value;\n }\n return ok(out);\n};\n\n/** The tone-map field names a `TonedPill` cell accepts (canonical first). */\nconst TONE_MAP_KEYS = ['map', 'toneMap', 'tones'] as const;\n\n/**\n * The shared body of the canonical `TonedPill` case and the `Pill`-tagged §16 shorthand\n * — one reader, so the two spellings cannot drift apart in what they accept.\n */\nconst decodeTonedPill = (path: string, f: Fields): R<CellKindErased<unknown>> => {\n const field = reqField(\n path,\n f,\n 'field',\n 'TonedPill row-field name (drives the label and the map key)',\n requireString,\n );\n if (!field.ok) return field;\n // Field aliases: `toneMap` / `tones` — `map` is the shortest honest name for a\n // value→tone dictionary and the least descriptive one.\n const map = reqFieldAliased(\n path,\n f,\n 'map',\n ['toneMap', 'tones'],\n 'TonedPill value→ToneVariant map',\n decodeToneMap,\n );\n if (!map.ok) return map;\n // `default` is omitted-when-`Default` (Phase 460); restore the identity on absence.\n const defaultTone = optField(path, f, 'default', decodeTone);\n if (!defaultTone.ok) return defaultTone;\n const k: CellKindErased<unknown> = {\n kind: 'TonedPill',\n field: field.value,\n map: map.value,\n defaultTone: defaultTone.value ?? 'Default',\n };\n return ok(k);\n};\n\nconst decodeCellKindErased = (path: string, j: JsonAst): R<CellKindErased<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n case 'Text':\n return ok({ kind: 'Text' });\n case 'Numeric':\n return ok({ kind: 'Numeric' });\n case 'Date':\n return ok({ kind: 'Date' });\n case 'Editable':\n return ok({ kind: 'Editable', onEdit: () => placeholderAction });\n case 'Checkbox':\n return ok({ kind: 'Checkbox', get: () => false, onToggle: () => placeholderAction });\n case 'Button': {\n const label = reqField(path, f, 'label', 'cell button label TextSource', decodeTextSource);\n return label.ok\n ? ok({ kind: 'Button', label: label.value, onClick: () => placeholderAction })\n : label;\n }\n case 'ButtonGroup': {\n const buttonsJ = requireField(path, f, 'buttons', 'button group list');\n if (!buttonsJ.ok) return buttonsJ;\n const arr = requireArray(`${path}.buttons`, buttonsJ.value);\n if (!arr.ok) return arr;\n type Btn = readonly [TextSource, (row: unknown) => Action<unknown>];\n const buttons = traverseIndexed<Btn>(arr.value, (i, item) => {\n const bo = requireObject(`${path}.buttons[${i}]`, item);\n if (!bo.ok) return bo;\n const label = reqField(\n `${path}.buttons[${i}]`,\n bo.value,\n 'label',\n 'button label TextSource',\n decodeTextSource,\n );\n if (!label.ok) return label;\n return ok<Btn>([label.value, () => placeholderAction]);\n });\n if (!buttons.ok) return buttons;\n const k: CellKindErased<unknown> = { kind: 'ButtonGroup', buttons: buttons.value };\n return ok(k);\n }\n case 'Link': {\n const k: CellKindErased<unknown> = {\n kind: 'Link',\n href: () => CLOSURE,\n label: () => ({ kind: 'Literal', value: CLOSURE }),\n };\n return ok(k);\n }\n case 'Pill': {\n // Lenient-ingest (WIRE_FORMAT.md §16, Phase 750): `Pill` is the WORD for the\n // thing, so a declarative tone rule arrives tagged `Pill` more often than tagged\n // `TonedPill`. Before this phase those keys were accepted and DISCARDED — the\n // author's whole intent gone, silently, with no error to notice. Presence of a\n // tone map is the unambiguous tell (a closure `Pill` has no such key).\n if (TONE_MAP_KEYS.some((key) => tryField(f, key) !== undefined))\n return decodeTonedPill(path, f);\n const k: CellKindErased<unknown> = {\n kind: 'Pill',\n label: () => ({ kind: 'Literal', value: CLOSURE }),\n tone: () => 'Default',\n };\n return ok(k);\n }\n case 'TonedPill':\n return decodeTonedPill(path, f);\n case 'Progress': {\n const k: CellKindErased<unknown> = { kind: 'Progress', fraction: () => 0 };\n return ok(k);\n }\n case 'Custom': {\n const k: CellKindErased<unknown> = {\n kind: 'Custom',\n render: () => placeholderClosureNode,\n };\n return ok(k);\n }\n default:\n return unknownDuCase(\n path,\n d.value,\n 'Text | Numeric | Date | Editable | Checkbox | Button | ButtonGroup | Link | Pill | TonedPill | Progress | Custom',\n );\n }\n};\n\nconst decodeColumnErased = (path: string, j: JsonAst): R<ColumnErased<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n // Phase 460 — `format`/`width` omitted-when-default (`CellFormat.None`/`ColumnWidth.Auto`).\n const format = optField(path, f, 'format', decodeCellFormat);\n if (!format.ok) return format;\n const kind = reqFieldAliased(path, f, 'kind', ['type'], 'CellKindErased', decodeCellKindErased);\n if (!kind.ok) return kind;\n const label = reqFieldAliased(\n path,\n f,\n 'label',\n ['header', 'title'],\n 'column label string',\n requireString,\n );\n if (!label.ok) return label;\n const width = optField(path, f, 'width', decodeColumnWidth);\n if (!width.ok) return width;\n // Phase 425 — `value` (closure) present → placeholder (the closure wins, renders Empty); absent →\n // omitted, and `field` (if present) drives the row-field projection with zero host code.\n const hasValue = tryField(f, 'value') !== undefined;\n const fieldJ = tryField(f, 'field');\n let field: string | undefined;\n if (fieldJ !== undefined) {\n const fr = requireString(`${path}.field`, fieldJ);\n if (!fr.ok) return fr;\n field = fr.value;\n }\n return ok({\n format: format.value ?? { kind: 'None' },\n kind: kind.value,\n label: label.value,\n width: width.value ?? { kind: 'Auto' },\n ...(hasValue ? { value: () => ({ kind: 'Empty' as const }) } : {}),\n ...(field !== undefined ? { field } : {}),\n });\n};\n\n// Phase 393 — decode the `{ headers, rows }` static-rows object of a read-only grid\n// (also the shape the legacy `Table` decode-upgrade reads). Cells are `TextSource`.\ntype StaticRows = {\n readonly headers: readonly TextSource[];\n readonly rows: readonly (readonly TextSource[])[];\n};\nconst decodeStaticRows = (path: string, j: JsonAst): R<StaticRows> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const headersJ = requireField(path, f, 'headers', 'headers TextSource list');\n if (!headersJ.ok) return headersJ;\n const harr = requireArray(`${path}.headers`, headersJ.value);\n if (!harr.ok) return harr;\n const headers = traverseIndexed(harr.value, (i, item) =>\n decodeTextSource(`${path}.headers[${i}]`, item),\n );\n if (!headers.ok) return headers;\n const rowsJ = requireField(path, f, 'rows', 'rows TextSource matrix');\n if (!rowsJ.ok) return rowsJ;\n const rarr = requireArray(`${path}.rows`, rowsJ.value);\n if (!rarr.ok) return rarr;\n const rows = traverseIndexed(rarr.value, (i, rowJ) => {\n const ro = requireArray(`${path}.rows[${i}]`, rowJ);\n if (!ro.ok) return ro;\n return traverseIndexed(ro.value, (k, cell) =>\n decodeTextSource(`${path}.rows[${i}][${k}]`, cell),\n );\n });\n if (!rows.ok) return rows;\n return ok({ headers: headers.value, rows: rows.value });\n};\n\nconst decodeGridSpec = (path: string, j: JsonAst): R<GridSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const columnsJ = requireField(path, f, 'columns', 'columns list');\n if (!columnsJ.ok) return columnsJ;\n const arr = requireArray(`${path}.columns`, columnsJ.value);\n if (!arr.ok) return arr;\n const columns = traverseIndexed(arr.value, (i, item) =>\n decodeColumnErased(`${path}.columns[${i}]`, item),\n );\n if (!columns.ok) return columns;\n // 0.2.0 omitted-when-false.\n const editable = optField(path, f, 'editable', requireBool);\n if (!editable.ok) return editable;\n const source = reqFieldAliased(\n path,\n f,\n 'source',\n ['data', 'rows'],\n 'Grid source binding',\n decodeBinding,\n );\n if (!source.ok) return source;\n const hasRowClick = tryField(f, 'onRowClick') !== undefined;\n // Phase 425 — `rowKey` (closure) + `rowKeyField` (declarative) are sibling optional slots.\n const hasRowKey = tryField(f, 'rowKey') !== undefined;\n const rowKeyFieldJ = tryField(f, 'rowKeyField');\n let rowKeyField: string | undefined;\n if (rowKeyFieldJ !== undefined) {\n const rk = requireString(`${path}.rowKeyField`, rowKeyFieldJ);\n if (!rk.ok) return rk;\n rowKeyField = rk.value;\n }\n // Phase 393 — the static read-only mode (omitted for a data-bound grid, so existing fixtures\n // stay byte-identical).\n const staticRowsJ = tryField(f, 'staticRows');\n let staticRows: StaticRows | undefined;\n if (staticRowsJ !== undefined) {\n const sr = decodeStaticRows(`${path}.staticRows`, staticRowsJ);\n if (!sr.ok) return sr;\n staticRows = sr.value;\n }\n return ok({\n columns: columns.value,\n editable: editable.value ?? false,\n source: source.value as Binding<readonly unknown[]>,\n ...(hasRowClick ? { onRowClick: () => placeholderAction } : {}),\n ...(hasRowKey ? { rowKey: () => CLOSURE } : {}),\n ...(rowKeyField !== undefined ? { rowKeyField } : {}),\n ...(staticRows !== undefined ? { staticRows } : {}),\n });\n};\n\nconst decodeChartSpec = (path: string, j: JsonAst): R<ChartSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const kind = reqField(path, f, 'kind', 'ChartKind', decodeChartKind);\n if (!kind.ok) return kind;\n const source = reqFieldAliased(\n path,\n f,\n 'source',\n ['data'],\n 'Chart source binding',\n decodeBinding,\n );\n if (!source.ok) return source;\n const xField = reqField(path, f, 'xField', 'xField string', requireString);\n if (!xField.ok) return xField;\n const yFieldsJ = requireField(path, f, 'yFields', 'yFields string list');\n if (!yFieldsJ.ok) return yFieldsJ;\n const arr = requireArray(`${path}.yFields`, yFieldsJ.value);\n if (!arr.ok) return arr;\n const yFields = traverseIndexed(arr.value, (i, item) =>\n requireString(`${path}.yFields[${i}]`, item),\n );\n if (!yFields.ok) return yFields;\n const title = optField(path, f, 'title', decodeTextSource);\n if (!title.ok) return title;\n const hasPointClick = tryField(f, 'onPointClick') !== undefined;\n // stacked (Phase 126) now round-trips; absent (legacy wire) defaults to false.\n const stacked = optField(path, f, 'stacked', requireBool);\n if (!stacked.ok) return stacked;\n return ok({\n kind: kind.value,\n source: source.value as Binding<readonly unknown[]>,\n xField: xField.value,\n yFields: yFields.value,\n stacked: stacked.value ?? false,\n ...(title.value !== undefined ? { title: title.value } : {}),\n ...(hasPointClick ? { onPointClick: () => placeholderAction } : {}),\n });\n};\n\nconst decodeMapSpec = (\n path: string,\n j: JsonAst,\n): R<import('@fuaran-ui/schema').MapSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const centreLatitude = reqField(path, f, 'centreLatitude', 'centre latitude float', requireFloat);\n if (!centreLatitude.ok) return centreLatitude;\n const centreLongitude = reqField(\n path,\n f,\n 'centreLongitude',\n 'centre longitude float',\n requireFloat,\n );\n if (!centreLongitude.ok) return centreLongitude;\n const source = reqFieldAliased(\n path,\n f,\n 'source',\n ['data', 'markers'],\n 'Map source binding',\n decodeBindingMarkerSeq,\n );\n if (!source.ok) return source;\n const zoom = reqField(path, f, 'zoom', 'zoom integer', requireInt);\n if (!zoom.ok) return zoom;\n const hasMarkerClick = tryField(f, 'onMarkerClick') !== undefined;\n return ok({\n centreLatitude: centreLatitude.value,\n centreLongitude: centreLongitude.value,\n source: source.value,\n zoom: zoom.value,\n ...(hasMarkerClick ? { onMarkerClick: () => placeholderAction } : {}),\n });\n};\n\nconst decodeVisKind = (path: string, j: JsonAst): R<VisKind<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n // Wire discriminator 'DataGrid'; in-memory tag stays 'Grid'.\n case 'DataGrid': {\n const r = decodeGridSpec(path, j);\n return r.ok ? ok({ kind: 'Grid', spec: r.value }) : r;\n }\n case 'Chart': {\n const r = decodeChartSpec(path, j);\n return r.ok ? ok({ kind: 'Chart', spec: r.value }) : r;\n }\n case 'Map': {\n const r = decodeMapSpec(path, j);\n return r.ok ? ok({ kind: 'Map', spec: r.value }) : r;\n }\n default:\n return unknownDuCase(path, d.value, 'DataGrid | Chart | Table | Map');\n }\n};\n\n// ─── Layout specs ────────────────────────────────────────────────────────────\n\nconst decodeChildren = (path: string, fields: Fields): R<readonly Node<unknown>[]> => {\n const childrenJ = requireField(path, fields, 'children', 'children Node list');\n if (!childrenJ.ok) return childrenJ;\n const arr = requireArray(`${path}.children`, childrenJ.value);\n if (!arr.ok) return arr;\n return traverseIndexed(arr.value, (i, item) => decodeNodeAst(`${path}.children[${i}]`, item));\n};\n\n// ─── Box — the unified container (Phase 390) ─────────────────────────────────\n\nconst decodeBoxLayout = (path: string, j: JsonAst): R<BoxLayout> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n case 'Flex': {\n const direction = reqField(path, f, 'direction', 'Orientation', decodeOrientation);\n if (!direction.ok) return direction;\n const wrap = reqField(path, f, 'wrap', 'wrap bool', requireBool);\n if (!wrap.ok) return wrap;\n const gap = optField(path, f, 'gap', requireInt);\n if (!gap.ok) return gap;\n return ok({\n kind: 'Flex',\n direction: direction.value,\n wrap: wrap.value,\n ...(gap.value !== undefined ? { gap: gap.value } : {}),\n });\n }\n case 'Grid': {\n // Lenient AI-ingest (WIRE_FORMAT.md 3.6, 2026-07-17): a Grid with NO\n // column spec is the CSS auto-grid prior — accept-and-canonicalise to\n // the language's existing Auto responsive auto-tile. Mirror of F#.\n if (\n tryField(f, 'cols') === undefined &&\n tryField(f, 'columns') === undefined &&\n tryField(f, 'templateColumns') === undefined\n ) {\n return ok({ kind: 'Auto' });\n }\n // templateColumns present => cols is documented-ignored; absence defaults\n // to 1 rather than MISSING_FIELD (0.1.6 pilot residual). Mirror of F#.\n const cols =\n tryField(f, 'cols') === undefined && tryField(f, 'columns') === undefined\n ? ok(1)\n : reqFieldAliased(path, f, 'cols', ['columns'], 'cols integer', requireInt);\n if (!cols.ok) return cols;\n const gap = optField(path, f, 'gap', requireInt);\n if (!gap.ok) return gap;\n const templateColumns = optField(path, f, 'templateColumns', requireString);\n if (!templateColumns.ok) return templateColumns;\n return ok({\n kind: 'Grid',\n cols: cols.value,\n ...(gap.value !== undefined ? { gap: gap.value } : {}),\n ...(templateColumns.value !== undefined ? { templateColumns: templateColumns.value } : {}),\n });\n }\n case 'Auto':\n return ok({ kind: 'Auto' });\n default:\n return unknownDuCase(path, d.value, 'Flex | Grid | Auto');\n }\n};\n\nconst decodeBoxRole = (path: string, j: JsonAst): R<BoxRole> => {\n const s = requireString(path, j);\n if (!s.ok) return s;\n switch (s.value) {\n case 'Group':\n case 'Card':\n case 'Dashboard':\n case 'Separator':\n return ok(s.value);\n default:\n return unknownDuCase(path, s.value, 'Group | Card | Dashboard | Separator');\n }\n};\n\nconst decodeBox = (path: string, j: JsonAst): R<BoxSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const children = decodeChildren(path, f);\n if (!children.ok) return children;\n const heading = optFieldAliased(path, f, 'heading', ['title'], decodeTextSource);\n if (!heading.ok) return heading;\n const layout = reqField(path, f, 'layout', 'layout object', decodeBoxLayout);\n if (!layout.ok) return layout;\n const role = reqField(path, f, 'role', 'role string', decodeBoxRole);\n if (!role.ok) return role;\n return ok({\n children: children.value,\n ...(heading.value !== undefined ? { heading: heading.value } : {}),\n layout: layout.value,\n role: role.value,\n });\n};\n\nconst decodeSplitPanelSpec = (path: string, j: JsonAst): R<SplitPanelSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const children = decodeChildren(path, f);\n if (!children.ok) return children;\n const weight = reqField(path, f, 'weight', 'weight float', requireFloat);\n if (!weight.ok) return weight;\n return ok({ children: children.value, weight: weight.value });\n};\n\nconst decodeTabHeader = (path: string, j: JsonAst): R<TabHeader> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const label = reqField(path, f, 'label', 'tab header label TextSource', decodeTextSource);\n if (!label.ok) return label;\n const icon = optField(path, f, 'icon', decodeIconSource);\n if (!icon.ok) return icon;\n const disabled = optField(path, f, 'disabled', decodeBindingBool);\n if (!disabled.ok) return disabled;\n return ok({\n label: label.value,\n ...(icon.value !== undefined ? { icon: icon.value } : {}),\n ...(disabled.value !== undefined ? { disabled: disabled.value } : {}),\n });\n};\n\nconst decodeTabsSpec = (path: string, j: JsonAst): R<TabsSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const children = decodeChildren(path, f);\n if (!children.ok) return children;\n // 0.2.0 omitted-when-default (`Horizontal`).\n const orientationJ = tryField(f, 'orientation');\n const orientation =\n orientationJ === undefined\n ? ok<Orientation>('Horizontal')\n : decodeOrientation(`${path}.orientation`, orientationJ);\n if (!orientation.ok) return orientation;\n let tabHeaders: readonly TabHeader[] | undefined;\n const thJ = tryField(f, 'tabHeaders');\n if (thJ !== undefined) {\n const arr = requireArray(`${path}.tabHeaders`, thJ);\n if (!arr.ok) return arr;\n const hs = traverseIndexed(arr.value, (i, item) =>\n decodeTabHeader(`${path}.tabHeaders[${i}]`, item),\n );\n if (!hs.ok) return hs;\n tabHeaders = hs.value;\n }\n let tabTags: readonly string[] | undefined;\n const ttJ = tryField(f, 'tabTags');\n if (ttJ !== undefined) {\n const arr = requireArray(`${path}.tabTags`, ttJ);\n if (!arr.ok) return arr;\n const ts = traverseIndexed(arr.value, (i, item) =>\n requireString(`${path}.tabTags[${i}]`, item),\n );\n if (!ts.ok) return ts;\n tabTags = ts.value;\n }\n const activeTag = optField(path, f, 'activeTag', decodeBindingString);\n if (!activeTag.ok) return activeTag;\n // activeIndex (Phase 126) now round-trips; absent (legacy wire) defaults to\n // Static 0. onSelect / onSelectTag (Phase 426): a present `\"<closure>\"`\n // sentinel → the inert placeholder; an absent key → omitted, arming the\n // renderer's ActiveIndex/ActiveTag write-back default.\n const activeIndex = optField(path, f, 'activeIndex', decodeBinding);\n if (!activeIndex.ok) return activeIndex;\n return ok({\n children: children.value,\n orientation: orientation.value,\n activeIndex: (activeIndex.value as Binding<number> | undefined) ?? { kind: 'Static', value: 0 },\n ...(tryField(f, 'onSelect') !== undefined ? { onSelect: () => placeholderAction } : {}),\n ...(tabHeaders !== undefined ? { tabHeaders } : {}),\n ...(tabTags !== undefined ? { tabTags } : {}),\n ...(activeTag.value !== undefined ? { activeTag: activeTag.value } : {}),\n ...(tryField(f, 'onSelectTag') !== undefined ? { onSelectTag: () => placeholderAction } : {}),\n });\n};\n\nconst decodeStepperSpec = (path: string, j: JsonAst): R<StepperSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const activeStep = reqField(path, f, 'activeStep', 'activeStep binding', decodeBinding);\n if (!activeStep.ok) return activeStep;\n const children = decodeChildren(path, f);\n if (!children.ok) return children;\n // `onSelect` is a closure → the sentinel is consumed and reconstructs a\n // no-op placeholder action (mirrors Tabs).\n return ok({\n activeStep: activeStep.value as Binding<number>,\n children: children.value,\n onSelect: () => placeholderAction,\n });\n};\n\nconst decodeSummaryListSpec = (path: string, j: JsonAst): R<SummaryListSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const children = decodeChildren(path, f);\n if (!children.ok) return children;\n const heading = optFieldAliased(path, f, 'heading', ['title'], decodeTextSource);\n if (!heading.ok) return heading;\n return ok({\n children: children.value,\n ...(heading.value !== undefined ? { heading: heading.value } : {}),\n });\n};\n\nconst decodeDisclosureSpec = (path: string, j: JsonAst): R<DisclosureSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const children = decodeChildren(path, f);\n if (!children.ok) return children;\n const defaultOpen = reqField(path, f, 'defaultOpen', 'defaultOpen bool', requireBool);\n if (!defaultOpen.ok) return defaultOpen;\n const heading = reqFieldAliased(\n path,\n f,\n 'heading',\n ['title'],\n 'Disclosure heading TextSource',\n decodeTextSource,\n );\n if (!heading.ok) return heading;\n const open = reqField(path, f, 'open', 'open binding', decodeBinding);\n if (!open.ok) return open;\n return ok({\n children: children.value,\n defaultOpen: defaultOpen.value,\n heading: heading.value,\n open: open.value as Binding<boolean>,\n // Phase 426: a present `\"<closure>\"` sentinel → the inert placeholder; an\n // absent key → omitted, arming the `open` write-back default.\n ...(tryField(f, 'onToggle') !== undefined ? { onToggle: () => placeholderAction } : {}),\n });\n};\n\nconst decodeModalSpec = (path: string, j: JsonAst): R<ModalSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const children = decodeChildren(path, f);\n if (!children.ok) return children;\n const dismissable = reqField(path, f, 'dismissable', 'dismissable bool', requireBool);\n if (!dismissable.ok) return dismissable;\n // `onDismiss` is optional since Phase 426: absent → omitted, arming the\n // `open` write-back default (dismiss writes `false` to the slot).\n const onDismiss = optField(path, f, 'onDismiss', decodeAction);\n if (!onDismiss.ok) return onDismiss;\n const open = reqField(path, f, 'open', 'open binding', decodeBinding);\n if (!open.ok) return open;\n const heading = optFieldAliased(path, f, 'heading', ['title'], decodeTextSource);\n if (!heading.ok) return heading;\n return ok({\n children: children.value,\n dismissable: dismissable.value,\n ...(onDismiss.value !== undefined ? { onDismiss: onDismiss.value } : {}),\n open: open.value as Binding<boolean>,\n ...(heading.value !== undefined ? { heading: heading.value } : {}),\n });\n};\n\nconst decodeScrollAreaSpec = (path: string, j: JsonAst): R<ScrollAreaSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const children = decodeChildren(path, f);\n if (!children.ok) return children;\n const orientation = reqField(\n path,\n f,\n 'orientation',\n 'ScrollOrientation',\n decodeScrollOrientation,\n );\n if (!orientation.ok) return orientation;\n const maxHeight = optField(path, f, 'maxHeight', requireInt);\n if (!maxHeight.ok) return maxHeight;\n const maxWidth = optField(path, f, 'maxWidth', requireInt);\n if (!maxWidth.ok) return maxWidth;\n return ok({\n children: children.value,\n orientation: orientation.value,\n ...(maxHeight.value !== undefined ? { maxHeight: maxHeight.value } : {}),\n ...(maxWidth.value !== undefined ? { maxWidth: maxWidth.value } : {}),\n });\n};\n\nconst decodeLayoutKind = (path: string, j: JsonAst): R<LayoutKind<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n // Flat wire: spec fields are hoisted onto the kind object itself (no `spec`\n // wrapper, WIRE_FORMAT.md §3.2) — pass `j` to the spec decoder.\n switch (d.value) {\n // Phase 390 — the unified container + the four legacy decode-upgrades.\n case 'Box': {\n const r = decodeBox(path, j);\n return r.ok ? ok({ kind: 'Box', spec: r.value }) : r;\n }\n case 'SplitPanel': {\n const r = decodeSplitPanelSpec(path, j);\n return r.ok ? ok({ kind: 'SplitPanel', spec: r.value }) : r;\n }\n case 'Tabs': {\n const r = decodeTabsSpec(path, j);\n return r.ok ? ok({ kind: 'Tabs', spec: r.value }) : r;\n }\n case 'Stepper': {\n const r = decodeStepperSpec(path, j);\n return r.ok ? ok({ kind: 'Stepper', spec: r.value }) : r;\n }\n case 'SummaryList': {\n const r = decodeSummaryListSpec(path, j);\n return r.ok ? ok({ kind: 'SummaryList', spec: r.value }) : r;\n }\n case 'Disclosure': {\n const r = decodeDisclosureSpec(path, j);\n return r.ok ? ok({ kind: 'Disclosure', spec: r.value }) : r;\n }\n case 'Modal': {\n const r = decodeModalSpec(path, j);\n return r.ok ? ok({ kind: 'Modal', spec: r.value }) : r;\n }\n case 'ScrollArea': {\n const r = decodeScrollAreaSpec(path, j);\n return r.ok ? ok({ kind: 'ScrollArea', spec: r.value }) : r;\n }\n default:\n return unknownDuCase(\n path,\n d.value,\n 'Box | SplitPanel | Tabs | Stepper | SummaryList | Disclosure | Modal | ScrollArea',\n );\n }\n};\n\n// ─── NodeKind ────────────────────────────────────────────────────────────────\n\nconst decodeContentHash = (path: string, j: JsonAst): R<ContentHash> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const algorithm = reqField(path, f, 'algorithm', 'hash algorithm string', requireString);\n if (!algorithm.ok) return algorithm;\n const hash = reqField(path, f, 'hash', 'hash string', requireString);\n if (!hash.ok) return hash;\n const strictnessR = reqField(\n path,\n f,\n 'strictness',\n \"'StrictReplay' | 'AdvisoryWarning' | 'Enforced'\",\n requireString,\n );\n if (!strictnessR.ok) return strictnessR;\n const s = strictnessR.value;\n if (s !== 'StrictReplay' && s !== 'AdvisoryWarning' && s !== 'Enforced') {\n return unknownDuCase(`${path}.strictness`, s, 'StrictReplay | AdvisoryWarning | Enforced');\n }\n return ok({ algorithm: algorithm.value, hash: hash.value, strictness: s as HashStrictness });\n};\n\n// ─── Parameterised-fragment hole / effect / scalar decoders (Phase 180) ──────\n\nconst decodeHoleValueSpace = (path: string, j: JsonAst): R<HoleValueSpace> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const disc = requireDiscriminator(path, fo.value);\n if (!disc.ok) return disc;\n switch (disc.value) {\n case 'IntRange': {\n const min = reqField(path, fo.value, 'min', 'IntRange min', requireInt);\n if (!min.ok) return min;\n const max = reqField(path, fo.value, 'max', 'IntRange max', requireInt);\n if (!max.ok) return max;\n return ok({ kind: 'IntRange', min: min.value, max: max.value });\n }\n case 'FloatRange': {\n const min = reqField(path, fo.value, 'min', 'FloatRange min', requireFloat);\n if (!min.ok) return min;\n const max = reqField(path, fo.value, 'max', 'FloatRange max', requireFloat);\n if (!max.ok) return max;\n return ok({ kind: 'FloatRange', min: min.value, max: max.value });\n }\n case 'StringLen': {\n const minLen = reqField(path, fo.value, 'minLen', 'StringLen minLen', requireInt);\n if (!minLen.ok) return minLen;\n const maxLen = reqField(path, fo.value, 'maxLen', 'StringLen maxLen', requireInt);\n if (!maxLen.ok) return maxLen;\n return ok({ kind: 'StringLen', minLen: minLen.value, maxLen: maxLen.value });\n }\n case 'Enum': {\n const arr = reqField(path, fo.value, 'choices', 'Enum choices', requireArray);\n if (!arr.ok) return arr;\n const choices = traverseIndexed(arr.value, (i, item) =>\n requireString(`${path}.choices[${i}]`, item),\n );\n if (!choices.ok) return choices;\n return ok({ kind: 'Enum', choices: choices.value });\n }\n case 'AnyString':\n return ok({ kind: 'AnyString' });\n default:\n return unknownDuCase(\n path,\n disc.value,\n 'IntRange | FloatRange | StringLen | Enum | AnyString',\n );\n }\n};\n\nconst decodeFragmentScalar = (path: string, j: JsonAst): R<FragmentScalar> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const disc = requireDiscriminator(path, fo.value);\n if (!disc.ok) return disc;\n switch (disc.value) {\n case 'Int': {\n const v = reqField(path, fo.value, 'value', 'Int value', requireInt);\n return v.ok ? ok({ kind: 'int', value: v.value }) : v;\n }\n case 'Float': {\n const v = reqField(path, fo.value, 'value', 'Float value', requireFloat);\n return v.ok ? ok({ kind: 'float', value: v.value }) : v;\n }\n case 'Bool': {\n const v = reqField(path, fo.value, 'value', 'Bool value', requireBool);\n return v.ok ? ok({ kind: 'bool', value: v.value }) : v;\n }\n case 'Str': {\n const v = reqField(path, fo.value, 'value', 'Str value', requireString);\n return v.ok ? ok({ kind: 'str', value: v.value }) : v;\n }\n default:\n return unknownDuCase(path, disc.value, 'Int | Float | Bool | Str');\n }\n};\n\nconst decodeHoleDecl = (path: string, j: JsonAst): R<HoleDecl> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const disc = requireDiscriminator(path, fo.value);\n if (!disc.ok) return disc;\n switch (disc.value) {\n case 'Value': {\n const name = reqField(path, fo.value, 'name', 'Value hole name', requireString);\n if (!name.ok) return name;\n const space = reqField(path, fo.value, 'space', 'Value hole space', decodeHoleValueSpace);\n if (!space.ok) return space;\n const def = optField(path, fo.value, 'default', decodeFragmentScalar);\n if (!def.ok) return def;\n return ok({\n kind: 'Value',\n name: name.value,\n space: space.value,\n ...(def.value !== undefined ? { default: def.value } : {}),\n });\n }\n case 'Slot': {\n const name = reqField(path, fo.value, 'name', 'Slot hole name', requireString);\n if (!name.ok) return name;\n const kc = optField(path, fo.value, 'kindConstraint', requireString);\n if (!kc.ok) return kc;\n return ok({\n kind: 'Slot',\n name: name.value,\n ...(kc.value !== undefined ? { kindConstraint: kc.value } : {}),\n });\n }\n case 'Repeat': {\n const name = reqField(path, fo.value, 'name', 'Repeat hole name', requireString);\n if (!name.ok) return name;\n const space = reqField(\n path,\n fo.value,\n 'countSpace',\n 'Repeat hole countSpace',\n decodeHoleValueSpace,\n );\n if (!space.ok) return space;\n return ok({ kind: 'Repeat', name: name.value, countSpace: space.value });\n }\n default:\n return unknownDuCase(path, disc.value, 'Value | Slot | Repeat');\n }\n};\n\nconst decodeEffectClass = (path: string, j: JsonAst): R<EffectClass> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const host = reqField(path, fo.value, 'hostEffect', 'EffectClass hostEffect', requireString);\n if (!host.ok) return host;\n if (host.value !== 'Pure' && host.value !== 'ReadsHost' && host.value !== 'WritesHost')\n return unknownDuCase(`${path}.hostEffect`, host.value, 'Pure | ReadsHost | WritesHost');\n const det = reqField(path, fo.value, 'determinism', 'EffectClass determinism', requireString);\n if (!det.ok) return det;\n if (\n det.value !== 'Deterministic' &&\n det.value !== 'Clock' &&\n det.value !== 'Random' &&\n det.value !== 'Network'\n )\n return unknownDuCase(\n `${path}.determinism`,\n det.value,\n 'Deterministic | Clock | Random | Network',\n );\n return ok({ hostEffect: host.value as HostEffect, determinism: det.value as DeterminismSource });\n};\n\n/**\n * The `expectedShape` hint carried by every `WRONG_NODE_KIND` error, PROJECTED\n * from the single `NODE_KIND_GROUPS` vocabulary in `@fuaran-ui/schema` rather\n * than hand-maintained — a kind added to that enumeration reaches this hint for\n * free, which is the drift class three separately-maintained hint strings had\n * already accumulated across the hosts.\n *\n * Byte-identical to the F# and Rust hosts' hint (the group order is the shared\n * contract), so a model repairing against one host sees the same vocabulary it\n * would see from any other. Pinned against the generated manifest `kinds` by the\n * corpus test suite.\n */\nexport const WRONG_NODE_KIND_HINT: string = (() => {\n // Every group but `Structural` is a named primitive family; the structural\n // kinds are listed bare at the tail. Written as a fold over the groups rather\n // than four hardcoded lookups so a NEW family also reaches the hint for free.\n const primitives = NODE_KIND_GROUPS.filter((g) => g.label !== 'Structural')\n .map(\n (g) =>\n `${'AEIOU'.includes(g.label[0]!) ? 'an' : 'a'} ${g.label} primitive (${g.kinds.join(' | ')})`,\n )\n .join(', ');\n const structural = NODE_KIND_GROUPS.find((g) => g.label === 'Structural')?.kinds ?? [];\n return `${primitives}, or ${structural.join(' | ')}`;\n})();\n\nconst decodeNodeKind = (path: string, j: JsonAst): R<NodeKind<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n // The four behavioural categories are flat on the wire (WIRE_FORMAT §3.2):\n // the `kind` object carries the primitive discriminator directly, so route\n // each primitive to its inner decoder and recover the category here. These\n // name-sets MUST stay in sync with the four inner decoders + the encoder.\n case 'Box':\n case 'SplitPanel':\n case 'Tabs':\n case 'Stepper':\n case 'SummaryList':\n case 'Disclosure':\n case 'Modal':\n case 'ScrollArea': {\n const k = decodeLayoutKind(path, j);\n return k.ok ? ok({ kind: 'Layout', layout: k.value }) : k;\n }\n case 'Heading':\n case 'Markdown':\n case 'Metric':\n case 'Badge':\n case 'Sparkline':\n case 'Callout':\n case 'Progress':\n case 'Skeleton':\n case 'LabelValueRow':\n case 'Fact':\n case 'Link':\n case 'Image':\n case 'List':\n case 'Toast':\n case 'CodeBlock':\n case 'Math':\n case 'Drawing': {\n const k = decodeDisplayKind(path, j);\n return k.ok ? ok({ kind: 'Display', display: k.value }) : k;\n }\n case 'Form':\n case 'Filters':\n case 'Button':\n case 'FileUpload':\n case 'Select': {\n const k = decodeInputKind(path, j);\n return k.ok ? ok({ kind: 'Input', input: k.value }) : k;\n }\n case 'DataGrid':\n case 'Chart':\n case 'Map': {\n const k = decodeVisKind(path, j);\n return k.ok ? ok({ kind: 'Visualisation', visualisation: k.value }) : k;\n }\n case 'Custom': {\n const moduleId = reqField(path, f, 'moduleId', 'Custom moduleId string', requireString);\n if (!moduleId.ok) return moduleId;\n const componentId = reqField(\n path,\n f,\n 'componentId',\n 'Custom componentId string',\n requireString,\n );\n if (!componentId.ok) return componentId;\n const propsJ = requireField(path, f, 'props', 'Custom props map');\n if (!propsJ.ok) return propsJ;\n const props = decodeJValMap(`${path}.props`, propsJ.value);\n if (!props.ok) return props;\n const contentHash = optField(path, f, 'contentHash', decodeContentHash);\n if (!contentHash.ok) return contentHash;\n let exposedNodeIds: readonly NodeId[] = [];\n const exJ = tryField(f, 'exposedNodeIds');\n if (exJ !== undefined) {\n const arr = requireArray(`${path}.exposedNodeIds`, exJ);\n if (!arr.ok) return arr;\n const ids = traverseIndexed(arr.value, (i, item) =>\n requireString(`${path}.exposedNodeIds[${i}]`, item),\n );\n if (!ids.ok) return ids;\n exposedNodeIds = ids.value as NodeId[];\n }\n return ok({\n kind: 'Custom',\n moduleId: moduleId.value,\n componentId: componentId.value,\n props: props.value,\n exposedNodeIds,\n ...(contentHash.value !== undefined ? { contentHash: contentHash.value } : {}),\n });\n }\n case 'ErrorBoundary': {\n const child = reqField(path, f, 'child', 'ErrorBoundary child Node', decodeNodeAst);\n if (!child.ok) return child;\n const fallback = reqField(path, f, 'fallback', 'ErrorBoundary fallback Node', decodeNodeAst);\n if (!fallback.ok) return fallback;\n return ok({ kind: 'ErrorBoundary', spec: { child: child.value, fallback: fallback.value } });\n }\n case 'Switch': {\n // State-bound conditional child (Phase 392). `stateKey` (string), `cases`\n // (array of `{child,match}` objects), `default` (Node) — all required.\n // Duplicate `match` values are NOT a decode error (first-match-wins keeps\n // decode structural; the pre-emit validator flags them, FUARAN082).\n const stateKey = reqField(path, f, 'stateKey', 'Switch stateKey string', requireString);\n if (!stateKey.ok) return stateKey;\n const casesArr = reqField(path, f, 'cases', 'Switch cases array', requireArray);\n if (!casesArr.ok) return casesArr;\n const cases = traverseIndexed(casesArr.value, (i, item) => {\n const cp = `${path}.cases[${i}]`;\n const co = requireObject(cp, item);\n if (!co.ok) return co;\n const m = reqField(cp, co.value, 'match', 'Switch case match string', requireString);\n if (!m.ok) return m;\n const c = reqField(cp, co.value, 'child', 'Switch case child Node', decodeNodeAst);\n if (!c.ok) return c;\n return ok({ match: m.value, child: c.value });\n });\n if (!cases.ok) return cases;\n const def = reqField(path, f, 'default', 'Switch default Node', decodeNodeAst);\n if (!def.ok) return def;\n return ok({\n kind: 'Switch',\n spec: { stateKey: stateKey.value, cases: cases.value, default: def.value },\n });\n }\n case 'FragmentDecl': {\n const name = reqField(path, f, 'name', 'FragmentDecl name string', requireString);\n if (!name.ok) return name;\n const body = reqField(path, f, 'body', 'FragmentDecl body Node', decodeNodeAst);\n if (!body.ok) return body;\n // Phase 180 — `holes` / `effect` additive; absent ⇒ degenerate fixed-body.\n let holes: readonly HoleDecl[] = [];\n const holesJ = tryField(f, 'holes');\n if (holesJ !== undefined) {\n const arr = requireArray(`${path}.holes`, holesJ);\n if (!arr.ok) return arr;\n const decoded = traverseIndexed(arr.value, (i, item) =>\n decodeHoleDecl(`${path}.holes[${i}]`, item),\n );\n if (!decoded.ok) return decoded;\n holes = decoded.value;\n }\n let effect: EffectClass = { hostEffect: 'Pure', determinism: 'Deterministic' };\n const effectJ = tryField(f, 'effect');\n if (effectJ !== undefined) {\n const e = decodeEffectClass(`${path}.effect`, effectJ);\n if (!e.ok) return e;\n effect = e.value;\n }\n return ok({\n kind: 'FragmentDecl',\n spec: { name: name.value as FragmentId, body: body.value, holes, effect },\n });\n }\n case 'FragmentRef': {\n const name = reqField(path, f, 'name', 'FragmentRef name string', requireString);\n if (!name.ok) return name;\n // Phase 180 — `args` additive; absent ⇒ degenerate zero-arg ref.\n const args: Record<string, FragmentArg<unknown>> = {};\n const argsJ = tryField(f, 'args');\n if (argsJ !== undefined) {\n const argsObj = requireObject(`${path}.args`, argsJ);\n if (!argsObj.ok) return argsObj;\n for (const [key, valueJ] of argsObj.value) {\n const argPath = `${path}.args.${key}`;\n const fo = requireObject(argPath, valueJ);\n if (!fo.ok) return fo;\n const disc = requireDiscriminator(argPath, fo.value);\n if (!disc.ok) return disc;\n if (disc.value === 'SlotArg') {\n const tree = reqField(argPath, fo.value, 'tree', 'SlotArg tree Node', decodeNodeAst);\n if (!tree.ok) return tree;\n args[key] = { kind: 'slot', tree: tree.value };\n } else {\n // Int | Float | Bool | Str — a value argument.\n const scalar = decodeFragmentScalar(argPath, valueJ);\n if (!scalar.ok) return scalar;\n args[key] = { kind: 'value', value: scalar.value };\n }\n }\n }\n return ok({ kind: 'FragmentRef', spec: { name: name.value as FragmentId, args } });\n }\n case 'Mount': {\n // Phase 265, §4o — the isolation/embedding boundary. Mirror the encoder:\n // required `scopeId` + `channel` + `capabilities`; optional `inputs`\n // (additive, reusing the FragmentArg decode). `onBubble` is a closure\n // sentinel on the wire → dropped from the typed shape. A malformed Mount\n // surfaces a structured DecodeError, never a throw (default-deny).\n const scopeId = reqField(path, f, 'scopeId', 'Mount scopeId string', requireString);\n if (!scopeId.ok) return scopeId;\n\n const channelObj = reqField(path, f, 'channel', 'Mount channel object', requireObject);\n if (!channelObj.ok) return channelObj;\n const direction = reqField(\n `${path}.channel`,\n channelObj.value,\n 'direction',\n 'channel direction string',\n requireString,\n );\n if (!direction.ok) return direction;\n if (direction.value !== 'OutOnly' && direction.value !== 'TwoWay')\n return makeError(\n 'UNKNOWN_DU_CASE',\n `${path}.channel.direction`,\n `unknown ChannelDirection '${direction.value}'`,\n 'OutOnly | TwoWay',\n );\n const dir = direction.value as 'OutOnly' | 'TwoWay';\n let messageShape: string | undefined;\n const msgShapeJ = tryField(channelObj.value, 'messageShape');\n if (msgShapeJ !== undefined) {\n const ms = requireString(`${path}.channel.messageShape`, msgShapeJ);\n if (!ms.ok) return ms;\n messageShape = ms.value;\n }\n\n const capsArr = reqField(path, f, 'capabilities', 'Mount capabilities array', requireArray);\n if (!capsArr.ok) return capsArr;\n const capabilities: string[] = [];\n for (let i = 0; i < capsArr.value.length; i++) {\n const c = requireString(`${path}.capabilities[${i}]`, capsArr.value[i]!);\n if (!c.ok) return c;\n capabilities.push(c.value);\n }\n\n // Phase 265 — `inputs` additive; absent ⇒ zero-input mount. Reuses the\n // FragmentArg decode (value scalar or slot subtree).\n const inputs: Record<string, FragmentArg<unknown>> = {};\n const inputsJ = tryField(f, 'inputs');\n if (inputsJ !== undefined) {\n const inputsObj = requireObject(`${path}.inputs`, inputsJ);\n if (!inputsObj.ok) return inputsObj;\n for (const [key, valueJ] of inputsObj.value) {\n const argPath = `${path}.inputs.${key}`;\n const fo = requireObject(argPath, valueJ);\n if (!fo.ok) return fo;\n const disc = requireDiscriminator(argPath, fo.value);\n if (!disc.ok) return disc;\n if (disc.value === 'SlotArg') {\n const tree = reqField(argPath, fo.value, 'tree', 'SlotArg tree Node', decodeNodeAst);\n if (!tree.ok) return tree;\n inputs[key] = { kind: 'slot', tree: tree.value };\n } else {\n const scalar = decodeFragmentScalar(argPath, valueJ);\n if (!scalar.ok) return scalar;\n inputs[key] = { kind: 'value', value: scalar.value };\n }\n }\n }\n\n // Build `channel` conditionally so `messageShape` is present only when\n // decoded (exactOptionalPropertyTypes forbids an explicit `undefined`).\n const channel =\n messageShape !== undefined ? { direction: dir, messageShape } : { direction: dir };\n\n return ok({\n kind: 'Mount',\n spec: {\n scopeId: scopeId.value,\n inputs,\n channel,\n capabilities,\n },\n });\n }\n default:\n return makeError(\n 'WRONG_NODE_KIND',\n `${path}.$type`,\n `unknown NodeKind discriminator '${d.value}'`,\n WRONG_NODE_KIND_HINT,\n );\n }\n};\n\n// ─── StateBehaviour / SemanticStyle / Accessibility / Node ───────────────────\n\nconst decodeStateBehaviour = (path: string, j: JsonAst): R<StateBehaviour<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const onLoading = optField(path, f, 'onLoading', decodeNodeAst);\n if (!onLoading.ok) return onLoading;\n const onEmpty = optField(path, f, 'onEmpty', decodeNodeAst);\n if (!onEmpty.ok) return onEmpty;\n const hasOnError = tryField(f, 'onError') !== undefined;\n return ok({\n ...(onLoading.value !== undefined ? { onLoading: onLoading.value } : {}),\n ...(onEmpty.value !== undefined ? { onEmpty: onEmpty.value } : {}),\n ...(hasOnError ? { onError: (_p: ErrorPayload): Node<unknown> => placeholderClosureNode } : {}),\n });\n};\n\nconst decodeSemanticStyle = (path: string, j: JsonAst): R<SemanticStyle> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n // Phase 460 — tone/weight/emphasis join role/voice as omitted-when-default;\n // restore the identity default on absence.\n const tone = optField(path, f, 'tone', decodeTone);\n if (!tone.ok) return tone;\n const weight = optField(path, f, 'weight', decodeWeight);\n if (!weight.ok) return weight;\n const emphasis = optField(path, f, 'emphasis', decodeEmphasis);\n if (!emphasis.ok) return emphasis;\n // `role` / `voice` (Phase 147) are optional on the wire — omitted at their\n // defaults ('None' / 'Default'); restore the default on absence.\n const role = optField(path, f, 'role', decodeStyleRole);\n if (!role.ok) return role;\n const voice = optField(path, f, 'voice', decodeFontVoice);\n if (!voice.ok) return voice;\n return ok({\n tone: tone.value ?? 'Default',\n weight: weight.value ?? 'Standard',\n emphasis: emphasis.value ?? 'Normal',\n role: role.value ?? 'None',\n voice: voice.value ?? 'Default',\n });\n};\n\nconst decodeAccessibility = (path: string, j: JsonAst): R<Accessibility> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const label = optField(path, f, 'label', decodeBindingString);\n if (!label.ok) return label;\n const labelledBy = optField(path, f, 'labelledBy', requireString);\n if (!labelledBy.ok) return labelledBy;\n const describedBy = optField(path, f, 'describedBy', requireString);\n if (!describedBy.ok) return describedBy;\n const role = optField(path, f, 'role', decodeAriaRole);\n if (!role.ok) return role;\n const liveRegion = optField(path, f, 'liveRegion', decodeLiveRegion);\n if (!liveRegion.ok) return liveRegion;\n const hidden = optField(path, f, 'hidden', decodeBindingBool);\n if (!hidden.ok) return hidden;\n return ok({\n ...(label.value !== undefined ? { label: label.value } : {}),\n ...(labelledBy.value !== undefined ? { labelledBy: labelledBy.value as NodeId } : {}),\n ...(describedBy.value !== undefined ? { describedBy: describedBy.value as NodeId } : {}),\n ...(role.value !== undefined ? { role: role.value } : {}),\n ...(liveRegion.value !== undefined ? { liveRegion: liveRegion.value } : {}),\n ...(hidden.value !== undefined ? { hidden: hidden.value } : {}),\n });\n};\n\n/** All-empty StateBehaviour the decoder restores when `state` is absent (§3.1). */\nconst emptyStateBehaviour: StateBehaviour<unknown> = {};\n\n/** All-default SemanticStyle the decoder restores when `style` is absent (§3.1). */\nconst defaultSemanticStyle: SemanticStyle = {\n tone: 'Default',\n weight: 'Standard',\n emphasis: 'Normal',\n role: 'None',\n voice: 'Default',\n};\n\nconst placeholderClosureNode: Node<unknown> = {\n id: CLOSURE as NodeId,\n kind: {\n kind: 'Display',\n display: { kind: 'Markdown', spec: { text: { kind: 'Literal', value: CLOSURE } } },\n },\n state: {},\n style: {\n tone: 'Default',\n weight: 'Standard',\n emphasis: 'Normal',\n role: 'None',\n voice: 'Default',\n },\n};\n\nconst decodeNodeAst = (path: string, j: JsonAst): R<Node<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const idJ = requireField(path, f, 'id', 'Node id string');\n if (!idJ.ok) return idJ;\n const idStr = requireString(`${path}.id`, idJ.value);\n if (!idStr.ok) return idStr;\n if (idStr.value === '') {\n return makeError('EMPTY_NODE_ID', `${path}.id`, 'Node id is empty', 'non-empty string');\n }\n const kind = reqField(path, f, 'kind', 'NodeKind discriminator object', decodeNodeKind);\n if (!kind.ok) return kind;\n // `state` / `style` are omitted on the wire when empty / all-default\n // (WIRE_FORMAT.md §3.1) — restore the default on absence.\n const state =\n tryField(f, 'state') === undefined\n ? ok<StateBehaviour<unknown>>(emptyStateBehaviour)\n : reqField(path, f, 'state', 'StateBehaviour object', decodeStateBehaviour);\n if (!state.ok) return state;\n const style =\n tryField(f, 'style') === undefined\n ? ok<SemanticStyle>(defaultSemanticStyle)\n : reqField(path, f, 'style', 'SemanticStyle object', decodeSemanticStyle);\n if (!style.ok) return style;\n const accessibility = optField(path, f, 'accessibility', decodeAccessibility);\n if (!accessibility.ok) return accessibility;\n return ok({\n id: idStr.value as NodeId,\n kind: kind.value,\n state: state.value,\n style: style.value,\n ...(accessibility.value !== undefined ? { accessibility: accessibility.value } : {}),\n });\n};\n\n// ─── TreeOp ──────────────────────────────────────────────────────────────────\n\nconst decodeTreeOpAst = (path: string, j: JsonAst): R<TreeOp<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n const target = (): R<NodeId> => {\n const r = reqField(path, f, 'target', 'target NodeId', requireString);\n return r.ok ? ok(r.value as NodeId) : r;\n };\n switch (d.value) {\n case 'EditNode': {\n const t = target();\n if (!t.ok) return t;\n const newKind = reqField(path, f, 'newKind', 'NodeKind object', decodeNodeKind);\n return newKind.ok\n ? ok({ kind: 'EditNode', target: t.value, newKind: newKind.value })\n : newKind;\n }\n case 'UpdateProp': {\n const t = target();\n if (!t.ok) return t;\n const p = reqField(path, f, 'path', 'dot-separated path string', requireString);\n if (!p.ok) return p;\n const valueJ = requireField(path, f, 'value', 'JsonValue payload');\n if (!valueJ.ok) return valueJ;\n const value = decodeJVal(`${path}.value`, valueJ.value);\n return value.ok\n ? ok({\n kind: 'UpdateProp',\n target: t.value,\n path: p.value,\n value: value.value,\n })\n : value;\n }\n case 'ReplaceBinding': {\n const t = target();\n if (!t.ok) return t;\n const slot = reqField(path, f, 'slot', 'slot name string', requireString);\n if (!slot.ok) return slot;\n const b = reqField(path, f, 'binding', 'Binding object', decodeBinding);\n return b.ok\n ? ok({ kind: 'ReplaceBinding', target: t.value, slot: slot.value, binding: b.value })\n : b;\n }\n case 'UpdateStyle': {\n const t = target();\n if (!t.ok) return t;\n const style = reqField(path, f, 'style', 'SemanticStyle object', decodeSemanticStyle);\n return style.ok ? ok({ kind: 'UpdateStyle', target: t.value, style: style.value }) : style;\n }\n case 'UpdateState': {\n const t = target();\n if (!t.ok) return t;\n const state = reqField(path, f, 'state', 'StateBehaviour object', decodeStateBehaviour);\n return state.ok ? ok({ kind: 'UpdateState', target: t.value, state: state.value }) : state;\n }\n case 'InsertChild': {\n const parentJ = reqField(path, f, 'parentId', 'parent NodeId', requireString);\n if (!parentJ.ok) return parentJ;\n // A legacy `position` is ACCEPTED AND IGNORED for the migration window\n // (phase 683, mirroring 681 on the F# side): the hosts adopt\n // independently, and a stored v1 emission must still apply — as an\n // append, since order is now ReorderChildren's. Simply not reading the\n // field is the tolerance; this decoder takes named fields and ignores\n // the rest. It is a migration mechanism, not a form offered to an\n // author: nothing that teaches the wire mentions it. Phase 687 closes\n // the window and makes it a decode error.\n const child = reqField(path, f, 'child', 'child Node object', decodeNodeAst);\n return child.ok\n ? ok({\n kind: 'InsertChild',\n parentId: parentJ.value as NodeId,\n child: child.value,\n })\n : child;\n }\n case 'RemoveNode': {\n const t = target();\n return t.ok ? ok({ kind: 'RemoveNode', target: t.value }) : t;\n }\n case 'MoveNode': {\n const t = target();\n if (!t.ok) return t;\n // Legacy `newPosition` accepted and ignored — see InsertChild above.\n const newParent = reqField(path, f, 'newParentId', 'new parent NodeId', requireString);\n return newParent.ok\n ? ok({\n kind: 'MoveNode',\n target: t.value,\n newParentId: newParent.value as NodeId,\n })\n : newParent;\n }\n case 'ReorderChildren': {\n const parentJ = reqField(path, f, 'parentId', 'parent NodeId', requireString);\n if (!parentJ.ok) return parentJ;\n const newOrderJ = requireField(path, f, 'newOrder', 'NodeId list');\n if (!newOrderJ.ok) return newOrderJ;\n const arr = requireArray(`${path}.newOrder`, newOrderJ.value);\n if (!arr.ok) return arr;\n const newOrder = traverseIndexed(arr.value, (i, item) =>\n requireString(`${path}.newOrder[${i}]`, item),\n );\n return newOrder.ok\n ? ok({\n kind: 'ReorderChildren',\n parentId: parentJ.value as NodeId,\n newOrder: newOrder.value as NodeId[],\n })\n : newOrder;\n }\n case 'ReplaceRoot': {\n const n = reqField(path, f, 'node', 'root Node object', decodeNodeAst);\n return n.ok ? ok({ kind: 'ReplaceRoot', node: n.value }) : n;\n }\n case 'Batch': {\n const opsJ = requireField(path, f, 'ops', 'Batch inner-op list');\n if (!opsJ.ok) return opsJ;\n const arr = requireArray(`${path}.ops`, opsJ.value);\n if (!arr.ok) return arr;\n const ops = traverseIndexed(arr.value, (i, item) =>\n decodeTreeOpAst(`${path}.ops[${i}]`, item),\n );\n return ops.ok ? ok({ kind: 'Batch', ops: ops.value }) : ops;\n }\n default:\n return unknownDuCase(\n path,\n d.value,\n 'EditNode | UpdateProp | ReplaceBinding | UpdateStyle | UpdateState | InsertChild | RemoveNode | MoveNode | ReorderChildren | ReplaceRoot | Batch',\n );\n }\n};\n\n// ─── Coercion bridge (apply-engine UpdateProp) ───────────────────────────────\n//\n// Port of the F# `JsonDecode.Coerce` module. `TreeOp.UpdateProp` carries a\n// `JsonValue` payload; the apply engine pours it into a typed spec field. These\n// helpers convert the decoded `JsonValue` (a JS primitive, or a wire-shaped DU\n// object) into the field's typed value by rebuilding the JSON AST and running\n// the matching per-type decoder. Failures surface a plain message string the\n// apply engine reframes into a `KindMismatch` ApplyError.\n\nconst valueToAst = (v: JsonValue): JsonAst => {\n if (v === null) return { kind: 'JNull' };\n if (typeof v === 'boolean') return { kind: 'JBool', value: v };\n if (typeof v === 'number') return { kind: 'JNumber', value: v };\n if (typeof v === 'string') return { kind: 'JString', value: v };\n if (Array.isArray(v)) return { kind: 'JArray', items: v.map(valueToAst) };\n const m = new Map<string, JsonAst>();\n for (const [k, vv] of Object.entries(v)) m.set(k, valueToAst(vv));\n return { kind: 'JObject', fields: m };\n};\n\nconst viaAst = <T>(v: JsonValue, dec: (p: string, j: JsonAst) => R<T>): Result<T, string> => {\n const r = dec('$value', valueToAst(v));\n return r.ok ? { ok: true, value: r.value } : { ok: false, error: r.error.message };\n};\n\nconst okS = <T>(value: T): Result<T, string> => ({ ok: true, value });\nconst errS = (error: string): Result<never, string> => ({ ok: false, error });\n\n/** Typed-value coercers for `TreeOp.UpdateProp` (used by the apply engine). */\nexport const coerce = {\n int: (v: JsonValue): Result<number, string> =>\n typeof v === 'number' ? okS(Math.trunc(v)) : errS('expected a JSON number (integer)'),\n float: (v: JsonValue): Result<number, string> =>\n typeof v === 'number' ? okS(v) : errS('expected a JSON number'),\n bool: (v: JsonValue): Result<boolean, string> =>\n typeof v === 'boolean' ? okS(v) : errS('expected a JSON boolean'),\n string: (v: JsonValue): Result<string, string> =>\n typeof v === 'string' ? okS(v) : errS('expected a JSON string'),\n textSource: (v: JsonValue): Result<TextSource, string> => viaAst(v, decodeTextSource),\n bindingNumber: (v: JsonValue): Result<Binding<number>, string> =>\n viaAst(v, decodeBinding) as Result<Binding<number>, string>,\n bindingInt: (v: JsonValue): Result<Binding<number>, string> =>\n viaAst(v, decodeBinding) as Result<Binding<number>, string>,\n bindingBool: (v: JsonValue): Result<Binding<boolean>, string> => viaAst(v, decodeBindingBool),\n bindingString: (v: JsonValue): Result<Binding<string>, string> => viaAst(v, decodeBindingString),\n cellFormat: (v: JsonValue): Result<CellFormat, string> => viaAst(v, decodeCellFormat),\n columnWidth: (v: JsonValue): Result<ColumnWidth, string> => viaAst(v, decodeColumnWidth),\n orientation: (v: JsonValue): Result<Orientation, string> => viaAst(v, decodeOrientation),\n tone: (v: JsonValue): Result<ToneVariant, string> => viaAst(v, decodeTone),\n weight: (v: JsonValue): Result<StyleWeight, string> => viaAst(v, decodeWeight),\n emphasis: (v: JsonValue): Result<Emphasis, string> => viaAst(v, decodeEmphasis),\n /**\n * The behavioural `emphasis` BOOL on Fact / LabelValueRow — the UpdateProp\n * twin of `decodeEmphasisFlag`, so a TreeOp edit gets the same\n * cross-vocabulary admission as a fresh decode (0.2.8, 2026-07-19 sweep).\n */\n emphasisFlag: (v: JsonValue): Result<boolean, string> => viaAst(v, decodeEmphasisFlag),\n headingVariant: (v: JsonValue): Result<HeadingVariant, string> => viaAst(v, decodeHeadingVariant),\n badgeVariant: (v: JsonValue): Result<BadgeVariant, string> => viaAst(v, decodeBadgeVariant),\n iconSource: (v: JsonValue): Result<IconSource, string> => viaAst(v, decodeIconSource),\n};\n\n// ─── Public surface ──────────────────────────────────────────────────────────\n\nconst invalidJson = (parseMessage: string): R<never> =>\n makeError(\n 'INVALID_JSON',\n '$',\n `input is not valid JSON: ${parseMessage}`,\n 'well-formed JSON object per the canonical-JSON shape',\n );\n\n/** Decode a canonical-JSON `Node` payload into the storage-shape `Node<unknown>`. */\nexport const decodeNode = (json: string): R<Node<unknown>> => {\n const parsed = parse(json);\n return parsed.ok ? decodeNodeAst('$', parsed.value) : invalidJson(parsed.error.message);\n};\n\n/** Decode a canonical-JSON `TreeOp` payload into the storage-shape `TreeOp<unknown>`. */\nexport const decodeOp = (json: string): R<TreeOp<unknown>> => {\n const parsed = parse(json);\n return parsed.ok ? decodeTreeOpAst('$', parsed.value) : invalidJson(parsed.error.message);\n};\n","// ============================================================================\n// @fuaran-ui/ops — tree-op apply engine.\n//\n// Port of Fuaran.UI.Ops.Apply. Applies a `TreeOp` against a `Node` tree,\n// returning either the new tree (+ telemetry) or a structured `ApplyError`.\n// The engine never partially mutates: on any error path the input tree is\n// returned untouched (the caller's reference is unchanged, so \"revert\" is\n// implicit). Wrap an op list in `TreeOp.Batch` for all-or-nothing atomicity.\n//\n// Per the F# original (§4g), apply is sequential within a turn; callers fold\n// across an op list themselves or use `Batch`. Structural child ops\n// (Insert / Remove / Move / Reorder) address `Layout` nodes only — every\n// layout spec carries an ordered `children` list; non-layout kinds surface a\n// `ChildlessKind` error with a hint enumerating what is addressable.\n//\n// `ApplyResult` additionally carries `emittedTelemetry` (one record per\n// applied leaf op) per the Phase 76 contract; the apply-engine shape stays\n// alpha until Phase 78 validates it against a real sample app.\n// ============================================================================\n\nimport type {\n Binding,\n LayoutKind,\n Node,\n NodeId,\n NodeKind,\n Result,\n SemanticStyle,\n StateBehaviour,\n} from '@fuaran-ui/schema';\n\nimport { coerce } from './decode.js';\nimport type { TreeOp } from './treeOp.js';\n\n// ─── Error + result surface ──────────────────────────────────────────────────\n\nexport type ApplyErrorCode =\n | 'NodeNotFound'\n | 'ParentNotFound'\n | 'ChildlessKind'\n | 'PositionOutOfRange'\n | 'DuplicateNodeId'\n | 'FieldNotFound'\n | 'SlotNotFound'\n | 'KindMismatch'\n | 'PathInvalid'\n | 'PathNotSupportedYet'\n | 'OrderingMismatch'\n | 'BatchAborted';\n\nexport interface ApplyError {\n readonly code: ApplyErrorCode;\n readonly message: string;\n /** Inner-op index when `code === 'BatchAborted'`. */\n readonly batchIndex?: number;\n}\n\n/** One record per applied leaf op (Phase 76 telemetry contract). */\nexport interface OpApplyTelemetryRecord {\n readonly op: TreeOp<unknown>['kind'];\n readonly targetId: string;\n}\n\nexport type ApplyResult<TMsg> = Result<\n { readonly newTree: Node<TMsg>; readonly emittedTelemetry: readonly OpApplyTelemetryRecord[] },\n ApplyError\n>;\n\ntype N = Node<unknown>;\ntype R = Result<N, ApplyError>;\n\nconst ok = (value: N): R => ({ ok: true, value });\nconst fail = (code: ApplyErrorCode, message: string, batchIndex?: number): R => ({\n ok: false,\n error: batchIndex === undefined ? { code, message } : { code, message, batchIndex },\n});\n\nconst idOf = (n: N): string => n.id as string;\n\n// ─── Tree walkers ────────────────────────────────────────────────────────────\n\ninterface ChildSlot {\n readonly child: N;\n readonly rebuild: (c: N) => N;\n}\n\nconst withLayoutChildren = (n: N, children: readonly N[]): N => {\n const k = n.kind;\n if (k.kind !== 'Layout') return n;\n const layout = { ...k.layout, spec: { ...k.layout.spec, children } } as LayoutKind<unknown>;\n return { ...n, kind: { kind: 'Layout', layout } };\n};\n\nconst layoutChildren = (n: N): readonly N[] | undefined =>\n n.kind.kind === 'Layout' ? n.kind.layout.spec.children : undefined;\n\n/** Every immediate sub-node position, each with a rebuild that swaps it. */\nconst childSlots = (n: N): ChildSlot[] => {\n const slots: ChildSlot[] = [];\n const k = n.kind;\n if (k.kind === 'Layout') {\n const children = k.layout.spec.children;\n children.forEach((child, i) => {\n slots.push({\n child,\n rebuild: (c) =>\n withLayoutChildren(\n n,\n children.map((cc, j) => (j === i ? c : cc)),\n ),\n });\n });\n } else if (k.kind === 'ErrorBoundary') {\n slots.push({\n child: k.spec.child,\n rebuild: (c) => ({ ...n, kind: { kind: 'ErrorBoundary', spec: { ...k.spec, child: c } } }),\n });\n slots.push({\n child: k.spec.fallback,\n rebuild: (c) => ({ ...n, kind: { kind: 'ErrorBoundary', spec: { ...k.spec, fallback: c } } }),\n });\n } else if (k.kind === 'Switch') {\n // Phase 392: each case child + the default are editable slots (mirrors the\n // ErrorBoundary handling above); the match values are preserved on rebuild.\n k.spec.cases.forEach((cse, i) => {\n slots.push({\n child: cse.child,\n rebuild: (c) => ({\n ...n,\n kind: {\n kind: 'Switch',\n spec: {\n ...k.spec,\n cases: k.spec.cases.map((cc, j) => (j === i ? { ...cc, child: c } : cc)),\n },\n },\n }),\n });\n });\n slots.push({\n child: k.spec.default,\n rebuild: (c) => ({ ...n, kind: { kind: 'Switch', spec: { ...k.spec, default: c } } }),\n });\n } else if (k.kind === 'FragmentDecl') {\n slots.push({\n child: k.spec.body,\n rebuild: (c) => ({ ...n, kind: { kind: 'FragmentDecl', spec: { ...k.spec, body: c } } }),\n });\n }\n if (n.state.onLoading !== undefined) {\n const onLoading = n.state.onLoading;\n slots.push({\n child: onLoading,\n rebuild: (c) => ({ ...n, state: { ...n.state, onLoading: c } }),\n });\n }\n if (n.state.onEmpty !== undefined) {\n const onEmpty = n.state.onEmpty;\n slots.push({ child: onEmpty, rebuild: (c) => ({ ...n, state: { ...n.state, onEmpty: c } }) });\n }\n return slots;\n};\n\nconst findNode = (target: string, n: N): N | undefined => {\n if (idOf(n) === target) return n;\n for (const s of childSlots(n)) {\n const r = findNode(target, s.child);\n if (r !== undefined) return r;\n }\n return undefined;\n};\n\nconst mapNode = (target: string, f: (n: N) => N, n: N): N | undefined => {\n if (idOf(n) === target) return f(n);\n for (const s of childSlots(n)) {\n const r = mapNode(target, f, s.child);\n if (r !== undefined) return s.rebuild(r);\n }\n return undefined;\n};\n\n/**\n * Every NodeId in `n`'s subtree, DFS order. Exported for the elicitation\n * envelope's contract-vs-tree membership probe (WIRE_FORMAT.md §18,\n * `CONTRACT_UNKNOWN_NODE`) — the same traversal the structural-op duplicate\n * checks run, so \"is a node in the tree\" cannot drift between the two.\n */\nexport const allNodeIds = (n: N): string[] => [\n idOf(n),\n ...childSlots(n).flatMap((s) => allNodeIds(s.child)),\n];\n\nconst findLayoutParent = (target: string, n: N): N | undefined => {\n const children = layoutChildren(n);\n if (children !== undefined && children.some((c) => idOf(c) === target)) return n;\n for (const s of childSlots(n)) {\n const r = findLayoutParent(target, s.child);\n if (r !== undefined) return r;\n }\n return undefined;\n};\n\nconst isAncestor = (ancestorId: string, descendantId: string, root: N): boolean => {\n const a = findNode(ancestorId, root);\n if (a === undefined) return false;\n return childSlots(a).some((s) => allNodeIds(s.child).includes(descendantId));\n};\n\n// ─── UpdateProp field dispatch ───────────────────────────────────────────────\n\ntype UpdateOutcome =\n | { readonly tag: 'updated'; readonly kind: NodeKind<unknown> }\n | { readonly tag: 'unknownField' }\n | { readonly tag: 'notSupported' }\n | { readonly tag: 'typeMismatch'; readonly detail: string };\n\nconst updated = (kind: NodeKind<unknown>): UpdateOutcome => ({ tag: 'updated', kind });\nconst typeMismatch = (detail: string): UpdateOutcome => ({ tag: 'typeMismatch', detail });\n\n/** Apply a coercer + spec patch, threading coercion failures into typeMismatch. */\nconst patch = <T>(r: Result<T, string>, build: (value: T) => NodeKind<unknown>): UpdateOutcome =>\n r.ok ? updated(build(r.value)) : typeMismatch(r.error);\n\nconst updateField = (\n field: string,\n value: import('@fuaran-ui/schema').JsonValue,\n kind: NodeKind<unknown>,\n): UpdateOutcome => {\n if (kind.kind === 'Display') {\n const d = kind.display;\n const disp = (display: import('@fuaran-ui/schema').DisplayKind): NodeKind<unknown> => ({\n kind: 'Display',\n display,\n });\n switch (d.kind) {\n case 'Metric': {\n const s = d.spec;\n switch (field) {\n case 'Label':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Metric', spec: { ...s, label: x } }),\n );\n case 'Value':\n return patch(coerce.bindingNumber(value), (x) =>\n disp({ kind: 'Metric', spec: { ...s, value: x } }),\n );\n case 'Format':\n return patch(coerce.cellFormat(value), (x) =>\n disp({ kind: 'Metric', spec: { ...s, format: x } }),\n );\n case 'Tone':\n return patch(coerce.tone(value), (x) =>\n disp({ kind: 'Metric', spec: { ...s, tone: x } }),\n );\n case 'Weight':\n return patch(coerce.weight(value), (x) =>\n disp({ kind: 'Metric', spec: { ...s, weight: x } }),\n );\n case 'Emphasis':\n return patch(coerce.emphasis(value), (x) =>\n disp({ kind: 'Metric', spec: { ...s, emphasis: x } }),\n );\n case 'Trend':\n return patch(coerce.bindingNumber(value), (x) =>\n disp({ kind: 'Metric', spec: { ...s, trend: x } }),\n );\n case 'TrendFormat':\n return patch(coerce.cellFormat(value), (x) =>\n disp({ kind: 'Metric', spec: { ...s, trendFormat: x } }),\n );\n case 'Icon':\n return patch(coerce.iconSource(value), (x) =>\n disp({ kind: 'Metric', spec: { ...s, icon: x } }),\n );\n case 'Subtext':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Metric', spec: { ...s, subtext: x } }),\n );\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'Heading': {\n const s = d.spec;\n switch (field) {\n case 'Level':\n return patch(coerce.int(value), (x) =>\n disp({ kind: 'Heading', spec: { ...s, level: x } }),\n );\n case 'Text':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Heading', spec: { ...s, text: x } }),\n );\n case 'Variant':\n return patch(coerce.headingVariant(value), (x) =>\n disp({ kind: 'Heading', spec: { ...s, variant: x } }),\n );\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'Markdown':\n return field === 'Text'\n ? patch(coerce.textSource(value), (x) => disp({ kind: 'Markdown', spec: { text: x } }))\n : { tag: 'unknownField' };\n case 'Badge': {\n const s = d.spec;\n switch (field) {\n case 'Label':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Badge', spec: { ...s, label: x } }),\n );\n case 'Variant':\n return patch(coerce.badgeVariant(value), (x) =>\n disp({ kind: 'Badge', spec: { ...s, variant: x } }),\n );\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'Skeleton':\n return field === 'Rows'\n ? patch(coerce.int(value), (x) => disp({ kind: 'Skeleton', spec: { rows: x } }))\n : { tag: 'unknownField' };\n case 'Callout': {\n const s = d.spec;\n switch (field) {\n case 'Tone':\n return patch(coerce.tone(value), (x) =>\n disp({ kind: 'Callout', spec: { ...s, tone: x } }),\n );\n case 'Body':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Callout', spec: { ...s, body: x } }),\n );\n case 'Dismissable':\n return patch(coerce.bool(value), (x) =>\n disp({ kind: 'Callout', spec: { ...s, dismissable: x } }),\n );\n case 'Heading':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Callout', spec: { ...s, heading: x } }),\n );\n case 'Icon':\n return patch(coerce.iconSource(value), (x) =>\n disp({ kind: 'Callout', spec: { ...s, icon: x } }),\n );\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'Progress': {\n const s = d.spec;\n switch (field) {\n case 'Fraction':\n return patch(coerce.bindingNumber(value), (x) =>\n disp({ kind: 'Progress', spec: { ...s, fraction: x } }),\n );\n case 'Indeterminate':\n return patch(coerce.bool(value), (x) =>\n disp({ kind: 'Progress', spec: { ...s, indeterminate: x } }),\n );\n case 'Tone':\n return patch(coerce.tone(value), (x) =>\n disp({ kind: 'Progress', spec: { ...s, tone: x } }),\n );\n case 'Label':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Progress', spec: { ...s, label: x } }),\n );\n case 'Caveat':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Progress', spec: { ...s, caveat: x } }),\n );\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'Fact': {\n const s = d.spec;\n switch (field) {\n case 'Label':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Fact', spec: { ...s, label: x } }),\n );\n case 'Value':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Fact', spec: { ...s, value: x } }),\n );\n case 'Tone':\n return patch(coerce.tone(value), (x) =>\n disp({ kind: 'Fact', spec: { ...s, tone: x } }),\n );\n case 'Emphasis':\n // 0.2.8 — routed through the shared cross-vocabulary flag reader,\n // so a TreeOp edit gets the same admission as a fresh decode.\n return patch(coerce.emphasisFlag(value), (x) =>\n disp({ kind: 'Fact', spec: { ...s, emphasis: x } }),\n );\n case 'Help':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Fact', spec: { ...s, help: x } }),\n );\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'LabelValueRow': {\n const s = d.spec;\n switch (field) {\n case 'Label':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'LabelValueRow', spec: { ...s, label: x } }),\n );\n case 'Value':\n return patch(coerce.bindingNumber(value), (x) =>\n disp({ kind: 'LabelValueRow', spec: { ...s, value: x } }),\n );\n case 'Format':\n return patch(coerce.cellFormat(value), (x) =>\n disp({ kind: 'LabelValueRow', spec: { ...s, format: x } }),\n );\n case 'Emphasis':\n // 0.2.8 — the same shared flag reader as Fact (cross-vocab admission).\n return patch(coerce.emphasisFlag(value), (x) =>\n disp({ kind: 'LabelValueRow', spec: { ...s, emphasis: x } }),\n );\n case 'Help':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'LabelValueRow', spec: { ...s, help: x } }),\n );\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'Link': {\n const s = d.spec;\n switch (field) {\n case 'Href':\n return patch(coerce.bindingString(value), (x) =>\n disp({ kind: 'Link', spec: { ...s, href: x } }),\n );\n case 'Label':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Link', spec: { ...s, label: x } }),\n );\n case 'Rel':\n return patch(coerce.string(value), (x) =>\n disp({ kind: 'Link', spec: { ...s, rel: x } }),\n );\n case 'Target':\n return patch(coerce.string(value), (x) =>\n disp({ kind: 'Link', spec: { ...s, target: x } }),\n );\n case 'Download':\n return patch(coerce.bool(value), (x) =>\n disp({ kind: 'Link', spec: { ...s, download: x } }),\n );\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'Sparkline':\n return { tag: 'notSupported' };\n default:\n return { tag: 'unknownField' };\n }\n }\n\n if (kind.kind === 'Layout') {\n const l = kind.layout;\n const lay = (layout: LayoutKind<unknown>): NodeKind<unknown> => ({ kind: 'Layout', layout });\n switch (l.kind) {\n // Phase 390 — the unified container. Field surface is layout-mode-\n // dependent, preserving the retired kinds' updatable fields: Flex →\n // Orientation/Wrap (Stack); Grid → Cols/TemplateColumns (GridLayout);\n // Heading applies to any layout (Card). Mirrors the F# `updateBox`.\n case 'Box': {\n const s = l.spec;\n const mode = s.layout;\n if (field === 'Orientation' && mode.kind === 'Flex') {\n return patch(coerce.orientation(value), (x) =>\n lay({ kind: 'Box', spec: { ...s, layout: { ...mode, direction: x } } }),\n );\n }\n if (field === 'Wrap' && mode.kind === 'Flex') {\n return patch(coerce.bool(value), (x) =>\n lay({ kind: 'Box', spec: { ...s, layout: { ...mode, wrap: x } } }),\n );\n }\n if (field === 'Cols' && mode.kind === 'Grid') {\n return patch(coerce.int(value), (x) =>\n lay({ kind: 'Box', spec: { ...s, layout: { ...mode, cols: x } } }),\n );\n }\n if (field === 'TemplateColumns' && mode.kind === 'Grid') {\n return patch(coerce.string(value), (x) =>\n lay({ kind: 'Box', spec: { ...s, layout: { ...mode, templateColumns: x } } }),\n );\n }\n if (field === 'Heading') {\n return patch(coerce.textSource(value), (x) =>\n lay({ kind: 'Box', spec: { ...s, heading: x } }),\n );\n }\n if (field === 'Children') return { tag: 'notSupported' };\n return { tag: 'unknownField' };\n }\n case 'SplitPanel': {\n const s = l.spec;\n switch (field) {\n case 'Weight':\n return patch(coerce.float(value), (x) =>\n lay({ kind: 'SplitPanel', spec: { ...s, weight: x } }),\n );\n case 'Children':\n return { tag: 'notSupported' };\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'Tabs': {\n const s = l.spec;\n switch (field) {\n case 'Orientation':\n return patch(coerce.orientation(value), (x) =>\n lay({ kind: 'Tabs', spec: { ...s, orientation: x } }),\n );\n case 'Children':\n return { tag: 'notSupported' };\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'Stepper': {\n const s = l.spec;\n switch (field) {\n case 'ActiveStep':\n return patch(coerce.bindingInt(value), (x) =>\n lay({ kind: 'Stepper', spec: { ...s, activeStep: x } }),\n );\n case 'Children':\n return { tag: 'notSupported' };\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'SummaryList': {\n const s = l.spec;\n switch (field) {\n case 'Heading':\n return patch(coerce.textSource(value), (x) =>\n lay({ kind: 'SummaryList', spec: { ...s, heading: x } }),\n );\n case 'Children':\n return { tag: 'notSupported' };\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'Disclosure': {\n const s = l.spec;\n switch (field) {\n case 'Heading':\n return patch(coerce.textSource(value), (x) =>\n lay({ kind: 'Disclosure', spec: { ...s, heading: x } }),\n );\n case 'Open':\n return patch(coerce.bindingBool(value), (x) =>\n lay({ kind: 'Disclosure', spec: { ...s, open: x } }),\n );\n case 'DefaultOpen':\n return patch(coerce.bool(value), (x) =>\n lay({ kind: 'Disclosure', spec: { ...s, defaultOpen: x } }),\n );\n case 'Children':\n return { tag: 'notSupported' };\n default:\n return { tag: 'unknownField' };\n }\n }\n default:\n return { tag: 'unknownField' };\n }\n }\n\n if (kind.kind === 'FragmentDecl') {\n return field === 'Name'\n ? patch(coerce.string(value), (x) => ({\n kind: 'FragmentDecl',\n spec: { ...kind.spec, name: x as import('@fuaran-ui/schema').FragmentId },\n }))\n : { tag: 'unknownField' };\n }\n if (kind.kind === 'FragmentRef') {\n return field === 'Name'\n ? patch(coerce.string(value), (x) => ({\n kind: 'FragmentRef',\n spec: { ...kind.spec, name: x as import('@fuaran-ui/schema').FragmentId },\n }))\n : { tag: 'unknownField' };\n }\n\n // Input / Visualisation / Custom / ErrorBoundary have no field-level surface.\n return { tag: 'notSupported' };\n};\n\n// ─── UpdateProp path parser (WIRE_FORMAT.md §3.4 grammar — Phase 364) ────────\n//\n// path := segment ( \".\" segment )*\n// segment := field ( \"[\" index \"]\" )?\n// field := [A-Za-z_][A-Za-z0-9_]*\n// index := \"0\" | [1-9][0-9]*\n//\n// Hand-rolled (no regex) to mirror the F# reference parser byte-for-byte in\n// behaviour. Character classes are strict ASCII per the grammar.\n\ninterface PathSeg {\n readonly field: string;\n readonly index?: number;\n}\n\nconst isFieldStart = (c: string): boolean =>\n (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || c === '_';\nconst isFieldChar = (c: string): boolean => isFieldStart(c) || (c >= '0' && c <= '9');\nconst isAsciiDigit = (c: string): boolean => c >= '0' && c <= '9';\n\nconst parseSegment = (raw: string): Result<PathSeg, string> => {\n if (raw.length === 0) return { ok: false, error: 'empty segment' };\n const bracket = raw.indexOf('[');\n const fieldPart = bracket < 0 ? raw : raw.slice(0, bracket);\n if (fieldPart.length === 0 || !isFieldStart(fieldPart[0]!) || ![...fieldPart].every(isFieldChar))\n return { ok: false, error: `segment '${raw}' is not a field name` };\n if (bracket < 0) return { ok: true, value: { field: fieldPart } };\n const indexPart = raw.slice(bracket);\n if (indexPart.length < 3 || indexPart[indexPart.length - 1] !== ']')\n return { ok: false, error: `malformed index in segment '${raw}'` };\n const digits = indexPart.slice(1, -1);\n if (digits.length === 0 || ![...digits].every(isAsciiDigit))\n return {\n ok: false,\n error: `index in segment '${raw}' must be a non-negative decimal integer`,\n };\n if (digits.length > 1 && digits[0] === '0')\n return { ok: false, error: `index in segment '${raw}' has a leading zero` };\n const n = Number.parseInt(digits, 10);\n if (!Number.isSafeInteger(n))\n return { ok: false, error: `index in segment '${raw}' is out of range` };\n return { ok: true, value: { field: fieldPart, index: n } };\n};\n\nconst parsePath = (path: string): Result<readonly PathSeg[], string> => {\n if (path.trim() === '') return { ok: false, error: 'empty path' };\n const segs: PathSeg[] = [];\n for (const raw of path.split('.')) {\n const r = parseSegment(raw);\n if (!r.ok) return r;\n segs.push(r.value);\n }\n return { ok: true, value: segs };\n};\n\n// ─── UpdateProp nested dispatch — per-kind typed traversal (Phase 364) ───────\n//\n// Mirrors the F# `dispatchNestedUpdate` legs: DataGrid Columns[i].{Label,\n// Format,Width}, Chart YFields[i], Tabs TabHeaders[i].{Label,Icon,Disabled},\n// Form Fields[i].{Label,Required,Help}. Closure-bearing sub-fields are never\n// addressable.\n\ntype NestedOutcome =\n | { readonly tag: 'updated'; readonly kind: NodeKind<unknown> }\n | {\n readonly tag: 'fieldNotFound';\n readonly segment: string;\n readonly available: readonly string[];\n }\n | { readonly tag: 'missingIndex'; readonly listField: string; readonly count: number }\n | {\n readonly tag: 'indexOutOfRange';\n readonly listField: string;\n readonly count: number;\n readonly requested: number;\n }\n | { readonly tag: 'notSupported' }\n | { readonly tag: 'typeMismatch'; readonly detail: string };\n\nconst nestedPatch = <T>(\n r: Result<T, string>,\n build: (value: T) => NodeKind<unknown>,\n): NestedOutcome =>\n r.ok ? { tag: 'updated', kind: build(r.value) } : { tag: 'typeMismatch', detail: r.error };\n\nconst replaceAt = <T>(xs: readonly T[], i: number, item: T): T[] =>\n xs.map((x, j) => (j === i ? item : x));\n\nconst updateNested = (\n segs: readonly PathSeg[],\n value: import('@fuaran-ui/schema').JsonValue,\n kind: NodeKind<unknown>,\n): NestedOutcome => {\n const [head, ...rest] = segs;\n if (head === undefined) return { tag: 'notSupported' };\n\n if (kind.kind === 'Visualisation') {\n const v = kind.visualisation;\n if (v.kind === 'Grid') {\n const s = v.spec;\n if (head.field === 'Columns') {\n if (head.index === undefined)\n return { tag: 'missingIndex', listField: 'Columns', count: s.columns.length };\n if (head.index >= s.columns.length)\n return {\n tag: 'indexOutOfRange',\n listField: 'Columns',\n count: s.columns.length,\n requested: head.index,\n };\n const i = head.index;\n const col = s.columns[i]!;\n const rebuild = (c: (typeof s.columns)[number]): NodeKind<unknown> => ({\n kind: 'Visualisation',\n visualisation: { kind: 'Grid', spec: { ...s, columns: replaceAt(s.columns, i, c) } },\n });\n const leaf = rest.length === 1 && rest[0]!.index === undefined ? rest[0]!.field : undefined;\n if (leaf === undefined) return { tag: 'notSupported' };\n switch (leaf) {\n case 'Label':\n return nestedPatch(coerce.string(value), (x) => rebuild({ ...col, label: x }));\n case 'Format':\n return nestedPatch(coerce.cellFormat(value), (x) => rebuild({ ...col, format: x }));\n case 'Width':\n return nestedPatch(coerce.columnWidth(value), (x) => rebuild({ ...col, width: x }));\n case 'Value':\n case 'Kind':\n // Closure-bearing — never addressable.\n return { tag: 'notSupported' };\n default:\n return { tag: 'fieldNotFound', segment: leaf, available: ['Label', 'Format', 'Width'] };\n }\n }\n return { tag: 'fieldNotFound', segment: head.field, available: ['Columns'] };\n }\n if (v.kind === 'Chart') {\n const s = v.spec;\n if (head.field === 'YFields') {\n if (head.index === undefined)\n return { tag: 'missingIndex', listField: 'YFields', count: s.yFields.length };\n if (head.index >= s.yFields.length)\n return {\n tag: 'indexOutOfRange',\n listField: 'YFields',\n count: s.yFields.length,\n requested: head.index,\n };\n if (rest.length > 0) return { tag: 'notSupported' };\n const i = head.index;\n return nestedPatch(coerce.string(value), (x) => ({\n kind: 'Visualisation',\n visualisation: { kind: 'Chart', spec: { ...s, yFields: replaceAt(s.yFields, i, x) } },\n }));\n }\n return { tag: 'fieldNotFound', segment: head.field, available: ['YFields'] };\n }\n return { tag: 'notSupported' };\n }\n\n if (kind.kind === 'Layout' && kind.layout.kind === 'Tabs') {\n const s = kind.layout.spec;\n // An absent header list addresses like an empty one.\n const headers = s.tabHeaders ?? [];\n if (head.field === 'TabHeaders') {\n if (head.index === undefined)\n return { tag: 'missingIndex', listField: 'TabHeaders', count: headers.length };\n if (head.index >= headers.length)\n return {\n tag: 'indexOutOfRange',\n listField: 'TabHeaders',\n count: headers.length,\n requested: head.index,\n };\n const i = head.index;\n const hdr = headers[i]!;\n const rebuild = (h: (typeof headers)[number]): NodeKind<unknown> => ({\n kind: 'Layout',\n layout: { kind: 'Tabs', spec: { ...s, tabHeaders: replaceAt(headers, i, h) } },\n });\n const leaf = rest.length === 1 && rest[0]!.index === undefined ? rest[0]!.field : undefined;\n if (leaf === undefined) return { tag: 'notSupported' };\n switch (leaf) {\n case 'Label':\n return nestedPatch(coerce.textSource(value), (x) => rebuild({ ...hdr, label: x }));\n case 'Icon':\n return nestedPatch(coerce.iconSource(value), (x) => rebuild({ ...hdr, icon: x }));\n case 'Disabled':\n // Optional typed binding; replacing it installs the value.\n return nestedPatch(coerce.bindingBool(value), (x) => rebuild({ ...hdr, disabled: x }));\n default:\n return { tag: 'fieldNotFound', segment: leaf, available: ['Label', 'Icon', 'Disabled'] };\n }\n }\n return { tag: 'fieldNotFound', segment: head.field, available: ['TabHeaders'] };\n }\n\n if (kind.kind === 'Input' && kind.input.kind === 'Form') {\n const s = kind.input.spec;\n if (head.field === 'Fields') {\n if (head.index === undefined)\n return { tag: 'missingIndex', listField: 'Fields', count: s.fields.length };\n if (head.index >= s.fields.length)\n return {\n tag: 'indexOutOfRange',\n listField: 'Fields',\n count: s.fields.length,\n requested: head.index,\n };\n const i = head.index;\n const fld = s.fields[i]!;\n const rebuild = (f: (typeof s.fields)[number]): NodeKind<unknown> => ({\n kind: 'Input',\n input: { kind: 'Form', spec: { ...s, fields: replaceAt(s.fields, i, f) } },\n });\n const leaf = rest.length === 1 && rest[0]!.index === undefined ? rest[0]!.field : undefined;\n if (leaf === undefined) return { tag: 'notSupported' };\n switch (leaf) {\n case 'Label':\n return nestedPatch(coerce.textSource(value), (x) => rebuild({ ...fld, label: x }));\n case 'Required':\n return nestedPatch(coerce.bool(value), (x) => rebuild({ ...fld, required: x }));\n case 'Help':\n return nestedPatch(coerce.textSource(value), (x) => rebuild({ ...fld, help: x }));\n case 'Id':\n case 'Kind':\n // Id is the form-store key; Kind is closure-bearing. Not addressable.\n return { tag: 'notSupported' };\n default:\n return { tag: 'fieldNotFound', segment: leaf, available: ['Label', 'Required', 'Help'] };\n }\n }\n return { tag: 'fieldNotFound', segment: head.field, available: ['Fields'] };\n }\n\n return { tag: 'notSupported' };\n};\n\n// ─── ReplaceBinding slot dispatch ────────────────────────────────────────────\n\nconst replaceBinding = (\n slot: string,\n b: Binding<unknown>,\n kind: NodeKind<unknown>,\n): NodeKind<unknown> | undefined => {\n if (kind.kind === 'Display') {\n const d = kind.display;\n if (d.kind === 'Metric' && slot === 'Value')\n return {\n kind: 'Display',\n display: { kind: 'Metric', spec: { ...d.spec, value: b as Binding<number> } },\n };\n if (d.kind === 'Metric' && slot === 'Trend')\n return {\n kind: 'Display',\n display: { kind: 'Metric', spec: { ...d.spec, trend: b as Binding<number> } },\n };\n if (d.kind === 'Sparkline' && slot === 'Source')\n return {\n kind: 'Display',\n display: { kind: 'Sparkline', spec: { source: b as Binding<readonly number[]> } },\n };\n if (d.kind === 'Progress' && slot === 'Fraction')\n return {\n kind: 'Display',\n display: { kind: 'Progress', spec: { ...d.spec, fraction: b as Binding<number> } },\n };\n if (d.kind === 'LabelValueRow' && slot === 'Value')\n return {\n kind: 'Display',\n display: { kind: 'LabelValueRow', spec: { ...d.spec, value: b as Binding<number> } },\n };\n } else if (kind.kind === 'Layout') {\n const l = kind.layout;\n if (l.kind === 'Stepper' && slot === 'ActiveStep')\n return {\n kind: 'Layout',\n layout: { kind: 'Stepper', spec: { ...l.spec, activeStep: b as Binding<number> } },\n };\n } else if (kind.kind === 'Input') {\n const i = kind.input;\n // Phase 129: Button's optional bound disabled-state slot.\n if (i.kind === 'Button' && slot === 'Disabled')\n return {\n kind: 'Input',\n input: { kind: 'Button', spec: { ...i.spec, disabled: b as Binding<boolean> } },\n };\n // Phase 130: Select / Form / FileUpload optional bound disabled-state slot.\n if (i.kind === 'Select' && slot === 'Disabled')\n return {\n kind: 'Input',\n input: { kind: 'Select', spec: { ...i.spec, disabled: b as Binding<boolean> } },\n };\n if (i.kind === 'Form' && slot === 'Disabled')\n return {\n kind: 'Input',\n input: { kind: 'Form', spec: { ...i.spec, disabled: b as Binding<boolean> } },\n };\n if (i.kind === 'FileUpload' && slot === 'Disabled')\n return {\n kind: 'Input',\n input: { kind: 'FileUpload', spec: { ...i.spec, disabled: b as Binding<boolean> } },\n };\n } else if (kind.kind === 'Visualisation') {\n const v = kind.visualisation;\n if (v.kind === 'Grid' && slot === 'Source')\n return {\n kind: 'Visualisation',\n visualisation: {\n kind: 'Grid',\n spec: { ...v.spec, source: b as Binding<readonly unknown[]> },\n },\n };\n if (v.kind === 'Chart' && slot === 'Source')\n return {\n kind: 'Visualisation',\n visualisation: {\n kind: 'Chart',\n spec: { ...v.spec, source: b as Binding<readonly unknown[]> },\n },\n };\n if (v.kind === 'Map' && slot === 'Source')\n return {\n kind: 'Visualisation',\n visualisation: {\n kind: 'Map',\n spec: {\n ...v.spec,\n source: b as Binding<readonly import('@fuaran-ui/schema').MapMarker[]>,\n },\n },\n };\n }\n return undefined;\n};\n\n// ─── Single-op apply ─────────────────────────────────────────────────────────\n\nconst applyOne = (op: TreeOp<unknown>, root: N, telem: OpApplyTelemetryRecord[]): R => {\n switch (op.kind) {\n case 'EditNode': {\n const updatedTree = mapNode(op.target, (n) => ({ ...n, kind: op.newKind }), root);\n if (updatedTree === undefined)\n return fail('NodeNotFound', `Node '${op.target}' not found in tree.`);\n telem.push({ op: 'EditNode', targetId: op.target });\n return ok(updatedTree);\n }\n case 'UpdateProp': {\n const parsed = parsePath(op.path);\n if (!parsed.ok)\n return fail('PathInvalid', `Path '${op.path}' is structurally invalid: ${parsed.error}.`);\n const targetNode = findNode(op.target, root);\n if (targetNode === undefined)\n return fail('NodeNotFound', `Node '${op.target}' not found in tree.`);\n const segs = parsed.value;\n const finish = (kind: NodeKind<unknown>): R => {\n const newTree = mapNode(op.target, (n) => ({ ...n, kind }), root);\n if (newTree === undefined)\n return fail('NodeNotFound', `Node '${op.target}' not found in tree.`);\n telem.push({ op: 'UpdateProp', targetId: op.target });\n return ok(newTree);\n };\n if (segs.length === 1 && segs[0]!.index === undefined) {\n // Top-level path — the original per-kind field dispatch.\n const outcome = updateField(op.path, op.value, targetNode.kind);\n switch (outcome.tag) {\n case 'updated':\n return finish(outcome.kind);\n case 'unknownField':\n return fail('FieldNotFound', `Field '${op.path}' not found on node '${op.target}'.`);\n case 'notSupported':\n return fail(\n 'PathNotSupportedYet',\n `Path '${op.path}' on node '${op.target}' is not yet supported by the apply engine.`,\n );\n case 'typeMismatch':\n return fail(\n 'KindMismatch',\n `UpdateProp value for '${op.path}' on node '${op.target}' does not match the field's expected type: ${outcome.detail}`,\n );\n }\n break;\n }\n // Nested path (Phase 364) — the per-kind typed traversal.\n const outcome = updateNested(segs, op.value, targetNode.kind);\n switch (outcome.tag) {\n case 'updated':\n return finish(outcome.kind);\n case 'missingIndex':\n return fail(\n 'PathInvalid',\n `Field '${outcome.listField}' on node '${op.target}' is a list — address an element with a 0-based index (the list has ${outcome.count} element(s)).`,\n );\n case 'indexOutOfRange':\n return fail(\n 'PositionOutOfRange',\n `Index ${outcome.requested} is out of range for '${outcome.listField}' on node '${op.target}' (${\n outcome.count === 0 ? 'the list is empty' : `valid: 0..${outcome.count - 1}`\n }).`,\n );\n case 'fieldNotFound':\n return fail(\n 'FieldNotFound',\n `Field '${outcome.segment}' (in path '${op.path}') not found on node '${op.target}'. Available at this segment: ${outcome.available.join(', ')}.`,\n );\n case 'notSupported':\n return fail(\n 'PathNotSupportedYet',\n `Path '${op.path}' on node '${op.target}' is not yet supported by the apply engine.`,\n );\n case 'typeMismatch':\n return fail(\n 'KindMismatch',\n `UpdateProp value for '${op.path}' on node '${op.target}' does not match the field's expected type: ${outcome.detail}`,\n );\n }\n break;\n }\n case 'ReplaceBinding': {\n const targetNode = findNode(op.target, root);\n if (targetNode === undefined)\n return fail('NodeNotFound', `Node '${op.target}' not found in tree.`);\n const newKind = replaceBinding(op.slot, op.binding, targetNode.kind);\n if (newKind === undefined)\n return fail('SlotNotFound', `Binding slot '${op.slot}' not found on node '${op.target}'.`);\n const newTree = mapNode(op.target, (n) => ({ ...n, kind: newKind }), root);\n if (newTree === undefined)\n return fail('NodeNotFound', `Node '${op.target}' not found in tree.`);\n telem.push({ op: 'ReplaceBinding', targetId: op.target });\n return ok(newTree);\n }\n case 'UpdateStyle': {\n const newTree = mapNode(op.target, (n) => ({ ...n, style: op.style as SemanticStyle }), root);\n if (newTree === undefined)\n return fail('NodeNotFound', `Node '${op.target}' not found in tree.`);\n telem.push({ op: 'UpdateStyle', targetId: op.target });\n return ok(newTree);\n }\n case 'UpdateState': {\n const newTree = mapNode(\n op.target,\n (n) => ({ ...n, state: op.state as StateBehaviour<unknown> }),\n root,\n );\n if (newTree === undefined)\n return fail('NodeNotFound', `Node '${op.target}' not found in tree.`);\n telem.push({ op: 'UpdateState', targetId: op.target });\n return ok(newTree);\n }\n case 'InsertChild': {\n const parent = findNode(op.parentId, root);\n if (parent === undefined)\n return fail('ParentNotFound', `Parent node '${op.parentId}' not found in tree.`);\n const children = layoutChildren(parent);\n if (children === undefined)\n return fail(\n 'ChildlessKind',\n `Node '${op.parentId}' (kind=${parent.kind.kind}) has no children field — only Layout kinds accept structural child ops.`,\n );\n const existing = new Set(allNodeIds(root));\n const duplicate = allNodeIds(op.child).find((id) => existing.has(id));\n if (duplicate !== undefined)\n return fail(\n 'DuplicateNodeId',\n `NodeId '${duplicate}' is already present in the tree; ids must be unique.`,\n );\n // 0.4.0: InsertChild APPENDS. Placing a node anywhere else is\n // Batch [InsertChild, ReorderChildren] — order is stated by naming ids.\n const newChildren = [...children, op.child];\n const newTree = mapNode(op.parentId, (n) => withLayoutChildren(n, newChildren), root);\n if (newTree === undefined)\n return fail('ParentNotFound', `Parent node '${op.parentId}' not found in tree.`);\n telem.push({ op: 'InsertChild', targetId: op.parentId });\n return ok(newTree);\n }\n case 'RemoveNode': {\n if (idOf(root) === op.target) return fail('KindMismatch', 'Cannot RemoveNode the root.');\n const parent = findLayoutParent(op.target, root);\n if (parent === undefined)\n return fail('NodeNotFound', `Node '${op.target}' not found in tree.`);\n const children = layoutChildren(parent)!;\n const newTree = mapNode(\n idOf(parent),\n (n) =>\n withLayoutChildren(\n n,\n children.filter((c) => idOf(c) !== op.target),\n ),\n root,\n );\n if (newTree === undefined)\n return fail('ParentNotFound', `Parent node '${idOf(parent)}' not found in tree.`);\n telem.push({ op: 'RemoveNode', targetId: op.target });\n return ok(newTree);\n }\n case 'MoveNode': {\n if (op.target === op.newParentId)\n return fail('KindMismatch', 'Cannot move a node into itself.');\n if (isAncestor(op.target, op.newParentId, root))\n return fail(\n 'KindMismatch',\n 'Cannot move a node into its own descendant (would create a cycle).',\n );\n const moving = findNode(op.target, root);\n if (moving === undefined)\n return fail('NodeNotFound', `Node '${op.target}' not found in tree.`);\n const newParent = findNode(op.newParentId, root);\n if (newParent === undefined)\n return fail('ParentNotFound', `Parent node '${op.newParentId}' not found in tree.`);\n if (layoutChildren(newParent) === undefined)\n return fail(\n 'ChildlessKind',\n `Node '${op.newParentId}' (kind=${newParent.kind.kind}) has no children field.`,\n );\n const afterRemove = applyOne({ kind: 'RemoveNode', target: op.target }, root, []);\n if (!afterRemove.ok) return afterRemove;\n const inserted = applyOne(\n { kind: 'InsertChild', parentId: op.newParentId, child: moving },\n afterRemove.value,\n [],\n );\n if (!inserted.ok) return inserted;\n telem.push({ op: 'MoveNode', targetId: op.target });\n return ok(inserted.value);\n }\n case 'ReorderChildren': {\n const parent = findNode(op.parentId, root);\n if (parent === undefined)\n return fail('ParentNotFound', `Parent node '${op.parentId}' not found in tree.`);\n const children = layoutChildren(parent);\n if (children === undefined)\n return fail(\n 'ChildlessKind',\n `Node '${op.parentId}' (kind=${parent.kind.kind}) has no children field.`,\n );\n const currentIds = children.map(idOf);\n const sortedCurrent = [...currentIds].sort();\n const sortedNew = [...op.newOrder].map((x) => x as string).sort();\n if (\n sortedCurrent.length !== sortedNew.length ||\n sortedCurrent.some((id, i) => id !== sortedNew[i])\n )\n return fail(\n 'OrderingMismatch',\n `ReorderChildren for '${op.parentId}' did not list exactly the current child ids.`,\n );\n const byId = new Map(children.map((c) => [idOf(c), c]));\n const reordered = op.newOrder\n .map((id) => byId.get(id as string)!)\n .filter((c): c is N => c !== undefined);\n const newTree = mapNode(op.parentId, (n) => withLayoutChildren(n, reordered), root);\n if (newTree === undefined)\n return fail('ParentNotFound', `Parent node '${op.parentId}' not found in tree.`);\n telem.push({ op: 'ReorderChildren', targetId: op.parentId });\n return ok(newTree);\n }\n case 'ReplaceRoot':\n // The whole-tree swap: the only op that legally changes the root node id.\n return ok(op.node);\n case 'Batch': {\n let state = root;\n for (let i = 0; i < op.ops.length; i += 1) {\n const r = applyOne(op.ops[i]!, state, telem);\n if (!r.ok) {\n // All-or-nothing: discard partial state + telemetry, surface the failure.\n return {\n ok: false,\n error: {\n code: 'BatchAborted',\n message: `Batch aborted at inner op #${i}: ${r.error.message}`,\n batchIndex: i,\n },\n };\n }\n state = r.value;\n }\n return ok(state);\n }\n }\n // Unreachable — every TreeOp case returns above.\n return fail('KindMismatch', 'unreachable apply branch');\n};\n\n// ─── Public entry ────────────────────────────────────────────────────────────\n\n/**\n * Apply a single tree-op against `tree`, returning either the updated tree plus\n * emitted telemetry, or a structured `ApplyError`. Fold this across an op list\n * to apply many; wrap in `TreeOp.Batch` for atomic all-or-nothing application.\n */\nexport const apply = <TMsg>(tree: Node<TMsg>, op: TreeOp<TMsg>): ApplyResult<TMsg> => {\n const telem: OpApplyTelemetryRecord[] = [];\n const r = applyOne(op as TreeOp<unknown>, tree as N, telem);\n if (!r.ok) return r;\n return { ok: true, value: { newTree: r.value as Node<TMsg>, emittedTelemetry: telem } };\n};\n","// ============================================================================\n// @fuaran-ui/ops — DAG op-record wire codec (Phase 178).\n//\n// Symmetric port of Fuaran.UI.OpStream.Dag.Abstractions.DagWire\n// (encodeRecord / decodeRecord). The DagOpRecord wire shape is an ADDITIVE\n// artifact: the linear OpRecord + the Node/TreeOp corpus are untouched. A DAG\n// record serialises as a canonical-JSON object (Ordinal-sorted keys, no\n// whitespace) whose `op` field nests the canonical TreeOp wire form\n// (`encodeOp`):\n//\n// {\"hash\":\"…\",\"op\":{…canonical TreeOp…},\"outcomeHash\":\"…\"?,\n// \"parents\":[\"…\"],\"promptId\":\"…\"?,\"resultEnvelope\":{…},\n// \"streamId\":\"…\",\"timestamp\":<unixSeconds>,\"tombstoned\":false,\n// \"userId\":\"…\"}\n//\n// Verified byte-for-byte against the workspace wire-format-fixtures/dag corpus\n// by test/dag.test.ts — the cross-implementation parity gate for this artifact\n// (F# DagWire.encodeRecord == TS encodeDagRecord, byte-identical).\n// ============================================================================\n\nimport { encodeOp } from './encode.js';\nimport { decodeOp } from './decode.js';\nimport { parse, field, type JsonAst } from './parse.js';\nimport type { TreeOp } from './treeOp.js';\n\n/** The result envelope captured on a DAG record (closed shape). */\nexport type DagResultEnvelope =\n | { readonly $type: 'Success' }\n | { readonly $type: 'Failure'; readonly code: string; readonly message: string };\n\n/**\n * Content-addressed, multi-parent op-record — the branching-DAG generalisation\n * of the linear `OpRecord`. `parents` is in author order (head = primary\n * parent); `outcomeHash` is present only on a merge node (committed to the\n * canonical encoding of the resulting tree). A linear chain is the degenerate\n * single-parent case.\n */\nexport interface DagOpRecord<TMsg = unknown> {\n readonly streamId: string;\n readonly hash: string;\n readonly parents: readonly string[];\n readonly op: TreeOp<TMsg>;\n readonly outcomeHash?: string;\n readonly promptId?: string;\n readonly userId: string;\n /** Unix seconds. */\n readonly timestamp: number;\n readonly resultEnvelope: DagResultEnvelope;\n readonly tombstoned: boolean;\n}\n\n/** Quote + escape a string per WIRE_FORMAT.md §2 rule 6 (only \" \\ control). */\nconst str = (s: string): string => {\n let out = '\"';\n for (let i = 0; i < s.length; i += 1) {\n const c = s[i]!;\n const code = s.charCodeAt(i);\n if (c === '\"') out += '\\\\\"';\n else if (c === '\\\\') out += '\\\\\\\\';\n else if (code < 0x20) out += '\\\\u' + code.toString(16).padStart(4, '0');\n else out += c;\n }\n return out + '\"';\n};\n\nconst encodeEnvelope = (e: DagResultEnvelope): string =>\n e.$type === 'Success'\n ? '{\"$type\":\"Success\"}'\n : `{\"$type\":\"Failure\",\"code\":${str(e.code)},\"message\":${str(e.message)}}`;\n\n/**\n * Encode a `DagOpRecord` to its canonical JSON wire form. Keys in Ordinal order\n * (hash < op < outcomeHash < parents < promptId < resultEnvelope < streamId <\n * timestamp < tombstoned < userId); `outcomeHash` / `promptId` omitted when\n * absent; `op` nests `encodeOp` verbatim. Byte-identical to the F#\n * `DagWire.encodeRecord`.\n */\nexport const encodeDagRecord = <TMsg>(record: DagOpRecord<TMsg>): string => {\n let out = '{';\n out += `\"hash\":${str(record.hash)}`;\n out += `,\"op\":${encodeOp(record.op as TreeOp<unknown>)}`;\n if (record.outcomeHash !== undefined) out += `,\"outcomeHash\":${str(record.outcomeHash)}`;\n out += `,\"parents\":[${record.parents.map(str).join(',')}]`;\n if (record.promptId !== undefined) out += `,\"promptId\":${str(record.promptId)}`;\n out += `,\"resultEnvelope\":${encodeEnvelope(record.resultEnvelope)}`;\n out += `,\"streamId\":${str(record.streamId)}`;\n out += `,\"timestamp\":${record.timestamp}`;\n out += `,\"tombstoned\":${record.tombstoned ? 'true' : 'false'}`;\n out += `,\"userId\":${str(record.userId)}`;\n return out + '}';\n};\n\ntype DecodeResult<T> =\n | { readonly ok: true; readonly value: T }\n | { readonly ok: false; readonly error: string };\n\n/** Re-serialise a parsed JSON AST to a (non-canonical but valid) JSON string. */\nconst astToJson = (ast: JsonAst): string => {\n switch (ast.kind) {\n case 'JNull':\n return 'null';\n case 'JBool':\n return ast.value ? 'true' : 'false';\n case 'JNumber':\n return String(ast.value);\n case 'JString':\n return str(ast.value);\n case 'JArray':\n return `[${ast.items.map(astToJson).join(',')}]`;\n case 'JObject': {\n const parts: string[] = [];\n for (const [k, v] of ast.fields) parts.push(`${str(k)}:${astToJson(v)}`);\n return `{${parts.join(',')}}`;\n }\n }\n};\n\nconst asString = (ast: JsonAst | undefined): string | undefined =>\n ast !== undefined && ast.kind === 'JString' ? ast.value : undefined;\n\n/**\n * Decode a canonical DAG-record envelope. The nested `op` AST is routed through\n * the canonical `decodeOp` (the same structural decoder the linear wire path\n * uses). Returns a structured error string on any wire-shape violation.\n */\nexport const decodeDagRecord = (json: string): DecodeResult<DagOpRecord<unknown>> => {\n const parsed = parse(json);\n if (!parsed.ok) return { ok: false, error: `dag envelope parse: ${parsed.error.message}` };\n const root = parsed.value;\n if (root.kind !== 'JObject') return { ok: false, error: 'dag envelope: expected an object' };\n const f = root.fields;\n\n const hash = asString(field(f, 'hash'));\n const streamId = asString(field(f, 'streamId'));\n const userId = asString(field(f, 'userId'));\n const opAst = field(f, 'op');\n const parentsAst = field(f, 'parents');\n const tsAst = field(f, 'timestamp');\n\n if (hash === undefined || streamId === undefined || userId === undefined)\n return { ok: false, error: 'dag envelope: missing hash/streamId/userId' };\n if (opAst === undefined) return { ok: false, error: 'dag envelope: missing op' };\n if (parentsAst === undefined || parentsAst.kind !== 'JArray')\n return { ok: false, error: 'dag envelope: missing/!array parents' };\n if (tsAst === undefined || tsAst.kind !== 'JNumber')\n return { ok: false, error: 'dag envelope: missing/!number timestamp' };\n\n const opResult = decodeOp(astToJson(opAst));\n if (!opResult.ok)\n return { ok: false, error: `dag op decode: ${opResult.error.code} @ ${opResult.error.path}` };\n\n const parents: string[] = [];\n for (const item of parentsAst.items) {\n if (item.kind !== 'JString') return { ok: false, error: 'dag parents: non-string element' };\n parents.push(item.value);\n }\n\n const envAst = field(f, 'resultEnvelope');\n let resultEnvelope: DagResultEnvelope = { $type: 'Success' };\n if (envAst !== undefined && envAst.kind === 'JObject') {\n const t = asString(field(envAst.fields, '$type'));\n if (t === 'Failure') {\n resultEnvelope = {\n $type: 'Failure',\n code: asString(field(envAst.fields, 'code')) ?? '',\n message: asString(field(envAst.fields, 'message')) ?? '',\n };\n }\n }\n\n const tombAst = field(f, 'tombstoned');\n const outcomeHash = asString(field(f, 'outcomeHash'));\n const promptId = asString(field(f, 'promptId'));\n\n // `exactOptionalPropertyTypes` — only include optional keys when present.\n const value: DagOpRecord<unknown> = {\n streamId,\n hash,\n parents,\n op: opResult.value,\n ...(outcomeHash !== undefined ? { outcomeHash } : {}),\n ...(promptId !== undefined ? { promptId } : {}),\n userId,\n timestamp: tsAst.value,\n resultEnvelope,\n tombstoned: tombAst !== undefined && tombAst.kind === 'JBool' && tombAst.value,\n };\n\n return { ok: true, value };\n};\n","// ============================================================================\n// @fuaran-ui/ops — facet-refined 3-way tree merge (Phase 179, M2 — Leg B).\n//\n// Symmetric port of the F# `Fuaran.UI.OpStream.Dag.Merge.TreeMerge.merge3Way`\n// (the author-agnostic entry point — both sides treated equally, no\n// human-pin primacy; that grading is an orchestration-tier concern). A node\n// decomposes into independent FACETS, each 3-way-merged on its own:\n//\n// - \"kind\" — the node's own kind-fields (children / style / state /\n// accessibility neutralised in the canonical probe).\n// - \"style.{tone,weight,emphasis,role,voice}\" — the SemanticStyle sub-fields,\n// merged INDEPENDENTLY (A's tone + B's voice auto-blend).\n// - \"state\" — the StateBehaviour block.\n// - \"accessibility\" — the Accessibility block.\n// - \"children\" — the ordered child-id list (structural).\n//\n// When a facet changed on at most one side, take that side's value; when both\n// changed it differently, it is a CONFLICT (returned, not silently picked).\n// The one structural case auto-merged across both sides is disjoint pure\n// inserts into the same parent, ordered by NodeId code-unit (Ordinal) bytes —\n// the deterministic, wall-clock-free tie-break.\n//\n// Facet equality is `encodeNode` canonical-JSON bytes (the same oracle the\n// merge-conformance corpus commits to), except the closure-free SemanticStyle\n// sub-fields, compared directly. Verified byte-identical to the F# host over\n// the workspace `wire-format-fixtures/merge-conformance/` corpus by\n// test/merge.test.ts — the cross-implementation determinism gate (F# Leg A ==\n// TS Leg B, same merged tree + same sha256 outcome hash).\n// ============================================================================\n\nimport {\n defaults,\n type Accessibility,\n type LayoutKind,\n type Node,\n type NodeKind,\n type SemanticStyle,\n type StateBehaviour,\n} from '@fuaran-ui/schema';\n\nimport { encodeNode } from './encode.js';\n\ntype N = Node<unknown>;\n\n/** Rebuild a node with controlled facets, OMITTING `accessibility` when absent\n * (the wire's absent ⟺ default; `exactOptionalPropertyTypes` forbids an\n * explicit `undefined`). Other fields (`motion`, `extraAttributes`) carry over\n * from `base` — they are not merge facets and stay fixed across the sides. */\nconst mkNode = (\n base: N,\n kind: NodeKind<unknown>,\n style: SemanticStyle,\n state: StateBehaviour<unknown>,\n accessibility: Accessibility | undefined,\n): N => {\n const { accessibility: _drop, ...rest } = base;\n return accessibility !== undefined\n ? { ...rest, kind, style, state, accessibility }\n : { ...rest, kind, style, state };\n};\n\n/** A `(nodeId, facet)` cell that could not be auto-merged. */\nexport interface MergeConflict {\n readonly nodeId: string;\n readonly facet: string;\n}\n\n/** Outcome of a 3-way merge: the merged tree, or the conflicting cells. */\nexport type MergeResult =\n | { readonly ok: true; readonly tree: N }\n | { readonly ok: false; readonly conflicts: readonly MergeConflict[] };\n\nconst rawId = (n: N): string => n.id as unknown as string;\n\n// ─── child traversal (Layout children only — the structural facet) ───────────\n\nconst childrenOf = (n: N): readonly N[] =>\n n.kind.kind === 'Layout' ? n.kind.layout.spec.children : [];\n\n/** The kind with its (layout) children replaced — for the childless-kind probe\n * and for rebuilding after the children facet merges. Non-layout kinds carry no\n * structural children, so they are returned unchanged. */\nconst withKindChildren = (k: NodeKind<unknown>, children: readonly N[]): NodeKind<unknown> =>\n k.kind === 'Layout'\n ? {\n kind: 'Layout',\n // The per-layout spec is a discriminated union; the children-bearing\n // shape is uniform across members, so the cast is sound (mirrors\n // apply.ts `withLayoutChildren`).\n layout: { ...k.layout, spec: { ...k.layout.spec, children } } as LayoutKind<unknown>,\n }\n : k;\n\nconst childlessKind = (k: NodeKind<unknown>): NodeKind<unknown> => withKindChildren(k, []);\n\n// ─── facet-isolation canonical probes (closure-safe bytes) ───────────────────\n//\n// Each probe holds every OTHER facet fixed so only the named facet varies,\n// letting a closure-bearing facet be compared by canonical JSON.\n\nconst neutralState = defaults.stateBehaviour<unknown>();\n\n/** Kind-own canonical (children + style + state + accessibility neutralised). */\nconst kindCanonical = (n: N): string =>\n encodeNode(mkNode(n, childlessKind(n.kind), defaults.style, neutralState, undefined));\n\n/** State canonical (kind→shell, style + accessibility neutralised). */\nconst stateCanonical = (shell: NodeKind<unknown>, n: N): string =>\n encodeNode(mkNode(n, shell, defaults.style, n.state, undefined));\n\n/** Accessibility canonical (kind→shell, style + state neutralised). */\nconst accessibilityCanonical = (shell: NodeKind<unknown>, n: N): string =>\n encodeNode(mkNode(n, shell, defaults.style, neutralState, n.accessibility));\n\n// ─── facet pickers ───────────────────────────────────────────────────────────\n\nconst ordinal = (x: string, y: string): number => (x < y ? -1 : x > y ? 1 : 0);\n\n/** `true` when `head` is `base` with zero removals and zero reorders. */\nconst isPureAddition = (baseIds: readonly string[], headIds: readonly string[]): boolean => {\n const headSet = new Set(headIds);\n const survive = baseIds.filter((i) => headSet.has(i));\n const headKept = headIds.filter((i) => baseIds.includes(i));\n return (\n survive.length === baseIds.length &&\n survive.every((v, i) => v === baseIds[i]) &&\n headKept.length === baseIds.length &&\n headKept.every((v, i) => v === baseIds[i])\n );\n};\n\n// Optional-aware equality: an absent field equals an absent field (both the\n// canonical default), so an explicit-default vs absent never reads as changed.\nconst eqOpt = <T>(x: T | undefined, y: T | undefined): boolean => (x ?? null) === (y ?? null);\n\n/** Merge one SemanticStyle sub-field; push a conflict on a genuine divergence. */\nconst pickField = <T>(\n conflicts: MergeConflict[],\n nodeId: string,\n facet: string,\n baseV: T | undefined,\n aV: T | undefined,\n bV: T | undefined,\n): T | undefined => {\n const aCh = !eqOpt(aV, baseV);\n const bCh = !eqOpt(bV, baseV);\n if (aCh && bCh && !eqOpt(aV, bV)) {\n conflicts.push({ nodeId, facet });\n return baseV;\n }\n if (aCh) return aV;\n if (bCh) return bV;\n return baseV;\n};\n\n/** Merge a canonical-compared facet; returns 0=base, 1=a, 2=b. */\nconst pickCanonical = (\n conflicts: MergeConflict[],\n nodeId: string,\n facet: string,\n baseC: string,\n aC: string,\n bC: string,\n): 0 | 1 | 2 => {\n const aCh = aC !== baseC;\n const bCh = bC !== baseC;\n if (aCh && bCh && aC !== bC) {\n conflicts.push({ nodeId, facet });\n return 0;\n }\n if (aCh) return 1;\n if (bCh) return 2;\n return 0;\n};\n\nconst mergeStyle = (conflicts: MergeConflict[], id: string, base: N, a: N, b: N): SemanticStyle => {\n const bs = base.style;\n const as_ = a.style;\n const bsB = b.style;\n const tone = pickField(conflicts, id, 'style.tone', bs.tone, as_.tone, bsB.tone)!;\n const weight = pickField(conflicts, id, 'style.weight', bs.weight, as_.weight, bsB.weight)!;\n const emphasis = pickField(\n conflicts,\n id,\n 'style.emphasis',\n bs.emphasis,\n as_.emphasis,\n bsB.emphasis,\n )!;\n const role = pickField(conflicts, id, 'style.role', bs.role, as_.role, bsB.role);\n const voice = pickField(conflicts, id, 'style.voice', bs.voice, as_.voice, bsB.voice);\n // Only attach optional fields when present, so the merged style encodes\n // byte-identically (absent ⟺ default; `encodeNode` omits defaults).\n const style: SemanticStyle = { tone, weight, emphasis };\n return {\n ...style,\n ...(role !== undefined ? { role } : {}),\n ...(voice !== undefined ? { voice } : {}),\n };\n};\n\nconst merge3 = (\n conflicts: MergeConflict[],\n base: N,\n aOpt: N | undefined,\n bOpt: N | undefined,\n): N => {\n const a = aOpt ?? base;\n const b = bOpt ?? base;\n const id = rawId(base);\n const shell = childlessKind(base.kind);\n\n // kind facet\n const kindPick = pickCanonical(\n conflicts,\n id,\n 'kind',\n kindCanonical(base),\n kindCanonical(a),\n kindCanonical(b),\n );\n const kindSource = kindPick === 1 ? a : kindPick === 2 ? b : base;\n\n // style sub-fields (independent)\n const mergedStyle = mergeStyle(conflicts, id, base, a, b);\n\n // state facet\n const statePick = pickCanonical(\n conflicts,\n id,\n 'state',\n stateCanonical(shell, base),\n stateCanonical(shell, a),\n stateCanonical(shell, b),\n );\n const mergedState = statePick === 1 ? a.state : statePick === 2 ? b.state : base.state;\n\n // accessibility facet\n const accPick = pickCanonical(\n conflicts,\n id,\n 'accessibility',\n accessibilityCanonical(shell, base),\n accessibilityCanonical(shell, a),\n accessibilityCanonical(shell, b),\n );\n const mergedAcc =\n accPick === 1 ? a.accessibility : accPick === 2 ? b.accessibility : base.accessibility;\n\n // children facet (structural)\n const baseKids = childrenOf(base);\n const aKids = childrenOf(a);\n const bKids = childrenOf(b);\n const baseIds = baseKids.map(rawId);\n const aIds = aKids.map(rawId);\n const bIds = bKids.map(rawId);\n const aStruct = JSON.stringify(aIds) !== JSON.stringify(baseIds);\n const bStruct = JSON.stringify(bIds) !== JSON.stringify(baseIds);\n const baseMap = new Map(baseKids.map((c) => [rawId(c), c]));\n const aMap = new Map(aKids.map((c) => [rawId(c), c]));\n const bMap = new Map(bKids.map((c) => [rawId(c), c]));\n\n const recurseChild = (cid: string): N => {\n const bc = baseMap.get(cid);\n if (bc !== undefined) return merge3(conflicts, bc, aMap.get(cid), bMap.get(cid));\n const ac = aMap.get(cid);\n if (ac !== undefined) return ac;\n const bb = bMap.get(cid);\n if (bb !== undefined) return bb;\n throw new Error(`merge3: child id ${cid} vanished`);\n };\n\n let mergedChildren: readonly N[];\n if (!aStruct && !bStruct) {\n mergedChildren = baseIds.map(recurseChild);\n } else if (aStruct && !bStruct) {\n mergedChildren = aIds.map(recurseChild);\n } else if (!aStruct && bStruct) {\n mergedChildren = bIds.map(recurseChild);\n } else {\n const baseSet = new Set(baseIds);\n const aNew = aIds.filter((i) => !baseSet.has(i));\n const bNew = bIds.filter((i) => !baseSet.has(i));\n const aNewSet = new Set(aNew);\n const disjoint =\n isPureAddition(baseIds, aIds) &&\n isPureAddition(baseIds, bIds) &&\n !bNew.some((i) => aNewSet.has(i));\n if (disjoint) {\n const survivors = baseIds.map(recurseChild);\n const newIds = [...new Set([...aNew, ...bNew])].sort(ordinal);\n mergedChildren = [...survivors, ...newIds.map(recurseChild)];\n } else {\n conflicts.push({ nodeId: id, facet: 'children' });\n mergedChildren = baseIds.map(recurseChild);\n }\n }\n\n const mergedKind = withKindChildren(childlessKind(kindSource.kind), mergedChildren);\n return mkNode(base, mergedKind, mergedStyle, mergedState, mergedAcc);\n};\n\n/**\n * Author-agnostic facet 3-way merge of `a` and `b` over their common `base`\n * (all three share the root id). Returns the merged tree on full auto-merge, or\n * the conflicting cells. Deterministic + host-reproducible (NodeId-byte\n * tie-break, no wall-clock) — byte-identical to the F# `TreeMerge.merge3Way`.\n */\nexport const merge3Way = (base: N, a: N, b: N): MergeResult => {\n const conflicts: MergeConflict[] = [];\n const merged = merge3(conflicts, base, a, b);\n return conflicts.length === 0 ? { ok: true, tree: merged } : { ok: false, conflicts };\n};\n","// ============================================================================\n// @fuaran-ui/ops — wire versioning + the forward/backward-compatibility\n// contract (WIRE_FORMAT.md §15).\n//\n// A conformant TS port of `Fuaran.Core.Wire.Versioning` (the F# reference,\n// Fuaran-Core/src/Fuaran.Core.Wire/Wire.fs). A versioned wire lets an *older*\n// consumer meet a *newer* artifact and **detect → preserve → degrade** instead\n// of hard-crashing with UNKNOWN_DU_CASE / WRONG_NODE_KIND — while the\n// authoring/generation surface stays closed and exhaustive (no host can *emit*\n// an unknown kind). The split is load-bearing:\n// • the producer authors against a closed surface and stamps the artifact\n// with its profile (the `$profile` / `$payload` envelope);\n// • tolerance lives ONLY on the decode boundary of a consumer that is\n// `Behind` — the transport-only `Unknown` is reachable on decode and\n// un-constructible on encode (there is no authoring constructor for it).\n//\n// Certified byte-for-byte against the workspace ../wire-format-fixtures/\n// corpus (the `envelope-round-trip` / `envelope-reject` fixture families) so\n// the envelope + tolerance rules are cross-host, not host-private.\n// ============================================================================\n\nimport type { Node, Result } from '@fuaran-ui/schema';\n\nimport { decodeNode, type DecodeError, type DecodeErrorCode } from './decode.js';\nimport { encodeNode, renderAstCanonical } from './encode.js';\nimport { type JsonAst, parse } from './parse.js';\n\n// ─── Profile id ──────────────────────────────────────────────────────────────\n\n/**\n * A wire profile id — `<name>@<major>.<minor>` (e.g. `core@1.0`). `name` is the\n * capability namespace; `major` is the `/vN/` incompatibility boundary (a\n * removal/rename mints a new major — old consumers cannot interpret it); `minor`\n * is the additive capability counter (a new kind/case/field bumps the minor — an\n * older consumer tolerates it via must-ignore-but-preserve).\n */\nexport interface Profile {\n readonly name: string;\n readonly major: number;\n readonly minor: number;\n}\n\n/** The canonical string form: `<name>@<major>.<minor>`. */\nexport const renderProfile = (p: Profile): string => `${p.name}@${p.major}.${p.minor}`;\n\n/** The base `core` profile — `core@1.0` (the current wire). */\nexport const coreV1: Profile = { name: 'core', major: 1, minor: 0 };\n\n/**\n * Parse `<name>@<major>.<minor>`. Names a typed error on any malformed shape —\n * the same envelope discipline as the decoder (no exceptions escape). Mirrors\n * F# `Profile.tryParse`: split on the LAST `@`, require a `<major>.<minor>` of\n * two non-negative integers.\n */\nexport const tryParseProfile = (s: string): Result<Profile, string> => {\n const at = s.lastIndexOf('@');\n if (at <= 0 || at === s.length - 1) {\n return { ok: false, error: `malformed profile (expected '<name>@<major>.<minor>'): ${s}` };\n }\n const name = s.slice(0, at);\n const ver = s.slice(at + 1);\n const parts = ver.split('.');\n if (parts.length !== 2) {\n return { ok: false, error: `malformed profile version (expected '<major>.<minor>'): ${ver}` };\n }\n const parseNonNeg = (t: string): number | undefined => {\n // Match F# Int32.TryParse + `v >= 0`: a plain non-negative decimal integer.\n if (!/^\\d+$/.test(t)) return undefined;\n const v = Number(t);\n return Number.isInteger(v) && v >= 0 ? v : undefined;\n };\n const major = parseNonNeg(parts[0]!);\n const minor = parseNonNeg(parts[1]!);\n if (major === undefined || minor === undefined) {\n return {\n ok: false,\n error: `malformed profile version (expected non-negative '<major>.<minor>'): ${ver}`,\n };\n }\n return { ok: true, value: { name, major, minor } };\n};\n\n// ─── Capability negotiation ──────────────────────────────────────────────────\n\n/** The capability-negotiation outcome of a consumer reading an artifact's profile. */\nexport type Compatibility =\n /** Authored at-or-below the consumer's profile (same name + major) — decode fully. */\n | { readonly kind: 'Current' }\n /**\n * Authored *ahead* of the consumer (same name + major, higher minor) — the\n * consumer may meet kinds it does not understand; it must tolerate (preserve +\n * degrade), never crash.\n */\n | { readonly kind: 'Behind'; readonly authored: Profile }\n /**\n * A different namespace or a different major — an incompatible `/vN/` boundary\n * the consumer cannot interpret at all (hard-refuse, never silently mis-decode).\n */\n | { readonly kind: 'Foreign'; readonly authored: Profile };\n\n/**\n * Negotiate a consumer's supported profile against an artifact's authored\n * profile. Minor-ahead is `Behind` (tolerable); a different name or major is\n * `Foreign` (refuse). Mirrors F# `Versioning.negotiate`.\n */\nexport const negotiate = (consumer: Profile, authored: Profile): Compatibility => {\n if (authored.name !== consumer.name || authored.major !== consumer.major) {\n return { kind: 'Foreign', authored };\n }\n if (authored.minor > consumer.minor) return { kind: 'Behind', authored };\n return { kind: 'Current' };\n};\n\n// ─── Envelope keys ───────────────────────────────────────────────────────────\n\n/** The versioned-envelope payload key. `$`-prefixed so it sorts before data keys. */\nexport const PAYLOAD_KEY = '$payload';\n/** The versioned-envelope profile key. */\nexport const PROFILE_KEY = '$profile';\n/** The optional artifact-declares-its-required-profile key. */\nexport const REQUIRED_PROFILE_KEY = 'requiredProfile';\n\n// ─── Versioning error surface ────────────────────────────────────────────────\n\n/**\n * A versioning-layer failure. Extends the six canonical `DecodeErrorCode`s with\n * two envelope-specific codes, kept OUT of the core `DecodeErrorCode` set (the\n * six-code AI-recovery surface stays unpolluted — WIRE_FORMAT.md §6):\n * - `FOREIGN_PROFILE` — negotiate returned `Foreign`; the artifact is refused.\n * - `MALFORMED_PROFILE` — the `$profile` value is not a `<name>@<major>.<minor>`.\n */\nexport type EnvelopeErrorCode = DecodeErrorCode | 'FOREIGN_PROFILE' | 'MALFORMED_PROFILE';\n\nexport interface EnvelopeError {\n readonly code: EnvelopeErrorCode;\n readonly path: string;\n readonly message: string;\n}\n\nconst envErr = (code: EnvelopeErrorCode, path: string, message: string): EnvelopeError => ({\n code,\n path,\n message,\n});\n\n// ─── Versioned envelope ──────────────────────────────────────────────────────\n\n/**\n * A versioned wire envelope: the producer's authored `profile` + the artifact\n * `payload` (a `Node` / `TreeOp` as the verbatim parsed AST). `$profile` /\n * `$payload` sort before any lower-case data key under the canonical key order,\n * so an enveloped fixture is byte-stable. Mirrors F# `Versioning.Envelope`.\n */\nexport interface Envelope {\n readonly profile: Profile;\n readonly payload: JsonAst;\n}\n\n/** Render an envelope to canonical wire bytes. */\nexport const encodeEnvelope = (env: Envelope): string =>\n renderAstCanonical({\n kind: 'JObject',\n fields: new Map<string, JsonAst>([\n [PAYLOAD_KEY, env.payload],\n [PROFILE_KEY, { kind: 'JString', value: renderProfile(env.profile) }],\n ]),\n });\n\n/**\n * Decode an envelope from an already-parsed AST — reads `$profile` (parsed) +\n * the verbatim `$payload`. A missing / non-string / malformed `$profile`, or a\n * missing `$payload`, is a structured `EnvelopeError`.\n */\nexport const decodeEnvelopeAst = (ast: JsonAst): Result<Envelope, EnvelopeError> => {\n if (ast.kind !== 'JObject') {\n return { ok: false, error: envErr('WRONG_TYPE', '$', 'envelope must be a JSON object') };\n }\n const profileJ = ast.fields.get(PROFILE_KEY);\n if (profileJ === undefined) {\n return {\n ok: false,\n error: envErr('MISSING_FIELD', `$.${PROFILE_KEY}`, `missing required field '${PROFILE_KEY}'`),\n };\n }\n if (profileJ.kind !== 'JString') {\n return {\n ok: false,\n error: envErr('WRONG_TYPE', `$.${PROFILE_KEY}`, `'${PROFILE_KEY}' must be a profile string`),\n };\n }\n const profile = tryParseProfile(profileJ.value);\n if (!profile.ok) {\n return { ok: false, error: envErr('MALFORMED_PROFILE', `$.${PROFILE_KEY}`, profile.error) };\n }\n const payload = ast.fields.get(PAYLOAD_KEY);\n if (payload === undefined) {\n return {\n ok: false,\n error: envErr('MISSING_FIELD', `$.${PAYLOAD_KEY}`, `missing required field '${PAYLOAD_KEY}'`),\n };\n }\n return { ok: true, value: { profile: profile.value, payload } };\n};\n\n/** Parse + decode an envelope from wire bytes. */\nexport const decodeEnvelope = (json: string): Result<Envelope, EnvelopeError> => {\n const parsed = parse(json);\n if (!parsed.ok) {\n return { ok: false, error: envErr('INVALID_JSON', '$', parsed.error.message) };\n }\n return decodeEnvelopeAst(parsed.value);\n};\n\n// ─── Transport-only Unknown + must-ignore-but-preserve ───────────────────────\n\n/**\n * A kind the consumer does not understand, captured on the decode boundary.\n * **Transport-only**: reachable here and nowhere on the authoring/encode path —\n * no host can construct one to emit. `payload` is the *verbatim parsed AST*, so\n * re-rendering it reproduces the producer's bytes (must-ignore-but-preserve);\n * `requiredProfile` is the profile the artifact declared it needs (when a\n * well-formed one was present), so the consumer can name what it is missing in a\n * degraded placeholder. Mirrors F# `Versioning.UnknownKind`.\n */\nexport interface UnknownKind {\n readonly kind: string;\n readonly payload: JsonAst;\n readonly requiredProfile?: Profile;\n}\n\n/** The result of a tolerant decode: a fully-understood `T`, or a preserved `Unknown`. */\nexport type Decoded<T> =\n | { readonly known: true; readonly value: T }\n | { readonly known: false; readonly unknown: UnknownKind };\n\n/**\n * Read an optional `requiredProfile` declaration off an artifact object (the\n * \"artifact declares the profile it requires\" shape). Malformed / absent /\n * non-string ⇒ `undefined` (the degrade placeholder simply carries no label —\n * mirrors F# `readRequiredProfile`).\n */\nconst readRequiredProfile = (ast: JsonAst): Profile | undefined => {\n if (ast.kind !== 'JObject') return undefined;\n const j = ast.fields.get(REQUIRED_PROFILE_KEY);\n if (j === undefined || j.kind !== 'JString') return undefined;\n const p = tryParseProfile(j.value);\n return p.ok ? p.value : undefined;\n};\n\n/**\n * Tolerantly decode one artifact AST. `tagOf` reads its discriminator; `isKnown`\n * reports whether this consumer understands that tag; `decodeKnown` decodes a\n * known one. An *unrecognised* tag is NOT an error — it becomes a transport-only\n * `Unknown` carrying the verbatim parsed `payload` and any declared\n * `requiredProfile`. A genuinely malformed object (no discriminator at all)\n * still fails via `tagOf`. Mirrors F# `Versioning.decodeTolerant`.\n */\nexport const decodeTolerant = <T>(\n tagOf: (ast: JsonAst) => Result<string, EnvelopeError>,\n isKnown: (tag: string) => boolean,\n decodeKnown: (ast: JsonAst) => Result<T, EnvelopeError>,\n ast: JsonAst,\n): Result<Decoded<T>, EnvelopeError> => {\n const tag = tagOf(ast);\n if (!tag.ok) return tag;\n if (isKnown(tag.value)) {\n const d = decodeKnown(ast);\n return d.ok ? { ok: true, value: { known: true, value: d.value } } : d;\n }\n const unknown: UnknownKind = { kind: tag.value, payload: ast };\n const rp = readRequiredProfile(ast);\n return {\n ok: true,\n value: {\n known: false,\n unknown: rp === undefined ? unknown : { ...unknown, requiredProfile: rp },\n },\n };\n};\n\n/**\n * Re-encode a tolerant decode back to canonical wire bytes. The `Unknown` branch\n * re-renders its preserved `payload` **verbatim** (must-ignore-but-preserve);\n * the `Known` branch re-encodes through the real node encoder. Composed with the\n * canonical renderer's deterministic key order, an unknown artifact round-trips\n * byte-for-byte. Mirrors F# `Versioning.reencode` (specialised to `Node`).\n */\nexport const reencodeNode = (d: Decoded<Node<unknown>>): string =>\n d.known ? encodeNode(d.value) : renderAstCanonical(d.unknown.payload);\n\n// ─── Node binding of the tolerant decoder ────────────────────────────────────\n\n/** Read a node AST's `kind.$type` discriminator tag. */\nconst nodeTagOf = (ast: JsonAst): Result<string, EnvelopeError> => {\n if (ast.kind !== 'JObject') {\n return { ok: false, error: envErr('WRONG_TYPE', '$', 'node must be a JSON object') };\n }\n const kind = ast.fields.get('kind');\n if (kind === undefined) {\n return { ok: false, error: envErr('MISSING_FIELD', '$.kind', \"missing required field 'kind'\") };\n }\n if (kind.kind !== 'JObject') {\n return { ok: false, error: envErr('WRONG_TYPE', '$.kind', 'kind must be a JSON object') };\n }\n const disc = kind.fields.get('$type');\n if (disc === undefined) {\n return {\n ok: false,\n error: envErr('MISSING_FIELD', '$.kind.$type', \"kind must carry a '$type' discriminator\"),\n };\n }\n if (disc.kind !== 'JString') {\n return { ok: false, error: envErr('WRONG_TYPE', '$.kind.$type', '$type must be a string') };\n }\n return { ok: true, value: disc.value };\n};\n\n/**\n * Whether the real decoder knows how to route a node kind — probed against\n * `decodeNode` itself, so it is **zero-drift** with the decoder's kind set: an\n * unknown top-level kind fails with `WRONG_NODE_KIND` at `$.kind.$type`; a known\n * kind (even one missing required fields) fails with some *other* code, or\n * succeeds. This is the TS analogue of F# `isKnown` over `knownTags`, without a\n * parallel kind list to maintain.\n */\nconst isKnownNodeKind = (tag: string): boolean => {\n const probe = decodeNode(`{\"id\":\"_probe_kind\",\"kind\":{\"$type\":${JSON.stringify(tag)}}}`);\n return probe.ok || probe.error.code !== 'WRONG_NODE_KIND';\n};\n\n/** Adapt the six-code `DecodeError` into the versioning error surface. */\nconst liftDecodeError = (e: DecodeError): EnvelopeError => ({\n code: e.code,\n path: e.path,\n message: e.message,\n});\n\nconst decodeKnownNode = (ast: JsonAst): Result<Node<unknown>, EnvelopeError> => {\n const r = decodeNode(renderAstCanonical(ast));\n return r.ok ? r : { ok: false, error: liftDecodeError(r.error) };\n};\n\n/**\n * Tolerantly decode a bare (un-enveloped) `Node` wire form. A known kind decodes\n * normally; an unknown top-level kind becomes a transport-only `Unknown` whose\n * bytes round-trip verbatim through `reencodeNode` — a minor-ahead artifact no\n * longer throws `WRONG_NODE_KIND` / `UNKNOWN_DU_CASE`. A genuinely malformed\n * object (no `kind.$type`) still fails.\n */\nexport const decodeNodeTolerant = (json: string): Result<Decoded<Node<unknown>>, EnvelopeError> => {\n const parsed = parse(json);\n if (!parsed.ok) {\n return { ok: false, error: envErr('INVALID_JSON', '$', parsed.error.message) };\n }\n return decodeTolerant<Node<unknown>>(nodeTagOf, isKnownNodeKind, decodeKnownNode, parsed.value);\n};\n\n// ─── Whole-envelope negotiate → tolerate/refuse → re-encode ──────────────────\n\n/**\n * The consumer entry point for reading a possibly-versioned `Node` artifact\n * safely. Decodes the `$profile` / `$payload` envelope, negotiates the authored\n * profile against `consumer`, and:\n * - **Foreign** → refuses with `FOREIGN_PROFILE` (never silently mis-decodes);\n * - **Current / Behind** → tolerantly decodes the payload (unknown kinds\n * preserved) and returns the whole envelope re-encoded to canonical bytes.\n *\n * The re-encode is byte-identical to a canonical input (must-ignore-but-preserve\n * keeps an unknown-kind payload verbatim), which is exactly what the\n * `envelope-round-trip` corpus family asserts and the `envelope-reject` family\n * asserts the `FOREIGN_PROFILE` refusal for.\n */\nexport const negotiateEnvelope = (\n json: string,\n consumer: Profile = coreV1,\n): Result<string, EnvelopeError> => {\n const env = decodeEnvelope(json);\n if (!env.ok) return env;\n\n const compat = negotiate(consumer, env.value.profile);\n if (compat.kind === 'Foreign') {\n return {\n ok: false,\n error: envErr(\n 'FOREIGN_PROFILE',\n `$.${PROFILE_KEY}`,\n `authored profile ${renderProfile(env.value.profile)} is Foreign to consumer ${renderProfile(\n consumer,\n )} — refused (incompatible /vN/ boundary)`,\n ),\n };\n }\n\n const decoded = decodeTolerant<Node<unknown>>(\n nodeTagOf,\n isKnownNodeKind,\n decodeKnownNode,\n env.value.payload,\n );\n if (!decoded.ok) return decoded;\n\n const payloadBytes = reencodeNode(decoded.value);\n const payloadAst = parse(payloadBytes);\n // payloadBytes is canonical (produced by the encoder / verbatim preserve), so\n // it always re-parses; the guard keeps the types total.\n if (!payloadAst.ok) {\n return {\n ok: false,\n error: envErr('INVALID_JSON', `$.${PAYLOAD_KEY}`, payloadAst.error.message),\n };\n }\n return {\n ok: true,\n value: encodeEnvelope({ profile: env.value.profile, payload: payloadAst.value }),\n };\n};\n","// ============================================================================\n// @fuaran-ui/ops — the elicitation envelope: question-as-UI with a typed\n// answer contract (WIRE_FORMAT.md §18).\n//\n// An elicitation poses a question AS a live Fuaran tree: a canonical Node\n// plus a declared answer contract — which nodes' committed state entries\n// constitute the answer, each typed by a value space — resolving to exactly\n// one typed outcome (`Answered` with canonical typed JSON conforming to the\n// contract / `Declined` / `TimedOut` / `Superseded`). Never prose to\n// re-parse.\n//\n// A conformant TS implementation of the §18 contract, certified against the\n// workspace ../wire-format-fixtures/ corpus (`elicitation-round-trip` /\n// `elicitation-reject` / `elicitation-answer-accept` /\n// `elicitation-answer-reject` families). Like §17's teleport bundle, this is\n// an additive top-level artefact: the Node wire form is embedded unchanged\n// and no NodeKind / Action / Binding case is added — the envelope wraps a\n// tree, it does not extend the tree vocabulary.\n//\n// Strictness (default-deny by shape): every object position rejects\n// undeclared keys (`UNDECLARED_FIELD`); decode is fail-fast in the §18.4\n// pinned order so every host surfaces the same first error. No clock is read\n// anywhere here — `timeoutMs` is data; the presenting HOST's clock dispatches\n// `TimedOut`.\n// ============================================================================\n\nimport type { Node, Result } from '@fuaran-ui/schema';\n\nimport { allNodeIds } from './apply.js';\nimport { decodeNode, type DecodeError, type DecodeErrorCode } from './decode.js';\nimport { encodeNode, renderAstCanonical } from './encode.js';\nimport { type JsonAst, parse } from './parse.js';\n\n// ─── Wire constants ──────────────────────────────────────────────────────────\n\n/** The envelope format-version tag key (`$`-prefixed, reserved per §2.1). */\nexport const ELICITATION_KEY = '$elicitation';\n/** The envelope format version this codec produces and accepts. */\nexport const ELICITATION_VERSION = '1';\n\n// ─── Error surface ───────────────────────────────────────────────────────────\n\n/**\n * The elicitation error surface: the six §6 codes plus the §18.5 codes, kept\n * OUT of the core `DecodeErrorCode` set (same posture as §15's\n * `FOREIGN_PROFILE`).\n */\nexport type ElicitationErrorCode =\n | DecodeErrorCode\n | 'UNSUPPORTED_VERSION'\n | 'UNDECLARED_FIELD'\n | 'CONTRACT_EMPTY'\n | 'CONTRACT_DUPLICATE_FIELD'\n | 'CONTRACT_UNKNOWN_NODE'\n | 'ANSWER_MISSING_FIELD'\n | 'ANSWER_UNDECLARED_FIELD'\n | 'ANSWER_TYPE_MISMATCH'\n | 'ANSWER_OUT_OF_SPACE'\n | 'DEFAULT_NONCONFORMANT';\n\nexport interface ElicitationError {\n readonly code: ElicitationErrorCode;\n readonly path: string;\n readonly message: string;\n}\n\nconst elErr = (code: ElicitationErrorCode, path: string, message: string): ElicitationError => ({\n code,\n path,\n message,\n});\n\n/** Re-root an inner decode error under `prefix` (`$.kind` → `$.tree.kind`). */\nconst rePath = (prefix: string, e: DecodeError): ElicitationError => ({\n code: e.code,\n path:\n e.path === '$'\n ? prefix\n : e.path.startsWith('$')\n ? prefix + e.path.slice(1)\n : `${prefix}.${e.path}`,\n message: e.message,\n});\n\n// ─── Typed shapes ────────────────────────────────────────────────────────────\n\n/**\n * A value space — the platform's established `$type`-tagged space vocabulary\n * (the same wire shape the capability codec uses). `min`/`max` inclusive;\n * `anyString` is the only unbounded space.\n */\nexport type AnswerSpace =\n | { readonly kind: 'intRange'; readonly min: number; readonly max: number }\n | { readonly kind: 'floatRange'; readonly min: number; readonly max: number }\n | { readonly kind: 'stringLen'; readonly min: number; readonly max: number }\n | { readonly kind: 'enum'; readonly values: readonly string[] }\n | { readonly kind: 'anyString' };\n\n/** One declared answer field (§18.1). */\nexport interface AnswerField {\n /** The key this field's value takes in the answer object. */\n readonly name: string;\n /** The id of the NODE whose committed state carries the value. */\n readonly nodeId: string;\n /** The state key the node's binding writes the value under. */\n readonly stateKey: string;\n readonly space: AnswerSpace;\n readonly required: boolean;\n}\n\n/** The declared answer contract — non-empty on the wire (`CONTRACT_EMPTY`). */\nexport interface AnswerContract {\n readonly fields: readonly AnswerField[];\n}\n\n/** A typed answer value — the JSON scalar shapes a space ranges over. */\nexport type AnswerValue = string | number;\n\n/** An answer object: declared field names → scalar values. */\nexport type Answer = ReadonlyMap<string, AnswerValue>;\n\n/** The elicitation envelope (§18.1). */\nexport interface ElicitationEnvelope {\n readonly id: string;\n readonly tree: Node<unknown>;\n readonly contract: AnswerContract;\n /** Milliseconds, ≥ 1. DATA only — the presenting host's clock acts on it. */\n readonly timeoutMs?: number;\n /** A proposed answer; must itself conform to the contract. */\n readonly defaultAnswer?: Answer;\n}\n\n/** The closed outcome set (§18.3). */\nexport type ElicitationOutcome =\n | { readonly kind: 'Answered'; readonly answer: Answer }\n | { readonly kind: 'Declined' }\n | { readonly kind: 'TimedOut' }\n | { readonly kind: 'Superseded'; readonly by?: string };\n\n/** An outcome on the wire, correlated to its elicitation by id. */\nexport interface ElicitationOutcomeEnvelope {\n readonly elicitationId: string;\n readonly outcome: ElicitationOutcome;\n}\n\n// ─── Shared JSON helpers ─────────────────────────────────────────────────────\n\n/**\n * §18.2 integer classification, identical across hosts: a whole-valued JSON\n * number within 32-bit signed range IS an integer (JSON has one number type —\n * `1.0` and `1` denote the same value; the canonical layout renders it `1`).\n */\nconst isInt32 = (v: number): boolean => Number.isInteger(v) && v >= -2147483648 && v <= 2147483647;\n\nconst jstr = (value: string): JsonAst => ({ kind: 'JString', value });\nconst jnum = (value: number): JsonAst => ({ kind: 'JNumber', value });\nconst jobj = (entries: readonly (readonly [string, JsonAst])[]): JsonAst => ({\n kind: 'JObject',\n fields: new Map(entries),\n});\n\n/** First key of `fields` (document order) not in `allowed` — default-deny by shape. */\nconst firstUndeclared = (\n allowed: readonly string[],\n fields: ReadonlyMap<string, JsonAst>,\n): string | undefined => {\n for (const k of fields.keys()) if (!allowed.includes(k)) return k;\n return undefined;\n};\n\nconst requireNonEmptyStr = (\n path: string,\n name: string,\n fields: ReadonlyMap<string, JsonAst>,\n): Result<string, ElicitationError> => {\n const v = fields.get(name);\n if (v === undefined)\n return { ok: false, error: elErr('MISSING_FIELD', path, `missing required field '${name}'`) };\n if (v.kind !== 'JString')\n return { ok: false, error: elErr('WRONG_TYPE', path, `'${name}' must be a string`) };\n if (v.value === '')\n return { ok: false, error: elErr('WRONG_TYPE', path, `'${name}' must be a non-empty string`) };\n return { ok: true, value: v.value };\n};\n\n// ─── Value-space codec ───────────────────────────────────────────────────────\n\nconst encodeSpace = (s: AnswerSpace): JsonAst => {\n switch (s.kind) {\n case 'intRange':\n return jobj([\n ['$type', jstr('intRange')],\n ['max', jnum(s.max)],\n ['min', jnum(s.min)],\n ]);\n case 'floatRange':\n return jobj([\n ['$type', jstr('floatRange')],\n ['max', jnum(s.max)],\n ['min', jnum(s.min)],\n ]);\n case 'stringLen':\n return jobj([\n ['$type', jstr('stringLen')],\n ['max', jnum(s.max)],\n ['min', jnum(s.min)],\n ]);\n case 'enum':\n return jobj([\n ['$type', jstr('enum')],\n ['values', { kind: 'JArray', items: s.values.map(jstr) }],\n ]);\n case 'anyString':\n return jobj([['$type', jstr('anyString')]]);\n }\n};\n\nconst decodeSpace = (path: string, jv: JsonAst): Result<AnswerSpace, ElicitationError> => {\n if (jv.kind !== 'JObject')\n return { ok: false, error: elErr('WRONG_TYPE', path, 'space must be a JSON object') };\n const tagJ = jv.fields.get('$type');\n if (tagJ === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', `${path}.$type`, \"space must carry a '$type' discriminator\"),\n };\n if (tagJ.kind !== 'JString')\n return { ok: false, error: elErr('WRONG_TYPE', `${path}.$type`, \"'$type' must be a string\") };\n const tag = tagJ.value;\n\n const strict = <T>(\n allowed: readonly string[],\n k: () => Result<T, ElicitationError>,\n ): Result<T, ElicitationError> => {\n const stray = firstUndeclared(['$type', ...allowed], jv.fields);\n if (stray !== undefined)\n return {\n ok: false,\n error: elErr(\n 'UNDECLARED_FIELD',\n `${path}.${stray}`,\n `undeclared key '${stray}' on a '${tag}' space`,\n ),\n };\n return k();\n };\n\n const intBound = (name: string): Result<number, ElicitationError> => {\n const v = jv.fields.get(name);\n if (v === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', `${path}.${name}`, `missing required field '${name}'`),\n };\n if (v.kind !== 'JNumber' || !Number.isInteger(v.value))\n return {\n ok: false,\n error: elErr('WRONG_TYPE', `${path}.${name}`, `'${name}' must be an integer`),\n };\n return { ok: true, value: v.value };\n };\n\n const numBound = (name: string): Result<number, ElicitationError> => {\n const v = jv.fields.get(name);\n if (v === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', `${path}.${name}`, `missing required field '${name}'`),\n };\n if (v.kind !== 'JNumber')\n return {\n ok: false,\n error: elErr('WRONG_TYPE', `${path}.${name}`, `'${name}' must be a number`),\n };\n return { ok: true, value: v.value };\n };\n\n const ordered = <T>(lo: number, hi: number, mk: () => T): Result<T, ElicitationError> =>\n hi < lo\n ? { ok: false, error: elErr('WRONG_TYPE', path, 'space bounds must satisfy min <= max') }\n : { ok: true, value: mk() };\n\n const range = (\n kind: 'intRange' | 'floatRange' | 'stringLen',\n bound: (name: string) => Result<number, ElicitationError>,\n ): Result<AnswerSpace, ElicitationError> =>\n strict(['max', 'min'], () => {\n const min = bound('min');\n if (!min.ok) return min;\n const max = bound('max');\n if (!max.ok) return max;\n return ordered(min.value, max.value, () => ({ kind, min: min.value, max: max.value }));\n });\n\n switch (tag) {\n case 'intRange':\n return range('intRange', intBound);\n case 'floatRange':\n return range('floatRange', numBound);\n case 'stringLen':\n return range('stringLen', intBound);\n case 'enum':\n return strict(['values'], () => {\n const v = jv.fields.get('values');\n if (v === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', `${path}.values`, \"missing required field 'values'\"),\n };\n if (v.kind !== 'JArray' || v.items.some((it) => it.kind !== 'JString'))\n return {\n ok: false,\n error: elErr('WRONG_TYPE', `${path}.values`, \"'values' must be an array of strings\"),\n };\n if (v.items.length === 0)\n return {\n ok: false,\n error: elErr('WRONG_TYPE', `${path}.values`, \"'values' must be a non-empty array\"),\n };\n return {\n ok: true,\n value: {\n kind: 'enum',\n values: v.items.map((it) => (it as { kind: 'JString'; value: string }).value),\n },\n };\n });\n case 'anyString':\n return strict([], () => ({ ok: true, value: { kind: 'anyString' } }));\n default:\n return {\n ok: false,\n error: elErr(\n 'UNKNOWN_DU_CASE',\n `${path}.$type`,\n `unknown value-space discriminator '${tag}'`,\n ),\n };\n }\n};\n\n// ─── Answer objects ──────────────────────────────────────────────────────────\n\nconst encodeAnswerAst = (answer: Answer): JsonAst =>\n jobj([...answer.entries()].map(([k, v]) => [k, typeof v === 'string' ? jstr(v) : jnum(v)]));\n\nconst decodeAnswerObject = (basePath: string, jv: JsonAst): Result<Answer, ElicitationError> => {\n if (jv.kind !== 'JObject')\n return { ok: false, error: elErr('WRONG_TYPE', basePath, 'answer must be a JSON object') };\n const out = new Map<string, AnswerValue>();\n for (const [k, v] of jv.fields) {\n if (v.kind === 'JString') out.set(k, v.value);\n else if (v.kind === 'JNumber') out.set(k, v.value);\n else\n return {\n ok: false,\n error: elErr(\n 'WRONG_TYPE',\n `${basePath}.${k}`,\n 'answer values must be JSON scalars (string or number)',\n ),\n };\n }\n return { ok: true, value: out };\n};\n\n// ─── Answer conformance (§18.4) ──────────────────────────────────────────────\n\n/**\n * Validate a typed answer against `contract`, reporting at `basePath`.\n * Deterministic fail-fast order: (1) undeclared keys, in Ordinal key order;\n * (2) per contract field, in declaration order — missing-required, then\n * JSON-type-vs-space, then in-space.\n */\nexport const validateAnswerAt = (\n basePath: string,\n contract: AnswerContract,\n answer: Answer,\n): Result<undefined, ElicitationError> => {\n const declared = new Set(contract.fields.map((f) => f.name));\n const stray = [...answer.keys()].sort().find((k) => !declared.has(k));\n if (stray !== undefined)\n return {\n ok: false,\n error: elErr(\n 'ANSWER_UNDECLARED_FIELD',\n `${basePath}.${stray}`,\n `'${stray}' is not a declared answer field`,\n ),\n };\n\n for (const field of contract.fields) {\n const path = `${basePath}.${field.name}`;\n const value = answer.get(field.name);\n if (value === undefined) {\n if (field.required)\n return {\n ok: false,\n error: elErr(\n 'ANSWER_MISSING_FIELD',\n path,\n `required answer field '${field.name}' is missing`,\n ),\n };\n continue;\n }\n\n const mismatch = (expected: string): Result<undefined, ElicitationError> => ({\n ok: false,\n error: elErr(\n 'ANSWER_TYPE_MISMATCH',\n path,\n `'${field.name}' must be ${expected} for its declared space`,\n ),\n });\n const outOfSpace = (detail: string): Result<undefined, ElicitationError> => ({\n ok: false,\n error: elErr(\n 'ANSWER_OUT_OF_SPACE',\n path,\n `'${field.name}' is outside its declared space: ${detail}`,\n ),\n });\n\n const s = field.space;\n switch (s.kind) {\n case 'intRange': {\n if (typeof value !== 'number' || !isInt32(value)) return mismatch('an integer');\n if (value < s.min || value > s.max)\n return outOfSpace(`${value} is not in [${s.min}, ${s.max}]`);\n break;\n }\n case 'floatRange': {\n if (typeof value !== 'number') return mismatch('a number');\n if (value < s.min || value > s.max)\n return outOfSpace(`${value} is not in [${s.min}, ${s.max}]`);\n break;\n }\n case 'stringLen': {\n if (typeof value !== 'string') return mismatch('a string');\n if (value.length < s.min || value.length > s.max)\n return outOfSpace('the string violates its declared space');\n break;\n }\n case 'enum': {\n if (typeof value !== 'string') return mismatch('a string');\n if (!s.values.includes(value)) return outOfSpace('the string violates its declared space');\n break;\n }\n case 'anyString': {\n if (typeof value !== 'string') return mismatch('a string');\n break;\n }\n }\n }\n return { ok: true, value: undefined };\n};\n\n/**\n * Validate an answer at the standard `$.answer` root — the gate a resolution\n * host runs before an `Answered` outcome reaches the asking agent.\n */\nexport const validateAnswer = (\n contract: AnswerContract,\n answer: Answer,\n): Result<undefined, ElicitationError> => validateAnswerAt('$.answer', contract, answer);\n\n// ─── Contract codec ──────────────────────────────────────────────────────────\n\nconst encodeField = (f: AnswerField): JsonAst =>\n jobj([\n ['name', jstr(f.name)],\n ['nodeId', jstr(f.nodeId)],\n ['required', { kind: 'JBool', value: f.required }],\n ['space', encodeSpace(f.space)],\n ['stateKey', jstr(f.stateKey)],\n ]);\n\nconst encodeContract = (c: AnswerContract): JsonAst =>\n jobj([['fields', { kind: 'JArray', items: c.fields.map(encodeField) }]]);\n\nconst decodeContract = (\n basePath: string,\n nodeExists: (nodeId: string) => boolean,\n jv: JsonAst,\n): Result<AnswerContract, ElicitationError> => {\n if (jv.kind !== 'JObject')\n return { ok: false, error: elErr('WRONG_TYPE', basePath, 'contract must be a JSON object') };\n const stray = firstUndeclared(['fields'], jv.fields);\n if (stray !== undefined)\n return {\n ok: false,\n error: elErr(\n 'UNDECLARED_FIELD',\n `${basePath}.${stray}`,\n `undeclared key '${stray}' on the contract`,\n ),\n };\n const fieldsJ = jv.fields.get('fields');\n if (fieldsJ === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', `${basePath}.fields`, \"missing required field 'fields'\"),\n };\n if (fieldsJ.kind !== 'JArray')\n return {\n ok: false,\n error: elErr('WRONG_TYPE', `${basePath}.fields`, \"'fields' must be an array\"),\n };\n if (fieldsJ.items.length === 0)\n return {\n ok: false,\n error: elErr(\n 'CONTRACT_EMPTY',\n `${basePath}.fields`,\n 'an answer contract must declare at least one field',\n ),\n };\n\n const out: AnswerField[] = [];\n const seen = new Set<string>();\n for (let i = 0; i < fieldsJ.items.length; i++) {\n const item = fieldsJ.items[i]!;\n const path = `${basePath}.fields[${i}]`;\n if (item.kind !== 'JObject')\n return { ok: false, error: elErr('WRONG_TYPE', path, 'answer field must be a JSON object') };\n const strayF = firstUndeclared(\n ['name', 'nodeId', 'required', 'space', 'stateKey'],\n item.fields,\n );\n if (strayF !== undefined)\n return {\n ok: false,\n error: elErr(\n 'UNDECLARED_FIELD',\n `${path}.${strayF}`,\n `undeclared key '${strayF}' on an answer field`,\n ),\n };\n const name = requireNonEmptyStr(`${path}.name`, 'name', item.fields);\n if (!name.ok) return name;\n const nodeId = requireNonEmptyStr(`${path}.nodeId`, 'nodeId', item.fields);\n if (!nodeId.ok) return nodeId;\n if (!nodeExists(nodeId.value))\n return {\n ok: false,\n error: elErr(\n 'CONTRACT_UNKNOWN_NODE',\n `${path}.nodeId`,\n `'${nodeId.value}' names no node in the elicitation tree`,\n ),\n };\n const requiredJ = item.fields.get('required');\n if (requiredJ === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', `${path}.required`, \"missing required field 'required'\"),\n };\n if (requiredJ.kind !== 'JBool')\n return {\n ok: false,\n error: elErr('WRONG_TYPE', `${path}.required`, \"'required' must be a boolean\"),\n };\n const spaceJ = item.fields.get('space');\n if (spaceJ === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', `${path}.space`, \"missing required field 'space'\"),\n };\n const space = decodeSpace(`${path}.space`, spaceJ);\n if (!space.ok) return space;\n const stateKey = requireNonEmptyStr(`${path}.stateKey`, 'stateKey', item.fields);\n if (!stateKey.ok) return stateKey;\n if (seen.has(name.value))\n return {\n ok: false,\n error: elErr(\n 'CONTRACT_DUPLICATE_FIELD',\n `${path}.name`,\n `duplicate answer field name '${name.value}'`,\n ),\n };\n seen.add(name.value);\n out.push({\n name: name.value,\n nodeId: nodeId.value,\n stateKey: stateKey.value,\n space: space.value,\n required: requiredJ.value,\n });\n }\n return { ok: true, value: { fields: out } };\n};\n\n// ─── Envelope codec ──────────────────────────────────────────────────────────\n\n/**\n * Encode an elicitation envelope to canonical wire bytes. Fails only when the\n * tree is not wire-representable.\n */\nexport const encodeElicitation = (env: ElicitationEnvelope): Result<string, ElicitationError> => {\n const treeAst = parse(encodeNode(env.tree));\n if (!treeAst.ok)\n return {\n ok: false,\n error: elErr(\n 'WRONG_TYPE',\n '$.tree',\n `tree is not wire-representable: ${treeAst.error.message}`,\n ),\n };\n const entries: (readonly [string, JsonAst])[] = [\n [ELICITATION_KEY, jstr(ELICITATION_VERSION)],\n ['contract', encodeContract(env.contract)],\n ];\n if (env.defaultAnswer !== undefined)\n entries.push(['default', encodeAnswerAst(env.defaultAnswer)]);\n entries.push(['id', jstr(env.id)]);\n if (env.timeoutMs !== undefined) entries.push(['timeoutMs', jnum(env.timeoutMs)]);\n entries.push(['tree', treeAst.value]);\n return { ok: true, value: renderAstCanonical(jobj(entries)) };\n};\n\n/**\n * Decode + validate an elicitation envelope (fail-fast, §18.4 order): stray\n * keys → version tag → id → tree (standard node decode, errors re-rooted\n * under `$.tree`) → contract (structure, duplicates, node membership) →\n * timeoutMs → default conformance.\n */\nexport const decodeElicitation = (json: string): Result<ElicitationEnvelope, ElicitationError> => {\n const parsed = parse(json);\n if (!parsed.ok)\n return {\n ok: false,\n error: elErr('INVALID_JSON', '$', `input is not valid JSON: ${parsed.error.message}`),\n };\n const root = parsed.value;\n if (root.kind !== 'JObject')\n return {\n ok: false,\n error: elErr('WRONG_TYPE', '$', 'elicitation envelope must be a JSON object'),\n };\n\n const stray = firstUndeclared(\n [ELICITATION_KEY, 'contract', 'default', 'id', 'timeoutMs', 'tree'],\n root.fields,\n );\n if (stray !== undefined)\n return {\n ok: false,\n error: elErr(\n 'UNDECLARED_FIELD',\n `$.${stray}`,\n `undeclared key '${stray}' on the elicitation envelope`,\n ),\n };\n\n const versionJ = root.fields.get(ELICITATION_KEY);\n if (versionJ === undefined)\n return {\n ok: false,\n error: elErr(\n 'MISSING_FIELD',\n `$.${ELICITATION_KEY}`,\n `missing required field '${ELICITATION_KEY}'`,\n ),\n };\n if (versionJ.kind !== 'JString')\n return {\n ok: false,\n error: elErr('WRONG_TYPE', `$.${ELICITATION_KEY}`, `'${ELICITATION_KEY}' must be a string`),\n };\n if (versionJ.value !== ELICITATION_VERSION)\n return {\n ok: false,\n error: elErr(\n 'UNSUPPORTED_VERSION',\n `$.${ELICITATION_KEY}`,\n `unsupported elicitation format version '${versionJ.value}' (this codec accepts '${ELICITATION_VERSION}')`,\n ),\n };\n\n const id = requireNonEmptyStr('$.id', 'id', root.fields);\n if (!id.ok) return id;\n\n const treeJ = root.fields.get('tree');\n if (treeJ === undefined)\n return { ok: false, error: elErr('MISSING_FIELD', '$.tree', \"missing required field 'tree'\") };\n const tree = decodeNode(renderAstCanonical(treeJ));\n if (!tree.ok) return { ok: false, error: rePath('$.tree', tree.error) };\n\n const ids = new Set(allNodeIds(tree.value));\n const contractJ = root.fields.get('contract');\n if (contractJ === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', '$.contract', \"missing required field 'contract'\"),\n };\n const contract = decodeContract('$.contract', (nodeId) => ids.has(nodeId), contractJ);\n if (!contract.ok) return contract;\n\n let timeoutMs: number | undefined;\n const timeoutJ = root.fields.get('timeoutMs');\n if (timeoutJ !== undefined) {\n if (timeoutJ.kind !== 'JNumber' || !Number.isInteger(timeoutJ.value) || timeoutJ.value < 1)\n return {\n ok: false,\n error: elErr('WRONG_TYPE', '$.timeoutMs', \"'timeoutMs' must be an integer >= 1\"),\n };\n timeoutMs = timeoutJ.value;\n }\n\n let defaultAnswer: Answer | undefined;\n const defaultJ = root.fields.get('default');\n if (defaultJ !== undefined) {\n const answer = decodeAnswerObject('$.default', defaultJ);\n if (!answer.ok) return answer;\n const conform = validateAnswerAt('$.default', contract.value, answer.value);\n if (!conform.ok)\n return {\n ok: false,\n error: elErr(\n 'DEFAULT_NONCONFORMANT',\n conform.error.path,\n `default answer is non-conformant (${conform.error.code}): ${conform.error.message}`,\n ),\n };\n defaultAnswer = answer.value;\n }\n\n return {\n ok: true,\n value: {\n id: id.value,\n tree: tree.value,\n contract: contract.value,\n ...(timeoutMs !== undefined ? { timeoutMs } : {}),\n ...(defaultAnswer !== undefined ? { defaultAnswer } : {}),\n },\n };\n};\n\n// ─── Outcome codec ───────────────────────────────────────────────────────────\n\n/** Encode an outcome to canonical wire bytes. Total — no embedded tree. */\nexport const encodeElicitationOutcome = (env: ElicitationOutcomeEnvelope): string => {\n const o = env.outcome;\n const entries: (readonly [string, JsonAst])[] = [['$type', jstr(o.kind)]];\n if (o.kind === 'Answered') entries.push(['answer', encodeAnswerAst(o.answer)]);\n if (o.kind === 'Superseded' && o.by !== undefined) entries.push(['by', jstr(o.by)]);\n entries.push(['elicitationId', jstr(env.elicitationId)]);\n return renderAstCanonical(jobj(entries));\n};\n\n/**\n * Decode an outcome envelope. Contract conformance of an `Answered` answer is\n * NOT checked here (the outcome does not carry the contract) — a resolution\n * host pairs the outcome with its pending elicitation and runs\n * `validateAnswer` before the answer reaches the asking agent (§18.4).\n */\nexport const decodeElicitationOutcome = (\n json: string,\n): Result<ElicitationOutcomeEnvelope, ElicitationError> => {\n const parsed = parse(json);\n if (!parsed.ok)\n return {\n ok: false,\n error: elErr('INVALID_JSON', '$', `input is not valid JSON: ${parsed.error.message}`),\n };\n const root = parsed.value;\n if (root.kind !== 'JObject')\n return { ok: false, error: elErr('WRONG_TYPE', '$', 'outcome must be a JSON object') };\n\n const tagJ = root.fields.get('$type');\n if (tagJ === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', '$.$type', \"outcome must carry a '$type' discriminator\"),\n };\n if (tagJ.kind !== 'JString')\n return { ok: false, error: elErr('WRONG_TYPE', '$.$type', \"'$type' must be a string\") };\n const tag = tagJ.value;\n\n const strict = (allowed: readonly string[]): ElicitationError | undefined => {\n const stray = firstUndeclared(['$type', 'elicitationId', ...allowed], root.fields);\n return stray === undefined\n ? undefined\n : elErr('UNDECLARED_FIELD', `$.${stray}`, `undeclared key '${stray}' on a '${tag}' outcome`);\n };\n\n const withId = (\n allowed: readonly string[],\n mk: (id: string) => Result<ElicitationOutcomeEnvelope, ElicitationError>,\n ): Result<ElicitationOutcomeEnvelope, ElicitationError> => {\n const strayErr = strict(allowed);\n if (strayErr !== undefined) return { ok: false, error: strayErr };\n const id = requireNonEmptyStr('$.elicitationId', 'elicitationId', root.fields);\n if (!id.ok) return id;\n return mk(id.value);\n };\n\n switch (tag) {\n case 'Answered':\n return withId(['answer'], (id) => {\n const answerJ = root.fields.get('answer');\n if (answerJ === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', '$.answer', \"missing required field 'answer'\"),\n };\n const answer = decodeAnswerObject('$.answer', answerJ);\n if (!answer.ok) return answer;\n return {\n ok: true,\n value: { elicitationId: id, outcome: { kind: 'Answered', answer: answer.value } },\n };\n });\n case 'Declined':\n return withId([], (id) => ({\n ok: true,\n value: { elicitationId: id, outcome: { kind: 'Declined' } },\n }));\n case 'TimedOut':\n return withId([], (id) => ({\n ok: true,\n value: { elicitationId: id, outcome: { kind: 'TimedOut' } },\n }));\n case 'Superseded':\n return withId(['by'], (id) => {\n const byJ = root.fields.get('by');\n if (byJ === undefined)\n return {\n ok: true,\n value: { elicitationId: id, outcome: { kind: 'Superseded' } },\n };\n if (byJ.kind !== 'JString' || byJ.value === '')\n return {\n ok: false,\n error: elErr('WRONG_TYPE', '$.by', \"'by' must be a non-empty string\"),\n };\n return {\n ok: true,\n value: { elicitationId: id, outcome: { kind: 'Superseded', by: byJ.value } },\n };\n });\n default:\n return {\n ok: false,\n error: elErr('UNKNOWN_DU_CASE', '$.$type', `unknown outcome discriminator '${tag}'`),\n };\n }\n};\n\n// ─── Answer-conformance document (§18.4, the fixture-harness operation) ──────\n\n/**\n * Validate a `{\"answer\": {…}, \"contract\": {…}}` conformance document — the\n * operation the `elicitation-answer-accept` / `elicitation-answer-reject`\n * corpus families drive. The document carries no tree, so the\n * `CONTRACT_UNKNOWN_NODE` probe does not apply here.\n */\nexport const validateAnswerDocument = (json: string): Result<undefined, ElicitationError> => {\n const parsed = parse(json);\n if (!parsed.ok)\n return {\n ok: false,\n error: elErr('INVALID_JSON', '$', `input is not valid JSON: ${parsed.error.message}`),\n };\n const root = parsed.value;\n if (root.kind !== 'JObject')\n return {\n ok: false,\n error: elErr('WRONG_TYPE', '$', 'answer-conformance document must be a JSON object'),\n };\n const stray = firstUndeclared(['answer', 'contract'], root.fields);\n if (stray !== undefined)\n return {\n ok: false,\n error: elErr(\n 'UNDECLARED_FIELD',\n `$.${stray}`,\n `undeclared key '${stray}' on an answer-conformance document`,\n ),\n };\n const contractJ = root.fields.get('contract');\n if (contractJ === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', '$.contract', \"missing required field 'contract'\"),\n };\n const contract = decodeContract('$.contract', () => true, contractJ);\n if (!contract.ok) return contract;\n const answerJ = root.fields.get('answer');\n if (answerJ === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', '$.answer', \"missing required field 'answer'\"),\n };\n const answer = decodeAnswerObject('$.answer', answerJ);\n if (!answer.ok) return answer;\n return validateAnswerAt('$.answer', contract.value, answer.value);\n};\n"]}
1
+ {"version":3,"sources":["../src/encode.ts","../src/dataframe.ts","../src/parse.ts","../src/decode.ts","../src/apply.ts","../src/dag.ts","../src/merge.ts","../src/versioning.ts","../src/elicitation.ts"],"names":["controlValueDefaults","available","CLOSURE","OPAQUE","field","projectSelectionField","b","t","viewBox","FORM_FIELD_KIND_NAMES","NODE_KIND_GROUPS","fo","accessibility","ok","fail","outcome","str","defaults","encodeEnvelope"],"mappings":"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","file":"index.cjs","sourcesContent":["// ============================================================================\n// @fuaran-ui/ops — canonical-JSON encoder.\n//\n// Symmetric port of Fuaran.UI.OpStream.Abstractions.CanonicalJson\n// (encodeNode / encodeOp). Produces the deterministic, byte-stable wire form\n// pinned by fuaran-dotnet/docs/WIRE_FORMAT.md §2:\n//\n// - object keys sorted by Ordinal (UTF-16 code-unit) comparison;\n// - `None` / `undefined` option fields omitted entirely (never `\"k\":null`);\n// - DU cases as `{\"$type\":\"<CaseName>\", …}` objects;\n// - bare-string enums (Orientation / ToneVariant / …) as plain strings;\n// - NaN / ±∞ as the quoted sentinels \"NaN\" / \"Infinity\" / \"-Infinity\";\n// - closures / unobservable runtime payloads as \"<closure>\";\n// - un-introspectable `Binding.Static` payloads as \"<opaque>\";\n// - Node.motion / Node.extraAttributes wire-omitted (WIRE_FORMAT.md §9).\n//\n// Verified byte-for-byte against the workspace wire-format-fixtures corpus by\n// test/corpus.test.ts. This is the load-bearing \"no silent drift\" surface:\n// the encoder must reproduce the F# encoder's exact bytes for every fixture.\n// ============================================================================\n\nimport { controlValueDefaults } from '@fuaran-ui/schema';\nimport type {\n Accessibility,\n Action,\n Agg,\n BadgeSpec,\n Cell,\n ColExpr,\n ColPair,\n ColumnType,\n DataColumn,\n DataSource,\n InvokeArg,\n SortKey,\n Transform,\n LinkSpec,\n Binding,\n BoxLayout,\n BoxSpec,\n ButtonSpec,\n CalloutSpec,\n CellFormat,\n CellKindErased,\n ChartSpec,\n ColumnErased,\n ColumnWidth,\n DisclosureSpec,\n DisplayKind,\n EffectClass,\n ImageSpec,\n ListSpec,\n ModalSpec,\n ScrollAreaSpec,\n ToastSpec,\n CodeBlockSpec,\n CurveCommand,\n DrawPoint,\n DrawStyle,\n DrawingSpec,\n MathSpec,\n Shape,\n ViewBox,\n MathDisplay,\n FileUploadSpec,\n FilterSpec,\n FragmentArg,\n FragmentScalar,\n Format,\n FormField,\n FormFieldKind,\n FormSpec,\n LocaleSource,\n GridSpec,\n HeadingSpec,\n HoleDecl,\n HoleValueSpace,\n InputKind,\n JsonValue,\n MetricSpec,\n LabelValueRowSpec,\n FactSpec,\n LayoutKind,\n LocalFlushTrigger,\n MapMarker,\n MapSpec,\n MarkdownSpec,\n Node,\n NodeKind,\n ProgressSpec,\n SelectOption,\n SelectSpec,\n SemanticStyle,\n SkeletonSpec,\n SparklineSpec,\n SplitPanelSpec,\n StateBehaviour,\n SummaryListSpec,\n StepperSpec,\n StyleWeight,\n Emphasis,\n ToneVariant,\n TabHeader,\n TableSpec,\n TabsSpec,\n TextSource,\n VisKind,\n} from '@fuaran-ui/schema';\n\nimport type { JsonAst } from './parse.js';\nimport type { TreeOp } from './treeOp.js';\n\n// ─── Primitive emitters ──────────────────────────────────────────────────────\n\nconst assertNever = (x: never): never => {\n throw new Error(`@fuaran-ui/ops encode: unreachable case ${JSON.stringify(x)}`);\n};\n\n/** Quote + escape a string per WIRE_FORMAT.md §2 rule 6 (only \" \\ and control chars). */\nconst str = (s: string): string => {\n let out = '\"';\n for (let i = 0; i < s.length; i += 1) {\n const c = s[i]!;\n const code = s.charCodeAt(i);\n if (c === '\"') {\n out += '\\\\\"';\n } else if (c === '\\\\') {\n out += '\\\\\\\\';\n } else if (code < 0x20) {\n out += '\\\\u' + code.toString(16).padStart(4, '0');\n } else {\n out += c;\n }\n }\n return out + '\"';\n};\n\n/**\n * Render a finite double in .NET `Double.ToString(\"R\", InvariantCulture)`\n * layout — the canonical numeric form mandated by WIRE_FORMAT.md §2 rule 5.\n *\n * Both runtimes compute the SAME shortest round-trip *digits* (.NET \"R\" and\n * JS `Number.prototype.toString()` are both shortest-round-trip since .NET\n * Core 3.0). They diverge only in *layout*: the fixed-vs-scientific threshold\n * and the scientific spelling. .NET uses fixed notation iff the leading-digit\n * decimal exponent `e` is in `[-4, 16]`, else scientific with an uppercase\n * `E`, an always-present sign, and a ≥2-digit zero-padded exponent\n * (`1E+21`, `1E-07`, `1.2345678901234568E+17`). JS's thresholds are wider\n * (scientific only for `e ≥ 21` or `e ≤ -7`) and its scientific form is\n * lowercase with an unpadded exponent (`1e+21`, `1e-7`).\n *\n * This normaliser extracts the shared shortest digits + exponent from JS's\n * own `toString()` and re-lays them out in .NET form, so the TS encoder is\n * byte-identical to the F# encoder across the whole finite-double range — not\n * just the int53 plain-decimal sub-range the two happened to already agree on\n * (Phase 117).\n */\nexport const formatFiniteDouble = (n: number): string => {\n if (n === 0) return '0';\n const neg = n < 0;\n const s = Math.abs(n).toString();\n\n // Decompose into significant `digits` (no point) + `exp`, the base-10\n // exponent of the leading digit (value = d0.d1d2… × 10^exp).\n let digits: string;\n let exp: number;\n const eIdx = s.indexOf('e');\n if (eIdx >= 0) {\n const mant = s.slice(0, eIdx);\n const mantExp = parseInt(s.slice(eIdx + 1), 10);\n const dot = mant.indexOf('.');\n if (dot < 0) {\n digits = mant;\n exp = mantExp + (mant.length - 1);\n } else {\n digits = mant.slice(0, dot) + mant.slice(dot + 1);\n exp = mantExp + (dot - 1);\n }\n } else {\n const dot = s.indexOf('.');\n if (dot < 0) {\n digits = s;\n exp = s.length - 1;\n } else {\n const intPart = s.slice(0, dot);\n const fracPart = s.slice(dot + 1);\n if (intPart === '0') {\n const leadingZeros = fracPart.length - fracPart.replace(/^0+/, '').length;\n digits = fracPart.slice(leadingZeros);\n exp = -(leadingZeros + 1);\n } else {\n digits = intPart + fracPart;\n exp = intPart.length - 1;\n }\n }\n }\n\n // Reduce to shortest significant digits (the leading digit is already\n // significant, so only trailing zeros can be dropped).\n digits = digits.replace(/0+$/, '') || '0';\n\n let out: string;\n if (exp >= -4 && exp <= 16) {\n // Fixed-point layout.\n if (exp >= 0) {\n if (digits.length <= exp + 1) {\n out = digits + '0'.repeat(exp + 1 - digits.length);\n } else {\n out = digits.slice(0, exp + 1) + '.' + digits.slice(exp + 1);\n }\n } else {\n out = '0.' + '0'.repeat(-exp - 1) + digits;\n }\n } else {\n // Scientific layout: uppercase E, signed, ≥2-digit zero-padded exponent.\n const mantissa = digits.length === 1 ? digits : digits[0] + '.' + digits.slice(1);\n const expSign = exp >= 0 ? '+' : '-';\n const expDigits = Math.abs(exp).toString().padStart(2, '0');\n out = mantissa + 'E' + expSign + expDigits;\n }\n\n return neg ? '-' + out : out;\n};\n\n/** Number rule (§2 rule 5): finite via .NET \"R\" layout; specials as quoted sentinels; −0 → 0. */\nexport const num = (n: number): string => {\n if (Number.isNaN(n)) return '\"NaN\"';\n if (n === Infinity) return '\"Infinity\"';\n if (n === -Infinity) return '\"-Infinity\"';\n return formatFiniteDouble(n);\n};\n\nconst bool = (b: boolean): string => (b ? 'true' : 'false');\n\ntype Field = readonly [string, string];\n\n/** Emit an object with Ordinal-sorted keys (§2 rule 2). */\nconst jObject = (fields: readonly Field[]): string => {\n const sorted = [...fields].sort((a, b) => (a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0));\n return '{' + sorted.map(([k, v]) => str(k) + ':' + v).join(',') + '}';\n};\n\nconst jArray = (items: readonly string[]): string => '[' + items.join(',') + ']';\n\n/** A `$type`-discriminated DU object (§2 rule 8). */\nconst caseObj = (discriminator: string, fields: readonly Field[]): string =>\n jObject([['$type', str(discriminator)], ...fields]);\n\n/**\n * Hoist a spec's fields directly under the kind's `$type` discriminator — the\n * flat wire carries no `spec` wrapper (WIRE_FORMAT.md §3.2). `specJson` is the\n * spec's `{…}` object string (keys already Ordinal-sorted); we splice\n * `\"$type\":\"<disc>\"` in front of those fields. Byte-correct because `$` (0x24)\n * sorts before every lowercase spec field name, so `$type` stays the canonical\n * first key and the spliced result remains Ordinal-sorted. Port of the F#\n * `CanonicalJson.hoistSpec` helper.\n */\nconst hoistSpec = (discriminator: string, specJson: string): string => {\n const head = '{' + str('$type') + ':' + str(discriminator);\n // specJson is \"{…}\" (or \"{}\" for a field-less spec); splice its inner fields\n // in after $type when present.\n return specJson.length > 2 ? head + ',' + specJson.slice(1, -1) + '}' : head + '}';\n};\n\nconst CLOSURE = str('<closure>');\nconst OPAQUE = str('<opaque>');\n\n/**\n * Best-effort `obj`-typed encoder — port of F# `appendObj`. Recognised JS\n * primitives encode natively; everything else (arrays, plain objects, …) is\n * the `\"<opaque>\"` sentinel (§5). No reflection. `Date` → Unix seconds (§2\n * rule 11). Since Phase 429 the enumerated slot-typed payloads (options /\n * values / series / markers) bypass this via `binding`'s `staticEnc`\n * parameter, and fuaran#665 moved grid/chart rows onto `staticRowSeq`; this\n * catch-all is the residual-opaque boundary for the remaining genuinely\n * host-typed payloads — and the best-effort CELL encoder inside a typed row,\n * where a nested array/object cell re-encodes as `\"<opaque>\"`.\n */\nconst objValue = (v: unknown): string => {\n if (v === null || v === undefined) return 'null';\n if (typeof v === 'string') return str(v);\n if (typeof v === 'boolean') return bool(v);\n if (typeof v === 'number') return num(v);\n if (v instanceof Date) return num(Math.trunc(v.getTime() / 1000));\n return OPAQUE;\n};\n\n/**\n * A structured `JsonValue` payload (Custom props, action payloads, I18n args, a\n * wire-form `UpdateProp` value) — port of F# `encodeJVal`. Renders the value\n * FAITHFULLY at any nesting depth: objects with Ordinal-sorted keys, arrays in\n * order, the pinned number layout — no `\"<opaque>\"` collapse. (The wire model\n * has no null, so a null leaf is unrepresentable; the decoder rejects it, so it\n * cannot reach here from a decoded value.) Keeping this distinct from `objValue`\n * — which stays the best-effort encoder for the genuinely obj-erased seams\n * (`Binding.Static`) — is exactly the F# `encodeJVal` vs `appendObj` split.\n */\nconst jsonValue = (v: JsonValue): string => {\n if (v === null) return 'null';\n if (typeof v === 'string') return str(v);\n if (typeof v === 'boolean') return bool(v);\n if (typeof v === 'number') return num(v);\n if (Array.isArray(v)) return jArray(v.map(jsonValue));\n return jObject(\n Object.entries(v as Record<string, JsonValue>).map(([k, x]) => [k, jsonValue(x)] as const),\n );\n};\n\n/** A `Map<string, JsonValue>` — port of F# `encodeMap` (structural keys, faithful per-value). */\nconst jsonMap = (m: Readonly<Record<string, JsonValue>>): string =>\n jObject(Object.entries(m).map(([k, v]) => [k, jsonValue(v)] as const));\n\n/**\n * Re-render a parsed JSON AST (parse.ts) to canonical wire bytes — Ordinal-\n * sorted object keys (§2 rule 2), the §2 rule-5 number layout, the §2 rule-6\n * string escapes — using the very primitives the encoder uses. For input that\n * was already canonical, `renderAstCanonical(parse(x)) === x`. This is the\n * §15 wire-versioning building block: it re-emits a preserved `Unknown`\n * payload byte-for-byte (must-ignore-but-preserve, WIRE_FORMAT.md §15.3) and\n * renders the `$profile` / `$payload` envelope. Mirrors F#\n * `Fuaran.Core.Wire.Canon.render` composed over the same JVal shape.\n */\nexport const renderAstCanonical = (ast: JsonAst): string => {\n switch (ast.kind) {\n case 'JNull':\n return 'null';\n case 'JBool':\n return bool(ast.value);\n case 'JNumber':\n return num(ast.value);\n case 'JString':\n return str(ast.value);\n case 'JArray':\n return jArray(ast.items.map(renderAstCanonical));\n case 'JObject':\n return jObject([...ast.fields].map(([k, v]) => [k, renderAstCanonical(v)] as const));\n }\n};\n\n// ─── Compute layer (Phase 282 / 284) — DataSource / Transform / ColExpr / Cell ─\n//\n// Byte-identical port of the Fuaran.Core columnar + dataframe-algebra wire codecs\n// (`Fuaran.Core.ColumnCodec` / `Fuaran.Core.DataFrameCodec`), which render under\n// the SAME canonical `$type` discipline this encoder uses (Ordinal-sorted keys,\n// the pinned float layout, `caseObj` for `$type`-tagged DU positions). Verified\n// against nodes/grid-transform.json in the workspace corpus. The host\n// `Binding.Transform` (below) splices a pipeline array + a DataSource object —\n// `$type` (0x24) sorts before `pipeline` < `source`, so the composite stays\n// canonical.\n\n/** A JInt-shaped integer literal (decimal, no point/exponent) — port of F# `string i`. */\nconst intLit = (n: number): string => String(Math.trunc(n));\n\n/** Cell type tags map 1:1 onto the in-memory `ColumnType` values (canonical wire tags). */\ntype WireColumnType = ColumnType;\n\n/**\n * The present-cell JSON value for a column of type `ty` — port of F#\n * `ColumnCodec.cellJson`. A `Null` cell emits the type-default placeholder (the\n * validity mask records the nullity); an `Int` widens to a float in a float\n * column; every other present cell encodes as-is.\n */\nconst columnCellWire = (ty: WireColumnType, c: Cell): string => {\n switch (c.kind) {\n case 'Null':\n // Cell.defaultFor ty, then cellJson: int→\"0\", float→\"0\", bool→false, others→\"\".\n return ty === 'bool' ? bool(false) : ty === 'int' || ty === 'float' ? '0' : str('');\n case 'Int':\n return ty === 'float' ? num(c.value) : intLit(c.value);\n case 'Float':\n return num(c.value);\n case 'Bool':\n return bool(c.value);\n case 'Str':\n case 'Date':\n case 'Timestamp':\n return str(c.value);\n default:\n return assertNever(c);\n }\n};\n\nconst dataColumnJson = (c: DataColumn): string =>\n jObject([\n ['values', jArray(c.cells.map((cell) => columnCellWire(c.type, cell)))],\n ['validity', jArray(c.cells.map((cell) => bool(cell.kind !== 'Null')))],\n ]);\n\nconst schemaJson = (\n schema: readonly { readonly name: string; readonly type: ColumnType }[],\n): string =>\n jArray(\n schema.map((e) =>\n jObject([\n ['name', str(e.name)],\n ['type', str(e.type)],\n ]),\n ),\n );\n\n/** Encode a `DataSource` — port of F# `ColumnCodec.encodeJson`. */\nconst dataSource = (src: DataSource): string => {\n if (src.kind === 'Ref') {\n return jObject([\n ['schema', jArray([])],\n ['ref', str(src.name)],\n ]);\n }\n const t = src.table;\n const columns: Field[] = t.schema.map((e) => {\n const col: DataColumn = t.columns.find((c) => c.name === e.name) ?? {\n name: e.name,\n type: 'string',\n cells: [],\n };\n return [e.name, dataColumnJson(col)];\n });\n return jObject([\n ['schema', schemaJson(t.schema)],\n ['columns', jObject(columns)],\n ]);\n};\n\n/** A type-tagged literal cell — port of F# `DataFrameCodec.cellToJson`. */\nconst cellLit = (c: Cell): string => {\n switch (c.kind) {\n case 'Null':\n return caseObj('Null', []);\n case 'Int':\n return caseObj('Int', [['value', intLit(c.value)]]);\n case 'Float':\n return caseObj('Float', [['value', num(c.value)]]);\n case 'Bool':\n return caseObj('Bool', [['value', bool(c.value)]]);\n case 'Str':\n return caseObj('Str', [['value', str(c.value)]]);\n case 'Date':\n return caseObj('Date', [['value', str(c.value)]]);\n case 'Timestamp':\n return caseObj('Timestamp', [['value', str(c.value)]]);\n default:\n return assertNever(c);\n }\n};\n\n/** A `ColExpr` — port of F# `DataFrameCodec.encodeExpr`. */\nconst colExpr = (e: ColExpr): string => {\n switch (e.kind) {\n case 'col':\n return caseObj('col', [['name', str(e.name)]]);\n case 'param':\n return caseObj('param', [['name', str(e.name)]]);\n case 'lit':\n return caseObj('lit', [['cell', cellLit(e.cell)]]);\n case 'binary':\n return caseObj('binary', [\n ['op', str(e.op)],\n ['left', colExpr(e.left)],\n ['right', colExpr(e.right)],\n ]);\n case 'not':\n return caseObj('not', [['expr', colExpr(e.expr)]]);\n case 'coalesce':\n return caseObj('coalesce', [['exprs', jArray(e.exprs.map(colExpr))]]);\n case 'case':\n return caseObj('case', [\n [\n 'cases',\n jArray(\n e.cases.map((c) =>\n jObject([\n ['when', colExpr(c.when)],\n ['then', colExpr(c.then)],\n ]),\n ),\n ),\n ],\n ['else', colExpr(e.else)],\n ]);\n case 'cast':\n return caseObj('cast', [\n ['type', str(e.type)],\n ['expr', colExpr(e.expr)],\n ]);\n case 'apply':\n return caseObj('apply', [\n ['fn', str(e.fn)],\n ['args', jArray(e.args.map(colExpr))],\n ]);\n case 'in':\n return caseObj('in', [\n ['expr', colExpr(e.expr)],\n ['items', jArray(e.items.map(colExpr))],\n ]);\n case 'inParam':\n return caseObj('in', [\n ['expr', colExpr(e.expr)],\n ['param', str(e.param)],\n ]);\n case 'isNull':\n return caseObj('isNull', [['expr', colExpr(e.expr)]]);\n default:\n return assertNever(e);\n }\n};\n\nconst pairJson = (p: ColPair): string =>\n jObject([\n ['a', str(p.a)],\n ['b', str(p.b)],\n ]);\n\nconst aggJson = (a: Agg): string =>\n jObject([\n ['name', str(a.name)],\n ['fn', str(a.fn)],\n ['of', str(a.of)],\n ]);\n\nconst orderJson = (s: SortKey): string =>\n jObject([\n ['col', str(s.col)],\n ['dir', str(s.dir)],\n ]);\n\n/** A `Transform` step — port of F# `DataFrameCodec.encodeTransform`. */\nconst transformStep = (t: Transform): string => {\n switch (t.kind) {\n case 'filter':\n return caseObj('filter', [['pred', colExpr(t.pred)]]);\n case 'project':\n return caseObj('project', [['cols', jArray(t.cols.map(pairJson))]]);\n case 'derive':\n return caseObj('derive', [\n ['name', str(t.name)],\n ['expr', colExpr(t.expr)],\n ]);\n case 'groupBy':\n return caseObj('groupBy', [\n ['keys', jArray(t.keys.map(str))],\n ['aggs', jArray(t.aggs.map(aggJson))],\n ]);\n case 'join':\n return caseObj('join', [\n ['source', dataSource(t.source)],\n ['on', jArray(t.on.map(pairJson))],\n ['how', str(t.how)],\n ]);\n case 'window':\n return caseObj('window', [\n ['partitionBy', jArray(t.spec.partitionBy.map(str))],\n ['orderBy', jArray(t.spec.orderBy.map(orderJson))],\n ['fn', str(t.spec.fn)],\n ['of', str(t.spec.of)],\n ['as', str(t.spec.as)],\n ]);\n case 'pivot':\n return caseObj('pivot', [\n ['index', jArray(t.spec.index.map(str))],\n ['on', str(t.spec.on)],\n ['values', str(t.spec.values)],\n ['agg', str(t.spec.agg)],\n ]);\n case 'unpivot':\n return caseObj('unpivot', [\n ['idVars', jArray(t.idVars.map(str))],\n ['valueVars', jArray(t.valueVars.map(str))],\n ]);\n case 'sort':\n return caseObj('sort', [['by', jArray(t.by.map(orderJson))]]);\n case 'distinct':\n return caseObj('distinct', []);\n case 'limit':\n return caseObj('limit', [\n ['n', intLit(t.n)],\n ['offset', intLit(t.offset)],\n ]);\n case 'union':\n return caseObj('union', [['source', dataSource(t.source)]]);\n default:\n return assertNever(t);\n }\n};\n\n/** Encode a `DataSource` to its canonical-JSON string (Compute layer). */\nexport const encodeDataSource = (src: DataSource): string => dataSource(src);\n\n/** Encode a literal `Cell` to its `$type`-tagged canonical-JSON string. */\nexport const encodeCell = (c: Cell): string => cellLit(c);\n\n/** Encode a `ColExpr` to its canonical-JSON string. */\nexport const encodeColExpr = (e: ColExpr): string => colExpr(e);\n\n/** Encode a transform `pipeline` (ordered steps) to its canonical-JSON array string. */\nexport const encodePipeline = (pipeline: readonly Transform[]): string =>\n jArray(pipeline.map(transformStep));\n\n/**\n * The canonical `args` array of a `Binding.Invoke` / `Action.Invoke` (Phase 283)\n * — scalar `(addr, value)` pairs `[{\"addr\":…,\"value\":…}]`. Shared by both arms.\n */\nconst invokeArgs = (args: readonly InvokeArg[]): string =>\n jArray(\n args.map((a) =>\n jObject([\n ['addr', str(a.addr)],\n ['value', str(a.value)],\n ]),\n ),\n );\n\n// ─── Bindings / actions / text ───────────────────────────────────────────────\n\nconst flushTrigger = (t: LocalFlushTrigger): string => {\n switch (t.kind) {\n case 'OnBlur':\n return caseObj('OnBlur', []);\n case 'OnSubmit':\n return caseObj('OnSubmit', []);\n case 'OnCommitAction':\n return caseObj('OnCommitAction', []);\n case 'OnDebounce':\n return caseObj('OnDebounce', [['milliseconds', num(t.milliseconds)]]);\n default:\n return assertNever(t);\n }\n};\n\n/**\n * Phase 429 — the typed-static-payload seam. `staticEnc` names the slot's own\n * encoding for the `T` payload positions (`Static.value` and\n * `State.defaultValue`; `Local.initialFrom` recurses with the same encoder).\n * The default is `objValue` (primitives + the `\"<opaque>\"` catch-all), so\n * untyped slots stay byte-identical; the enumerated slot-typed call sites pass\n * the typed encoders below. Mirror of the F# `encodeBindingWith` parameter.\n */\nconst binding = <T>(b: Binding<T>, staticEnc: (v: T) => string = objValue): string => {\n switch (b.kind) {\n case 'Static': {\n // Phase 677 — absence is structural: a binding carrying no value omits the\n // key rather than emitting JSON null, for which the wire model has no case.\n const valueFields: readonly Field[] =\n b.value === null || b.value === undefined ? [] : [['value', staticEnc(b.value)]];\n return caseObj('Static', valueFields);\n }\n case 'Query': {\n // Phase 421 — `dependsOn` rides as a string array, omitted-when-empty.\n // 0.2.0 — the `accessor` closure sentinel is OFF the wire (decoders\n // never read it; pure token weight).\n const dependsOnFields: readonly Field[] =\n b.dependsOn !== undefined && b.dependsOn.length > 0\n ? [['dependsOn', jArray(b.dependsOn.map((s) => str(s)))]]\n : [];\n return caseObj('Query', [...dependsOnFields, ['name', str(b.name)]]);\n }\n case 'Filter': {\n // 0.2.0 — `defaultValue` rides the wire when present (typed via the\n // slot's static encoder, mirroring `State.defaultValue`); omitted\n // otherwise, keeping the plain chip byte-stable.\n const defaultField: readonly Field[] =\n b.defaultValue !== undefined ? [['defaultValue', staticEnc(b.defaultValue as T)]] : [];\n return caseObj('Filter', [...defaultField, ['name', str(b.name)]]);\n }\n case 'Selection': {\n // 0.2.0 — the `accessor` sentinel is off the wire (same as Query).\n // 0.2.9 (Phase 629) — `defaultValue` rides the wire when present,\n // exactly the `Filter.defaultValue` convention; omitted when absent so\n // the pre-629 minimal form stays byte-identical.\n // 0.2.10 (Phase 632) — `field` (the declarative row-field projection)\n // rides the same convention; the accessor closure is not serialisable,\n // so the carried name is the encode source.\n const defaultField: readonly Field[] =\n b.defaultValue !== undefined ? [['defaultValue', staticEnc(b.defaultValue)]] : [];\n const fieldField: readonly Field[] = b.field !== undefined ? [['field', str(b.field)]] : [];\n return caseObj('Selection', [...defaultField, ...fieldField, ['nodeId', str(b.nodeId)]]);\n }\n case 'State': {\n // Phase 677 — same rule as `Static`: absence omits, never null.\n const defaultFields: readonly Field[] =\n b.defaultValue === null || b.defaultValue === undefined\n ? []\n : [['defaultValue', staticEnc(b.defaultValue)]];\n return caseObj('State', [...defaultFields, ['key', str(b.key)]]);\n }\n case 'Computed':\n return caseObj('Computed', [['fn', CLOSURE]]);\n // No wire fields: the instant is host-furnished at resolve time.\n case 'Now':\n return caseObj('Now', []);\n case 'I18n': {\n const fields: Field[] = [];\n if (b.args !== undefined) {\n fields.push([\n 'args',\n jObject(Object.entries(b.args).map(([k, v]) => [k, binding(v)] as const)),\n ]);\n }\n fields.push(['key', str(b.key)]);\n return caseObj('I18n', fields);\n }\n case 'Local':\n return caseObj('Local', [\n ['flushOn', flushTrigger(b.local.flushOn)],\n ['format', CLOSURE],\n ['initialFrom', binding(b.local.initialFrom, staticEnc)],\n ['onCommit', CLOSURE],\n ['parse', CLOSURE],\n ]);\n case 'Format':\n // Phase 102: source is always a numeric Binding; format / locale are\n // bounded DUs. Keys sort to format < locale < source.\n return caseObj('Format', [\n ['format', formatIntent(b.format)],\n ['locale', localeSource(b.locale)],\n ['source', binding(b.source)],\n ]);\n case 'Transform': {\n // Phase 282 — the Compute layer. `pipeline` + `source` are Core values\n // whose codecs render under the SAME canonical `$type` discipline; `$type`\n // (0x24) sorts before `params` < `pipeline` < `source`, so the composite is canonical.\n // Phase 424 — `params` binds `ColExpr.Param` names to scalar `Binding` sources;\n // omitted-when-empty so a param-free Transform is byte-identical to the Phase 282 wire.\n const paramFields: readonly Field[] =\n b.params !== undefined && b.params.length > 0\n ? [\n [\n 'params',\n jArray(\n b.params.map((p) =>\n jObject([\n ['from', binding(p.from)],\n ['name', str(p.name)],\n ]),\n ),\n ),\n ],\n ]\n : [];\n return caseObj('Transform', [\n ...paramFields,\n ['pipeline', jArray(b.pipeline.map(transformStep))],\n ['source', dataSource(b.source)],\n ]);\n }\n case 'Invoke':\n // Phase 283 — host-registered capability for a value; the body never on the wire.\n return caseObj('Invoke', [\n ['args', invokeArgs(b.args)],\n ['capabilityId', str(b.capabilityId)],\n ]);\n default:\n return assertNever(b);\n }\n};\n\nconst action = <T>(a: Action<T>): string => {\n switch (a.kind) {\n case 'Dispatch':\n // 0.2.0 — the `msg` closure sentinel is off the wire (decoders never\n // read it).\n return caseObj('Dispatch', []);\n case 'Call': {\n // Phase 428: `onResult` rides the wire only when present (byte-identical\n // sentinel); `into` is the declarative result target, omitted when absent.\n const fields: Field[] = [['endpoint', str(a.endpoint)]];\n if (a.into !== undefined) {\n fields.push([\n 'into',\n a.into.kind === 'State'\n ? caseObj('State', [['key', str(a.into.key)]])\n : caseObj('Query', [['name', str(a.into.name)]]),\n ]);\n }\n if (a.onResult !== undefined) fields.push(['onResult', CLOSURE]);\n return caseObj('Call', fields);\n }\n case 'Notify':\n return caseObj('Notify', [\n ['channel', str(a.channel)],\n ['payload', jsonValue(a.payload)],\n ]);\n case 'Navigate':\n return caseObj('Navigate', [['route', str(a.route)]]);\n case 'SetState':\n return caseObj('SetState', [\n ['key', str(a.key)],\n ['value', jsonValue(a.value)],\n ]);\n case 'AiTool':\n return caseObj('AiTool', [\n ['args', jsonValue(a.args)],\n ['toolName', str(a.toolName)],\n ]);\n case 'Chain':\n return caseObj('Chain', [['ops', jArray(a.actions.map(action))]]);\n case 'CommitLocal':\n return caseObj('CommitLocal', [['nodeId', str(a.nodeId)]]);\n case 'WriteToClipboard':\n return caseObj('WriteToClipboard', [['text', str(a.text)]]);\n case 'ReadFileBody':\n // Phase 136 — only file.id + encoding cross the wire; the blob is\n // host-held (file.handle) and onRead is the closure sentinel (§4).\n // Keys sort to encoding < fileRef < onRead.\n return caseObj('ReadFileBody', [\n ['encoding', str(a.encoding)],\n ['fileRef', str(a.file.id)],\n ['onRead', CLOSURE],\n ]);\n case 'Invoke':\n // Phase 283 — capability invoked as an effect; same wire shape as Binding.Invoke.\n return caseObj('Invoke', [\n ['args', invokeArgs(a.args)],\n ['capabilityId', str(a.capabilityId)],\n ]);\n default:\n return assertNever(a);\n }\n};\n\nconst textSource = (t: TextSource): string => {\n switch (t.kind) {\n case 'Literal':\n // 0.2.0 — the CANONICAL Literal form is the bare JSON string; the\n // {\"$type\":\"Literal\"} envelope stays decode-accepted.\n return str(t.value);\n case 'Bound':\n return caseObj('Bound', [['binding', binding(t.binding)]]);\n case 'I18n':\n return caseObj('I18n', [\n ['args', jsonMap(t.args)],\n ['key', str(t.key)],\n ]);\n default:\n return assertNever(t);\n }\n};\n\nconst cellFormat = (f: CellFormat): string => {\n switch (f.kind) {\n case 'None':\n return caseObj('None', []);\n case 'Number':\n return caseObj('Number', f.decimals !== undefined ? [['decimals', num(f.decimals)]] : []);\n case 'Currency':\n return caseObj('Currency', [['code', str(f.code)]]);\n case 'Percent':\n return caseObj('Percent', f.decimals !== undefined ? [['decimals', num(f.decimals)]] : []);\n case 'SignificantDigits':\n return caseObj('SignificantDigits', [['digits', num(f.digits)]]);\n case 'Date':\n return caseObj('Date', [['format', str(f.format)]]);\n case 'Custom':\n return caseObj('Custom', [['fn', CLOSURE]]);\n default:\n return assertNever(f);\n }\n};\n\nconst formatIntent = (f: Format): string => {\n switch (f.kind) {\n case 'Number':\n return caseObj('Number', f.decimals !== undefined ? [['decimals', num(f.decimals)]] : []);\n case 'Currency':\n return caseObj('Currency', [['isoCode', str(f.isoCode)]]);\n case 'Percent':\n return caseObj('Percent', f.decimals !== undefined ? [['decimals', num(f.decimals)]] : []);\n case 'Date':\n return caseObj('Date', [['dateStyle', str(f.dateStyle)]]);\n case 'RelativeTime':\n return caseObj('RelativeTime', [['unit', str(f.unit)]]);\n default:\n return assertNever(f);\n }\n};\n\nconst localeSource = (l: LocaleSource): string => {\n switch (l.kind) {\n case 'Ambient':\n return caseObj('Ambient', []);\n case 'Explicit':\n return caseObj('Explicit', [['tag', str(l.tag)]]);\n default:\n return assertNever(l);\n }\n};\n\nconst columnWidth = (w: ColumnWidth): string => {\n switch (w.kind) {\n case 'Auto':\n return caseObj('Auto', []);\n case 'Fixed':\n return caseObj('Fixed', [['pixels', num(w.pixels)]]);\n case 'Flex':\n return caseObj('Flex', [['weight', num(w.weight)]]);\n default:\n return assertNever(w);\n }\n};\n\n// ─── Display specs ───────────────────────────────────────────────────────────\n\n// Phase 460 — the stylistic fields are emitted only when non-default (identity:\n// CellFormat.None / ColumnWidth.Auto / tone Default / weight Standard / emphasis\n// Normal), mirroring the F# encoder + the role/voice precedent. `jObject` sorts\n// keys, so push order is irrelevant.\nconst pushToneOptional = (fields: Field[], t: ToneVariant): void => {\n if (t !== 'Default') fields.push(['tone', str(t)]);\n};\nconst pushWeightOptional = (fields: Field[], w: StyleWeight): void => {\n if (w !== 'Standard') fields.push(['weight', str(w)]);\n};\nconst pushEmphasisOptional = (fields: Field[], e: Emphasis): void => {\n if (e !== 'Normal') fields.push(['emphasis', str(e)]);\n};\nconst pushCellFormatOptional = (fields: Field[], key: string, f: CellFormat): void => {\n if (f.kind !== 'None') fields.push([key, cellFormat(f)]);\n};\nconst pushColumnWidthOptional = (fields: Field[], key: string, w: ColumnWidth): void => {\n if (w.kind !== 'Auto') fields.push([key, columnWidth(w)]);\n};\n\nconst metricSpec = (s: MetricSpec): string => {\n const fields: Field[] = [\n ['label', textSource(s.label)],\n ['value', binding(s.value)],\n ];\n pushCellFormatOptional(fields, 'format', s.format);\n pushToneOptional(fields, s.tone);\n pushWeightOptional(fields, s.weight);\n pushEmphasisOptional(fields, s.emphasis);\n if (s.trend !== undefined) fields.push(['trend', binding(s.trend)]);\n if (s.trendFormat !== undefined) fields.push(['trendFormat', cellFormat(s.trendFormat)]);\n if (s.icon !== undefined) fields.push(['icon', str(s.icon)]);\n if (s.subtext !== undefined) fields.push(['subtext', textSource(s.subtext)]);\n return jObject(fields);\n};\n\nconst headingSpec = (s: HeadingSpec): string =>\n jObject([\n ['level', num(s.level)],\n ['text', textSource(s.text)],\n ['variant', str(s.variant)],\n ]);\n\nconst labelValueRowSpec = (s: LabelValueRowSpec): string => {\n // 0.2.2 — `emphasis` omitted-when-false (aligning with Fact); `format`\n // omitted-when-default (Phase 460).\n const fields: Field[] = [\n ...(s.emphasis ? ([['emphasis', bool(true)]] as const) : []),\n ['label', textSource(s.label)],\n ['value', binding(s.value)],\n ];\n pushCellFormatOptional(fields, 'format', s.format);\n if (s.help !== undefined) fields.push(['help', textSource(s.help)]);\n return jObject(fields);\n};\n\nconst factSpec = (s: FactSpec): string => {\n // New-kind posture: label + value required; emphasis omitted-when-false,\n // tone omitted-when-default (both boundaries); help/icon optional.\n const fields: Field[] = [\n ['label', textSource(s.label)],\n ['value', textSource(s.value)],\n ];\n if (s.emphasis) fields.push(['emphasis', bool(true)]);\n pushToneOptional(fields, s.tone);\n if (s.help !== undefined) fields.push(['help', textSource(s.help)]);\n if (s.icon !== undefined) fields.push(['icon', str(s.icon)]);\n return jObject(fields);\n};\n\nconst markdownSpec = (s: MarkdownSpec): string => jObject([['text', textSource(s.text)]]);\n\nconst badgeSpec = (s: BadgeSpec): string =>\n jObject([\n ['label', textSource(s.label)],\n ['variant', str(s.variant)],\n ]);\n\nconst linkSpec = (s: LinkSpec): string => {\n const fields: Field[] = [\n ['href', binding(s.href)],\n ['label', textSource(s.label)],\n ['download', bool(s.download)],\n ];\n if (s.rel !== undefined) fields.push(['rel', str(s.rel)]);\n if (s.target !== undefined) fields.push(['target', str(s.target)]);\n return jObject(fields);\n};\n\nconst imageSpec = (s: ImageSpec): string =>\n jObject([\n ['alt', textSource(s.alt)],\n ['src', binding(s.src)],\n ['variant', str(s.variant)],\n ]);\n\nconst listSpec = (s: ListSpec): string =>\n jObject([\n ['items', jArray(s.items.map(textSource))],\n ['ordered', bool(s.ordered)],\n ]);\n\nconst toastSpec = (s: ToastSpec): string => {\n // Phase 460 — `tone` omitted-when-default.\n const fields: Field[] = [\n // 0.2.0 omitted-when-TRUE (a Toast is dismissable unless said otherwise).\n ...(s.dismissable ? [] : ([['dismissable', bool(false)]] as const)),\n ['message', textSource(s.message)],\n ['open', binding(s.open)],\n ];\n pushToneOptional(fields, s.tone);\n return jObject(fields);\n};\n\n/** `MathDisplay` bare-string enum (WIRE_FORMAT.md §3.5). */\nconst mathDisplay = (d: MathDisplay): string => str(d);\n\nconst codeBlockSpec = (s: CodeBlockSpec): string =>\n jObject([\n ['code', str(s.code)],\n ['copyable', bool(s.copyable)],\n // highlightLines is always present (possibly empty); ints render as decimal\n // literals (port of F# `int_`), not the float layout.\n ['highlightLines', jArray(s.highlightLines.map(intLit))],\n ['language', str(s.language)],\n ['lineNumbers', bool(s.lineNumbers)],\n ]);\n\nconst mathSpec = (s: MathSpec): string =>\n jObject([\n ['display', mathDisplay(s.display)],\n ['source', str(s.source)],\n ]);\n\nconst sparklineSpec = (s: SparklineSpec): string =>\n jObject([['source', binding(s.source, staticFloatSeq)]]);\n\nconst skeletonSpec = (s: SkeletonSpec): string => jObject([['rows', num(s.rows)]]);\n\nconst calloutSpec = (s: CalloutSpec): string => {\n // Phase 460 — `tone` omitted-when-default.\n const fields: Field[] = [\n ['body', textSource(s.body)],\n // 0.2.0 omitted-when-false.\n ...(s.dismissable ? ([['dismissable', bool(true)]] as const) : []),\n ];\n pushToneOptional(fields, s.tone);\n if (s.heading !== undefined) fields.push(['heading', textSource(s.heading)]);\n if (s.icon !== undefined) fields.push(['icon', str(s.icon)]);\n return jObject(fields);\n};\n\nconst progressSpec = (s: ProgressSpec): string => {\n // Phase 460 — `tone` omitted-when-default.\n const fields: Field[] = [\n ['fraction', binding(s.fraction)],\n // 0.2.0 omitted-when-false.\n ...(s.indeterminate ? ([['indeterminate', bool(true)]] as const) : []),\n ];\n pushToneOptional(fields, s.tone);\n if (s.label !== undefined) fields.push(['label', textSource(s.label)]);\n if (s.caveat !== undefined) fields.push(['caveat', textSource(s.caveat)]);\n return jObject(fields);\n};\n\n// ─── Drawing (Phase 524) ─────────────────────────────────────────────────────\n\nconst drawPoint = (p: DrawPoint): string =>\n jObject([\n ['x', num(p.x)],\n ['y', num(p.y)],\n ]);\n\nconst viewBox = (v: ViewBox): string =>\n jObject([\n ['height', num(v.height)],\n ['minX', num(v.minX)],\n ['minY', num(v.minY)],\n ['width', num(v.width)],\n ]);\n\nconst drawStyle = (s: DrawStyle): string => {\n const fields: Field[] = [];\n if (s.fill !== undefined) fields.push(['fill', binding(s.fill)]);\n if (s.opacity !== undefined) fields.push(['opacity', binding(s.opacity)]);\n if (s.stroke !== undefined) fields.push(['stroke', binding(s.stroke)]);\n if (s.strokeWidth !== undefined) fields.push(['strokeWidth', binding(s.strokeWidth)]);\n // Text-only fields (Phase 528.1) — omitted when unset; jObject sorts keys.\n if (s.textAnchor !== undefined) fields.push(['textAnchor', str(s.textAnchor)]);\n if (s.fontSize !== undefined) fields.push(['fontSize', num(s.fontSize)]);\n if (s.emphasis !== undefined) fields.push(['emphasis', str(s.emphasis)]);\n if (s.fontFamily !== undefined) fields.push(['fontFamily', str(s.fontFamily)]);\n // Phase 642 — keyed mark identity; omitted when unset.\n if (s.markId !== undefined) fields.push(['markId', str(s.markId)]);\n return jObject(fields);\n};\n\nconst curveCommand = (c: CurveCommand): string => {\n switch (c.kind) {\n case 'MoveTo':\n return caseObj('MoveTo', [['to', drawPoint(c.to)]]);\n case 'LineTo':\n return caseObj('LineTo', [['to', drawPoint(c.to)]]);\n case 'CubicTo':\n return caseObj('CubicTo', [\n ['control1', drawPoint(c.control1)],\n ['control2', drawPoint(c.control2)],\n ['to', drawPoint(c.to)],\n ]);\n case 'QuadraticTo':\n return caseObj('QuadraticTo', [\n ['control', drawPoint(c.control)],\n ['to', drawPoint(c.to)],\n ]);\n case 'Close':\n return caseObj('Close', []);\n }\n};\n\nconst shape = (sh: Shape): string => {\n switch (sh.kind) {\n case 'Group':\n return caseObj('Group', [\n ['children', jArray(sh.children.map(shape))],\n ['style', drawStyle(sh.style)],\n ]);\n case 'Rectangle': {\n const fields: Field[] = [\n ['height', num(sh.height)],\n ['style', drawStyle(sh.style)],\n ['width', num(sh.width)],\n ['x', num(sh.x)],\n ['y', num(sh.y)],\n ];\n if (sh.cornerRadius !== undefined) fields.push(['cornerRadius', num(sh.cornerRadius)]);\n return caseObj('Rectangle', fields);\n }\n case 'Line':\n return caseObj('Line', [\n ['style', drawStyle(sh.style)],\n ['x1', num(sh.x1)],\n ['x2', num(sh.x2)],\n ['y1', num(sh.y1)],\n ['y2', num(sh.y2)],\n ]);\n case 'Polyline':\n return caseObj('Polyline', [\n ['points', jArray(sh.points.map(drawPoint))],\n ['style', drawStyle(sh.style)],\n ]);\n case 'Polygon':\n return caseObj('Polygon', [\n ['points', jArray(sh.points.map(drawPoint))],\n ['style', drawStyle(sh.style)],\n ]);\n case 'Curve':\n return caseObj('Curve', [\n ['commands', jArray(sh.commands.map(curveCommand))],\n ['style', drawStyle(sh.style)],\n ]);\n case 'Circle':\n return caseObj('Circle', [\n ['cx', num(sh.cx)],\n ['cy', num(sh.cy)],\n ['r', num(sh.r)],\n ['style', drawStyle(sh.style)],\n ]);\n case 'Ellipse':\n return caseObj('Ellipse', [\n ['cx', num(sh.cx)],\n ['cy', num(sh.cy)],\n ['rx', num(sh.rx)],\n ['ry', num(sh.ry)],\n ['style', drawStyle(sh.style)],\n ]);\n case 'Label':\n return caseObj('Label', [\n ['style', drawStyle(sh.style)],\n ['text', textSource(sh.text)],\n ['x', num(sh.x)],\n ['y', num(sh.y)],\n ]);\n }\n};\n\nconst drawingSpec = (s: DrawingSpec): string => {\n const fields: Field[] = [\n ['shapes', jArray(s.shapes.map(shape))],\n ['style', drawStyle(s.style)],\n ['viewBox', viewBox(s.viewBox)],\n ];\n if (s.description !== undefined) fields.push(['description', textSource(s.description)]);\n if (s.title !== undefined) fields.push(['title', textSource(s.title)]);\n return jObject(fields);\n};\n\nconst displayKind = (d: DisplayKind): string => {\n switch (d.kind) {\n case 'Heading':\n return hoistSpec('Heading', headingSpec(d.spec));\n case 'Markdown':\n return hoistSpec('Markdown', markdownSpec(d.spec));\n case 'Metric':\n return hoistSpec('Metric', metricSpec(d.spec));\n case 'Badge':\n return hoistSpec('Badge', badgeSpec(d.spec));\n case 'Sparkline':\n return hoistSpec('Sparkline', sparklineSpec(d.spec));\n case 'Callout':\n return hoistSpec('Callout', calloutSpec(d.spec));\n case 'Progress':\n return hoistSpec('Progress', progressSpec(d.spec));\n case 'Skeleton':\n return hoistSpec('Skeleton', skeletonSpec(d.spec));\n case 'LabelValueRow':\n return hoistSpec('LabelValueRow', labelValueRowSpec(d.spec));\n case 'Fact':\n return hoistSpec('Fact', factSpec(d.spec));\n case 'Link':\n return hoistSpec('Link', linkSpec(d.spec));\n case 'Image':\n return hoistSpec('Image', imageSpec(d.spec));\n case 'List':\n return hoistSpec('List', listSpec(d.spec));\n case 'Toast':\n return hoistSpec('Toast', toastSpec(d.spec));\n case 'CodeBlock':\n return hoistSpec('CodeBlock', codeBlockSpec(d.spec));\n case 'Math':\n return hoistSpec('Math', mathSpec(d.spec));\n case 'Drawing':\n return hoistSpec('Drawing', drawingSpec(d.spec));\n default:\n return assertNever(d);\n }\n};\n\n// ─── Input specs ─────────────────────────────────────────────────────────────\n\n/**\n * Phase 596 — the auto-bind context for a control's `value` slot, mirroring\n * the decoder's synthesis exactly: a `value` that is the context's exact\n * auto-binding is OMITTED — `Filter(name)` (no defaultValue) on a chip,\n * `State(field id, typed placeholder)` on a form field — so the canonical\n * minimal control carries no `value` key. Any other binding always emits.\n */\ntype ControlAutoBind =\n | { readonly kind: 'filter'; readonly name: string }\n | { readonly kind: 'form'; readonly id: string }\n | undefined;\n\nconst formFieldKind = (autoBind: ControlAutoBind, k: FormFieldKind<unknown>): string => {\n // Handlers ride the wire only when present (Phase 426, generalising the\n // Phase 423 chip mechanics): a defined handler → the `\"<closure>\"`\n // sentinel (byte-identical to before); an omitted (declarative) handler\n // omits the key entirely and arms the renderer's write-back default.\n const handlerField = (name: string, h: unknown): readonly Field[] =>\n h !== undefined ? [[name, CLOSURE]] : [];\n const isAutoBinding = (b: Binding<unknown>, autoDefault: unknown): boolean => {\n if (autoBind?.kind === 'filter')\n return b.kind === 'Filter' && b.name === autoBind.name && b.defaultValue === undefined;\n if (autoBind?.kind === 'form')\n return (\n b.kind === 'State' &&\n b.key === autoBind.id &&\n // structural equality — the range placeholder is a tuple\n JSON.stringify(b.defaultValue) === JSON.stringify(autoDefault)\n );\n return false;\n };\n const valueField = <V>(\n b: Binding<V>,\n autoDefault: unknown,\n enc: (v: Binding<V>) => string,\n ): readonly Field[] =>\n isAutoBinding(b as Binding<unknown>, autoDefault) ? [] : [['value', enc(b)]];\n switch (k.kind) {\n case 'Text':\n return caseObj('Text', [\n ...handlerField('onChange', k.onChange),\n ...valueField(k.value, controlValueDefaults.text, (v) => binding(v)),\n ]);\n case 'Number':\n return caseObj('Number', [\n ...handlerField('onChange', k.onChange),\n ...valueField(k.value, controlValueDefaults.number, (v) => binding(v)),\n ]);\n case 'Checkbox':\n return caseObj('Checkbox', [\n ...handlerField('onToggle', k.onToggle),\n ...valueField(k.value, controlValueDefaults.checkbox, (v) => binding(v)),\n ]);\n case 'Toggle':\n return caseObj('Toggle', [\n ...handlerField('onToggle', k.onToggle),\n ...valueField(k.value, controlValueDefaults.checkbox, (v) => binding(v)),\n ]);\n case 'Choice':\n return caseObj('Choice', [\n ...handlerField('onChange', k.onChange),\n ['options', binding(k.options, staticSelectOptions)],\n ...valueField(k.value, controlValueDefaults.choice, (v) => binding(v, staticStringOpt)),\n ]);\n case 'Range': {\n // 0.2.0 — dual-thumb range (absorbed FilterKind.RangeFilter). The\n // Static pair rides as the typed {min, max} object; constraints\n // omitted when absent (rule 4).\n const staticPair = (p: readonly [number, number]): string =>\n jObject([\n ['max', num(p[1])],\n ['min', num(p[0])],\n ]);\n const fields: Field[] = [\n ...handlerField('onChange', k.onChange),\n ...valueField(k.value, controlValueDefaults.range, (v) =>\n v.kind === 'Static' ? staticPair(v.value) : binding(v, staticPair),\n ),\n ];\n if (k.constraints?.min !== undefined) fields.push(['min', num(k.constraints.min)]);\n if (k.constraints?.max !== undefined) fields.push(['max', num(k.constraints.max)]);\n if (k.constraints?.step !== undefined) fields.push(['step', num(k.constraints.step)]);\n return caseObj('Range', fields);\n }\n case 'RangedNumber': {\n const fields: Field[] = [\n ...handlerField('onChange', k.onChange),\n ...valueField(k.value, controlValueDefaults.number, (v) => binding(v)),\n ];\n if (k.constraints.min !== undefined) fields.push(['min', num(k.constraints.min)]);\n if (k.constraints.max !== undefined) fields.push(['max', num(k.constraints.max)]);\n if (k.constraints.step !== undefined) fields.push(['step', num(k.constraints.step)]);\n return caseObj('RangedNumber', fields);\n }\n case 'SegmentedChoice':\n return caseObj('SegmentedChoice', [\n ...handlerField('onChange', k.onChange),\n ['options', binding(k.options, staticSelectOptions)],\n ['orientation', str(k.orientation)],\n ...valueField(k.value, controlValueDefaults.choice, (v) => binding(v, staticStringOpt)),\n ]);\n case 'TextArea':\n return caseObj('TextArea', [\n ...handlerField('onChange', k.onChange),\n ['rows', num(k.rows)],\n ...valueField(k.value, controlValueDefaults.text, (v) => binding(v)),\n ]);\n case 'Date': {\n // Phase 288 — value is Binding<string> (ISO-8601); variant required;\n // min/max (ISO strings) + step (seconds) omitted when undefined, mirroring\n // RangedNumber's optional-constraint discipline.\n const fields: Field[] = [\n ...handlerField('onChange', k.onChange),\n ...valueField(k.value, controlValueDefaults.date, (v) => binding(v)),\n ['variant', str(k.variant)],\n ];\n if (k.constraints.min !== undefined) fields.push(['min', str(k.constraints.min)]);\n if (k.constraints.max !== undefined) fields.push(['max', str(k.constraints.max)]);\n if (k.constraints.step !== undefined) fields.push(['step', num(k.constraints.step)]);\n return caseObj('Date', fields);\n }\n case 'DateRange': {\n // Phase 725 — single-control date range. The Static pair rides as the\n // BARE {from, to} object (the Range posture, no envelope); min/max (ISO\n // strings) + step (seconds) are flat and bound both ends.\n const staticPair = (p: readonly [string, string]): string =>\n jObject([\n ['from', str(p[0])],\n ['to', str(p[1])],\n ]);\n const fields: Field[] = [\n ...handlerField('onChange', k.onChange),\n ...valueField(k.value, controlValueDefaults.dateRange, (v) =>\n v.kind === 'Static' ? staticPair(v.value) : binding(v, staticPair),\n ),\n ['variant', str(k.variant)],\n ];\n if (k.constraints.min !== undefined) fields.push(['min', str(k.constraints.min)]);\n if (k.constraints.max !== undefined) fields.push(['max', str(k.constraints.max)]);\n if (k.constraints.step !== undefined) fields.push(['step', num(k.constraints.step)]);\n return caseObj('DateRange', fields);\n }\n default:\n return assertNever(k);\n }\n};\n\nconst formField = (f: FormField<unknown>): string => {\n const fields: Field[] = [\n ['id', str(f.id)],\n ['kind', formFieldKind({ kind: 'form', id: f.id }, f.kind)],\n ['label', textSource(f.label)],\n ['required', bool(f.required)],\n ];\n if (f.help !== undefined) fields.push(['help', textSource(f.help)]);\n return jObject(fields);\n};\n\nconst formSpec = (s: FormSpec<unknown>): string => {\n const fields: Field[] = [\n ['fields', jArray(s.fields.map(formField))],\n ['onSubmit', action(s.onSubmit)],\n ['submitLabel', textSource(s.submitLabel)],\n ];\n // Phase 130: optional bound form-level disabled-state — emitted only when\n // present, mirroring ButtonSpec.disabled.\n if (s.disabled !== undefined) fields.push(['disabled', binding(s.disabled)]);\n return jObject(fields);\n};\n\nconst filterSpec = (s: FilterSpec<unknown>): string =>\n // 0.2.0 filters-unification: the chip's control is an ordinary\n // FormFieldKind; a `value` equal to the auto-binding `Filter(name)` is\n // omitted (see formFieldKind).\n jObject([\n ['kind', formFieldKind({ kind: 'filter', name: s.name }, s.field)],\n ['label', textSource(s.label)],\n ['name', str(s.name)],\n ]);\n\nconst buttonSpec = (s: ButtonSpec<unknown>): string => {\n const fields: Field[] = [\n ['label', textSource(s.label)],\n ['onClick', action(s.onClick)],\n ['variant', str(s.variant)],\n ];\n if (s.icon !== undefined) fields.push(['icon', str(s.icon)]);\n // Phase 129: optional bound disabled-state — emitted only when present,\n // mirroring MetricSpec.trend's optional-binding shape.\n if (s.disabled !== undefined) fields.push(['disabled', binding(s.disabled)]);\n return jObject(fields);\n};\n\nconst selectSpec = (s: SelectSpec<unknown>): string => {\n const fields: Field[] = [\n ['label', textSource(s.label)],\n ['source', binding(s.source, staticSelectOptions)],\n ['value', binding(s.value, staticStringOpt)],\n ];\n // Phase 426: `onChange` rides the wire only when present (byte-identical\n // sentinel); omitted, the renderer writes the chosen option back to a\n // writable `value` binding.\n if (s.onChange !== undefined) fields.push(['onChange', CLOSURE]);\n if (s.placeholder !== undefined) fields.push(['placeholder', textSource(s.placeholder)]);\n // Phase 130: optional bound disabled-state.\n if (s.disabled !== undefined) fields.push(['disabled', binding(s.disabled)]);\n // Phase 291: multi-select. `multiple` emitted ONLY when true and `values` ONLY\n // when present, so single-select wire stays byte-identical to pre-multi-select\n // fixtures (the degenerate case).\n if (s.multiple) fields.push(['multiple', bool(true)]);\n if (s.values !== undefined) fields.push(['values', binding(s.values, staticStringList)]);\n // Phase 426: the multi-select handler carries its own sentinel key when\n // present (previously never encoded).\n if (s.onChangeMulti !== undefined) fields.push(['onChangeMulti', CLOSURE]);\n return jObject(fields);\n};\n\nconst fileUploadSpec = (s: FileUploadSpec<unknown>): string => {\n const fields: Field[] = [\n ['accept', jArray(s.accept.map(str))],\n ['label', textSource(s.label)],\n ['multiple', bool(s.multiple)],\n ['onSelect', CLOSURE],\n ];\n // Phase 130: optional bound disabled-state.\n if (s.disabled !== undefined) fields.push(['disabled', binding(s.disabled)]);\n return jObject(fields);\n};\n\nconst inputKind = (i: InputKind<unknown>): string => {\n switch (i.kind) {\n case 'Form':\n return hoistSpec('Form', formSpec(i.spec));\n case 'Filters':\n return caseObj('Filters', [['items', jArray(i.specs.map(filterSpec))]]);\n case 'Button':\n return hoistSpec('Button', buttonSpec(i.spec));\n case 'FileUpload':\n return hoistSpec('FileUpload', fileUploadSpec(i.spec));\n case 'Select':\n return hoistSpec('Select', selectSpec(i.spec));\n default:\n return assertNever(i);\n }\n};\n\n// ─── Typed Static payload encoders (Phase 429) ───────────────────────────────\n//\n// The `objValue` catch-all collapses non-primitive `Binding.Static` payloads to\n// `\"<opaque>\"`. For the shapes the language itself enumerates — options,\n// values, series, markers — the encoder emits the typed forms the decoders\n// parse, passed per slot through `binding`'s `staticEnc` parameter (the mirror\n// of F# `encodeBindingWith`). fuaran#665 retired the last residual payload:\n// grid/chart ROWS now ride as typed row objects too (`staticRowSeq`), leaving\n// `\"<opaque>\"` only at the CELL seam (WIRE_FORMAT.md §\"Typed Static payloads\").\n\nconst selectOption = (o: SelectOption): string =>\n jObject([\n ['label', textSource(o.label)],\n ['value', str(o.value)],\n ]);\n\nconst staticSelectOptions = (v: readonly SelectOption[]): string => jArray(v.map(selectOption));\n\nconst staticStringOpt = (v: string | undefined): string => (v === undefined ? 'null' : str(v));\n\nconst staticStringList = (v: readonly string[]): string => jArray(v.map(str));\n\nconst staticFloatSeq = (v: readonly number[]): string => jArray(v.map(num));\n\nconst staticMarkerSeq = (v: readonly MapMarker[]): string => jArray(v.map(mapMarker));\n\n// fuaran#665 — the typed row-source encoding. A grid/chart rows payload rides\n// the wire as a JSON array of row objects (Ordinal-sorted keys via `jObject`)\n// with best-effort scalar cells: the §2 rule-11 recognised set encodes natively\n// through `objValue` (string / bool / number; `Date` → Unix seconds), a\n// null/undefined cell is OMITTED (rule 4: absence is structural, never\n// `\"k\":null`), and a nested array/object cell is the residual `\"<opaque>\"`\n// sentinel — the opaque boundary narrowed from the whole payload to the cell\n// seam. Mirror of F# `Fuaran.Core.RowCodec.encodeRows`.\nconst rowValue = (row: unknown): string => {\n // A non-record element is unrepresentable from the typed authoring surface\n // (the F# slot is statically `Row seq`) and rejected by the decoder, so this\n // guard only keeps the encoder total.\n if (row === null || typeof row !== 'object') return '{}';\n const fields: Field[] = [];\n for (const [k, v] of Object.entries(row)) {\n if (v === null || v === undefined) continue;\n fields.push([k, objValue(v)]);\n }\n return jObject(fields);\n};\n\nconst staticRowSeq = (v: readonly unknown[]): string => jArray(v.map(rowValue));\n\n// ─── Visualisation specs ─────────────────────────────────────────────────────\n\nconst cellKindErased = (k: CellKindErased<unknown>): string => {\n switch (k.kind) {\n case 'Text':\n return caseObj('Text', []);\n case 'Numeric':\n return caseObj('Numeric', []);\n case 'Date':\n return caseObj('Date', []);\n case 'Editable':\n return caseObj('Editable', [['onEdit', CLOSURE]]);\n case 'Checkbox':\n return caseObj('Checkbox', [\n ['get', CLOSURE],\n ['onToggle', CLOSURE],\n ]);\n case 'Button':\n return caseObj('Button', [\n ['label', textSource(k.label)],\n ['onClick', CLOSURE],\n ]);\n case 'ButtonGroup':\n return caseObj('ButtonGroup', [\n [\n 'buttons',\n jArray(\n k.buttons.map(([label]) =>\n jObject([\n ['label', textSource(label)],\n ['onClick', CLOSURE],\n ]),\n ),\n ),\n ],\n ]);\n case 'Link':\n return caseObj('Link', [\n ['hrefFn', CLOSURE],\n ['labelFn', CLOSURE],\n ]);\n case 'Pill':\n return caseObj('Pill', [\n ['labelFn', CLOSURE],\n ['toneFn', CLOSURE],\n ]);\n // Phase 750 — the declarative pill. `default` is omitted-when-`Default` (the Phase\n // 460 discipline); `jObject` Ordinal-sorts, so push order is irrelevant.\n case 'TonedPill': {\n const fields: Field[] = [\n ['field', str(k.field)],\n ['map', jObject(Object.entries(k.map).map(([v, t]) => [v, str(t)] as const))],\n ];\n if (k.defaultTone !== 'Default') fields.push(['default', str(k.defaultTone)]);\n return caseObj('TonedPill', fields);\n }\n case 'Progress':\n return caseObj('Progress', [\n ['fractionFn', CLOSURE],\n ['labelFn', CLOSURE],\n ]);\n case 'Custom':\n return caseObj('Custom', [['fn', CLOSURE]]);\n default:\n return assertNever(k);\n }\n};\n\nconst columnErased = (c: ColumnErased<unknown>): string => {\n // Phase 425 — `value` (closure) + `field` (declarative) are sibling optional slots.\n // Phase 460 — `format`/`width` omitted-when-default (`None`/`Auto`).\n const fields: Field[] = [\n ['kind', cellKindErased(c.kind)],\n ['label', str(c.label)],\n ];\n pushCellFormatOptional(fields, 'format', c.format);\n pushColumnWidthOptional(fields, 'width', c.width);\n if (c.value !== undefined) fields.push(['value', CLOSURE]);\n if (c.field !== undefined) fields.push(['field', str(c.field)]);\n return jObject(fields);\n};\n\nconst gridSpec = (s: GridSpec<unknown>): string => {\n const fields: Field[] = [\n ['columns', jArray(s.columns.map(columnErased))],\n // 0.2.0 omitted-when-false.\n ...(s.editable ? ([['editable', bool(true)]] as const) : []),\n // fuaran#665 — rows are a typed Static payload now, not the opaque residual.\n ['source', binding(s.source, staticRowSeq)],\n ];\n if (s.onRowClick !== undefined) fields.push(['onRowClick', CLOSURE]);\n // Phase 425 — `rowKey` (closure) + `rowKeyField` (declarative) are sibling optional slots.\n if (s.rowKey !== undefined) fields.push(['rowKey', CLOSURE]);\n if (s.rowKeyField !== undefined) fields.push(['rowKeyField', str(s.rowKeyField)]);\n // Phase 393 — the static read-only mode; omitted for a data-bound grid so every existing\n // grid fixture stays byte-identical.\n if (s.staticRows !== undefined)\n fields.push([\n 'staticRows',\n jObject([\n ['headers', jArray(s.staticRows.headers.map(textSource))],\n ['rows', jArray(s.staticRows.rows.map((row) => jArray(row.map(textSource))))],\n ]),\n ]);\n return jObject(fields);\n};\n\nconst chartSpec = (s: ChartSpec<unknown>): string => {\n // `stacked` (Phase 126) is now carried — previously dropped on the wire,\n // losing a chart's stacked-vs-grouped intent on every round-trip.\n const fields: Field[] = [\n ['kind', str(s.kind)],\n // fuaran#665 — rows are a typed Static payload now, not the opaque residual.\n ['source', binding(s.source, staticRowSeq)],\n ['stacked', bool(s.stacked)],\n ['xField', str(s.xField)],\n ['yFields', jArray(s.yFields.map(str))],\n ];\n if (s.title !== undefined) fields.push(['title', textSource(s.title)]);\n if (s.onPointClick !== undefined) fields.push(['onPointClick', CLOSURE]);\n return jObject(fields);\n};\n\nconst mapMarker = (m: MapMarker): string =>\n jObject([\n ['label', textSource(m.label)],\n ['latitude', num(m.latitude)],\n ['longitude', num(m.longitude)],\n ]);\n\nconst mapSpec = (s: MapSpec<unknown>): string => {\n const fields: Field[] = [\n ['centreLatitude', num(s.centreLatitude)],\n ['centreLongitude', num(s.centreLongitude)],\n ['source', binding(s.source, staticMarkerSeq)],\n ['zoom', num(s.zoom)],\n ];\n if (s.onMarkerClick !== undefined) fields.push(['onMarkerClick', CLOSURE]);\n return jObject(fields);\n};\n\nconst visKind = (v: VisKind<unknown>): string => {\n switch (v.kind) {\n // In-memory tag stays 'Grid'; the wire discriminator is 'DataGrid' (the\n // data-bound grid) — globally unique vs the Layout 'GridLayout' so the\n // flat wire stays unambiguous (WIRE_FORMAT §3.2).\n case 'Grid':\n return hoistSpec('DataGrid', gridSpec(v.spec));\n case 'Chart':\n return hoistSpec('Chart', chartSpec(v.spec));\n case 'Map':\n return hoistSpec('Map', mapSpec(v.spec));\n default:\n return assertNever(v);\n }\n};\n\n// ─── Layout specs ────────────────────────────────────────────────────────────\n\n// Phase 390 — the unified Box container. Ordinal key order:\n// children < heading < layout < role. `layout` is a discriminated object\n// (Flex | Grid | Auto), `role` a string; `heading` emits only when set. Every\n// nested optional (gap / templateColumns) emits only when present, preserving\n// byte-identical encoding. Mirrors F# `layoutKindAppender`'s Box arm.\nconst boxLayout = (l: BoxLayout): string => {\n switch (l.kind) {\n case 'Flex': {\n // direction < gap < wrap\n const fields: Field[] = [['direction', str(l.direction)]];\n if (l.gap !== undefined) fields.push(['gap', intLit(l.gap)]);\n fields.push(['wrap', bool(l.wrap)]);\n return caseObj('Flex', fields);\n }\n case 'Grid': {\n // cols < gap < templateColumns\n const fields: Field[] = [['cols', intLit(l.cols)]];\n if (l.gap !== undefined) fields.push(['gap', intLit(l.gap)]);\n if (l.templateColumns !== undefined) fields.push(['templateColumns', str(l.templateColumns)]);\n return caseObj('Grid', fields);\n }\n case 'Auto':\n return caseObj('Auto', []);\n default:\n return assertNever(l);\n }\n};\n\nconst boxSpec = (s: BoxSpec<unknown>): string => {\n const fields: Field[] = [['children', jArray(s.children.map(node))]];\n if (s.heading !== undefined) fields.push(['heading', textSource(s.heading)]);\n fields.push(['layout', boxLayout(s.layout)]);\n fields.push(['role', str(s.role)]);\n return jObject(fields);\n};\n\nconst splitPanelSpec = (s: SplitPanelSpec<unknown>): string =>\n jObject([\n ['children', jArray(s.children.map(node))],\n ['weight', num(s.weight)],\n ]);\n\nconst tabHeader = (h: TabHeader): string => {\n const fields: Field[] = [['label', textSource(h.label)]];\n if (h.icon !== undefined) fields.push(['icon', str(h.icon)]);\n if (h.disabled !== undefined) fields.push(['disabled', binding(h.disabled)]);\n return jObject(fields);\n};\n\nconst tabsSpec = (s: TabsSpec<unknown>): string => {\n // `activeIndex` (Phase 126) is carried. `onSelect` / `onSelectTag` (Phase\n // 426): each rides the wire only when present — a defined closure → the\n // `\"<closure>\"` sentinel (byte-identical to the pre-426 always-emitted\n // `onSelect`); omitted, the renderer's ActiveIndex/ActiveTag write-back\n // default takes over.\n const fields: Field[] = [\n ['children', jArray(s.children.map(node))],\n // 0.2.0 omitted-when-default (`Horizontal`).\n ...(s.orientation === 'Horizontal' ? [] : ([['orientation', str(s.orientation)]] as const)),\n ['activeIndex', binding(s.activeIndex)],\n ];\n if (s.onSelect !== undefined) fields.push(['onSelect', CLOSURE]);\n if (s.tabHeaders !== undefined) fields.push(['tabHeaders', jArray(s.tabHeaders.map(tabHeader))]);\n if (s.tabTags !== undefined) fields.push(['tabTags', jArray(s.tabTags.map(str))]);\n if (s.activeTag !== undefined) fields.push(['activeTag', binding(s.activeTag)]);\n if (s.onSelectTag !== undefined) fields.push(['onSelectTag', CLOSURE]);\n return jObject(fields);\n};\n\n// `onSelect` is a closure → the `\"<closure>\"` sentinel (decodes to a no-op,\n// re-encodes to the same sentinel; byte-stable) — same treatment as Tabs\n// `onSelect` (Phase 126).\nconst stepperSpec = (s: StepperSpec<unknown>): string =>\n jObject([\n ['activeStep', binding(s.activeStep)],\n ['children', jArray(s.children.map(node))],\n ['onSelect', CLOSURE],\n ]);\n\nconst summaryListSpec = (s: SummaryListSpec<unknown>): string => {\n const fields: Field[] = [['children', jArray(s.children.map(node))]];\n if (s.heading !== undefined) fields.push(['heading', textSource(s.heading)]);\n return jObject(fields);\n};\n\nconst disclosureSpec = (s: DisclosureSpec<unknown>): string => {\n // `onToggle` (Phase 426): rides the wire only when present — a defined\n // closure → the `\"onToggle\":\"<closure>\"` sentinel (previously never encoded,\n // so every pre-426 fixture omits it and stays byte-identical); omitted, the\n // renderer's `open` write-back default takes over.\n const fields: Field[] = [\n ['children', jArray(s.children.map(node))],\n ['defaultOpen', bool(s.defaultOpen)],\n ['heading', textSource(s.heading)],\n ['open', binding(s.open)],\n ];\n if (s.onToggle !== undefined) fields.push(['onToggle', CLOSURE]);\n return jObject(fields);\n};\n\nconst modalSpec = (s: ModalSpec<unknown>): string => {\n // `onDismiss` is a full wire-survivable Action (encoded via the Action codec,\n // NOT a closure sentinel) — optional since Phase 426: omitted, a dismissable\n // modal falls to the `open` write-back default; `heading` omitted when\n // undefined.\n const fields: Field[] = [\n ['children', jArray(s.children.map(node))],\n ['dismissable', bool(s.dismissable)],\n ['open', binding(s.open)],\n ];\n if (s.onDismiss !== undefined) fields.push(['onDismiss', action(s.onDismiss)]);\n if (s.heading !== undefined) fields.push(['heading', textSource(s.heading)]);\n return jObject(fields);\n};\n\nconst scrollAreaSpec = (s: ScrollAreaSpec<unknown>): string => {\n const fields: Field[] = [\n ['children', jArray(s.children.map(node))],\n ['orientation', str(s.orientation)],\n ];\n if (s.maxHeight !== undefined) fields.push(['maxHeight', num(s.maxHeight)]);\n if (s.maxWidth !== undefined) fields.push(['maxWidth', num(s.maxWidth)]);\n return jObject(fields);\n};\n\nconst layoutKind = (l: LayoutKind<unknown>): string => {\n switch (l.kind) {\n // Phase 390 — the unified container. `Stack` / `GridLayout` / `Dashboard` /\n // `Card` all encode as `Box`; the role + layout mode carry what the retired\n // kinds encoded. A legacy tag never re-encodes to its old form.\n case 'Box':\n return hoistSpec('Box', boxSpec(l.spec));\n case 'SplitPanel':\n return hoistSpec('SplitPanel', splitPanelSpec(l.spec));\n case 'Tabs':\n return hoistSpec('Tabs', tabsSpec(l.spec));\n case 'Stepper':\n return hoistSpec('Stepper', stepperSpec(l.spec));\n case 'SummaryList':\n return hoistSpec('SummaryList', summaryListSpec(l.spec));\n case 'Disclosure':\n return hoistSpec('Disclosure', disclosureSpec(l.spec));\n case 'Modal':\n return hoistSpec('Modal', modalSpec(l.spec));\n case 'ScrollArea':\n return hoistSpec('ScrollArea', scrollAreaSpec(l.spec));\n default:\n return assertNever(l);\n }\n};\n\n// ─── Parameterised-fragment hole / effect / scalar emitters (Phase 180) ──────\n\nconst fragmentScalar = (s: FragmentScalar): string => {\n switch (s.kind) {\n case 'int':\n return caseObj('Int', [['value', String(s.value)]]);\n case 'float':\n return caseObj('Float', [['value', num(s.value)]]);\n case 'bool':\n return caseObj('Bool', [['value', bool(s.value)]]);\n case 'str':\n return caseObj('Str', [['value', str(s.value)]]);\n default:\n return assertNever(s);\n }\n};\n\nconst holeValueSpace = (s: HoleValueSpace): string => {\n switch (s.kind) {\n case 'IntRange':\n return caseObj('IntRange', [\n ['max', String(s.max)],\n ['min', String(s.min)],\n ]);\n case 'FloatRange':\n return caseObj('FloatRange', [\n ['max', num(s.max)],\n ['min', num(s.min)],\n ]);\n case 'StringLen':\n return caseObj('StringLen', [\n ['maxLen', String(s.maxLen)],\n ['minLen', String(s.minLen)],\n ]);\n case 'Enum':\n return caseObj('Enum', [['choices', jArray(s.choices.map(str))]]);\n case 'AnyString':\n return caseObj('AnyString', []);\n default:\n return assertNever(s);\n }\n};\n\nconst holeDecl = (h: HoleDecl): string => {\n switch (h.kind) {\n case 'Value': {\n const fields: Field[] = [\n ['name', str(h.name)],\n ['space', holeValueSpace(h.space)],\n ];\n if (h.default !== undefined) fields.push(['default', fragmentScalar(h.default)]);\n return caseObj('Value', fields);\n }\n case 'Slot': {\n const fields: Field[] = [['name', str(h.name)]];\n if (h.kindConstraint !== undefined) fields.push(['kindConstraint', str(h.kindConstraint)]);\n return caseObj('Slot', fields);\n }\n case 'Repeat':\n return caseObj('Repeat', [\n ['countSpace', holeValueSpace(h.countSpace)],\n ['name', str(h.name)],\n ]);\n default:\n return assertNever(h);\n }\n};\n\nconst effectClass = (e: EffectClass): string =>\n jObject([\n ['determinism', str(e.determinism)],\n ['hostEffect', str(e.hostEffect)],\n ]);\n\nconst isPureDeterministic = (e: EffectClass): boolean =>\n e.hostEffect === 'Pure' && e.determinism === 'Deterministic';\n\nconst fragmentArg = (a: FragmentArg<unknown>): string => {\n switch (a.kind) {\n case 'value':\n return fragmentScalar(a.value);\n case 'slot':\n return caseObj('SlotArg', [['tree', node(a.tree)]]);\n default:\n return assertNever(a);\n }\n};\n\n// ─── NodeKind / Node / StateBehaviour / Style / Accessibility ────────────────\n\nconst nodeKind = (k: NodeKind<unknown>): string => {\n switch (k.kind) {\n // The four behavioural categories are flat on the wire (WIRE_FORMAT §3.2):\n // emit the inner kind directly into the `kind` slot with no category\n // envelope. The category is a host-side classification, not a wire level.\n case 'Layout':\n return layoutKind(k.layout);\n case 'Display':\n return displayKind(k.display);\n case 'Input':\n return inputKind(k.input);\n case 'Visualisation':\n return visKind(k.visualisation);\n case 'Custom': {\n // Phase 70 arm: contentHash + exposedNodeIds emit only when populated\n // (None / [] omitted), matching the F# encoder — so a Custom with no\n // exposed ids encodes without the key.\n const fields: Field[] = [\n ['componentId', str(k.componentId)],\n ['moduleId', str(k.moduleId)],\n ['props', jsonMap(k.props)],\n ];\n if (k.contentHash !== undefined) {\n fields.push([\n 'contentHash',\n jObject([\n ['algorithm', str(k.contentHash.algorithm)],\n ['hash', str(k.contentHash.hash)],\n ['strictness', str(k.contentHash.strictness)],\n ]),\n ]);\n }\n if (k.exposedNodeIds.length > 0) {\n fields.push(['exposedNodeIds', jArray(k.exposedNodeIds.map(str))]);\n }\n return caseObj('Custom', fields);\n }\n case 'ErrorBoundary':\n return caseObj('ErrorBoundary', [\n ['child', node(k.spec.child)],\n ['fallback', node(k.spec.fallback)],\n ]);\n case 'Switch':\n // State-bound conditional child (Phase 392). Each case encodes as a\n // `{child,match}` object (keys sort child < match); the whole kind's keys\n // sort cases < default < stateKey. jObject sorts, so the listed order is\n // cosmetic.\n return caseObj('Switch', [\n [\n 'cases',\n jArray(\n k.spec.cases.map((c) =>\n jObject([\n ['child', node(c.child)],\n ['match', str(c.match)],\n ]),\n ),\n ),\n ],\n ['default', node(k.spec.default)],\n // Phase 768 collapse rule — State(key, no default) keeps the compact\n // canonical `stateKey` spelling (existing fixtures stay byte-identical);\n // any other selector encodes as `on`.\n k.spec.on.kind === 'State' && k.spec.on.defaultValue === undefined\n ? ['stateKey', str(k.spec.on.key)]\n : ['on', binding(k.spec.on, str)],\n ]);\n case 'FragmentDecl': {\n // Phase 180 — `holes` / `effect` additive; omitted at the degenerate\n // (zero-hole, pure-deterministic) case so the fixed-body shape is\n // byte-identical.\n const fields: Field[] = [\n ['body', node(k.spec.body)],\n ['name', str(k.spec.name)],\n ];\n if (k.spec.holes.length > 0) fields.push(['holes', jArray(k.spec.holes.map(holeDecl))]);\n if (!isPureDeterministic(k.spec.effect)) fields.push(['effect', effectClass(k.spec.effect)]);\n return caseObj('FragmentDecl', fields);\n }\n case 'FragmentRef': {\n // Phase 180 — `args` additive; omitted at the zero-arg case.\n const fields: Field[] = [['name', str(k.spec.name)]];\n const argKeys = Object.keys(k.spec.args);\n if (argKeys.length > 0)\n fields.push([\n 'args',\n jObject(argKeys.map((key) => [key, fragmentArg(k.spec.args[key]!)] as const)),\n ]);\n return caseObj('FragmentRef', fields);\n }\n case 'Mount': {\n // Phase 265, §4o — the isolation/embedding boundary. `scopeId` + `channel`\n // + `capabilities` + the `onBubble` closure sentinel always present;\n // `inputs` additive (omitted when empty, reusing the FragmentArg encoding).\n // `capabilities` always emits (even `[]`) — the explicit visible\n // default-deny posture. Mirrors the F# CanonicalJson Mount arm.\n const s = k.spec;\n const channelFields: Field[] = [['direction', str(s.channel.direction)]];\n if (s.channel.messageShape !== undefined)\n channelFields.push(['messageShape', str(s.channel.messageShape)]);\n const fields: Field[] = [\n ['capabilities', jArray(s.capabilities.map(str))],\n ['channel', jObject(channelFields)],\n ['onBubble', CLOSURE],\n ['scopeId', str(s.scopeId)],\n ];\n const inputKeys = Object.keys(s.inputs);\n if (inputKeys.length > 0)\n fields.push([\n 'inputs',\n jObject(inputKeys.map((key) => [key, fragmentArg(s.inputs[key]!)] as const)),\n ]);\n return caseObj('Mount', fields);\n }\n default:\n return assertNever(k);\n }\n};\n\nconst stateBehaviour = (s: StateBehaviour<unknown>): string => {\n const fields: Field[] = [];\n if (s.onLoading !== undefined) fields.push(['onLoading', node(s.onLoading)]);\n if (s.onEmpty !== undefined) fields.push(['onEmpty', node(s.onEmpty)]);\n if (s.onError !== undefined) fields.push(['onError', CLOSURE]);\n return jObject(fields);\n};\n\nconst semanticStyle = (s: SemanticStyle): string => {\n // Every field is emitted only when non-default: `role`/`voice` since Phase 147,\n // and `emphasis`/`tone`/`weight` since Phase 460, so a style object authored\n // before a field existed round-trips byte-identically and an all-default style\n // encodes as `{}`. Per the wire contract an absent field IS the default, so\n // `undefined` (a loosely-typed object literal lacking the key) is treated as the\n // default and omitted — symmetric with the decoder's `?? default` on absence.\n // `jObject` sorts keys, so order is irrelevant.\n const fields: Field[] = [];\n if (s.emphasis !== undefined && s.emphasis !== 'Normal')\n fields.push(['emphasis', str(s.emphasis)]);\n if (s.tone !== undefined && s.tone !== 'Default') fields.push(['tone', str(s.tone)]);\n if (s.weight !== undefined && s.weight !== 'Standard') fields.push(['weight', str(s.weight)]);\n if (s.role !== undefined && s.role !== 'None') fields.push(['role', str(s.role)]);\n if (s.voice !== undefined && s.voice !== 'Default') fields.push(['voice', str(s.voice)]);\n return jObject(fields);\n};\n\nconst accessibility = (a: Accessibility): string => {\n const fields: Field[] = [];\n if (a.label !== undefined) fields.push(['label', binding(a.label)]);\n if (a.labelledBy !== undefined) fields.push(['labelledBy', str(a.labelledBy)]);\n if (a.describedBy !== undefined) fields.push(['describedBy', str(a.describedBy)]);\n if (a.role !== undefined) fields.push(['role', str(a.role)]);\n if (a.liveRegion !== undefined) fields.push(['liveRegion', str(a.liveRegion)]);\n if (a.hidden !== undefined) fields.push(['hidden', binding(a.hidden)]);\n return jObject(fields);\n};\n\n/** All-empty StateBehaviour (no onLoading / onEmpty / onError) — port of F# `isEmptyState`. */\nconst isEmptyState = (s: StateBehaviour<unknown>): boolean =>\n s.onLoading === undefined && s.onEmpty === undefined && s.onError === undefined;\n\n/** All-default SemanticStyle (Normal / Default / Standard / None / Default) — port of F# `isDefaultStyle`.\n * An absent role/voice (undefined) is the default per the wire contract. */\nconst isDefaultStyle = (s: SemanticStyle): boolean =>\n (s.emphasis === undefined || s.emphasis === 'Normal') &&\n (s.tone === undefined || s.tone === 'Default') &&\n (s.weight === undefined || s.weight === 'Standard') &&\n (s.role === undefined || s.role === 'None') &&\n (s.voice === undefined || s.voice === 'Default');\n\nconst node = (n: Node<unknown>): string => {\n const fields: Field[] = [\n ['id', str(n.id)],\n ['kind', nodeKind(n.kind)],\n ];\n // `state` / `style` are omitted when empty / all-default — the common case\n // (WIRE_FORMAT.md §3.1). The decoder restores the default on absence.\n if (!isEmptyState(n.state)) fields.push(['state', stateBehaviour(n.state)]);\n if (!isDefaultStyle(n.style)) fields.push(['style', semanticStyle(n.style)]);\n if (n.accessibility !== undefined) fields.push(['accessibility', accessibility(n.accessibility)]);\n return jObject(fields);\n};\n\n// ─── TreeOp ──────────────────────────────────────────────────────────────────\n\nconst treeOp = (op: TreeOp<unknown>): string => {\n switch (op.kind) {\n case 'EditNode':\n return caseObj('EditNode', [\n ['newKind', nodeKind(op.newKind)],\n ['target', str(op.target)],\n ]);\n case 'UpdateProp':\n return caseObj('UpdateProp', [\n ['path', str(op.path)],\n ['target', str(op.target)],\n ['value', jsonValue(op.value)],\n ]);\n case 'ReplaceBinding':\n return caseObj('ReplaceBinding', [\n ['binding', binding(op.binding)],\n ['slot', str(op.slot)],\n ['target', str(op.target)],\n ]);\n case 'UpdateStyle':\n return caseObj('UpdateStyle', [\n ['style', semanticStyle(op.style)],\n ['target', str(op.target)],\n ]);\n case 'UpdateState':\n return caseObj('UpdateState', [\n ['state', stateBehaviour(op.state)],\n ['target', str(op.target)],\n ]);\n case 'InsertChild':\n return caseObj('InsertChild', [\n ['child', node(op.child)],\n ['parentId', str(op.parentId)],\n ]);\n case 'RemoveNode':\n return caseObj('RemoveNode', [['target', str(op.target)]]);\n case 'MoveNode':\n return caseObj('MoveNode', [\n ['newParentId', str(op.newParentId)],\n ['target', str(op.target)],\n ]);\n case 'ReorderChildren':\n return caseObj('ReorderChildren', [\n ['newOrder', jArray(op.newOrder.map(str))],\n ['parentId', str(op.parentId)],\n ]);\n case 'ReplaceRoot':\n return caseObj('ReplaceRoot', [['node', node(op.node)]]);\n case 'Batch':\n return caseObj('Batch', [['ops', jArray(op.ops.map(treeOp))]]);\n default:\n return assertNever(op);\n }\n};\n\n// ─── Public surface ──────────────────────────────────────────────────────────\n\n/** Encode a `Node<TMsg>` to its canonical-JSON string (WIRE_FORMAT.md). */\nexport const encodeNode = <TMsg>(n: Node<TMsg>): string => node(n as Node<unknown>);\n\n/** Encode a `TreeOp<TMsg>` to its canonical-JSON string (WIRE_FORMAT.md). */\nexport const encodeOp = <TMsg>(op: TreeOp<TMsg>): string => treeOp(op as TreeOp<unknown>);\n","// ============================================================================\n// @fuaran-ui/ops — the native-JS columnar dataframe evaluator (Phase 284).\n//\n// A faithful port of the `Fuaran.Core.DataFrame` reference evaluator: a pure\n// fold over the columnar model that runs a serialisable `Transform` pipeline\n// client-side **as data** (no Pyodide). The pinned semantics — null/NA\n// propagation, int↔float coercion, group/sort stability, round-half-away,\n// division-by-zero, the canonical float layout — match the reference exactly, so\n// the evaluator's output `Table` is byte-identical to the reference's under the\n// shared `Canon` codec (`encodeDataSource` ∘ Embedded — the §11.1 parity\n// contract `Conformance.transformLaws` enforces across hosts).\n//\n// Total: every recoverable failure is an `EvalError`, never a throw.\n// ============================================================================\n\nimport type {\n Agg,\n AggFn,\n Cell,\n ColExpr,\n ColumnType,\n DataColumn,\n DataSource,\n EvalError,\n SchemaEntry,\n SortKey,\n Table,\n Transform,\n} from '@fuaran-ui/schema';\nimport type { Result } from '@fuaran-ui/schema';\n\nimport { num } from './encode.js';\n\ntype DR<T> = Result<T, EvalError>;\nconst dok = <T>(value: T): DR<T> => ({ ok: true, value });\nconst derr = (error: EvalError): DR<never> => ({ ok: false, error });\n\nconst unknownColumn = (name: string, available: readonly string[]): EvalError => ({\n kind: 'UnknownColumn',\n name,\n available,\n});\nconst typeError = (detail: string): EvalError => ({ kind: 'TypeError', detail });\nconst unboundParam = (name: string, bound: readonly string[]): EvalError => ({\n kind: 'UnboundParam',\n name,\n bound,\n});\nconst arityError = (fn: string, expected: number, got: number): EvalError => ({\n kind: 'ArityError',\n fn,\n expected,\n got,\n});\n\n// ─── internal row-oriented frame (the evaluator's working form) ──────────────\n\ninterface Frame {\n readonly cols: readonly SchemaEntry[];\n readonly rows: readonly (readonly Cell[])[];\n}\n\nconst NULL: Cell = { kind: 'Null' };\n\nconst isNull = (c: Cell): boolean => c.kind === 'Null';\n\nconst rowCount = (t: Table): number => (t.columns.length > 0 ? t.columns[0]!.cells.length : 0);\n\nconst toFrame = (t: Table): Frame => {\n const n = rowCount(t);\n const byName = new Map(t.columns.map((c) => [c.name, c] as const));\n const rows: Cell[][] = [];\n for (let i = 0; i < n; i += 1) {\n rows.push(\n t.schema.map((e) => {\n const c = byName.get(e.name);\n return c !== undefined && i >= 0 && i < c.cells.length ? c.cells[i]! : NULL;\n }),\n );\n }\n return { cols: t.schema, rows };\n};\n\nconst ofFrame = (f: Frame): Table => {\n const columns: DataColumn[] = f.cols.map((e, ci) => ({\n name: e.name,\n type: e.type,\n cells: f.rows.map((row) => row[ci]!),\n }));\n return { schema: f.cols, columns };\n};\n\nconst colIndex = (cols: readonly SchemaEntry[], name: string): number =>\n cols.findIndex((e) => e.name === name);\n\nconst colType = (cols: readonly SchemaEntry[], name: string): ColumnType | undefined =>\n cols.find((e) => e.name === name)?.type;\n\nconst available = (cols: readonly SchemaEntry[]): string[] => cols.map((e) => e.name);\n\n// ─── pinned scalar semantics ─────────────────────────────────────────────────\n\n/** The canonical string of a cell (float via the shared `Canon` layout). */\nexport const cellString = (c: Cell): string => {\n switch (c.kind) {\n case 'Int':\n return String(Math.trunc(c.value));\n case 'Float':\n return num(c.value);\n case 'Bool':\n return c.value ? 'true' : 'false';\n case 'Str':\n case 'Date':\n case 'Timestamp':\n return c.value;\n case 'Null':\n return '';\n }\n};\n\nconst asNum = (c: Cell): number | undefined =>\n c.kind === 'Int' || c.kind === 'Float' ? c.value : undefined;\n\nconst sign = (n: number): number => (n < 0 ? -1 : n > 0 ? 1 : 0);\n\n/** Total comparison of two present, same-family cells. `undefined` ⇒ incomparable. */\nconst compareCells = (a: Cell, b: Cell): number | undefined => {\n const an = asNum(a);\n const bn = asNum(b);\n if (an !== undefined && bn !== undefined) return sign(an - bn);\n if (a.kind === 'Bool' && b.kind === 'Bool') return a.value === b.value ? 0 : a.value ? 1 : -1;\n if (a.kind === 'Str' && b.kind === 'Str')\n return a.value < b.value ? -1 : a.value > b.value ? 1 : 0;\n if (a.kind === 'Date' && b.kind === 'Date')\n return a.value < b.value ? -1 : a.value > b.value ? 1 : 0;\n if (a.kind === 'Timestamp' && b.kind === 'Timestamp')\n return a.value < b.value ? -1 : a.value > b.value ? 1 : 0;\n return undefined;\n};\n\nconst cellEq = (a: Cell, b: Cell): boolean => {\n if (a.kind === 'Null' || b.kind === 'Null') return false;\n return compareCells(a, b) === 0;\n};\n\nconst bothInt = (a: Cell, b: Cell): boolean => a.kind === 'Int' && b.kind === 'Int';\n\nconst arith = (op: string, a: Cell, b: Cell): DR<Cell> => {\n if (a.kind === 'Null' || b.kind === 'Null') return dok(NULL);\n const x = asNum(a);\n const y = asNum(b);\n if (x === undefined || y === undefined)\n return derr(typeError('arithmetic on a non-numeric operand'));\n const bi = bothInt(a, b);\n switch (op) {\n case 'add':\n return dok(\n bi\n ? { kind: 'Int', value: Math.trunc(x) + Math.trunc(y) }\n : { kind: 'Float', value: x + y },\n );\n case 'sub':\n return dok(\n bi\n ? { kind: 'Int', value: Math.trunc(x) - Math.trunc(y) }\n : { kind: 'Float', value: x - y },\n );\n case 'mul':\n return dok(\n bi\n ? { kind: 'Int', value: Math.trunc(x) * Math.trunc(y) }\n : { kind: 'Float', value: x * y },\n );\n case 'div':\n return dok(y === 0 ? NULL : { kind: 'Float', value: x / y });\n case 'mod':\n if (!bi) return derr(typeError('mod requires integer operands'));\n if (Math.trunc(y) === 0) return dok(NULL);\n return dok({ kind: 'Int', value: Math.trunc(x) % Math.trunc(y) });\n default:\n return derr(typeError('not an arithmetic operator'));\n }\n};\n\nconst comparison = (op: string, a: Cell, b: Cell): DR<Cell> => {\n if (a.kind === 'Null' || b.kind === 'Null') return dok(NULL);\n const c = compareCells(a, b);\n if (c === undefined) return derr(typeError('comparison between incompatible types'));\n let r: boolean;\n switch (op) {\n case 'eq':\n r = c === 0;\n break;\n case 'ne':\n r = c !== 0;\n break;\n case 'lt':\n r = c < 0;\n break;\n case 'le':\n r = c <= 0;\n break;\n case 'gt':\n r = c > 0;\n break;\n case 'ge':\n r = c >= 0;\n break;\n default:\n r = false;\n }\n return dok({ kind: 'Bool', value: r });\n};\n\n/** Kleene three-valued AND/OR over Bool/Null operands. */\nconst logical = (op: string, a: Cell, b: Cell): DR<Cell> => {\n const asBool = (c: Cell): DR<boolean | undefined> => {\n if (c.kind === 'Bool') return dok(c.value);\n if (c.kind === 'Null') return dok(undefined);\n return derr(typeError('logical operator on a non-bool operand'));\n };\n const x = asBool(a);\n if (!x.ok) return x;\n const y = asBool(b);\n if (!y.ok) return y;\n const xv = x.value;\n const yv = y.value;\n if (op === 'and') {\n if (xv === false || yv === false) return dok({ kind: 'Bool', value: false });\n if (xv === true && yv === true) return dok({ kind: 'Bool', value: true });\n return dok(NULL);\n }\n if (op === 'or') {\n if (xv === true || yv === true) return dok({ kind: 'Bool', value: true });\n if (xv === false && yv === false) return dok({ kind: 'Bool', value: false });\n return dok(NULL);\n }\n return derr(typeError('not a logical operator'));\n};\n\n// .NET Double.TryParse(NumberStyles.Float, InvariantCulture) — leading/trailing\n// whitespace + sign + decimal + exponent. JS Number over a trimmed, regex-gated\n// string approximates it without accepting hex / Infinity literals .NET rejects.\nconst FLOAT_RE = /^[+-]?(\\d+\\.?\\d*|\\.\\d+)([eE][+-]?\\d+)?$/;\nconst tryParseFloat = (s: string): number | undefined => {\n const t = s.trim();\n if (!FLOAT_RE.test(t)) return undefined;\n const n = Number(t);\n return Number.isFinite(n) ? n : undefined;\n};\nconst INT_RE = /^[+-]?\\d+$/;\nconst tryParseInt = (s: string): number | undefined => {\n const t = s.trim();\n return INT_RE.test(t) ? parseInt(t, 10) : undefined;\n};\n\nconst castCell = (ty: ColumnType, c: Cell): DR<Cell> => {\n if (c.kind === 'Null') return dok(NULL);\n switch (ty) {\n case 'string':\n return dok({ kind: 'Str', value: cellString(c) });\n case 'float': {\n const n = asNum(c);\n if (n !== undefined) return dok({ kind: 'Float', value: n });\n if (c.kind === 'Str') {\n const p = tryParseFloat(c.value);\n return p !== undefined\n ? dok({ kind: 'Float', value: p })\n : derr(typeError(\"cannot cast '\" + c.value + \"' to float\"));\n }\n return derr(typeError('cannot cast to float'));\n }\n case 'int':\n if (c.kind === 'Int') return dok(c);\n if (c.kind === 'Float') return dok({ kind: 'Int', value: Math.trunc(c.value) });\n if (c.kind === 'Bool') return dok({ kind: 'Int', value: c.value ? 1 : 0 });\n if (c.kind === 'Str') {\n const p = tryParseInt(c.value);\n return p !== undefined\n ? dok({ kind: 'Int', value: p })\n : derr(typeError(\"cannot cast '\" + c.value + \"' to int\"));\n }\n return derr(typeError('cannot cast to int'));\n case 'bool':\n if (c.kind === 'Bool') return dok(c);\n if (c.kind === 'Int') return dok({ kind: 'Bool', value: c.value !== 0 });\n return derr(typeError('cannot cast to bool'));\n case 'date':\n if (c.kind === 'Date') return dok(c);\n if (c.kind === 'Str') return dok({ kind: 'Date', value: c.value });\n return derr(typeError('cannot cast to date'));\n case 'timestamp':\n if (c.kind === 'Timestamp') return dok(c);\n if (c.kind === 'Str') return dok({ kind: 'Timestamp', value: c.value });\n return derr(typeError('cannot cast to timestamp'));\n }\n};\n\n/** Round half away from zero — host-independent (not banker's rounding). */\nconst roundHalfAway = (x: number): number => (x >= 0 ? Math.floor(x + 0.5) : Math.ceil(x - 0.5));\n\nconst applyScalar = (fn: string, args: readonly Cell[]): DR<Cell> => {\n const arity = (n: number): DR<undefined> =>\n args.length === n ? dok(undefined) : derr(arityError(fn, n, args.length));\n const unary = (g: (c: Cell) => DR<Cell>): DR<Cell> => {\n const a = arity(1);\n if (!a.ok) return a;\n const c = args[0]!;\n return c.kind === 'Null' ? dok(NULL) : g(c);\n };\n switch (fn) {\n case 'abs':\n return unary((c) =>\n c.kind === 'Int'\n ? dok({ kind: 'Int', value: Math.abs(c.value) })\n : c.kind === 'Float'\n ? dok({ kind: 'Float', value: Math.abs(c.value) })\n : derr(typeError('abs of a non-numeric')),\n );\n case 'round':\n return unary((c) => {\n const n = asNum(c);\n return n !== undefined\n ? dok({ kind: 'Float', value: roundHalfAway(n) })\n : derr(typeError('round of a non-numeric'));\n });\n case 'floor':\n return unary((c) => {\n const n = asNum(c);\n return n !== undefined\n ? dok({ kind: 'Float', value: Math.floor(n) })\n : derr(typeError('floor of a non-numeric'));\n });\n case 'ceil':\n return unary((c) => {\n const n = asNum(c);\n return n !== undefined\n ? dok({ kind: 'Float', value: Math.ceil(n) })\n : derr(typeError('ceil of a non-numeric'));\n });\n case 'length':\n return unary((c) =>\n c.kind === 'Str'\n ? dok({ kind: 'Int', value: c.value.length })\n : derr(typeError('length of a non-string')),\n );\n case 'lower':\n return unary((c) =>\n c.kind === 'Str'\n ? dok({ kind: 'Str', value: c.value.toLowerCase() })\n : derr(typeError('lower of a non-string')),\n );\n case 'upper':\n return unary((c) =>\n c.kind === 'Str'\n ? dok({ kind: 'Str', value: c.value.toUpperCase() })\n : derr(typeError('upper of a non-string')),\n );\n case 'substr': {\n const a = arity(3);\n if (!a.ok) return a;\n const s = args[0]!;\n const start = args[1]!;\n const len = args[2]!;\n if (s.kind === 'Null') return dok(NULL);\n if (s.kind === 'Str' && start.kind === 'Int' && len.kind === 'Int') {\n let st = Math.max(0, start.value);\n st = Math.min(st, s.value.length);\n const ln = Math.max(0, Math.min(len.value, s.value.length - st));\n return dok({ kind: 'Str', value: s.value.substring(st, st + ln) });\n }\n return derr(typeError('substr expects (string, int, int)'));\n }\n case 'datePart': {\n const a = arity(2);\n if (!a.ok) return a;\n const part = args[0]!;\n const date = args[1]!;\n if (date.kind === 'Null') return dok(NULL);\n if (\n part.kind === 'Str' &&\n (date.kind === 'Date' || date.kind === 'Timestamp' || date.kind === 'Str')\n ) {\n const s = date.value;\n const slice = (lo: number, len: number): DR<Cell> => {\n if (s.length >= lo + len) {\n const v = tryParseInt(s.substring(lo, lo + len));\n return v !== undefined\n ? dok({ kind: 'Int', value: v })\n : derr(typeError(\"datePart: unparseable component in '\" + s + \"'\"));\n }\n return derr(typeError(\"datePart: '\" + s + \"' too short for \" + part.value));\n };\n switch (part.value) {\n case 'year':\n return slice(0, 4);\n case 'month':\n return slice(5, 2);\n case 'day':\n return slice(8, 2);\n default:\n return derr(typeError(\"datePart: unknown part '\" + part.value + \"'\"));\n }\n }\n return derr(typeError('datePart expects (string part, date/timestamp/string)'));\n }\n case 'concat': {\n // fuaran-core#90 — variadic; any null arg propagates (compose coalesce for treat-as-empty).\n // Non-string args stringify via the SAME rendering as a cast to string — no cast noise.\n if (args.length === 0) return derr(arityError(fn, 1, 0));\n if (args.some((c) => c.kind === 'Null')) return dok(NULL);\n return dok({ kind: 'Str', value: args.map(cellString).join('') });\n }\n case 'trim':\n return unary((c) =>\n c.kind === 'Str'\n ? // Pinned ASCII set (space/tab/CR/LF) — NOT the host's Unicode trim (parity pin).\n dok({ kind: 'Str', value: c.value.replace(/^[ \\t\\r\\n]+|[ \\t\\r\\n]+$/g, '') })\n : derr(typeError('trim of a non-string')),\n );\n case 'replace': {\n const a = arity(3);\n if (!a.ok) return a;\n const subj = args[0]!;\n const find = args[1]!;\n const repl = args[2]!;\n if (subj.kind === 'Null' || find.kind === 'Null' || repl.kind === 'Null') return dok(NULL);\n if (subj.kind === 'Str' && find.kind === 'Str' && repl.kind === 'Str') {\n // Pinned: empty `find` returns the subject unchanged.\n if (find.value === '') return dok(subj);\n return dok({ kind: 'Str', value: subj.value.split(find.value).join(repl.value) });\n }\n return derr(typeError('replace expects (string, string, string)'));\n }\n case 'dateDiffDays': {\n const a = arity(2);\n if (!a.ok) return a;\n const from = args[0]!;\n const to = args[1]!;\n if (from.kind === 'Null' || to.kind === 'Null') return dok(NULL);\n const da = civilDays(from);\n if (!da.ok) return da;\n const db = civilDays(to);\n if (!db.ok) return db;\n return dok({ kind: 'Int', value: db.value - da.value });\n }\n default:\n return derr(typeError(\"unknown scalar function '\" + fn + \"'\"));\n }\n};\n\nconst ARITH_OPS = new Set(['add', 'sub', 'mul', 'div', 'mod']);\nconst CMP_OPS = new Set(['eq', 'ne', 'lt', 'le', 'gt', 'ge']);\nconst STR_OPS = new Set(['contains', 'startsWith', 'endsWith']);\n\n/**\n * Ordinal substring predicates (fuaran-core#90). Null propagates (matching `comparison`); a\n * non-string operand is a typed error. JS string methods are code-unit-wise over UTF-16 —\n * exactly the reference evaluator's Ordinal pin.\n */\nconst stringPred = (op: string, a: Cell, b: Cell): DR<Cell> => {\n if (a.kind === 'Null' || b.kind === 'Null') return dok(NULL);\n if (a.kind === 'Str' && b.kind === 'Str') {\n const r =\n op === 'contains'\n ? a.value.includes(b.value)\n : op === 'startsWith'\n ? a.value.startsWith(b.value)\n : a.value.endsWith(b.value);\n return dok({ kind: 'Bool', value: r });\n }\n return derr(typeError('string predicate on a non-string operand'));\n};\n\n/**\n * Days since 1970-01-01 for the first 10 chars (`YYYY-MM-DD`) of a date-like cell —\n * days-from-civil as pure integer math (fuaran-core#90, `dateDiffDays`). No host date library.\n */\nconst civilDays = (c: Cell): DR<number> => {\n if (c.kind === 'Date' || c.kind === 'Timestamp' || c.kind === 'Str') {\n const s = c.value;\n const bad = (): DR<number> =>\n derr(typeError(\"dateDiffDays: '\" + s + \"' is not YYYY-MM-DD[...]\"));\n if (s.length < 10 || s[4] !== '-' || s[7] !== '-') return bad();\n const y0 = tryParseInt(s.substring(0, 4));\n const m0 = tryParseInt(s.substring(5, 7));\n const d0 = tryParseInt(s.substring(8, 10));\n if (y0 === undefined || m0 === undefined || d0 === undefined) return bad();\n const y = m0 <= 2 ? y0 - 1 : y0;\n const era = Math.trunc((y >= 0 ? y : y - 399) / 400);\n const yoe = y - era * 400;\n const mp = (m0 + 9) % 12;\n const doy = Math.trunc((153 * mp + 2) / 5) + d0 - 1;\n const doe = yoe * 365 + Math.trunc(yoe / 4) - Math.trunc(yoe / 100) + doy;\n return dok(era * 146097 + doe - 719468);\n }\n return derr(typeError('dateDiffDays expects date/timestamp/string operands'));\n};\n\n/** Evaluate a `ColExpr` against one row. */\n/** The evaluation environment (fuaran-core#77) — binds each `ColExpr.param` name to a `Cell`. */\nexport type EvalEnv = Readonly<Record<string, Cell>>;\nconst EMPTY_ENV: EvalEnv = {};\n\nconst evalExpr = (\n cols: readonly SchemaEntry[],\n row: readonly Cell[],\n e: ColExpr,\n env: EvalEnv = EMPTY_ENV,\n): DR<Cell> => {\n switch (e.kind) {\n case 'col': {\n const i = colIndex(cols, e.name);\n return i >= 0 ? dok(row[i]!) : derr(unknownColumn(e.name, available(cols)));\n }\n case 'lit':\n return dok(e.cell);\n case 'param': {\n // fuaran-core#77 — resolve a named param from the env; a miss is a strict `UnboundParam`.\n const c = Object.prototype.hasOwnProperty.call(env, e.name) ? env[e.name] : undefined;\n return c !== undefined ? dok(c) : derr(unboundParam(e.name, Object.keys(env).sort()));\n }\n case 'binary': {\n const a = evalExpr(cols, row, e.left, env);\n if (!a.ok) return a;\n const b = evalExpr(cols, row, e.right, env);\n if (!b.ok) return b;\n if (ARITH_OPS.has(e.op)) return arith(e.op, a.value, b.value);\n if (CMP_OPS.has(e.op)) return comparison(e.op, a.value, b.value);\n if (STR_OPS.has(e.op)) return stringPred(e.op, a.value, b.value);\n return logical(e.op, a.value, b.value);\n }\n case 'not': {\n const inner = evalExpr(cols, row, e.expr, env);\n if (!inner.ok) return inner;\n const c = inner.value;\n if (c.kind === 'Bool') return dok({ kind: 'Bool', value: !c.value });\n if (c.kind === 'Null') return dok(NULL);\n return derr(typeError('not of a non-bool'));\n }\n case 'coalesce': {\n for (const x of e.exprs) {\n const r = evalExpr(cols, row, x, env);\n if (!r.ok) return r;\n if (r.value.kind !== 'Null') return dok(r.value);\n }\n return dok(NULL);\n }\n case 'case': {\n for (const br of e.cases) {\n const w = evalExpr(cols, row, br.when, env);\n if (!w.ok) return w;\n if (w.value.kind === 'Bool' && w.value.value) return evalExpr(cols, row, br.then, env);\n }\n return evalExpr(cols, row, e.else, env);\n }\n case 'cast': {\n const inner = evalExpr(cols, row, e.expr, env);\n return inner.ok ? castCell(e.type, inner.value) : inner;\n }\n case 'apply': {\n const vals: Cell[] = [];\n for (const a of e.args) {\n const r = evalExpr(cols, row, a, env);\n if (!r.ok) return r;\n vals.push(r.value);\n }\n return applyScalar(e.fn, vals);\n }\n case 'in': {\n // fuaran-core#90 — SQL three-valued membership: null subject => null; any equal item =>\n // true; no match having seen a null item => null; else false.\n const sv = evalExpr(cols, row, e.expr, env);\n if (!sv.ok) return sv;\n if (sv.value.kind === 'Null') return dok(NULL);\n let sawNull = false;\n for (const it of e.items) {\n const iv = evalExpr(cols, row, it, env);\n if (!iv.ok) return iv;\n if (iv.value.kind === 'Null') {\n sawNull = true;\n continue;\n }\n const c = compareCells(sv.value, iv.value);\n if (c === undefined) return derr(typeError('in: comparison between incompatible types'));\n if (c === 0) return dok({ kind: 'Bool', value: true });\n }\n return sawNull ? dok(NULL) : dok({ kind: 'Bool', value: false });\n }\n case 'isNull': {\n // fuaran-core#90 — total: always Bool, never null.\n const inner = evalExpr(cols, row, e.expr, env);\n return inner.ok ? dok({ kind: 'Bool', value: inner.value.kind === 'Null' }) : inner;\n }\n case 'inParam':\n // fuaran-core#91 — list params resolve by substitution BEFORE evaluation; one that\n // reaches the evaluator is unbound (scalar-param strictness parity).\n return derr(unboundParam(e.param, Object.keys(env).sort()));\n }\n};\n\n// ─── type inference for derived/melted columns ───────────────────────────────\n\nconst cellTypeOf = (c: Cell): ColumnType | undefined => {\n switch (c.kind) {\n case 'Int':\n return 'int';\n case 'Float':\n return 'float';\n case 'Bool':\n return 'bool';\n case 'Str':\n return 'string';\n case 'Date':\n return 'date';\n case 'Timestamp':\n return 'timestamp';\n case 'Null':\n return undefined;\n }\n};\n\nconst inferType = (cells: readonly Cell[]): ColumnType => {\n for (const c of cells) {\n const t = cellTypeOf(c);\n if (t !== undefined) return t;\n }\n return 'string';\n};\n\n// ─── aggregates (pinned) ─────────────────────────────────────────────────────\n\nconst presentNums = (cells: readonly Cell[]): number[] =>\n cells.map(asNum).filter((n): n is number => n !== undefined);\n\nconst aggCells = (fn: AggFn, srcType: ColumnType, cells: readonly Cell[]): Cell => {\n const present = cells.filter((c) => !isNull(c));\n switch (fn) {\n case 'count':\n return { kind: 'Int', value: present.length };\n case 'first':\n return cells.length === 0 ? NULL : cells[0]!;\n case 'last':\n return cells.length === 0 ? NULL : cells[cells.length - 1]!;\n case 'sum': {\n const nums = presentNums(cells);\n if (nums.length === 0) return NULL;\n return srcType === 'int'\n ? { kind: 'Int', value: nums.reduce((acc, x) => acc + Math.trunc(x), 0) }\n : { kind: 'Float', value: nums.reduce((acc, x) => acc + x, 0) };\n }\n case 'mean': {\n const nums = presentNums(cells);\n if (nums.length === 0) return NULL;\n return { kind: 'Float', value: nums.reduce((a, x) => a + x, 0) / nums.length };\n }\n case 'stddev': {\n const nums = presentNums(cells);\n if (nums.length === 0) return NULL;\n const n = nums.length;\n const mean = nums.reduce((a, x) => a + x, 0) / n;\n const variance = nums.reduce((a, x) => a + (x - mean) * (x - mean), 0) / n;\n return { kind: 'Float', value: Math.sqrt(variance) };\n }\n case 'median': {\n const nums = presentNums(cells)\n .slice()\n .sort((a, b) => a - b);\n if (nums.length === 0) return NULL;\n const n = nums.length;\n const mid = Math.floor(n / 2);\n if (n % 2 === 1) return { kind: 'Float', value: nums[mid]! };\n return { kind: 'Float', value: (nums[mid - 1]! + nums[mid]!) / 2 };\n }\n case 'min':\n case 'max': {\n if (present.length === 0) return NULL;\n let acc = present[0]!;\n for (let i = 1; i < present.length; i += 1) {\n const b = present[i]!;\n const c = compareCells(acc, b);\n if (c !== undefined) {\n // keep `acc` iff (fn=min) == (c<=0); else take b\n acc = (fn === 'min') === c <= 0 ? acc : b;\n }\n // c === undefined ⇒ keep acc (matches F# `None -> a`)\n }\n return acc;\n }\n }\n};\n\nconst aggType = (fn: AggFn, srcType: ColumnType): ColumnType => {\n switch (fn) {\n case 'count':\n return 'int';\n case 'mean':\n case 'median':\n case 'stddev':\n return 'float';\n case 'sum':\n case 'min':\n case 'max':\n case 'first':\n case 'last':\n return srcType;\n }\n};\n\n// ─── sort (pinned: stable; nulls last regardless of direction) ───────────────\n\nconst rowKeyCompare = (\n cols: readonly SchemaEntry[],\n by: readonly SortKey[],\n r1: readonly Cell[],\n r2: readonly Cell[],\n): number => {\n for (const { col, dir } of by) {\n const i = colIndex(cols, col);\n if (i < 0) continue;\n const a = r1[i]!;\n const b = r2[i]!;\n const an = isNull(a);\n const bn = isNull(b);\n let c: number;\n if (an && bn) c = 0;\n else if (an && !bn)\n c = 1; // null sorts last\n else if (!an && bn) c = -1;\n else {\n const cc = compareCells(a, b);\n c = cc === undefined ? 0 : dir === 'asc' ? cc : -cc;\n }\n if (c !== 0) return c;\n }\n return 0;\n};\n\n// A stable sort over an immutable rows array (Array.prototype.sort is stable).\nconst stableSort = <T>(xs: readonly T[], cmp: (a: T, b: T) => number): T[] => xs.slice().sort(cmp);\n\n// ─── grouping keys (structural, type-aware) ──────────────────────────────────\n\nconst cellKey = (c: Cell): string => {\n switch (c.kind) {\n case 'Null':\n return 'N';\n case 'Int':\n return 'I' + String(c.value);\n case 'Float':\n return 'F' + String(c.value);\n case 'Bool':\n return 'B' + (c.value ? '1' : '0');\n case 'Str':\n return 'S' + c.value;\n case 'Date':\n return 'D' + c.value;\n case 'Timestamp':\n return 'T' + c.value;\n }\n};\n\nconst rowKey = (cells: readonly Cell[]): string => cells.map(cellKey).join('\u0001');\n\n// ─── per-verb evaluation ─────────────────────────────────────────────────────\n\nconst evalFilter = (f: Frame, pred: ColExpr, env: EvalEnv = EMPTY_ENV): DR<Frame> => {\n const out: (readonly Cell[])[] = [];\n for (const row of f.rows) {\n const r = evalExpr(f.cols, row, pred, env);\n if (!r.ok) return r;\n if (r.value.kind === 'Bool' && r.value.value) out.push(row);\n }\n return dok({ ...f, rows: out });\n};\n\nconst evalProject = (f: Frame, pairs: readonly { a: string; b: string }[]): DR<Frame> => {\n const resolved: { out: string; type: ColumnType; index: number }[] = [];\n for (const { a, b } of pairs) {\n const i = colIndex(f.cols, a);\n if (i < 0) return derr(unknownColumn(a, available(f.cols)));\n resolved.push({ out: b, type: f.cols[i]!.type, index: i });\n }\n return dok({\n cols: resolved.map((r) => ({ name: r.out, type: r.type })),\n rows: f.rows.map((row) => resolved.map((r) => row[r.index]!)),\n });\n};\n\nconst evalDerive = (f: Frame, name: string, expr: ColExpr, env: EvalEnv = EMPTY_ENV): DR<Frame> => {\n const newCells: Cell[] = [];\n for (const row of f.rows) {\n const r = evalExpr(f.cols, row, expr, env);\n if (!r.ok) return r;\n newCells.push(r.value);\n }\n const ty = inferType(newCells);\n const i = colIndex(f.cols, name);\n if (i >= 0) {\n return dok({\n cols: f.cols.map((e, j) => (j === i ? { name: e.name, type: ty } : e)),\n rows: f.rows.map((row, ri) => row.map((cell, j) => (j === i ? newCells[ri]! : cell))),\n });\n }\n return dok({\n cols: [...f.cols, { name, type: ty }],\n rows: f.rows.map((row, ri) => [...row, newCells[ri]!]),\n });\n};\n\nconst evalGroupBy = (f: Frame, keys: readonly string[], aggs: readonly Agg[]): DR<Frame> => {\n for (const k of keys) {\n if (colIndex(f.cols, k) < 0) return derr(unknownColumn(k, available(f.cols)));\n }\n const idxs = keys.map((k) => colIndex(f.cols, k));\n const keyOf = (row: readonly Cell[]): Cell[] => idxs.map((i) => row[i]!);\n\n const order: string[] = [];\n const groups = new Map<string, { key: Cell[]; rows: (readonly Cell[])[] }>();\n for (const row of f.rows) {\n const k = keyOf(row);\n const ks = rowKey(k);\n const g = groups.get(ks);\n if (g === undefined) {\n order.push(ks);\n groups.set(ks, { key: k, rows: [row] });\n } else {\n g.rows.push(row);\n }\n }\n\n const resolvedAggs: { agg: Agg; type: ColumnType; index: number }[] = [];\n for (const a of aggs) {\n const ty = colType(f.cols, a.of);\n if (ty === undefined) return derr(unknownColumn(a.of, available(f.cols)));\n resolvedAggs.push({ agg: a, type: ty, index: colIndex(f.cols, a.of) });\n }\n\n const keyCols: SchemaEntry[] = keys.map((k) => ({ name: k, type: colType(f.cols, k)! }));\n const aggCols: SchemaEntry[] = resolvedAggs.map((r) => ({\n name: r.agg.name,\n type: aggType(r.agg.fn, r.type),\n }));\n\n const rows = order.map((ks) => {\n const g = groups.get(ks)!;\n const aggVals = resolvedAggs.map((r) =>\n aggCells(\n r.agg.fn,\n r.type,\n g.rows.map((row) => row[r.index]!),\n ),\n );\n return [...g.key, ...aggVals];\n });\n\n return dok({ cols: [...keyCols, ...aggCols], rows });\n};\n\nconst evalSort = (f: Frame, by: readonly SortKey[]): Frame => ({\n ...f,\n rows: stableSort(f.rows, (a, b) => rowKeyCompare(f.cols, by, a, b)),\n});\n\nconst evalDistinct = (f: Frame): Frame => {\n const seen = new Set<string>();\n const out: (readonly Cell[])[] = [];\n for (const row of f.rows) {\n const k = rowKey(row);\n if (!seen.has(k)) {\n seen.add(k);\n out.push(row);\n }\n }\n return { ...f, rows: out };\n};\n\nconst evalLimit = (f: Frame, n: number, offset: number): Frame => {\n const start = Math.min(Math.max(0, offset), f.rows.length);\n const take = Math.max(0, n);\n return { ...f, rows: f.rows.slice(start, start + take) };\n};\n\nconst evalJoin = (\n f: Frame,\n right: Frame,\n on: readonly { a: string; b: string }[],\n how: string,\n): DR<Frame> => {\n const li: number[] = [];\n const ri: number[] = [];\n for (const { a, b } of on) {\n const il = colIndex(f.cols, a);\n if (il < 0) return derr(unknownColumn(a, [...available(f.cols), ...available(right.cols)]));\n const ir = colIndex(right.cols, b);\n if (ir < 0) return derr(unknownColumn(b, [...available(f.cols), ...available(right.cols)]));\n li.push(il);\n ri.push(ir);\n }\n const keyMatch = (lr: readonly Cell[], rr: readonly Cell[]): boolean =>\n li.every((i, k) => cellEq(lr[i]!, rr[ri[k]!]!));\n\n const leftNames = new Set(available(f.cols));\n const rightCols: SchemaEntry[] = right.cols.map((e) => ({\n name: leftNames.has(e.name) ? e.name + '_right' : e.name,\n type: e.type,\n }));\n const outCols = [...f.cols, ...rightCols];\n const leftNulls: Cell[] = f.cols.map(() => NULL);\n const rightNulls: Cell[] = right.cols.map(() => NULL);\n\n const leftSide: (readonly Cell[])[] = [];\n for (const lr of f.rows) {\n const matches = right.rows.filter((rr) => keyMatch(lr, rr));\n if (matches.length === 0) {\n if (how === 'left' || how === 'outer') leftSide.push([...lr, ...rightNulls]);\n // inner / right with no match: emit nothing\n } else {\n for (const rr of matches) leftSide.push([...lr, ...rr]);\n }\n }\n\n const rightOnly: (readonly Cell[])[] = [];\n if (how === 'right' || how === 'outer') {\n for (const rr of right.rows) {\n if (!f.rows.some((lr) => keyMatch(lr, rr))) rightOnly.push([...leftNulls, ...rr]);\n }\n }\n\n return dok({ cols: outCols, rows: [...leftSide, ...rightOnly] });\n};\n\nconst evalUnion = (f: Frame, other: Frame): DR<Frame> => {\n const an = available(f.cols);\n const bn = available(other.cols);\n if (an.length !== bn.length || an.some((n, i) => n !== bn[i])) {\n return derr({ kind: 'JoinError', detail: 'union requires matching column names' });\n }\n return dok({ ...f, rows: [...f.rows, ...other.rows] });\n};\n\nconst evalWindow = (f: Frame, spec: WindowSpecLike): DR<Frame> => {\n const ofIdx = colIndex(f.cols, spec.of);\n if (ofIdx < 0 && spec.fn !== 'rowNumber' && spec.fn !== 'rank') {\n return derr(unknownColumn(spec.of, available(f.cols)));\n }\n const partIdx = spec.partitionBy.map((p) => colIndex(f.cols, p)).filter((i) => i >= 0);\n const partKey = (row: readonly Cell[]): string => rowKey(partIdx.map((i) => row[i]!));\n\n // partition (first-appearance order), tagging each row with its original index\n const order: string[] = [];\n const partitions = new Map<string, { index: number; row: readonly Cell[] }[]>();\n f.rows.forEach((row, i) => {\n const k = partKey(row);\n const p = partitions.get(k);\n if (p === undefined) {\n order.push(k);\n partitions.set(k, [{ index: i, row }]);\n } else {\n p.push({ index: i, row });\n }\n });\n\n const valueAt = (row: readonly Cell[]): Cell => (ofIdx >= 0 ? row[ofIdx]! : NULL);\n\n const computed: { index: number; out: Cell }[] = [];\n for (const k of order) {\n const members = partitions.get(k)!;\n const ordered = stableSort(members, (a, b) =>\n rowKeyCompare(f.cols, spec.orderBy, a.row, b.row),\n );\n const vals = ordered.map((m) => valueAt(m.row));\n let outs: Cell[];\n switch (spec.fn) {\n case 'rowNumber':\n outs = ordered.map((_, i) => ({ kind: 'Int', value: i + 1 }));\n break;\n case 'rank': {\n // ties (equal order keys) share a rank; running sum of step (0/1)\n const steps = ordered.map((m, i) =>\n i === 0\n ? 1\n : rowKeyCompare(f.cols, spec.orderBy, ordered[i - 1]!.row, m.row) === 0\n ? 0\n : 1,\n );\n let acc = 0;\n outs = steps.map((s) => {\n acc += s;\n return { kind: 'Int', value: acc };\n });\n break;\n }\n case 'lag':\n outs = [NULL, ...vals.slice(0, Math.max(0, vals.length - 1))];\n break;\n case 'lead':\n outs = [...vals.slice(Math.min(1, vals.length)), NULL];\n break;\n case 'cumulSum': {\n let acc = 0;\n outs = vals.map((v) => {\n const n = asNum(v);\n if (n !== undefined) acc += n;\n return { kind: 'Float', value: acc };\n });\n break;\n }\n case 'rollingMean':\n outs = vals.map((_, i) => {\n const lo = Math.max(0, i - 2);\n const window = vals.slice(lo, i + 1);\n const nums = window.map(asNum).filter((n): n is number => n !== undefined);\n return nums.length === 0\n ? NULL\n : { kind: 'Float', value: nums.reduce((a, x) => a + x, 0) / nums.length };\n });\n break;\n }\n ordered.forEach((m, i) => computed.push({ index: m.index, out: outs[i]! }));\n }\n\n computed.sort((a, b) => a.index - b.index);\n const outCells = computed.map((c) => c.out);\n\n let ty: ColumnType;\n switch (spec.fn) {\n case 'rowNumber':\n case 'rank':\n ty = 'int';\n break;\n case 'cumulSum':\n case 'rollingMean':\n ty = 'float';\n break;\n case 'lag':\n case 'lead':\n ty = colType(f.cols, spec.of) ?? 'string';\n break;\n default:\n ty = 'string';\n }\n\n return dok({\n cols: [...f.cols, { name: spec.as, type: ty }],\n rows: f.rows.map((row, i) => [...row, outCells[i]!]),\n });\n};\n\nconst evalPivot = (f: Frame, spec: PivotSpecLike): DR<Frame> => {\n const need = (name: string): number | undefined => {\n const i = colIndex(f.cols, name);\n return i >= 0 ? i : undefined;\n };\n const idxIdx: number[] = [];\n for (const n of spec.index) {\n const i = need(n);\n if (i === undefined) return derr(unknownColumn(n, available(f.cols)));\n idxIdx.push(i);\n }\n const onIdx = need(spec.on);\n if (onIdx === undefined) return derr(unknownColumn(spec.on, available(f.cols)));\n const valIdx = need(spec.values);\n if (valIdx === undefined) return derr(unknownColumn(spec.values, available(f.cols)));\n const valType = f.cols[valIdx]!.type;\n\n const indexKey = (row: readonly Cell[]): Cell[] => idxIdx.map((i) => row[i]!);\n\n // distinct on-values (sorted by canonical string for a deterministic column order)\n const onSeen = new Set<string>();\n const onValues: Cell[] = [];\n for (const row of f.rows) {\n const c = row[onIdx]!;\n if (isNull(c)) continue;\n const k = cellKey(c);\n if (!onSeen.has(k)) {\n onSeen.add(k);\n onValues.push(c);\n }\n }\n onValues.sort((a, b) => {\n const sa = cellString(a);\n const sb = cellString(b);\n return sa < sb ? -1 : sa > sb ? 1 : 0;\n });\n\n // index groups, first-appearance order\n const order: Cell[][] = [];\n const orderSeen = new Set<string>();\n for (const row of f.rows) {\n const k = indexKey(row);\n const ks = rowKey(k);\n if (!orderSeen.has(ks)) {\n orderSeen.add(ks);\n order.push(k);\n }\n }\n\n const idxCols: SchemaEntry[] = spec.index.map((n) => ({ name: n, type: colType(f.cols, n)! }));\n const pivotCols: SchemaEntry[] = onValues.map((ov) => ({\n name: cellString(ov),\n type: aggType(spec.agg, valType),\n }));\n\n const rows = order.map((k) => {\n const ks = rowKey(k);\n const cellsFor = (ov: Cell): Cell => {\n const matching = f.rows\n .filter((row) => rowKey(indexKey(row)) === ks && cellEq(row[onIdx]!, ov))\n .map((row) => row[valIdx]!);\n return aggCells(spec.agg, valType, matching);\n };\n return [...k, ...onValues.map(cellsFor)];\n });\n\n return dok({ cols: [...idxCols, ...pivotCols], rows });\n};\n\nconst evalUnpivot = (\n f: Frame,\n idVars: readonly string[],\n valueVars: readonly string[],\n): DR<Frame> => {\n const idIdx: number[] = [];\n for (const n of idVars) {\n const i = colIndex(f.cols, n);\n if (i < 0) return derr(unknownColumn(n, available(f.cols)));\n idIdx.push(i);\n }\n const valIdx: number[] = [];\n for (const n of valueVars) {\n const i = colIndex(f.cols, n);\n if (i < 0) return derr(unknownColumn(n, available(f.cols)));\n valIdx.push(i);\n }\n const idCols: SchemaEntry[] = idVars.map((n) => ({ name: n, type: colType(f.cols, n)! }));\n let valType: ColumnType = 'string';\n for (const n of valueVars) {\n const t = colType(f.cols, n);\n if (t !== undefined) {\n valType = t;\n break;\n }\n }\n const cols: SchemaEntry[] = [\n ...idCols,\n { name: 'variable', type: 'string' },\n { name: 'value', type: valType },\n ];\n const rows: Cell[][] = [];\n for (const row of f.rows) {\n const idCells = idIdx.map((i) => row[i]!);\n valueVars.forEach((name, k) => {\n rows.push([...idCells, { kind: 'Str', value: name }, row[valIdx[k]!]!]);\n });\n }\n return dok({ cols, rows });\n};\n\n// Window/Pivot spec aliases (the schema `WindowSpec`/`PivotSpec` shapes).\ninterface WindowSpecLike {\n readonly partitionBy: readonly string[];\n readonly orderBy: readonly SortKey[];\n readonly fn: 'rowNumber' | 'rank' | 'lag' | 'lead' | 'cumulSum' | 'rollingMean';\n readonly of: string;\n readonly as: string;\n}\ninterface PivotSpecLike {\n readonly index: readonly string[];\n readonly on: string;\n readonly values: string;\n readonly agg: AggFn;\n}\n\n// ─── pipeline driver ─────────────────────────────────────────────────────────\n\n/** Resolve a `Ref` source to a concrete `Table` (default: reject every ref). */\nexport type SourceResolver = (ref: string) => DR<Table>;\n\n/** A `Ref`-rejecting resolver — the default for embedded-only pipelines. */\nexport const noResolve: SourceResolver = (ref) => derr({ kind: 'UnresolvedSource', ref });\n\n/** Evaluate a `DataSource` to a concrete `Table`, resolving a `Ref` through `resolve`. */\nexport const evalSource = (resolve: SourceResolver, src: DataSource): DR<Table> =>\n src.kind === 'Embedded' ? dok(src.table) : resolve(src.name);\n\nconst evalStep = (\n resolve: SourceResolver,\n f: Frame,\n t: Transform,\n env: EvalEnv = EMPTY_ENV,\n): DR<Frame> => {\n switch (t.kind) {\n case 'filter':\n return evalFilter(f, t.pred, env);\n case 'project':\n return evalProject(f, t.cols);\n case 'derive':\n return evalDerive(f, t.name, t.expr, env);\n case 'groupBy':\n return evalGroupBy(f, t.keys, t.aggs);\n case 'sort':\n return dok(evalSort(f, t.by));\n case 'distinct':\n return dok(evalDistinct(f));\n case 'limit':\n return dok(evalLimit(f, t.n, t.offset));\n case 'window':\n return evalWindow(f, t.spec);\n case 'pivot':\n return evalPivot(f, t.spec);\n case 'unpivot':\n return evalUnpivot(f, t.idVars, t.valueVars);\n case 'join': {\n const r = evalSource(resolve, t.source);\n if (!r.ok) return r;\n return evalJoin(f, toFrame(r.value), t.on, t.how);\n }\n case 'union': {\n const r = evalSource(resolve, t.source);\n if (!r.ok) return r;\n return evalUnion(f, toFrame(r.value));\n }\n }\n};\n\n/**\n * The reference evaluator: fold the pipeline over the input table, threading a\n * `Frame`. `resolve` provides any `Ref` source a `Join` / `Union` names.\n */\nexport const evalPipelineWithInEnv = (\n resolve: SourceResolver,\n env: EvalEnv,\n pipeline: readonly Transform[],\n input: Table,\n): DR<Table> => {\n let f = toFrame(input);\n for (const step of pipeline) {\n const r = evalStep(resolve, f, step, env);\n if (!r.ok) return r;\n f = r.value;\n }\n return dok(ofFrame(f));\n};\n\nexport const evalPipelineWith = (\n resolve: SourceResolver,\n pipeline: readonly Transform[],\n input: Table,\n): DR<Table> => evalPipelineWithInEnv(resolve, EMPTY_ENV, pipeline, input);\n\n/** The reference evaluator over embedded sources only (`Ref` ⇒ `UnresolvedSource`). */\nexport const evalPipeline = (pipeline: readonly Transform[], input: Table): DR<Table> =>\n evalPipelineWith(noResolve, pipeline, input);\n\n/** The env-aware evaluator over embedded sources only (fuaran-core#77 / Phase 424). */\nexport const evalPipelineInEnv = (\n env: EvalEnv,\n pipeline: readonly Transform[],\n input: Table,\n): DR<Table> => evalPipelineWithInEnv(noResolve, env, pipeline, input);\n\n/** Render an `EvalError` as a stable human string (mirrors F# `DataFrame.errorString`). */\nexport const evalErrorString = (e: EvalError): string => {\n switch (e.kind) {\n case 'UnknownColumn':\n return \"unknown column '\" + e.name + \"'; available: \" + e.available.join(', ');\n case 'TypeError':\n return 'type error: ' + e.detail;\n case 'AggError':\n return 'aggregate error: ' + e.detail;\n case 'JoinError':\n return 'join error: ' + e.detail;\n case 'ArityError':\n return \"function '\" + e.fn + \"' expects \" + e.expected + ' args, got ' + e.got;\n case 'UnresolvedSource':\n return 'unresolved source ref: ' + e.ref;\n case 'UnboundParam':\n return \"unbound param '\" + e.name + \"'; bound: \" + e.bound.join(', ');\n }\n};\n\n// ─── param derivation (fuaran-core#77 / Phase 424) ───────────────────────────\n\nconst colExprParams = (e: ColExpr): string[] => {\n switch (e.kind) {\n case 'col':\n case 'lit':\n return [];\n case 'param':\n return [e.name];\n case 'binary':\n return [...colExprParams(e.left), ...colExprParams(e.right)];\n case 'not':\n return colExprParams(e.expr);\n case 'coalesce':\n return e.exprs.flatMap(colExprParams);\n case 'case':\n return [\n ...e.cases.flatMap((br) => [...colExprParams(br.when), ...colExprParams(br.then)]),\n ...colExprParams(e.else),\n ];\n case 'cast':\n return colExprParams(e.expr);\n case 'apply':\n return e.args.flatMap(colExprParams);\n case 'in':\n return [...colExprParams(e.expr), ...e.items.flatMap(colExprParams)];\n case 'isNull':\n return colExprParams(e.expr);\n case 'inParam':\n // A list param shares the scalar params' namespace (reactivity derivation needs it).\n return [...colExprParams(e.expr), e.param];\n }\n};\n\n/** Every `ColExpr.param` name a single step references (only `filter` / `derive` carry a ColExpr). */\nexport const stepParams = (t: Transform): readonly string[] => {\n switch (t.kind) {\n case 'filter':\n return colExprParams(t.pred);\n case 'derive':\n return colExprParams(t.expr);\n default:\n return [];\n }\n};\n\n/** Every distinct param name a pipeline references — the TS mirror of Core `Transform.paramsOf`. */\nexport const pipelineParams = (pipeline: readonly Transform[]): readonly string[] => [\n ...new Set(pipeline.flatMap((t) => stepParams(t))),\n];\n","// ============================================================================\n// @fuaran-ui/ops — hand-rolled JSON parser.\n//\n// Port of the local-private `Json` DU + recursive-descent parser inside the\n// F# decoder (Fuaran.UI.Ops.JsonDecode). The F# tier hand-rolls its parser\n// because Fable.SimpleJson / Newtonsoft / System.Text.Json are each pipeline-\n// incompatible (see fuaran-dotnet/docs/migrations/12-E-0-json-decoder.md). TypeScript\n// has `JSON.parse`, but the decoder hand-rolls its own for the same reason the\n// F# tier does: bit-identical handling of the number-edge string sentinels\n// (\"NaN\" / \"Infinity\" / \"-Infinity\"), key-order tolerance, and structural\n// error reporting (path + offset) that `JSON.parse` flattens into an opaque\n// SyntaxError. The AST DU mirrors the F# shape exactly\n// (JNull | JBool | JNumber | JString | JArray | JObject) so the per-NodeKind\n// dispatch in decode.ts stays a straight port.\n//\n// WIRE_FORMAT.md §2 conventions the parser must honour:\n// - object keys arrive in any order (decoder tolerates; encoder sorts) — the\n// AST stores fields in a Map keyed by name, lookups are by key.\n// - number sentinels arrive as quoted strings, so they parse to JString here\n// and decode.ts maps them to the IEEE-754 specials at float slots.\n// ============================================================================\n\nimport type { Result } from '@fuaran-ui/schema';\n\n/** Local JSON AST. Shape-for-shape port of the F# decoder's private `Json` DU. */\nexport type JsonAst =\n | { readonly kind: 'JNull' }\n | { readonly kind: 'JBool'; readonly value: boolean }\n | { readonly kind: 'JNumber'; readonly value: number }\n | { readonly kind: 'JString'; readonly value: string }\n | { readonly kind: 'JArray'; readonly items: readonly JsonAst[] }\n | { readonly kind: 'JObject'; readonly fields: ReadonlyMap<string, JsonAst> };\n\n/** Structural parse failure carrying the byte offset where it was detected. */\nexport interface ParseError {\n readonly message: string;\n readonly offset: number;\n}\n\n// ─── Mutable cursor over the source text ─────────────────────────────────────\n\ninterface ParseState {\n readonly text: string;\n pos: number;\n}\n\nconst peek = (s: ParseState): string => (s.pos < s.text.length ? s.text[s.pos]! : ' ');\n\nconst advance = (s: ParseState): void => {\n s.pos += 1;\n};\n\nconst skipWs = (s: ParseState): void => {\n while (s.pos < s.text.length) {\n const c = s.text[s.pos]!;\n if (c === ' ' || c === '\\t' || c === '\\n' || c === '\\r') {\n advance(s);\n } else {\n break;\n }\n }\n};\n\nconst fail = (s: ParseState, message: string): Result<never, ParseError> => ({\n ok: false,\n error: { message, offset: s.pos },\n});\n\nconst expectChar = (s: ParseState, ch: string): Result<true, ParseError> => {\n if (peek(s) === ch) {\n advance(s);\n return { ok: true, value: true };\n }\n return fail(s, `expected '${ch}' but found '${peek(s)}'`);\n};\n\n// ─── Primitive parsers ───────────────────────────────────────────────────────\n\nconst HEX_DIGIT = /[0-9a-fA-F]/;\n\nconst parseStringRaw = (s: ParseState): Result<string, ParseError> => {\n const open = expectChar(s, '\"');\n if (!open.ok) return open;\n\n let out = '';\n for (;;) {\n if (s.pos >= s.text.length) return fail(s, 'unterminated string');\n const c = s.text[s.pos]!;\n advance(s);\n\n if (c === '\"') {\n return { ok: true, value: out };\n } else if (c === '\\\\') {\n if (s.pos >= s.text.length) return fail(s, 'unterminated escape');\n const esc = s.text[s.pos]!;\n advance(s);\n switch (esc) {\n case '\"':\n out += '\"';\n break;\n case '\\\\':\n out += '\\\\';\n break;\n case '/':\n out += '/';\n break;\n case 'b':\n out += '\\b';\n break;\n case 'f':\n out += '\\f';\n break;\n case 'n':\n out += '\\n';\n break;\n case 'r':\n out += '\\r';\n break;\n case 't':\n out += '\\t';\n break;\n case 'u': {\n if (s.pos + 4 > s.text.length) return fail(s, 'incomplete \\\\u escape');\n const hex = s.text.substring(s.pos, s.pos + 4);\n if (\n !HEX_DIGIT.test(hex[0]!) ||\n !HEX_DIGIT.test(hex[1]!) ||\n !HEX_DIGIT.test(hex[2]!) ||\n !HEX_DIGIT.test(hex[3]!)\n ) {\n return fail(s, `invalid \\\\u escape '${hex}'`);\n }\n s.pos += 4;\n out += String.fromCharCode(parseInt(hex, 16));\n break;\n }\n default:\n return fail(s, `unknown escape '\\\\${esc}'`);\n }\n } else {\n out += c;\n }\n }\n};\n\nconst isNumberChar = (c: string): boolean =>\n c === '-' || c === '+' || c === '.' || c === 'e' || c === 'E' || (c >= '0' && c <= '9');\n\nconst parseNumberRaw = (s: ParseState): Result<number, ParseError> => {\n const start = s.pos;\n while (s.pos < s.text.length && isNumberChar(s.text[s.pos]!)) {\n advance(s);\n }\n const slice = s.text.substring(start, s.pos);\n if (slice.length === 0) {\n return fail(s, `invalid number '${slice}'`);\n }\n const n = Number(slice);\n if (Number.isNaN(n)) {\n return fail(s, `invalid number '${slice}'`);\n }\n return { ok: true, value: n };\n};\n\n// ─── Recursive-descent value parser ──────────────────────────────────────────\n\nconst parseValue = (s: ParseState): Result<JsonAst, ParseError> => {\n skipWs(s);\n const c = peek(s);\n switch (c) {\n case '{':\n return parseObjectValue(s);\n case '[':\n return parseArrayValue(s);\n case '\"': {\n const r = parseStringRaw(s);\n return r.ok ? { ok: true, value: { kind: 'JString', value: r.value } } : r;\n }\n case 't':\n if (s.text.substring(s.pos, s.pos + 4) === 'true') {\n s.pos += 4;\n return { ok: true, value: { kind: 'JBool', value: true } };\n }\n return fail(s, \"expected 'true'\");\n case 'f':\n if (s.text.substring(s.pos, s.pos + 5) === 'false') {\n s.pos += 5;\n return { ok: true, value: { kind: 'JBool', value: false } };\n }\n return fail(s, \"expected 'false'\");\n case 'n':\n if (s.text.substring(s.pos, s.pos + 4) === 'null') {\n s.pos += 4;\n return { ok: true, value: { kind: 'JNull' } };\n }\n return fail(s, \"expected 'null'\");\n default: {\n const r = parseNumberRaw(s);\n return r.ok ? { ok: true, value: { kind: 'JNumber', value: r.value } } : r;\n }\n }\n};\n\nconst parseObjectValue = (s: ParseState): Result<JsonAst, ParseError> => {\n const open = expectChar(s, '{');\n if (!open.ok) return open;\n skipWs(s);\n\n const fields = new Map<string, JsonAst>();\n if (peek(s) === '}') {\n advance(s);\n return { ok: true, value: { kind: 'JObject', fields } };\n }\n\n for (;;) {\n skipWs(s);\n const keyR = parseStringRaw(s);\n if (!keyR.ok) return keyR;\n skipWs(s);\n const colon = expectChar(s, ':');\n if (!colon.ok) return colon;\n const valR = parseValue(s);\n if (!valR.ok) return valR;\n fields.set(keyR.value, valR.value);\n skipWs(s);\n const c = peek(s);\n if (c === ',') {\n advance(s);\n } else if (c === '}') {\n advance(s);\n return { ok: true, value: { kind: 'JObject', fields } };\n } else {\n return fail(s, `expected ',' or '}' but found '${c}'`);\n }\n }\n};\n\nconst parseArrayValue = (s: ParseState): Result<JsonAst, ParseError> => {\n const open = expectChar(s, '[');\n if (!open.ok) return open;\n skipWs(s);\n\n const items: JsonAst[] = [];\n if (peek(s) === ']') {\n advance(s);\n return { ok: true, value: { kind: 'JArray', items } };\n }\n\n for (;;) {\n const valR = parseValue(s);\n if (!valR.ok) return valR;\n items.push(valR.value);\n skipWs(s);\n const c = peek(s);\n if (c === ',') {\n advance(s);\n } else if (c === ']') {\n advance(s);\n return { ok: true, value: { kind: 'JArray', items } };\n } else {\n return fail(s, `expected ',' or ']' but found '${c}'`);\n }\n }\n};\n\n/**\n * Parse a JSON document into the local AST. Mirrors the F# `tryParse`: empty /\n * whitespace-only input is a structural error; otherwise a single top-level\n * value is parsed (trailing content after the first value is not inspected,\n * matching the F# parser).\n */\nexport const parse = (input: string): Result<JsonAst, ParseError> => {\n const s: ParseState = { text: input, pos: 0 };\n skipWs(s);\n if (s.pos >= s.text.length) {\n return { ok: false, error: { message: 'input is empty', offset: 0 } };\n }\n return parseValue(s);\n};\n\n// ─── AST field-lookup helpers (used by decode.ts) ────────────────────────────\n\n/** Look up an object field by key (key-order tolerant per WIRE_FORMAT.md §2). */\nexport const field = (fields: ReadonlyMap<string, JsonAst>, key: string): JsonAst | undefined =>\n fields.get(key);\n","// ============================================================================\n// @fuaran-ui/ops — structural decoder for the canonical-JSON wire form.\n//\n// Port of Fuaran.UI.Ops.JsonDecode (decodeNode / decodeOp). The inverse of\n// encode.ts: parses the hand-rolled JSON AST (parse.ts) into the typed tree,\n// storage-shape erased to `Node<unknown>` / `TreeOp<unknown>` (the wire carries\n// no typed-`'Msg` information — every `'Msg` payload encoded as \"<closure>\").\n//\n// Every wire-shape violation surfaces a structured, recoverable `DecodeError`\n// (never a throw) carrying one of the six `DecodeErrorCode`s + a `$`-rooted\n// dotted path, byte-identical to the F# decoder's codes/paths (WIRE_FORMAT.md\n// §6). The six codes are the stable AI-recovery surface.\n//\n// Closure-bearing slots (§4) decode to placeholders that re-encode to\n// \"<closure>\"; opaque `Binding.Static` payloads (§5) decode to the literal\n// string \"<opaque>\", which re-encodes to \"<opaque>\" — keeping the round-trip\n// byte-stable. Typed re-attachment of the erased payloads is the host's job.\n// ============================================================================\n\nimport {\n FORM_FIELD_KIND_NAMES,\n NODE_KIND_GROUPS,\n controlValueDefaults,\n projectSelectionField,\n} from '@fuaran-ui/schema';\nimport type {\n Accessibility,\n Action,\n Agg,\n AggFn,\n AriaRole,\n BadgeSpec,\n BinOp,\n Cell,\n ColExpr,\n ColPair,\n ColumnType,\n DataColumn,\n DataSource,\n InvokeArg,\n JoinKind,\n ScalarFn,\n SchemaEntry,\n SortKey,\n Transform,\n TransformParam,\n WindowFn,\n LinkSpec,\n BadgeVariant,\n Binding,\n BoxLayout,\n BoxRole,\n BoxSpec,\n CallResultTarget,\n ButtonSpec,\n ButtonVariant,\n CalloutSpec,\n CellFormat,\n CellKindErased,\n ChartKind,\n ChartSpec,\n ColumnErased,\n ColumnWidth,\n ContentHash,\n DateVariant,\n DeterminismSource,\n DisclosureSpec,\n DisplayKind,\n EffectClass,\n Emphasis,\n ImageSpec,\n ImageVariant,\n ListSpec,\n ModalSpec,\n ScrollAreaSpec,\n ScrollOrientation,\n ToastSpec,\n CodeBlockSpec,\n CurveCommand,\n DrawPoint,\n DrawStyle,\n DrawingSpec,\n Shape,\n ViewBox,\n MathSpec,\n MathDisplay,\n FontVoice,\n StyleRole,\n ErrorPayload,\n FileReadEncoding,\n FileUploadSpec,\n FilterSpec,\n FragmentArg,\n FragmentScalar,\n Format,\n FormField,\n FormFieldKind,\n FormSpec,\n FragmentId,\n GridSpec,\n HashStrictness,\n HeadingSpec,\n HeadingVariant,\n HoleDecl,\n HoleValueSpace,\n HostEffect,\n IconSource,\n InputKind,\n JsonValue,\n MapMarker,\n MetricSpec,\n LabelValueRowSpec,\n FactSpec,\n LayoutKind,\n LiveRegionKind,\n LocaleSource,\n LocalFlushTrigger,\n MarkdownSpec,\n Node,\n NodeId,\n NodeKind,\n Orientation,\n ProgressSpec,\n Result,\n SelectOption,\n SelectSpec,\n SemanticStyle,\n SkeletonSpec,\n SparklineSpec,\n SplitPanelSpec,\n StateBehaviour,\n SummaryListSpec,\n StepperSpec,\n StyleWeight,\n TabHeader,\n TableSpec,\n TabsSpec,\n TextAnchor,\n TextSource,\n ToneVariant,\n VisKind,\n} from '@fuaran-ui/schema';\n\nimport { type JsonAst, parse } from './parse.js';\nimport type { TreeOp } from './treeOp.js';\n\n// ─── DecodeError surface ─────────────────────────────────────────────────────\n\n/** Stable AI-friendly discriminator for decode-time failures (WIRE_FORMAT.md §6). */\nexport type DecodeErrorCode =\n | 'INVALID_JSON'\n | 'MISSING_FIELD'\n | 'WRONG_TYPE'\n | 'UNKNOWN_DU_CASE'\n | 'WRONG_NODE_KIND'\n | 'EMPTY_NODE_ID';\n\n/** AI-recoverable decode-time failure. Mirrors the F# `DecodeError` record. */\nexport interface DecodeError {\n readonly code: DecodeErrorCode;\n readonly path: string;\n readonly message: string;\n readonly expectedShape?: string;\n}\n\ntype R<T> = Result<T, DecodeError>;\n\nconst ok = <T>(value: T): R<T> => ({ ok: true, value });\n\nconst makeError = (\n code: DecodeErrorCode,\n path: string,\n message: string,\n expectedShape?: string,\n): R<never> => ({\n ok: false,\n error:\n expectedShape === undefined ? { code, path, message } : { code, path, message, expectedShape },\n});\n\nconst missingField = (path: string, key: string, expected: string): R<never> =>\n makeError('MISSING_FIELD', `${path}.${key}`, `missing required field '${key}'`, expected);\n\nconst wrongType = (path: string, expected: string): R<never> =>\n makeError('WRONG_TYPE', path, `expected ${expected}`, expected);\n\nconst unknownDuCase = (path: string, got: string, expected: string): R<never> =>\n makeError('UNKNOWN_DU_CASE', `${path}.$type`, `unknown discriminator '${got}'`, expected);\n\nconst CLOSURE = '<closure>';\nconst OPAQUE = '<opaque>';\n\n// ─── AST require-helpers ─────────────────────────────────────────────────────\n\ntype Fields = ReadonlyMap<string, JsonAst>;\n\nconst requireObject = (path: string, j: JsonAst): R<Fields> =>\n j.kind === 'JObject' ? ok(j.fields) : wrongType(path, 'JSON object');\n\n// Lenient AI-ingest (WIRE_FORMAT.md 3.6, generalised 2026-07-18): a Static\n// envelope wrapped around a PLAIN scalar unwraps before the scalar readers —\n// the inverse of the bare-scalar-in-Binding-slot confusion, applied at every\n// plain-scalar position in one place. Mirror of F# unwrapStaticEnvelope.\nconst unwrapStaticEnvelope = (j: JsonAst): JsonAst => {\n if (j.kind === 'JObject') {\n const t = j.fields.get('$type');\n const inner = j.fields.get('value');\n if (t !== undefined && t.kind === 'JString' && t.value === 'Static' && inner !== undefined) {\n return inner;\n }\n }\n return j;\n};\n\nconst requireString = (path: string, jRaw: JsonAst): R<string> => {\n const j = unwrapStaticEnvelope(jRaw);\n return j.kind === 'JString' ? ok(j.value) : wrongType(path, 'JSON string');\n};\n\nconst requireBool = (path: string, jRaw: JsonAst): R<boolean> => {\n const j = unwrapStaticEnvelope(jRaw);\n return j.kind === 'JBool' ? ok(j.value) : wrongType(path, 'JSON boolean');\n};\n\nconst requireFloat = (path: string, jRaw: JsonAst): R<number> => {\n const j = unwrapStaticEnvelope(jRaw);\n if (j.kind === 'JNumber') return ok(j.value);\n if (j.kind === 'JString') {\n if (j.value === 'NaN') return ok(NaN);\n if (j.value === 'Infinity') return ok(Infinity);\n if (j.value === '-Infinity') return ok(-Infinity);\n }\n return wrongType(path, \"JSON number (or 'NaN' / 'Infinity' / '-Infinity' sentinel string)\");\n};\n\nconst requireInt = (path: string, jRaw: JsonAst): R<number> => {\n const j = unwrapStaticEnvelope(jRaw);\n return j.kind === 'JNumber' ? ok(Math.trunc(j.value)) : wrongType(path, 'JSON number (integer)');\n};\n\nconst requireArray = (path: string, j: JsonAst): R<readonly JsonAst[]> =>\n j.kind === 'JArray' ? ok(j.items) : wrongType(path, 'JSON array');\n\nconst tryField = (fields: Fields, key: string): JsonAst | undefined => fields.get(key);\n\nconst requireField = (path: string, fields: Fields, key: string, expected: string): R<JsonAst> => {\n const v = fields.get(key);\n return v === undefined ? missingField(path, key, expected) : ok(v);\n};\n\nconst requireDiscriminator = (path: string, fields: Fields): R<string> => {\n const v = fields.get('$type');\n if (v === undefined)\n return missingField(path, '$type', \"DU object must carry a '$type' discriminator string\");\n return v.kind === 'JString'\n ? ok(v.value)\n : wrongType(`${path}.$type`, 'JSON string discriminator');\n};\n\n/** Decode a required field through `dec` at `path.key`. */\nconst reqField = <T>(\n path: string,\n fields: Fields,\n key: string,\n expected: string,\n dec: (p: string, j: JsonAst) => R<T>,\n): R<T> => {\n const v = requireField(path, fields, key, expected);\n return v.ok ? dec(`${path}.${key}`, v.value) : v;\n};\n\n/** Decode an optional field; absent → `undefined` (None per WIRE_FORMAT.md §2 rule 4). */\nconst optField = <T>(\n path: string,\n fields: Fields,\n key: string,\n dec: (p: string, j: JsonAst) => R<T>,\n): R<T | undefined> => {\n const v = tryField(fields, key);\n if (v === undefined) return ok(undefined);\n return dec(`${path}.${key}`, v);\n};\n\n// 2026-07-17 - lenient-ingest FIELD-NAME aliases (decode-only; WIRE_FORMAT 3.6).\n// Mirrors the F# requireFieldAliased/optFieldAliased: the canonical name wins\n// when both are present; faithful same-concept mappings only (href->route);\n// re-encode always normalises. Pinned by the lenient/lenient-alias-* fixtures.\nconst fieldAliased = (\n fields: Fields,\n canonical: string,\n aliases: readonly string[],\n): JsonAst | undefined => {\n const v = tryField(fields, canonical);\n if (v !== undefined) return v;\n for (const a of aliases) {\n const w = tryField(fields, a);\n if (w !== undefined) return w;\n }\n return undefined;\n};\n\n/** `reqField` with decode-only field-name aliases; the error names the canonical key. */\nconst reqFieldAliased = <T>(\n path: string,\n fields: Fields,\n canonical: string,\n aliases: readonly string[],\n expected: string,\n dec: (p: string, j: JsonAst) => R<T>,\n): R<T> => {\n const v = fieldAliased(fields, canonical, aliases);\n if (v === undefined) return missingField(path, canonical, expected);\n return dec(`${path}.${canonical}`, v);\n};\n\n/** `optField` with decode-only field-name aliases. */\nconst optFieldAliased = <T>(\n path: string,\n fields: Fields,\n canonical: string,\n aliases: readonly string[],\n dec: (p: string, j: JsonAst) => R<T>,\n): R<T | undefined> => {\n const v = fieldAliased(fields, canonical, aliases);\n if (v === undefined) return ok(undefined);\n return dec(`${path}.${canonical}`, v);\n};\n\nconst traverseIndexed = <T>(\n items: readonly JsonAst[],\n f: (i: number, j: JsonAst) => R<T>,\n): R<T[]> => {\n const out: T[] = [];\n for (let i = 0; i < items.length; i += 1) {\n const r = f(i, items[i]!);\n if (!r.ok) return r;\n out.push(r.value);\n }\n return ok(out);\n};\n\n// ─── obj-erased value decode (port of decodeObj) ─────────────────────────────\n\nconst decodeAstValue = (j: JsonAst): unknown => {\n switch (j.kind) {\n case 'JNull':\n return null;\n case 'JString':\n return j.value;\n case 'JBool':\n return j.value;\n case 'JNumber':\n return j.value;\n case 'JArray':\n return j.items.map(decodeAstValue);\n case 'JObject': {\n const o: Record<string, unknown> = {};\n for (const [k, v] of j.fields) o[k] = decodeAstValue(v);\n return o;\n }\n }\n};\n\n// ─── strict JVal decode (port of jsonToJValStrict / decodeJVal / decodeJValMap) ─\n//\n// The JSON-valued PAYLOAD positions — NodeKind.Custom props, Action.Notify /\n// SetState / AiTool payloads, TextSource.I18n args, and a wire-form UpdateProp\n// value — decode null-REJECTING at any depth: the Fuaran wire model has no null\n// (omit the field instead), and F# `JVal` makes that unrepresentable by\n// construction. Mirrors the F# `jsonToJValStrict` position-for-position — same\n// WRONG_TYPE code + message + `$`-rooted path — so an AI author recovers by\n// omission, not by re-encoding null. This is DISTINCT from `decodeAstValue`\n// above (the Binding.Static / obj seam), which faithfully accepts JNull -> null\n// per the F# `decodeObj`; those positions are left permissive on purpose.\n\nconst nullNotRepresentable = (path: string): R<never> =>\n makeError(\n 'WRONG_TYPE',\n path,\n 'null is not representable in the Fuaran wire model — omit the field instead',\n );\n\nconst decodeJVal = (path: string, j: JsonAst): R<JsonValue> => {\n switch (j.kind) {\n case 'JNull':\n return nullNotRepresentable(path);\n case 'JString':\n return ok(j.value);\n case 'JBool':\n return ok(j.value);\n case 'JNumber':\n return ok(j.value);\n case 'JArray': {\n const out: JsonValue[] = [];\n for (let i = 0; i < j.items.length; i += 1) {\n const r = decodeJVal(`${path}[${i}]`, j.items[i]!);\n if (!r.ok) return r;\n out.push(r.value);\n }\n return ok(out);\n }\n case 'JObject': {\n const out: Record<string, JsonValue> = {};\n for (const [k, v] of j.fields) {\n const r = decodeJVal(`${path}.${k}`, v);\n if (!r.ok) return r;\n out[k] = r.value;\n }\n return ok(out);\n }\n }\n};\n\nconst decodeJValMap = (path: string, j: JsonAst): R<Record<string, JsonValue>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const out: Record<string, JsonValue> = {};\n for (const [k, v] of fo.value) {\n const r = decodeJVal(`${path}.${k}`, v);\n if (!r.ok) return r;\n out[k] = r.value;\n }\n return ok(out);\n};\n\n// ─── Bare-string enum decoders ───────────────────────────────────────────────\n\nconst bareEnum = <T extends string>(\n path: string,\n j: JsonAst,\n valid: readonly T[],\n label: string,\n): R<T> => {\n if (j.kind !== 'JString') return wrongType(path, `JSON string (${label})`);\n if ((valid as readonly string[]).includes(j.value)) return ok(j.value as T);\n return unknownDuCase(path, j.value, valid.join(' | '));\n};\n\nconst ORIENTATION_ALIASES: Readonly<Record<string, Orientation>> = {\n // CSS flex-direction prior: a row lays out horizontally, a column vertically.\n Row: 'Horizontal',\n row: 'Horizontal',\n Column: 'Vertical',\n column: 'Vertical',\n};\n\nconst decodeOrientation = (p: string, j: JsonAst): R<Orientation> => {\n if (j.kind === 'JString' && j.value in ORIENTATION_ALIASES)\n return ok(ORIENTATION_ALIASES[j.value]!);\n return bareEnum(p, j, ['Vertical', 'Horizontal'] as const, 'Orientation');\n};\n\nconst decodeBadgeVariant = (p: string, j: JsonAst): R<BadgeVariant> => {\n // Default -> the identity case; Danger -> the Bootstrap prior (WIRE_FORMAT 3.6).\n if (j.kind === 'JString' && j.value === 'Default') return ok('Neutral');\n if (j.kind === 'JString' && j.value === 'Danger') return ok('Critical');\n return bareEnum(\n p,\n j,\n ['Neutral', 'Brand', 'Success', 'Warning', 'Critical', 'Info'] as const,\n 'BadgeVariant',\n );\n};\n\nconst decodeButtonVariant = (p: string, j: JsonAst): R<ButtonVariant> => {\n // Bootstrap's Danger names the same concept as Destructive (WIRE_FORMAT 3.6).\n if (j.kind === 'JString' && j.value === 'Danger') return ok('Destructive');\n return bareEnum(\n p,\n j,\n ['Primary', 'Secondary', 'Tertiary', 'Destructive'] as const,\n 'ButtonVariant',\n );\n};\n\nconst decodeHeadingVariant = (p: string, j: JsonAst): R<HeadingVariant> => {\n // Default -> the identity case; Title/Page/Section stay rejects (ambiguous mapping).\n if (j.kind === 'JString' && j.value === 'Default') return ok('Standard');\n return bareEnum(p, j, ['Standard', 'Eyebrow', 'Caption', 'Lead'] as const, 'HeadingVariant');\n};\n\nconst decodeImageVariant = (p: string, j: JsonAst): R<ImageVariant> =>\n bareEnum(p, j, ['Default', 'Avatar', 'Rounded'] as const, 'ImageVariant');\n\nconst decodeScrollOrientation = (p: string, j: JsonAst): R<ScrollOrientation> =>\n bareEnum(p, j, ['Vertical', 'Horizontal', 'Both'] as const, 'ScrollOrientation');\n\nconst decodeDateVariant = (p: string, j: JsonAst): R<DateVariant> =>\n bareEnum(p, j, ['Date', 'Time', 'DateTime'] as const, 'DateVariant');\n\nconst decodeMathDisplay = (p: string, j: JsonAst): R<MathDisplay> =>\n bareEnum(p, j, ['Inline', 'Block'] as const, 'MathDisplay');\n\n// Phase 460 — lenient-ingest aliases (decode-only; never encoded — canonical\n// re-encode normalises to the DU case names). Faithful semantic mappings only,\n// documented in WIRE_FORMAT.md §3.6; mirrors the F# `decodeTone`/`decodeEmphasis`.\nconst TONE_ALIASES: Readonly<Record<string, ToneVariant>> = {\n Positive: 'Success',\n Danger: 'Critical',\n Negative: 'Critical',\n Neutral: 'Default',\n};\n\nconst EMPHASIS_ALIASES: Readonly<Record<string, Emphasis>> = {\n Strong: 'Loud',\n Bold: 'Loud',\n Subtle: 'Quiet',\n Muted: 'Quiet',\n};\n\n/**\n * The legal `ToneVariant` names, in one place because two positions now teach them — a\n * `tone` field and (Phase 750) a `TonedPill` tone-map value. A second inline copy is\n * exactly how one of them comes to name six tones. Parity-locked with the F#\n * `toneVariantNames`.\n */\nconst TONE_NAMES = [\n 'Default',\n 'Subdued',\n 'Brand',\n 'Success',\n 'Warning',\n 'Critical',\n 'Info',\n] as const;\n\nconst decodeTone = (p: string, j: JsonAst): R<ToneVariant> => {\n if (j.kind === 'JString' && j.value in TONE_ALIASES) return ok(TONE_ALIASES[j.value]!);\n return bareEnum(p, j, TONE_NAMES, 'ToneVariant');\n};\n\nconst decodeWeight = (p: string, j: JsonAst): R<StyleWeight> =>\n // StyleWeight deliberately not aliased — `Bold`/`Heavy` is font-weight intent, but\n // Compact|Standard|Spacious means density (WIRE_FORMAT.md §3.6).\n bareEnum(p, j, ['Compact', 'Standard', 'Spacious'] as const, 'StyleWeight');\n\nconst decodeEmphasis = (p: string, j: JsonAst): R<Emphasis> => {\n if (j.kind === 'JString' && j.value in EMPHASIS_ALIASES) return ok(EMPHASIS_ALIASES[j.value]!);\n // 0.2.8 (2026-07-19 collision sweep) — `emphasis` is a same-name\n // cross-vocabulary collision (style ENUM here vs behavioural BOOL on\n // Fact/LabelValueRow); models cross it in both directions. A bool in the\n // enum slot projects one-to-one: true ⇒ Loud, false ⇒ Normal. The bool\n // sites' direction lives in `decodeEmphasisFlag`.\n if (j.kind === 'JBool') return ok(j.value ? 'Loud' : 'Normal');\n return bareEnum(p, j, ['Quiet', 'Normal', 'Loud'] as const, 'Emphasis');\n};\n\n/**\n * The behavioural `emphasis` BOOL (Fact / LabelValueRow) — the other half of\n * the same-name collision with the `Emphasis` style enum. ONE shared reader\n * for every bool site (the 0.2.2 coercion lived only on LabelValueRow and\n * only for the exact enum spellings — Fact hard-failed, and the Phase-460\n * alias set never carried over; the 2026-07-19 sweep closed the asymmetry):\n * booleans pass through; the enum AND its aliases project one-to-one\n * (Loud/Strong/Bold ⇒ true, Normal/Quiet/Subtle/Muted ⇒ false); any other\n * string is the didactic reject naming both vocabularies.\n */\nconst decodeEmphasisFlag = (p: string, j: JsonAst): R<boolean> => {\n if (j.kind === 'JBool') return ok(j.value);\n if (j.kind === 'JString') {\n if (j.value === 'Loud' || j.value === 'Strong' || j.value === 'Bold') return ok(true);\n if (j.value === 'Normal' || j.value === 'Quiet' || j.value === 'Subtle' || j.value === 'Muted')\n return ok(false);\n return makeError(\n 'WRONG_TYPE',\n p,\n `expected JSON boolean, got '${j.value}' — this \\`emphasis\\` is a BOOL (is this an emphasised row/fact?); the Emphasis style enum (Quiet|Normal|Loud) lives on style/Metric.emphasis. Write true or false`,\n 'JSON boolean',\n );\n }\n return requireBool(p, j);\n};\n\n// Phase 528.1 — SVG text-anchor for DrawStyle (Shape.Label alignment).\nconst decodeTextAnchor = (p: string, j: JsonAst): R<TextAnchor> =>\n bareEnum(p, j, ['Start', 'Middle', 'End'] as const, 'TextAnchor');\n\n// Phase 147 — the additive style-role / font-voice DUs. Optional on the wire\n// (omitted at default); the style decoder restores the default on absence.\nconst decodeStyleRole = (p: string, j: JsonAst): R<StyleRole> =>\n bareEnum(p, j, ['None', 'Eyebrow', 'Data', 'Lede', 'Caption'] as const, 'StyleRole');\n\nconst decodeFontVoice = (p: string, j: JsonAst): R<FontVoice> =>\n bareEnum(p, j, ['Default', 'Display', 'Structural'] as const, 'FontVoice');\n\nconst decodeChartKind = (p: string, j: JsonAst): R<ChartKind> =>\n bareEnum(p, j, ['Line', 'Bar', 'Area', 'Pie', 'Scatter', 'Heatmap'] as const, 'ChartKind');\n\nconst decodeFileReadEncoding = (p: string, j: JsonAst): R<FileReadEncoding> =>\n bareEnum(p, j, ['Text', 'Base64', 'DataUrl'] as const, 'FileReadEncoding');\n\nconst NAMED_ARIA_ROLES = [\n 'button',\n 'link',\n 'dialog',\n 'alert',\n 'status',\n 'banner',\n 'navigation',\n 'main',\n 'form',\n 'region',\n 'heading',\n 'progressbar',\n 'tab',\n 'tablist',\n 'tabpanel',\n] as const;\n\nconst decodeAriaRole = (p: string, j: JsonAst): R<AriaRole> => {\n // Any string is accepted — named roles or the AriaRole.Custom raw escape\n // (WIRE_FORMAT.md §10.2: both encode as the raw string, decode prefers it).\n if (j.kind !== 'JString') return wrongType(p, 'JSON string (ARIA role)');\n return ok(j.value as AriaRole);\n};\n\nconst decodeLiveRegion = (p: string, j: JsonAst): R<LiveRegionKind> =>\n bareEnum(p, j, ['polite', 'assertive', 'off'] as const, 'LiveRegionKind');\n\n// ─── CellFormat / ColumnWidth / IconSource ───────────────────────────────────\n\nconst decodeCellFormat = (path: string, j: JsonAst): R<CellFormat> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n case 'None':\n return ok({ kind: 'None' });\n case 'Number': {\n const dec = tryField(f, 'decimals');\n if (dec === undefined) return ok({ kind: 'Number' });\n const r = requireInt(`${path}.decimals`, dec);\n return r.ok ? ok({ kind: 'Number', decimals: r.value }) : r;\n }\n case 'Currency': {\n const r = reqField(path, f, 'code', 'ISO currency code string', requireString);\n if (!r.ok) return r;\n return ok<CellFormat>({ kind: 'Currency', code: r.value });\n }\n case 'Percent': {\n const dec = tryField(f, 'decimals');\n if (dec === undefined) return ok({ kind: 'Percent' });\n const r = requireInt(`${path}.decimals`, dec);\n return r.ok ? ok({ kind: 'Percent', decimals: r.value }) : r;\n }\n case 'SignificantDigits': {\n const r = reqField(path, f, 'digits', 'integer digit count', requireInt);\n return r.ok ? ok({ kind: 'SignificantDigits', digits: r.value }) : r;\n }\n case 'Date': {\n const r = reqField(path, f, 'format', 'format string', requireString);\n return r.ok ? ok({ kind: 'Date', format: r.value }) : r;\n }\n case 'Custom':\n return ok({ kind: 'Custom', format: () => CLOSURE });\n default:\n return unknownDuCase(\n path,\n d.value,\n 'None | Number | Currency | Percent | SignificantDigits | Date | Custom',\n );\n }\n};\n\n// ─── Format / LocaleSource (Phase 102) ───────────────────────────────────────\n\nconst decodeFormat = (path: string, j: JsonAst): R<Format> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n case 'Number': {\n const dec = tryField(f, 'decimals');\n if (dec === undefined) return ok({ kind: 'Number' });\n const r = requireInt(`${path}.decimals`, dec);\n return r.ok ? ok({ kind: 'Number', decimals: r.value }) : r;\n }\n case 'Currency': {\n const r = reqField(path, f, 'isoCode', 'ISO-4217 currency code string', requireString);\n return r.ok ? ok<Format>({ kind: 'Currency', isoCode: r.value }) : r;\n }\n case 'Percent': {\n const dec = tryField(f, 'decimals');\n if (dec === undefined) return ok({ kind: 'Percent' });\n const r = requireInt(`${path}.decimals`, dec);\n return r.ok ? ok({ kind: 'Percent', decimals: r.value }) : r;\n }\n case 'Date': {\n const r = reqField(path, f, 'dateStyle', 'DateStyle string', (p, v) =>\n bareEnum(p, v, ['Short', 'Medium', 'Long', 'Full'] as const, 'DateStyle'),\n );\n return r.ok ? ok<Format>({ kind: 'Date', dateStyle: r.value }) : r;\n }\n case 'RelativeTime': {\n const r = reqField(path, f, 'unit', 'RelativeTimeUnit string', (p, v) =>\n bareEnum(\n p,\n v,\n ['Second', 'Minute', 'Hour', 'Day', 'Week', 'Month', 'Year'] as const,\n 'RelativeTimeUnit',\n ),\n );\n return r.ok ? ok<Format>({ kind: 'RelativeTime', unit: r.value }) : r;\n }\n default:\n return unknownDuCase(path, d.value, 'Number | Currency | Percent | Date | RelativeTime');\n }\n};\n\nconst decodeLocaleSource = (path: string, j: JsonAst): R<LocaleSource> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n case 'Ambient':\n return ok({ kind: 'Ambient' });\n case 'Explicit': {\n const r = reqField(path, f, 'tag', 'BCP-47 locale tag string', requireString);\n return r.ok ? ok<LocaleSource>({ kind: 'Explicit', tag: r.value }) : r;\n }\n default:\n return unknownDuCase(path, d.value, 'Ambient | Explicit');\n }\n};\n\nconst decodeColumnWidth = (path: string, j: JsonAst): R<ColumnWidth> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n case 'Auto':\n return ok({ kind: 'Auto' });\n case 'Fixed': {\n const r = reqField(path, f, 'pixels', 'integer pixel count', requireInt);\n return r.ok ? ok({ kind: 'Fixed', pixels: r.value }) : r;\n }\n case 'Flex': {\n const r = reqField(path, f, 'weight', 'float weight', requireFloat);\n return r.ok ? ok({ kind: 'Flex', weight: r.value }) : r;\n }\n default:\n return unknownDuCase(path, d.value, 'Auto | Fixed | Flex');\n }\n};\n\nconst decodeIconSource = (path: string, j: JsonAst): R<IconSource> => {\n const r = requireString(path, j);\n return r.ok ? ok(r.value as IconSource) : r;\n};\n\n// ─── LocalFlushTrigger / Binding (recursive) ─────────────────────────────────\n\nconst decodeLocalFlushTrigger = (path: string, j: JsonAst): R<LocalFlushTrigger> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n case 'OnBlur':\n return ok({ kind: 'OnBlur' });\n case 'OnSubmit':\n return ok({ kind: 'OnSubmit' });\n case 'OnCommitAction':\n return ok({ kind: 'OnCommitAction' });\n case 'OnDebounce': {\n const r = reqField(path, f, 'milliseconds', 'debounce milliseconds integer', requireInt);\n return r.ok ? ok({ kind: 'OnDebounce', milliseconds: r.value }) : r;\n }\n default:\n return unknownDuCase(path, d.value, 'OnBlur | OnSubmit | OnDebounce | OnCommitAction');\n }\n};\n\n// ─── Compute layer (Phase 282 / 284) — DataSource / Transform / ColExpr / Cell ─\n//\n// Structural decoders mirroring the Fuaran.Core codecs (`ColumnCodec.decodeJson`\n// / `DataFrameCodec.decodeTransform` / `decodeExpr` / `cellOfJson`). They surface\n// a Core-style string error (matching `ColumnCodec.errorString`); the\n// `Binding.Transform` arm of `decodeBinding` wraps that into a `WRONG_TYPE`\n// `DecodeError` rooted at `$….source` / `$….pipeline` — byte-identical to the F#\n// UI host's `coreError` wrapping.\n\ntype CR<T> =\n | { readonly ok: true; readonly value: T }\n | { readonly ok: false; readonly error: string };\nconst cok = <T>(value: T): CR<T> => ({ ok: true, value });\nconst cerr = (error: string): CR<never> => ({ ok: false, error });\n\nconst COMPUTE_COLUMN_TYPES: readonly ColumnType[] = [\n 'int',\n 'float',\n 'bool',\n 'string',\n 'date',\n 'timestamp',\n];\nconst BIN_OPS = [\n 'add',\n 'sub',\n 'mul',\n 'div',\n 'mod',\n 'eq',\n 'ne',\n 'lt',\n 'le',\n 'gt',\n 'ge',\n 'and',\n 'or',\n 'contains',\n 'startsWith',\n 'endsWith',\n] as const;\nconst SCALAR_FNS = [\n 'abs',\n 'round',\n 'floor',\n 'ceil',\n 'length',\n 'lower',\n 'upper',\n 'substr',\n 'datePart',\n 'concat',\n 'trim',\n 'replace',\n 'dateDiffDays',\n] as const;\nconst AGG_FNS = [\n 'sum',\n 'mean',\n 'min',\n 'max',\n 'count',\n 'median',\n 'stddev',\n 'first',\n 'last',\n] as const;\nconst JOIN_KINDS = ['inner', 'left', 'right', 'outer'] as const;\nconst WINDOW_FNS = ['rowNumber', 'rank', 'lag', 'lead', 'cumulSum', 'rollingMean'] as const;\n\nconst astKind = (j: JsonAst): string => {\n switch (j.kind) {\n case 'JString':\n return 'string';\n case 'JNumber':\n return 'number';\n case 'JBool':\n return 'bool';\n case 'JArray':\n return 'array';\n case 'JObject':\n return 'object';\n case 'JNull':\n return 'null';\n }\n};\n\nconst cFields = (j: JsonAst): CR<Fields> =>\n j.kind === 'JObject' ? cok(j.fields) : cerr('malformed: expected object, got ' + astKind(j));\nconst cField = (f: Fields, k: string): CR<JsonAst> => {\n const v = f.get(k);\n return v === undefined ? cerr('missing field: ' + k) : cok(v);\n};\n// fuaran-core#92 — accept exactly one of the canonical field or its observed alias (the\n// SQL/pandas prior); both present is ambiguous, neither reports the canonical name.\nconst cFieldAliased = (f: Fields, canonical: string, alias: string): CR<JsonAst> => {\n const c = f.get(canonical);\n const a = f.get(alias);\n if (c !== undefined && a !== undefined)\n return cerr(`malformed: give \"${canonical}\" (canonical) or \"${alias}\" (alias), not both`);\n const v = c ?? a;\n return v === undefined ? cerr('missing field: ' + canonical) : cok(v);\n};\nconst cStr = (j: JsonAst): CR<string> =>\n j.kind === 'JString' ? cok(j.value) : cerr('malformed: expected string, got ' + astKind(j));\nconst cArr = (j: JsonAst): CR<readonly JsonAst[]> =>\n j.kind === 'JArray' ? cok(j.items) : cerr('malformed: expected array, got ' + astKind(j));\nconst cInt = (j: JsonAst): CR<number> =>\n j.kind === 'JNumber'\n ? cok(Math.trunc(j.value))\n : cerr('malformed: expected int, got ' + astKind(j));\n\nconst cMapM = <A, B>(xs: readonly A[], fn: (a: A) => CR<B>): CR<B[]> => {\n const out: B[] = [];\n for (const x of xs) {\n const r = fn(x);\n if (!r.ok) return r;\n out.push(r.value);\n }\n return cok(out);\n};\n\nconst cStrField = (f: Fields, k: string): CR<string> => {\n const v = cField(f, k);\n return v.ok ? cStr(v.value) : v;\n};\nconst cStrList = (j: JsonAst): CR<string[]> => {\n const a = cArr(j);\n return a.ok ? cMapM(a.value, cStr) : a;\n};\n\n/** A type-tagged literal `Cell` — port of F# `DataFrameCodec.cellOfJson`. */\nconst decodeCellLit = (j: JsonAst): CR<Cell> => {\n const fo = cFields(j);\n if (!fo.ok) return cerr('malformed: lit: expected object');\n const f = fo.value;\n const dt = f.get('$type');\n if (dt === undefined || dt.kind !== 'JString') return cerr('missing field: lit.$type');\n const t = dt.value;\n if (t === 'Null') return cok({ kind: 'Null' });\n const v = f.get('value');\n const mismatch = cerr(`column 'lit': expected ${t} value, got value`);\n if (v === undefined) return mismatch;\n switch (t) {\n case 'Int':\n return v.kind === 'JNumber' ? cok({ kind: 'Int', value: Math.trunc(v.value) }) : mismatch;\n case 'Float':\n return v.kind === 'JNumber' ? cok({ kind: 'Float', value: v.value }) : mismatch;\n case 'Bool':\n return v.kind === 'JBool' ? cok({ kind: 'Bool', value: v.value }) : mismatch;\n case 'Str':\n return v.kind === 'JString' ? cok({ kind: 'Str', value: v.value }) : mismatch;\n case 'Date':\n return v.kind === 'JString' ? cok({ kind: 'Date', value: v.value }) : mismatch;\n case 'Timestamp':\n return v.kind === 'JString' ? cok({ kind: 'Timestamp', value: v.value }) : mismatch;\n default:\n return mismatch;\n }\n};\n\n/**\n * fuaran-core#94 (lenient-ingest) — render an epoch-seconds instant as the\n * canonical ISO-8601 UTC timestamp string. Pure integer arithmetic\n * (civil-from-days), clock-free; negative epochs (pre-1970) are handled.\n * Every division mirrors the F# int64 truncating division.\n */\nconst isoOfEpochSeconds = (secs: number): string => {\n let days = Math.trunc(secs / 86400);\n if (secs % 86400 < 0) days -= 1;\n const sod = secs - days * 86400;\n const z = days + 719468;\n const era = Math.trunc((z >= 0 ? z : z - 146096) / 146097);\n const doe = z - era * 146097;\n const yoe = Math.trunc(\n (doe - Math.trunc(doe / 1460) + Math.trunc(doe / 36524) - Math.trunc(doe / 146096)) / 365,\n );\n const doy = doe - (365 * yoe + Math.trunc(yoe / 4) - Math.trunc(yoe / 100));\n const mp = Math.trunc((5 * doy + 2) / 153);\n const day = doy - Math.trunc((153 * mp + 2) / 5) + 1;\n const month = mp < 10 ? mp + 3 : mp - 9;\n const year = yoe + era * 400 + (month <= 2 ? 1 : 0);\n const p2 = (n: number): string => String(n).padStart(2, '0');\n const p4 = (n: number): string => String(n).padStart(4, '0');\n return `${p4(year)}-${p2(month)}-${p2(day)}T${p2(Math.trunc(sod / 3600))}:${p2(Math.trunc((sod % 3600) / 60))}:${p2(sod % 60)}Z`;\n};\n\n/**\n * One present column cell decoded against its declared type — port of F#\n * `decodeCell`. A float column accepts an integer JSON token (lossless\n * widening); a timestamp column accepts a whole-valued epoch number\n * (fuaran-core#94 — models emit epoch instants against their own correct\n * `\"timestamp\"` schema; unit by magnitude: ≥ 1e11 ⇒ milliseconds, else\n * seconds — epoch-seconds stay below 1e11 until year 5138). Every other type\n * requires its exact JSON kind.\n */\nconst decodeColumnCell = (colName: string, ty: ColumnType, v: JsonAst): CR<Cell> => {\n const mismatch = cerr(`column '${colName}': expected ${ty} value, got ${astKind(v)}`);\n switch (ty) {\n case 'int':\n return v.kind === 'JNumber' ? cok({ kind: 'Int', value: Math.trunc(v.value) }) : mismatch;\n case 'float':\n return v.kind === 'JNumber' ? cok({ kind: 'Float', value: v.value }) : mismatch;\n case 'bool':\n return v.kind === 'JBool' ? cok({ kind: 'Bool', value: v.value }) : mismatch;\n case 'string':\n return v.kind === 'JString' ? cok({ kind: 'Str', value: v.value }) : mismatch;\n case 'date':\n return v.kind === 'JString' ? cok({ kind: 'Date', value: v.value }) : mismatch;\n case 'timestamp': {\n if (v.kind === 'JString') return cok({ kind: 'Timestamp', value: v.value });\n // Whole-valued epoch number (the F# JInt path + the whole-JFloat path,\n // unified — TS has one number kind); |x| ≥ 9e15 stays a mismatch.\n if (v.kind === 'JNumber' && v.value === Math.floor(v.value) && Math.abs(v.value) < 9e15) {\n const secs = Math.abs(v.value) >= 100_000_000_000 ? Math.trunc(v.value / 1000) : v.value;\n return cok({ kind: 'Timestamp', value: isoOfEpochSeconds(secs) });\n }\n return mismatch;\n }\n default:\n return mismatch;\n }\n};\n\nconst decodeColSchema = (j: JsonAst): CR<SchemaEntry[]> => {\n const a = cArr(j);\n if (!a.ok) return a;\n return cMapM(a.value, (e) => {\n const fo = cFields(e);\n if (!fo.ok) return fo;\n const name = cStrField(fo.value, 'name');\n if (!name.ok) return name;\n const ty = cStrField(fo.value, 'type');\n if (!ty.ok) return ty;\n if (!COMPUTE_COLUMN_TYPES.includes(ty.value as ColumnType)) {\n return cerr(\n `unknown column type '${ty.value}'; expected one of: ${COMPUTE_COLUMN_TYPES.join(', ')}`,\n );\n }\n return cok<SchemaEntry>({ name: name.value, type: ty.value as ColumnType });\n });\n};\n\n// Phase 88 (fuaran-core, mirrored) — a bare-array column is the \"just the\n// data\" shorthand: values = the array, validity all-present (the wire has no\n// JSON null, so the shape is unambiguous). Wrapped form stays canonical.\nconst columnParts = (\n name: string,\n colEl: JsonAst,\n): CR<[readonly JsonAst[], readonly JsonAst[]]> => {\n if (colEl.kind === 'JArray') {\n return cok<[readonly JsonAst[], readonly JsonAst[]]>([\n colEl.items,\n colEl.items.map(() => ({ kind: 'JBool', value: true }) as JsonAst),\n ]);\n }\n const fo = cFields(colEl);\n if (!fo.ok) return fo;\n const valuesJ = cField(fo.value, 'values');\n if (!valuesJ.ok) return valuesJ;\n const values = cArr(valuesJ.value);\n if (!values.ok) return values;\n // fuaran-core#94 (lenient-ingest) — a wrapped column object carrying\n // `values` but NO `validity` mask is the same all-present statement as the\n // Phase-88 bare array (the wire has no JSON null, so omission cannot mean\n // absent cells): models reproduce the canonical object shape minus the\n // mask. Synthesize all-present; absent cells still require the full\n // wrapped form, which stays canonical.\n const validityJ = fo.value.get('validity');\n if (validityJ === undefined) {\n return cok<[readonly JsonAst[], readonly JsonAst[]]>([\n values.value,\n values.value.map(() => ({ kind: 'JBool', value: true }) as JsonAst),\n ]);\n }\n const validity = cArr(validityJ);\n if (!validity.ok) return validity;\n return cok<[readonly JsonAst[], readonly JsonAst[]]>([values.value, validity.value]);\n};\n\nconst decodeDataColumn = (columnsObj: Fields, name: string, ty: ColumnType): CR<DataColumn> => {\n const colEl = columnsObj.get(name);\n if (colEl === undefined) return cerr('missing field: columns.' + name);\n const parts = columnParts(name, colEl);\n if (!parts.ok) return parts;\n const values = { ok: true as const, value: parts.value[0] };\n const validity = { ok: true as const, value: parts.value[1] };\n if (values.value.length !== validity.value.length) {\n return cerr(\n `column '${name}': values/validity length mismatch (${values.value.length} vs ${validity.value.length})`,\n );\n }\n const cells: Cell[] = [];\n for (let i = 0; i < values.value.length; i += 1) {\n const p = validity.value[i]!;\n if (p.kind !== 'JBool') {\n return cerr(`malformed: ${name}.validity: expected bool, got ${astKind(p)}`);\n }\n if (!p.value) {\n cells.push({ kind: 'Null' });\n } else {\n const c = decodeColumnCell(name, ty, values.value[i]!);\n if (!c.ok) return c;\n cells.push(c.value);\n }\n }\n return cok<DataColumn>({ name, type: ty, cells });\n};\n\n// Phase 88 (fuaran-core, mirrored) — infer a column's type from its cells.\n// PINNED rules: all-int -> int, any fractional -> float, all-bool -> bool,\n// all-string -> string, NEVER date/timestamp; empty/mixed = didactic reject.\nconst inferColumnType = (name: string, values: readonly JsonAst[]): CR<ColumnType> => {\n if (values.length === 0)\n return cerr(\n `malformed: ${name}: cannot infer a column type from an empty / all-null column — declare it in an explicit \"schema\" array`,\n );\n const tag = (v: JsonAst): string =>\n v.kind === 'JNumber'\n ? Number.isInteger(v.value)\n ? 'int'\n : 'float'\n : v.kind === 'JBool'\n ? 'bool'\n : v.kind === 'JString'\n ? 'string'\n : 'other';\n const tags = [...new Set(values.map(tag))];\n if (tags.length === 1 && tags[0] === 'int') return cok<ColumnType>('int');\n if (tags.every((t) => t === 'int' || t === 'float')) return cok<ColumnType>('float');\n if (tags.length === 1 && tags[0] === 'bool') return cok<ColumnType>('bool');\n if (tags.length === 1 && tags[0] === 'string') return cok<ColumnType>('string');\n return cerr(\n `malformed: ${name}: cannot infer a single column type from mixed cell kinds (${tags.join(', ')}) — declare it in an explicit \"schema\" array`,\n );\n};\n\n/** A `DataSource` — port of F# `ColumnCodec.decodeJson` (Phase 88: `schema`\n * may be omitted on an embedded source; inferred in Ordinal column order). */\nconst decodeDataSource = (j: JsonAst): CR<DataSource> => {\n const fo = cFields(j);\n if (!fo.ok) return fo;\n const schemaJ = fo.value.get('schema');\n let schema: CR<SchemaEntry[]> | undefined;\n if (schemaJ !== undefined) {\n schema = decodeColSchema(schemaJ);\n if (!schema.ok) return schema;\n }\n const refEl = fo.value.get('ref');\n if (refEl !== undefined) {\n if (schema === undefined)\n return cerr(\n 'malformed: a ref source requires an explicit \"schema\" array — there are no cells to infer column types from',\n );\n const r = cStr(refEl);\n return r.ok ? cok<DataSource>({ kind: 'Ref', name: r.value }) : r;\n }\n const colsJ = cField(fo.value, 'columns');\n if (!colsJ.ok) return colsJ;\n const colsFo = cFields(colsJ.value);\n if (!colsFo.ok) return colsFo;\n if (schema === undefined) {\n const names = [...colsFo.value.keys()].sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));\n const entries: SchemaEntry[] = [];\n for (const name of names) {\n const colEl = colsFo.value.get(name)!;\n const parts = columnParts(name, colEl);\n if (!parts.ok) return parts;\n const ty = inferColumnType(name, parts.value[0]);\n if (!ty.ok) return ty;\n entries.push({ name, type: ty.value });\n }\n schema = cok(entries);\n }\n if (!schema.ok) return schema;\n const resolved = schema.value;\n const cols = cMapM(resolved, (e) => decodeDataColumn(colsFo.value, e.name, e.type));\n if (!cols.ok) return cols;\n return cok<DataSource>({\n kind: 'Embedded',\n table: { schema: resolved, columns: cols.value },\n });\n};\n\n/** A `ColExpr` — port of F# `DataFrameCodec.decodeExpr`. */\nconst decodeColExprCore = (j: JsonAst): CR<ColExpr> => {\n const fo = cFields(j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const k = cStrField(f, '$type');\n if (!k.ok) return k;\n switch (k.value) {\n case 'col': {\n const name = cStrField(f, 'name');\n return name.ok ? cok<ColExpr>({ kind: 'col', name: name.value }) : name;\n }\n case 'param': {\n // fuaran-core#77 — a named param resolved from the host env at evaluation time.\n const name = cStrField(f, 'name');\n return name.ok ? cok<ColExpr>({ kind: 'param', name: name.value }) : name;\n }\n case 'lit': {\n const cj = cField(f, 'cell');\n if (!cj.ok) return cj;\n const cell = decodeCellLit(cj.value);\n return cell.ok ? cok<ColExpr>({ kind: 'lit', cell: cell.value }) : cell;\n }\n case 'binary': {\n const op = cStrField(f, 'op');\n if (!op.ok) return op;\n if (!(BIN_OPS as readonly string[]).includes(op.value)) {\n return cerr(`unknown column type '${op.value}'; expected one of: ${BIN_OPS.join(', ')}`);\n }\n const lj = cField(f, 'left');\n if (!lj.ok) return lj;\n const left = decodeColExprCore(lj.value);\n if (!left.ok) return left;\n const rj = cField(f, 'right');\n if (!rj.ok) return rj;\n const right = decodeColExprCore(rj.value);\n if (!right.ok) return right;\n return cok<ColExpr>({\n kind: 'binary',\n op: op.value as BinOp,\n left: left.value,\n right: right.value,\n });\n }\n case 'not': {\n const ej = cField(f, 'expr');\n if (!ej.ok) return ej;\n const e = decodeColExprCore(ej.value);\n return e.ok ? cok<ColExpr>({ kind: 'not', expr: e.value }) : e;\n }\n case 'coalesce': {\n const ej = cField(f, 'exprs');\n if (!ej.ok) return ej;\n const a = cArr(ej.value);\n if (!a.ok) return a;\n const exprs = cMapM(a.value, decodeColExprCore);\n return exprs.ok ? cok<ColExpr>({ kind: 'coalesce', exprs: exprs.value }) : exprs;\n }\n case 'case': {\n const cj = cField(f, 'cases');\n if (!cj.ok) return cj;\n const ca = cArr(cj.value);\n if (!ca.ok) return ca;\n const cases = cMapM(ca.value, (c) => {\n const cfo = cFields(c);\n if (!cfo.ok) return cfo;\n const wj = cField(cfo.value, 'when');\n if (!wj.ok) return wj;\n const w = decodeColExprCore(wj.value);\n if (!w.ok) return w;\n const tj = cField(cfo.value, 'then');\n if (!tj.ok) return tj;\n const t = decodeColExprCore(tj.value);\n if (!t.ok) return t;\n return cok({ when: w.value, then: t.value });\n });\n if (!cases.ok) return cases;\n const ej = cField(f, 'else');\n if (!ej.ok) return ej;\n const e = decodeColExprCore(ej.value);\n return e.ok ? cok<ColExpr>({ kind: 'case', cases: cases.value, else: e.value }) : e;\n }\n case 'cast': {\n const ty = cStrField(f, 'type');\n if (!ty.ok) return ty;\n if (!COMPUTE_COLUMN_TYPES.includes(ty.value as ColumnType)) {\n return cerr(\n `unknown column type '${ty.value}'; expected one of: ${COMPUTE_COLUMN_TYPES.join(', ')}`,\n );\n }\n const ej = cField(f, 'expr');\n if (!ej.ok) return ej;\n const e = decodeColExprCore(ej.value);\n return e.ok ? cok<ColExpr>({ kind: 'cast', type: ty.value as ColumnType, expr: e.value }) : e;\n }\n // fuaran-core#93 — `call` aliases `apply` (same fn/args fields);\n // fuaran-core#94 adds the third observed spelling `fn`\n // ({\"$type\":\"fn\",\"fn\":\"lower\",\"args\":[…]}).\n case 'apply':\n case 'call':\n case 'fn': {\n const fn = cStrField(f, 'fn');\n if (!fn.ok) return fn;\n if (!(SCALAR_FNS as readonly string[]).includes(fn.value)) {\n return cerr(`unknown column type '${fn.value}'; expected one of: ${SCALAR_FNS.join(', ')}`);\n }\n const aj = cField(f, 'args');\n if (!aj.ok) return aj;\n const a = cArr(aj.value);\n if (!a.ok) return a;\n const args = cMapM(a.value, decodeColExprCore);\n return args.ok\n ? cok<ColExpr>({ kind: 'apply', fn: fn.value as ScalarFn, args: args.value })\n : args;\n }\n case 'in': {\n // fuaran-core#90 — SQL three-valued membership; #91 — exactly one of `items` (literal\n // list) / `param` (a bound multi-select list param).\n const ej = cField(f, 'expr');\n if (!ej.ok) return ej;\n const subject = decodeColExprCore(ej.value);\n if (!subject.ok) return subject;\n const ij = f.get('items');\n const pj = f.get('param');\n if (ij !== undefined && pj !== undefined)\n return cerr(\n 'malformed: in: give exactly ONE of \"items\" (a literal list) or \"param\" (a multi-select list param), not both',\n );\n if (pj !== undefined) {\n const p = cStr(pj);\n return p.ok ? cok<ColExpr>({ kind: 'inParam', expr: subject.value, param: p.value }) : p;\n }\n if (ij === undefined) return cerr('missing field: items');\n const ia = cArr(ij);\n if (!ia.ok) return ia;\n const items = cMapM(ia.value, decodeColExprCore);\n return items.ok\n ? cok<ColExpr>({ kind: 'in', expr: subject.value, items: items.value })\n : items;\n }\n case 'isNull': {\n // fuaran-core#90 — the honest presence test.\n const ej = cField(f, 'expr');\n if (!ej.ok) return ej;\n const e = decodeColExprCore(ej.value);\n return e.ok ? cok<ColExpr>({ kind: 'isNull', expr: e.value }) : e;\n }\n case 'contains':\n case 'startsWith':\n case 'endsWith': {\n // fuaran-core#93 — expression-level string-predicate spellings denote exactly\n // Binary(op, left|expr, right|other); canonical stays the 'binary' form.\n const lj = cFieldAliased(f, 'left', 'expr');\n if (!lj.ok) return lj;\n const left = decodeColExprCore(lj.value);\n if (!left.ok) return left;\n const rj = cFieldAliased(f, 'right', 'other');\n if (!rj.ok) return rj;\n const right = decodeColExprCore(rj.value);\n if (!right.ok) return right;\n return cok<ColExpr>({\n kind: 'binary',\n op: k.value as BinOp,\n left: left.value,\n right: right.value,\n });\n }\n // fuaran-core#94 — flat logical spellings (pilot-5 census): SQL-prior models\n // emit {\"$type\":\"or\",\"exprs\":[e1,e2,…]} (variadic) or\n // {\"$type\":\"and\",\"left\":X,\"right\":Y} instead of the canonical nested\n // \"binary\". A variadic list left-folds into the nested form (and/or are\n // associative); canonical stays \"binary\" — these normalise on re-encode.\n case 'and':\n case 'or': {\n const op: BinOp = k.value as BinOp;\n const exprsEl = f.get('exprs');\n if (exprsEl !== undefined) {\n const a = cArr(exprsEl);\n if (!a.ok) return a;\n const exprs = cMapM(a.value, decodeColExprCore);\n if (!exprs.ok) return exprs;\n if (exprs.value.length === 0)\n return cerr(`malformed: ${k.value}.exprs: expected a non-empty array`);\n const [first, ...rest] = exprs.value;\n return cok<ColExpr>(\n rest.reduce<ColExpr>((acc, e) => ({ kind: 'binary', op, left: acc, right: e }), first!),\n );\n }\n const lj = cFieldAliased(f, 'left', 'expr');\n if (!lj.ok) return lj;\n const left = decodeColExprCore(lj.value);\n if (!left.ok) return left;\n const rj = cFieldAliased(f, 'right', 'other');\n if (!rj.ok) return rj;\n const right = decodeColExprCore(rj.value);\n if (!right.ok) return right;\n return cok<ColExpr>({ kind: 'binary', op, left: left.value, right: right.value });\n }\n // fuaran-core#94 — flat comparison spellings, the same class:\n // {\"$type\":\"eq\",\"left\":X,\"right\":Y} denotes exactly Binary(eq, X, Y);\n // same for ne/lt/le/gt/ge.\n case 'eq':\n case 'ne':\n case 'lt':\n case 'le':\n case 'gt':\n case 'ge': {\n const lj = cFieldAliased(f, 'left', 'expr');\n if (!lj.ok) return lj;\n const left = decodeColExprCore(lj.value);\n if (!left.ok) return left;\n const rj = cFieldAliased(f, 'right', 'other');\n if (!rj.ok) return rj;\n const right = decodeColExprCore(rj.value);\n if (!right.ok) return right;\n return cok<ColExpr>({\n kind: 'binary',\n op: k.value as BinOp,\n left: left.value,\n right: right.value,\n });\n }\n default: {\n // fuaran-core#94 — flat scalar-fn spellings: {\"$type\":\"lower\",\"expr\":X} /\n // {\"$type\":\"concat\",\"args\":[…]} denote ApplyFn(fn, args). The scalar-fn\n // name vocabulary is disjoint from the node-kind vocabulary, so the\n // mapping is one-to-one; canonical stays \"apply\".\n if ((SCALAR_FNS as readonly string[]).includes(k.value)) {\n const fn = k.value as ScalarFn;\n const argsEl = f.get('args');\n if (argsEl !== undefined) {\n const a = cArr(argsEl);\n if (!a.ok) return a;\n const args = cMapM(a.value, decodeColExprCore);\n return args.ok ? cok<ColExpr>({ kind: 'apply', fn, args: args.value }) : args;\n }\n const ej = cField(f, 'expr');\n if (!ej.ok) return ej;\n const e = decodeColExprCore(ej.value);\n return e.ok ? cok<ColExpr>({ kind: 'apply', fn, args: [e.value] }) : e;\n }\n return cerr(\n `unknown column type '${k.value}'; expected one of: col, lit, param, binary, not, coalesce, case, cast, apply, in, isNull`,\n );\n }\n }\n};\n\nconst decodePairCore = (j: JsonAst): CR<ColPair> => {\n const fo = cFields(j);\n if (!fo.ok) return fo;\n const a = cStrField(fo.value, 'a');\n if (!a.ok) return a;\n const b = cStrField(fo.value, 'b');\n return b.ok ? cok<ColPair>({ a: a.value, b: b.value }) : b;\n};\n\nconst decodeAggCore = (j: JsonAst): CR<Agg> => {\n // fuaran-core#92 — aggregate-entry aliases: `as` for `name`, `op` for `fn`, `column` for `of`;\n // AggFn alias `avg` -> `mean`.\n const fo = cFields(j);\n if (!fo.ok) return fo;\n const nameEl = cFieldAliased(fo.value, 'name', 'as');\n if (!nameEl.ok) return nameEl;\n const name = cStr(nameEl.value);\n if (!name.ok) return name;\n const fnEl = cFieldAliased(fo.value, 'fn', 'op');\n if (!fnEl.ok) return fnEl;\n const fnStr = cStr(fnEl.value);\n if (!fnStr.ok) return fnStr;\n const fnv = fnStr.value === 'avg' ? 'mean' : fnStr.value;\n if (!(AGG_FNS as readonly string[]).includes(fnv)) {\n return cerr(`unknown column type '${fnv}'; expected one of: ${AGG_FNS.join(', ')}`);\n }\n const ofEl = cFieldAliased(fo.value, 'of', 'column');\n if (!ofEl.ok) return ofEl;\n const of = cStr(ofEl.value);\n return of.ok ? cok<Agg>({ name: name.value, fn: fnv as AggFn, of: of.value }) : of;\n};\n\nconst decodeOrderCore = (j: JsonAst): CR<SortKey> => {\n // fuaran-core#92 — sort-key aliases: `column` for `col`, boolean `descending` for `dir`.\n const fo = cFields(j);\n if (!fo.ok) return fo;\n const colEl = cFieldAliased(fo.value, 'col', 'column');\n if (!colEl.ok) return colEl;\n const col = cStr(colEl.value);\n if (!col.ok) return col;\n // fuaran-core#93 — `direction` is a third spelling; a directionless entry is asc (SQL default).\n const dirEl = fo.value.get('dir') ?? fo.value.get('direction');\n const descEl = fo.value.get('descending');\n const spellings = [fo.value.get('dir'), fo.value.get('direction'), descEl].filter(\n (x) => x !== undefined,\n ).length;\n if (spellings > 1)\n return cerr(\n 'malformed: give ONE of \"dir\" (canonical: asc|desc), \"descending\" (alias boolean), or \"direction\" (alias: asc|desc)',\n );\n if (descEl !== undefined) {\n if (descEl.kind !== 'JBool') return cerr('malformed: \"descending\" must be a JSON boolean');\n return cok<SortKey>({ col: col.value, dir: descEl.value ? 'desc' : 'asc' });\n }\n if (dirEl === undefined) return cok<SortKey>({ col: col.value, dir: 'asc' });\n const dir = cStr(dirEl);\n if (!dir.ok) return dir;\n // Port of F# `dirOf`: only \"desc\" → Desc; anything else → Asc.\n return cok<SortKey>({ col: col.value, dir: dir.value === 'desc' ? 'desc' : 'asc' });\n};\n\n/** A `Transform` step — port of F# `DataFrameCodec.decodeTransform`. */\nconst decodeTransformCore = (j: JsonAst): CR<Transform> => {\n const fo = cFields(j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const k = cStrField(f, '$type');\n if (!k.ok) return k;\n switch (k.value) {\n case 'filter': {\n // Phase 89 (fuaran-core, mirrored) — the flat filter-step prior\n // {column, op, param|value} coerces to the canonical nested predicate.\n // fuaran-core#93 — `predicate` aliases `pred`.\n const pj0 = f.get('pred');\n const pj1 = f.get('predicate');\n if (pj0 !== undefined && pj1 !== undefined)\n return cerr('malformed: give \"pred\" (canonical) or \"predicate\" (alias), not both');\n const pj = pj0 ?? pj1;\n if (pj !== undefined) {\n const pred = decodeColExprCore(pj);\n return pred.ok ? cok<Transform>({ kind: 'filter', pred: pred.value }) : pred;\n }\n const colEl = f.get('column');\n const opEl = f.get('op');\n if (colEl !== undefined && opEl !== undefined) {\n const col = cStr(colEl);\n if (!col.ok) return col;\n const op = cStr(opEl);\n if (!op.ok) return op;\n if (!(BIN_OPS as readonly string[]).includes(op.value))\n return cerr(`unknown column type '${op.value}'; expected one of: ${BIN_OPS.join(', ')}`);\n const paramEl = f.get('param');\n const valueEl = f.get('value');\n if (paramEl !== undefined && valueEl !== undefined)\n return cerr(\n 'malformed: flat filter step: give exactly ONE of \"param\" (a pipeline param name) or \"value\" (a scalar literal), not both',\n );\n let rhs: ColExpr;\n if (paramEl !== undefined) {\n const pName = cStr(paramEl);\n if (!pName.ok) return pName;\n rhs = { kind: 'param', name: pName.value };\n } else if (valueEl !== undefined) {\n if (valueEl.kind === 'JString')\n rhs = { kind: 'lit', cell: { kind: 'Str', value: valueEl.value } };\n else if (valueEl.kind === 'JNumber')\n rhs = Number.isInteger(valueEl.value)\n ? { kind: 'lit', cell: { kind: 'Int', value: valueEl.value } }\n : { kind: 'lit', cell: { kind: 'Float', value: valueEl.value } };\n else if (valueEl.kind === 'JBool')\n rhs = { kind: 'lit', cell: { kind: 'Bool', value: valueEl.value } };\n else\n return cerr(\n 'malformed: flat filter step: \"value\" must be a scalar (string/int/float/bool)',\n );\n } else\n return cerr(\n 'malformed: flat filter step: {column, op} needs \"param\" (a pipeline param name) or \"value\" (a scalar literal) as the right-hand side',\n );\n return cok<Transform>({\n kind: 'filter',\n pred: {\n kind: 'binary',\n op: op.value as BinOp,\n left: { kind: 'col', name: col.value },\n right: rhs,\n },\n });\n }\n return cerr(\n 'malformed: a filter step carries \"pred\" (a $type-discriminated expression: binary/col/param/lit/apply) — or the flat short form {\"column\":…,\"op\":…,\"param\":…|\"value\":…}',\n );\n }\n case 'project': {\n const cj = cField(f, 'cols');\n if (!cj.ok) return cj;\n const a = cArr(cj.value);\n if (!a.ok) return a;\n const cols = cMapM(a.value, decodePairCore);\n return cols.ok ? cok<Transform>({ kind: 'project', cols: cols.value }) : cols;\n }\n case 'derive': {\n const name = cStrField(f, 'name');\n if (!name.ok) return name;\n const ej = cField(f, 'expr');\n if (!ej.ok) return ej;\n const expr = decodeColExprCore(ej.value);\n return expr.ok\n ? cok<Transform>({ kind: 'derive', name: name.value, expr: expr.value })\n : expr;\n }\n case 'groupBy': {\n // fuaran-core#92 — `by` (pandas prior) aliases `keys`; `aggregations` aliases `aggs`.\n const kj = cFieldAliased(f, 'keys', 'by');\n if (!kj.ok) return kj;\n const keys = cStrList(kj.value);\n if (!keys.ok) return keys;\n const aj = cFieldAliased(f, 'aggs', 'aggregations');\n if (!aj.ok) return aj;\n const aa = cArr(aj.value);\n if (!aa.ok) return aa;\n const aggs = cMapM(aa.value, decodeAggCore);\n return aggs.ok\n ? cok<Transform>({ kind: 'groupBy', keys: keys.value, aggs: aggs.value })\n : aggs;\n }\n case 'join': {\n const sj = cField(f, 'source');\n if (!sj.ok) return sj;\n const source = decodeDataSource(sj.value);\n if (!source.ok) return source;\n const oj = cField(f, 'on');\n if (!oj.ok) return oj;\n const oa = cArr(oj.value);\n if (!oa.ok) return oa;\n const on = cMapM(oa.value, decodePairCore);\n if (!on.ok) return on;\n const how = cStrField(f, 'how');\n if (!how.ok) return how;\n if (!(JOIN_KINDS as readonly string[]).includes(how.value)) {\n return cerr(\n `unknown column type '${how.value}'; expected one of: ${JOIN_KINDS.join(', ')}`,\n );\n }\n return cok<Transform>({\n kind: 'join',\n source: source.value,\n on: on.value,\n how: how.value as JoinKind,\n });\n }\n case 'window': {\n const pj = cField(f, 'partitionBy');\n if (!pj.ok) return pj;\n const partitionBy = cStrList(pj.value);\n if (!partitionBy.ok) return partitionBy;\n const oj = cField(f, 'orderBy');\n if (!oj.ok) return oj;\n const oa = cArr(oj.value);\n if (!oa.ok) return oa;\n const orderBy = cMapM(oa.value, decodeOrderCore);\n if (!orderBy.ok) return orderBy;\n const fnRaw = cStrField(f, 'fn');\n if (!fnRaw.ok) return fnRaw;\n // Legacy alias — the pre-rename wire tag (2026-07-19); normalises on re-encode.\n const fn = { ok: true as const, value: fnRaw.value === 'cumSum' ? 'cumulSum' : fnRaw.value };\n if (!(WINDOW_FNS as readonly string[]).includes(fn.value)) {\n return cerr(`unknown column type '${fn.value}'; expected one of: ${WINDOW_FNS.join(', ')}`);\n }\n const of = cStrField(f, 'of');\n if (!of.ok) return of;\n const asField = cStrField(f, 'as');\n if (!asField.ok) return asField;\n return cok<Transform>({\n kind: 'window',\n spec: {\n partitionBy: partitionBy.value,\n orderBy: orderBy.value,\n fn: fn.value as WindowFn,\n of: of.value,\n as: asField.value,\n },\n });\n }\n case 'pivot': {\n const ij = cField(f, 'index');\n if (!ij.ok) return ij;\n const index = cStrList(ij.value);\n if (!index.ok) return index;\n const on = cStrField(f, 'on');\n if (!on.ok) return on;\n const values = cStrField(f, 'values');\n if (!values.ok) return values;\n const agg = cStrField(f, 'agg');\n if (!agg.ok) return agg;\n if (!(AGG_FNS as readonly string[]).includes(agg.value)) {\n return cerr(`unknown column type '${agg.value}'; expected one of: ${AGG_FNS.join(', ')}`);\n }\n return cok<Transform>({\n kind: 'pivot',\n spec: { index: index.value, on: on.value, values: values.value, agg: agg.value as AggFn },\n });\n }\n case 'unpivot': {\n const ij = cField(f, 'idVars');\n if (!ij.ok) return ij;\n const idVars = cStrList(ij.value);\n if (!idVars.ok) return idVars;\n const vj = cField(f, 'valueVars');\n if (!vj.ok) return vj;\n const valueVars = cStrList(vj.value);\n return valueVars.ok\n ? cok<Transform>({ kind: 'unpivot', idVars: idVars.value, valueVars: valueVars.value })\n : valueVars;\n }\n case 'sort': {\n // fuaran-core#92 — `keys` (SQL ORDER-BY-list prior) aliases `by`.\n const bj = cFieldAliased(f, 'by', 'keys');\n if (!bj.ok) return bj;\n const ba = cArr(bj.value);\n if (!ba.ok) return ba;\n const by = cMapM(ba.value, decodeOrderCore);\n return by.ok ? cok<Transform>({ kind: 'sort', by: by.value }) : by;\n }\n case 'distinct':\n return cok<Transform>({ kind: 'distinct' });\n case 'limit': {\n // fuaran-core#92 — `count` aliases `n`; an absent `offset` is unambiguously 0.\n const nj = cFieldAliased(f, 'n', 'count');\n if (!nj.ok) return nj;\n const n = cInt(nj.value);\n if (!n.ok) return n;\n const oj = f.get('offset');\n const offset = oj === undefined ? cok(0) : cInt(oj);\n return offset.ok\n ? cok<Transform>({ kind: 'limit', n: n.value, offset: offset.value })\n : offset;\n }\n case 'union': {\n const sj = cField(f, 'source');\n if (!sj.ok) return sj;\n const source = decodeDataSource(sj.value);\n return source.ok ? cok<Transform>({ kind: 'union', source: source.value }) : source;\n }\n default:\n return cerr(\n `unknown column type '${k.value}'; expected one of: filter, project, derive, groupBy, join, window, pivot, unpivot, sort, distinct, limit, union`,\n );\n }\n};\n\nconst decodePipelineCore = (j: JsonAst): CR<Transform[]> => {\n if (j.kind !== 'JArray') {\n return cerr('malformed: pipeline: expected a JSON array of transform steps');\n }\n return cMapM(j.items, decodeTransformCore);\n};\n\n/**\n * Decode the `args` array of a `Binding.Invoke` / `Action.Invoke` (Phase 283) —\n * `[{\"addr\",\"value\"}]` scalar pairs. Shared by both decoders; surfaces the\n * standard `DecodeError` surface (byte-identical paths/codes to the F# decoder).\n */\nconst decodeInvokeArgs = (path: string, j: JsonAst): R<InvokeArg[]> => {\n if (j.kind !== 'JArray') return wrongType(path, 'JSON array of invoke args');\n return traverseIndexed(j.items, (i, el) => {\n const p = `${path}[${i}]`;\n const m = requireObject(p, el);\n if (!m.ok) return m;\n const addr = reqField(p, m.value, 'addr', 'invoke arg addr string', requireString);\n if (!addr.ok) return addr;\n const value = reqField(p, m.value, 'value', 'invoke arg value string', requireString);\n if (!value.ok) return value;\n return ok<InvokeArg>({ addr: addr.value, value: value.value });\n });\n};\n\n/**\n * Phase 429 — the typed-static-payload seam (mirror of F# `bindingGeneric`'s\n * `parseStatic` / `placeholder` parameters). `parseStatic` decodes the slot's\n * `Static.value` / `State.defaultValue` payload; `placeholder` is the typed\n * fallback for an absent / unparseable `State` default. The defaults preserve\n * the generic behaviour exactly (faithful AST value; `\"<opaque>\"` fallback);\n * the enumerated slot-typed wrappers below supply the typed pair.\n */\nconst decodeBinding = (\n path: string,\n j: JsonAst,\n parseStatic: (p: string, v: JsonAst) => R<unknown> = (_p, v) => ok(decodeAstValue(v)),\n placeholder: unknown = OPAQUE,\n): R<Binding<unknown>> => {\n // Lenient AI-ingest shape coercion (WIRE_FORMAT.md §3.6): a bare JSON array\n // where a Binding is expected is accepted as `Static` with the array as its\n // value — `options: [\"A\",\"B\"]` (the HTML select prior) and `data: [1,2,3]`\n // (the Chart.js prior). Unambiguous: every Binding case is a\n // `$type`-discriminated object, so an array can only mean Static.\n // Decode-only — the canonical encoder still emits the envelope. Bare\n // scalars/objects stay strict: an object without `$type` is more plausibly\n // a mistyped binding than a Static value. Mirror of F# `bindingGeneric`.\n // Extended 2026-07-17 second wave: bare SCALARS coerce too (fraction: 0.9,\n // activeStep: 1 — launch-eval evidence); null / untyped objects stay strict.\n if (j.kind === 'JArray' || j.kind === 'JString' || j.kind === 'JNumber' || j.kind === 'JBool') {\n const parsed = parseStatic(path, j);\n return parsed.ok ? ok({ kind: 'Static', value: parsed.value }) : parsed;\n }\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n case 'Static': {\n // Phase 677 — absence is structural: a MISSING `value` means the binding\n // carries none. The legacy `\"value\": null` form still decodes (§16\n // shorthand) by routing to the very same per-slot absent handling, so the\n // two spellings cannot disagree.\n const raw = f.get('value') ?? ({ kind: 'JNull' } as const);\n const parsed = parseStatic(`${path}.value`, raw);\n return parsed.ok ? ok({ kind: 'Static', value: parsed.value }) : parsed;\n }\n case 'Query': {\n const r = reqField(path, f, 'name', 'query name string', requireString);\n if (!r.ok) return r;\n // Phase 421 — optional `dependsOn` string array (the declared filter edge); absent → omitted.\n const dependsOnField = fieldAliased(f, 'dependsOn', ['deps', 'dependencies']);\n let dependsOn: readonly string[] | undefined;\n if (dependsOnField !== undefined) {\n const arr = requireArray(`${path}.dependsOn`, dependsOnField);\n if (!arr.ok) return arr;\n const strs = traverseIndexed(arr.value, (_i, el) =>\n requireString(`${path}.dependsOn[]`, el),\n );\n if (!strs.ok) return strs;\n dependsOn = strs.value;\n }\n // Phase 421 identity-accessor fix: project the host's queryResults value straight through\n // (`(raw) => raw`) instead of discarding it, so host-fed data flows through decoded trees.\n return ok({\n kind: 'Query',\n name: r.value,\n accessor: (raw: unknown) => raw,\n ...(dependsOn !== undefined ? { dependsOn } : {}),\n });\n }\n case 'Filter': {\n const r = reqField(path, f, 'name', 'filter name string', requireString);\n if (!r.ok) return r;\n // 0.2.0 — optional `defaultValue`: the value the resolver yields (and\n // the renderer seeds the store with) before the filter is first\n // written. Decoded through the slot's typed static parser, mirroring\n // `State.defaultValue`; an absent / unparseable default stays omitted.\n const dv = tryField(f, 'defaultValue');\n let defaultValue: unknown;\n let hasDefault = false;\n if (dv !== undefined) {\n const parsed = parseStatic(`${path}.defaultValue`, dv);\n if (parsed.ok) {\n defaultValue = parsed.value;\n hasDefault = true;\n }\n }\n const b: Binding<unknown> = {\n kind: 'Filter',\n name: r.value,\n ...(hasDefault ? { defaultValue } : {}),\n };\n return ok(b);\n }\n case 'Selection': {\n const r = reqField(path, f, 'nodeId', 'selection NodeId string', requireString);\n if (!r.ok) return r;\n // 0.2.9 (Phase 629) — optional `defaultValue`, the `Filter.defaultValue`\n // convention: yielded until the user first selects a row on `nodeId`.\n const dv = tryField(f, 'defaultValue');\n let defaultValue: unknown;\n let hasDefault = false;\n if (dv !== undefined) {\n const parsed = parseStatic(`${path}.defaultValue`, dv);\n if (parsed.ok) {\n defaultValue = parsed.value;\n hasDefault = true;\n }\n }\n // Phase 427 identity-accessor fix (the 421 `Query` fix replayed): a\n // decoded `Selection` projects the stored row straight through instead\n // of a value-discarding placeholder, so a written selection flows to\n // decoded readers.\n //\n // 0.2.10 (Phase 632) — optional `field`: the declarative row-field\n // projection. Present ⇒ the accessor projects that field off the\n // clicked row (the grid writes the FULL row), so the binding stays\n // scalar after a real click; absent ⇒ the 427 identity, pre-632\n // behaviour byte-for-byte. A missing field / non-row value throws in\n // the accessor — the resolver's loud path, never silent.\n const fv = tryField(f, 'field');\n let field: string | undefined;\n if (fv !== undefined) {\n const s = requireString(`${path}.field`, fv);\n if (s.ok) field = s.value;\n }\n const accessor: (raw: unknown) => unknown =\n field !== undefined ? projectSelectionField(field) : (raw: unknown) => raw;\n const b: Binding<unknown> = {\n kind: 'Selection',\n nodeId: r.value as NodeId,\n accessor,\n ...(hasDefault ? { defaultValue } : {}),\n ...(field !== undefined ? { field } : {}),\n };\n return ok(b);\n }\n case 'State': {\n const key = reqField(path, f, 'key', 'state key string', requireString);\n if (!key.ok) return key;\n // Decode the carried `defaultValue` through the slot's static parser\n // when it parses (Phase 426/429); an absent / unparseable default falls\n // back to the typed placeholder — byte-for-byte with the F# decoder.\n // Phase 677 — an ABSENT default decodes exactly as the legacy\n // `\"defaultValue\": null` did, or the encoder re-emits a placeholder and\n // the round-trip breaks.\n const dv =\n fieldAliased(f, 'defaultValue', ['initialValue', 'default']) ??\n ({ kind: 'JNull' } as const);\n let defaultValue: unknown = placeholder;\n if (dv !== undefined) {\n const parsed = parseStatic(`${path}.defaultValue`, dv);\n if (parsed.ok) defaultValue = parsed.value;\n }\n return ok({ kind: 'State', key: key.value, defaultValue });\n }\n case 'Computed':\n return ok({ kind: 'Computed', compute: () => undefined });\n // The projection decodes to the IDENTITY (the Phase 427 Selection fix\n // replayed): the host-furnished instant is already the wire-shaped string,\n // so a decoded reader receives it as-is. A value-discarding placeholder\n // here would make every decoded `Now` resolve to nothing even when the\n // host furnishes the instant.\n case 'Now':\n return ok({ kind: 'Now', project: (iso) => iso });\n case 'I18n': {\n const key = reqField(path, f, 'key', 'i18n key string', requireString);\n if (!key.ok) return key;\n const argsJ = tryField(f, 'args');\n if (argsJ === undefined) {\n const b: Binding<unknown> = { kind: 'I18n', key: key.value };\n return ok(b);\n }\n const argsR = decodeBindingArgs(`${path}.args`, argsJ);\n if (!argsR.ok) return argsR;\n const b: Binding<unknown> = { kind: 'I18n', key: key.value, args: argsR.value };\n return ok(b);\n }\n case 'Local': {\n // `initialFrom` recurses with the same typed pair (mirror of the F#\n // `bindingGeneric` recursion).\n const initial = reqField(path, f, 'initialFrom', 'Local InitialFrom Binding', (p, v) =>\n decodeBinding(p, v, parseStatic, placeholder),\n );\n if (!initial.ok) return initial;\n const flushJ = tryField(f, 'flushOn');\n const flush =\n flushJ === undefined\n ? ok<LocalFlushTrigger>({ kind: 'OnBlur' })\n : decodeLocalFlushTrigger(`${path}.flushOn`, flushJ);\n if (!flush.ok) return flush;\n const b: Binding<unknown> = {\n kind: 'Local',\n local: {\n initialFrom: initial.value,\n flushOn: flush.value,\n onCommit: () => undefined,\n parse: () => ({ ok: false, error: CLOSURE }),\n },\n };\n return ok(b);\n }\n case 'Format': {\n // Phase 102: source is always a numeric Binding; format / locale are\n // bounded DUs. The case is structurally independent of the slot type.\n const source = reqField(path, f, 'source', 'Binding<number> source object', decodeBinding);\n if (!source.ok) return source;\n const fmtJ = requireField(path, f, 'format', 'Format DU object');\n if (!fmtJ.ok) return fmtJ;\n const fmt = decodeFormat(`${path}.format`, fmtJ.value);\n if (!fmt.ok) return fmt;\n const locJ = requireField(path, f, 'locale', 'LocaleSource DU object');\n if (!locJ.ok) return locJ;\n const loc = decodeLocaleSource(`${path}.locale`, locJ.value);\n if (!loc.ok) return loc;\n const b: Binding<unknown> = {\n kind: 'Format',\n source: source.value as Binding<number>,\n format: fmt.value,\n locale: loc.value,\n };\n return ok(b);\n }\n case 'Transform': {\n // Phase 282 — the Compute layer. `source` (a DataSource) and `pipeline` (a\n // Transform list) decode through the Core-style structural decoders; a Core\n // decode failure wraps to WRONG_TYPE at `.source` / `.pipeline`, byte-\n // identical to the F# UI host's `coreError` wrapping.\n const srcJ = requireField(path, f, 'source', 'Transform DataSource object');\n if (!srcJ.ok) return srcJ;\n const pipeJ = requireField(path, f, 'pipeline', 'Transform pipeline array');\n if (!pipeJ.ok) return pipeJ;\n const src = decodeDataSource(srcJ.value);\n if (!src.ok) return makeError('WRONG_TYPE', `${path}.source`, src.error);\n const pipe = decodePipelineCore(pipeJ.value);\n if (!pipe.ok) return makeError('WRONG_TYPE', `${path}.pipeline`, pipe.error);\n // Phase 424 — optional `params`: [{ from: <Binding>, name: <string> }, …] binding each\n // `ColExpr.Param` name to a scalar source. Absent → omitted (byte-identical to Phase 282).\n const paramsField = tryField(f, 'params');\n let params: readonly TransformParam[] | undefined;\n if (paramsField !== undefined && paramsField.kind === 'JObject') {\n // Lenient AI-ingest (WIRE_FORMAT.md 3.6, 2026-07-17): the name->binding\n // MAP form coerces to the canonical [{name, from}] array — params are a\n // name-keyed set, so key order carries no meaning. Mirror of F#\n // (Map.toList = sorted keys; sorted here to match).\n const entries = [...paramsField.fields.entries()].sort(([a], [b]) =>\n a < b ? -1 : a > b ? 1 : 0,\n );\n const out: TransformParam[] = [];\n let coerceErr: R<never> | undefined;\n for (const [name, v] of entries) {\n const from = decodeBinding(`${path}.params.${name}.from`, v);\n if (!from.ok) {\n coerceErr = from;\n break;\n }\n out.push({ name, from: from.value });\n }\n if (coerceErr !== undefined) return coerceErr;\n params = out;\n } else if (paramsField !== undefined) {\n const arr = requireArray(`${path}.params`, paramsField);\n if (!arr.ok) return arr;\n const decoded = traverseIndexed(arr.value, (_i, el) => {\n const po = requireObject(`${path}.params[]`, el);\n if (!po.ok) return po;\n const name = reqField(\n `${path}.params[]`,\n po.value,\n 'name',\n 'param name string',\n requireString,\n );\n if (!name.ok) return name;\n // Field alias: value — the observed repair-attempt shape ({name, value}).\n const from = reqFieldAliased(\n `${path}.params[]`,\n po.value,\n 'from',\n ['value'],\n 'param source Binding',\n decodeBinding,\n );\n if (!from.ok) return from;\n return ok<TransformParam>({ name: name.value, from: from.value });\n });\n if (!decoded.ok) return decoded;\n params = decoded.value;\n }\n const b: Binding<unknown> = {\n kind: 'Transform',\n source: src.value,\n pipeline: pipe.value,\n ...(params !== undefined ? { params } : {}),\n };\n return ok(b);\n }\n case 'Invoke': {\n // Phase 283 — host-registered capability dispatched for a value.\n const cid = reqField(path, f, 'capabilityId', 'capability id string', requireString);\n if (!cid.ok) return cid;\n const argsJ = requireField(path, f, 'args', 'invoke args array');\n if (!argsJ.ok) return argsJ;\n const args = decodeInvokeArgs(`${path}.args`, argsJ.value);\n if (!args.ok) return args;\n const b: Binding<unknown> = { kind: 'Invoke', capabilityId: cid.value, args: args.value };\n return ok(b);\n }\n // 0.2.12 (Phase 633) — the `TextSource.Bound` wrapper convention\n // transferred to a bare-Binding slot: models emit\n // {\"$type\":\"Bound\",\"binding\":X} in Metric.value / LabelValueRow etc.\n // `Bound` carries exactly one payload field, so the unwrap is one-to-one:\n // decode the inner binding in place. Decode-only — the canonical encoder\n // never wraps bare-Binding slots.\n case 'Bound': {\n const inner = requireField(path, f, 'binding', 'the wrapped Binding object');\n if (!inner.ok) return inner;\n return decodeBinding(`${path}.binding`, inner.value, parseStatic, placeholder);\n }\n default:\n return unknownDuCase(\n path,\n d.value,\n 'Static | Query | Filter | Selection | State | Computed | I18n | Local | Format | Transform | Invoke',\n );\n }\n};\n\nconst decodeBindingArgs = (path: string, j: JsonAst): R<Record<string, Binding<JsonValue>>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const out: Record<string, Binding<JsonValue>> = {};\n for (const [k, v] of fo.value) {\n const r = decodeBinding(`${path}.${k}`, v);\n if (!r.ok) return r;\n out[k] = r.value as Binding<JsonValue>;\n }\n return ok(out);\n};\n\nconst decodeBindingString = (p: string, j: JsonAst): R<Binding<string>> =>\n decodeBinding(p, j) as R<Binding<string>>;\nconst decodeBindingBool = (p: string, j: JsonAst): R<Binding<boolean>> =>\n decodeBinding(p, j) as R<Binding<boolean>>;\n\n// ─── Typed Static payload decoders (Phase 429) ───────────────────────────────\n//\n// Mirrors of the F# `decodeBinding*` family: the typed wire form is preferred\n// (the encoder emits it since 429), the legacy `\"<opaque>\"` sentinel decodes\n// to a tagged placeholder (whose typed re-encode is byte-stable across both\n// hosts), and JSON `null` — the pre-429 F# boxes-to-null empty-collection\n// form — decodes to the typed empty. fuaran#665 retired the last generic slot:\n// grid/chart row seqs decode through `decodeBindingRows` below.\n\nconst OPTIONS_PLACEHOLDER: readonly SelectOption[] = [\n { value: OPAQUE, label: { kind: 'Literal', value: OPAQUE } },\n];\n\nconst decodeSelectOption = (path: string, j: JsonAst): R<SelectOption> => {\n // Lenient AI-ingest shape coercion (WIRE_FORMAT.md §3.6): a bare string\n // element coerces to `{value: s, label: Literal s}` — the HTML `<select>`\n // prior. The value→label map form (`{\"A\":\"A\"}`) is deliberately NOT\n // coerced: JSON key order is not contractual, so it could silently reorder\n // visible options. Mirror of F# `decodeSelectOption`.\n if (j.kind === 'JString') {\n return ok<SelectOption>({ value: j.value, label: { kind: 'Literal', value: j.value } });\n }\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const value = reqField(path, fo.value, 'value', 'option value string', requireString);\n if (!value.ok) return value;\n const label = reqField(path, fo.value, 'label', 'option label TextSource', decodeTextSource);\n if (!label.ok) return label;\n return ok<SelectOption>({ value: value.value, label: label.value });\n};\n\nconst parseStaticSelectOptions = (p: string, v: JsonAst): R<unknown> => {\n if (v.kind === 'JNull') return ok([]); // pre-429 read-compat: empty list boxed to `null`\n if (v.kind === 'JString' && v.value === OPAQUE) return ok(OPTIONS_PLACEHOLDER);\n const arr = requireArray(p, v);\n if (!arr.ok) return arr;\n return traverseIndexed(arr.value, (i, el) => decodeSelectOption(`${p}[${i}]`, el));\n};\n\nconst decodeBindingSelectOptions = (p: string, j: JsonAst): R<Binding<readonly SelectOption[]>> =>\n decodeBinding(p, j, parseStaticSelectOptions, OPTIONS_PLACEHOLDER) as R<\n Binding<readonly SelectOption[]>\n >;\n\nconst parseStaticStringOpt = (p: string, v: JsonAst): R<unknown> => {\n if (v.kind === 'JNull') return ok(undefined);\n if (v.kind === 'JString') return ok(v.value); // includes the opaque sentinel (read-compat)\n return wrongType(p, 'JSON string or null (string option)');\n};\n\nconst decodeBindingStringOpt = (p: string, j: JsonAst): R<Binding<string | undefined>> =>\n decodeBinding(p, j, parseStaticStringOpt, OPAQUE) as R<Binding<string | undefined>>;\n\nconst parseStaticFloatPair = (p: string, v: JsonAst): R<unknown> => {\n // 0.2.0 — the dual-thumb Range control's [min, max] pair. Static forms:\n // the object `{min, max}` (canonical) or a two-element array (lenient).\n if (v.kind === 'JObject') {\n const mn = v.fields.get('min');\n const mx = v.fields.get('max');\n if (mn !== undefined && mx !== undefined) {\n const a = requireFloat(`${p}.min`, mn);\n if (!a.ok) return a;\n const b = requireFloat(`${p}.max`, mx);\n if (!b.ok) return b;\n return ok([a.value, b.value] as const);\n }\n return wrongType(p, 'object with min and max numbers');\n }\n if (v.kind === 'JArray' && v.items.length === 2) {\n const a = requireFloat(`${p}[0]`, v.items[0] as JsonAst);\n if (!a.ok) return a;\n const b = requireFloat(`${p}[1]`, v.items[1] as JsonAst);\n if (!b.ok) return b;\n return ok([a.value, b.value] as const);\n }\n return wrongType(p, 'range pair ({min, max} object or [min, max] array)');\n};\n\nconst decodeBindingFloatPair = (p: string, j: JsonAst): R<Binding<readonly [number, number]>> => {\n // The canonical Static pair rides as the BARE `{min, max}` object (the\n // Phase-423 range shape, no envelope) — accept it before the generic\n // binding dispatch, which would otherwise demand a `$type`.\n if (\n j.kind === 'JObject' &&\n j.fields.get('$type') === undefined &&\n j.fields.get('min') !== undefined &&\n j.fields.get('max') !== undefined\n ) {\n const parsed = parseStaticFloatPair(p, j);\n return parsed.ok\n ? ok({ kind: 'Static', value: parsed.value as readonly [number, number] })\n : parsed;\n }\n return decodeBinding(p, j, parseStaticFloatPair, [0, 0] as const) as R<\n Binding<readonly [number, number]>\n >;\n};\n\nconst parseStaticStringPair = (p: string, v: JsonAst): R<unknown> => {\n // Phase 725 — the DateRange control's (from, to) ISO-8601 pair. Mirrors\n // `parseStaticFloatPair`: the bare `{from, to}` object is canonical, a\n // two-element `[from, to]` array is the §3.6 lenient coercion.\n //\n // Didactic domain rule: a LITERAL pair must be ordered. Same-variant ISO-8601\n // strings sort lexicographically in chronological order, so an ordinal\n // compare is total here — no date parsing, no locale. Only a literal pair is\n // checked; a bound pair's ordering is a runtime concern.\n const ordered = (a: string, b: string): R<readonly [string, string]> =>\n a > b\n ? makeError(\n 'WRONG_TYPE',\n p,\n `date-range start '${a}' is after end '${b}' — a DateRange pair is ordered (from <= to); ISO-8601 strings of one variant compare lexicographically, so swap the two values`,\n 'ordered ISO-8601 pair ({\"from\": <iso>, \"to\": <iso>} with from <= to)',\n )\n : ok([a, b] as const);\n if (v.kind === 'JObject') {\n const from = v.fields.get('from');\n const to = v.fields.get('to');\n if (from !== undefined && to !== undefined) {\n const a = requireString(`${p}.from`, from);\n if (!a.ok) return a;\n const b = requireString(`${p}.to`, to);\n if (!b.ok) return b;\n return ordered(a.value, b.value);\n }\n return wrongType(p, 'object with from and to ISO-8601 strings');\n }\n if (v.kind === 'JArray' && v.items.length === 2) {\n const a = requireString(`${p}[0]`, v.items[0] as JsonAst);\n if (!a.ok) return a;\n const b = requireString(`${p}[1]`, v.items[1] as JsonAst);\n if (!b.ok) return b;\n return ordered(a.value, b.value);\n }\n return wrongType(p, 'date-range pair ({from, to} object or [from, to] array)');\n};\n\nconst decodeBindingStringPair = (p: string, j: JsonAst): R<Binding<readonly [string, string]>> => {\n // The canonical Static pair rides as the BARE `{from, to}` object (the\n // `Range` posture, no envelope) — accept it before the generic binding\n // dispatch, which would otherwise demand a `$type`.\n if (\n j.kind === 'JObject' &&\n j.fields.get('$type') === undefined &&\n j.fields.get('from') !== undefined &&\n j.fields.get('to') !== undefined\n ) {\n const parsed = parseStaticStringPair(p, j);\n return parsed.ok\n ? ok({ kind: 'Static', value: parsed.value as readonly [string, string] })\n : parsed;\n }\n return decodeBinding(p, j, parseStaticStringPair, ['', ''] as const) as R<\n Binding<readonly [string, string]>\n >;\n};\n\nconst parseStaticStringList = (p: string, v: JsonAst): R<unknown> => {\n if (v.kind === 'JNull') return ok([]);\n if (v.kind === 'JString' && v.value === OPAQUE) return ok([OPAQUE]);\n const arr = requireArray(p, v);\n if (!arr.ok) return arr;\n return traverseIndexed(arr.value, (i, el) => requireString(`${p}[${i}]`, el));\n};\n\nconst decodeBindingStringList = (p: string, j: JsonAst): R<Binding<readonly string[]>> =>\n decodeBinding(p, j, parseStaticStringList, [OPAQUE]) as R<Binding<readonly string[]>>;\n\nconst parseStaticFloatSeq = (p: string, v: JsonAst): R<unknown> => {\n if (v.kind === 'JNull') return ok([]); // pre-429 read-compat: empty list-backed seq boxed to `null`\n if (v.kind === 'JString' && v.value === OPAQUE) return ok([]);\n const arr = requireArray(p, v);\n if (!arr.ok) return arr;\n return traverseIndexed(arr.value, (i, el) => requireFloat(`${p}[${i}]`, el));\n};\n\nconst decodeBindingFloatSeq = (p: string, j: JsonAst): R<Binding<readonly number[]>> =>\n decodeBinding(p, j, parseStaticFloatSeq, []) as R<Binding<readonly number[]>>;\n\n// fuaran#665 — the typed rows decoder: a grid/chart rows payload is an array\n// of row objects (faithful record cells via `decodeAstValue`, the F# `decodeObj`\n// mirror), with the legacy `\"<opaque>\"` sentinel accepted indefinitely\n// (read-compat → the empty feed, exactly the pre-typed behaviour). A non-object\n// row element is a named decode error. Mirror of F# `decodeRowSeq`.\nconst parseStaticRows = (p: string, v: JsonAst): R<unknown> => {\n if (v.kind === 'JNull') return ok([]); // lenient shorthand for absence (rule 4 decode-accept)\n if (v.kind === 'JString' && v.value === OPAQUE) return ok([]);\n const arr = requireArray(p, v);\n if (!arr.ok) return arr;\n return traverseIndexed(arr.value, (i, el) =>\n el.kind === 'JObject' ? ok(decodeAstValue(el)) : wrongType(`${p}[${i}]`, 'row object'),\n );\n};\n\nconst decodeBindingRows = (p: string, j: JsonAst): R<Binding<readonly unknown[]>> =>\n decodeBinding(p, j, parseStaticRows, []) as R<Binding<readonly unknown[]>>;\n\nconst decodeMapMarker = (path: string, j: JsonAst): R<MapMarker> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const label = reqField(path, fo.value, 'label', 'marker label TextSource', decodeTextSource);\n if (!label.ok) return label;\n const latitude = reqField(path, fo.value, 'latitude', 'marker latitude float', requireFloat);\n if (!latitude.ok) return latitude;\n const longitude = reqField(path, fo.value, 'longitude', 'marker longitude float', requireFloat);\n if (!longitude.ok) return longitude;\n return ok<MapMarker>({\n label: label.value,\n latitude: latitude.value,\n longitude: longitude.value,\n });\n};\n\nconst parseStaticMarkerSeq = (p: string, v: JsonAst): R<unknown> => {\n if (v.kind === 'JNull') return ok([]); // pre-429 read-compat: empty list-backed seq boxed to `null`\n if (v.kind === 'JString' && v.value === OPAQUE) return ok([]);\n const arr = requireArray(p, v);\n if (!arr.ok) return arr;\n return traverseIndexed(arr.value, (i, el) => decodeMapMarker(`${p}[${i}]`, el));\n};\n\nconst decodeBindingMarkerSeq = (p: string, j: JsonAst): R<Binding<readonly MapMarker[]>> =>\n decodeBinding(p, j, parseStaticMarkerSeq, []) as R<Binding<readonly MapMarker[]>>;\n\n// ─── TextSource / SelectOption ───────────────────────────────────────────────\n\nconst decodeTextSource = (path: string, j: JsonAst): R<TextSource> => {\n // 0.2.0 — the bare JSON string IS the canonical Literal form (the encoder\n // emits it); the `{\"$type\":\"Literal\"}` envelope stays decode-accepted, so\n // pre-0.2.0 trees keep parsing. Byte-for-byte with the F# decoder.\n if (j.kind === 'JString') return ok({ kind: 'Literal', value: j.value });\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n case 'Literal': {\n const r = reqField(path, f, 'text', 'literal text string', requireString);\n return r.ok ? ok({ kind: 'Literal', value: r.value }) : r;\n }\n case 'Bound': {\n const r = reqField(path, f, 'binding', 'Binding<string> object', decodeBindingString);\n if (!r.ok) return r;\n const t: TextSource = { kind: 'Bound', binding: r.value };\n return ok(t);\n }\n case 'I18n': {\n const key = reqField(path, f, 'key', 'i18n key string', requireString);\n if (!key.ok) return key;\n const argsJ = tryField(f, 'args');\n if (argsJ === undefined) {\n const t: TextSource = { kind: 'I18n', key: key.value, args: {} };\n return ok(t);\n }\n const args = decodeJValMap(`${path}.args`, argsJ);\n if (!args.ok) return args;\n const t: TextSource = { kind: 'I18n', key: key.value, args: args.value };\n return ok(t);\n }\n default:\n return unknownDuCase(path, d.value, 'Literal | Bound | I18n');\n }\n};\n\n// ─── Action ──────────────────────────────────────────────────────────────────\n\nconst decodeAction = (path: string, j: JsonAst): R<Action<unknown>> => {\n // 0.2.2 DIDACTIC — a bare string in an Action slot (the \"<closure>\"\n // sentinel written as the value). Never coerced (a sentinel action would\n // be a dead control passing the gate); the error names the fix.\n if (j.kind === 'JString') {\n const s = j.value.length > 24 ? j.value.slice(0, 24) + '…' : j.value;\n return wrongType(\n path,\n `JSON object, got the string '${s}' — an action is a $type-discriminated object (SetState | Navigate | Call | Notify | Chain | AiTool | WriteToClipboard | Invoke); \"<closure>\" is not authorable. Pick a real action, e.g. {\"$type\":\"SetState\",\"key\":…,\"value\":…}`,\n );\n }\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n case 'Dispatch':\n return ok({ kind: 'Dispatch', msg: CLOSURE });\n case 'Call': {\n const r = reqFieldAliased(path, f, 'endpoint', ['url'], 'ApiEndpoint string', requireString);\n if (!r.ok) return r;\n // Phase 428: a present `\"<closure>\"` onResult → the inert placeholder;\n // absent → omitted. `into` is the optional declarative result target.\n const intoJ = tryField(f, 'into');\n let into: CallResultTarget | undefined;\n if (intoJ !== undefined) {\n const io = requireObject(`${path}.into`, intoJ);\n if (!io.ok) return io;\n const id = requireDiscriminator(`${path}.into`, io.value);\n if (!id.ok) return id;\n if (id.value === 'State') {\n const key = reqField(`${path}.into`, io.value, 'key', 'state key string', requireString);\n if (!key.ok) return key;\n into = { kind: 'State', key: key.value };\n } else if (id.value === 'Query') {\n const name = reqField(\n `${path}.into`,\n io.value,\n 'name',\n 'query name string',\n requireString,\n );\n if (!name.ok) return name;\n into = { kind: 'Query', name: name.value };\n } else {\n return unknownDuCase(`${path}.into`, id.value, 'State | Query');\n }\n }\n return ok({\n kind: 'Call',\n endpoint: r.value as import('@fuaran-ui/schema').ApiEndpoint,\n ...(tryField(f, 'onResult') !== undefined ? { onResult: () => CLOSURE } : {}),\n ...(into !== undefined ? { into } : {}),\n });\n }\n case 'Notify': {\n const channel = reqField(path, f, 'channel', 'notification channel string', requireString);\n if (!channel.ok) return channel;\n const payloadJ = requireField(path, f, 'payload', 'JsonValue payload');\n if (!payloadJ.ok) return payloadJ;\n const payload = decodeJVal(`${path}.payload`, payloadJ.value);\n return payload.ok\n ? ok({ kind: 'Notify', channel: channel.value, payload: payload.value })\n : payload;\n }\n case 'Navigate': {\n const r = reqFieldAliased(\n path,\n f,\n 'route',\n ['href', 'url', 'to'],\n 'route string',\n requireString,\n );\n return r.ok ? ok({ kind: 'Navigate', route: r.value }) : r;\n }\n case 'SetState': {\n const key = reqField(path, f, 'key', 'state key string', requireString);\n if (!key.ok) return key;\n const valueJ = requireField(path, f, 'value', 'JsonValue value');\n if (!valueJ.ok) return valueJ;\n const value = decodeJVal(`${path}.value`, valueJ.value);\n return value.ok ? ok({ kind: 'SetState', key: key.value, value: value.value }) : value;\n }\n case 'AiTool': {\n const name = reqField(path, f, 'toolName', 'AI tool name string', requireString);\n if (!name.ok) return name;\n const argsJ = requireField(path, f, 'args', 'JsonValue args');\n if (!argsJ.ok) return argsJ;\n const args = decodeJVal(`${path}.args`, argsJ.value);\n return args.ok ? ok({ kind: 'AiTool', toolName: name.value, args: args.value }) : args;\n }\n case 'Chain': {\n const opsJ = requireField(path, f, 'ops', 'Action list (Chain)');\n if (!opsJ.ok) return opsJ;\n const arr = requireArray(`${path}.ops`, opsJ.value);\n if (!arr.ok) return arr;\n const inner = traverseIndexed(arr.value, (i, item) =>\n decodeAction(`${path}.ops[${i}]`, item),\n );\n return inner.ok ? ok({ kind: 'Chain', actions: inner.value }) : inner;\n }\n case 'CommitLocal': {\n const r = reqField(path, f, 'nodeId', 'Local-bound input NodeId string', requireString);\n return r.ok ? ok({ kind: 'CommitLocal', nodeId: r.value }) : r;\n }\n case 'WriteToClipboard': {\n const r = reqField(path, f, 'text', 'clipboard payload string', requireString);\n return r.ok ? ok({ kind: 'WriteToClipboard', text: r.value }) : r;\n }\n case 'ReadFileBody': {\n // Phase 136 — only fileRef (the opaque id) + encoding cross the wire.\n // The decoded FileRef carries no handle (no blob on a decoded tree);\n // onRead reconstructs as a no-op closure that re-encodes to \"<closure>\".\n const fileId = reqField(path, f, 'fileRef', 'FileRef id string', requireString);\n if (!fileId.ok) return fileId;\n const enc = reqField(path, f, 'encoding', 'FileReadEncoding', decodeFileReadEncoding);\n return enc.ok\n ? ok({\n kind: 'ReadFileBody',\n file: { id: fileId.value },\n encoding: enc.value,\n onRead: () => CLOSURE,\n })\n : enc;\n }\n case 'Invoke': {\n // Phase 283 — capability invoked as an effect; same wire shape as Binding.Invoke.\n const cid = reqField(path, f, 'capabilityId', 'capability id string', requireString);\n if (!cid.ok) return cid;\n const argsJ = requireField(path, f, 'args', 'invoke args array');\n if (!argsJ.ok) return argsJ;\n const args = decodeInvokeArgs(`${path}.args`, argsJ.value);\n if (!args.ok) return args;\n return ok({ kind: 'Invoke', capabilityId: cid.value, args: args.value });\n }\n default:\n return unknownDuCase(\n path,\n d.value,\n 'Dispatch | Call | Notify | Navigate | SetState | AiTool | Chain | CommitLocal | WriteToClipboard | ReadFileBody | Invoke',\n );\n }\n};\n\n// ─── Display specs ───────────────────────────────────────────────────────────\n\nconst placeholderAction: Action<unknown> = { kind: 'Chain', actions: [] };\nconst onChangePlaceholder = (): Action<unknown> => placeholderAction;\n\nconst decodeMetricSpec = (path: string, j: JsonAst): R<MetricSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const label = reqField(path, f, 'label', 'Metric label TextSource', decodeTextSource);\n if (!label.ok) return label;\n // 0.2.0 rename law: the scalar displayed value is `value` (clean break —\n // the old `source` name is NOT an accepted alias; `data` is the web prior).\n const source = reqFieldAliased(path, f, 'value', ['data'], 'Metric value binding', decodeBinding);\n if (!source.ok) {\n // DIDACTIC ERROR (2026-07-17): a text value here is the top observed\n // emission error — name the right kind so the structured repair channel\n // self-corrects. Mirror of F#.\n if (source.error.message.includes('expected JSON number')) {\n return {\n ok: false,\n error: {\n ...source.error,\n message:\n source.error.message +\n ' — Metric is numeric-only (trendable KPI); a labeled TEXT fact belongs in Fact: {\"$type\":\"Fact\",\"label\":\\u2026,\"value\":\\u2026}',\n },\n };\n }\n return source;\n }\n // Phase 460 — stylistic fields omitted-when-default; restore the identity\n // default on absence (mirrors the Phase 147 role/voice decode).\n const format = optField(path, f, 'format', decodeCellFormat);\n if (!format.ok) return format;\n const tone = optField(path, f, 'tone', decodeTone);\n if (!tone.ok) return tone;\n const weight = optField(path, f, 'weight', decodeWeight);\n if (!weight.ok) return weight;\n const emphasis = optField(path, f, 'emphasis', decodeEmphasis);\n if (!emphasis.ok) return emphasis;\n const trend = optField(path, f, 'trend', decodeBinding);\n if (!trend.ok) return trend;\n const trendFormat = optField(path, f, 'trendFormat', decodeCellFormat);\n if (!trendFormat.ok) return trendFormat;\n const icon = optField(path, f, 'icon', decodeIconSource);\n if (!icon.ok) return icon;\n const subtext = optField(path, f, 'subtext', decodeTextSource);\n if (!subtext.ok) return subtext;\n return ok({\n label: label.value,\n value: source.value as Binding<number>,\n format: format.value ?? { kind: 'None' },\n tone: tone.value ?? 'Default',\n weight: weight.value ?? 'Standard',\n emphasis: emphasis.value ?? 'Normal',\n ...(trend.value !== undefined ? { trend: trend.value as Binding<number> } : {}),\n ...(trendFormat.value !== undefined ? { trendFormat: trendFormat.value } : {}),\n ...(icon.value !== undefined ? { icon: icon.value } : {}),\n ...(subtext.value !== undefined ? { subtext: subtext.value } : {}),\n });\n};\n\nconst decodeHeadingSpec = (path: string, j: JsonAst): R<HeadingSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const level = reqField(path, f, 'level', 'heading level integer', requireInt);\n if (!level.ok) return level;\n const text = reqField(path, f, 'text', 'heading TextSource', decodeTextSource);\n if (!text.ok) return text;\n const variant = reqField(path, f, 'variant', 'HeadingVariant', decodeHeadingVariant);\n if (!variant.ok) return variant;\n return ok({ level: level.value, text: text.value, variant: variant.value });\n};\n\nconst decodeLabelValueRowSpec = (path: string, j: JsonAst): R<LabelValueRowSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const label = reqField(path, f, 'label', 'row TextSource label', decodeTextSource);\n if (!label.ok) return label;\n const source = reqFieldAliased(\n path,\n f,\n 'value',\n ['data'],\n 'row Binding<float> value',\n decodeBinding,\n );\n if (!source.ok) return source;\n // Phase 460 — `format` omitted-when-default. 0.2.2 — `emphasis` is\n // omitted-when-false (aligning with Fact), and the style-enum prior\n // coerces: \"Loud\" → true, \"Normal\"/\"Quiet\" → false; any other string is a\n // didactic reject naming the bool and where the enum lives.\n const format = optField(path, f, 'format', decodeCellFormat);\n if (!format.ok) return format;\n // 0.2.8 — the cross-vocabulary coercion moved to the shared\n // `decodeEmphasisFlag` (2026-07-19 sweep: the 0.2.2 site-local version\n // missed the Phase-460 aliases — 'Strong' hard-failed here — and Fact's\n // identical flag had no coercion at all).\n const emphasisJ = tryField(f, 'emphasis');\n let emphasisVal = false;\n if (emphasisJ !== undefined) {\n const b = decodeEmphasisFlag(`${path}.emphasis`, emphasisJ);\n if (!b.ok) return b;\n emphasisVal = b.value;\n }\n const help = optField(path, f, 'help', decodeTextSource);\n if (!help.ok) return help;\n return ok({\n label: label.value,\n value: source.value as Binding<number>,\n format: format.value ?? { kind: 'None' },\n emphasis: emphasisVal,\n ...(help.value !== undefined ? { help: help.value } : {}),\n });\n};\n\nconst decodeFactSpec = (path: string, j: JsonAst): R<FactSpec> => {\n // New kind (2026-07-17): minimal wire — only label + value required;\n // tone/emphasis omitted-when-default on both boundaries. Mirror of F#.\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const label = reqField(path, f, 'label', 'fact TextSource label', decodeTextSource);\n if (!label.ok) return label;\n const value = reqField(path, f, 'value', 'fact TextSource value', decodeTextSource);\n if (!value.ok) return value;\n const tone = optField(path, f, 'tone', decodeTone);\n if (!tone.ok) return tone;\n // 0.2.8 — the shared cross-vocabulary reader (enum spellings coerce to the bool).\n const emphasis = optField(path, f, 'emphasis', decodeEmphasisFlag);\n if (!emphasis.ok) return emphasis;\n const help = optField(path, f, 'help', decodeTextSource);\n if (!help.ok) return help;\n const icon = optField(path, f, 'icon', decodeIconSource);\n if (!icon.ok) return icon;\n return ok({\n label: label.value,\n value: value.value,\n tone: tone.value ?? 'Default',\n emphasis: emphasis.value ?? false,\n ...(help.value !== undefined ? { help: help.value } : {}),\n ...(icon.value !== undefined ? { icon: icon.value } : {}),\n });\n};\n\nconst decodeMarkdownSpec = (path: string, j: JsonAst): R<MarkdownSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const text = reqField(path, fo.value, 'text', 'markdown TextSource', decodeTextSource);\n return text.ok ? ok({ text: text.value }) : text;\n};\n\nconst decodeBadgeSpec = (path: string, j: JsonAst): R<BadgeSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const label = reqField(path, f, 'label', 'Badge label TextSource', decodeTextSource);\n if (!label.ok) return label;\n const variant = reqField(path, f, 'variant', 'BadgeVariant', decodeBadgeVariant);\n if (!variant.ok) return variant;\n return ok({ label: label.value, variant: variant.value });\n};\n\nconst decodeLinkSpec = (path: string, j: JsonAst): R<LinkSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const href = reqField(path, f, 'href', 'link Binding<string> Href', decodeBindingString);\n if (!href.ok) return href;\n const label = reqField(path, f, 'label', 'link label TextSource', decodeTextSource);\n if (!label.ok) return label;\n const download = reqField(path, f, 'download', 'download bool', requireBool);\n if (!download.ok) return download;\n const rel = optField(path, f, 'rel', requireString);\n if (!rel.ok) return rel;\n const target = optField(path, f, 'target', requireString);\n if (!target.ok) return target;\n return ok({\n href: href.value,\n label: label.value,\n download: download.value,\n ...(rel.value !== undefined ? { rel: rel.value } : {}),\n ...(target.value !== undefined ? { target: target.value } : {}),\n });\n};\n\nconst decodeImageSpec = (path: string, j: JsonAst): R<ImageSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const alt = reqField(path, f, 'alt', 'Image alt TextSource', decodeTextSource);\n if (!alt.ok) return alt;\n const src = reqField(path, f, 'src', 'Image Binding<string> Src', decodeBindingString);\n if (!src.ok) return src;\n const variant = reqField(path, f, 'variant', 'ImageVariant', decodeImageVariant);\n if (!variant.ok) return variant;\n return ok({ alt: alt.value, src: src.value, variant: variant.value });\n};\n\nconst decodeListSpec = (path: string, j: JsonAst): R<ListSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const itemsJ = requireField(path, f, 'items', 'List items TextSource array');\n if (!itemsJ.ok) return itemsJ;\n const arr = requireArray(`${path}.items`, itemsJ.value);\n if (!arr.ok) return arr;\n const items = traverseIndexed(arr.value, (i, item) =>\n decodeTextSource(`${path}.items[${i}]`, item),\n );\n if (!items.ok) return items;\n const ordered = reqField(path, f, 'ordered', 'ordered bool', requireBool);\n if (!ordered.ok) return ordered;\n return ok({ items: items.value, ordered: ordered.value });\n};\n\nconst decodeToastSpec = (path: string, j: JsonAst): R<ToastSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const message = reqField(path, f, 'message', 'Toast message TextSource', decodeTextSource);\n if (!message.ok) return message;\n // Phase 460 — `tone` omitted-when-default.\n const tone = optField(path, f, 'tone', decodeTone);\n if (!tone.ok) return tone;\n const open = reqField(path, f, 'open', 'Toast open binding', decodeBinding);\n if (!open.ok) return open;\n // 0.2.0 omitted-when-TRUE (a Toast is dismissable unless said otherwise).\n const dismissable = optField(path, f, 'dismissable', requireBool);\n if (!dismissable.ok) return dismissable;\n return ok({\n message: message.value,\n tone: tone.value ?? 'Default',\n open: open.value as Binding<boolean>,\n dismissable: dismissable.value ?? true,\n });\n};\n\nconst decodeCodeBlockSpec = (path: string, j: JsonAst): R<CodeBlockSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const code = reqField(path, f, 'code', 'code-block code string', requireString);\n if (!code.ok) return code;\n const language = reqField(path, f, 'language', 'code-block language string', requireString);\n if (!language.ok) return language;\n const lineNumbers = reqField(path, f, 'lineNumbers', 'lineNumbers bool', requireBool);\n if (!lineNumbers.ok) return lineNumbers;\n const copyable = reqField(path, f, 'copyable', 'copyable bool', requireBool);\n if (!copyable.ok) return copyable;\n const linesJ = requireField(path, f, 'highlightLines', 'highlightLines int array');\n if (!linesJ.ok) return linesJ;\n const arr = requireArray(`${path}.highlightLines`, linesJ.value);\n if (!arr.ok) return arr;\n const highlightLines = traverseIndexed(arr.value, (i, item) =>\n requireInt(`${path}.highlightLines[${i}]`, item),\n );\n if (!highlightLines.ok) return highlightLines;\n return ok({\n code: code.value,\n language: language.value,\n lineNumbers: lineNumbers.value,\n highlightLines: highlightLines.value,\n copyable: copyable.value,\n });\n};\n\nconst decodeMathSpec = (path: string, j: JsonAst): R<MathSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const source = reqField(path, f, 'source', 'math LaTeX source string', requireString);\n if (!source.ok) return source;\n const display = reqField(path, f, 'display', 'MathDisplay', decodeMathDisplay);\n if (!display.ok) return display;\n return ok({ source: source.value, display: display.value });\n};\n\nconst decodeSparklineSpec = (path: string, j: JsonAst): R<SparklineSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const source = reqFieldAliased(\n path,\n fo.value,\n 'source',\n ['data'],\n 'Sparkline Source binding',\n decodeBindingFloatSeq,\n );\n return source.ok ? ok({ source: source.value }) : source;\n};\n\nconst decodeSkeletonSpec = (path: string, j: JsonAst): R<SkeletonSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const rows = reqField(path, fo.value, 'rows', 'skeleton row count integer', requireInt);\n return rows.ok ? ok({ rows: rows.value }) : rows;\n};\n\nconst decodeCalloutSpec = (path: string, j: JsonAst): R<CalloutSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const body = reqField(path, f, 'body', 'Callout body TextSource', decodeTextSource);\n if (!body.ok) return body;\n // 0.2.0 omitted-when-false.\n const dismissable = optField(path, f, 'dismissable', requireBool);\n if (!dismissable.ok) return dismissable;\n // Phase 460 — `tone` omitted-when-default.\n const tone = optField(path, f, 'tone', decodeTone);\n if (!tone.ok) return tone;\n const heading = optFieldAliased(path, f, 'heading', ['title'], decodeTextSource);\n if (!heading.ok) return heading;\n const icon = optField(path, f, 'icon', decodeIconSource);\n if (!icon.ok) return icon;\n return ok({\n body: body.value,\n dismissable: dismissable.value ?? false,\n tone: tone.value ?? 'Default',\n ...(heading.value !== undefined ? { heading: heading.value } : {}),\n ...(icon.value !== undefined ? { icon: icon.value } : {}),\n });\n};\n\nconst decodeProgressSpec = (path: string, j: JsonAst): R<ProgressSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const fraction = reqField(path, f, 'fraction', 'Progress fraction binding', decodeBinding);\n if (!fraction.ok) return fraction;\n // The Static-envelope unwrap now lives in requireBool itself (generalised\n // 2026-07-18 after the pilot found `emphasis` wrapped the same way).\n // 0.2.0 omitted-when-false.\n const indeterminate = optField(path, f, 'indeterminate', requireBool);\n if (!indeterminate.ok) return indeterminate;\n // Phase 460 — `tone` omitted-when-default.\n const tone = optField(path, f, 'tone', decodeTone);\n if (!tone.ok) return tone;\n const label = optField(path, f, 'label', decodeTextSource);\n if (!label.ok) return label;\n const caveat = optField(path, f, 'caveat', decodeTextSource);\n if (!caveat.ok) return caveat;\n return ok({\n fraction: fraction.value as Binding<number>,\n indeterminate: indeterminate.value ?? false,\n tone: tone.value ?? 'Default',\n ...(label.value !== undefined ? { label: label.value } : {}),\n ...(caveat.value !== undefined ? { caveat: caveat.value } : {}),\n });\n};\n\n// ─── Drawing (Phase 524) ─────────────────────────────────────────────────────\n\nconst emptyDrawStyle: DrawStyle = {};\n\nconst decodeDrawPoint = (path: string, j: JsonAst): R<DrawPoint> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const x = reqField(path, fo.value, 'x', 'DrawPoint x float', requireFloat);\n if (!x.ok) return x;\n const y = reqField(path, fo.value, 'y', 'DrawPoint y float', requireFloat);\n if (!y.ok) return y;\n return ok({ x: x.value, y: y.value });\n};\n\nconst decodeViewBox = (path: string, j: JsonAst): R<ViewBox> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const minX = reqField(path, f, 'minX', 'ViewBox minX float', requireFloat);\n if (!minX.ok) return minX;\n const minY = reqField(path, f, 'minY', 'ViewBox minY float', requireFloat);\n if (!minY.ok) return minY;\n const width = reqField(path, f, 'width', 'ViewBox width float', requireFloat);\n if (!width.ok) return width;\n const height = reqField(path, f, 'height', 'ViewBox height float', requireFloat);\n if (!height.ok) return height;\n return ok({ minX: minX.value, minY: minY.value, width: width.value, height: height.value });\n};\n\nconst decodeDrawStyle = (path: string, j: JsonAst): R<DrawStyle> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const fill = optField(path, f, 'fill', decodeBindingString);\n if (!fill.ok) return fill;\n const stroke = optField(path, f, 'stroke', decodeBindingString);\n if (!stroke.ok) return stroke;\n const strokeWidth = optField(path, f, 'strokeWidth', decodeBinding);\n if (!strokeWidth.ok) return strokeWidth;\n const opacity = optField(path, f, 'opacity', decodeBinding);\n if (!opacity.ok) return opacity;\n // Text-only fields (Phase 528.1) — all optional, omitted when unset.\n const textAnchor = optField(path, f, 'textAnchor', decodeTextAnchor);\n if (!textAnchor.ok) return textAnchor;\n const fontSize = optField(path, f, 'fontSize', requireFloat);\n if (!fontSize.ok) return fontSize;\n const emphasis = optField(path, f, 'emphasis', decodeEmphasis);\n if (!emphasis.ok) return emphasis;\n const fontFamily = optField(path, f, 'fontFamily', requireString);\n if (!fontFamily.ok) return fontFamily;\n // Phase 642 — keyed mark identity; optional.\n const markId = optField(path, f, 'markId', requireString);\n if (!markId.ok) return markId;\n return ok({\n ...(fill.value !== undefined ? { fill: fill.value } : {}),\n ...(stroke.value !== undefined ? { stroke: stroke.value } : {}),\n ...(strokeWidth.value !== undefined\n ? { strokeWidth: strokeWidth.value as Binding<number> }\n : {}),\n ...(opacity.value !== undefined ? { opacity: opacity.value as Binding<number> } : {}),\n ...(textAnchor.value !== undefined ? { textAnchor: textAnchor.value } : {}),\n ...(fontSize.value !== undefined ? { fontSize: fontSize.value } : {}),\n ...(emphasis.value !== undefined ? { emphasis: emphasis.value } : {}),\n ...(fontFamily.value !== undefined ? { fontFamily: fontFamily.value } : {}),\n ...(markId.value !== undefined ? { markId: markId.value } : {}),\n });\n};\n\nconst decodeCurveCommand = (path: string, j: JsonAst): R<CurveCommand> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n const point = (key: string): R<DrawPoint> =>\n reqField(path, f, key, `DrawPoint ${key}`, decodeDrawPoint);\n switch (d.value) {\n case 'MoveTo': {\n const to = point('to');\n return to.ok ? ok({ kind: 'MoveTo', to: to.value }) : to;\n }\n case 'LineTo': {\n const to = point('to');\n return to.ok ? ok({ kind: 'LineTo', to: to.value }) : to;\n }\n case 'CubicTo': {\n const c1 = point('control1');\n if (!c1.ok) return c1;\n const c2 = point('control2');\n if (!c2.ok) return c2;\n const to = point('to');\n if (!to.ok) return to;\n return ok({ kind: 'CubicTo', control1: c1.value, control2: c2.value, to: to.value });\n }\n case 'QuadraticTo': {\n const c = point('control');\n if (!c.ok) return c;\n const to = point('to');\n if (!to.ok) return to;\n return ok({ kind: 'QuadraticTo', control: c.value, to: to.value });\n }\n case 'Close':\n return ok({ kind: 'Close' });\n default:\n // Default-deny (WIRE_FORMAT §11 / Phase 524): an unknown command is a typed defect.\n return unknownDuCase(path, d.value, 'MoveTo | LineTo | CubicTo | QuadraticTo | Close');\n }\n};\n\nconst decodeShape = (path: string, j: JsonAst): R<Shape> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n const flt = (key: string): R<number> =>\n reqField(path, f, key, `Shape ${key} float`, requireFloat);\n const styleField = (): R<DrawStyle> => {\n const s = optField(path, f, 'style', decodeDrawStyle);\n return s.ok ? ok(s.value ?? emptyDrawStyle) : s;\n };\n const pointArray = (key: string): R<readonly DrawPoint[]> => {\n const arr = reqField(path, f, key, `Shape ${key} DrawPoint array`, requireArray);\n if (!arr.ok) return arr;\n return traverseIndexed(arr.value, (i, el) => decodeDrawPoint(`${path}.${key}[${i}]`, el));\n };\n const style = styleField();\n if (!style.ok) return style;\n switch (d.value) {\n case 'Group': {\n const arr = reqField(path, f, 'children', 'Shape children array', requireArray);\n if (!arr.ok) return arr;\n const children = traverseIndexed(arr.value, (i, el) =>\n decodeShape(`${path}.children[${i}]`, el),\n );\n return children.ok\n ? ok({ kind: 'Group', children: children.value, style: style.value })\n : children;\n }\n case 'Rectangle': {\n const x = flt('x');\n if (!x.ok) return x;\n const y = flt('y');\n if (!y.ok) return y;\n const width = flt('width');\n if (!width.ok) return width;\n const height = flt('height');\n if (!height.ok) return height;\n const cornerRadius = optField(path, f, 'cornerRadius', requireFloat);\n if (!cornerRadius.ok) return cornerRadius;\n return ok({\n kind: 'Rectangle',\n x: x.value,\n y: y.value,\n width: width.value,\n height: height.value,\n ...(cornerRadius.value !== undefined ? { cornerRadius: cornerRadius.value } : {}),\n style: style.value,\n });\n }\n case 'Line': {\n const x1 = flt('x1');\n if (!x1.ok) return x1;\n const y1 = flt('y1');\n if (!y1.ok) return y1;\n const x2 = flt('x2');\n if (!x2.ok) return x2;\n const y2 = flt('y2');\n if (!y2.ok) return y2;\n return ok({\n kind: 'Line',\n x1: x1.value,\n y1: y1.value,\n x2: x2.value,\n y2: y2.value,\n style: style.value,\n });\n }\n case 'Polyline': {\n const p = pointArray('points');\n return p.ok ? ok({ kind: 'Polyline', points: p.value, style: style.value }) : p;\n }\n case 'Polygon': {\n const p = pointArray('points');\n return p.ok ? ok({ kind: 'Polygon', points: p.value, style: style.value }) : p;\n }\n case 'Curve': {\n const arr = reqField(path, f, 'commands', 'Shape Curve commands array', requireArray);\n if (!arr.ok) return arr;\n const commands = traverseIndexed(arr.value, (i, el) =>\n decodeCurveCommand(`${path}.commands[${i}]`, el),\n );\n return commands.ok\n ? ok({ kind: 'Curve', commands: commands.value, style: style.value })\n : commands;\n }\n case 'Circle': {\n const cx = flt('cx');\n if (!cx.ok) return cx;\n const cy = flt('cy');\n if (!cy.ok) return cy;\n const r = flt('r');\n if (!r.ok) return r;\n return ok({ kind: 'Circle', cx: cx.value, cy: cy.value, r: r.value, style: style.value });\n }\n case 'Ellipse': {\n const cx = flt('cx');\n if (!cx.ok) return cx;\n const cy = flt('cy');\n if (!cy.ok) return cy;\n const rx = flt('rx');\n if (!rx.ok) return rx;\n const ry = flt('ry');\n if (!ry.ok) return ry;\n return ok({\n kind: 'Ellipse',\n cx: cx.value,\n cy: cy.value,\n rx: rx.value,\n ry: ry.value,\n style: style.value,\n });\n }\n case 'Label': {\n const x = flt('x');\n if (!x.ok) return x;\n const y = flt('y');\n if (!y.ok) return y;\n const text = reqField(path, f, 'text', 'Shape Label text TextSource', decodeTextSource);\n if (!text.ok) return text;\n return ok({ kind: 'Label', x: x.value, y: y.value, text: text.value, style: style.value });\n }\n default:\n // Default-deny (typed-surface guard, Phase 524): an unknown shape is a typed defect.\n return unknownDuCase(\n path,\n d.value,\n 'Group | Rectangle | Line | Polyline | Polygon | Curve | Circle | Ellipse | Label',\n );\n }\n};\n\nconst decodeDrawingSpec = (path: string, j: JsonAst): R<DrawingSpec> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const viewBox = reqField(path, f, 'viewBox', 'Drawing ViewBox', decodeViewBox);\n if (!viewBox.ok) return viewBox;\n const arr = reqField(path, f, 'shapes', 'Drawing shapes array', requireArray);\n if (!arr.ok) return arr;\n const shapes = traverseIndexed(arr.value, (i, el) => decodeShape(`${path}.shapes[${i}]`, el));\n if (!shapes.ok) return shapes;\n const style = optField(path, f, 'style', decodeDrawStyle);\n if (!style.ok) return style;\n const title = optField(path, f, 'title', decodeTextSource);\n if (!title.ok) return title;\n const description = optField(path, f, 'description', decodeTextSource);\n if (!description.ok) return description;\n return ok({\n viewBox: viewBox.value,\n shapes: shapes.value,\n style: style.value ?? emptyDrawStyle,\n ...(title.value !== undefined ? { title: title.value } : {}),\n ...(description.value !== undefined ? { description: description.value } : {}),\n });\n};\n\nconst decodeDisplayKind = (path: string, j: JsonAst): R<DisplayKind> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n // Flat wire: spec fields are hoisted onto the kind object itself (no `spec`\n // wrapper, WIRE_FORMAT.md §3.2) — pass `j` to the spec decoder, which reads\n // its fields by name and ignores the extra `$type` key.\n switch (d.value) {\n case 'Heading': {\n const r = decodeHeadingSpec(path, j);\n return r.ok ? ok({ kind: 'Heading', spec: r.value }) : r;\n }\n case 'Markdown': {\n const r = decodeMarkdownSpec(path, j);\n return r.ok ? ok({ kind: 'Markdown', spec: r.value }) : r;\n }\n case 'Metric': {\n const r = decodeMetricSpec(path, j);\n return r.ok ? ok<DisplayKind>({ kind: 'Metric', spec: r.value }) : r;\n }\n case 'Badge': {\n const r = decodeBadgeSpec(path, j);\n return r.ok ? ok({ kind: 'Badge', spec: r.value }) : r;\n }\n case 'Sparkline': {\n const r = decodeSparklineSpec(path, j);\n return r.ok ? ok({ kind: 'Sparkline', spec: r.value }) : r;\n }\n case 'Callout': {\n const r = decodeCalloutSpec(path, j);\n return r.ok ? ok<DisplayKind>({ kind: 'Callout', spec: r.value }) : r;\n }\n case 'Progress': {\n const r = decodeProgressSpec(path, j);\n return r.ok ? ok({ kind: 'Progress', spec: r.value }) : r;\n }\n case 'Skeleton': {\n const r = decodeSkeletonSpec(path, j);\n return r.ok ? ok({ kind: 'Skeleton', spec: r.value }) : r;\n }\n case 'LabelValueRow': {\n const r = decodeLabelValueRowSpec(path, j);\n return r.ok ? ok({ kind: 'LabelValueRow', spec: r.value }) : r;\n }\n case 'Fact': {\n const r = decodeFactSpec(path, j);\n return r.ok ? ok({ kind: 'Fact', spec: r.value }) : r;\n }\n case 'Link': {\n const r = decodeLinkSpec(path, j);\n return r.ok ? ok({ kind: 'Link', spec: r.value }) : r;\n }\n case 'Image': {\n const r = decodeImageSpec(path, j);\n return r.ok ? ok({ kind: 'Image', spec: r.value }) : r;\n }\n case 'List': {\n const r = decodeListSpec(path, j);\n return r.ok ? ok({ kind: 'List', spec: r.value }) : r;\n }\n case 'Toast': {\n const r = decodeToastSpec(path, j);\n return r.ok ? ok<DisplayKind>({ kind: 'Toast', spec: r.value }) : r;\n }\n case 'CodeBlock': {\n const r = decodeCodeBlockSpec(path, j);\n return r.ok ? ok<DisplayKind>({ kind: 'CodeBlock', spec: r.value }) : r;\n }\n case 'Math': {\n const r = decodeMathSpec(path, j);\n return r.ok ? ok<DisplayKind>({ kind: 'Math', spec: r.value }) : r;\n }\n case 'Drawing': {\n const r = decodeDrawingSpec(path, j);\n return r.ok ? ok<DisplayKind>({ kind: 'Drawing', spec: r.value }) : r;\n }\n default:\n return unknownDuCase(\n path,\n d.value,\n 'Heading | Markdown | Metric | Badge | Link | Image | List | Toast | CodeBlock | Math | Drawing | Sparkline | Callout | Progress | Skeleton | LabelValueRow',\n );\n }\n};\n\n// ─── Input specs ─────────────────────────────────────────────────────────────\n\n/**\n * Phase 596 — the auto-bind context for a control's ABSENT `value` slot. One\n * rule across the whole control vocabulary: a filter chip auto-binds\n * `Filter(<its name>)`, a form field auto-binds `State(<its id>, <typed\n * placeholder>)` (placeholders pinned in `controlValueDefaults`); no context\n * keeps `value` required.\n */\ntype ControlAutoBind =\n | { readonly kind: 'filter'; readonly name: string }\n | { readonly kind: 'form'; readonly id: string }\n | undefined;\n\n/**\n * The `expectedShape` hint on every `UNKNOWN_DU_CASE` a control discriminator\n * raises, projected from the single `FORM_FIELD_KIND_NAMES` vocabulary in\n * `@fuaran-ui/schema` rather than hand-maintained — the same discipline\n * `WRONG_NODE_KIND_HINT` follows, and for the same reason. Pinned against the\n * generated manifest `formFieldKinds` by the corpus test suite\n * (WIRE_FORMAT.md §11.2).\n */\nexport const WRONG_FORM_FIELD_KIND_HINT: string = FORM_FIELD_KIND_NAMES.join(' | ');\n\nconst decodeFormFieldKind = (\n autoBind: ControlAutoBind,\n path: string,\n j: JsonAst,\n): R<FormFieldKind<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n // Handlers are optional (Phase 426, the Phase 423 `filterKind` mechanics\n // generalised): a present `\"<closure>\"` → the inert placeholder (a decoded\n // handler never dispatches, same dead behaviour as before); an absent key →\n // omitted (exactOptionalPropertyTypes), the shape that arms the renderer's\n // write-back default.\n const onChangeField: { onChange?: () => Action<unknown> } =\n tryField(f, 'onChange') !== undefined ? { onChange: onChangePlaceholder } : {};\n const onToggleField: { onToggle?: () => Action<unknown> } =\n tryField(f, 'onToggle') !== undefined ? { onToggle: onChangePlaceholder } : {};\n // Value slot: present => typed decode; absent in a FILTER context => the\n // auto `Filter(name)` binding; absent in a Form => MISSING_FIELD as before.\n const valueOr = (\n dec: (p: string, v: JsonAst) => R<Binding<unknown>>,\n autoDefault: unknown,\n expected: string,\n ): R<Binding<unknown>> => {\n const v = tryField(f, 'value');\n if (v !== undefined) return dec(`${path}.value`, v);\n if (autoBind?.kind === 'filter') return ok({ kind: 'Filter', name: autoBind.name });\n if (autoBind?.kind === 'form')\n return ok({ kind: 'State', key: autoBind.id, defaultValue: autoDefault });\n return missingField(path, 'value', expected);\n };\n switch (d.value) {\n case 'Text': {\n const v = valueOr(decodeBinding, controlValueDefaults.text, 'Text value binding');\n return v.ok ? ok({ kind: 'Text', value: v.value as Binding<string>, ...onChangeField }) : v;\n }\n case 'Number': {\n const v = valueOr(decodeBinding, controlValueDefaults.number, 'Number value binding');\n return v.ok ? ok({ kind: 'Number', value: v.value as Binding<number>, ...onChangeField }) : v;\n }\n case 'Checkbox': {\n const v = valueOr(decodeBinding, controlValueDefaults.checkbox, 'Checkbox value binding');\n return v.ok\n ? ok({\n kind: 'Checkbox',\n value: v.value as Binding<boolean>,\n ...onToggleField,\n })\n : v;\n }\n case 'Toggle': {\n const v = valueOr(decodeBinding, controlValueDefaults.checkbox, 'Toggle value binding');\n return v.ok\n ? ok({\n kind: 'Toggle',\n value: v.value as Binding<boolean>,\n ...onToggleField,\n })\n : v;\n }\n case 'Choice': {\n const options = reqField(\n path,\n f,\n 'options',\n 'Choice options binding',\n decodeBindingSelectOptions,\n );\n if (!options.ok) return options;\n const value = valueOr(\n decodeBindingStringOpt as (p: string, v: JsonAst) => R<Binding<unknown>>,\n controlValueDefaults.choice,\n 'Choice value binding',\n ) as R<Binding<string | undefined>>;\n if (!value.ok) return value;\n return ok({\n kind: 'Choice',\n options: options.value,\n value: value.value,\n ...onChangeField,\n });\n }\n case 'Range': {\n // 0.2.0 — dual-thumb numeric range (absorbed FilterKind.RangeFilter).\n const value = valueOr(\n decodeBindingFloatPair as (p: string, v: JsonAst) => R<Binding<unknown>>,\n controlValueDefaults.range,\n 'Binding<[number, number]> value',\n ) as R<Binding<readonly [number, number]>>;\n if (!value.ok) return value;\n return ok({ kind: 'Range', value: value.value, ...onChangeField });\n }\n case 'RangedNumber': {\n const value = valueOr(\n decodeBinding,\n controlValueDefaults.number,\n 'RangedNumber value binding',\n );\n if (!value.ok) return value;\n const min = optField(path, f, 'min', requireFloat);\n if (!min.ok) return min;\n const max = optField(path, f, 'max', requireFloat);\n if (!max.ok) return max;\n const step = optField(path, f, 'step', requireFloat);\n if (!step.ok) return step;\n return ok({\n kind: 'RangedNumber',\n value: value.value as Binding<number>,\n ...onChangeField,\n constraints: {\n ...(min.value !== undefined ? { min: min.value } : {}),\n ...(max.value !== undefined ? { max: max.value } : {}),\n ...(step.value !== undefined ? { step: step.value } : {}),\n },\n });\n }\n case 'SegmentedChoice': {\n const options = reqField(\n path,\n f,\n 'options',\n 'SegmentedChoice options binding',\n decodeBindingSelectOptions,\n );\n if (!options.ok) return options;\n // Lenient AI-ingest omitted-when-default (WIRE_FORMAT.md §3.6 family):\n // absent segmented `orientation` restores the language default\n // `Horizontal`. Decode-only — the encoder still always emits it.\n // Mirror of the F# decoder.\n const orientationJ = tryField(f, 'orientation');\n const orientation =\n orientationJ === undefined\n ? ok<Orientation>('Horizontal')\n : decodeOrientation(`${path}.orientation`, orientationJ);\n if (!orientation.ok) return orientation;\n const value = valueOr(\n decodeBindingStringOpt as (p: string, v: JsonAst) => R<Binding<unknown>>,\n controlValueDefaults.choice,\n 'SegmentedChoice value binding',\n ) as R<Binding<string | undefined>>;\n if (!value.ok) return value;\n return ok({\n kind: 'SegmentedChoice',\n options: options.value,\n value: value.value,\n ...onChangeField,\n orientation: orientation.value,\n });\n }\n case 'TextArea': {\n const rows = reqField(path, f, 'rows', 'textarea row count integer', requireInt);\n if (!rows.ok) return rows;\n const value = valueOr(decodeBinding, controlValueDefaults.text, 'TextArea value binding');\n if (!value.ok) return value;\n return ok({\n kind: 'TextArea',\n value: value.value as Binding<string>,\n ...onChangeField,\n rows: rows.value,\n });\n }\n case 'Date': {\n const value = valueOr(decodeBinding, controlValueDefaults.date, 'Date value binding');\n if (!value.ok) return value;\n const variant = reqField(path, f, 'variant', 'DateVariant', decodeDateVariant);\n if (!variant.ok) return variant;\n const min = optField(path, f, 'min', requireString);\n if (!min.ok) return min;\n const max = optField(path, f, 'max', requireString);\n if (!max.ok) return max;\n const step = optField(path, f, 'step', requireFloat);\n if (!step.ok) return step;\n return ok({\n kind: 'Date',\n value: value.value as Binding<string>,\n ...onChangeField,\n variant: variant.value,\n constraints: {\n ...(min.value !== undefined ? { min: min.value } : {}),\n ...(max.value !== undefined ? { max: max.value } : {}),\n ...(step.value !== undefined ? { step: step.value } : {}),\n },\n });\n }\n case 'DateRange': {\n // Phase 725 — single-control date range: `Range`'s pair mechanics with\n // `Date`'s value conventions. `min` / `max` / `step` are flat (they bound\n // BOTH ends), same omit-when-absent discipline as `Date`.\n const value = valueOr(\n decodeBindingStringPair as (p: string, v: JsonAst) => R<Binding<unknown>>,\n controlValueDefaults.dateRange,\n 'Binding<[from, to]> ISO-8601 pair value',\n ) as R<Binding<readonly [string, string]>>;\n if (!value.ok) return value;\n const variant = reqField(path, f, 'variant', 'DateVariant', decodeDateVariant);\n if (!variant.ok) return variant;\n const min = optField(path, f, 'min', requireString);\n if (!min.ok) return min;\n const max = optField(path, f, 'max', requireString);\n if (!max.ok) return max;\n const step = optField(path, f, 'step', requireFloat);\n if (!step.ok) return step;\n return ok({\n kind: 'DateRange',\n value: value.value,\n ...onChangeField,\n variant: variant.value,\n constraints: {\n ...(min.value !== undefined ? { min: min.value } : {}),\n ...(max.value !== undefined ? { max: max.value } : {}),\n ...(step.value !== undefined ? { step: step.value } : {}),\n },\n });\n }\n default:\n return unknownDuCase(path, d.value, WRONG_FORM_FIELD_KIND_HINT);\n }\n};\n\nconst decodeFormField = (path: string, j: JsonAst): R<FormField<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const id = reqFieldAliased(path, f, 'id', ['name'], 'form field id string', requireString);\n if (!id.ok) return id;\n // Phase 596 — id decodes first so the form context's auto-bind can use it\n // (the chip-name-first precedent from the filters unification). `id` is\n // re-read below by the original ordering; a malformed id surfaces there.\n const idFirst = reqFieldAliased(path, f, 'id', ['name'], 'form-field id string', requireString);\n const kind = reqField(path, f, 'kind', 'FormFieldKind', (p, v) =>\n decodeFormFieldKind(idFirst.ok ? { kind: 'form', id: idFirst.value } : undefined, p, v),\n );\n if (!kind.ok) return kind;\n const label = reqField(path, f, 'label', 'field label TextSource', decodeTextSource);\n if (!label.ok) return label;\n const required = reqField(path, f, 'required', 'required bool', requireBool);\n if (!required.ok) return required;\n const help = optField(path, f, 'help', decodeTextSource);\n if (!help.ok) return help;\n return ok({\n id: id.value,\n kind: kind.value,\n label: label.value,\n required: required.value,\n ...(help.value !== undefined ? { help: help.value } : {}),\n });\n};\n\nconst decodeFormSpec = (path: string, j: JsonAst): R<FormSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const fieldsJ = requireField(path, f, 'fields', 'form field list');\n if (!fieldsJ.ok) return fieldsJ;\n const arr = requireArray(`${path}.fields`, fieldsJ.value);\n if (!arr.ok) return arr;\n const fields = traverseIndexed(arr.value, (i, item) =>\n decodeFormField(`${path}.fields[${i}]`, item),\n );\n if (!fields.ok) return fields;\n const onSubmit = reqField(path, f, 'onSubmit', 'onSubmit Action', decodeAction);\n if (!onSubmit.ok) return onSubmit;\n const submitLabel = reqField(path, f, 'submitLabel', 'submitLabel TextSource', decodeTextSource);\n if (!submitLabel.ok) return submitLabel;\n // Phase 130: optional bound form-level disabled-state.\n const disabled = optField(path, f, 'disabled', decodeBindingBool);\n if (!disabled.ok) return disabled;\n return ok({\n fields: fields.value,\n onSubmit: onSubmit.value,\n submitLabel: submitLabel.value,\n ...(disabled.value !== undefined ? { disabled: disabled.value } : {}),\n });\n};\n\nconst decodeFilterSpec = (path: string, j: JsonAst): R<FilterSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n // 0.2.0 filters-unification: the chip's control is an ordinary\n // FormFieldKind; its absent `value` auto-binds `Filter(name)` (see\n // decodeFormFieldKind). Name decodes first so the synthesis can use it.\n const name = reqField(path, f, 'name', 'filter name string', requireString);\n if (!name.ok) return name;\n const label = reqField(path, f, 'label', 'filter label TextSource', decodeTextSource);\n if (!label.ok) return label;\n const kind = reqField(path, f, 'kind', 'FormFieldKind control', (p, v) =>\n decodeFormFieldKind({ kind: 'filter', name: name.value }, p, v),\n );\n if (!kind.ok) return kind;\n return ok({ name: name.value, label: label.value, field: kind.value });\n};\n\nconst decodeButtonSpec = (path: string, j: JsonAst): R<ButtonSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const label = reqField(path, f, 'label', 'Button label TextSource', decodeTextSource);\n if (!label.ok) return label;\n const onClick = reqField(path, f, 'onClick', 'onClick Action', decodeAction);\n if (!onClick.ok) return onClick;\n const variant = reqField(path, f, 'variant', 'ButtonVariant', decodeButtonVariant);\n if (!variant.ok) return variant;\n const icon = optField(path, f, 'icon', decodeIconSource);\n if (!icon.ok) return icon;\n // Phase 129: optional bound disabled-state.\n const disabled = optField(path, f, 'disabled', decodeBindingBool);\n if (!disabled.ok) return disabled;\n return ok({\n label: label.value,\n onClick: onClick.value,\n variant: variant.value,\n ...(icon.value !== undefined ? { icon: icon.value } : {}),\n ...(disabled.value !== undefined ? { disabled: disabled.value } : {}),\n });\n};\n\nconst decodeSelectSpec = (path: string, j: JsonAst): R<SelectSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const label = reqField(path, f, 'label', 'Select label TextSource', decodeTextSource);\n if (!label.ok) return label;\n const source = reqFieldAliased(\n path,\n f,\n 'source',\n ['options', 'data'],\n 'Select source binding',\n decodeBindingSelectOptions,\n );\n if (!source.ok) return source;\n const value = reqField(path, f, 'value', 'Select value binding', decodeBindingStringOpt);\n if (!value.ok) return value;\n const placeholder = optField(path, f, 'placeholder', decodeTextSource);\n if (!placeholder.ok) return placeholder;\n // Phase 130: optional bound disabled-state.\n const disabled = optField(path, f, 'disabled', decodeBindingBool);\n if (!disabled.ok) return disabled;\n // Phase 291: multi-select. `multiple` absent ⇒ false (single-select); `values`\n // absent ⇒ omitted. The multi onChange is a closure reconstructed by the\n // existing `onChange` placeholder. `values` decodes through the typed\n // string-list decoder (Phase 429 — typed form preferred, opaque read-compat).\n const multiple = optField(path, f, 'multiple', requireBool);\n if (!multiple.ok) return multiple;\n const values = optField(path, f, 'values', decodeBindingStringList);\n if (!values.ok) return values;\n return ok({\n label: label.value,\n source: source.value,\n value: value.value,\n // Phase 426: a present `\"<closure>\"` sentinel → the inert placeholder; an\n // absent key → omitted, arming the renderer's write-back default against\n // `value` / `values`.\n ...(tryField(f, 'onChange') !== undefined ? { onChange: onChangePlaceholder } : {}),\n ...(placeholder.value !== undefined ? { placeholder: placeholder.value } : {}),\n ...(disabled.value !== undefined ? { disabled: disabled.value } : {}),\n ...(multiple.value === true ? { multiple: true } : {}),\n ...(values.value !== undefined ? { values: values.value } : {}),\n ...(tryField(f, 'onChangeMulti') !== undefined ? { onChangeMulti: onChangePlaceholder } : {}),\n });\n};\n\nconst decodeFileUploadSpec = (path: string, j: JsonAst): R<FileUploadSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const acceptJ = requireField(path, f, 'accept', 'accept string list');\n if (!acceptJ.ok) return acceptJ;\n const arr = requireArray(`${path}.accept`, acceptJ.value);\n if (!arr.ok) return arr;\n const accept = traverseIndexed(arr.value, (i, item) =>\n requireString(`${path}.accept[${i}]`, item),\n );\n if (!accept.ok) return accept;\n const label = reqField(path, f, 'label', 'FileUpload label TextSource', decodeTextSource);\n if (!label.ok) return label;\n const multiple = reqField(path, f, 'multiple', 'multiple bool', requireBool);\n if (!multiple.ok) return multiple;\n // Phase 130: optional bound disabled-state.\n const disabled = optField(path, f, 'disabled', decodeBindingBool);\n if (!disabled.ok) return disabled;\n return ok({\n accept: accept.value,\n label: label.value,\n multiple: multiple.value,\n onSelect: () => placeholderAction,\n ...(disabled.value !== undefined ? { disabled: disabled.value } : {}),\n });\n};\n\nconst decodeInputKind = (path: string, j: JsonAst): R<InputKind<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n case 'Form': {\n const r = decodeFormSpec(path, j);\n return r.ok ? ok({ kind: 'Form', spec: r.value }) : r;\n }\n case 'Filters': {\n const itemsJ = requireField(path, f, 'items', 'Filters item list');\n if (!itemsJ.ok) return itemsJ;\n const arr = requireArray(`${path}.items`, itemsJ.value);\n if (!arr.ok) return arr;\n const specs = traverseIndexed(arr.value, (i, item) =>\n decodeFilterSpec(`${path}.items[${i}]`, item),\n );\n return specs.ok ? ok({ kind: 'Filters', specs: specs.value }) : specs;\n }\n case 'Button': {\n const r = decodeButtonSpec(path, j);\n return r.ok ? ok({ kind: 'Button', spec: r.value }) : r;\n }\n case 'FileUpload': {\n const r = decodeFileUploadSpec(path, j);\n return r.ok ? ok({ kind: 'FileUpload', spec: r.value }) : r;\n }\n case 'Select': {\n const r = decodeSelectSpec(path, j);\n return r.ok ? ok({ kind: 'Select', spec: r.value }) : r;\n }\n default:\n return unknownDuCase(path, d.value, 'Form | Filters | Button | FileUpload | Select');\n }\n};\n\n// ─── Visualisation specs ─────────────────────────────────────────────────────\n\n/**\n * Phase 750 — a `TonedPill`'s `map`: a string-keyed object whose VALUES are\n * `ToneVariant`s. Routed through `decodeTone` per entry, so the §3.6 tone aliases work\n * inside the map exactly as at a `tone` field. The refusal is RE-ISSUED rather than\n * passed through: `decodeTone` reports at `<path>.$type` with \"unknown discriminator\",\n * and a map value is neither, so the raw error names a path the document does not\n * contain. Parity-locked with the F# `decodeToneMap`.\n */\nconst decodeToneMap = (path: string, j: JsonAst): R<Record<string, ToneVariant>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const out: Record<string, ToneVariant> = {};\n for (const [k, v] of fo.value) {\n const entryPath = `${path}.${k}`;\n const t = decodeTone(entryPath, v);\n if (!t.ok) {\n if (t.error.code !== 'UNKNOWN_DU_CASE') return t;\n const got = v.kind === 'JString' ? v.value : '';\n return makeError(\n 'UNKNOWN_DU_CASE',\n entryPath,\n `tone-map value '${got}' for '${k}' is not a ToneVariant`,\n TONE_NAMES.join(' | '),\n );\n }\n out[k] = t.value;\n }\n return ok(out);\n};\n\n/** The tone-map field names a `TonedPill` cell accepts (canonical first). */\nconst TONE_MAP_KEYS = ['map', 'toneMap', 'tones'] as const;\n\n/**\n * The shared body of the canonical `TonedPill` case and the `Pill`-tagged §16 shorthand\n * — one reader, so the two spellings cannot drift apart in what they accept.\n */\nconst decodeTonedPill = (path: string, f: Fields): R<CellKindErased<unknown>> => {\n const field = reqField(\n path,\n f,\n 'field',\n 'TonedPill row-field name (drives the label and the map key)',\n requireString,\n );\n if (!field.ok) return field;\n // Field aliases: `toneMap` / `tones` — `map` is the shortest honest name for a\n // value→tone dictionary and the least descriptive one.\n const map = reqFieldAliased(\n path,\n f,\n 'map',\n ['toneMap', 'tones'],\n 'TonedPill value→ToneVariant map',\n decodeToneMap,\n );\n if (!map.ok) return map;\n // `default` is omitted-when-`Default` (Phase 460); restore the identity on absence.\n const defaultTone = optField(path, f, 'default', decodeTone);\n if (!defaultTone.ok) return defaultTone;\n const k: CellKindErased<unknown> = {\n kind: 'TonedPill',\n field: field.value,\n map: map.value,\n defaultTone: defaultTone.value ?? 'Default',\n };\n return ok(k);\n};\n\nconst decodeCellKindErased = (path: string, j: JsonAst): R<CellKindErased<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n case 'Text':\n return ok({ kind: 'Text' });\n case 'Numeric':\n return ok({ kind: 'Numeric' });\n case 'Date':\n return ok({ kind: 'Date' });\n case 'Editable':\n return ok({ kind: 'Editable', onEdit: () => placeholderAction });\n case 'Checkbox':\n return ok({ kind: 'Checkbox', get: () => false, onToggle: () => placeholderAction });\n case 'Button': {\n const label = reqField(path, f, 'label', 'cell button label TextSource', decodeTextSource);\n return label.ok\n ? ok({ kind: 'Button', label: label.value, onClick: () => placeholderAction })\n : label;\n }\n case 'ButtonGroup': {\n const buttonsJ = requireField(path, f, 'buttons', 'button group list');\n if (!buttonsJ.ok) return buttonsJ;\n const arr = requireArray(`${path}.buttons`, buttonsJ.value);\n if (!arr.ok) return arr;\n type Btn = readonly [TextSource, (row: unknown) => Action<unknown>];\n const buttons = traverseIndexed<Btn>(arr.value, (i, item) => {\n const bo = requireObject(`${path}.buttons[${i}]`, item);\n if (!bo.ok) return bo;\n const label = reqField(\n `${path}.buttons[${i}]`,\n bo.value,\n 'label',\n 'button label TextSource',\n decodeTextSource,\n );\n if (!label.ok) return label;\n return ok<Btn>([label.value, () => placeholderAction]);\n });\n if (!buttons.ok) return buttons;\n const k: CellKindErased<unknown> = { kind: 'ButtonGroup', buttons: buttons.value };\n return ok(k);\n }\n case 'Link': {\n const k: CellKindErased<unknown> = {\n kind: 'Link',\n href: () => CLOSURE,\n label: () => ({ kind: 'Literal', value: CLOSURE }),\n };\n return ok(k);\n }\n case 'Pill': {\n // Lenient-ingest (WIRE_FORMAT.md §16, Phase 750): `Pill` is the WORD for the\n // thing, so a declarative tone rule arrives tagged `Pill` more often than tagged\n // `TonedPill`. Before this phase those keys were accepted and DISCARDED — the\n // author's whole intent gone, silently, with no error to notice. Presence of a\n // tone map is the unambiguous tell (a closure `Pill` has no such key).\n if (TONE_MAP_KEYS.some((key) => tryField(f, key) !== undefined))\n return decodeTonedPill(path, f);\n const k: CellKindErased<unknown> = {\n kind: 'Pill',\n label: () => ({ kind: 'Literal', value: CLOSURE }),\n tone: () => 'Default',\n };\n return ok(k);\n }\n case 'TonedPill':\n return decodeTonedPill(path, f);\n case 'Progress': {\n const k: CellKindErased<unknown> = { kind: 'Progress', fraction: () => 0 };\n return ok(k);\n }\n case 'Custom': {\n const k: CellKindErased<unknown> = {\n kind: 'Custom',\n render: () => placeholderClosureNode,\n };\n return ok(k);\n }\n default:\n return unknownDuCase(\n path,\n d.value,\n 'Text | Numeric | Date | Editable | Checkbox | Button | ButtonGroup | Link | Pill | TonedPill | Progress | Custom',\n );\n }\n};\n\nconst decodeColumnErased = (path: string, j: JsonAst): R<ColumnErased<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n // Phase 460 — `format`/`width` omitted-when-default (`CellFormat.None`/`ColumnWidth.Auto`).\n const format = optField(path, f, 'format', decodeCellFormat);\n if (!format.ok) return format;\n const kind = reqFieldAliased(path, f, 'kind', ['type'], 'CellKindErased', decodeCellKindErased);\n if (!kind.ok) return kind;\n const label = reqFieldAliased(\n path,\n f,\n 'label',\n ['header', 'title'],\n 'column label string',\n requireString,\n );\n if (!label.ok) return label;\n const width = optField(path, f, 'width', decodeColumnWidth);\n if (!width.ok) return width;\n // Phase 425 — `value` (closure) present → placeholder (the closure wins, renders Empty); absent →\n // omitted, and `field` (if present) drives the row-field projection with zero host code.\n const hasValue = tryField(f, 'value') !== undefined;\n const fieldJ = tryField(f, 'field');\n let field: string | undefined;\n if (fieldJ !== undefined) {\n const fr = requireString(`${path}.field`, fieldJ);\n if (!fr.ok) return fr;\n field = fr.value;\n }\n return ok({\n format: format.value ?? { kind: 'None' },\n kind: kind.value,\n label: label.value,\n width: width.value ?? { kind: 'Auto' },\n ...(hasValue ? { value: () => ({ kind: 'Empty' as const }) } : {}),\n ...(field !== undefined ? { field } : {}),\n });\n};\n\n// Phase 393 — decode the `{ headers, rows }` static-rows object of a read-only grid\n// (also the shape the legacy `Table` decode-upgrade reads). Cells are `TextSource`.\ntype StaticRows = {\n readonly headers: readonly TextSource[];\n readonly rows: readonly (readonly TextSource[])[];\n};\nconst decodeStaticRows = (path: string, j: JsonAst): R<StaticRows> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const headersJ = requireField(path, f, 'headers', 'headers TextSource list');\n if (!headersJ.ok) return headersJ;\n const harr = requireArray(`${path}.headers`, headersJ.value);\n if (!harr.ok) return harr;\n const headers = traverseIndexed(harr.value, (i, item) =>\n decodeTextSource(`${path}.headers[${i}]`, item),\n );\n if (!headers.ok) return headers;\n const rowsJ = requireField(path, f, 'rows', 'rows TextSource matrix');\n if (!rowsJ.ok) return rowsJ;\n const rarr = requireArray(`${path}.rows`, rowsJ.value);\n if (!rarr.ok) return rarr;\n const rows = traverseIndexed(rarr.value, (i, rowJ) => {\n const ro = requireArray(`${path}.rows[${i}]`, rowJ);\n if (!ro.ok) return ro;\n return traverseIndexed(ro.value, (k, cell) =>\n decodeTextSource(`${path}.rows[${i}][${k}]`, cell),\n );\n });\n if (!rows.ok) return rows;\n return ok({ headers: headers.value, rows: rows.value });\n};\n\nconst decodeGridSpec = (path: string, j: JsonAst): R<GridSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const columnsJ = requireField(path, f, 'columns', 'columns list');\n if (!columnsJ.ok) return columnsJ;\n const arr = requireArray(`${path}.columns`, columnsJ.value);\n if (!arr.ok) return arr;\n const columns = traverseIndexed(arr.value, (i, item) =>\n decodeColumnErased(`${path}.columns[${i}]`, item),\n );\n if (!columns.ok) return columns;\n // 0.2.0 omitted-when-false.\n const editable = optField(path, f, 'editable', requireBool);\n if (!editable.ok) return editable;\n const source = reqFieldAliased(\n path,\n f,\n 'source',\n ['data', 'rows'],\n 'Grid source binding',\n decodeBindingRows,\n );\n if (!source.ok) return source;\n const hasRowClick = tryField(f, 'onRowClick') !== undefined;\n // Phase 425 — `rowKey` (closure) + `rowKeyField` (declarative) are sibling optional slots.\n const hasRowKey = tryField(f, 'rowKey') !== undefined;\n const rowKeyFieldJ = tryField(f, 'rowKeyField');\n let rowKeyField: string | undefined;\n if (rowKeyFieldJ !== undefined) {\n const rk = requireString(`${path}.rowKeyField`, rowKeyFieldJ);\n if (!rk.ok) return rk;\n rowKeyField = rk.value;\n }\n // Phase 393 — the static read-only mode (omitted for a data-bound grid, so existing fixtures\n // stay byte-identical).\n const staticRowsJ = tryField(f, 'staticRows');\n let staticRows: StaticRows | undefined;\n if (staticRowsJ !== undefined) {\n const sr = decodeStaticRows(`${path}.staticRows`, staticRowsJ);\n if (!sr.ok) return sr;\n staticRows = sr.value;\n }\n return ok({\n columns: columns.value,\n editable: editable.value ?? false,\n source: source.value as Binding<readonly unknown[]>,\n ...(hasRowClick ? { onRowClick: () => placeholderAction } : {}),\n ...(hasRowKey ? { rowKey: () => CLOSURE } : {}),\n ...(rowKeyField !== undefined ? { rowKeyField } : {}),\n ...(staticRows !== undefined ? { staticRows } : {}),\n });\n};\n\nconst decodeChartSpec = (path: string, j: JsonAst): R<ChartSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const kind = reqField(path, f, 'kind', 'ChartKind', decodeChartKind);\n if (!kind.ok) return kind;\n const source = reqFieldAliased(\n path,\n f,\n 'source',\n ['data'],\n 'Chart source binding',\n decodeBindingRows,\n );\n if (!source.ok) return source;\n const xField = reqField(path, f, 'xField', 'xField string', requireString);\n if (!xField.ok) return xField;\n const yFieldsJ = requireField(path, f, 'yFields', 'yFields string list');\n if (!yFieldsJ.ok) return yFieldsJ;\n const arr = requireArray(`${path}.yFields`, yFieldsJ.value);\n if (!arr.ok) return arr;\n const yFields = traverseIndexed(arr.value, (i, item) =>\n requireString(`${path}.yFields[${i}]`, item),\n );\n if (!yFields.ok) return yFields;\n const title = optField(path, f, 'title', decodeTextSource);\n if (!title.ok) return title;\n const hasPointClick = tryField(f, 'onPointClick') !== undefined;\n // stacked (Phase 126) now round-trips; absent (legacy wire) defaults to false.\n const stacked = optField(path, f, 'stacked', requireBool);\n if (!stacked.ok) return stacked;\n return ok({\n kind: kind.value,\n source: source.value as Binding<readonly unknown[]>,\n xField: xField.value,\n yFields: yFields.value,\n stacked: stacked.value ?? false,\n ...(title.value !== undefined ? { title: title.value } : {}),\n ...(hasPointClick ? { onPointClick: () => placeholderAction } : {}),\n });\n};\n\nconst decodeMapSpec = (\n path: string,\n j: JsonAst,\n): R<import('@fuaran-ui/schema').MapSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const centreLatitude = reqField(path, f, 'centreLatitude', 'centre latitude float', requireFloat);\n if (!centreLatitude.ok) return centreLatitude;\n const centreLongitude = reqField(\n path,\n f,\n 'centreLongitude',\n 'centre longitude float',\n requireFloat,\n );\n if (!centreLongitude.ok) return centreLongitude;\n const source = reqFieldAliased(\n path,\n f,\n 'source',\n ['data', 'markers'],\n 'Map source binding',\n decodeBindingMarkerSeq,\n );\n if (!source.ok) return source;\n const zoom = reqField(path, f, 'zoom', 'zoom integer', requireInt);\n if (!zoom.ok) return zoom;\n const hasMarkerClick = tryField(f, 'onMarkerClick') !== undefined;\n return ok({\n centreLatitude: centreLatitude.value,\n centreLongitude: centreLongitude.value,\n source: source.value,\n zoom: zoom.value,\n ...(hasMarkerClick ? { onMarkerClick: () => placeholderAction } : {}),\n });\n};\n\nconst decodeVisKind = (path: string, j: JsonAst): R<VisKind<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n // Wire discriminator 'DataGrid'; in-memory tag stays 'Grid'.\n case 'DataGrid': {\n const r = decodeGridSpec(path, j);\n return r.ok ? ok({ kind: 'Grid', spec: r.value }) : r;\n }\n case 'Chart': {\n const r = decodeChartSpec(path, j);\n return r.ok ? ok({ kind: 'Chart', spec: r.value }) : r;\n }\n case 'Map': {\n const r = decodeMapSpec(path, j);\n return r.ok ? ok({ kind: 'Map', spec: r.value }) : r;\n }\n default:\n return unknownDuCase(path, d.value, 'DataGrid | Chart | Table | Map');\n }\n};\n\n// ─── Layout specs ────────────────────────────────────────────────────────────\n\nconst decodeChildren = (path: string, fields: Fields): R<readonly Node<unknown>[]> => {\n const childrenJ = requireField(path, fields, 'children', 'children Node list');\n if (!childrenJ.ok) return childrenJ;\n const arr = requireArray(`${path}.children`, childrenJ.value);\n if (!arr.ok) return arr;\n return traverseIndexed(arr.value, (i, item) => decodeNodeAst(`${path}.children[${i}]`, item));\n};\n\n// ─── Box — the unified container (Phase 390) ─────────────────────────────────\n\nconst decodeBoxLayout = (path: string, j: JsonAst): R<BoxLayout> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n case 'Flex': {\n const direction = reqField(path, f, 'direction', 'Orientation', decodeOrientation);\n if (!direction.ok) return direction;\n const wrap = reqField(path, f, 'wrap', 'wrap bool', requireBool);\n if (!wrap.ok) return wrap;\n const gap = optField(path, f, 'gap', requireInt);\n if (!gap.ok) return gap;\n return ok({\n kind: 'Flex',\n direction: direction.value,\n wrap: wrap.value,\n ...(gap.value !== undefined ? { gap: gap.value } : {}),\n });\n }\n case 'Grid': {\n // Lenient AI-ingest (WIRE_FORMAT.md 3.6, 2026-07-17): a Grid with NO\n // column spec is the CSS auto-grid prior — accept-and-canonicalise to\n // the language's existing Auto responsive auto-tile. Mirror of F#.\n if (\n tryField(f, 'cols') === undefined &&\n tryField(f, 'columns') === undefined &&\n tryField(f, 'templateColumns') === undefined\n ) {\n return ok({ kind: 'Auto' });\n }\n // templateColumns present => cols is documented-ignored; absence defaults\n // to 1 rather than MISSING_FIELD (0.1.6 pilot residual). Mirror of F#.\n const cols =\n tryField(f, 'cols') === undefined && tryField(f, 'columns') === undefined\n ? ok(1)\n : reqFieldAliased(path, f, 'cols', ['columns'], 'cols integer', requireInt);\n if (!cols.ok) return cols;\n const gap = optField(path, f, 'gap', requireInt);\n if (!gap.ok) return gap;\n const templateColumns = optField(path, f, 'templateColumns', requireString);\n if (!templateColumns.ok) return templateColumns;\n return ok({\n kind: 'Grid',\n cols: cols.value,\n ...(gap.value !== undefined ? { gap: gap.value } : {}),\n ...(templateColumns.value !== undefined ? { templateColumns: templateColumns.value } : {}),\n });\n }\n case 'Auto':\n return ok({ kind: 'Auto' });\n default:\n return unknownDuCase(path, d.value, 'Flex | Grid | Auto');\n }\n};\n\nconst decodeBoxRole = (path: string, j: JsonAst): R<BoxRole> => {\n const s = requireString(path, j);\n if (!s.ok) return s;\n switch (s.value) {\n case 'Group':\n case 'Card':\n case 'Dashboard':\n case 'Separator':\n return ok(s.value);\n default:\n return unknownDuCase(path, s.value, 'Group | Card | Dashboard | Separator');\n }\n};\n\nconst decodeBox = (path: string, j: JsonAst): R<BoxSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const children = decodeChildren(path, f);\n if (!children.ok) return children;\n const heading = optFieldAliased(path, f, 'heading', ['title'], decodeTextSource);\n if (!heading.ok) return heading;\n const layout = reqField(path, f, 'layout', 'layout object', decodeBoxLayout);\n if (!layout.ok) return layout;\n const role = reqField(path, f, 'role', 'role string', decodeBoxRole);\n if (!role.ok) return role;\n return ok({\n children: children.value,\n ...(heading.value !== undefined ? { heading: heading.value } : {}),\n layout: layout.value,\n role: role.value,\n });\n};\n\nconst decodeSplitPanelSpec = (path: string, j: JsonAst): R<SplitPanelSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const children = decodeChildren(path, f);\n if (!children.ok) return children;\n const weight = reqField(path, f, 'weight', 'weight float', requireFloat);\n if (!weight.ok) return weight;\n return ok({ children: children.value, weight: weight.value });\n};\n\nconst decodeTabHeader = (path: string, j: JsonAst): R<TabHeader> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const label = reqField(path, f, 'label', 'tab header label TextSource', decodeTextSource);\n if (!label.ok) return label;\n const icon = optField(path, f, 'icon', decodeIconSource);\n if (!icon.ok) return icon;\n const disabled = optField(path, f, 'disabled', decodeBindingBool);\n if (!disabled.ok) return disabled;\n return ok({\n label: label.value,\n ...(icon.value !== undefined ? { icon: icon.value } : {}),\n ...(disabled.value !== undefined ? { disabled: disabled.value } : {}),\n });\n};\n\nconst decodeTabsSpec = (path: string, j: JsonAst): R<TabsSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const children = decodeChildren(path, f);\n if (!children.ok) return children;\n // 0.2.0 omitted-when-default (`Horizontal`).\n const orientationJ = tryField(f, 'orientation');\n const orientation =\n orientationJ === undefined\n ? ok<Orientation>('Horizontal')\n : decodeOrientation(`${path}.orientation`, orientationJ);\n if (!orientation.ok) return orientation;\n let tabHeaders: readonly TabHeader[] | undefined;\n const thJ = tryField(f, 'tabHeaders');\n if (thJ !== undefined) {\n const arr = requireArray(`${path}.tabHeaders`, thJ);\n if (!arr.ok) return arr;\n const hs = traverseIndexed(arr.value, (i, item) =>\n decodeTabHeader(`${path}.tabHeaders[${i}]`, item),\n );\n if (!hs.ok) return hs;\n tabHeaders = hs.value;\n }\n let tabTags: readonly string[] | undefined;\n const ttJ = tryField(f, 'tabTags');\n if (ttJ !== undefined) {\n const arr = requireArray(`${path}.tabTags`, ttJ);\n if (!arr.ok) return arr;\n const ts = traverseIndexed(arr.value, (i, item) =>\n requireString(`${path}.tabTags[${i}]`, item),\n );\n if (!ts.ok) return ts;\n tabTags = ts.value;\n }\n const activeTag = optField(path, f, 'activeTag', decodeBindingString);\n if (!activeTag.ok) return activeTag;\n // activeIndex (Phase 126) now round-trips; absent (legacy wire) defaults to\n // Static 0. onSelect / onSelectTag (Phase 426): a present `\"<closure>\"`\n // sentinel → the inert placeholder; an absent key → omitted, arming the\n // renderer's ActiveIndex/ActiveTag write-back default.\n const activeIndex = optField(path, f, 'activeIndex', decodeBinding);\n if (!activeIndex.ok) return activeIndex;\n return ok({\n children: children.value,\n orientation: orientation.value,\n activeIndex: (activeIndex.value as Binding<number> | undefined) ?? { kind: 'Static', value: 0 },\n ...(tryField(f, 'onSelect') !== undefined ? { onSelect: () => placeholderAction } : {}),\n ...(tabHeaders !== undefined ? { tabHeaders } : {}),\n ...(tabTags !== undefined ? { tabTags } : {}),\n ...(activeTag.value !== undefined ? { activeTag: activeTag.value } : {}),\n ...(tryField(f, 'onSelectTag') !== undefined ? { onSelectTag: () => placeholderAction } : {}),\n });\n};\n\nconst decodeStepperSpec = (path: string, j: JsonAst): R<StepperSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const activeStep = reqField(path, f, 'activeStep', 'activeStep binding', decodeBinding);\n if (!activeStep.ok) return activeStep;\n const children = decodeChildren(path, f);\n if (!children.ok) return children;\n // `onSelect` is a closure → the sentinel is consumed and reconstructs a\n // no-op placeholder action (mirrors Tabs).\n return ok({\n activeStep: activeStep.value as Binding<number>,\n children: children.value,\n onSelect: () => placeholderAction,\n });\n};\n\nconst decodeSummaryListSpec = (path: string, j: JsonAst): R<SummaryListSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const children = decodeChildren(path, f);\n if (!children.ok) return children;\n const heading = optFieldAliased(path, f, 'heading', ['title'], decodeTextSource);\n if (!heading.ok) return heading;\n return ok({\n children: children.value,\n ...(heading.value !== undefined ? { heading: heading.value } : {}),\n });\n};\n\nconst decodeDisclosureSpec = (path: string, j: JsonAst): R<DisclosureSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const children = decodeChildren(path, f);\n if (!children.ok) return children;\n const defaultOpen = reqField(path, f, 'defaultOpen', 'defaultOpen bool', requireBool);\n if (!defaultOpen.ok) return defaultOpen;\n const heading = reqFieldAliased(\n path,\n f,\n 'heading',\n ['title'],\n 'Disclosure heading TextSource',\n decodeTextSource,\n );\n if (!heading.ok) return heading;\n const open = reqField(path, f, 'open', 'open binding', decodeBinding);\n if (!open.ok) return open;\n return ok({\n children: children.value,\n defaultOpen: defaultOpen.value,\n heading: heading.value,\n open: open.value as Binding<boolean>,\n // Phase 426: a present `\"<closure>\"` sentinel → the inert placeholder; an\n // absent key → omitted, arming the `open` write-back default.\n ...(tryField(f, 'onToggle') !== undefined ? { onToggle: () => placeholderAction } : {}),\n });\n};\n\nconst decodeModalSpec = (path: string, j: JsonAst): R<ModalSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const children = decodeChildren(path, f);\n if (!children.ok) return children;\n const dismissable = reqField(path, f, 'dismissable', 'dismissable bool', requireBool);\n if (!dismissable.ok) return dismissable;\n // `onDismiss` is optional since Phase 426: absent → omitted, arming the\n // `open` write-back default (dismiss writes `false` to the slot).\n const onDismiss = optField(path, f, 'onDismiss', decodeAction);\n if (!onDismiss.ok) return onDismiss;\n const open = reqField(path, f, 'open', 'open binding', decodeBinding);\n if (!open.ok) return open;\n const heading = optFieldAliased(path, f, 'heading', ['title'], decodeTextSource);\n if (!heading.ok) return heading;\n return ok({\n children: children.value,\n dismissable: dismissable.value,\n ...(onDismiss.value !== undefined ? { onDismiss: onDismiss.value } : {}),\n open: open.value as Binding<boolean>,\n ...(heading.value !== undefined ? { heading: heading.value } : {}),\n });\n};\n\nconst decodeScrollAreaSpec = (path: string, j: JsonAst): R<ScrollAreaSpec<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const children = decodeChildren(path, f);\n if (!children.ok) return children;\n const orientation = reqField(\n path,\n f,\n 'orientation',\n 'ScrollOrientation',\n decodeScrollOrientation,\n );\n if (!orientation.ok) return orientation;\n const maxHeight = optField(path, f, 'maxHeight', requireInt);\n if (!maxHeight.ok) return maxHeight;\n const maxWidth = optField(path, f, 'maxWidth', requireInt);\n if (!maxWidth.ok) return maxWidth;\n return ok({\n children: children.value,\n orientation: orientation.value,\n ...(maxHeight.value !== undefined ? { maxHeight: maxHeight.value } : {}),\n ...(maxWidth.value !== undefined ? { maxWidth: maxWidth.value } : {}),\n });\n};\n\nconst decodeLayoutKind = (path: string, j: JsonAst): R<LayoutKind<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n // Flat wire: spec fields are hoisted onto the kind object itself (no `spec`\n // wrapper, WIRE_FORMAT.md §3.2) — pass `j` to the spec decoder.\n switch (d.value) {\n // Phase 390 — the unified container + the four legacy decode-upgrades.\n case 'Box': {\n const r = decodeBox(path, j);\n return r.ok ? ok({ kind: 'Box', spec: r.value }) : r;\n }\n case 'SplitPanel': {\n const r = decodeSplitPanelSpec(path, j);\n return r.ok ? ok({ kind: 'SplitPanel', spec: r.value }) : r;\n }\n case 'Tabs': {\n const r = decodeTabsSpec(path, j);\n return r.ok ? ok({ kind: 'Tabs', spec: r.value }) : r;\n }\n case 'Stepper': {\n const r = decodeStepperSpec(path, j);\n return r.ok ? ok({ kind: 'Stepper', spec: r.value }) : r;\n }\n case 'SummaryList': {\n const r = decodeSummaryListSpec(path, j);\n return r.ok ? ok({ kind: 'SummaryList', spec: r.value }) : r;\n }\n case 'Disclosure': {\n const r = decodeDisclosureSpec(path, j);\n return r.ok ? ok({ kind: 'Disclosure', spec: r.value }) : r;\n }\n case 'Modal': {\n const r = decodeModalSpec(path, j);\n return r.ok ? ok({ kind: 'Modal', spec: r.value }) : r;\n }\n case 'ScrollArea': {\n const r = decodeScrollAreaSpec(path, j);\n return r.ok ? ok({ kind: 'ScrollArea', spec: r.value }) : r;\n }\n default:\n return unknownDuCase(\n path,\n d.value,\n 'Box | SplitPanel | Tabs | Stepper | SummaryList | Disclosure | Modal | ScrollArea',\n );\n }\n};\n\n// ─── NodeKind ────────────────────────────────────────────────────────────────\n\nconst decodeContentHash = (path: string, j: JsonAst): R<ContentHash> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const algorithm = reqField(path, f, 'algorithm', 'hash algorithm string', requireString);\n if (!algorithm.ok) return algorithm;\n const hash = reqField(path, f, 'hash', 'hash string', requireString);\n if (!hash.ok) return hash;\n const strictnessR = reqField(\n path,\n f,\n 'strictness',\n \"'StrictReplay' | 'AdvisoryWarning' | 'Enforced'\",\n requireString,\n );\n if (!strictnessR.ok) return strictnessR;\n const s = strictnessR.value;\n if (s !== 'StrictReplay' && s !== 'AdvisoryWarning' && s !== 'Enforced') {\n return unknownDuCase(`${path}.strictness`, s, 'StrictReplay | AdvisoryWarning | Enforced');\n }\n return ok({ algorithm: algorithm.value, hash: hash.value, strictness: s as HashStrictness });\n};\n\n// ─── Parameterised-fragment hole / effect / scalar decoders (Phase 180) ──────\n\nconst decodeHoleValueSpace = (path: string, j: JsonAst): R<HoleValueSpace> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const disc = requireDiscriminator(path, fo.value);\n if (!disc.ok) return disc;\n switch (disc.value) {\n case 'IntRange': {\n const min = reqField(path, fo.value, 'min', 'IntRange min', requireInt);\n if (!min.ok) return min;\n const max = reqField(path, fo.value, 'max', 'IntRange max', requireInt);\n if (!max.ok) return max;\n return ok({ kind: 'IntRange', min: min.value, max: max.value });\n }\n case 'FloatRange': {\n const min = reqField(path, fo.value, 'min', 'FloatRange min', requireFloat);\n if (!min.ok) return min;\n const max = reqField(path, fo.value, 'max', 'FloatRange max', requireFloat);\n if (!max.ok) return max;\n return ok({ kind: 'FloatRange', min: min.value, max: max.value });\n }\n case 'StringLen': {\n const minLen = reqField(path, fo.value, 'minLen', 'StringLen minLen', requireInt);\n if (!minLen.ok) return minLen;\n const maxLen = reqField(path, fo.value, 'maxLen', 'StringLen maxLen', requireInt);\n if (!maxLen.ok) return maxLen;\n return ok({ kind: 'StringLen', minLen: minLen.value, maxLen: maxLen.value });\n }\n case 'Enum': {\n const arr = reqField(path, fo.value, 'choices', 'Enum choices', requireArray);\n if (!arr.ok) return arr;\n const choices = traverseIndexed(arr.value, (i, item) =>\n requireString(`${path}.choices[${i}]`, item),\n );\n if (!choices.ok) return choices;\n return ok({ kind: 'Enum', choices: choices.value });\n }\n case 'AnyString':\n return ok({ kind: 'AnyString' });\n default:\n return unknownDuCase(\n path,\n disc.value,\n 'IntRange | FloatRange | StringLen | Enum | AnyString',\n );\n }\n};\n\nconst decodeFragmentScalar = (path: string, j: JsonAst): R<FragmentScalar> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const disc = requireDiscriminator(path, fo.value);\n if (!disc.ok) return disc;\n switch (disc.value) {\n case 'Int': {\n const v = reqField(path, fo.value, 'value', 'Int value', requireInt);\n return v.ok ? ok({ kind: 'int', value: v.value }) : v;\n }\n case 'Float': {\n const v = reqField(path, fo.value, 'value', 'Float value', requireFloat);\n return v.ok ? ok({ kind: 'float', value: v.value }) : v;\n }\n case 'Bool': {\n const v = reqField(path, fo.value, 'value', 'Bool value', requireBool);\n return v.ok ? ok({ kind: 'bool', value: v.value }) : v;\n }\n case 'Str': {\n const v = reqField(path, fo.value, 'value', 'Str value', requireString);\n return v.ok ? ok({ kind: 'str', value: v.value }) : v;\n }\n default:\n return unknownDuCase(path, disc.value, 'Int | Float | Bool | Str');\n }\n};\n\nconst decodeHoleDecl = (path: string, j: JsonAst): R<HoleDecl> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const disc = requireDiscriminator(path, fo.value);\n if (!disc.ok) return disc;\n switch (disc.value) {\n case 'Value': {\n const name = reqField(path, fo.value, 'name', 'Value hole name', requireString);\n if (!name.ok) return name;\n const space = reqField(path, fo.value, 'space', 'Value hole space', decodeHoleValueSpace);\n if (!space.ok) return space;\n const def = optField(path, fo.value, 'default', decodeFragmentScalar);\n if (!def.ok) return def;\n return ok({\n kind: 'Value',\n name: name.value,\n space: space.value,\n ...(def.value !== undefined ? { default: def.value } : {}),\n });\n }\n case 'Slot': {\n const name = reqField(path, fo.value, 'name', 'Slot hole name', requireString);\n if (!name.ok) return name;\n const kc = optField(path, fo.value, 'kindConstraint', requireString);\n if (!kc.ok) return kc;\n return ok({\n kind: 'Slot',\n name: name.value,\n ...(kc.value !== undefined ? { kindConstraint: kc.value } : {}),\n });\n }\n case 'Repeat': {\n const name = reqField(path, fo.value, 'name', 'Repeat hole name', requireString);\n if (!name.ok) return name;\n const space = reqField(\n path,\n fo.value,\n 'countSpace',\n 'Repeat hole countSpace',\n decodeHoleValueSpace,\n );\n if (!space.ok) return space;\n return ok({ kind: 'Repeat', name: name.value, countSpace: space.value });\n }\n default:\n return unknownDuCase(path, disc.value, 'Value | Slot | Repeat');\n }\n};\n\nconst decodeEffectClass = (path: string, j: JsonAst): R<EffectClass> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const host = reqField(path, fo.value, 'hostEffect', 'EffectClass hostEffect', requireString);\n if (!host.ok) return host;\n if (host.value !== 'Pure' && host.value !== 'ReadsHost' && host.value !== 'WritesHost')\n return unknownDuCase(`${path}.hostEffect`, host.value, 'Pure | ReadsHost | WritesHost');\n const det = reqField(path, fo.value, 'determinism', 'EffectClass determinism', requireString);\n if (!det.ok) return det;\n if (\n det.value !== 'Deterministic' &&\n det.value !== 'Clock' &&\n det.value !== 'Random' &&\n det.value !== 'Network'\n )\n return unknownDuCase(\n `${path}.determinism`,\n det.value,\n 'Deterministic | Clock | Random | Network',\n );\n return ok({ hostEffect: host.value as HostEffect, determinism: det.value as DeterminismSource });\n};\n\n/**\n * The `expectedShape` hint carried by every `WRONG_NODE_KIND` error, PROJECTED\n * from the single `NODE_KIND_GROUPS` vocabulary in `@fuaran-ui/schema` rather\n * than hand-maintained — a kind added to that enumeration reaches this hint for\n * free, which is the drift class three separately-maintained hint strings had\n * already accumulated across the hosts.\n *\n * Byte-identical to the F# and Rust hosts' hint (the group order is the shared\n * contract), so a model repairing against one host sees the same vocabulary it\n * would see from any other. Pinned against the generated manifest `kinds` by the\n * corpus test suite.\n */\nexport const WRONG_NODE_KIND_HINT: string = (() => {\n // Every group but `Structural` is a named primitive family; the structural\n // kinds are listed bare at the tail. Written as a fold over the groups rather\n // than four hardcoded lookups so a NEW family also reaches the hint for free.\n const primitives = NODE_KIND_GROUPS.filter((g) => g.label !== 'Structural')\n .map(\n (g) =>\n `${'AEIOU'.includes(g.label[0]!) ? 'an' : 'a'} ${g.label} primitive (${g.kinds.join(' | ')})`,\n )\n .join(', ');\n const structural = NODE_KIND_GROUPS.find((g) => g.label === 'Structural')?.kinds ?? [];\n return `${primitives}, or ${structural.join(' | ')}`;\n})();\n\nconst decodeNodeKind = (path: string, j: JsonAst): R<NodeKind<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n switch (d.value) {\n // The four behavioural categories are flat on the wire (WIRE_FORMAT §3.2):\n // the `kind` object carries the primitive discriminator directly, so route\n // each primitive to its inner decoder and recover the category here. These\n // name-sets MUST stay in sync with the four inner decoders + the encoder.\n case 'Box':\n case 'SplitPanel':\n case 'Tabs':\n case 'Stepper':\n case 'SummaryList':\n case 'Disclosure':\n case 'Modal':\n case 'ScrollArea': {\n const k = decodeLayoutKind(path, j);\n return k.ok ? ok({ kind: 'Layout', layout: k.value }) : k;\n }\n case 'Heading':\n case 'Markdown':\n case 'Metric':\n case 'Badge':\n case 'Sparkline':\n case 'Callout':\n case 'Progress':\n case 'Skeleton':\n case 'LabelValueRow':\n case 'Fact':\n case 'Link':\n case 'Image':\n case 'List':\n case 'Toast':\n case 'CodeBlock':\n case 'Math':\n case 'Drawing': {\n const k = decodeDisplayKind(path, j);\n return k.ok ? ok({ kind: 'Display', display: k.value }) : k;\n }\n case 'Form':\n case 'Filters':\n case 'Button':\n case 'FileUpload':\n case 'Select': {\n const k = decodeInputKind(path, j);\n return k.ok ? ok({ kind: 'Input', input: k.value }) : k;\n }\n case 'DataGrid':\n case 'Chart':\n case 'Map': {\n const k = decodeVisKind(path, j);\n return k.ok ? ok({ kind: 'Visualisation', visualisation: k.value }) : k;\n }\n case 'Custom': {\n const moduleId = reqField(path, f, 'moduleId', 'Custom moduleId string', requireString);\n if (!moduleId.ok) return moduleId;\n const componentId = reqField(\n path,\n f,\n 'componentId',\n 'Custom componentId string',\n requireString,\n );\n if (!componentId.ok) return componentId;\n const propsJ = requireField(path, f, 'props', 'Custom props map');\n if (!propsJ.ok) return propsJ;\n const props = decodeJValMap(`${path}.props`, propsJ.value);\n if (!props.ok) return props;\n const contentHash = optField(path, f, 'contentHash', decodeContentHash);\n if (!contentHash.ok) return contentHash;\n let exposedNodeIds: readonly NodeId[] = [];\n const exJ = tryField(f, 'exposedNodeIds');\n if (exJ !== undefined) {\n const arr = requireArray(`${path}.exposedNodeIds`, exJ);\n if (!arr.ok) return arr;\n const ids = traverseIndexed(arr.value, (i, item) =>\n requireString(`${path}.exposedNodeIds[${i}]`, item),\n );\n if (!ids.ok) return ids;\n exposedNodeIds = ids.value as NodeId[];\n }\n return ok({\n kind: 'Custom',\n moduleId: moduleId.value,\n componentId: componentId.value,\n props: props.value,\n exposedNodeIds,\n ...(contentHash.value !== undefined ? { contentHash: contentHash.value } : {}),\n });\n }\n case 'ErrorBoundary': {\n const child = reqField(path, f, 'child', 'ErrorBoundary child Node', decodeNodeAst);\n if (!child.ok) return child;\n const fallback = reqField(path, f, 'fallback', 'ErrorBoundary fallback Node', decodeNodeAst);\n if (!fallback.ok) return fallback;\n return ok({ kind: 'ErrorBoundary', spec: { child: child.value, fallback: fallback.value } });\n }\n case 'Switch': {\n // State-bound conditional child (Phase 392). `stateKey` (string), `cases`\n // (array of `{child,match}` objects), `default` (Node) — all required.\n // Duplicate `match` values are NOT a decode error (first-match-wins keeps\n // decode structural; the pre-emit validator flags them, FUARAN082).\n // Phase 768 — `on` (any Binding) or the compact `stateKey` (the State\n // form's canonical spelling). Both absent keeps the stateKey\n // MISSING_FIELD, so the reject fixture's error is unchanged.\n const onJ = tryField(f, 'on');\n const on =\n onJ !== undefined\n ? decodeBinding(`${path}.on`, onJ)\n : (() => {\n const stateKey = reqField(\n path,\n f,\n 'stateKey',\n 'Switch stateKey string',\n requireString,\n );\n return stateKey.ok\n ? ok({\n kind: 'State',\n key: stateKey.value,\n defaultValue: undefined as unknown as string,\n } as Binding<string>)\n : stateKey;\n })();\n if (!on.ok) return on;\n const casesArr = reqField(path, f, 'cases', 'Switch cases array', requireArray);\n if (!casesArr.ok) return casesArr;\n const cases = traverseIndexed(casesArr.value, (i, item) => {\n const cp = `${path}.cases[${i}]`;\n const co = requireObject(cp, item);\n if (!co.ok) return co;\n const m = reqField(cp, co.value, 'match', 'Switch case match string', requireString);\n if (!m.ok) return m;\n const c = reqField(cp, co.value, 'child', 'Switch case child Node', decodeNodeAst);\n if (!c.ok) return c;\n return ok({ match: m.value, child: c.value });\n });\n if (!cases.ok) return cases;\n const def = reqField(path, f, 'default', 'Switch default Node', decodeNodeAst);\n if (!def.ok) return def;\n return ok({\n kind: 'Switch',\n spec: { on: on.value as Binding<string>, cases: cases.value, default: def.value },\n });\n }\n case 'FragmentDecl': {\n const name = reqField(path, f, 'name', 'FragmentDecl name string', requireString);\n if (!name.ok) return name;\n const body = reqField(path, f, 'body', 'FragmentDecl body Node', decodeNodeAst);\n if (!body.ok) return body;\n // Phase 180 — `holes` / `effect` additive; absent ⇒ degenerate fixed-body.\n let holes: readonly HoleDecl[] = [];\n const holesJ = tryField(f, 'holes');\n if (holesJ !== undefined) {\n const arr = requireArray(`${path}.holes`, holesJ);\n if (!arr.ok) return arr;\n const decoded = traverseIndexed(arr.value, (i, item) =>\n decodeHoleDecl(`${path}.holes[${i}]`, item),\n );\n if (!decoded.ok) return decoded;\n holes = decoded.value;\n }\n let effect: EffectClass = { hostEffect: 'Pure', determinism: 'Deterministic' };\n const effectJ = tryField(f, 'effect');\n if (effectJ !== undefined) {\n const e = decodeEffectClass(`${path}.effect`, effectJ);\n if (!e.ok) return e;\n effect = e.value;\n }\n return ok({\n kind: 'FragmentDecl',\n spec: { name: name.value as FragmentId, body: body.value, holes, effect },\n });\n }\n case 'FragmentRef': {\n const name = reqField(path, f, 'name', 'FragmentRef name string', requireString);\n if (!name.ok) return name;\n // Phase 180 — `args` additive; absent ⇒ degenerate zero-arg ref.\n const args: Record<string, FragmentArg<unknown>> = {};\n const argsJ = tryField(f, 'args');\n if (argsJ !== undefined) {\n const argsObj = requireObject(`${path}.args`, argsJ);\n if (!argsObj.ok) return argsObj;\n for (const [key, valueJ] of argsObj.value) {\n const argPath = `${path}.args.${key}`;\n const fo = requireObject(argPath, valueJ);\n if (!fo.ok) return fo;\n const disc = requireDiscriminator(argPath, fo.value);\n if (!disc.ok) return disc;\n if (disc.value === 'SlotArg') {\n const tree = reqField(argPath, fo.value, 'tree', 'SlotArg tree Node', decodeNodeAst);\n if (!tree.ok) return tree;\n args[key] = { kind: 'slot', tree: tree.value };\n } else {\n // Int | Float | Bool | Str — a value argument.\n const scalar = decodeFragmentScalar(argPath, valueJ);\n if (!scalar.ok) return scalar;\n args[key] = { kind: 'value', value: scalar.value };\n }\n }\n }\n return ok({ kind: 'FragmentRef', spec: { name: name.value as FragmentId, args } });\n }\n case 'Mount': {\n // Phase 265, §4o — the isolation/embedding boundary. Mirror the encoder:\n // required `scopeId` + `channel` + `capabilities`; optional `inputs`\n // (additive, reusing the FragmentArg decode). `onBubble` is a closure\n // sentinel on the wire → dropped from the typed shape. A malformed Mount\n // surfaces a structured DecodeError, never a throw (default-deny).\n const scopeId = reqField(path, f, 'scopeId', 'Mount scopeId string', requireString);\n if (!scopeId.ok) return scopeId;\n\n const channelObj = reqField(path, f, 'channel', 'Mount channel object', requireObject);\n if (!channelObj.ok) return channelObj;\n const direction = reqField(\n `${path}.channel`,\n channelObj.value,\n 'direction',\n 'channel direction string',\n requireString,\n );\n if (!direction.ok) return direction;\n if (direction.value !== 'OutOnly' && direction.value !== 'TwoWay')\n return makeError(\n 'UNKNOWN_DU_CASE',\n `${path}.channel.direction`,\n `unknown ChannelDirection '${direction.value}'`,\n 'OutOnly | TwoWay',\n );\n const dir = direction.value as 'OutOnly' | 'TwoWay';\n let messageShape: string | undefined;\n const msgShapeJ = tryField(channelObj.value, 'messageShape');\n if (msgShapeJ !== undefined) {\n const ms = requireString(`${path}.channel.messageShape`, msgShapeJ);\n if (!ms.ok) return ms;\n messageShape = ms.value;\n }\n\n const capsArr = reqField(path, f, 'capabilities', 'Mount capabilities array', requireArray);\n if (!capsArr.ok) return capsArr;\n const capabilities: string[] = [];\n for (let i = 0; i < capsArr.value.length; i++) {\n const c = requireString(`${path}.capabilities[${i}]`, capsArr.value[i]!);\n if (!c.ok) return c;\n capabilities.push(c.value);\n }\n\n // Phase 265 — `inputs` additive; absent ⇒ zero-input mount. Reuses the\n // FragmentArg decode (value scalar or slot subtree).\n const inputs: Record<string, FragmentArg<unknown>> = {};\n const inputsJ = tryField(f, 'inputs');\n if (inputsJ !== undefined) {\n const inputsObj = requireObject(`${path}.inputs`, inputsJ);\n if (!inputsObj.ok) return inputsObj;\n for (const [key, valueJ] of inputsObj.value) {\n const argPath = `${path}.inputs.${key}`;\n const fo = requireObject(argPath, valueJ);\n if (!fo.ok) return fo;\n const disc = requireDiscriminator(argPath, fo.value);\n if (!disc.ok) return disc;\n if (disc.value === 'SlotArg') {\n const tree = reqField(argPath, fo.value, 'tree', 'SlotArg tree Node', decodeNodeAst);\n if (!tree.ok) return tree;\n inputs[key] = { kind: 'slot', tree: tree.value };\n } else {\n const scalar = decodeFragmentScalar(argPath, valueJ);\n if (!scalar.ok) return scalar;\n inputs[key] = { kind: 'value', value: scalar.value };\n }\n }\n }\n\n // Build `channel` conditionally so `messageShape` is present only when\n // decoded (exactOptionalPropertyTypes forbids an explicit `undefined`).\n const channel =\n messageShape !== undefined ? { direction: dir, messageShape } : { direction: dir };\n\n return ok({\n kind: 'Mount',\n spec: {\n scopeId: scopeId.value,\n inputs,\n channel,\n capabilities,\n },\n });\n }\n default:\n return makeError(\n 'WRONG_NODE_KIND',\n `${path}.$type`,\n `unknown NodeKind discriminator '${d.value}'`,\n WRONG_NODE_KIND_HINT,\n );\n }\n};\n\n// ─── StateBehaviour / SemanticStyle / Accessibility / Node ───────────────────\n\nconst decodeStateBehaviour = (path: string, j: JsonAst): R<StateBehaviour<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const onLoading = optField(path, f, 'onLoading', decodeNodeAst);\n if (!onLoading.ok) return onLoading;\n const onEmpty = optField(path, f, 'onEmpty', decodeNodeAst);\n if (!onEmpty.ok) return onEmpty;\n const hasOnError = tryField(f, 'onError') !== undefined;\n return ok({\n ...(onLoading.value !== undefined ? { onLoading: onLoading.value } : {}),\n ...(onEmpty.value !== undefined ? { onEmpty: onEmpty.value } : {}),\n ...(hasOnError ? { onError: (_p: ErrorPayload): Node<unknown> => placeholderClosureNode } : {}),\n });\n};\n\nconst decodeSemanticStyle = (path: string, j: JsonAst): R<SemanticStyle> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n // Phase 460 — tone/weight/emphasis join role/voice as omitted-when-default;\n // restore the identity default on absence.\n const tone = optField(path, f, 'tone', decodeTone);\n if (!tone.ok) return tone;\n const weight = optField(path, f, 'weight', decodeWeight);\n if (!weight.ok) return weight;\n const emphasis = optField(path, f, 'emphasis', decodeEmphasis);\n if (!emphasis.ok) return emphasis;\n // `role` / `voice` (Phase 147) are optional on the wire — omitted at their\n // defaults ('None' / 'Default'); restore the default on absence.\n const role = optField(path, f, 'role', decodeStyleRole);\n if (!role.ok) return role;\n const voice = optField(path, f, 'voice', decodeFontVoice);\n if (!voice.ok) return voice;\n return ok({\n tone: tone.value ?? 'Default',\n weight: weight.value ?? 'Standard',\n emphasis: emphasis.value ?? 'Normal',\n role: role.value ?? 'None',\n voice: voice.value ?? 'Default',\n });\n};\n\nconst decodeAccessibility = (path: string, j: JsonAst): R<Accessibility> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const label = optField(path, f, 'label', decodeBindingString);\n if (!label.ok) return label;\n const labelledBy = optField(path, f, 'labelledBy', requireString);\n if (!labelledBy.ok) return labelledBy;\n const describedBy = optField(path, f, 'describedBy', requireString);\n if (!describedBy.ok) return describedBy;\n const role = optField(path, f, 'role', decodeAriaRole);\n if (!role.ok) return role;\n const liveRegion = optField(path, f, 'liveRegion', decodeLiveRegion);\n if (!liveRegion.ok) return liveRegion;\n const hidden = optField(path, f, 'hidden', decodeBindingBool);\n if (!hidden.ok) return hidden;\n return ok({\n ...(label.value !== undefined ? { label: label.value } : {}),\n ...(labelledBy.value !== undefined ? { labelledBy: labelledBy.value as NodeId } : {}),\n ...(describedBy.value !== undefined ? { describedBy: describedBy.value as NodeId } : {}),\n ...(role.value !== undefined ? { role: role.value } : {}),\n ...(liveRegion.value !== undefined ? { liveRegion: liveRegion.value } : {}),\n ...(hidden.value !== undefined ? { hidden: hidden.value } : {}),\n });\n};\n\n/** All-empty StateBehaviour the decoder restores when `state` is absent (§3.1). */\nconst emptyStateBehaviour: StateBehaviour<unknown> = {};\n\n/** All-default SemanticStyle the decoder restores when `style` is absent (§3.1). */\nconst defaultSemanticStyle: SemanticStyle = {\n tone: 'Default',\n weight: 'Standard',\n emphasis: 'Normal',\n role: 'None',\n voice: 'Default',\n};\n\nconst placeholderClosureNode: Node<unknown> = {\n id: CLOSURE as NodeId,\n kind: {\n kind: 'Display',\n display: { kind: 'Markdown', spec: { text: { kind: 'Literal', value: CLOSURE } } },\n },\n state: {},\n style: {\n tone: 'Default',\n weight: 'Standard',\n emphasis: 'Normal',\n role: 'None',\n voice: 'Default',\n },\n};\n\nconst decodeNodeAst = (path: string, j: JsonAst): R<Node<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const idJ = requireField(path, f, 'id', 'Node id string');\n if (!idJ.ok) return idJ;\n const idStr = requireString(`${path}.id`, idJ.value);\n if (!idStr.ok) return idStr;\n if (idStr.value === '') {\n return makeError('EMPTY_NODE_ID', `${path}.id`, 'Node id is empty', 'non-empty string');\n }\n const kind = reqField(path, f, 'kind', 'NodeKind discriminator object', decodeNodeKind);\n if (!kind.ok) return kind;\n // `state` / `style` are omitted on the wire when empty / all-default\n // (WIRE_FORMAT.md §3.1) — restore the default on absence.\n const state =\n tryField(f, 'state') === undefined\n ? ok<StateBehaviour<unknown>>(emptyStateBehaviour)\n : reqField(path, f, 'state', 'StateBehaviour object', decodeStateBehaviour);\n if (!state.ok) return state;\n const style =\n tryField(f, 'style') === undefined\n ? ok<SemanticStyle>(defaultSemanticStyle)\n : reqField(path, f, 'style', 'SemanticStyle object', decodeSemanticStyle);\n if (!style.ok) return style;\n const accessibility = optField(path, f, 'accessibility', decodeAccessibility);\n if (!accessibility.ok) return accessibility;\n return ok({\n id: idStr.value as NodeId,\n kind: kind.value,\n state: state.value,\n style: style.value,\n ...(accessibility.value !== undefined ? { accessibility: accessibility.value } : {}),\n });\n};\n\n// ─── TreeOp ──────────────────────────────────────────────────────────────────\n\nconst decodeTreeOpAst = (path: string, j: JsonAst): R<TreeOp<unknown>> => {\n const fo = requireObject(path, j);\n if (!fo.ok) return fo;\n const f = fo.value;\n const d = requireDiscriminator(path, f);\n if (!d.ok) return d;\n const target = (): R<NodeId> => {\n const r = reqField(path, f, 'target', 'target NodeId', requireString);\n return r.ok ? ok(r.value as NodeId) : r;\n };\n switch (d.value) {\n case 'EditNode': {\n const t = target();\n if (!t.ok) return t;\n const newKind = reqField(path, f, 'newKind', 'NodeKind object', decodeNodeKind);\n return newKind.ok\n ? ok({ kind: 'EditNode', target: t.value, newKind: newKind.value })\n : newKind;\n }\n case 'UpdateProp': {\n const t = target();\n if (!t.ok) return t;\n const p = reqField(path, f, 'path', 'dot-separated path string', requireString);\n if (!p.ok) return p;\n const valueJ = requireField(path, f, 'value', 'JsonValue payload');\n if (!valueJ.ok) return valueJ;\n const value = decodeJVal(`${path}.value`, valueJ.value);\n return value.ok\n ? ok({\n kind: 'UpdateProp',\n target: t.value,\n path: p.value,\n value: value.value,\n })\n : value;\n }\n case 'ReplaceBinding': {\n const t = target();\n if (!t.ok) return t;\n const slot = reqField(path, f, 'slot', 'slot name string', requireString);\n if (!slot.ok) return slot;\n const b = reqField(path, f, 'binding', 'Binding object', decodeBinding);\n return b.ok\n ? ok({ kind: 'ReplaceBinding', target: t.value, slot: slot.value, binding: b.value })\n : b;\n }\n case 'UpdateStyle': {\n const t = target();\n if (!t.ok) return t;\n const style = reqField(path, f, 'style', 'SemanticStyle object', decodeSemanticStyle);\n return style.ok ? ok({ kind: 'UpdateStyle', target: t.value, style: style.value }) : style;\n }\n case 'UpdateState': {\n const t = target();\n if (!t.ok) return t;\n const state = reqField(path, f, 'state', 'StateBehaviour object', decodeStateBehaviour);\n return state.ok ? ok({ kind: 'UpdateState', target: t.value, state: state.value }) : state;\n }\n case 'InsertChild': {\n const parentJ = reqField(path, f, 'parentId', 'parent NodeId', requireString);\n if (!parentJ.ok) return parentJ;\n // A legacy `position` is ACCEPTED AND IGNORED for the migration window\n // (phase 683, mirroring 681 on the F# side): the hosts adopt\n // independently, and a stored v1 emission must still apply — as an\n // append, since order is now ReorderChildren's. Simply not reading the\n // field is the tolerance; this decoder takes named fields and ignores\n // the rest. It is a migration mechanism, not a form offered to an\n // author: nothing that teaches the wire mentions it. Phase 687 closes\n // the window and makes it a decode error.\n const child = reqField(path, f, 'child', 'child Node object', decodeNodeAst);\n return child.ok\n ? ok({\n kind: 'InsertChild',\n parentId: parentJ.value as NodeId,\n child: child.value,\n })\n : child;\n }\n case 'RemoveNode': {\n const t = target();\n return t.ok ? ok({ kind: 'RemoveNode', target: t.value }) : t;\n }\n case 'MoveNode': {\n const t = target();\n if (!t.ok) return t;\n // Legacy `newPosition` accepted and ignored — see InsertChild above.\n const newParent = reqField(path, f, 'newParentId', 'new parent NodeId', requireString);\n return newParent.ok\n ? ok({\n kind: 'MoveNode',\n target: t.value,\n newParentId: newParent.value as NodeId,\n })\n : newParent;\n }\n case 'ReorderChildren': {\n const parentJ = reqField(path, f, 'parentId', 'parent NodeId', requireString);\n if (!parentJ.ok) return parentJ;\n const newOrderJ = requireField(path, f, 'newOrder', 'NodeId list');\n if (!newOrderJ.ok) return newOrderJ;\n const arr = requireArray(`${path}.newOrder`, newOrderJ.value);\n if (!arr.ok) return arr;\n const newOrder = traverseIndexed(arr.value, (i, item) =>\n requireString(`${path}.newOrder[${i}]`, item),\n );\n return newOrder.ok\n ? ok({\n kind: 'ReorderChildren',\n parentId: parentJ.value as NodeId,\n newOrder: newOrder.value as NodeId[],\n })\n : newOrder;\n }\n case 'ReplaceRoot': {\n const n = reqField(path, f, 'node', 'root Node object', decodeNodeAst);\n return n.ok ? ok({ kind: 'ReplaceRoot', node: n.value }) : n;\n }\n case 'Batch': {\n const opsJ = requireField(path, f, 'ops', 'Batch inner-op list');\n if (!opsJ.ok) return opsJ;\n const arr = requireArray(`${path}.ops`, opsJ.value);\n if (!arr.ok) return arr;\n const ops = traverseIndexed(arr.value, (i, item) =>\n decodeTreeOpAst(`${path}.ops[${i}]`, item),\n );\n return ops.ok ? ok({ kind: 'Batch', ops: ops.value }) : ops;\n }\n default:\n return unknownDuCase(\n path,\n d.value,\n 'EditNode | UpdateProp | ReplaceBinding | UpdateStyle | UpdateState | InsertChild | RemoveNode | MoveNode | ReorderChildren | ReplaceRoot | Batch',\n );\n }\n};\n\n// ─── Coercion bridge (apply-engine UpdateProp) ───────────────────────────────\n//\n// Port of the F# `JsonDecode.Coerce` module. `TreeOp.UpdateProp` carries a\n// `JsonValue` payload; the apply engine pours it into a typed spec field. These\n// helpers convert the decoded `JsonValue` (a JS primitive, or a wire-shaped DU\n// object) into the field's typed value by rebuilding the JSON AST and running\n// the matching per-type decoder. Failures surface a plain message string the\n// apply engine reframes into a `KindMismatch` ApplyError.\n\nconst valueToAst = (v: JsonValue): JsonAst => {\n if (v === null) return { kind: 'JNull' };\n if (typeof v === 'boolean') return { kind: 'JBool', value: v };\n if (typeof v === 'number') return { kind: 'JNumber', value: v };\n if (typeof v === 'string') return { kind: 'JString', value: v };\n if (Array.isArray(v)) return { kind: 'JArray', items: v.map(valueToAst) };\n const m = new Map<string, JsonAst>();\n for (const [k, vv] of Object.entries(v)) m.set(k, valueToAst(vv));\n return { kind: 'JObject', fields: m };\n};\n\nconst viaAst = <T>(v: JsonValue, dec: (p: string, j: JsonAst) => R<T>): Result<T, string> => {\n const r = dec('$value', valueToAst(v));\n return r.ok ? { ok: true, value: r.value } : { ok: false, error: r.error.message };\n};\n\nconst okS = <T>(value: T): Result<T, string> => ({ ok: true, value });\nconst errS = (error: string): Result<never, string> => ({ ok: false, error });\n\n/** Typed-value coercers for `TreeOp.UpdateProp` (used by the apply engine). */\nexport const coerce = {\n int: (v: JsonValue): Result<number, string> =>\n typeof v === 'number' ? okS(Math.trunc(v)) : errS('expected a JSON number (integer)'),\n float: (v: JsonValue): Result<number, string> =>\n typeof v === 'number' ? okS(v) : errS('expected a JSON number'),\n bool: (v: JsonValue): Result<boolean, string> =>\n typeof v === 'boolean' ? okS(v) : errS('expected a JSON boolean'),\n string: (v: JsonValue): Result<string, string> =>\n typeof v === 'string' ? okS(v) : errS('expected a JSON string'),\n textSource: (v: JsonValue): Result<TextSource, string> => viaAst(v, decodeTextSource),\n bindingNumber: (v: JsonValue): Result<Binding<number>, string> =>\n viaAst(v, decodeBinding) as Result<Binding<number>, string>,\n bindingInt: (v: JsonValue): Result<Binding<number>, string> =>\n viaAst(v, decodeBinding) as Result<Binding<number>, string>,\n bindingBool: (v: JsonValue): Result<Binding<boolean>, string> => viaAst(v, decodeBindingBool),\n bindingString: (v: JsonValue): Result<Binding<string>, string> => viaAst(v, decodeBindingString),\n cellFormat: (v: JsonValue): Result<CellFormat, string> => viaAst(v, decodeCellFormat),\n columnWidth: (v: JsonValue): Result<ColumnWidth, string> => viaAst(v, decodeColumnWidth),\n orientation: (v: JsonValue): Result<Orientation, string> => viaAst(v, decodeOrientation),\n tone: (v: JsonValue): Result<ToneVariant, string> => viaAst(v, decodeTone),\n weight: (v: JsonValue): Result<StyleWeight, string> => viaAst(v, decodeWeight),\n emphasis: (v: JsonValue): Result<Emphasis, string> => viaAst(v, decodeEmphasis),\n /**\n * The behavioural `emphasis` BOOL on Fact / LabelValueRow — the UpdateProp\n * twin of `decodeEmphasisFlag`, so a TreeOp edit gets the same\n * cross-vocabulary admission as a fresh decode (0.2.8, 2026-07-19 sweep).\n */\n emphasisFlag: (v: JsonValue): Result<boolean, string> => viaAst(v, decodeEmphasisFlag),\n headingVariant: (v: JsonValue): Result<HeadingVariant, string> => viaAst(v, decodeHeadingVariant),\n badgeVariant: (v: JsonValue): Result<BadgeVariant, string> => viaAst(v, decodeBadgeVariant),\n iconSource: (v: JsonValue): Result<IconSource, string> => viaAst(v, decodeIconSource),\n};\n\n// ─── Public surface ──────────────────────────────────────────────────────────\n\nconst invalidJson = (parseMessage: string): R<never> =>\n makeError(\n 'INVALID_JSON',\n '$',\n `input is not valid JSON: ${parseMessage}`,\n 'well-formed JSON object per the canonical-JSON shape',\n );\n\n/** Decode a canonical-JSON `Node` payload into the storage-shape `Node<unknown>`. */\nexport const decodeNode = (json: string): R<Node<unknown>> => {\n const parsed = parse(json);\n return parsed.ok ? decodeNodeAst('$', parsed.value) : invalidJson(parsed.error.message);\n};\n\n/** Decode a canonical-JSON `TreeOp` payload into the storage-shape `TreeOp<unknown>`. */\nexport const decodeOp = (json: string): R<TreeOp<unknown>> => {\n const parsed = parse(json);\n return parsed.ok ? decodeTreeOpAst('$', parsed.value) : invalidJson(parsed.error.message);\n};\n","// ============================================================================\n// @fuaran-ui/ops — tree-op apply engine.\n//\n// Port of Fuaran.UI.Ops.Apply. Applies a `TreeOp` against a `Node` tree,\n// returning either the new tree (+ telemetry) or a structured `ApplyError`.\n// The engine never partially mutates: on any error path the input tree is\n// returned untouched (the caller's reference is unchanged, so \"revert\" is\n// implicit). Wrap an op list in `TreeOp.Batch` for all-or-nothing atomicity.\n//\n// Per the F# original (§4g), apply is sequential within a turn; callers fold\n// across an op list themselves or use `Batch`. Structural child ops\n// (Insert / Remove / Move / Reorder) address `Layout` nodes only — every\n// layout spec carries an ordered `children` list; non-layout kinds surface a\n// `ChildlessKind` error with a hint enumerating what is addressable.\n//\n// `ApplyResult` additionally carries `emittedTelemetry` (one record per\n// applied leaf op) per the Phase 76 contract; the apply-engine shape stays\n// alpha until Phase 78 validates it against a real sample app.\n// ============================================================================\n\nimport type {\n Binding,\n LayoutKind,\n Node,\n NodeId,\n NodeKind,\n Result,\n SemanticStyle,\n StateBehaviour,\n} from '@fuaran-ui/schema';\n\nimport { coerce } from './decode.js';\nimport type { TreeOp } from './treeOp.js';\n\n// ─── Error + result surface ──────────────────────────────────────────────────\n\nexport type ApplyErrorCode =\n | 'NodeNotFound'\n | 'ParentNotFound'\n | 'ChildlessKind'\n | 'PositionOutOfRange'\n | 'DuplicateNodeId'\n | 'FieldNotFound'\n | 'SlotNotFound'\n | 'KindMismatch'\n | 'PathInvalid'\n | 'PathNotSupportedYet'\n | 'OrderingMismatch'\n | 'BatchAborted';\n\nexport interface ApplyError {\n readonly code: ApplyErrorCode;\n readonly message: string;\n /** Inner-op index when `code === 'BatchAborted'`. */\n readonly batchIndex?: number;\n}\n\n/** One record per applied leaf op (Phase 76 telemetry contract). */\nexport interface OpApplyTelemetryRecord {\n readonly op: TreeOp<unknown>['kind'];\n readonly targetId: string;\n}\n\nexport type ApplyResult<TMsg> = Result<\n { readonly newTree: Node<TMsg>; readonly emittedTelemetry: readonly OpApplyTelemetryRecord[] },\n ApplyError\n>;\n\ntype N = Node<unknown>;\ntype R = Result<N, ApplyError>;\n\nconst ok = (value: N): R => ({ ok: true, value });\nconst fail = (code: ApplyErrorCode, message: string, batchIndex?: number): R => ({\n ok: false,\n error: batchIndex === undefined ? { code, message } : { code, message, batchIndex },\n});\n\nconst idOf = (n: N): string => n.id as string;\n\n// ─── Tree walkers ────────────────────────────────────────────────────────────\n\ninterface ChildSlot {\n readonly child: N;\n readonly rebuild: (c: N) => N;\n}\n\nconst withLayoutChildren = (n: N, children: readonly N[]): N => {\n const k = n.kind;\n if (k.kind !== 'Layout') return n;\n const layout = { ...k.layout, spec: { ...k.layout.spec, children } } as LayoutKind<unknown>;\n return { ...n, kind: { kind: 'Layout', layout } };\n};\n\nconst layoutChildren = (n: N): readonly N[] | undefined =>\n n.kind.kind === 'Layout' ? n.kind.layout.spec.children : undefined;\n\n/** Every immediate sub-node position, each with a rebuild that swaps it. */\nconst childSlots = (n: N): ChildSlot[] => {\n const slots: ChildSlot[] = [];\n const k = n.kind;\n if (k.kind === 'Layout') {\n const children = k.layout.spec.children;\n children.forEach((child, i) => {\n slots.push({\n child,\n rebuild: (c) =>\n withLayoutChildren(\n n,\n children.map((cc, j) => (j === i ? c : cc)),\n ),\n });\n });\n } else if (k.kind === 'ErrorBoundary') {\n slots.push({\n child: k.spec.child,\n rebuild: (c) => ({ ...n, kind: { kind: 'ErrorBoundary', spec: { ...k.spec, child: c } } }),\n });\n slots.push({\n child: k.spec.fallback,\n rebuild: (c) => ({ ...n, kind: { kind: 'ErrorBoundary', spec: { ...k.spec, fallback: c } } }),\n });\n } else if (k.kind === 'Switch') {\n // Phase 392: each case child + the default are editable slots (mirrors the\n // ErrorBoundary handling above); the match values are preserved on rebuild.\n k.spec.cases.forEach((cse, i) => {\n slots.push({\n child: cse.child,\n rebuild: (c) => ({\n ...n,\n kind: {\n kind: 'Switch',\n spec: {\n ...k.spec,\n cases: k.spec.cases.map((cc, j) => (j === i ? { ...cc, child: c } : cc)),\n },\n },\n }),\n });\n });\n slots.push({\n child: k.spec.default,\n rebuild: (c) => ({ ...n, kind: { kind: 'Switch', spec: { ...k.spec, default: c } } }),\n });\n } else if (k.kind === 'FragmentDecl') {\n slots.push({\n child: k.spec.body,\n rebuild: (c) => ({ ...n, kind: { kind: 'FragmentDecl', spec: { ...k.spec, body: c } } }),\n });\n }\n if (n.state.onLoading !== undefined) {\n const onLoading = n.state.onLoading;\n slots.push({\n child: onLoading,\n rebuild: (c) => ({ ...n, state: { ...n.state, onLoading: c } }),\n });\n }\n if (n.state.onEmpty !== undefined) {\n const onEmpty = n.state.onEmpty;\n slots.push({ child: onEmpty, rebuild: (c) => ({ ...n, state: { ...n.state, onEmpty: c } }) });\n }\n return slots;\n};\n\nconst findNode = (target: string, n: N): N | undefined => {\n if (idOf(n) === target) return n;\n for (const s of childSlots(n)) {\n const r = findNode(target, s.child);\n if (r !== undefined) return r;\n }\n return undefined;\n};\n\nconst mapNode = (target: string, f: (n: N) => N, n: N): N | undefined => {\n if (idOf(n) === target) return f(n);\n for (const s of childSlots(n)) {\n const r = mapNode(target, f, s.child);\n if (r !== undefined) return s.rebuild(r);\n }\n return undefined;\n};\n\n/**\n * Every NodeId in `n`'s subtree, DFS order. Exported for the elicitation\n * envelope's contract-vs-tree membership probe (WIRE_FORMAT.md §18,\n * `CONTRACT_UNKNOWN_NODE`) — the same traversal the structural-op duplicate\n * checks run, so \"is a node in the tree\" cannot drift between the two.\n */\nexport const allNodeIds = (n: N): string[] => [\n idOf(n),\n ...childSlots(n).flatMap((s) => allNodeIds(s.child)),\n];\n\nconst findLayoutParent = (target: string, n: N): N | undefined => {\n const children = layoutChildren(n);\n if (children !== undefined && children.some((c) => idOf(c) === target)) return n;\n for (const s of childSlots(n)) {\n const r = findLayoutParent(target, s.child);\n if (r !== undefined) return r;\n }\n return undefined;\n};\n\nconst isAncestor = (ancestorId: string, descendantId: string, root: N): boolean => {\n const a = findNode(ancestorId, root);\n if (a === undefined) return false;\n return childSlots(a).some((s) => allNodeIds(s.child).includes(descendantId));\n};\n\n// ─── UpdateProp field dispatch ───────────────────────────────────────────────\n\ntype UpdateOutcome =\n | { readonly tag: 'updated'; readonly kind: NodeKind<unknown> }\n | { readonly tag: 'unknownField' }\n | { readonly tag: 'notSupported' }\n | { readonly tag: 'typeMismatch'; readonly detail: string };\n\nconst updated = (kind: NodeKind<unknown>): UpdateOutcome => ({ tag: 'updated', kind });\nconst typeMismatch = (detail: string): UpdateOutcome => ({ tag: 'typeMismatch', detail });\n\n/** Apply a coercer + spec patch, threading coercion failures into typeMismatch. */\nconst patch = <T>(r: Result<T, string>, build: (value: T) => NodeKind<unknown>): UpdateOutcome =>\n r.ok ? updated(build(r.value)) : typeMismatch(r.error);\n\nconst updateField = (\n field: string,\n value: import('@fuaran-ui/schema').JsonValue,\n kind: NodeKind<unknown>,\n): UpdateOutcome => {\n if (kind.kind === 'Display') {\n const d = kind.display;\n const disp = (display: import('@fuaran-ui/schema').DisplayKind): NodeKind<unknown> => ({\n kind: 'Display',\n display,\n });\n switch (d.kind) {\n case 'Metric': {\n const s = d.spec;\n switch (field) {\n case 'Label':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Metric', spec: { ...s, label: x } }),\n );\n case 'Value':\n return patch(coerce.bindingNumber(value), (x) =>\n disp({ kind: 'Metric', spec: { ...s, value: x } }),\n );\n case 'Format':\n return patch(coerce.cellFormat(value), (x) =>\n disp({ kind: 'Metric', spec: { ...s, format: x } }),\n );\n case 'Tone':\n return patch(coerce.tone(value), (x) =>\n disp({ kind: 'Metric', spec: { ...s, tone: x } }),\n );\n case 'Weight':\n return patch(coerce.weight(value), (x) =>\n disp({ kind: 'Metric', spec: { ...s, weight: x } }),\n );\n case 'Emphasis':\n return patch(coerce.emphasis(value), (x) =>\n disp({ kind: 'Metric', spec: { ...s, emphasis: x } }),\n );\n case 'Trend':\n return patch(coerce.bindingNumber(value), (x) =>\n disp({ kind: 'Metric', spec: { ...s, trend: x } }),\n );\n case 'TrendFormat':\n return patch(coerce.cellFormat(value), (x) =>\n disp({ kind: 'Metric', spec: { ...s, trendFormat: x } }),\n );\n case 'Icon':\n return patch(coerce.iconSource(value), (x) =>\n disp({ kind: 'Metric', spec: { ...s, icon: x } }),\n );\n case 'Subtext':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Metric', spec: { ...s, subtext: x } }),\n );\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'Heading': {\n const s = d.spec;\n switch (field) {\n case 'Level':\n return patch(coerce.int(value), (x) =>\n disp({ kind: 'Heading', spec: { ...s, level: x } }),\n );\n case 'Text':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Heading', spec: { ...s, text: x } }),\n );\n case 'Variant':\n return patch(coerce.headingVariant(value), (x) =>\n disp({ kind: 'Heading', spec: { ...s, variant: x } }),\n );\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'Markdown':\n return field === 'Text'\n ? patch(coerce.textSource(value), (x) => disp({ kind: 'Markdown', spec: { text: x } }))\n : { tag: 'unknownField' };\n case 'Badge': {\n const s = d.spec;\n switch (field) {\n case 'Label':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Badge', spec: { ...s, label: x } }),\n );\n case 'Variant':\n return patch(coerce.badgeVariant(value), (x) =>\n disp({ kind: 'Badge', spec: { ...s, variant: x } }),\n );\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'Skeleton':\n return field === 'Rows'\n ? patch(coerce.int(value), (x) => disp({ kind: 'Skeleton', spec: { rows: x } }))\n : { tag: 'unknownField' };\n case 'Callout': {\n const s = d.spec;\n switch (field) {\n case 'Tone':\n return patch(coerce.tone(value), (x) =>\n disp({ kind: 'Callout', spec: { ...s, tone: x } }),\n );\n case 'Body':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Callout', spec: { ...s, body: x } }),\n );\n case 'Dismissable':\n return patch(coerce.bool(value), (x) =>\n disp({ kind: 'Callout', spec: { ...s, dismissable: x } }),\n );\n case 'Heading':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Callout', spec: { ...s, heading: x } }),\n );\n case 'Icon':\n return patch(coerce.iconSource(value), (x) =>\n disp({ kind: 'Callout', spec: { ...s, icon: x } }),\n );\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'Progress': {\n const s = d.spec;\n switch (field) {\n case 'Fraction':\n return patch(coerce.bindingNumber(value), (x) =>\n disp({ kind: 'Progress', spec: { ...s, fraction: x } }),\n );\n case 'Indeterminate':\n return patch(coerce.bool(value), (x) =>\n disp({ kind: 'Progress', spec: { ...s, indeterminate: x } }),\n );\n case 'Tone':\n return patch(coerce.tone(value), (x) =>\n disp({ kind: 'Progress', spec: { ...s, tone: x } }),\n );\n case 'Label':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Progress', spec: { ...s, label: x } }),\n );\n case 'Caveat':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Progress', spec: { ...s, caveat: x } }),\n );\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'Fact': {\n const s = d.spec;\n switch (field) {\n case 'Label':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Fact', spec: { ...s, label: x } }),\n );\n case 'Value':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Fact', spec: { ...s, value: x } }),\n );\n case 'Tone':\n return patch(coerce.tone(value), (x) =>\n disp({ kind: 'Fact', spec: { ...s, tone: x } }),\n );\n case 'Emphasis':\n // 0.2.8 — routed through the shared cross-vocabulary flag reader,\n // so a TreeOp edit gets the same admission as a fresh decode.\n return patch(coerce.emphasisFlag(value), (x) =>\n disp({ kind: 'Fact', spec: { ...s, emphasis: x } }),\n );\n case 'Help':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Fact', spec: { ...s, help: x } }),\n );\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'LabelValueRow': {\n const s = d.spec;\n switch (field) {\n case 'Label':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'LabelValueRow', spec: { ...s, label: x } }),\n );\n case 'Value':\n return patch(coerce.bindingNumber(value), (x) =>\n disp({ kind: 'LabelValueRow', spec: { ...s, value: x } }),\n );\n case 'Format':\n return patch(coerce.cellFormat(value), (x) =>\n disp({ kind: 'LabelValueRow', spec: { ...s, format: x } }),\n );\n case 'Emphasis':\n // 0.2.8 — the same shared flag reader as Fact (cross-vocab admission).\n return patch(coerce.emphasisFlag(value), (x) =>\n disp({ kind: 'LabelValueRow', spec: { ...s, emphasis: x } }),\n );\n case 'Help':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'LabelValueRow', spec: { ...s, help: x } }),\n );\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'Link': {\n const s = d.spec;\n switch (field) {\n case 'Href':\n return patch(coerce.bindingString(value), (x) =>\n disp({ kind: 'Link', spec: { ...s, href: x } }),\n );\n case 'Label':\n return patch(coerce.textSource(value), (x) =>\n disp({ kind: 'Link', spec: { ...s, label: x } }),\n );\n case 'Rel':\n return patch(coerce.string(value), (x) =>\n disp({ kind: 'Link', spec: { ...s, rel: x } }),\n );\n case 'Target':\n return patch(coerce.string(value), (x) =>\n disp({ kind: 'Link', spec: { ...s, target: x } }),\n );\n case 'Download':\n return patch(coerce.bool(value), (x) =>\n disp({ kind: 'Link', spec: { ...s, download: x } }),\n );\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'Sparkline':\n return { tag: 'notSupported' };\n default:\n return { tag: 'unknownField' };\n }\n }\n\n if (kind.kind === 'Layout') {\n const l = kind.layout;\n const lay = (layout: LayoutKind<unknown>): NodeKind<unknown> => ({ kind: 'Layout', layout });\n switch (l.kind) {\n // Phase 390 — the unified container. Field surface is layout-mode-\n // dependent, preserving the retired kinds' updatable fields: Flex →\n // Orientation/Wrap (Stack); Grid → Cols/TemplateColumns (GridLayout);\n // Heading applies to any layout (Card). Mirrors the F# `updateBox`.\n case 'Box': {\n const s = l.spec;\n const mode = s.layout;\n if (field === 'Orientation' && mode.kind === 'Flex') {\n return patch(coerce.orientation(value), (x) =>\n lay({ kind: 'Box', spec: { ...s, layout: { ...mode, direction: x } } }),\n );\n }\n if (field === 'Wrap' && mode.kind === 'Flex') {\n return patch(coerce.bool(value), (x) =>\n lay({ kind: 'Box', spec: { ...s, layout: { ...mode, wrap: x } } }),\n );\n }\n if (field === 'Cols' && mode.kind === 'Grid') {\n return patch(coerce.int(value), (x) =>\n lay({ kind: 'Box', spec: { ...s, layout: { ...mode, cols: x } } }),\n );\n }\n if (field === 'TemplateColumns' && mode.kind === 'Grid') {\n return patch(coerce.string(value), (x) =>\n lay({ kind: 'Box', spec: { ...s, layout: { ...mode, templateColumns: x } } }),\n );\n }\n if (field === 'Heading') {\n return patch(coerce.textSource(value), (x) =>\n lay({ kind: 'Box', spec: { ...s, heading: x } }),\n );\n }\n if (field === 'Children') return { tag: 'notSupported' };\n return { tag: 'unknownField' };\n }\n case 'SplitPanel': {\n const s = l.spec;\n switch (field) {\n case 'Weight':\n return patch(coerce.float(value), (x) =>\n lay({ kind: 'SplitPanel', spec: { ...s, weight: x } }),\n );\n case 'Children':\n return { tag: 'notSupported' };\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'Tabs': {\n const s = l.spec;\n switch (field) {\n case 'Orientation':\n return patch(coerce.orientation(value), (x) =>\n lay({ kind: 'Tabs', spec: { ...s, orientation: x } }),\n );\n case 'Children':\n return { tag: 'notSupported' };\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'Stepper': {\n const s = l.spec;\n switch (field) {\n case 'ActiveStep':\n return patch(coerce.bindingInt(value), (x) =>\n lay({ kind: 'Stepper', spec: { ...s, activeStep: x } }),\n );\n case 'Children':\n return { tag: 'notSupported' };\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'SummaryList': {\n const s = l.spec;\n switch (field) {\n case 'Heading':\n return patch(coerce.textSource(value), (x) =>\n lay({ kind: 'SummaryList', spec: { ...s, heading: x } }),\n );\n case 'Children':\n return { tag: 'notSupported' };\n default:\n return { tag: 'unknownField' };\n }\n }\n case 'Disclosure': {\n const s = l.spec;\n switch (field) {\n case 'Heading':\n return patch(coerce.textSource(value), (x) =>\n lay({ kind: 'Disclosure', spec: { ...s, heading: x } }),\n );\n case 'Open':\n return patch(coerce.bindingBool(value), (x) =>\n lay({ kind: 'Disclosure', spec: { ...s, open: x } }),\n );\n case 'DefaultOpen':\n return patch(coerce.bool(value), (x) =>\n lay({ kind: 'Disclosure', spec: { ...s, defaultOpen: x } }),\n );\n case 'Children':\n return { tag: 'notSupported' };\n default:\n return { tag: 'unknownField' };\n }\n }\n default:\n return { tag: 'unknownField' };\n }\n }\n\n if (kind.kind === 'FragmentDecl') {\n return field === 'Name'\n ? patch(coerce.string(value), (x) => ({\n kind: 'FragmentDecl',\n spec: { ...kind.spec, name: x as import('@fuaran-ui/schema').FragmentId },\n }))\n : { tag: 'unknownField' };\n }\n if (kind.kind === 'FragmentRef') {\n return field === 'Name'\n ? patch(coerce.string(value), (x) => ({\n kind: 'FragmentRef',\n spec: { ...kind.spec, name: x as import('@fuaran-ui/schema').FragmentId },\n }))\n : { tag: 'unknownField' };\n }\n\n // Input / Visualisation / Custom / ErrorBoundary have no field-level surface.\n return { tag: 'notSupported' };\n};\n\n// ─── UpdateProp path parser (WIRE_FORMAT.md §3.4 grammar — Phase 364) ────────\n//\n// path := segment ( \".\" segment )*\n// segment := field ( \"[\" index \"]\" )?\n// field := [A-Za-z_][A-Za-z0-9_]*\n// index := \"0\" | [1-9][0-9]*\n//\n// Hand-rolled (no regex) to mirror the F# reference parser byte-for-byte in\n// behaviour. Character classes are strict ASCII per the grammar.\n\ninterface PathSeg {\n readonly field: string;\n readonly index?: number;\n}\n\nconst isFieldStart = (c: string): boolean =>\n (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || c === '_';\nconst isFieldChar = (c: string): boolean => isFieldStart(c) || (c >= '0' && c <= '9');\nconst isAsciiDigit = (c: string): boolean => c >= '0' && c <= '9';\n\nconst parseSegment = (raw: string): Result<PathSeg, string> => {\n if (raw.length === 0) return { ok: false, error: 'empty segment' };\n const bracket = raw.indexOf('[');\n const fieldPart = bracket < 0 ? raw : raw.slice(0, bracket);\n if (fieldPart.length === 0 || !isFieldStart(fieldPart[0]!) || ![...fieldPart].every(isFieldChar))\n return { ok: false, error: `segment '${raw}' is not a field name` };\n if (bracket < 0) return { ok: true, value: { field: fieldPart } };\n const indexPart = raw.slice(bracket);\n if (indexPart.length < 3 || indexPart[indexPart.length - 1] !== ']')\n return { ok: false, error: `malformed index in segment '${raw}'` };\n const digits = indexPart.slice(1, -1);\n if (digits.length === 0 || ![...digits].every(isAsciiDigit))\n return {\n ok: false,\n error: `index in segment '${raw}' must be a non-negative decimal integer`,\n };\n if (digits.length > 1 && digits[0] === '0')\n return { ok: false, error: `index in segment '${raw}' has a leading zero` };\n const n = Number.parseInt(digits, 10);\n if (!Number.isSafeInteger(n))\n return { ok: false, error: `index in segment '${raw}' is out of range` };\n return { ok: true, value: { field: fieldPart, index: n } };\n};\n\nconst parsePath = (path: string): Result<readonly PathSeg[], string> => {\n if (path.trim() === '') return { ok: false, error: 'empty path' };\n const segs: PathSeg[] = [];\n for (const raw of path.split('.')) {\n const r = parseSegment(raw);\n if (!r.ok) return r;\n segs.push(r.value);\n }\n return { ok: true, value: segs };\n};\n\n// ─── UpdateProp nested dispatch — per-kind typed traversal (Phase 364) ───────\n//\n// Mirrors the F# `dispatchNestedUpdate` legs: DataGrid Columns[i].{Label,\n// Format,Width}, Chart YFields[i], Tabs TabHeaders[i].{Label,Icon,Disabled},\n// Form Fields[i].{Label,Required,Help}. Closure-bearing sub-fields are never\n// addressable.\n\ntype NestedOutcome =\n | { readonly tag: 'updated'; readonly kind: NodeKind<unknown> }\n | {\n readonly tag: 'fieldNotFound';\n readonly segment: string;\n readonly available: readonly string[];\n }\n | { readonly tag: 'missingIndex'; readonly listField: string; readonly count: number }\n | {\n readonly tag: 'indexOutOfRange';\n readonly listField: string;\n readonly count: number;\n readonly requested: number;\n }\n | { readonly tag: 'notSupported' }\n | { readonly tag: 'typeMismatch'; readonly detail: string };\n\nconst nestedPatch = <T>(\n r: Result<T, string>,\n build: (value: T) => NodeKind<unknown>,\n): NestedOutcome =>\n r.ok ? { tag: 'updated', kind: build(r.value) } : { tag: 'typeMismatch', detail: r.error };\n\nconst replaceAt = <T>(xs: readonly T[], i: number, item: T): T[] =>\n xs.map((x, j) => (j === i ? item : x));\n\nconst updateNested = (\n segs: readonly PathSeg[],\n value: import('@fuaran-ui/schema').JsonValue,\n kind: NodeKind<unknown>,\n): NestedOutcome => {\n const [head, ...rest] = segs;\n if (head === undefined) return { tag: 'notSupported' };\n\n if (kind.kind === 'Visualisation') {\n const v = kind.visualisation;\n if (v.kind === 'Grid') {\n const s = v.spec;\n if (head.field === 'Columns') {\n if (head.index === undefined)\n return { tag: 'missingIndex', listField: 'Columns', count: s.columns.length };\n if (head.index >= s.columns.length)\n return {\n tag: 'indexOutOfRange',\n listField: 'Columns',\n count: s.columns.length,\n requested: head.index,\n };\n const i = head.index;\n const col = s.columns[i]!;\n const rebuild = (c: (typeof s.columns)[number]): NodeKind<unknown> => ({\n kind: 'Visualisation',\n visualisation: { kind: 'Grid', spec: { ...s, columns: replaceAt(s.columns, i, c) } },\n });\n const leaf = rest.length === 1 && rest[0]!.index === undefined ? rest[0]!.field : undefined;\n if (leaf === undefined) return { tag: 'notSupported' };\n switch (leaf) {\n case 'Label':\n return nestedPatch(coerce.string(value), (x) => rebuild({ ...col, label: x }));\n case 'Format':\n return nestedPatch(coerce.cellFormat(value), (x) => rebuild({ ...col, format: x }));\n case 'Width':\n return nestedPatch(coerce.columnWidth(value), (x) => rebuild({ ...col, width: x }));\n case 'Value':\n case 'Kind':\n // Closure-bearing — never addressable.\n return { tag: 'notSupported' };\n default:\n return { tag: 'fieldNotFound', segment: leaf, available: ['Label', 'Format', 'Width'] };\n }\n }\n return { tag: 'fieldNotFound', segment: head.field, available: ['Columns'] };\n }\n if (v.kind === 'Chart') {\n const s = v.spec;\n if (head.field === 'YFields') {\n if (head.index === undefined)\n return { tag: 'missingIndex', listField: 'YFields', count: s.yFields.length };\n if (head.index >= s.yFields.length)\n return {\n tag: 'indexOutOfRange',\n listField: 'YFields',\n count: s.yFields.length,\n requested: head.index,\n };\n if (rest.length > 0) return { tag: 'notSupported' };\n const i = head.index;\n return nestedPatch(coerce.string(value), (x) => ({\n kind: 'Visualisation',\n visualisation: { kind: 'Chart', spec: { ...s, yFields: replaceAt(s.yFields, i, x) } },\n }));\n }\n return { tag: 'fieldNotFound', segment: head.field, available: ['YFields'] };\n }\n return { tag: 'notSupported' };\n }\n\n if (kind.kind === 'Layout' && kind.layout.kind === 'Tabs') {\n const s = kind.layout.spec;\n // An absent header list addresses like an empty one.\n const headers = s.tabHeaders ?? [];\n if (head.field === 'TabHeaders') {\n if (head.index === undefined)\n return { tag: 'missingIndex', listField: 'TabHeaders', count: headers.length };\n if (head.index >= headers.length)\n return {\n tag: 'indexOutOfRange',\n listField: 'TabHeaders',\n count: headers.length,\n requested: head.index,\n };\n const i = head.index;\n const hdr = headers[i]!;\n const rebuild = (h: (typeof headers)[number]): NodeKind<unknown> => ({\n kind: 'Layout',\n layout: { kind: 'Tabs', spec: { ...s, tabHeaders: replaceAt(headers, i, h) } },\n });\n const leaf = rest.length === 1 && rest[0]!.index === undefined ? rest[0]!.field : undefined;\n if (leaf === undefined) return { tag: 'notSupported' };\n switch (leaf) {\n case 'Label':\n return nestedPatch(coerce.textSource(value), (x) => rebuild({ ...hdr, label: x }));\n case 'Icon':\n return nestedPatch(coerce.iconSource(value), (x) => rebuild({ ...hdr, icon: x }));\n case 'Disabled':\n // Optional typed binding; replacing it installs the value.\n return nestedPatch(coerce.bindingBool(value), (x) => rebuild({ ...hdr, disabled: x }));\n default:\n return { tag: 'fieldNotFound', segment: leaf, available: ['Label', 'Icon', 'Disabled'] };\n }\n }\n return { tag: 'fieldNotFound', segment: head.field, available: ['TabHeaders'] };\n }\n\n if (kind.kind === 'Input' && kind.input.kind === 'Form') {\n const s = kind.input.spec;\n if (head.field === 'Fields') {\n if (head.index === undefined)\n return { tag: 'missingIndex', listField: 'Fields', count: s.fields.length };\n if (head.index >= s.fields.length)\n return {\n tag: 'indexOutOfRange',\n listField: 'Fields',\n count: s.fields.length,\n requested: head.index,\n };\n const i = head.index;\n const fld = s.fields[i]!;\n const rebuild = (f: (typeof s.fields)[number]): NodeKind<unknown> => ({\n kind: 'Input',\n input: { kind: 'Form', spec: { ...s, fields: replaceAt(s.fields, i, f) } },\n });\n const leaf = rest.length === 1 && rest[0]!.index === undefined ? rest[0]!.field : undefined;\n if (leaf === undefined) return { tag: 'notSupported' };\n switch (leaf) {\n case 'Label':\n return nestedPatch(coerce.textSource(value), (x) => rebuild({ ...fld, label: x }));\n case 'Required':\n return nestedPatch(coerce.bool(value), (x) => rebuild({ ...fld, required: x }));\n case 'Help':\n return nestedPatch(coerce.textSource(value), (x) => rebuild({ ...fld, help: x }));\n case 'Id':\n case 'Kind':\n // Id is the form-store key; Kind is closure-bearing. Not addressable.\n return { tag: 'notSupported' };\n default:\n return { tag: 'fieldNotFound', segment: leaf, available: ['Label', 'Required', 'Help'] };\n }\n }\n return { tag: 'fieldNotFound', segment: head.field, available: ['Fields'] };\n }\n\n return { tag: 'notSupported' };\n};\n\n// ─── ReplaceBinding slot dispatch ────────────────────────────────────────────\n\nconst replaceBinding = (\n slot: string,\n b: Binding<unknown>,\n kind: NodeKind<unknown>,\n): NodeKind<unknown> | undefined => {\n if (kind.kind === 'Display') {\n const d = kind.display;\n if (d.kind === 'Metric' && slot === 'Value')\n return {\n kind: 'Display',\n display: { kind: 'Metric', spec: { ...d.spec, value: b as Binding<number> } },\n };\n if (d.kind === 'Metric' && slot === 'Trend')\n return {\n kind: 'Display',\n display: { kind: 'Metric', spec: { ...d.spec, trend: b as Binding<number> } },\n };\n if (d.kind === 'Sparkline' && slot === 'Source')\n return {\n kind: 'Display',\n display: { kind: 'Sparkline', spec: { source: b as Binding<readonly number[]> } },\n };\n if (d.kind === 'Progress' && slot === 'Fraction')\n return {\n kind: 'Display',\n display: { kind: 'Progress', spec: { ...d.spec, fraction: b as Binding<number> } },\n };\n if (d.kind === 'LabelValueRow' && slot === 'Value')\n return {\n kind: 'Display',\n display: { kind: 'LabelValueRow', spec: { ...d.spec, value: b as Binding<number> } },\n };\n } else if (kind.kind === 'Layout') {\n const l = kind.layout;\n if (l.kind === 'Stepper' && slot === 'ActiveStep')\n return {\n kind: 'Layout',\n layout: { kind: 'Stepper', spec: { ...l.spec, activeStep: b as Binding<number> } },\n };\n } else if (kind.kind === 'Input') {\n const i = kind.input;\n // Phase 129: Button's optional bound disabled-state slot.\n if (i.kind === 'Button' && slot === 'Disabled')\n return {\n kind: 'Input',\n input: { kind: 'Button', spec: { ...i.spec, disabled: b as Binding<boolean> } },\n };\n // Phase 130: Select / Form / FileUpload optional bound disabled-state slot.\n if (i.kind === 'Select' && slot === 'Disabled')\n return {\n kind: 'Input',\n input: { kind: 'Select', spec: { ...i.spec, disabled: b as Binding<boolean> } },\n };\n if (i.kind === 'Form' && slot === 'Disabled')\n return {\n kind: 'Input',\n input: { kind: 'Form', spec: { ...i.spec, disabled: b as Binding<boolean> } },\n };\n if (i.kind === 'FileUpload' && slot === 'Disabled')\n return {\n kind: 'Input',\n input: { kind: 'FileUpload', spec: { ...i.spec, disabled: b as Binding<boolean> } },\n };\n } else if (kind.kind === 'Visualisation') {\n const v = kind.visualisation;\n if (v.kind === 'Grid' && slot === 'Source')\n return {\n kind: 'Visualisation',\n visualisation: {\n kind: 'Grid',\n spec: { ...v.spec, source: b as Binding<readonly unknown[]> },\n },\n };\n if (v.kind === 'Chart' && slot === 'Source')\n return {\n kind: 'Visualisation',\n visualisation: {\n kind: 'Chart',\n spec: { ...v.spec, source: b as Binding<readonly unknown[]> },\n },\n };\n if (v.kind === 'Map' && slot === 'Source')\n return {\n kind: 'Visualisation',\n visualisation: {\n kind: 'Map',\n spec: {\n ...v.spec,\n source: b as Binding<readonly import('@fuaran-ui/schema').MapMarker[]>,\n },\n },\n };\n }\n return undefined;\n};\n\n// ─── Single-op apply ─────────────────────────────────────────────────────────\n\nconst applyOne = (op: TreeOp<unknown>, root: N, telem: OpApplyTelemetryRecord[]): R => {\n switch (op.kind) {\n case 'EditNode': {\n const updatedTree = mapNode(op.target, (n) => ({ ...n, kind: op.newKind }), root);\n if (updatedTree === undefined)\n return fail('NodeNotFound', `Node '${op.target}' not found in tree.`);\n telem.push({ op: 'EditNode', targetId: op.target });\n return ok(updatedTree);\n }\n case 'UpdateProp': {\n const parsed = parsePath(op.path);\n if (!parsed.ok)\n return fail('PathInvalid', `Path '${op.path}' is structurally invalid: ${parsed.error}.`);\n const targetNode = findNode(op.target, root);\n if (targetNode === undefined)\n return fail('NodeNotFound', `Node '${op.target}' not found in tree.`);\n const segs = parsed.value;\n const finish = (kind: NodeKind<unknown>): R => {\n const newTree = mapNode(op.target, (n) => ({ ...n, kind }), root);\n if (newTree === undefined)\n return fail('NodeNotFound', `Node '${op.target}' not found in tree.`);\n telem.push({ op: 'UpdateProp', targetId: op.target });\n return ok(newTree);\n };\n if (segs.length === 1 && segs[0]!.index === undefined) {\n // Top-level path — the original per-kind field dispatch.\n const outcome = updateField(op.path, op.value, targetNode.kind);\n switch (outcome.tag) {\n case 'updated':\n return finish(outcome.kind);\n case 'unknownField':\n return fail('FieldNotFound', `Field '${op.path}' not found on node '${op.target}'.`);\n case 'notSupported':\n return fail(\n 'PathNotSupportedYet',\n `Path '${op.path}' on node '${op.target}' is not yet supported by the apply engine.`,\n );\n case 'typeMismatch':\n return fail(\n 'KindMismatch',\n `UpdateProp value for '${op.path}' on node '${op.target}' does not match the field's expected type: ${outcome.detail}`,\n );\n }\n break;\n }\n // Nested path (Phase 364) — the per-kind typed traversal.\n const outcome = updateNested(segs, op.value, targetNode.kind);\n switch (outcome.tag) {\n case 'updated':\n return finish(outcome.kind);\n case 'missingIndex':\n return fail(\n 'PathInvalid',\n `Field '${outcome.listField}' on node '${op.target}' is a list — address an element with a 0-based index (the list has ${outcome.count} element(s)).`,\n );\n case 'indexOutOfRange':\n return fail(\n 'PositionOutOfRange',\n `Index ${outcome.requested} is out of range for '${outcome.listField}' on node '${op.target}' (${\n outcome.count === 0 ? 'the list is empty' : `valid: 0..${outcome.count - 1}`\n }).`,\n );\n case 'fieldNotFound':\n return fail(\n 'FieldNotFound',\n `Field '${outcome.segment}' (in path '${op.path}') not found on node '${op.target}'. Available at this segment: ${outcome.available.join(', ')}.`,\n );\n case 'notSupported':\n return fail(\n 'PathNotSupportedYet',\n `Path '${op.path}' on node '${op.target}' is not yet supported by the apply engine.`,\n );\n case 'typeMismatch':\n return fail(\n 'KindMismatch',\n `UpdateProp value for '${op.path}' on node '${op.target}' does not match the field's expected type: ${outcome.detail}`,\n );\n }\n break;\n }\n case 'ReplaceBinding': {\n const targetNode = findNode(op.target, root);\n if (targetNode === undefined)\n return fail('NodeNotFound', `Node '${op.target}' not found in tree.`);\n const newKind = replaceBinding(op.slot, op.binding, targetNode.kind);\n if (newKind === undefined)\n return fail('SlotNotFound', `Binding slot '${op.slot}' not found on node '${op.target}'.`);\n const newTree = mapNode(op.target, (n) => ({ ...n, kind: newKind }), root);\n if (newTree === undefined)\n return fail('NodeNotFound', `Node '${op.target}' not found in tree.`);\n telem.push({ op: 'ReplaceBinding', targetId: op.target });\n return ok(newTree);\n }\n case 'UpdateStyle': {\n const newTree = mapNode(op.target, (n) => ({ ...n, style: op.style as SemanticStyle }), root);\n if (newTree === undefined)\n return fail('NodeNotFound', `Node '${op.target}' not found in tree.`);\n telem.push({ op: 'UpdateStyle', targetId: op.target });\n return ok(newTree);\n }\n case 'UpdateState': {\n const newTree = mapNode(\n op.target,\n (n) => ({ ...n, state: op.state as StateBehaviour<unknown> }),\n root,\n );\n if (newTree === undefined)\n return fail('NodeNotFound', `Node '${op.target}' not found in tree.`);\n telem.push({ op: 'UpdateState', targetId: op.target });\n return ok(newTree);\n }\n case 'InsertChild': {\n const parent = findNode(op.parentId, root);\n if (parent === undefined)\n return fail('ParentNotFound', `Parent node '${op.parentId}' not found in tree.`);\n const children = layoutChildren(parent);\n if (children === undefined)\n return fail(\n 'ChildlessKind',\n `Node '${op.parentId}' (kind=${parent.kind.kind}) has no children field — only Layout kinds accept structural child ops.`,\n );\n const existing = new Set(allNodeIds(root));\n const duplicate = allNodeIds(op.child).find((id) => existing.has(id));\n if (duplicate !== undefined)\n return fail(\n 'DuplicateNodeId',\n `NodeId '${duplicate}' is already present in the tree; ids must be unique.`,\n );\n // 0.4.0: InsertChild APPENDS. Placing a node anywhere else is\n // Batch [InsertChild, ReorderChildren] — order is stated by naming ids.\n const newChildren = [...children, op.child];\n const newTree = mapNode(op.parentId, (n) => withLayoutChildren(n, newChildren), root);\n if (newTree === undefined)\n return fail('ParentNotFound', `Parent node '${op.parentId}' not found in tree.`);\n telem.push({ op: 'InsertChild', targetId: op.parentId });\n return ok(newTree);\n }\n case 'RemoveNode': {\n if (idOf(root) === op.target) return fail('KindMismatch', 'Cannot RemoveNode the root.');\n const parent = findLayoutParent(op.target, root);\n if (parent === undefined)\n return fail('NodeNotFound', `Node '${op.target}' not found in tree.`);\n const children = layoutChildren(parent)!;\n const newTree = mapNode(\n idOf(parent),\n (n) =>\n withLayoutChildren(\n n,\n children.filter((c) => idOf(c) !== op.target),\n ),\n root,\n );\n if (newTree === undefined)\n return fail('ParentNotFound', `Parent node '${idOf(parent)}' not found in tree.`);\n telem.push({ op: 'RemoveNode', targetId: op.target });\n return ok(newTree);\n }\n case 'MoveNode': {\n if (op.target === op.newParentId)\n return fail('KindMismatch', 'Cannot move a node into itself.');\n if (isAncestor(op.target, op.newParentId, root))\n return fail(\n 'KindMismatch',\n 'Cannot move a node into its own descendant (would create a cycle).',\n );\n const moving = findNode(op.target, root);\n if (moving === undefined)\n return fail('NodeNotFound', `Node '${op.target}' not found in tree.`);\n const newParent = findNode(op.newParentId, root);\n if (newParent === undefined)\n return fail('ParentNotFound', `Parent node '${op.newParentId}' not found in tree.`);\n if (layoutChildren(newParent) === undefined)\n return fail(\n 'ChildlessKind',\n `Node '${op.newParentId}' (kind=${newParent.kind.kind}) has no children field.`,\n );\n const afterRemove = applyOne({ kind: 'RemoveNode', target: op.target }, root, []);\n if (!afterRemove.ok) return afterRemove;\n const inserted = applyOne(\n { kind: 'InsertChild', parentId: op.newParentId, child: moving },\n afterRemove.value,\n [],\n );\n if (!inserted.ok) return inserted;\n telem.push({ op: 'MoveNode', targetId: op.target });\n return ok(inserted.value);\n }\n case 'ReorderChildren': {\n const parent = findNode(op.parentId, root);\n if (parent === undefined)\n return fail('ParentNotFound', `Parent node '${op.parentId}' not found in tree.`);\n const children = layoutChildren(parent);\n if (children === undefined)\n return fail(\n 'ChildlessKind',\n `Node '${op.parentId}' (kind=${parent.kind.kind}) has no children field.`,\n );\n const currentIds = children.map(idOf);\n const sortedCurrent = [...currentIds].sort();\n const sortedNew = [...op.newOrder].map((x) => x as string).sort();\n if (\n sortedCurrent.length !== sortedNew.length ||\n sortedCurrent.some((id, i) => id !== sortedNew[i])\n )\n return fail(\n 'OrderingMismatch',\n `ReorderChildren for '${op.parentId}' did not list exactly the current child ids.`,\n );\n const byId = new Map(children.map((c) => [idOf(c), c]));\n const reordered = op.newOrder\n .map((id) => byId.get(id as string)!)\n .filter((c): c is N => c !== undefined);\n const newTree = mapNode(op.parentId, (n) => withLayoutChildren(n, reordered), root);\n if (newTree === undefined)\n return fail('ParentNotFound', `Parent node '${op.parentId}' not found in tree.`);\n telem.push({ op: 'ReorderChildren', targetId: op.parentId });\n return ok(newTree);\n }\n case 'ReplaceRoot':\n // The whole-tree swap: the only op that legally changes the root node id.\n return ok(op.node);\n case 'Batch': {\n let state = root;\n for (let i = 0; i < op.ops.length; i += 1) {\n const r = applyOne(op.ops[i]!, state, telem);\n if (!r.ok) {\n // All-or-nothing: discard partial state + telemetry, surface the failure.\n return {\n ok: false,\n error: {\n code: 'BatchAborted',\n message: `Batch aborted at inner op #${i}: ${r.error.message}`,\n batchIndex: i,\n },\n };\n }\n state = r.value;\n }\n return ok(state);\n }\n }\n // Unreachable — every TreeOp case returns above.\n return fail('KindMismatch', 'unreachable apply branch');\n};\n\n// ─── Public entry ────────────────────────────────────────────────────────────\n\n/**\n * Apply a single tree-op against `tree`, returning either the updated tree plus\n * emitted telemetry, or a structured `ApplyError`. Fold this across an op list\n * to apply many; wrap in `TreeOp.Batch` for atomic all-or-nothing application.\n */\nexport const apply = <TMsg>(tree: Node<TMsg>, op: TreeOp<TMsg>): ApplyResult<TMsg> => {\n const telem: OpApplyTelemetryRecord[] = [];\n const r = applyOne(op as TreeOp<unknown>, tree as N, telem);\n if (!r.ok) return r;\n return { ok: true, value: { newTree: r.value as Node<TMsg>, emittedTelemetry: telem } };\n};\n","// ============================================================================\n// @fuaran-ui/ops — DAG op-record wire codec (Phase 178).\n//\n// Symmetric port of Fuaran.UI.OpStream.Dag.Abstractions.DagWire\n// (encodeRecord / decodeRecord). The DagOpRecord wire shape is an ADDITIVE\n// artifact: the linear OpRecord + the Node/TreeOp corpus are untouched. A DAG\n// record serialises as a canonical-JSON object (Ordinal-sorted keys, no\n// whitespace) whose `op` field nests the canonical TreeOp wire form\n// (`encodeOp`):\n//\n// {\"hash\":\"…\",\"op\":{…canonical TreeOp…},\"outcomeHash\":\"…\"?,\n// \"parents\":[\"…\"],\"promptId\":\"…\"?,\"resultEnvelope\":{…},\n// \"streamId\":\"…\",\"timestamp\":<unixSeconds>,\"tombstoned\":false,\n// \"userId\":\"…\"}\n//\n// Verified byte-for-byte against the workspace wire-format-fixtures/dag corpus\n// by test/dag.test.ts — the cross-implementation parity gate for this artifact\n// (F# DagWire.encodeRecord == TS encodeDagRecord, byte-identical).\n// ============================================================================\n\nimport { encodeOp } from './encode.js';\nimport { decodeOp } from './decode.js';\nimport { parse, field, type JsonAst } from './parse.js';\nimport type { TreeOp } from './treeOp.js';\n\n/** The result envelope captured on a DAG record (closed shape). */\nexport type DagResultEnvelope =\n | { readonly $type: 'Success' }\n | { readonly $type: 'Failure'; readonly code: string; readonly message: string };\n\n/**\n * Content-addressed, multi-parent op-record — the branching-DAG generalisation\n * of the linear `OpRecord`. `parents` is in author order (head = primary\n * parent); `outcomeHash` is present only on a merge node (committed to the\n * canonical encoding of the resulting tree). A linear chain is the degenerate\n * single-parent case.\n */\nexport interface DagOpRecord<TMsg = unknown> {\n readonly streamId: string;\n readonly hash: string;\n readonly parents: readonly string[];\n readonly op: TreeOp<TMsg>;\n readonly outcomeHash?: string;\n readonly promptId?: string;\n readonly userId: string;\n /** Unix seconds. */\n readonly timestamp: number;\n readonly resultEnvelope: DagResultEnvelope;\n readonly tombstoned: boolean;\n}\n\n/** Quote + escape a string per WIRE_FORMAT.md §2 rule 6 (only \" \\ control). */\nconst str = (s: string): string => {\n let out = '\"';\n for (let i = 0; i < s.length; i += 1) {\n const c = s[i]!;\n const code = s.charCodeAt(i);\n if (c === '\"') out += '\\\\\"';\n else if (c === '\\\\') out += '\\\\\\\\';\n else if (code < 0x20) out += '\\\\u' + code.toString(16).padStart(4, '0');\n else out += c;\n }\n return out + '\"';\n};\n\nconst encodeEnvelope = (e: DagResultEnvelope): string =>\n e.$type === 'Success'\n ? '{\"$type\":\"Success\"}'\n : `{\"$type\":\"Failure\",\"code\":${str(e.code)},\"message\":${str(e.message)}}`;\n\n/**\n * Encode a `DagOpRecord` to its canonical JSON wire form. Keys in Ordinal order\n * (hash < op < outcomeHash < parents < promptId < resultEnvelope < streamId <\n * timestamp < tombstoned < userId); `outcomeHash` / `promptId` omitted when\n * absent; `op` nests `encodeOp` verbatim. Byte-identical to the F#\n * `DagWire.encodeRecord`.\n */\nexport const encodeDagRecord = <TMsg>(record: DagOpRecord<TMsg>): string => {\n let out = '{';\n out += `\"hash\":${str(record.hash)}`;\n out += `,\"op\":${encodeOp(record.op as TreeOp<unknown>)}`;\n if (record.outcomeHash !== undefined) out += `,\"outcomeHash\":${str(record.outcomeHash)}`;\n out += `,\"parents\":[${record.parents.map(str).join(',')}]`;\n if (record.promptId !== undefined) out += `,\"promptId\":${str(record.promptId)}`;\n out += `,\"resultEnvelope\":${encodeEnvelope(record.resultEnvelope)}`;\n out += `,\"streamId\":${str(record.streamId)}`;\n out += `,\"timestamp\":${record.timestamp}`;\n out += `,\"tombstoned\":${record.tombstoned ? 'true' : 'false'}`;\n out += `,\"userId\":${str(record.userId)}`;\n return out + '}';\n};\n\ntype DecodeResult<T> =\n | { readonly ok: true; readonly value: T }\n | { readonly ok: false; readonly error: string };\n\n/** Re-serialise a parsed JSON AST to a (non-canonical but valid) JSON string. */\nconst astToJson = (ast: JsonAst): string => {\n switch (ast.kind) {\n case 'JNull':\n return 'null';\n case 'JBool':\n return ast.value ? 'true' : 'false';\n case 'JNumber':\n return String(ast.value);\n case 'JString':\n return str(ast.value);\n case 'JArray':\n return `[${ast.items.map(astToJson).join(',')}]`;\n case 'JObject': {\n const parts: string[] = [];\n for (const [k, v] of ast.fields) parts.push(`${str(k)}:${astToJson(v)}`);\n return `{${parts.join(',')}}`;\n }\n }\n};\n\nconst asString = (ast: JsonAst | undefined): string | undefined =>\n ast !== undefined && ast.kind === 'JString' ? ast.value : undefined;\n\n/**\n * Decode a canonical DAG-record envelope. The nested `op` AST is routed through\n * the canonical `decodeOp` (the same structural decoder the linear wire path\n * uses). Returns a structured error string on any wire-shape violation.\n */\nexport const decodeDagRecord = (json: string): DecodeResult<DagOpRecord<unknown>> => {\n const parsed = parse(json);\n if (!parsed.ok) return { ok: false, error: `dag envelope parse: ${parsed.error.message}` };\n const root = parsed.value;\n if (root.kind !== 'JObject') return { ok: false, error: 'dag envelope: expected an object' };\n const f = root.fields;\n\n const hash = asString(field(f, 'hash'));\n const streamId = asString(field(f, 'streamId'));\n const userId = asString(field(f, 'userId'));\n const opAst = field(f, 'op');\n const parentsAst = field(f, 'parents');\n const tsAst = field(f, 'timestamp');\n\n if (hash === undefined || streamId === undefined || userId === undefined)\n return { ok: false, error: 'dag envelope: missing hash/streamId/userId' };\n if (opAst === undefined) return { ok: false, error: 'dag envelope: missing op' };\n if (parentsAst === undefined || parentsAst.kind !== 'JArray')\n return { ok: false, error: 'dag envelope: missing/!array parents' };\n if (tsAst === undefined || tsAst.kind !== 'JNumber')\n return { ok: false, error: 'dag envelope: missing/!number timestamp' };\n\n const opResult = decodeOp(astToJson(opAst));\n if (!opResult.ok)\n return { ok: false, error: `dag op decode: ${opResult.error.code} @ ${opResult.error.path}` };\n\n const parents: string[] = [];\n for (const item of parentsAst.items) {\n if (item.kind !== 'JString') return { ok: false, error: 'dag parents: non-string element' };\n parents.push(item.value);\n }\n\n const envAst = field(f, 'resultEnvelope');\n let resultEnvelope: DagResultEnvelope = { $type: 'Success' };\n if (envAst !== undefined && envAst.kind === 'JObject') {\n const t = asString(field(envAst.fields, '$type'));\n if (t === 'Failure') {\n resultEnvelope = {\n $type: 'Failure',\n code: asString(field(envAst.fields, 'code')) ?? '',\n message: asString(field(envAst.fields, 'message')) ?? '',\n };\n }\n }\n\n const tombAst = field(f, 'tombstoned');\n const outcomeHash = asString(field(f, 'outcomeHash'));\n const promptId = asString(field(f, 'promptId'));\n\n // `exactOptionalPropertyTypes` — only include optional keys when present.\n const value: DagOpRecord<unknown> = {\n streamId,\n hash,\n parents,\n op: opResult.value,\n ...(outcomeHash !== undefined ? { outcomeHash } : {}),\n ...(promptId !== undefined ? { promptId } : {}),\n userId,\n timestamp: tsAst.value,\n resultEnvelope,\n tombstoned: tombAst !== undefined && tombAst.kind === 'JBool' && tombAst.value,\n };\n\n return { ok: true, value };\n};\n","// ============================================================================\n// @fuaran-ui/ops — facet-refined 3-way tree merge (Phase 179, M2 — Leg B).\n//\n// Symmetric port of the F# `Fuaran.UI.OpStream.Dag.Merge.TreeMerge.merge3Way`\n// (the author-agnostic entry point — both sides treated equally, no\n// human-pin primacy; that grading is an orchestration-tier concern). A node\n// decomposes into independent FACETS, each 3-way-merged on its own:\n//\n// - \"kind\" — the node's own kind-fields (children / style / state /\n// accessibility neutralised in the canonical probe).\n// - \"style.{tone,weight,emphasis,role,voice}\" — the SemanticStyle sub-fields,\n// merged INDEPENDENTLY (A's tone + B's voice auto-blend).\n// - \"state\" — the StateBehaviour block.\n// - \"accessibility\" — the Accessibility block.\n// - \"children\" — the ordered child-id list (structural).\n//\n// When a facet changed on at most one side, take that side's value; when both\n// changed it differently, it is a CONFLICT (returned, not silently picked).\n// The one structural case auto-merged across both sides is disjoint pure\n// inserts into the same parent, ordered by NodeId code-unit (Ordinal) bytes —\n// the deterministic, wall-clock-free tie-break.\n//\n// Facet equality is `encodeNode` canonical-JSON bytes (the same oracle the\n// merge-conformance corpus commits to), except the closure-free SemanticStyle\n// sub-fields, compared directly. Verified byte-identical to the F# host over\n// the workspace `wire-format-fixtures/merge-conformance/` corpus by\n// test/merge.test.ts — the cross-implementation determinism gate (F# Leg A ==\n// TS Leg B, same merged tree + same sha256 outcome hash).\n// ============================================================================\n\nimport {\n defaults,\n type Accessibility,\n type LayoutKind,\n type Node,\n type NodeKind,\n type SemanticStyle,\n type StateBehaviour,\n} from '@fuaran-ui/schema';\n\nimport { encodeNode } from './encode.js';\n\ntype N = Node<unknown>;\n\n/** Rebuild a node with controlled facets, OMITTING `accessibility` when absent\n * (the wire's absent ⟺ default; `exactOptionalPropertyTypes` forbids an\n * explicit `undefined`). Other fields (`motion`, `extraAttributes`) carry over\n * from `base` — they are not merge facets and stay fixed across the sides. */\nconst mkNode = (\n base: N,\n kind: NodeKind<unknown>,\n style: SemanticStyle,\n state: StateBehaviour<unknown>,\n accessibility: Accessibility | undefined,\n): N => {\n const { accessibility: _drop, ...rest } = base;\n return accessibility !== undefined\n ? { ...rest, kind, style, state, accessibility }\n : { ...rest, kind, style, state };\n};\n\n/** A `(nodeId, facet)` cell that could not be auto-merged. */\nexport interface MergeConflict {\n readonly nodeId: string;\n readonly facet: string;\n}\n\n/** Outcome of a 3-way merge: the merged tree, or the conflicting cells. */\nexport type MergeResult =\n | { readonly ok: true; readonly tree: N }\n | { readonly ok: false; readonly conflicts: readonly MergeConflict[] };\n\nconst rawId = (n: N): string => n.id as unknown as string;\n\n// ─── child traversal (Layout children only — the structural facet) ───────────\n\nconst childrenOf = (n: N): readonly N[] =>\n n.kind.kind === 'Layout' ? n.kind.layout.spec.children : [];\n\n/** The kind with its (layout) children replaced — for the childless-kind probe\n * and for rebuilding after the children facet merges. Non-layout kinds carry no\n * structural children, so they are returned unchanged. */\nconst withKindChildren = (k: NodeKind<unknown>, children: readonly N[]): NodeKind<unknown> =>\n k.kind === 'Layout'\n ? {\n kind: 'Layout',\n // The per-layout spec is a discriminated union; the children-bearing\n // shape is uniform across members, so the cast is sound (mirrors\n // apply.ts `withLayoutChildren`).\n layout: { ...k.layout, spec: { ...k.layout.spec, children } } as LayoutKind<unknown>,\n }\n : k;\n\nconst childlessKind = (k: NodeKind<unknown>): NodeKind<unknown> => withKindChildren(k, []);\n\n// ─── facet-isolation canonical probes (closure-safe bytes) ───────────────────\n//\n// Each probe holds every OTHER facet fixed so only the named facet varies,\n// letting a closure-bearing facet be compared by canonical JSON.\n\nconst neutralState = defaults.stateBehaviour<unknown>();\n\n/** Kind-own canonical (children + style + state + accessibility neutralised). */\nconst kindCanonical = (n: N): string =>\n encodeNode(mkNode(n, childlessKind(n.kind), defaults.style, neutralState, undefined));\n\n/** State canonical (kind→shell, style + accessibility neutralised). */\nconst stateCanonical = (shell: NodeKind<unknown>, n: N): string =>\n encodeNode(mkNode(n, shell, defaults.style, n.state, undefined));\n\n/** Accessibility canonical (kind→shell, style + state neutralised). */\nconst accessibilityCanonical = (shell: NodeKind<unknown>, n: N): string =>\n encodeNode(mkNode(n, shell, defaults.style, neutralState, n.accessibility));\n\n// ─── facet pickers ───────────────────────────────────────────────────────────\n\nconst ordinal = (x: string, y: string): number => (x < y ? -1 : x > y ? 1 : 0);\n\n/** `true` when `head` is `base` with zero removals and zero reorders. */\nconst isPureAddition = (baseIds: readonly string[], headIds: readonly string[]): boolean => {\n const headSet = new Set(headIds);\n const survive = baseIds.filter((i) => headSet.has(i));\n const headKept = headIds.filter((i) => baseIds.includes(i));\n return (\n survive.length === baseIds.length &&\n survive.every((v, i) => v === baseIds[i]) &&\n headKept.length === baseIds.length &&\n headKept.every((v, i) => v === baseIds[i])\n );\n};\n\n// Optional-aware equality: an absent field equals an absent field (both the\n// canonical default), so an explicit-default vs absent never reads as changed.\nconst eqOpt = <T>(x: T | undefined, y: T | undefined): boolean => (x ?? null) === (y ?? null);\n\n/** Merge one SemanticStyle sub-field; push a conflict on a genuine divergence. */\nconst pickField = <T>(\n conflicts: MergeConflict[],\n nodeId: string,\n facet: string,\n baseV: T | undefined,\n aV: T | undefined,\n bV: T | undefined,\n): T | undefined => {\n const aCh = !eqOpt(aV, baseV);\n const bCh = !eqOpt(bV, baseV);\n if (aCh && bCh && !eqOpt(aV, bV)) {\n conflicts.push({ nodeId, facet });\n return baseV;\n }\n if (aCh) return aV;\n if (bCh) return bV;\n return baseV;\n};\n\n/** Merge a canonical-compared facet; returns 0=base, 1=a, 2=b. */\nconst pickCanonical = (\n conflicts: MergeConflict[],\n nodeId: string,\n facet: string,\n baseC: string,\n aC: string,\n bC: string,\n): 0 | 1 | 2 => {\n const aCh = aC !== baseC;\n const bCh = bC !== baseC;\n if (aCh && bCh && aC !== bC) {\n conflicts.push({ nodeId, facet });\n return 0;\n }\n if (aCh) return 1;\n if (bCh) return 2;\n return 0;\n};\n\nconst mergeStyle = (conflicts: MergeConflict[], id: string, base: N, a: N, b: N): SemanticStyle => {\n const bs = base.style;\n const as_ = a.style;\n const bsB = b.style;\n const tone = pickField(conflicts, id, 'style.tone', bs.tone, as_.tone, bsB.tone)!;\n const weight = pickField(conflicts, id, 'style.weight', bs.weight, as_.weight, bsB.weight)!;\n const emphasis = pickField(\n conflicts,\n id,\n 'style.emphasis',\n bs.emphasis,\n as_.emphasis,\n bsB.emphasis,\n )!;\n const role = pickField(conflicts, id, 'style.role', bs.role, as_.role, bsB.role);\n const voice = pickField(conflicts, id, 'style.voice', bs.voice, as_.voice, bsB.voice);\n // Only attach optional fields when present, so the merged style encodes\n // byte-identically (absent ⟺ default; `encodeNode` omits defaults).\n const style: SemanticStyle = { tone, weight, emphasis };\n return {\n ...style,\n ...(role !== undefined ? { role } : {}),\n ...(voice !== undefined ? { voice } : {}),\n };\n};\n\nconst merge3 = (\n conflicts: MergeConflict[],\n base: N,\n aOpt: N | undefined,\n bOpt: N | undefined,\n): N => {\n const a = aOpt ?? base;\n const b = bOpt ?? base;\n const id = rawId(base);\n const shell = childlessKind(base.kind);\n\n // kind facet\n const kindPick = pickCanonical(\n conflicts,\n id,\n 'kind',\n kindCanonical(base),\n kindCanonical(a),\n kindCanonical(b),\n );\n const kindSource = kindPick === 1 ? a : kindPick === 2 ? b : base;\n\n // style sub-fields (independent)\n const mergedStyle = mergeStyle(conflicts, id, base, a, b);\n\n // state facet\n const statePick = pickCanonical(\n conflicts,\n id,\n 'state',\n stateCanonical(shell, base),\n stateCanonical(shell, a),\n stateCanonical(shell, b),\n );\n const mergedState = statePick === 1 ? a.state : statePick === 2 ? b.state : base.state;\n\n // accessibility facet\n const accPick = pickCanonical(\n conflicts,\n id,\n 'accessibility',\n accessibilityCanonical(shell, base),\n accessibilityCanonical(shell, a),\n accessibilityCanonical(shell, b),\n );\n const mergedAcc =\n accPick === 1 ? a.accessibility : accPick === 2 ? b.accessibility : base.accessibility;\n\n // children facet (structural)\n const baseKids = childrenOf(base);\n const aKids = childrenOf(a);\n const bKids = childrenOf(b);\n const baseIds = baseKids.map(rawId);\n const aIds = aKids.map(rawId);\n const bIds = bKids.map(rawId);\n const aStruct = JSON.stringify(aIds) !== JSON.stringify(baseIds);\n const bStruct = JSON.stringify(bIds) !== JSON.stringify(baseIds);\n const baseMap = new Map(baseKids.map((c) => [rawId(c), c]));\n const aMap = new Map(aKids.map((c) => [rawId(c), c]));\n const bMap = new Map(bKids.map((c) => [rawId(c), c]));\n\n const recurseChild = (cid: string): N => {\n const bc = baseMap.get(cid);\n if (bc !== undefined) return merge3(conflicts, bc, aMap.get(cid), bMap.get(cid));\n const ac = aMap.get(cid);\n if (ac !== undefined) return ac;\n const bb = bMap.get(cid);\n if (bb !== undefined) return bb;\n throw new Error(`merge3: child id ${cid} vanished`);\n };\n\n let mergedChildren: readonly N[];\n if (!aStruct && !bStruct) {\n mergedChildren = baseIds.map(recurseChild);\n } else if (aStruct && !bStruct) {\n mergedChildren = aIds.map(recurseChild);\n } else if (!aStruct && bStruct) {\n mergedChildren = bIds.map(recurseChild);\n } else {\n const baseSet = new Set(baseIds);\n const aNew = aIds.filter((i) => !baseSet.has(i));\n const bNew = bIds.filter((i) => !baseSet.has(i));\n const aNewSet = new Set(aNew);\n const disjoint =\n isPureAddition(baseIds, aIds) &&\n isPureAddition(baseIds, bIds) &&\n !bNew.some((i) => aNewSet.has(i));\n if (disjoint) {\n const survivors = baseIds.map(recurseChild);\n const newIds = [...new Set([...aNew, ...bNew])].sort(ordinal);\n mergedChildren = [...survivors, ...newIds.map(recurseChild)];\n } else {\n conflicts.push({ nodeId: id, facet: 'children' });\n mergedChildren = baseIds.map(recurseChild);\n }\n }\n\n const mergedKind = withKindChildren(childlessKind(kindSource.kind), mergedChildren);\n return mkNode(base, mergedKind, mergedStyle, mergedState, mergedAcc);\n};\n\n/**\n * Author-agnostic facet 3-way merge of `a` and `b` over their common `base`\n * (all three share the root id). Returns the merged tree on full auto-merge, or\n * the conflicting cells. Deterministic + host-reproducible (NodeId-byte\n * tie-break, no wall-clock) — byte-identical to the F# `TreeMerge.merge3Way`.\n */\nexport const merge3Way = (base: N, a: N, b: N): MergeResult => {\n const conflicts: MergeConflict[] = [];\n const merged = merge3(conflicts, base, a, b);\n return conflicts.length === 0 ? { ok: true, tree: merged } : { ok: false, conflicts };\n};\n","// ============================================================================\n// @fuaran-ui/ops — wire versioning + the forward/backward-compatibility\n// contract (WIRE_FORMAT.md §15).\n//\n// A conformant TS port of `Fuaran.Core.Wire.Versioning` (the F# reference,\n// Fuaran-Core/src/Fuaran.Core.Wire/Wire.fs). A versioned wire lets an *older*\n// consumer meet a *newer* artifact and **detect → preserve → degrade** instead\n// of hard-crashing with UNKNOWN_DU_CASE / WRONG_NODE_KIND — while the\n// authoring/generation surface stays closed and exhaustive (no host can *emit*\n// an unknown kind). The split is load-bearing:\n// • the producer authors against a closed surface and stamps the artifact\n// with its profile (the `$profile` / `$payload` envelope);\n// • tolerance lives ONLY on the decode boundary of a consumer that is\n// `Behind` — the transport-only `Unknown` is reachable on decode and\n// un-constructible on encode (there is no authoring constructor for it).\n//\n// Certified byte-for-byte against the workspace ../wire-format-fixtures/\n// corpus (the `envelope-round-trip` / `envelope-reject` fixture families) so\n// the envelope + tolerance rules are cross-host, not host-private.\n// ============================================================================\n\nimport type { Node, Result } from '@fuaran-ui/schema';\n\nimport { decodeNode, type DecodeError, type DecodeErrorCode } from './decode.js';\nimport { encodeNode, renderAstCanonical } from './encode.js';\nimport { type JsonAst, parse } from './parse.js';\n\n// ─── Profile id ──────────────────────────────────────────────────────────────\n\n/**\n * A wire profile id — `<name>@<major>.<minor>` (e.g. `core@1.0`). `name` is the\n * capability namespace; `major` is the `/vN/` incompatibility boundary (a\n * removal/rename mints a new major — old consumers cannot interpret it); `minor`\n * is the additive capability counter (a new kind/case/field bumps the minor — an\n * older consumer tolerates it via must-ignore-but-preserve).\n */\nexport interface Profile {\n readonly name: string;\n readonly major: number;\n readonly minor: number;\n}\n\n/** The canonical string form: `<name>@<major>.<minor>`. */\nexport const renderProfile = (p: Profile): string => `${p.name}@${p.major}.${p.minor}`;\n\n/** The base `core` profile — `core@1.0` (the current wire). */\nexport const coreV1: Profile = { name: 'core', major: 1, minor: 0 };\n\n/**\n * Parse `<name>@<major>.<minor>`. Names a typed error on any malformed shape —\n * the same envelope discipline as the decoder (no exceptions escape). Mirrors\n * F# `Profile.tryParse`: split on the LAST `@`, require a `<major>.<minor>` of\n * two non-negative integers.\n */\nexport const tryParseProfile = (s: string): Result<Profile, string> => {\n const at = s.lastIndexOf('@');\n if (at <= 0 || at === s.length - 1) {\n return { ok: false, error: `malformed profile (expected '<name>@<major>.<minor>'): ${s}` };\n }\n const name = s.slice(0, at);\n const ver = s.slice(at + 1);\n const parts = ver.split('.');\n if (parts.length !== 2) {\n return { ok: false, error: `malformed profile version (expected '<major>.<minor>'): ${ver}` };\n }\n const parseNonNeg = (t: string): number | undefined => {\n // Match F# Int32.TryParse + `v >= 0`: a plain non-negative decimal integer.\n if (!/^\\d+$/.test(t)) return undefined;\n const v = Number(t);\n return Number.isInteger(v) && v >= 0 ? v : undefined;\n };\n const major = parseNonNeg(parts[0]!);\n const minor = parseNonNeg(parts[1]!);\n if (major === undefined || minor === undefined) {\n return {\n ok: false,\n error: `malformed profile version (expected non-negative '<major>.<minor>'): ${ver}`,\n };\n }\n return { ok: true, value: { name, major, minor } };\n};\n\n// ─── Capability negotiation ──────────────────────────────────────────────────\n\n/** The capability-negotiation outcome of a consumer reading an artifact's profile. */\nexport type Compatibility =\n /** Authored at-or-below the consumer's profile (same name + major) — decode fully. */\n | { readonly kind: 'Current' }\n /**\n * Authored *ahead* of the consumer (same name + major, higher minor) — the\n * consumer may meet kinds it does not understand; it must tolerate (preserve +\n * degrade), never crash.\n */\n | { readonly kind: 'Behind'; readonly authored: Profile }\n /**\n * A different namespace or a different major — an incompatible `/vN/` boundary\n * the consumer cannot interpret at all (hard-refuse, never silently mis-decode).\n */\n | { readonly kind: 'Foreign'; readonly authored: Profile };\n\n/**\n * Negotiate a consumer's supported profile against an artifact's authored\n * profile. Minor-ahead is `Behind` (tolerable); a different name or major is\n * `Foreign` (refuse). Mirrors F# `Versioning.negotiate`.\n */\nexport const negotiate = (consumer: Profile, authored: Profile): Compatibility => {\n if (authored.name !== consumer.name || authored.major !== consumer.major) {\n return { kind: 'Foreign', authored };\n }\n if (authored.minor > consumer.minor) return { kind: 'Behind', authored };\n return { kind: 'Current' };\n};\n\n// ─── Envelope keys ───────────────────────────────────────────────────────────\n\n/** The versioned-envelope payload key. `$`-prefixed so it sorts before data keys. */\nexport const PAYLOAD_KEY = '$payload';\n/** The versioned-envelope profile key. */\nexport const PROFILE_KEY = '$profile';\n/** The optional artifact-declares-its-required-profile key. */\nexport const REQUIRED_PROFILE_KEY = 'requiredProfile';\n\n// ─── Versioning error surface ────────────────────────────────────────────────\n\n/**\n * A versioning-layer failure. Extends the six canonical `DecodeErrorCode`s with\n * two envelope-specific codes, kept OUT of the core `DecodeErrorCode` set (the\n * six-code AI-recovery surface stays unpolluted — WIRE_FORMAT.md §6):\n * - `FOREIGN_PROFILE` — negotiate returned `Foreign`; the artifact is refused.\n * - `MALFORMED_PROFILE` — the `$profile` value is not a `<name>@<major>.<minor>`.\n */\nexport type EnvelopeErrorCode = DecodeErrorCode | 'FOREIGN_PROFILE' | 'MALFORMED_PROFILE';\n\nexport interface EnvelopeError {\n readonly code: EnvelopeErrorCode;\n readonly path: string;\n readonly message: string;\n}\n\nconst envErr = (code: EnvelopeErrorCode, path: string, message: string): EnvelopeError => ({\n code,\n path,\n message,\n});\n\n// ─── Versioned envelope ──────────────────────────────────────────────────────\n\n/**\n * A versioned wire envelope: the producer's authored `profile` + the artifact\n * `payload` (a `Node` / `TreeOp` as the verbatim parsed AST). `$profile` /\n * `$payload` sort before any lower-case data key under the canonical key order,\n * so an enveloped fixture is byte-stable. Mirrors F# `Versioning.Envelope`.\n */\nexport interface Envelope {\n readonly profile: Profile;\n readonly payload: JsonAst;\n}\n\n/** Render an envelope to canonical wire bytes. */\nexport const encodeEnvelope = (env: Envelope): string =>\n renderAstCanonical({\n kind: 'JObject',\n fields: new Map<string, JsonAst>([\n [PAYLOAD_KEY, env.payload],\n [PROFILE_KEY, { kind: 'JString', value: renderProfile(env.profile) }],\n ]),\n });\n\n/**\n * Decode an envelope from an already-parsed AST — reads `$profile` (parsed) +\n * the verbatim `$payload`. A missing / non-string / malformed `$profile`, or a\n * missing `$payload`, is a structured `EnvelopeError`.\n */\nexport const decodeEnvelopeAst = (ast: JsonAst): Result<Envelope, EnvelopeError> => {\n if (ast.kind !== 'JObject') {\n return { ok: false, error: envErr('WRONG_TYPE', '$', 'envelope must be a JSON object') };\n }\n const profileJ = ast.fields.get(PROFILE_KEY);\n if (profileJ === undefined) {\n return {\n ok: false,\n error: envErr('MISSING_FIELD', `$.${PROFILE_KEY}`, `missing required field '${PROFILE_KEY}'`),\n };\n }\n if (profileJ.kind !== 'JString') {\n return {\n ok: false,\n error: envErr('WRONG_TYPE', `$.${PROFILE_KEY}`, `'${PROFILE_KEY}' must be a profile string`),\n };\n }\n const profile = tryParseProfile(profileJ.value);\n if (!profile.ok) {\n return { ok: false, error: envErr('MALFORMED_PROFILE', `$.${PROFILE_KEY}`, profile.error) };\n }\n const payload = ast.fields.get(PAYLOAD_KEY);\n if (payload === undefined) {\n return {\n ok: false,\n error: envErr('MISSING_FIELD', `$.${PAYLOAD_KEY}`, `missing required field '${PAYLOAD_KEY}'`),\n };\n }\n return { ok: true, value: { profile: profile.value, payload } };\n};\n\n/** Parse + decode an envelope from wire bytes. */\nexport const decodeEnvelope = (json: string): Result<Envelope, EnvelopeError> => {\n const parsed = parse(json);\n if (!parsed.ok) {\n return { ok: false, error: envErr('INVALID_JSON', '$', parsed.error.message) };\n }\n return decodeEnvelopeAst(parsed.value);\n};\n\n// ─── Transport-only Unknown + must-ignore-but-preserve ───────────────────────\n\n/**\n * A kind the consumer does not understand, captured on the decode boundary.\n * **Transport-only**: reachable here and nowhere on the authoring/encode path —\n * no host can construct one to emit. `payload` is the *verbatim parsed AST*, so\n * re-rendering it reproduces the producer's bytes (must-ignore-but-preserve);\n * `requiredProfile` is the profile the artifact declared it needs (when a\n * well-formed one was present), so the consumer can name what it is missing in a\n * degraded placeholder. Mirrors F# `Versioning.UnknownKind`.\n */\nexport interface UnknownKind {\n readonly kind: string;\n readonly payload: JsonAst;\n readonly requiredProfile?: Profile;\n}\n\n/** The result of a tolerant decode: a fully-understood `T`, or a preserved `Unknown`. */\nexport type Decoded<T> =\n | { readonly known: true; readonly value: T }\n | { readonly known: false; readonly unknown: UnknownKind };\n\n/**\n * Read an optional `requiredProfile` declaration off an artifact object (the\n * \"artifact declares the profile it requires\" shape). Malformed / absent /\n * non-string ⇒ `undefined` (the degrade placeholder simply carries no label —\n * mirrors F# `readRequiredProfile`).\n */\nconst readRequiredProfile = (ast: JsonAst): Profile | undefined => {\n if (ast.kind !== 'JObject') return undefined;\n const j = ast.fields.get(REQUIRED_PROFILE_KEY);\n if (j === undefined || j.kind !== 'JString') return undefined;\n const p = tryParseProfile(j.value);\n return p.ok ? p.value : undefined;\n};\n\n/**\n * Tolerantly decode one artifact AST. `tagOf` reads its discriminator; `isKnown`\n * reports whether this consumer understands that tag; `decodeKnown` decodes a\n * known one. An *unrecognised* tag is NOT an error — it becomes a transport-only\n * `Unknown` carrying the verbatim parsed `payload` and any declared\n * `requiredProfile`. A genuinely malformed object (no discriminator at all)\n * still fails via `tagOf`. Mirrors F# `Versioning.decodeTolerant`.\n */\nexport const decodeTolerant = <T>(\n tagOf: (ast: JsonAst) => Result<string, EnvelopeError>,\n isKnown: (tag: string) => boolean,\n decodeKnown: (ast: JsonAst) => Result<T, EnvelopeError>,\n ast: JsonAst,\n): Result<Decoded<T>, EnvelopeError> => {\n const tag = tagOf(ast);\n if (!tag.ok) return tag;\n if (isKnown(tag.value)) {\n const d = decodeKnown(ast);\n return d.ok ? { ok: true, value: { known: true, value: d.value } } : d;\n }\n const unknown: UnknownKind = { kind: tag.value, payload: ast };\n const rp = readRequiredProfile(ast);\n return {\n ok: true,\n value: {\n known: false,\n unknown: rp === undefined ? unknown : { ...unknown, requiredProfile: rp },\n },\n };\n};\n\n/**\n * Re-encode a tolerant decode back to canonical wire bytes. The `Unknown` branch\n * re-renders its preserved `payload` **verbatim** (must-ignore-but-preserve);\n * the `Known` branch re-encodes through the real node encoder. Composed with the\n * canonical renderer's deterministic key order, an unknown artifact round-trips\n * byte-for-byte. Mirrors F# `Versioning.reencode` (specialised to `Node`).\n */\nexport const reencodeNode = (d: Decoded<Node<unknown>>): string =>\n d.known ? encodeNode(d.value) : renderAstCanonical(d.unknown.payload);\n\n// ─── Node binding of the tolerant decoder ────────────────────────────────────\n\n/** Read a node AST's `kind.$type` discriminator tag. */\nconst nodeTagOf = (ast: JsonAst): Result<string, EnvelopeError> => {\n if (ast.kind !== 'JObject') {\n return { ok: false, error: envErr('WRONG_TYPE', '$', 'node must be a JSON object') };\n }\n const kind = ast.fields.get('kind');\n if (kind === undefined) {\n return { ok: false, error: envErr('MISSING_FIELD', '$.kind', \"missing required field 'kind'\") };\n }\n if (kind.kind !== 'JObject') {\n return { ok: false, error: envErr('WRONG_TYPE', '$.kind', 'kind must be a JSON object') };\n }\n const disc = kind.fields.get('$type');\n if (disc === undefined) {\n return {\n ok: false,\n error: envErr('MISSING_FIELD', '$.kind.$type', \"kind must carry a '$type' discriminator\"),\n };\n }\n if (disc.kind !== 'JString') {\n return { ok: false, error: envErr('WRONG_TYPE', '$.kind.$type', '$type must be a string') };\n }\n return { ok: true, value: disc.value };\n};\n\n/**\n * Whether the real decoder knows how to route a node kind — probed against\n * `decodeNode` itself, so it is **zero-drift** with the decoder's kind set: an\n * unknown top-level kind fails with `WRONG_NODE_KIND` at `$.kind.$type`; a known\n * kind (even one missing required fields) fails with some *other* code, or\n * succeeds. This is the TS analogue of F# `isKnown` over `knownTags`, without a\n * parallel kind list to maintain.\n */\nconst isKnownNodeKind = (tag: string): boolean => {\n const probe = decodeNode(`{\"id\":\"_probe_kind\",\"kind\":{\"$type\":${JSON.stringify(tag)}}}`);\n return probe.ok || probe.error.code !== 'WRONG_NODE_KIND';\n};\n\n/** Adapt the six-code `DecodeError` into the versioning error surface. */\nconst liftDecodeError = (e: DecodeError): EnvelopeError => ({\n code: e.code,\n path: e.path,\n message: e.message,\n});\n\nconst decodeKnownNode = (ast: JsonAst): Result<Node<unknown>, EnvelopeError> => {\n const r = decodeNode(renderAstCanonical(ast));\n return r.ok ? r : { ok: false, error: liftDecodeError(r.error) };\n};\n\n/**\n * Tolerantly decode a bare (un-enveloped) `Node` wire form. A known kind decodes\n * normally; an unknown top-level kind becomes a transport-only `Unknown` whose\n * bytes round-trip verbatim through `reencodeNode` — a minor-ahead artifact no\n * longer throws `WRONG_NODE_KIND` / `UNKNOWN_DU_CASE`. A genuinely malformed\n * object (no `kind.$type`) still fails.\n */\nexport const decodeNodeTolerant = (json: string): Result<Decoded<Node<unknown>>, EnvelopeError> => {\n const parsed = parse(json);\n if (!parsed.ok) {\n return { ok: false, error: envErr('INVALID_JSON', '$', parsed.error.message) };\n }\n return decodeTolerant<Node<unknown>>(nodeTagOf, isKnownNodeKind, decodeKnownNode, parsed.value);\n};\n\n// ─── Whole-envelope negotiate → tolerate/refuse → re-encode ──────────────────\n\n/**\n * The consumer entry point for reading a possibly-versioned `Node` artifact\n * safely. Decodes the `$profile` / `$payload` envelope, negotiates the authored\n * profile against `consumer`, and:\n * - **Foreign** → refuses with `FOREIGN_PROFILE` (never silently mis-decodes);\n * - **Current / Behind** → tolerantly decodes the payload (unknown kinds\n * preserved) and returns the whole envelope re-encoded to canonical bytes.\n *\n * The re-encode is byte-identical to a canonical input (must-ignore-but-preserve\n * keeps an unknown-kind payload verbatim), which is exactly what the\n * `envelope-round-trip` corpus family asserts and the `envelope-reject` family\n * asserts the `FOREIGN_PROFILE` refusal for.\n */\nexport const negotiateEnvelope = (\n json: string,\n consumer: Profile = coreV1,\n): Result<string, EnvelopeError> => {\n const env = decodeEnvelope(json);\n if (!env.ok) return env;\n\n const compat = negotiate(consumer, env.value.profile);\n if (compat.kind === 'Foreign') {\n return {\n ok: false,\n error: envErr(\n 'FOREIGN_PROFILE',\n `$.${PROFILE_KEY}`,\n `authored profile ${renderProfile(env.value.profile)} is Foreign to consumer ${renderProfile(\n consumer,\n )} — refused (incompatible /vN/ boundary)`,\n ),\n };\n }\n\n const decoded = decodeTolerant<Node<unknown>>(\n nodeTagOf,\n isKnownNodeKind,\n decodeKnownNode,\n env.value.payload,\n );\n if (!decoded.ok) return decoded;\n\n const payloadBytes = reencodeNode(decoded.value);\n const payloadAst = parse(payloadBytes);\n // payloadBytes is canonical (produced by the encoder / verbatim preserve), so\n // it always re-parses; the guard keeps the types total.\n if (!payloadAst.ok) {\n return {\n ok: false,\n error: envErr('INVALID_JSON', `$.${PAYLOAD_KEY}`, payloadAst.error.message),\n };\n }\n return {\n ok: true,\n value: encodeEnvelope({ profile: env.value.profile, payload: payloadAst.value }),\n };\n};\n","// ============================================================================\n// @fuaran-ui/ops — the elicitation envelope: question-as-UI with a typed\n// answer contract (WIRE_FORMAT.md §18).\n//\n// An elicitation poses a question AS a live Fuaran tree: a canonical Node\n// plus a declared answer contract — which nodes' committed state entries\n// constitute the answer, each typed by a value space — resolving to exactly\n// one typed outcome (`Answered` with canonical typed JSON conforming to the\n// contract / `Declined` / `TimedOut` / `Superseded`). Never prose to\n// re-parse.\n//\n// A conformant TS implementation of the §18 contract, certified against the\n// workspace ../wire-format-fixtures/ corpus (`elicitation-round-trip` /\n// `elicitation-reject` / `elicitation-answer-accept` /\n// `elicitation-answer-reject` families). Like §17's teleport bundle, this is\n// an additive top-level artefact: the Node wire form is embedded unchanged\n// and no NodeKind / Action / Binding case is added — the envelope wraps a\n// tree, it does not extend the tree vocabulary.\n//\n// Strictness (default-deny by shape): every object position rejects\n// undeclared keys (`UNDECLARED_FIELD`); decode is fail-fast in the §18.4\n// pinned order so every host surfaces the same first error. No clock is read\n// anywhere here — `timeoutMs` is data; the presenting HOST's clock dispatches\n// `TimedOut`.\n// ============================================================================\n\nimport type { Node, Result } from '@fuaran-ui/schema';\n\nimport { allNodeIds } from './apply.js';\nimport { decodeNode, type DecodeError, type DecodeErrorCode } from './decode.js';\nimport { encodeNode, renderAstCanonical } from './encode.js';\nimport { type JsonAst, parse } from './parse.js';\n\n// ─── Wire constants ──────────────────────────────────────────────────────────\n\n/** The envelope format-version tag key (`$`-prefixed, reserved per §2.1). */\nexport const ELICITATION_KEY = '$elicitation';\n/** The envelope format version this codec produces and accepts. */\nexport const ELICITATION_VERSION = '1';\n\n// ─── Error surface ───────────────────────────────────────────────────────────\n\n/**\n * The elicitation error surface: the six §6 codes plus the §18.5 codes, kept\n * OUT of the core `DecodeErrorCode` set (same posture as §15's\n * `FOREIGN_PROFILE`).\n */\nexport type ElicitationErrorCode =\n | DecodeErrorCode\n | 'UNSUPPORTED_VERSION'\n | 'UNDECLARED_FIELD'\n | 'CONTRACT_EMPTY'\n | 'CONTRACT_DUPLICATE_FIELD'\n | 'CONTRACT_UNKNOWN_NODE'\n | 'ANSWER_MISSING_FIELD'\n | 'ANSWER_UNDECLARED_FIELD'\n | 'ANSWER_TYPE_MISMATCH'\n | 'ANSWER_OUT_OF_SPACE'\n | 'DEFAULT_NONCONFORMANT';\n\nexport interface ElicitationError {\n readonly code: ElicitationErrorCode;\n readonly path: string;\n readonly message: string;\n}\n\nconst elErr = (code: ElicitationErrorCode, path: string, message: string): ElicitationError => ({\n code,\n path,\n message,\n});\n\n/** Re-root an inner decode error under `prefix` (`$.kind` → `$.tree.kind`). */\nconst rePath = (prefix: string, e: DecodeError): ElicitationError => ({\n code: e.code,\n path:\n e.path === '$'\n ? prefix\n : e.path.startsWith('$')\n ? prefix + e.path.slice(1)\n : `${prefix}.${e.path}`,\n message: e.message,\n});\n\n// ─── Typed shapes ────────────────────────────────────────────────────────────\n\n/**\n * A value space — the platform's established `$type`-tagged space vocabulary\n * (the same wire shape the capability codec uses). `min`/`max` inclusive;\n * `anyString` is the only unbounded space.\n */\nexport type AnswerSpace =\n | { readonly kind: 'intRange'; readonly min: number; readonly max: number }\n | { readonly kind: 'floatRange'; readonly min: number; readonly max: number }\n | { readonly kind: 'stringLen'; readonly min: number; readonly max: number }\n | { readonly kind: 'enum'; readonly values: readonly string[] }\n | { readonly kind: 'anyString' };\n\n/** One declared answer field (§18.1). */\nexport interface AnswerField {\n /** The key this field's value takes in the answer object. */\n readonly name: string;\n /** The id of the NODE whose committed state carries the value. */\n readonly nodeId: string;\n /** The state key the node's binding writes the value under. */\n readonly stateKey: string;\n readonly space: AnswerSpace;\n readonly required: boolean;\n}\n\n/** The declared answer contract — non-empty on the wire (`CONTRACT_EMPTY`). */\nexport interface AnswerContract {\n readonly fields: readonly AnswerField[];\n}\n\n/** A typed answer value — the JSON scalar shapes a space ranges over. */\nexport type AnswerValue = string | number;\n\n/** An answer object: declared field names → scalar values. */\nexport type Answer = ReadonlyMap<string, AnswerValue>;\n\n/** The elicitation envelope (§18.1). */\nexport interface ElicitationEnvelope {\n readonly id: string;\n readonly tree: Node<unknown>;\n readonly contract: AnswerContract;\n /** Milliseconds, ≥ 1. DATA only — the presenting host's clock acts on it. */\n readonly timeoutMs?: number;\n /** A proposed answer; must itself conform to the contract. */\n readonly defaultAnswer?: Answer;\n}\n\n/** The closed outcome set (§18.3). */\nexport type ElicitationOutcome =\n | { readonly kind: 'Answered'; readonly answer: Answer }\n | { readonly kind: 'Declined' }\n | { readonly kind: 'TimedOut' }\n | { readonly kind: 'Superseded'; readonly by?: string };\n\n/** An outcome on the wire, correlated to its elicitation by id. */\nexport interface ElicitationOutcomeEnvelope {\n readonly elicitationId: string;\n readonly outcome: ElicitationOutcome;\n}\n\n// ─── Shared JSON helpers ─────────────────────────────────────────────────────\n\n/**\n * §18.2 integer classification, identical across hosts: a whole-valued JSON\n * number within 32-bit signed range IS an integer (JSON has one number type —\n * `1.0` and `1` denote the same value; the canonical layout renders it `1`).\n */\nconst isInt32 = (v: number): boolean => Number.isInteger(v) && v >= -2147483648 && v <= 2147483647;\n\nconst jstr = (value: string): JsonAst => ({ kind: 'JString', value });\nconst jnum = (value: number): JsonAst => ({ kind: 'JNumber', value });\nconst jobj = (entries: readonly (readonly [string, JsonAst])[]): JsonAst => ({\n kind: 'JObject',\n fields: new Map(entries),\n});\n\n/** First key of `fields` (document order) not in `allowed` — default-deny by shape. */\nconst firstUndeclared = (\n allowed: readonly string[],\n fields: ReadonlyMap<string, JsonAst>,\n): string | undefined => {\n for (const k of fields.keys()) if (!allowed.includes(k)) return k;\n return undefined;\n};\n\nconst requireNonEmptyStr = (\n path: string,\n name: string,\n fields: ReadonlyMap<string, JsonAst>,\n): Result<string, ElicitationError> => {\n const v = fields.get(name);\n if (v === undefined)\n return { ok: false, error: elErr('MISSING_FIELD', path, `missing required field '${name}'`) };\n if (v.kind !== 'JString')\n return { ok: false, error: elErr('WRONG_TYPE', path, `'${name}' must be a string`) };\n if (v.value === '')\n return { ok: false, error: elErr('WRONG_TYPE', path, `'${name}' must be a non-empty string`) };\n return { ok: true, value: v.value };\n};\n\n// ─── Value-space codec ───────────────────────────────────────────────────────\n\nconst encodeSpace = (s: AnswerSpace): JsonAst => {\n switch (s.kind) {\n case 'intRange':\n return jobj([\n ['$type', jstr('intRange')],\n ['max', jnum(s.max)],\n ['min', jnum(s.min)],\n ]);\n case 'floatRange':\n return jobj([\n ['$type', jstr('floatRange')],\n ['max', jnum(s.max)],\n ['min', jnum(s.min)],\n ]);\n case 'stringLen':\n return jobj([\n ['$type', jstr('stringLen')],\n ['max', jnum(s.max)],\n ['min', jnum(s.min)],\n ]);\n case 'enum':\n return jobj([\n ['$type', jstr('enum')],\n ['values', { kind: 'JArray', items: s.values.map(jstr) }],\n ]);\n case 'anyString':\n return jobj([['$type', jstr('anyString')]]);\n }\n};\n\nconst decodeSpace = (path: string, jv: JsonAst): Result<AnswerSpace, ElicitationError> => {\n if (jv.kind !== 'JObject')\n return { ok: false, error: elErr('WRONG_TYPE', path, 'space must be a JSON object') };\n const tagJ = jv.fields.get('$type');\n if (tagJ === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', `${path}.$type`, \"space must carry a '$type' discriminator\"),\n };\n if (tagJ.kind !== 'JString')\n return { ok: false, error: elErr('WRONG_TYPE', `${path}.$type`, \"'$type' must be a string\") };\n const tag = tagJ.value;\n\n const strict = <T>(\n allowed: readonly string[],\n k: () => Result<T, ElicitationError>,\n ): Result<T, ElicitationError> => {\n const stray = firstUndeclared(['$type', ...allowed], jv.fields);\n if (stray !== undefined)\n return {\n ok: false,\n error: elErr(\n 'UNDECLARED_FIELD',\n `${path}.${stray}`,\n `undeclared key '${stray}' on a '${tag}' space`,\n ),\n };\n return k();\n };\n\n const intBound = (name: string): Result<number, ElicitationError> => {\n const v = jv.fields.get(name);\n if (v === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', `${path}.${name}`, `missing required field '${name}'`),\n };\n if (v.kind !== 'JNumber' || !Number.isInteger(v.value))\n return {\n ok: false,\n error: elErr('WRONG_TYPE', `${path}.${name}`, `'${name}' must be an integer`),\n };\n return { ok: true, value: v.value };\n };\n\n const numBound = (name: string): Result<number, ElicitationError> => {\n const v = jv.fields.get(name);\n if (v === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', `${path}.${name}`, `missing required field '${name}'`),\n };\n if (v.kind !== 'JNumber')\n return {\n ok: false,\n error: elErr('WRONG_TYPE', `${path}.${name}`, `'${name}' must be a number`),\n };\n return { ok: true, value: v.value };\n };\n\n const ordered = <T>(lo: number, hi: number, mk: () => T): Result<T, ElicitationError> =>\n hi < lo\n ? { ok: false, error: elErr('WRONG_TYPE', path, 'space bounds must satisfy min <= max') }\n : { ok: true, value: mk() };\n\n const range = (\n kind: 'intRange' | 'floatRange' | 'stringLen',\n bound: (name: string) => Result<number, ElicitationError>,\n ): Result<AnswerSpace, ElicitationError> =>\n strict(['max', 'min'], () => {\n const min = bound('min');\n if (!min.ok) return min;\n const max = bound('max');\n if (!max.ok) return max;\n return ordered(min.value, max.value, () => ({ kind, min: min.value, max: max.value }));\n });\n\n switch (tag) {\n case 'intRange':\n return range('intRange', intBound);\n case 'floatRange':\n return range('floatRange', numBound);\n case 'stringLen':\n return range('stringLen', intBound);\n case 'enum':\n return strict(['values'], () => {\n const v = jv.fields.get('values');\n if (v === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', `${path}.values`, \"missing required field 'values'\"),\n };\n if (v.kind !== 'JArray' || v.items.some((it) => it.kind !== 'JString'))\n return {\n ok: false,\n error: elErr('WRONG_TYPE', `${path}.values`, \"'values' must be an array of strings\"),\n };\n if (v.items.length === 0)\n return {\n ok: false,\n error: elErr('WRONG_TYPE', `${path}.values`, \"'values' must be a non-empty array\"),\n };\n return {\n ok: true,\n value: {\n kind: 'enum',\n values: v.items.map((it) => (it as { kind: 'JString'; value: string }).value),\n },\n };\n });\n case 'anyString':\n return strict([], () => ({ ok: true, value: { kind: 'anyString' } }));\n default:\n return {\n ok: false,\n error: elErr(\n 'UNKNOWN_DU_CASE',\n `${path}.$type`,\n `unknown value-space discriminator '${tag}'`,\n ),\n };\n }\n};\n\n// ─── Answer objects ──────────────────────────────────────────────────────────\n\nconst encodeAnswerAst = (answer: Answer): JsonAst =>\n jobj([...answer.entries()].map(([k, v]) => [k, typeof v === 'string' ? jstr(v) : jnum(v)]));\n\nconst decodeAnswerObject = (basePath: string, jv: JsonAst): Result<Answer, ElicitationError> => {\n if (jv.kind !== 'JObject')\n return { ok: false, error: elErr('WRONG_TYPE', basePath, 'answer must be a JSON object') };\n const out = new Map<string, AnswerValue>();\n for (const [k, v] of jv.fields) {\n if (v.kind === 'JString') out.set(k, v.value);\n else if (v.kind === 'JNumber') out.set(k, v.value);\n else\n return {\n ok: false,\n error: elErr(\n 'WRONG_TYPE',\n `${basePath}.${k}`,\n 'answer values must be JSON scalars (string or number)',\n ),\n };\n }\n return { ok: true, value: out };\n};\n\n// ─── Answer conformance (§18.4) ──────────────────────────────────────────────\n\n/**\n * Validate a typed answer against `contract`, reporting at `basePath`.\n * Deterministic fail-fast order: (1) undeclared keys, in Ordinal key order;\n * (2) per contract field, in declaration order — missing-required, then\n * JSON-type-vs-space, then in-space.\n */\nexport const validateAnswerAt = (\n basePath: string,\n contract: AnswerContract,\n answer: Answer,\n): Result<undefined, ElicitationError> => {\n const declared = new Set(contract.fields.map((f) => f.name));\n const stray = [...answer.keys()].sort().find((k) => !declared.has(k));\n if (stray !== undefined)\n return {\n ok: false,\n error: elErr(\n 'ANSWER_UNDECLARED_FIELD',\n `${basePath}.${stray}`,\n `'${stray}' is not a declared answer field`,\n ),\n };\n\n for (const field of contract.fields) {\n const path = `${basePath}.${field.name}`;\n const value = answer.get(field.name);\n if (value === undefined) {\n if (field.required)\n return {\n ok: false,\n error: elErr(\n 'ANSWER_MISSING_FIELD',\n path,\n `required answer field '${field.name}' is missing`,\n ),\n };\n continue;\n }\n\n const mismatch = (expected: string): Result<undefined, ElicitationError> => ({\n ok: false,\n error: elErr(\n 'ANSWER_TYPE_MISMATCH',\n path,\n `'${field.name}' must be ${expected} for its declared space`,\n ),\n });\n const outOfSpace = (detail: string): Result<undefined, ElicitationError> => ({\n ok: false,\n error: elErr(\n 'ANSWER_OUT_OF_SPACE',\n path,\n `'${field.name}' is outside its declared space: ${detail}`,\n ),\n });\n\n const s = field.space;\n switch (s.kind) {\n case 'intRange': {\n if (typeof value !== 'number' || !isInt32(value)) return mismatch('an integer');\n if (value < s.min || value > s.max)\n return outOfSpace(`${value} is not in [${s.min}, ${s.max}]`);\n break;\n }\n case 'floatRange': {\n if (typeof value !== 'number') return mismatch('a number');\n if (value < s.min || value > s.max)\n return outOfSpace(`${value} is not in [${s.min}, ${s.max}]`);\n break;\n }\n case 'stringLen': {\n if (typeof value !== 'string') return mismatch('a string');\n if (value.length < s.min || value.length > s.max)\n return outOfSpace('the string violates its declared space');\n break;\n }\n case 'enum': {\n if (typeof value !== 'string') return mismatch('a string');\n if (!s.values.includes(value)) return outOfSpace('the string violates its declared space');\n break;\n }\n case 'anyString': {\n if (typeof value !== 'string') return mismatch('a string');\n break;\n }\n }\n }\n return { ok: true, value: undefined };\n};\n\n/**\n * Validate an answer at the standard `$.answer` root — the gate a resolution\n * host runs before an `Answered` outcome reaches the asking agent.\n */\nexport const validateAnswer = (\n contract: AnswerContract,\n answer: Answer,\n): Result<undefined, ElicitationError> => validateAnswerAt('$.answer', contract, answer);\n\n// ─── Contract codec ──────────────────────────────────────────────────────────\n\nconst encodeField = (f: AnswerField): JsonAst =>\n jobj([\n ['name', jstr(f.name)],\n ['nodeId', jstr(f.nodeId)],\n ['required', { kind: 'JBool', value: f.required }],\n ['space', encodeSpace(f.space)],\n ['stateKey', jstr(f.stateKey)],\n ]);\n\nconst encodeContract = (c: AnswerContract): JsonAst =>\n jobj([['fields', { kind: 'JArray', items: c.fields.map(encodeField) }]]);\n\nconst decodeContract = (\n basePath: string,\n nodeExists: (nodeId: string) => boolean,\n jv: JsonAst,\n): Result<AnswerContract, ElicitationError> => {\n if (jv.kind !== 'JObject')\n return { ok: false, error: elErr('WRONG_TYPE', basePath, 'contract must be a JSON object') };\n const stray = firstUndeclared(['fields'], jv.fields);\n if (stray !== undefined)\n return {\n ok: false,\n error: elErr(\n 'UNDECLARED_FIELD',\n `${basePath}.${stray}`,\n `undeclared key '${stray}' on the contract`,\n ),\n };\n const fieldsJ = jv.fields.get('fields');\n if (fieldsJ === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', `${basePath}.fields`, \"missing required field 'fields'\"),\n };\n if (fieldsJ.kind !== 'JArray')\n return {\n ok: false,\n error: elErr('WRONG_TYPE', `${basePath}.fields`, \"'fields' must be an array\"),\n };\n if (fieldsJ.items.length === 0)\n return {\n ok: false,\n error: elErr(\n 'CONTRACT_EMPTY',\n `${basePath}.fields`,\n 'an answer contract must declare at least one field',\n ),\n };\n\n const out: AnswerField[] = [];\n const seen = new Set<string>();\n for (let i = 0; i < fieldsJ.items.length; i++) {\n const item = fieldsJ.items[i]!;\n const path = `${basePath}.fields[${i}]`;\n if (item.kind !== 'JObject')\n return { ok: false, error: elErr('WRONG_TYPE', path, 'answer field must be a JSON object') };\n const strayF = firstUndeclared(\n ['name', 'nodeId', 'required', 'space', 'stateKey'],\n item.fields,\n );\n if (strayF !== undefined)\n return {\n ok: false,\n error: elErr(\n 'UNDECLARED_FIELD',\n `${path}.${strayF}`,\n `undeclared key '${strayF}' on an answer field`,\n ),\n };\n const name = requireNonEmptyStr(`${path}.name`, 'name', item.fields);\n if (!name.ok) return name;\n const nodeId = requireNonEmptyStr(`${path}.nodeId`, 'nodeId', item.fields);\n if (!nodeId.ok) return nodeId;\n if (!nodeExists(nodeId.value))\n return {\n ok: false,\n error: elErr(\n 'CONTRACT_UNKNOWN_NODE',\n `${path}.nodeId`,\n `'${nodeId.value}' names no node in the elicitation tree`,\n ),\n };\n const requiredJ = item.fields.get('required');\n if (requiredJ === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', `${path}.required`, \"missing required field 'required'\"),\n };\n if (requiredJ.kind !== 'JBool')\n return {\n ok: false,\n error: elErr('WRONG_TYPE', `${path}.required`, \"'required' must be a boolean\"),\n };\n const spaceJ = item.fields.get('space');\n if (spaceJ === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', `${path}.space`, \"missing required field 'space'\"),\n };\n const space = decodeSpace(`${path}.space`, spaceJ);\n if (!space.ok) return space;\n const stateKey = requireNonEmptyStr(`${path}.stateKey`, 'stateKey', item.fields);\n if (!stateKey.ok) return stateKey;\n if (seen.has(name.value))\n return {\n ok: false,\n error: elErr(\n 'CONTRACT_DUPLICATE_FIELD',\n `${path}.name`,\n `duplicate answer field name '${name.value}'`,\n ),\n };\n seen.add(name.value);\n out.push({\n name: name.value,\n nodeId: nodeId.value,\n stateKey: stateKey.value,\n space: space.value,\n required: requiredJ.value,\n });\n }\n return { ok: true, value: { fields: out } };\n};\n\n// ─── Envelope codec ──────────────────────────────────────────────────────────\n\n/**\n * Encode an elicitation envelope to canonical wire bytes. Fails only when the\n * tree is not wire-representable.\n */\nexport const encodeElicitation = (env: ElicitationEnvelope): Result<string, ElicitationError> => {\n const treeAst = parse(encodeNode(env.tree));\n if (!treeAst.ok)\n return {\n ok: false,\n error: elErr(\n 'WRONG_TYPE',\n '$.tree',\n `tree is not wire-representable: ${treeAst.error.message}`,\n ),\n };\n const entries: (readonly [string, JsonAst])[] = [\n [ELICITATION_KEY, jstr(ELICITATION_VERSION)],\n ['contract', encodeContract(env.contract)],\n ];\n if (env.defaultAnswer !== undefined)\n entries.push(['default', encodeAnswerAst(env.defaultAnswer)]);\n entries.push(['id', jstr(env.id)]);\n if (env.timeoutMs !== undefined) entries.push(['timeoutMs', jnum(env.timeoutMs)]);\n entries.push(['tree', treeAst.value]);\n return { ok: true, value: renderAstCanonical(jobj(entries)) };\n};\n\n/**\n * Decode + validate an elicitation envelope (fail-fast, §18.4 order): stray\n * keys → version tag → id → tree (standard node decode, errors re-rooted\n * under `$.tree`) → contract (structure, duplicates, node membership) →\n * timeoutMs → default conformance.\n */\nexport const decodeElicitation = (json: string): Result<ElicitationEnvelope, ElicitationError> => {\n const parsed = parse(json);\n if (!parsed.ok)\n return {\n ok: false,\n error: elErr('INVALID_JSON', '$', `input is not valid JSON: ${parsed.error.message}`),\n };\n const root = parsed.value;\n if (root.kind !== 'JObject')\n return {\n ok: false,\n error: elErr('WRONG_TYPE', '$', 'elicitation envelope must be a JSON object'),\n };\n\n const stray = firstUndeclared(\n [ELICITATION_KEY, 'contract', 'default', 'id', 'timeoutMs', 'tree'],\n root.fields,\n );\n if (stray !== undefined)\n return {\n ok: false,\n error: elErr(\n 'UNDECLARED_FIELD',\n `$.${stray}`,\n `undeclared key '${stray}' on the elicitation envelope`,\n ),\n };\n\n const versionJ = root.fields.get(ELICITATION_KEY);\n if (versionJ === undefined)\n return {\n ok: false,\n error: elErr(\n 'MISSING_FIELD',\n `$.${ELICITATION_KEY}`,\n `missing required field '${ELICITATION_KEY}'`,\n ),\n };\n if (versionJ.kind !== 'JString')\n return {\n ok: false,\n error: elErr('WRONG_TYPE', `$.${ELICITATION_KEY}`, `'${ELICITATION_KEY}' must be a string`),\n };\n if (versionJ.value !== ELICITATION_VERSION)\n return {\n ok: false,\n error: elErr(\n 'UNSUPPORTED_VERSION',\n `$.${ELICITATION_KEY}`,\n `unsupported elicitation format version '${versionJ.value}' (this codec accepts '${ELICITATION_VERSION}')`,\n ),\n };\n\n const id = requireNonEmptyStr('$.id', 'id', root.fields);\n if (!id.ok) return id;\n\n const treeJ = root.fields.get('tree');\n if (treeJ === undefined)\n return { ok: false, error: elErr('MISSING_FIELD', '$.tree', \"missing required field 'tree'\") };\n const tree = decodeNode(renderAstCanonical(treeJ));\n if (!tree.ok) return { ok: false, error: rePath('$.tree', tree.error) };\n\n const ids = new Set(allNodeIds(tree.value));\n const contractJ = root.fields.get('contract');\n if (contractJ === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', '$.contract', \"missing required field 'contract'\"),\n };\n const contract = decodeContract('$.contract', (nodeId) => ids.has(nodeId), contractJ);\n if (!contract.ok) return contract;\n\n let timeoutMs: number | undefined;\n const timeoutJ = root.fields.get('timeoutMs');\n if (timeoutJ !== undefined) {\n if (timeoutJ.kind !== 'JNumber' || !Number.isInteger(timeoutJ.value) || timeoutJ.value < 1)\n return {\n ok: false,\n error: elErr('WRONG_TYPE', '$.timeoutMs', \"'timeoutMs' must be an integer >= 1\"),\n };\n timeoutMs = timeoutJ.value;\n }\n\n let defaultAnswer: Answer | undefined;\n const defaultJ = root.fields.get('default');\n if (defaultJ !== undefined) {\n const answer = decodeAnswerObject('$.default', defaultJ);\n if (!answer.ok) return answer;\n const conform = validateAnswerAt('$.default', contract.value, answer.value);\n if (!conform.ok)\n return {\n ok: false,\n error: elErr(\n 'DEFAULT_NONCONFORMANT',\n conform.error.path,\n `default answer is non-conformant (${conform.error.code}): ${conform.error.message}`,\n ),\n };\n defaultAnswer = answer.value;\n }\n\n return {\n ok: true,\n value: {\n id: id.value,\n tree: tree.value,\n contract: contract.value,\n ...(timeoutMs !== undefined ? { timeoutMs } : {}),\n ...(defaultAnswer !== undefined ? { defaultAnswer } : {}),\n },\n };\n};\n\n// ─── Outcome codec ───────────────────────────────────────────────────────────\n\n/** Encode an outcome to canonical wire bytes. Total — no embedded tree. */\nexport const encodeElicitationOutcome = (env: ElicitationOutcomeEnvelope): string => {\n const o = env.outcome;\n const entries: (readonly [string, JsonAst])[] = [['$type', jstr(o.kind)]];\n if (o.kind === 'Answered') entries.push(['answer', encodeAnswerAst(o.answer)]);\n if (o.kind === 'Superseded' && o.by !== undefined) entries.push(['by', jstr(o.by)]);\n entries.push(['elicitationId', jstr(env.elicitationId)]);\n return renderAstCanonical(jobj(entries));\n};\n\n/**\n * Decode an outcome envelope. Contract conformance of an `Answered` answer is\n * NOT checked here (the outcome does not carry the contract) — a resolution\n * host pairs the outcome with its pending elicitation and runs\n * `validateAnswer` before the answer reaches the asking agent (§18.4).\n */\nexport const decodeElicitationOutcome = (\n json: string,\n): Result<ElicitationOutcomeEnvelope, ElicitationError> => {\n const parsed = parse(json);\n if (!parsed.ok)\n return {\n ok: false,\n error: elErr('INVALID_JSON', '$', `input is not valid JSON: ${parsed.error.message}`),\n };\n const root = parsed.value;\n if (root.kind !== 'JObject')\n return { ok: false, error: elErr('WRONG_TYPE', '$', 'outcome must be a JSON object') };\n\n const tagJ = root.fields.get('$type');\n if (tagJ === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', '$.$type', \"outcome must carry a '$type' discriminator\"),\n };\n if (tagJ.kind !== 'JString')\n return { ok: false, error: elErr('WRONG_TYPE', '$.$type', \"'$type' must be a string\") };\n const tag = tagJ.value;\n\n const strict = (allowed: readonly string[]): ElicitationError | undefined => {\n const stray = firstUndeclared(['$type', 'elicitationId', ...allowed], root.fields);\n return stray === undefined\n ? undefined\n : elErr('UNDECLARED_FIELD', `$.${stray}`, `undeclared key '${stray}' on a '${tag}' outcome`);\n };\n\n const withId = (\n allowed: readonly string[],\n mk: (id: string) => Result<ElicitationOutcomeEnvelope, ElicitationError>,\n ): Result<ElicitationOutcomeEnvelope, ElicitationError> => {\n const strayErr = strict(allowed);\n if (strayErr !== undefined) return { ok: false, error: strayErr };\n const id = requireNonEmptyStr('$.elicitationId', 'elicitationId', root.fields);\n if (!id.ok) return id;\n return mk(id.value);\n };\n\n switch (tag) {\n case 'Answered':\n return withId(['answer'], (id) => {\n const answerJ = root.fields.get('answer');\n if (answerJ === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', '$.answer', \"missing required field 'answer'\"),\n };\n const answer = decodeAnswerObject('$.answer', answerJ);\n if (!answer.ok) return answer;\n return {\n ok: true,\n value: { elicitationId: id, outcome: { kind: 'Answered', answer: answer.value } },\n };\n });\n case 'Declined':\n return withId([], (id) => ({\n ok: true,\n value: { elicitationId: id, outcome: { kind: 'Declined' } },\n }));\n case 'TimedOut':\n return withId([], (id) => ({\n ok: true,\n value: { elicitationId: id, outcome: { kind: 'TimedOut' } },\n }));\n case 'Superseded':\n return withId(['by'], (id) => {\n const byJ = root.fields.get('by');\n if (byJ === undefined)\n return {\n ok: true,\n value: { elicitationId: id, outcome: { kind: 'Superseded' } },\n };\n if (byJ.kind !== 'JString' || byJ.value === '')\n return {\n ok: false,\n error: elErr('WRONG_TYPE', '$.by', \"'by' must be a non-empty string\"),\n };\n return {\n ok: true,\n value: { elicitationId: id, outcome: { kind: 'Superseded', by: byJ.value } },\n };\n });\n default:\n return {\n ok: false,\n error: elErr('UNKNOWN_DU_CASE', '$.$type', `unknown outcome discriminator '${tag}'`),\n };\n }\n};\n\n// ─── Answer-conformance document (§18.4, the fixture-harness operation) ──────\n\n/**\n * Validate a `{\"answer\": {…}, \"contract\": {…}}` conformance document — the\n * operation the `elicitation-answer-accept` / `elicitation-answer-reject`\n * corpus families drive. The document carries no tree, so the\n * `CONTRACT_UNKNOWN_NODE` probe does not apply here.\n */\nexport const validateAnswerDocument = (json: string): Result<undefined, ElicitationError> => {\n const parsed = parse(json);\n if (!parsed.ok)\n return {\n ok: false,\n error: elErr('INVALID_JSON', '$', `input is not valid JSON: ${parsed.error.message}`),\n };\n const root = parsed.value;\n if (root.kind !== 'JObject')\n return {\n ok: false,\n error: elErr('WRONG_TYPE', '$', 'answer-conformance document must be a JSON object'),\n };\n const stray = firstUndeclared(['answer', 'contract'], root.fields);\n if (stray !== undefined)\n return {\n ok: false,\n error: elErr(\n 'UNDECLARED_FIELD',\n `$.${stray}`,\n `undeclared key '${stray}' on an answer-conformance document`,\n ),\n };\n const contractJ = root.fields.get('contract');\n if (contractJ === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', '$.contract', \"missing required field 'contract'\"),\n };\n const contract = decodeContract('$.contract', () => true, contractJ);\n if (!contract.ok) return contract;\n const answerJ = root.fields.get('answer');\n if (answerJ === undefined)\n return {\n ok: false,\n error: elErr('MISSING_FIELD', '$.answer', \"missing required field 'answer'\"),\n };\n const answer = decodeAnswerObject('$.answer', answerJ);\n if (!answer.ok) return answer;\n return validateAnswerAt('$.answer', contract.value, answer.value);\n};\n"]}