{"version":3,"sources":["../src/core/http-headers.ts","../src/core/runtime-types.ts","../src/core/json-value.ts","../src/provider/provider-settings-metadata.ts","../src/provider/provider-settings-records.ts","../src/provider/provider-settings.ts","../src/provider/provider-settings-fetch.ts","../src/provider/provider-settings-urls.ts","../src/core/reasoning.ts","../src/provider/friendli/reasoning.ts","../src/provider/friendli/friendli.ts"],"names":["isJSONObject","provider","createOpenAICompatible","wrapLanguageModel"],"mappings":";;;;;;;;;AAAA,IAAM,wBAAA,GAA2B,+BAAA;AAE1B,SAAS,sBAAsB,KAAA,EAAwB;AAC5D,EAAA,OAAO,KAAA,CAAM,MAAA,IAAU,GAAA,IAAO,wBAAA,CAAyB,KAAK,KAAK,CAAA;AACnE;AAEO,SAAS,mCAAmC,KAAA,EAAwB;AACzE,EAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,KAAA,CAAM,MAAA,EAAQ,SAAS,CAAA,EAAG;AACpD,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,UAAA,CAAW,KAAK,CAAA;AACnC,IAAA,IAAI,QAAQ,CAAA,IAAM,IAAA,IAAQ,MAAM,IAAA,IAAQ,EAAA,IAAO,SAAS,GAAA,EAAK;AAC3D,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,OAAO,KAAA;AACT;AAEO,SAAS,wBAAA,CACd,OACA,OAAA,EACsB;AACtB,EAAA,MAAM,OAAiB,EAAC;AACxB,EAAA,IAAI,OAAA,GAAU,CAAA;AACd,EAAA,KAAA,MAAW,OAAO,KAAA,EAAO;AACvB,IAAA,IAAI,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,GAAG,CAAA,EAAG;AAC7B,MAAA,OAAA,IAAW,CAAA;AACX,MAAA,IAAI,UAAU,OAAA,EAAS;AACrB,QAAA;AAAA,MACF;AACA,MAAA,IAAA,CAAK,KAAK,GAAG,CAAA;AAAA,IACf,CAAA,MAAO;AACL,MAAA,OAAA,IAAW,CAAA;AACX,MAAA,IAAI,UAAU,OAAA,EAAS;AACrB,QAAA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,IAAA;AACT;;;ACrC4B,MAAA,CAAO,wBAAA;AAAA,EACjC,MAAA,CAAO,cAAA,CAAe,UAAA,CAAW,SAAS,CAAA;AAAA,EAC1C,MAAA,CAAO;AACT,CAAA,EAAG;AAGI,SAAS,sBAAsB,KAAA,EAAyB;AAC7D,EAAA,IACE,EACG,OAAO,KAAA,KAAU,QAAA,IAAY,UAAU,IAAA,IACxC,OAAO,UAAU,UAAA,CAAA,EAEnB;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI;AACF,IAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,IAAA;AAAA,MACrC,KAAA;AAAA,MACA,MAAM,KAAA,CAAA;AAAA,MACN,MAAM,KAAA;AAAA,KACR;AACA,IAAA,OAAA,CAAQ,UAAU,IAAA,CAAK,IAAA;AAAA,MACrB,OAAA;AAAA,MACA,MAAM,KAAA,CAAA;AAAA,MACN,MAAM,KAAA;AAAA,KACR;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,KAAA;AAAA,EACT;AACF;AAGO,SAAS,2BAAA,CACd,OACA,IAAA,EACM;AACN,EAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,IAAA,IAAI;AACF,MAAA,MAAM,UAAA,GAAa,MAAA,CAAO,wBAAA,CAAyB,KAAA,EAAO,GAAG,CAAA;AAC7D,MAAA,IAAI,UAAA,KAAe,KAAA,CAAA,IAAa,OAAA,IAAW,UAAA,EAAY;AACrD,QAAA,qBAAA,CAAsB,WAAW,KAAK,CAAA;AAAA,MACxC;AAAA,IACF,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF;AACF;AAGO,SAAS,sBACd,KAAA,EACwB;AACxB,EAAA,IAAI,OAAA,GAAU,IAAA;AACd,EAAA,MAAM,QAAA,GAAW,IAAI,OAAA,CAAW,CAAC,SAAS,MAAA,KAAW;AACnD,IAAA,IAAI;AACF,MAAA,OAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,IAAA,CAAK,KAAA,EAAO,SAAS,MAAM,CAAA;AAAA,IACpD,CAAA,CAAA,MAAQ;AACN,MAAA,OAAA,GAAU,KAAA;AAAA,IACZ;AAAA,EACF,CAAC,CAAA;AACD,EAAA,OAAO,UAAU,QAAA,GAAW,MAAA;AAC9B;AAGO,SAAS,qBAAA,CACd,OACA,YAAA,EACY;AACZ,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AACtC,IAAA,IAAI;AACF,MAAA,OAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,IAAA,CAAK,KAAA,EAAO,SAAS,MAAM,CAAA;AAAA,IACpD,SAAS,KAAA,EAAO;AACd,MAAA,MAAA,CAAO,YAAA,CAAa,KAAK,CAAC,CAAA;AAAA,IAC5B;AAAA,EACF,CAAC,CAAA;AACH;;;ACtEA,IAAM,cAAA,GAAiB,EAAA;AACvB,IAAM,cAAA,GAAiB,GAAA;AACvB,IAAM,oBAAA,GAAuB,IAAA;AAC7B,IAAM,oBAAA,GAAuB,GAAA;AAC7B,IAAM,mBAAA,GAAsB,OAAA;AAkB5B,IAAM,mBAAA,GAAN,cAAkC,KAAA,CAAM;AAAC,CAAA;AAEzC,SAAS,sBAAsB,KAAA,EAAwB;AACrD,EAAA,MAAM,SAAA,GAAY,MAAA,CAAO,cAAA,CAAe,KAAK,CAAA;AAC7C,EAAA,OAAO,SAAA,KAAc,IAAA,IAAQ,MAAA,CAAO,cAAA,CAAe,SAAS,CAAA,KAAM,IAAA;AACpE;AAEA,SAAS,cAAA,CACP,KAAA,EACA,KAAA,EACA,OAAA,EACW;AACX,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,GAAA,CAAI,KAAA,EAAO,QAAQ,CAAA;AAC1C,EAAA,IACE,CAAC,OAAO,aAAA,CAAc,MAAM,KAC5B,MAAA,GAAS,CAAA,IACT,SAAS,oBAAA,EACT;AACA,IAAA,MAAM,IAAI,MAAM,gCAAgC,CAAA;AAAA,EAClD;AACA,EAAA,2BAAA;AAAA,IACE,KAAA;AAAA,IACA,KAAA,CAAM,KAAK,EAAE,MAAA,IAAU,CAAC,CAAA,EAAG,UAAU,KAAK;AAAA,GAC5C;AACA,EAAA,MAAM,QAAA,GAAW,IAAI,KAAA,CAAe,MAAM,CAAA;AAC1C,EAAA,IAAI,YAAA;AACJ,EAAA,KAAA,IAAS,KAAA,GAAQ,CAAA,EAAG,KAAA,GAAQ,MAAA,EAAQ,SAAS,CAAA,EAAG;AAC9C,IAAA,IAAI,CAAC,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,KAAK,CAAA,EAAG;AAChC,MAAA,MAAM,IAAI,MAAM,gCAAgC,CAAA;AAAA,IAClD;AACA,IAAA,IAAI;AACF,MAAA,QAAA,CAAS,KAAK,CAAA,GAAI,SAAA;AAAA,QAChB,OAAA,CAAQ,GAAA,CAAI,KAAA,EAAO,KAAK,CAAA;AAAA,QACxB,KAAA,GAAQ,CAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,IAAI,EAAE,iBAAiB,mBAAA,CAAA,EAAsB;AAC3C,QAAA,MAAM,KAAA;AAAA,MACR;AACA,MAAA,YAAA,KAAiB,KAAA;AAAA,IACnB;AAAA,EACF;AACA,EAAA,IAAI,iBAAiB,MAAA,EAAW;AAC9B,IAAA,MAAM,YAAA;AAAA,EACR;AACA,EAAA,OAAO,QAAA;AACT;AAEA,SAAS,eAAA,CACP,KAAA,EACA,KAAA,EACA,OAAA,EACyB;AACzB,EAAA,IAAI,CAAC,qBAAA,CAAsB,KAAK,CAAA,EAAG;AACjC,IAAA,MAAM,IAAI,MAAM,oDAAoD,CAAA;AAAA,EACtE;AACA,EAAA,MAAM,IAAA,GAAO,wBAAA,CAAyB,KAAA,EAAO,oBAAoB,CAAA;AACjE,EAAA,IAAI,SAAS,MAAA,EAAW;AACtB,IAAA,MAAM,IAAI,MAAM,uBAAuB,CAAA;AAAA,EACzC;AACA,EAAA,2BAAA,CAA4B,OAAO,IAAI,CAAA;AACvC,EAAA,MAAM,WAAoC,EAAC;AAC3C,EAAA,IAAI,YAAA;AACJ,EAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,IAAA,OAAA,CAAQ,cAAc,GAAA,CAAI,MAAA;AAC1B,IAAA,IAAI,OAAA,CAAQ,UAAA,GAAa,OAAA,CAAQ,iBAAA,EAAmB;AAClD,MAAA,MAAM,IAAI,MAAM,4BAA4B,CAAA;AAAA,IAC9C;AACA,IAAA,IAAI;AACF,MAAA,MAAA,CAAO,cAAA,CAAe,UAAU,GAAA,EAAK;AAAA,QACnC,YAAA,EAAc,IAAA;AAAA,QACd,UAAA,EAAY,IAAA;AAAA,QACZ,KAAA,EAAO,UAAU,OAAA,CAAQ,GAAA,CAAI,OAAO,GAAG,CAAA,EAAG,KAAA,GAAQ,CAAA,EAAG,OAAO,CAAA;AAAA,QAC5D,QAAA,EAAU;AAAA,OACX,CAAA;AAAA,IACH,SAAS,KAAA,EAAO;AACd,MAAA,IAAI,EAAE,iBAAiB,mBAAA,CAAA,EAAsB;AAC3C,QAAA,MAAM,KAAA;AAAA,MACR;AACA,MAAA,YAAA,KAAiB,KAAA;AAAA,IACnB;AAAA,EACF;AACA,EAAA,IAAI,iBAAiB,MAAA,EAAW;AAC9B,IAAA,MAAM,YAAA;AAAA,EACR;AACA,EAAA,OAAO,QAAA;AACT;AAEA,SAAS,SAAA,CACP,KAAA,EACA,KAAA,EACA,OAAA,EACS;AACT,EAAA,IAAI,qBAAA,CAAsB,KAAK,CAAA,EAAG;AAChC,IAAA,MAAM,IAAI,oBAAoB,8BAA8B,CAAA;AAAA,EAC9D;AACA,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,OAAO,KAAA,KAAU,SAAA,EAAW;AAChD,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,OAAA,CAAQ,cAAc,KAAA,CAAM,MAAA;AAC5B,IAAA,IAAI,OAAA,CAAQ,UAAA,GAAa,OAAA,CAAQ,iBAAA,EAAmB;AAClD,MAAA,MAAM,IAAI,MAAM,+BAA+B,CAAA;AAAA,IACjD;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,KAAK,CAAA,EAAG;AAC3B,MAAA,MAAM,IAAI,MAAM,wBAAwB,CAAA;AAAA,IAC1C;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,GAAQ,cAAA,EAAgB;AACvD,IAAA,MAAM,IAAI,MAAM,wCAAwC,CAAA;AAAA,EAC1D;AACA,EAAA,OAAA,CAAQ,KAAA,IAAS,CAAA;AACjB,EAAA,IAAI,OAAA,CAAQ,QAAQ,OAAA,CAAQ,OAAA,IAAW,QAAQ,MAAA,CAAO,GAAA,CAAI,KAAK,CAAA,EAAG;AAChE,IAAA,MAAM,IAAI,MAAM,gCAAgC,CAAA;AAAA,EAClD;AACA,EAAA,OAAA,CAAQ,MAAA,CAAO,IAAI,KAAK,CAAA;AACxB,EAAA,IAAI;AACF,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,MAAA,OAAO,cAAA,CAAe,KAAA,EAAO,KAAA,EAAO,OAAO,CAAA;AAAA,IAC7C;AACA,IAAA,OAAO,eAAA,CAAgB,KAAA,EAAO,KAAA,EAAO,OAAO,CAAA;AAAA,EAC9C,CAAA,SAAE;AACA,IAAA,OAAA,CAAQ,MAAA,CAAO,OAAO,KAAK,CAAA;AAAA,EAC7B;AACF;AAGO,SAAS,iBAAA,CACd,KAAA,EACA,iBAAA,GAAoB,cAAA,EACpB,oBAAoB,mBAAA,EACN;AACd,EAAA,IAAI;AACF,IAAA,MAAM,OAAA,GACJ,MAAA,CAAO,aAAA,CAAc,iBAAiB,CAAA,IAAK,iBAAA,IAAqB,CAAA,GAC5D,IAAA,CAAK,GAAA,CAAI,cAAA,EAAgB,iBAAiB,CAAA,GAC1C,CAAA;AACN,IAAA,MAAM,UAAA,GACJ,MAAA,CAAO,aAAA,CAAc,iBAAiB,CAAA,IAAK,iBAAA,IAAqB,CAAA,GAC5D,IAAA,CAAK,GAAA,CAAI,mBAAA,EAAqB,iBAAiB,CAAA,GAC/C,CAAA;AACN,IAAA,MAAM,OAAA,GAAU;AAAA,MACd,MAAA,sBAAY,OAAA,EAAgB;AAAA,MAC5B,UAAA,EAAY,CAAA;AAAA,MACZ,OAAA;AAAA,MACA,iBAAA,EAAmB,UAAA;AAAA,MACnB,KAAA,EAAO;AAAA,KACT;AACA,IAAA,MAAM,QAAA,GAAW,SAAA,CAAU,KAAA,EAAO,CAAA,EAAG,OAAO,CAAA;AAC5C,IAAA,OAAO;AAAA,MACL,YAAY,OAAA,CAAQ,UAAA;AAAA,MACpB,YAAY,OAAA,CAAQ,KAAA;AAAA,MACpB,KAAA,EAAO,IAAA;AAAA,MACP,KAAA,EAAO;AAAA,KACT;AAAA,EACF,SAAS,KAAA,EAAO;AACd,IAAA,IAAI,iBAAiB,mBAAA,EAAqB;AACxC,MAAA,OAAO,EAAE,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,KAAA,EAAM;AAAA,IACrC;AACA,IAAA,OAAO,EAAE,OAAO,KAAA,EAAM;AAAA,EACxB;AACF;;;ACzLO,IAAM,8BAAA,GAAiC;AAAA,EAC5C,QAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,mBAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAA;AACO,IAAM,4BAAA,GAA+B,IAAA;AACrC,IAAM,kCAAA,GAAqC,IAAA;AAC3C,IAAM,uCAAA,GAA0C,KAAA;AAChD,IAAM,qCAAA,GAAwC,OAAA;AAC9C,IAAM,kCAAA,GAAqC,GAAA;AAC3C,IAAM,wCAAA,GAA2C,GAAA;AACjD,IAAM,+BAAA,GAAkC,IAAA;AACxC,IAAM,qCAAA,GAAwC,IAAA;AAC9C,IAAM,yCAAA,GAA4C,OAAA;AAClD,IAAM,gBAAA,GAAmB;AAAA,EAC9B,WAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA;AACO,IAAM,iBAAA,GAAoB,CAAC,WAAA,EAAa,MAAA,EAAQ,OAAO,CAAA;AAEvD,SAAS,sBAAA,CACd,OACA,QAAA,EACQ;AACR,EAAA,IACE,qBAAA,CAAsB,KAAK,CAAA,IAC3B,OAAO,KAAA,KAAU,QAAA,IACjB,KAAA,CAAM,MAAA,KAAW,CAAA,IACjB,KAAA,CAAM,MAAA,GAAS,4BAAA,EACf;AACA,IAAA,MAAM,IAAI,SAAA;AAAA,MACR,CAAA,EAAG,QAAQ,CAAA,2DAAA,EAA8D,4BAA4B,CAAA,WAAA;AAAA,KACvG;AAAA,EACF;AACA,EAAA,OAAO,KAAA;AACT;AAEO,SAAS,gCAAA,CACd,OACA,QAAA,EAC+B;AAC/B,EAAA,IAAI,UAAU,MAAA,EAAW;AACvB,IAAA;AAAA,EACF;AACA,EAAA,2BAAA,CAA4B,KAAA,EAAO;AAAA,IACjC,uBAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAA,MAAM,qBAAA,GAAwB,OAAA,CAAQ,GAAA,CAAI,KAAA,EAAO,uBAAuB,CAAA;AACxE,EAAA,MAAM,eAAA,GAAkB,OAAA,CAAQ,GAAA,CAAI,KAAA,EAAO,iBAAiB,CAAA;AAC5D,EAAA,MAAM,WAAA,GAAc,sBAAsB,qBAAqB,CAAA;AAC/D,EAAA,MAAM,YAAA,GAAe,sBAAsB,eAAe,CAAA;AAC1D,EAAA,IACE,eACA,YAAA,IACA,OAAO,0BAA0B,UAAA,IACjC,OAAO,oBAAoB,UAAA,EAC3B;AACA,IAAA,MAAM,IAAI,SAAA;AAAA,MACR,GAAG,QAAQ,CAAA,wDAAA;AAAA,KACb;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,MAAM,gBAAgB,IAAA,EAAM;AAC1B,MAAA,IAAI;AACF,QAAA,MAAM,UAAA,GAAa,4BAAA,CAA6B,IAAA,CAAK,UAAU,CAAA;AAC/D,QAAA,IAAI,eAAe,KAAA,CAAA,EAAW;AAC5B,UAAA;AAAA,QACF;AACA,QAAA,MAAM,MAAA,GAAS,QAAQ,KAAA,CAAM,eAAA,EAAiB,OAAO,CAAC,EAAE,UAAA,EAAY,CAAC,CAAA;AACrE,QAAA,MAAM,OAAA,GAAU,qBAAA;AAAA,UAGd,MAAA;AAAA,UACA,CAAC,UACC,IAAI,SAAA;AAAA,YACF,GAAG,QAAQ,CAAA,gEAAA,CAAA;AAAA,YACX,EAAE,KAAA;AAAM;AACV,SACJ;AACA,QAAA,OAAO,wBAAA,CAAyB,MAAM,OAAO,CAAA;AAAA,MAC/C,CAAA,CAAA,MAAQ;AACN,QAAA;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA,qBAAA,GAAwB;AACtB,MAAA,IAAI,MAAA;AACJ,MAAA,IAAI;AACF,QAAA,MAAA,GAAS,OAAA,CAAQ,KAAA,CAAM,qBAAA,EAAuB,KAAA,EAAO,EAAE,CAAA;AAAA,MACzD,CAAA,CAAA,MAAQ;AACN,QAAA,OAAO,4BAAA,EAA6B;AAAA,MACtC;AACA,MAAA,IAAI,qBAAA,CAAsB,MAAM,CAAA,EAAG;AACjC,QAAA,OAAO,4BAAA,EAA6B;AAAA,MACtC;AACA,MAAA,IAAI,OAAO,MAAA,KAAW,QAAA,IAAY,MAAA,KAAW,IAAA,EAAM;AACjD,QAAA,OAAO,4BAAA,EAA6B;AAAA,MACtC;AACA,MAAA,2BAAA,CAA4B,MAAA,EAAQ,CAAC,eAAA,EAAiB,cAAc,CAAC,CAAA;AACrE,MAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,GAAA,CAAI,MAAA,EAAQ,eAAe,CAAA;AACzD,MAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,GAAA,CAAI,MAAA,EAAQ,cAAc,CAAA;AACvD,MAAA,MAAM,UAAA,GAAa,sBAAsB,aAAa,CAAA;AACtD,MAAA,MAAM,YAAA,GAAe,sBAAsB,YAAY,CAAA;AACvD,MAAA,IACE,cACA,YAAA,IACA,OAAO,kBAAkB,UAAA,IACzB,OAAO,iBAAiB,UAAA,EACxB;AACA,QAAA,OAAO,4BAAA,EAA6B;AAAA,MACtC;AACA,MAAA,OAAO;AAAA,QACL,aAAa,WAAA,EAAa;AACxB,UAAA,IAAI;AACF,YAAA,MAAM,aAAA,GAAgB,6BAA6B,WAAW,CAAA;AAC9D,YAAA,IAAI,kBAAkB,KAAA,CAAA,EAAW;AAC/B,cAAA;AAAA,YACF;AACA,YAAA,qBAAA;AAAA,cACE,QAAQ,KAAA,CAAM,YAAA,EAAc,MAAA,EAAQ,CAAC,aAAa,CAAC;AAAA,aACrD;AAAA,UACF,CAAA,CAAA,MAAQ;AAAA,UAER;AAAA,QACF,CAAA;AAAA,QACA,aAAA,GAAgB;AACd,UAAA,IAAI;AACF,YAAA,MAAM,SAAS,OAAA,CAAQ,KAAA,CAAM,aAAA,EAAe,MAAA,EAAQ,EAAE,CAAA;AACtD,YAAA,OAAO,qBAAA,CAAsB,MAAM,CAAA,GAC/B,KAAA,CAAA,GACA,yBAAyB,MAAM,CAAA;AAAA,UACrC,CAAA,CAAA,MAAQ;AACN,YAAA;AAAA,UACF;AAAA,QACF;AAAA,OACF;AAAA,IACF;AAAA,GACF;AACF;AAEO,SAAS,4BAAA,GAEd;AACA,EAAA,OAAO;AAAA,IACL,eAAe,MAAM,MAAA;AAAA,IACrB,cAAc,MAAM;AAAA,GACtB;AACF;AAEO,SAAS,yBACd,KAAA,EACsC;AACtC,EAAA,IAAI,UAAU,MAAA,EAAW;AACvB,IAAA;AAAA,EACF;AACA,EAAA,MAAM,QAAA,GAAW,iBAAA,CAAkB,KAAA,EAAO,GAAA,EAAQ,OAAS,CAAA;AAC3D,EAAA,OAAO,SAAS,KAAA,IAASA,qBAAA,CAAa,SAAS,KAAK,CAAA,GAC/C,SAAS,KAAA,GACV,MAAA;AACN;AAEO,SAAS,6BACd,KAAA,EACqB;AACrB,EAAA,MAAM,QAAA,GAAW,iBAAA,CAAkB,KAAA,EAAO,GAAA,EAAQ,OAAS,CAAA;AAC3D,EAAA,OAAO,QAAA,CAAS,KAAA,GAAQ,QAAA,CAAS,KAAA,GAAQ,MAAA;AAC3C;;;AC5KO,SAAS,4BAAA,CACd,KAAA,EACA,QAAA,EACA,aAAA,EACA,SAAA,EACoC;AACpC,EAAA,IAAI,UAAU,MAAA,EAAW;AACvB,IAAA;AAAA,EACF;AACA,EAAA,IAAI,OAAO,UAAU,QAAA,IAAY,KAAA,KAAU,QAAQ,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACvE,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,aAAa,CAAA,kBAAA,CAAoB,CAAA;AAAA,EACtE;AACA,EAAA,MAAM,IAAA,GAAO,wBAAA;AAAA,IACX,KAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,SAAS,MAAA,EAAW;AACtB,IAAA,MAAM,IAAI,SAAA;AAAA,MACR,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,aAAa,yBAAyB,kCAAkC,CAAA,QAAA;AAAA,KACzF;AAAA,EACF;AACA,EAAA,2BAAA,CAA4B,OAAO,IAAI,CAAA;AACvC,EAAA,MAAM,UAA6C,EAAC;AACpD,EAAA,IAAI,UAAA,GAAa,KAAA;AACjB,EAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,IAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,GAAA,CAAI,KAAA,EAAO,GAAG,CAAA;AACnC,IAAA,IAAI,qBAAA,CAAsB,IAAI,CAAA,EAAG;AAC/B,MAAA,UAAA,GAAa,IAAA;AAAA,IACf;AACA,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAC,GAAA,EAAK,IAAI,CAAC,CAAA;AAAA,EAC1B;AACA,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,SAAS,CAAA,2BAAA,CAA6B,CAAA;AAAA,EAC3E;AACA,EAAA,MAAM,WAAmC,EAAC;AAC1C,EAAA,IAAI,eAAA,GAAkB,CAAA;AACtB,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,IAAI,CAAA,IAAK,OAAA,EAAS;AACjC,IAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,MAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,SAAS,CAAA,uBAAA,CAAyB,CAAA;AAAA,IACvE;AACA,IAAA,IAAI,IAAA,CAAK,SAAS,uCAAA,EAAyC;AACzD,MAAA,MAAM,IAAI,SAAA;AAAA,QACR,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,SAAS,gCAAgC,uCAAuC,CAAA,WAAA;AAAA,OACjG;AAAA,IACF;AACA,IAAA,eAAA,IAAmB,GAAA,CAAI,SAAS,IAAA,CAAK,MAAA;AACrC,IAAA,IAAI,kBAAkB,qCAAA,EAAuC;AAC3D,MAAA,MAAM,IAAI,SAAA;AAAA,QACR,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,aAAa,WAAW,qCAAqC,CAAA,qBAAA;AAAA,OAC9E;AAAA,IACF;AACA,IAAA,MAAA,CAAO,cAAA,CAAe,UAAU,GAAA,EAAK;AAAA,MACnC,YAAA,EAAc,IAAA;AAAA,MACd,UAAA,EAAY,IAAA;AAAA,MACZ,KAAA,EAAO,IAAA;AAAA,MACP,QAAA,EAAU;AAAA,KACX,CAAA;AAAA,EACH;AACA,EAAA,OAAO,QAAA;AACT;;;ACrDO,SAAS,uBAAA,CACd,QAAA,EACA,QAAA,EACA,cAAA,GAAoC,EAAC,EACT;AAC5B,EAAA,IAAI,qBAAA,CAAsB,QAAQ,CAAA,EAAG;AACnC,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,QAAQ,CAAA,6BAAA,CAA+B,CAAA;AAAA,EAChE;AACA,EAAA,IAAI,OAAO,QAAA,KAAa,QAAA,IAAY,QAAA,KAAa,IAAA,EAAM;AACrD,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,QAAQ,CAAA,2BAAA,CAA6B,CAAA;AAAA,EAC9D;AACA,EAAA,2BAAA,CAA4B,QAAA,EAAU;AAAA,IACpC,GAAG,8BAAA;AAAA,IACH,GAAG;AAAA,GACJ,CAAA;AACH;AAEO,SAAS,gCAAA,CACd,QACA,QAAA,EACM;AACN,EAAA,IAAI,YAAA,GAAe,KAAA;AACnB,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,IAAI,qBAAA,CAAsB,KAAK,CAAA,EAAG;AAChC,MAAA,YAAA,GAAe,IAAA;AAAA,IACjB;AAAA,EACF;AACA,EAAA,IAAI,YAAA,EAAc;AAChB,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,QAAQ,CAAA,6BAAA,CAA+B,CAAA;AAAA,EAChE;AACF;AAEO,SAAS,8BAAA,CACd,UACA,QAAA,EACM;AACN,EAAA,KAAA,MAAW,GAAA,IAAO,CAAC,QAAA,EAAU,SAAS,CAAA,EAAY;AAChD,IAAA,MAAM,KAAA,GAAQ,SAAS,GAAG,CAAA;AAC1B,IAAA,IACE,KAAA,KAAU,MAAA,KACT,OAAO,KAAA,KAAU,QAAA,IAAY,MAAM,MAAA,KAAW,CAAA,IAAK,KAAA,CAAM,MAAA,GAAS,IAAA,CAAA,EACnE;AACA,MAAA,MAAM,IAAI,SAAA;AAAA,QACR,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,GAAG,CAAA,mCAAA;AAAA,OACpB;AAAA,IACF;AAAA,EACF;AACA,EAAA,KAAA,MAAW,GAAA,IAAO,CAAC,cAAA,EAAgB,2BAA2B,CAAA,EAAY;AACxE,IAAA,MAAM,KAAA,GAAQ,SAAS,GAAG,CAAA;AAC1B,IAAA,IAAI,KAAA,KAAU,MAAA,IAAa,OAAO,KAAA,KAAU,SAAA,EAAW;AACrD,MAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,GAAG,CAAA,kBAAA,CAAoB,CAAA;AAAA,IAC5D;AAAA,EACF;AACA,EAAA,KAAA,MAAW,GAAA,IAAO,CAAC,cAAA,EAAgB,OAAO,CAAA,EAAY;AACpD,IAAA,MAAM,KAAA,GAAQ,SAAS,GAAG,CAAA;AAC1B,IAAA,IAAI,KAAA,KAAU,MAAA,IAAa,OAAO,KAAA,KAAU,UAAA,EAAY;AACtD,MAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,GAAG,CAAA,mBAAA,CAAqB,CAAA;AAAA,IAC7D;AAAA,EACF;AACA,EAAA,MAAM,oBAAoB,QAAA,CAAS,iBAAA;AACnC,EAAA,IACE,iBAAA,KAAsB,MAAA,KACrB,OAAO,iBAAA,KAAsB,QAAA,IAC5B,sBAAsB,IAAA,IACtB,KAAA,CAAM,OAAA,CAAQ,iBAAiB,CAAA,CAAA,EACjC;AACA,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,QAAQ,CAAA,oCAAA,CAAsC,CAAA;AAAA,EACvE;AACA,EAAA,MAAM,gBAAgB,QAAA,CAAS,aAAA;AAC/B,EAAA,IAAI,aAAA,KAAkB,MAAA,IAAa,OAAO,aAAA,KAAkB,UAAA,EAAY;AACtE,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,QAAQ,CAAA,iCAAA,CAAmC,CAAA;AAAA,EACpE;AACF;AAEO,SAAS,uBAAA,CACd,OACA,QAAA,EACoC;AACpC,EAAA,IAAI,UAAU,MAAA,EAAW;AACvB,IAAA;AAAA,EACF;AACA,EAAA,IAAI,OAAO,UAAU,QAAA,IAAY,KAAA,KAAU,QAAQ,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACvE,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,QAAQ,CAAA,0BAAA,CAA4B,CAAA;AAAA,EAC7D;AACA,EAAA,MAAM,IAAA,GAAO,wBAAA;AAAA,IACX,KAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,SAAS,MAAA,EAAW;AACtB,IAAA,MAAM,IAAI,SAAA;AAAA,MACR,CAAA,EAAG,QAAQ,CAAA,8BAAA,EAAiC,kCAAkC,CAAA,QAAA;AAAA,KAChF;AAAA,EACF;AACA,EAAA,2BAAA,CAA4B,OAAO,IAAI,CAAA;AACvC,EAAA,IAAI,IAAA,CAAK,KAAK,CAAC,GAAA,KAAQ,CAAC,qBAAA,CAAsB,GAAG,CAAC,CAAA,EAAG;AACnD,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,QAAQ,CAAA,wCAAA,CAA0C,CAAA;AAAA,EAC3E;AACA,EAAA,MAAM,UAA6C,EAAC;AACpD,EAAA,IAAI,UAAA,GAAa,KAAA;AACjB,EAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,IAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,GAAA,CAAI,KAAA,EAAO,GAAG,CAAA;AACnC,IAAA,IAAI,qBAAA,CAAsB,IAAI,CAAA,EAAG;AAC/B,MAAA,UAAA,GAAa,IAAA;AAAA,IACf;AACA,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAC,GAAA,EAAK,IAAI,CAAC,CAAA;AAAA,EAC1B;AACA,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,QAAQ,CAAA,kCAAA,CAAoC,CAAA;AAAA,EACrE;AACA,EAAA,MAAM,WAAmC,EAAC;AAC1C,EAAA,IAAI,eAAA,GAAkB,CAAA;AACtB,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,IAAI,CAAA,IAAK,OAAA,EAAS;AACjC,IAAA,IACE,OAAO,SAAS,QAAA,IAChB,IAAA,CAAK,SAAS,uCAAA,IACd,kCAAA,CAAmC,IAAI,CAAA,EACvC;AACA,MAAA,MAAM,IAAI,SAAA;AAAA,QACR,GAAG,QAAQ,CAAA,yCAAA;AAAA,OACb;AAAA,IACF;AACA,IAAA,eAAA,IAAmB,GAAA,CAAI,SAAS,IAAA,CAAK,MAAA;AACrC,IAAA,IAAI,kBAAkB,qCAAA,EAAuC;AAC3D,MAAA,MAAM,IAAI,SAAA;AAAA,QACR,CAAA,EAAG,QAAQ,CAAA,gBAAA,EAAmB,qCAAqC,CAAA,qBAAA;AAAA,OACrE;AAAA,IACF;AACA,IAAA,MAAA,CAAO,cAAA,CAAe,UAAU,GAAA,EAAK;AAAA,MACnC,YAAA,EAAc,IAAA;AAAA,MACd,UAAA,EAAY,IAAA;AAAA,MACZ,KAAA,EAAO,IAAA;AAAA,MACP,QAAA,EAAU;AAAA,KACX,CAAA;AAAA,EACH;AACA,EAAA,OAAO,QAAA;AACT;AAEO,SAAS,2BAAA,CACd,OACA,QAAA,EACoC;AACpC,EAAA,OAAO,4BAAA;AAAA,IACL,KAAA;AAAA,IACA,QAAA;AAAA,IACA,kBAAA;AAAA,IACA;AAAA,GACF;AACF;ACtJO,SAAS,2BAAA,CACd,KAAA,EACA,QAAA,EACA,QAAA,EACkD;AAClD,EAAA,IAAI,UAAU,MAAA,EAAW;AACvB,IAAA;AAAA,EACF;AACA,EAAA,OAAO,CAAC,KAAA,KAAU;AAChB,IAAA,MAAM,aAAA,GAAgB,6BAA6B,KAAK,CAAA;AACxD,IAAA,IAAI,kBAAkB,MAAA,EAAW;AAC/B,MAAA,MAAM,IAAI,SAAA;AAAA,QACR,GAAG,QAAQ,CAAA,wCAAA;AAAA,OACb;AAAA,IACF;AACA,IAAA,MAAM,SAAS,OAAA,CAAQ,KAAA,CAAM,OAAO,QAAA,EAAU,CAAC,aAAa,CAAC,CAAA;AAC7D,IAAA,IAAI,qBAAA,CAAsB,MAAM,CAAA,EAAG;AACjC,MAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,QAAQ,CAAA,uCAAA,CAAyC,CAAA;AAAA,IAC1E;AACA,IAAA,OAAO,qBAAA,CAAsB,QAAQ,QAAQ,CAAA;AAAA,EAC/C,CAAA;AACF;AAEO,SAAS,oBAAA,CACd,KAAA,EACA,QAAA,EACA,QAAA,EACqC;AACrC,EAAA,IAAI,UAAU,MAAA,EAAW;AACvB,IAAA;AAAA,EACF;AACA,EAAA,OAAO,CAAC,OAAO,IAAA,KAAS;AACtB,IAAA,IAAI,MAAA;AACJ,IAAA,IAAI;AACF,MAAA,MAAA,GAAS,QAAQ,KAAA,CAAM,KAAA,EAAO,UAAU,CAAC,KAAA,EAAO,IAAI,CAAC,CAAA;AAAA,IACvD,SAAS,KAAA,EAAO;AACd,MAAA,OAAO,OAAA,CAAQ,OAAO,KAAK,CAAA;AAAA,IAC7B;AACA,IAAA,MAAM,OAAA,GAAU,qBAAA;AAAA,MACd,MAAA;AAAA,MACA,CAAC,KAAA,KACC,IAAI,SAAA,CAAU,CAAA,EAAG,QAAQ,CAAA,oCAAA,CAAA,EAAwC;AAAA,QAC/D;AAAA,OACD;AAAA,KACL;AACA,IAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,CAAC,QAAA,KAAa;AAChC,MAAA,IAAI,OAAO,QAAA,KAAa,QAAA,IAAY,QAAA,KAAa,IAAA,EAAM;AACrD,QAAA,MAAM,IAAI,SAAA;AAAA,UACR,GAAG,QAAQ,CAAA,wCAAA;AAAA,SACb;AAAA,MACF;AACA,MAAA,OAAO,QAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA;AACF;AAEO,SAAS,qBAAA,CACd,OACAC,UAAA,EACsB;AACtB,EAAA,IAAI,OAAO,UAAU,QAAA,IAAY,KAAA,KAAU,QAAQ,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACvE,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAGA,UAAQ,CAAA,mCAAA,CAAqC,CAAA;AAAA,EACtE;AACA,EAAA,2BAAA,CAA4B,KAAA,EAAO,CAAC,aAAA,EAAe,cAAA,EAAgB,KAAK,CAAC,CAAA;AACzE,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,MAAM,CAAA,IAAK;AAAA,IAC1B,CAAC,eAAe,gBAAgB,CAAA;AAAA,IAChC,CAAC,gBAAgB,iBAAiB;AAAA,GACpC,EAAY;AACV,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,wBAAA,CAAyB,KAAA,EAAO,GAAG,CAAA;AAC7D,IAAA,IAAI,UAAA,KAAe,MAAA,IAAa,OAAA,IAAW,UAAA,EAAY;AACrD,MAAA,yBAAA,CAA0B,UAAA,CAAW,OAAO,MAAM,CAAA;AAAA,IACpD;AAAA,EACF;AACA,EAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,GAAA,CAAI,KAAA,EAAO,aAAa,CAAA;AACpD,EAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,GAAA,CAAI,KAAA,EAAO,cAAc,CAAA;AACtD,EAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,GAAA,CAAI,KAAA,EAAO,KAAK,CAAA;AACpC,EAAA,MAAM,UAAA,GAAa,sBAAsB,WAAW,CAAA;AACpD,EAAA,MAAM,WAAA,GAAc,sBAAsB,YAAY,CAAA;AACtD,EAAA,MAAM,QAAA,GAAW,sBAAsB,GAAG,CAAA;AAC1C,EAAA,IAAI,UAAA,IAAc,eAAe,QAAA,EAAU;AACzC,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAGA,UAAQ,CAAA,wCAAA,CAA0C,CAAA;AAAA,EAC3E;AACA,EAAA,MAAM,aAAA,GAAgB,sBAAA;AAAA,IACpB,WAAA;AAAA,IACA,gBAAA;AAAA,IACAA,UAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,cAAA,GAAiB,sBAAA;AAAA,IACrB,YAAA;AAAA,IACA,iBAAA;AAAA,IACAA,UAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,WAAA;AACJ,EAAA,IAAI,QAAQ,MAAA,EAAW;AACrB,IAAA,MAAM,QAAA,GAAW,iBAAA,CAAkB,GAAA,EAAK,GAAA,EAAQ,OAAS,CAAA;AACzD,IAAA,IAAI,EAAE,QAAA,CAAS,KAAA,IAASD,qBAAAA,CAAa,QAAA,CAAS,KAAK,CAAA,CAAA,EAAI;AACrD,MAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAGC,UAAQ,CAAA,sCAAA,CAAwC,CAAA;AAAA,IACzE;AACA,IAAA,WAAA,GAAc,QAAA,CAAS,KAAA;AAAA,EACzB;AACA,EAAA,OAAO;AAAA,IACL,WAAA,EAAa,aAAA;AAAA,IACb,YAAA,EAAc,cAAA;AAAA,IACd,GAAA,EAAK;AAAA,GACP;AACF;AAEO,SAAS,yBAAA,CACd,OACA,IAAA,EACM;AACN,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA,EAAM;AAC/C,IAAA,2BAAA,CAA4B,OAAO,IAAI,CAAA;AAAA,EACzC;AACF;AAEO,SAAS,sBAAA,CACd,KAAA,EACA,IAAA,EACA,QAAA,EACA,IAAA,EACoC;AACpC,EAAA,IAAI,OAAO,UAAU,QAAA,IAAY,KAAA,KAAU,QAAQ,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACvE,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,QAAQ,CAAA,cAAA,EAAiB,IAAI,CAAA,kBAAA,CAAoB,CAAA;AAAA,EAC1E;AACA,EAAA,2BAAA,CAA4B,OAAO,IAAI,CAAA;AACvC,EAAA,MAAM,WAA+C,EAAC;AACtD,EAAA,IAAI,UAAA,GAAa,KAAA;AACjB,EAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,IAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,GAAA,CAAI,KAAA,EAAO,GAAG,CAAA;AACnC,IAAA,IAAI,qBAAA,CAAsB,IAAI,CAAA,EAAG;AAC/B,MAAA,UAAA,GAAa,IAAA;AACb,MAAA;AAAA,IACF;AACA,IAAA,IACE,IAAA,KAAS,MAAA,KACR,OAAO,IAAA,KAAS,QAAA,IAAY,CAAC,MAAA,CAAO,QAAA,CAAS,IAAI,CAAA,IAAK,IAAA,GAAO,CAAA,CAAA,EAC9D;AACA,MAAA,MAAM,IAAI,SAAA;AAAA,QACR,CAAA,EAAG,QAAQ,CAAA,cAAA,EAAiB,IAAI,IAAI,GAAG,CAAA,qCAAA;AAAA,OACzC;AAAA,IACF;AACA,IAAA,QAAA,CAAS,GAAG,CAAA,GAAI,IAAA;AAAA,EAClB;AACA,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,MAAM,IAAI,SAAA;AAAA,MACR,CAAA,EAAG,QAAQ,CAAA,cAAA,EAAiB,IAAI,CAAA,2BAAA;AAAA,KAClC;AAAA,EACF;AACA,EAAA,OAAO,QAAA;AACT;;;ACvJO,SAAS,4BAAA,CACd,KAAA,EAGA,QAAA,EACA,QAAA,EAGY;AACZ,EAAA,IAAI,UAAU,MAAA,EAAW;AACvB,IAAA;AAAA,EACF;AACA,EAAA,OAAO,MAAM;AACX,IAAA,MAAM,SAAS,OAAA,CAAQ,KAAA,CAAM,KAAA,EAAO,QAAA,EAAU,EAAE,CAAA;AAChD,IAAA,MAAM,OAAA,GAAU,sBAAgD,MAAM,CAAA;AACtE,IAAA,IAAI,YAAY,MAAA,EAAW;AACzB,MAAA,OAAO,OAAA,CAAQ,IAAA;AAAA,QAAK,CAAC,QAAA,KACnB,mCAAA,CAAoC,QAAA,EAAU,QAAQ;AAAA,OACxD;AAAA,IACF;AACA,IAAA,IAAI,OAAO,MAAA,KAAW,QAAA,IAAY,MAAA,KAAW,IAAA,EAAM;AACjD,MAAA,OAAO,qBAAA;AAAA,QACL,MAAA;AAAA,QACA,CAAC,UACC,IAAI,SAAA;AAAA,UACF,GAAG,QAAQ,CAAA,gEAAA,CAAA;AAAA,UACX,EAAE,KAAA;AAAM;AACV,OACJ;AAAA,IACF;AACA,IAAA,OAAO,mCAAA,CAAoC,QAAQ,QAAQ,CAAA;AAAA,EAC7D,CAAA;AACF;AAEO,SAAS,mCAAA,CACd,OACA,QAAA,EAC0B;AAC1B,EAAA,IAAI,OAAO,UAAU,QAAA,IAAY,KAAA,KAAU,QAAQ,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACvE,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,QAAQ,CAAA,gCAAA,CAAkC,CAAA;AAAA,EACnE;AACA,EAAA,MAAM,UAAA,GAAa,wBAAA;AAAA,IACjB,KAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,eAAe,MAAA,EAAW;AAC5B,IAAA,MAAM,IAAI,SAAA;AAAA,MACR,CAAA,EAAG,QAAQ,CAAA,oCAAA,EAAuC,kCAAkC,CAAA,YAAA;AAAA,KACtF;AAAA,EACF;AACA,EAAA,2BAAA,CAA4B,OAAO,UAAU,CAAA;AAC7C,EAAA,KAAA,MAAW,aAAa,UAAA,EAAY;AAClC,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,wBAAA,CAAyB,KAAA,EAAO,SAAS,CAAA;AACnE,IAAA,IAAI,UAAA,KAAe,MAAA,IAAa,OAAA,IAAW,UAAA,EAAY;AACrD,MAAA,wBAAA,CAAyB,WAAW,KAAK,CAAA;AAAA,IAC3C;AAAA,EACF;AACA,EAAA,MAAM,WAA8C,EAAC;AACrD,EAAA,IAAI,UAAA,GAAa,KAAA;AACjB,EAAA,KAAA,MAAW,aAAa,UAAA,EAAY;AAClC,IAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,GAAA,CAAI,KAAA,EAAO,SAAS,CAAA;AAC7C,IAAA,IAAI,qBAAA,CAAsB,QAAQ,CAAA,EAAG;AACnC,MAAA,UAAA,GAAa,IAAA;AAAA,IACf,CAAA,MAAO;AACL,MAAA,wBAAA,CAAyB,QAAQ,CAAA;AAAA,IACnC;AACA,IAAA,QAAA,CAAS,IAAA,CAAK,CAAC,SAAA,EAAW,QAAQ,CAAC,CAAA;AAAA,EACrC;AACA,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,QAAQ,CAAA,kCAAA,CAAoC,CAAA;AAAA,EACrE;AACA,EAAA,MAAM,WAAqC,EAAC;AAC5C,EAAA,IAAI,aAAA,GAAgB,CAAA;AACpB,EAAA,IAAI,eAAA,GAAkB,CAAA;AACtB,EAAA,KAAA,MAAW,CAAC,SAAA,EAAW,QAAQ,CAAA,IAAK,QAAA,EAAU;AAC5C,IAAA,MAAM,MAAA,GAAS,sBAAA,CAAuB,QAAA,EAAU,QAAQ,CAAA;AACxD,IAAA,aAAA,IAAiB,OAAO,QAAA,CAAS,MAAA;AACjC,IAAA,IAAI,gBAAgB,+BAAA,EAAiC;AACnD,MAAA,MAAM,IAAI,SAAA;AAAA,QACR,CAAA,EAAG,QAAQ,CAAA,oCAAA,EAAuC,+BAA+B,CAAA,SAAA;AAAA,OACnF;AAAA,IACF;AACA,IAAA,eAAA,IAAmB,MAAA,CAAO,UAAA;AAC1B,IAAA,IAAI,kBAAkB,yCAAA,EAA2C;AAC/D,MAAA,MAAM,IAAI,SAAA;AAAA,QACR,GAAG,QAAQ,CAAA,sDAAA;AAAA,OACb;AAAA,IACF;AACA,IAAA,MAAA,CAAO,cAAA,CAAe,UAAU,SAAA,EAAW;AAAA,MACzC,YAAA,EAAc,IAAA;AAAA,MACd,UAAA,EAAY,IAAA;AAAA,MACZ,OAAO,MAAA,CAAO,QAAA;AAAA,MACd,QAAA,EAAU;AAAA,KACX,CAAA;AAAA,EACH;AACA,EAAA,OAAO,QAAA;AACT;AAEO,SAAS,sBAAA,CACd,OACA,QAAA,EAC4C;AAC5C,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACzB,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,QAAQ,CAAA,oCAAA,CAAsC,CAAA;AAAA,EACvE;AACA,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,GAAA,CAAI,KAAA,EAAO,QAAQ,CAAA;AAC1C,EAAA,IACE,OAAO,MAAA,KAAW,QAAA,IAClB,CAAC,MAAA,CAAO,aAAA,CAAc,MAAM,CAAA,IAC5B,MAAA,GAAS,CAAA,IACT,MAAA,GAAS,wCAAA,EACT;AACA,IAAA,MAAM,IAAI,SAAA;AAAA,MACR,CAAA,EAAG,QAAQ,CAAA,mDAAA,EAAsD,wCAAwC,CAAA,QAAA;AAAA,KAC3G;AAAA,EACF;AACA,EAAA,MAAM,QAAA,GAAW,IAAI,KAAA,CAAc,MAAM,CAAA;AACzC,EAAA,IAAI,YAAA,GAAe,KAAA;AACnB,EAAA,IAAI,UAAA,GAAa,CAAA;AACjB,EAAA,KAAA,IAAS,KAAA,GAAQ,CAAA,EAAG,KAAA,GAAQ,MAAA,EAAQ,SAAS,CAAA,EAAG;AAC9C,IAAA,IAAI,CAAC,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,KAAK,CAAA,EAAG;AAChC,MAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,QAAQ,CAAA,mCAAA,CAAqC,CAAA;AAAA,IACtE;AACA,IAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,GAAA,CAAI,KAAA,EAAO,KAAK,CAAA;AACxC,IAAA,IAAI,qBAAA,CAAsB,OAAO,CAAA,EAAG;AAClC,MAAA,YAAA,GAAe,IAAA;AACf,MAAA;AAAA,IACF;AACA,IAAA,MAAM,IAAA,GAAO,sBAAsB,OAAO,CAAA;AAC1C,IAAA,IAAI,SAAS,MAAA,EAAW;AACtB,MAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,QAAQ,CAAA,qCAAA,CAAuC,CAAA;AAAA,IACxE;AACA,IAAA,UAAA,IAAc,KAAK,MAAA,CAAO,MAAA;AAC1B,IAAA,QAAA,CAAS,KAAK,CAAA,GAAI,IAAA;AAAA,EACpB;AACA,EAAA,IAAI,YAAA,EAAc;AAChB,IAAA,MAAM,IAAI,SAAA;AAAA,MACR,GAAG,QAAQ,CAAA,0CAAA;AAAA,KACb;AAAA,EACF;AACA,EAAA,OAAO,EAAE,YAAY,QAAA,EAAS;AAChC;AAEO,SAAS,yBAAyB,KAAA,EAAsB;AAC7D,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACzB,IAAA;AAAA,EACF;AACA,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,GAAA,CAAI,KAAA,EAAO,QAAQ,CAAA;AAC1C,EAAA,IACE,OAAO,MAAA,KAAW,QAAA,IAClB,MAAA,CAAO,aAAA,CAAc,MAAM,CAAA,IAC3B,MAAA,IAAU,CAAA,IACV,MAAA,IAAU,wCAAA,EACV;AACA,IAAA,2BAAA;AAAA,MACE,KAAA;AAAA,MACA,KAAA,CAAM,KAAK,EAAE,MAAA,IAAU,CAAC,CAAA,EAAG,UAAU,KAAK;AAAA,KAC5C;AAAA,EACF;AACF;AAEO,SAAS,sBAAsB,KAAA,EAAoC;AACxE,EAAA,IAAI;AACF,IAAA,MAAM,eAAe,MAAA,CAAO,wBAAA;AAAA,MAC1B,MAAA,CAAO,SAAA;AAAA,MACP;AAAA,KACF,EAAG,GAAA;AACH,IAAA,IAAI,iBAAiB,KAAA,CAAA,EAAW;AAC9B,MAAA;AAAA,IACF;AACA,IAAA,MAAM,SAAS,OAAA,CAAQ,KAAA,CAAM,YAAA,EAAc,KAAA,EAAO,EAAE,CAAA;AACpD,IAAA,IACE,OAAO,MAAA,KAAW,QAAA,IAClB,MAAA,CAAO,SAAS,qCAAA,EAChB;AACA,MAAA;AAAA,IACF;AACA,IAAA,IAAI,KAAA,GAAQ,EAAA;AACZ,IAAA,KAAA,MAAW,CAAC,QAAA,EAAU,IAAI,CAAA,IAAK;AAAA,MAC7B,CAAC,cAAc,GAAG,CAAA;AAAA,MAClB,CAAC,UAAU,GAAG,CAAA;AAAA,MACd,CAAC,cAAc,GAAG,CAAA;AAAA,MAClB,CAAC,aAAa,GAAG,CAAA;AAAA,MACjB,CAAC,UAAU,GAAG,CAAA;AAAA,MACd,CAAC,WAAW,GAAG,CAAA;AAAA,MACf,CAAC,eAAe,GAAG,CAAA;AAAA,MACnB,CAAC,UAAU,GAAG;AAAA,KAChB,EAAY;AACV,MAAA,MAAM,SAAS,MAAA,CAAO,wBAAA;AAAA,QACpB,MAAA,CAAO,SAAA;AAAA,QACP;AAAA,OACF,EAAG,GAAA;AACH,MAAA,IAAI,MAAA,KAAW,UAAa,OAAA,CAAQ,KAAA,CAAM,QAAQ,KAAA,EAAO,EAAE,CAAA,KAAM,IAAA,EAAM;AACrE,QAAA,KAAA,IAAS,IAAA;AAAA,MACX;AAAA,IACF;AACA,IAAA,OAAO,IAAI,MAAA,CAAO,MAAA,EAAQ,KAAK,CAAA;AAAA,EACjC,CAAA,CAAA,MAAQ;AACN,IAAA;AAAA,EACF;AACF;;;ACjNA,IAAM,yBAAA,GAA4B,GAAA;AAE3B,SAAS,4BAAA,CACd,KAAA,EACA,WAAA,GAAiC,EAAC,EACT;AACzB,EAAA,IAAI,qBAAA,CAAsB,KAAK,CAAA,EAAG;AAChC,IAAA,MAAM,IAAI,UAAU,4CAA4C,CAAA;AAAA,EAClE;AACA,EAAA,IAAI,OAAO,UAAU,QAAA,IAAY,KAAA,KAAU,QAAQ,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACvE,IAAA,MAAM,IAAI,UAAU,0CAA0C,CAAA;AAAA,EAChE;AACA,EAAA,MAAM,IAAA,GAAO,wBAAA,CAAyB,KAAA,EAAO,yBAAyB,CAAA;AACtE,EAAA,IAAI,SAAS,MAAA,EAAW;AACtB,IAAA,MAAM,IAAI,SAAA;AAAA,MACR,+CAA+C,yBAAyB,CAAA,OAAA;AAAA,KAC1E;AAAA,EACF;AACA,EAAA,2BAAA,CAA4B,OAAO,IAAI,CAAA;AACvC,EAAA,MAAM,UAA6C,EAAC;AACpD,EAAA,IAAI,UAAA,GAAa,KAAA;AACjB,EAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,IAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,GAAA,CAAI,KAAA,EAAO,GAAG,CAAA;AACnC,IAAA,IAAI,qBAAA,CAAsB,IAAI,CAAA,EAAG;AAC/B,MAAA,UAAA,GAAa,IAAA;AAAA,IACf;AACA,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAC,GAAA,EAAK,IAAI,CAAC,CAAA;AAAA,EAC1B;AACA,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,MAAM,IAAI,UAAU,mDAAmD,CAAA;AAAA,EACzE;AACA,EAAA,MAAM,OAAA,GAAU,IAAI,GAAA,CAAI,WAAW,CAAA;AACnC,EAAA,MAAM,WAAoC,EAAC;AAC3C,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,IAAI,CAAA,IAAK,OAAA,EAAS;AACjC,IAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA,EAAG;AACpB,MAAA;AAAA,IACF;AACA,IAAA,MAAA,CAAO,cAAA,CAAe,UAAU,GAAA,EAAK;AAAA,MACnC,YAAA,EAAc,IAAA;AAAA,MACd,UAAA,EAAY,IAAA;AAAA,MACZ,KAAA,EAAO,IAAA;AAAA,MACP,QAAA,EAAU;AAAA,KACX,CAAA;AAAA,EACH;AACA,EAAA,OAAO,QAAA;AACT;AAqCO,SAAS,yBACd,cAAA,EAK4D;AAC5D,EAAA,IACE,qBAAA,CAAsB,cAAc,CAAA,IACpC,OAAO,mBAAmB,UAAA,EAC1B;AACA,IAAA,MAAM,IAAI,UAAU,+CAA+C,CAAA;AAAA,EACrE;AACA,EAAA,OAAO,CAAC,IAAA,KAA2D;AACjE,IAAA,MAAM,IAAA,GAAO,6BAA6B,IAAI,CAAA;AAC9C,IAAA,MAAM,SAAS,IAAA,CAAK,gBAAA;AAGpB,IAAA,IAAI,UAAU,IAAA,EAAM;AAClB,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,iBAAA,GAAoB,6BAA6B,IAAA,EAAM;AAAA,MAC3D;AAAA,KACD,CAAA;AACD,IAAA,MAAM,MAAA,GAAS,cAAA;AAAA,MACb,iBAAA;AAAA,MACA,EAAE,MAAA,KAAW,MAAA,IAAU,MAAA,KAAW,KAAA,CAAA;AAAA,MAClC;AAAA,KACF;AACA,IAAA,IAAI,qBAAA,CAAsB,MAAM,CAAA,EAAG;AACjC,MAAA,MAAM,IAAI,UAAU,0CAA0C,CAAA;AAAA,IAChE;AACA,IAAA,OAAO,iBAAA;AAAA,EACT,CAAA;AACF;AAuBO,SAAS,oBAAoB,IAAA,EAAuC;AACzE,EAAA,IACE,qBAAA,CAAsB,IAAI,CAAA,IAC1B,OAAO,IAAA,KAAS,QAAA,IAChB,IAAA,CAAK,MAAA,KAAW,CAAA,IAChB,IAAA,CAAK,MAAA,GAAS,GAAA,EACd;AACA,IAAA,MAAM,IAAI,SAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,eAAA,EAAiB,CAAC,OAAA,KAAY;AAC5B,MAAA,MAAM,WAAA,GAAc,6BAA6B,OAAO,CAAA;AACxD,MAAA,MAAM,SAAS,WAAA,CAAY,MAAA;AAC3B,MAAA,IAAI,OAAO,MAAA,KAAW,QAAA,IAAY,MAAA,KAAW,IAAA,EAAM;AACjD,QAAA,MAAM,IAAI,UAAU,+CAA+C,CAAA;AAAA,MACrE;AACA,MAAA,MAAM,cAAA,GAAiB,6BAA6B,MAAM,CAAA;AAC1D,MAAA,MAAM,YAAY,cAAA,CAAe,SAAA;AAEjC,MAAA,IAAI,SAAA,IAAa,IAAA,IAAQ,SAAA,KAAc,kBAAA,EAAoB;AACzD,QAAA,OAAO,OAAA,CAAQ,QAAQ,MAAM,CAAA;AAAA,MAC/B;AAEA,MAAA,MAAM,eAAA,GACJ,eAAe,eAAA,KAAoB,MAAA,GAC/B,EAAC,GACD,4BAAA,CAA6B,eAAe,eAAe,CAAA;AACjE,MAAA,MAAM,gBAAA,GACJ,eAAA,CAAgB,IAAI,CAAA,KAAM,MAAA,GACtB,EAAC,GACD,4BAAA,CAA6B,eAAA,CAAgB,IAAI,CAAC,CAAA;AAExD,MAAA,IAAI,gBAAA,CAAiB,mBAAmB,IAAA,EAAM;AAC5C,QAAA,OAAO,OAAA,CAAQ,QAAQ,MAAM,CAAA;AAAA,MAC/B;AAEA,MAAA,OAAO,QAAQ,OAAA,CAAQ;AAAA,QACrB,GAAG,cAAA;AAAA,QACH,eAAA,EAAiB;AAAA,UACf,GAAG,eAAA;AAAA,UACH,CAAC,IAAI,GAAG,EAAE,GAAG,gBAAA,EAAkB,iBAAiB,SAAA;AAAU;AAC5D,OACgB,CAAA;AAAA,IACpB;AAAA,GACF;AACF;;;ACtLO,IAAM,0BAAA,GAA6B,wBAAA;AAAA,EACxC,CAAC,MAAM,OAAA,KAAY;AACjB,IAAA,IAAA,CAAK,oBAAA,GAAuB;AAAA,MAC1B,GAAI,IAAA,CAAK,oBAAA;AAAA,MACT,QAAA,EAAU,OAAA;AAAA,MACV,eAAA,EAAiB;AAAA,KACnB;AAAA,EACF;AACF,CAAA;AAMO,IAAM,2BAAA,GAA8B,oBAAoB,UAAU,CAAA;;;ACEzE,IAAM,gBAAA,GAAmB,uCAAA;AAyBlB,SAAS,cAAA,CACd,QAAA,GAAmC,EAAC,EACE;AACtC,EAAA,uBAAA,CAAwB,UAAU,UAAU,CAAA;AAC5C,EAAA,MAAM,QAAA,GAAW;AAAA,IACf,QAAQ,QAAA,CAAS,MAAA;AAAA,IACjB,SAAS,QAAA,CAAS,OAAA;AAAA,IAClB,cAAc,QAAA,CAAS,YAAA;AAAA,IACvB,OAAO,QAAA,CAAS,KAAA;AAAA,IAChB,SAAS,QAAA,CAAS,OAAA;AAAA,IAClB,cAAc,QAAA,CAAS,YAAA;AAAA,IACvB,mBAAmB,QAAA,CAAS,iBAAA;AAAA,IAC5B,aAAa,QAAA,CAAS,WAAA;AAAA,IACtB,eAAe,QAAA,CAAS,aAAA;AAAA,IACxB,2BAA2B,QAAA,CAAS;AAAA,GACtC;AACA,EAAA,gCAAA,CAAiC,MAAA,CAAO,MAAA,CAAO,QAAQ,CAAA,EAAG,UAAU,CAAA;AACpE,EAAA,8BAAA,CAA+B,UAAU,UAAU,CAAA;AACnD,EAAA,MAAM,iBAAA,GAAoB,gCAAA;AAAA,IACxB,QAAA,CAAS,iBAAA;AAAA,IACT;AAAA,GACF;AACA,EAAA,MAAM,YAAA,GAAe,2BAAA;AAAA,IACnB,QAAA,CAAS,YAAA;AAAA,IACT,UAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,KAAA,GAAQ,oBAAA,CAAqB,QAAA,CAAS,KAAA,EAAO,YAAY,QAAQ,CAAA;AACvE,EAAA,MAAM,OAAA,GAAU,uBAAA,CAAwB,QAAA,CAAS,OAAA,EAAS,UAAU,CAAA;AACpE,EAAA,MAAM,WAAA,GAAc,2BAAA;AAAA,IAClB,QAAA,CAAS,WAAA;AAAA,IACT;AAAA,GACF;AACA,EAAA,MAAM,aAAA,GAAgB,4BAAA;AAAA,IACpB,QAAA,CAAS,aAAA;AAAA,IACT,UAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,WAAWC,uCAAA,CAAuB;AAAA,IACtC,YAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,cAAc,QAAA,CAAS,YAAA;AAAA,IACvB,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA;AAAA,IACA,2BAA2B,QAAA,CAAS,yBAAA;AAAA,IACpC,IAAA,EAAM,UAAA;AAAA,IACN,OAAA,EAAS,SAAS,OAAA,IAAW,gBAAA;AAAA,IAC7B,MAAA,EAAQ,QAAA,CAAS,MAAA,IAAU,OAAA,CAAQ,GAAA,CAAI,cAAA;AAAA,IACvC,oBAAA,EAAsB;AAAA,GACvB,CAAA;AAGD,EAAA,OAAO,CAAC,YACNC,oBAAA,CAAkB;AAAA,IAChB,KAAA,EAAO,QAAA,CAAS,sBAAA,CAAuB,OAAA,EAAS,UAAU,CAAC,CAAA;AAAA,IAC3D,UAAA,EAAY;AAAA,GACb,CAAA;AACL","file":"friendli.cjs","sourcesContent":["const HTTP_HEADER_NAME_PATTERN = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;\n\nexport function isValidHttpHeaderName(value: string): boolean {\n  return value.length <= 256 && HTTP_HEADER_NAME_PATTERN.test(value);\n}\n\nexport function hasInvalidHttpHeaderValueCharacter(value: string): boolean {\n  for (let index = 0; index < value.length; index += 1) {\n    const code = value.charCodeAt(index);\n    if (code <= 8 || (code >= 10 && code <= 31) || code === 127) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport function boundedEnumerableOwnKeys(\n  value: object,\n  maximum: number\n): string[] | undefined {\n  const keys: string[] = [];\n  let visited = 0;\n  for (const key in value) {\n    if (Object.hasOwn(value, key)) {\n      visited += 1;\n      if (visited > maximum) {\n        return;\n      }\n      keys.push(key);\n    } else {\n      visited += 1;\n      if (visited > maximum) {\n        return;\n      }\n    }\n  }\n  return keys;\n}\n","const typedArrayTagGetter = Object.getOwnPropertyDescriptor(\n  Object.getPrototypeOf(Uint8Array.prototype),\n  Symbol.toStringTag\n)?.get;\n\n/** Consume a native Promise without consulting arbitrary `then` properties. */\nexport function consumeGenuinePromise(value: unknown): boolean {\n  if (\n    !(\n      (typeof value === \"object\" && value !== null) ||\n      typeof value === \"function\"\n    )\n  ) {\n    return false;\n  }\n  try {\n    const chained = Promise.prototype.then.call(\n      value,\n      () => undefined,\n      () => undefined\n    );\n    Promise.prototype.then.call(\n      chained,\n      () => undefined,\n      () => undefined\n    );\n    return true;\n  } catch {\n    return false;\n  }\n}\n\n/** Consume Promise-valued own data fields without invoking accessors. */\nexport function consumeOwnDataPromiseFields(\n  value: object,\n  keys: readonly (string | number)[]\n): void {\n  for (const key of keys) {\n    try {\n      const descriptor = Object.getOwnPropertyDescriptor(value, key);\n      if (descriptor !== undefined && \"value\" in descriptor) {\n        consumeGenuinePromise(descriptor.value);\n      }\n    } catch {\n      // A malformed Proxy field cannot prevent checks of later bounded keys.\n    }\n  }\n}\n\n/** Capture a native/cross-realm Promise without consulting a `then` property. */\nexport function captureGenuinePromise<T>(\n  value: unknown\n): Promise<T> | undefined {\n  let genuine = true;\n  const captured = new Promise<T>((resolve, reject) => {\n    try {\n      Promise.prototype.then.call(value, resolve, reject);\n    } catch {\n      genuine = false;\n    }\n  });\n  return genuine ? captured : undefined;\n}\n\n/** Require a genuine Promise and map brand failures without reading `then`. */\nexport function requireGenuinePromise<T>(\n  value: unknown,\n  errorFactory: (cause: unknown) => unknown\n): Promise<T> {\n  return new Promise((resolve, reject) => {\n    try {\n      Promise.prototype.then.call(value, resolve, reject);\n    } catch (error) {\n      reject(errorFactory(error));\n    }\n  });\n}\n\n/** Cross-realm-safe Uint8Array check for provider file payloads. */\nexport function isUint8ArrayValue(value: unknown): value is Uint8Array {\n  if (typedArrayTagGetter === undefined) {\n    return false;\n  }\n  try {\n    return (\n      ArrayBuffer.isView(value) &&\n      Reflect.apply(typedArrayTagGetter, value, []) === \"Uint8Array\"\n    );\n  } catch {\n    return false;\n  }\n}\n\n/** Cross-realm-safe URL check using the platform URL brand operation. */\nexport function isUrlValue(value: unknown): value is URL {\n  if (typeof value !== \"object\" || value === null) {\n    return false;\n  }\n  try {\n    URL.prototype.toString.call(value);\n    return true;\n  } catch {\n    return false;\n  }\n}\n\n/** Cross-realm-safe finite Date check using the Date internal slot. */\nexport function isDateValue(value: unknown): value is Date {\n  try {\n    return Number.isFinite(Date.prototype.getTime.call(value));\n  } catch {\n    return false;\n  }\n}\n\n/** Accept ordinary records across realms while rejecting class/runtime containers. */\nexport function isPlainObjectValue<T>(\n  value: T\n): value is T & Record<string, unknown> {\n  if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n    return false;\n  }\n  try {\n    const prototype = Object.getPrototypeOf(value);\n    return prototype === null || Object.getPrototypeOf(prototype) === null;\n  } catch {\n    return false;\n  }\n}\n\n/** Validate template-literal identifiers shaped as `<namespace>.<name>`. */\nexport function isDottedIdentifier(\n  value: unknown\n): value is `${string}.${string}` {\n  return (\n    isBoundedIdentifier(value) && value.indexOf(\".\") > 0 && !value.endsWith(\".\")\n  );\n}\n\n/** Bound opaque IDs used in maps/sets while rejecting ambiguous empty IDs. */\nexport function isBoundedIdentifier(\n  value: unknown,\n  maximum = 4096\n): value is string {\n  return (\n    typeof value === \"string\" && value.length > 0 && value.length <= maximum\n  );\n}\n\n/** Array check that rejects holes skipped by every/map and inherited indexes. */\nexport function isDenseArray(value: readonly unknown[]): boolean {\n  for (let index = 0; index < value.length; index++) {\n    if (!Object.hasOwn(value, index)) {\n      return false;\n    }\n  }\n  return true;\n}\n","import { boundedEnumerableOwnKeys } from \"./http-headers\";\nimport {\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n} from \"./runtime-types\";\n\nconst MAX_JSON_DEPTH = 32;\nconst MAX_JSON_NODES = 10_000;\nconst MAX_JSON_OBJECT_KEYS = 1024;\nconst MAX_JSON_ARRAY_ITEMS = 10_000;\nconst MAX_JSON_CHARACTERS = 4_194_304;\n\nexport interface JsonSnapshot {\n  async?: boolean;\n  characters?: number;\n  containers?: number;\n  valid: boolean;\n  value?: unknown;\n}\n\ninterface JsonContext {\n  active: WeakSet<object>;\n  characters: number;\n  maximum: number;\n  maximumCharacters: number;\n  nodes: number;\n}\n\nclass AsyncJsonValueError extends Error {}\n\nfunction isJsonObjectContainer(value: object): boolean {\n  const prototype = Object.getPrototypeOf(value);\n  return prototype === null || Object.getPrototypeOf(prototype) === null;\n}\n\nfunction visitJsonArray(\n  value: unknown[],\n  depth: number,\n  context: JsonContext\n): unknown[] {\n  const length = Reflect.get(value, \"length\");\n  if (\n    !Number.isSafeInteger(length) ||\n    length < 0 ||\n    length > MAX_JSON_ARRAY_ITEMS\n  ) {\n    throw new Error(\"sparse or oversized JSON array\");\n  }\n  consumeOwnDataPromiseFields(\n    value,\n    Array.from({ length }, (_, index) => index)\n  );\n  const snapshot = new Array<unknown>(length);\n  let asyncFailure: AsyncJsonValueError | undefined;\n  for (let index = 0; index < length; index += 1) {\n    if (!Object.hasOwn(value, index)) {\n      throw new Error(\"sparse or oversized JSON array\");\n    }\n    try {\n      snapshot[index] = visitJson(\n        Reflect.get(value, index),\n        depth + 1,\n        context\n      );\n    } catch (error) {\n      if (!(error instanceof AsyncJsonValueError)) {\n        throw error;\n      }\n      asyncFailure ??= error;\n    }\n  }\n  if (asyncFailure !== undefined) {\n    throw asyncFailure;\n  }\n  return snapshot;\n}\n\nfunction visitJsonObject(\n  value: object,\n  depth: number,\n  context: JsonContext\n): Record<string, unknown> {\n  if (!isJsonObjectContainer(value)) {\n    throw new Error(\"JSON objects must use an ordinary object prototype\");\n  }\n  const keys = boundedEnumerableOwnKeys(value, MAX_JSON_OBJECT_KEYS);\n  if (keys === undefined) {\n    throw new Error(\"oversized JSON object\");\n  }\n  consumeOwnDataPromiseFields(value, keys);\n  const snapshot: Record<string, unknown> = {};\n  let asyncFailure: AsyncJsonValueError | undefined;\n  for (const key of keys) {\n    context.characters += key.length;\n    if (context.characters > context.maximumCharacters) {\n      throw new Error(\"oversized JSON object keys\");\n    }\n    try {\n      Object.defineProperty(snapshot, key, {\n        configurable: true,\n        enumerable: true,\n        value: visitJson(Reflect.get(value, key), depth + 1, context),\n        writable: true,\n      });\n    } catch (error) {\n      if (!(error instanceof AsyncJsonValueError)) {\n        throw error;\n      }\n      asyncFailure ??= error;\n    }\n  }\n  if (asyncFailure !== undefined) {\n    throw asyncFailure;\n  }\n  return snapshot;\n}\n\nfunction visitJson(\n  value: unknown,\n  depth: number,\n  context: JsonContext\n): unknown {\n  if (consumeGenuinePromise(value)) {\n    throw new AsyncJsonValueError(\"Promises are not JSON values\");\n  }\n  if (value === null || typeof value === \"boolean\") {\n    return value;\n  }\n  if (typeof value === \"string\") {\n    context.characters += value.length;\n    if (context.characters > context.maximumCharacters) {\n      throw new Error(\"oversized JSON string content\");\n    }\n    return value;\n  }\n  if (typeof value === \"number\") {\n    if (!Number.isFinite(value)) {\n      throw new Error(\"non-finite JSON number\");\n    }\n    return value;\n  }\n  if (typeof value !== \"object\" || depth > MAX_JSON_DEPTH) {\n    throw new Error(\"invalid or excessively deep JSON value\");\n  }\n  context.nodes += 1;\n  if (context.nodes > context.maximum || context.active.has(value)) {\n    throw new Error(\"cyclic or oversized JSON value\");\n  }\n  context.active.add(value);\n  try {\n    if (Array.isArray(value)) {\n      return visitJsonArray(value, depth, context);\n    }\n    return visitJsonObject(value, depth, context);\n  } finally {\n    context.active.delete(value);\n  }\n}\n\n/** Validate and copy a JSON value without invoking any property more than once. */\nexport function snapshotJsonValue(\n  value: unknown,\n  maximumContainers = MAX_JSON_NODES,\n  maximumCharacters = MAX_JSON_CHARACTERS\n): JsonSnapshot {\n  try {\n    const maximum =\n      Number.isSafeInteger(maximumContainers) && maximumContainers >= 0\n        ? Math.min(MAX_JSON_NODES, maximumContainers)\n        : 0;\n    const characters =\n      Number.isSafeInteger(maximumCharacters) && maximumCharacters >= 0\n        ? Math.min(MAX_JSON_CHARACTERS, maximumCharacters)\n        : 0;\n    const context = {\n      active: new WeakSet<object>(),\n      characters: 0,\n      maximum,\n      maximumCharacters: characters,\n      nodes: 0,\n    };\n    const snapshot = visitJson(value, 0, context);\n    return {\n      characters: context.characters,\n      containers: context.nodes,\n      valid: true,\n      value: snapshot,\n    };\n  } catch (error) {\n    if (error instanceof AsyncJsonValueError) {\n      return { async: true, valid: false };\n    }\n    return { valid: false };\n  }\n}\n\n/** Count JSON object/array containers without walking past a caller's cap. */\nfunction pushContainerChildren(current: object, stack: object[]): boolean {\n  if (Array.isArray(current)) {\n    const length = Reflect.get(current, \"length\");\n    if (\n      !Number.isSafeInteger(length) ||\n      length < 0 ||\n      length > MAX_JSON_ARRAY_ITEMS\n    ) {\n      return false;\n    }\n    consumeOwnDataPromiseFields(\n      current,\n      Array.from({ length }, (_, index) => index)\n    );\n    for (let index = 0; index < length; index += 1) {\n      if (!Object.hasOwn(current, index)) {\n        return false;\n      }\n      const child = Reflect.get(current, index);\n      if (typeof child === \"object\" && child !== null) {\n        stack.push(child);\n      }\n    }\n    return true;\n  }\n  const keys = boundedEnumerableOwnKeys(current, MAX_JSON_OBJECT_KEYS);\n  if (keys === undefined) {\n    return false;\n  }\n  consumeOwnDataPromiseFields(current, keys);\n  for (const key of keys) {\n    const child = Reflect.get(current, key);\n    if (typeof child === \"object\" && child !== null) {\n      stack.push(child);\n    }\n  }\n  return true;\n}\n\nexport function countJsonContainersUpTo(\n  value: unknown,\n  maximum: number\n): number {\n  if (typeof value !== \"object\" || value === null) {\n    return 0;\n  }\n  const overflow =\n    Number.isSafeInteger(maximum) && maximum >= 0 ? maximum + 1 : 1;\n  if (!Number.isSafeInteger(maximum) || maximum < 0) {\n    return overflow;\n  }\n  const stack: object[] = [value];\n  let count = 0;\n  try {\n    while (stack.length > 0) {\n      const current = stack.pop();\n      if (current === undefined) {\n        break;\n      }\n      count += 1;\n      if (count > maximum) {\n        return count;\n      }\n      if (!pushContainerChildren(current, stack)) {\n        return overflow;\n      }\n    }\n  } catch {\n    return overflow;\n  }\n  return count;\n}\n","import type { MetadataExtractor } from \"@ai-sdk/openai-compatible\";\nimport { isJSONObject, type SharedV4ProviderMetadata } from \"@ai-sdk/provider\";\nimport { snapshotJsonValue } from \"../core/json-value\";\nimport {\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n  requireGenuinePromise,\n} from \"../core/runtime-types\";\n\nexport const OPENAI_COMPATIBLE_SETTING_KEYS = [\n  \"apiKey\",\n  \"baseURL\",\n  \"convertUsage\",\n  \"fetch\",\n  \"headers\",\n  \"includeUsage\",\n  \"metadataExtractor\",\n  \"queryParams\",\n  \"supportedUrls\",\n  \"supportsStructuredOutputs\",\n] as const;\nexport const MAX_PROVIDER_MODEL_ID_LENGTH = 4096;\nexport const MAX_PROVIDER_STRING_RECORD_ENTRIES = 1024;\nexport const MAX_PROVIDER_STRING_RECORD_VALUE_LENGTH = 65_536;\nexport const MAX_PROVIDER_STRING_RECORD_CHARACTERS = 1_048_576;\nexport const MAX_PROVIDER_SUPPORTED_MEDIA_TYPES = 128;\nexport const MAX_PROVIDER_SUPPORTED_PATTERNS_PER_TYPE = 128;\nexport const MAX_PROVIDER_SUPPORTED_PATTERNS = 1024;\nexport const MAX_PROVIDER_SUPPORTED_PATTERN_LENGTH = 4096;\nexport const MAX_PROVIDER_SUPPORTED_PATTERN_CHARACTERS = 1_048_576;\nexport const INPUT_USAGE_KEYS = [\n  \"cacheRead\",\n  \"cacheWrite\",\n  \"noCache\",\n  \"total\",\n] as const;\nexport const OUTPUT_USAGE_KEYS = [\"reasoning\", \"text\", \"total\"] as const;\n\nexport function captureProviderModelId(\n  value: unknown,\n  provider: string\n): string {\n  if (\n    consumeGenuinePromise(value) ||\n    typeof value !== \"string\" ||\n    value.length === 0 ||\n    value.length > MAX_PROVIDER_MODEL_ID_LENGTH\n  ) {\n    throw new TypeError(\n      `${provider} modelId must be a synchronous non-empty string of at most ${MAX_PROVIDER_MODEL_ID_LENGTH} characters`\n    );\n  }\n  return value;\n}\n\nexport function captureProviderMetadataExtractor(\n  value: MetadataExtractor | undefined,\n  provider: string\n): MetadataExtractor | undefined {\n  if (value === undefined) {\n    return;\n  }\n  consumeOwnDataPromiseFields(value, [\n    \"createStreamExtractor\",\n    \"extractMetadata\",\n  ]);\n  const createStreamExtractor = Reflect.get(value, \"createStreamExtractor\");\n  const extractMetadata = Reflect.get(value, \"extractMetadata\");\n  const asyncCreate = consumeGenuinePromise(createStreamExtractor);\n  const asyncExtract = consumeGenuinePromise(extractMetadata);\n  if (\n    asyncCreate ||\n    asyncExtract ||\n    typeof createStreamExtractor !== \"function\" ||\n    typeof extractMetadata !== \"function\"\n  ) {\n    throw new TypeError(\n      `${provider} metadataExtractor methods must be synchronous functions`\n    );\n  }\n  return {\n    async extractMetadata(args) {\n      try {\n        const parsedBody = snapshotProviderCallbackJson(args.parsedBody);\n        if (parsedBody === undefined) {\n          return;\n        }\n        const result = Reflect.apply(extractMetadata, value, [{ parsedBody }]);\n        const promise = requireGenuinePromise<\n          SharedV4ProviderMetadata | undefined\n        >(\n          result,\n          (cause) =>\n            new TypeError(\n              `${provider} metadataExtractor.extractMetadata must return a genuine Promise`,\n              { cause }\n            )\n        );\n        return sanitizeCapturedMetadata(await promise);\n      } catch {\n        return;\n      }\n    },\n    createStreamExtractor() {\n      let source: unknown;\n      try {\n        source = Reflect.apply(createStreamExtractor, value, []);\n      } catch {\n        return emptyStreamMetadataExtractor();\n      }\n      if (consumeGenuinePromise(source)) {\n        return emptyStreamMetadataExtractor();\n      }\n      if (typeof source !== \"object\" || source === null) {\n        return emptyStreamMetadataExtractor();\n      }\n      consumeOwnDataPromiseFields(source, [\"buildMetadata\", \"processChunk\"]);\n      const buildMetadata = Reflect.get(source, \"buildMetadata\");\n      const processChunk = Reflect.get(source, \"processChunk\");\n      const asyncBuild = consumeGenuinePromise(buildMetadata);\n      const asyncProcess = consumeGenuinePromise(processChunk);\n      if (\n        asyncBuild ||\n        asyncProcess ||\n        typeof buildMetadata !== \"function\" ||\n        typeof processChunk !== \"function\"\n      ) {\n        return emptyStreamMetadataExtractor();\n      }\n      return {\n        processChunk(parsedChunk) {\n          try {\n            const capturedChunk = snapshotProviderCallbackJson(parsedChunk);\n            if (capturedChunk === undefined) {\n              return;\n            }\n            consumeGenuinePromise(\n              Reflect.apply(processChunk, source, [capturedChunk])\n            );\n          } catch {\n            // Optional metadata cannot fail a successful provider stream.\n          }\n        },\n        buildMetadata() {\n          try {\n            const result = Reflect.apply(buildMetadata, source, []);\n            return consumeGenuinePromise(result)\n              ? undefined\n              : sanitizeCapturedMetadata(result);\n          } catch {\n            return;\n          }\n        },\n      };\n    },\n  };\n}\n\nexport function emptyStreamMetadataExtractor(): ReturnType<\n  MetadataExtractor[\"createStreamExtractor\"]\n> {\n  return {\n    buildMetadata: () => undefined,\n    processChunk: () => undefined,\n  };\n}\n\nexport function sanitizeCapturedMetadata(\n  value: unknown\n): SharedV4ProviderMetadata | undefined {\n  if (value === undefined) {\n    return;\n  }\n  const snapshot = snapshotJsonValue(value, 10_000, 4_194_304);\n  return snapshot.valid && isJSONObject(snapshot.value)\n    ? (snapshot.value as SharedV4ProviderMetadata)\n    : undefined;\n}\n\nexport function snapshotProviderCallbackJson(\n  value: unknown\n): unknown | undefined {\n  const snapshot = snapshotJsonValue(value, 10_000, 4_194_304);\n  return snapshot.valid ? snapshot.value : undefined;\n}\n","import { boundedEnumerableOwnKeys } from \"../core/http-headers\";\nimport {\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n} from \"../core/runtime-types\";\n\nimport {\n  MAX_PROVIDER_STRING_RECORD_CHARACTERS,\n  MAX_PROVIDER_STRING_RECORD_ENTRIES,\n  MAX_PROVIDER_STRING_RECORD_VALUE_LENGTH,\n} from \"./provider-settings-metadata\";\n\nexport function snapshotProviderStringRecord(\n  value: Record<string, string> | undefined,\n  provider: string,\n  containerName: string,\n  valueName: string\n): Record<string, string> | undefined {\n  if (value === undefined) {\n    return;\n  }\n  if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n    throw new TypeError(`${provider} ${containerName} must be an object`);\n  }\n  const keys = boundedEnumerableOwnKeys(\n    value,\n    MAX_PROVIDER_STRING_RECORD_ENTRIES\n  );\n  if (keys === undefined) {\n    throw new TypeError(\n      `${provider} ${containerName} must contain at most ${MAX_PROVIDER_STRING_RECORD_ENTRIES} entries`\n    );\n  }\n  consumeOwnDataPromiseFields(value, keys);\n  const entries: Array<readonly [string, unknown]> = [];\n  let asyncValue = false;\n  for (const key of keys) {\n    const item = Reflect.get(value, key);\n    if (consumeGenuinePromise(item)) {\n      asyncValue = true;\n    }\n    entries.push([key, item]);\n  }\n  if (asyncValue) {\n    throw new TypeError(`${provider} ${valueName} values must be synchronous`);\n  }\n  const snapshot: Record<string, string> = {};\n  let totalCharacters = 0;\n  for (const [key, item] of entries) {\n    if (typeof item !== \"string\") {\n      throw new TypeError(`${provider} ${valueName} values must be strings`);\n    }\n    if (item.length > MAX_PROVIDER_STRING_RECORD_VALUE_LENGTH) {\n      throw new TypeError(\n        `${provider} ${valueName} values must contain at most ${MAX_PROVIDER_STRING_RECORD_VALUE_LENGTH} characters`\n      );\n    }\n    totalCharacters += key.length + item.length;\n    if (totalCharacters > MAX_PROVIDER_STRING_RECORD_CHARACTERS) {\n      throw new TypeError(\n        `${provider} ${containerName} exceed ${MAX_PROVIDER_STRING_RECORD_CHARACTERS} aggregate characters`\n      );\n    }\n    Object.defineProperty(snapshot, key, {\n      configurable: true,\n      enumerable: true,\n      value: item,\n      writable: true,\n    });\n  }\n  return snapshot;\n}\n","import {\n  boundedEnumerableOwnKeys,\n  hasInvalidHttpHeaderValueCharacter,\n  isValidHttpHeaderName,\n} from \"../core/http-headers\";\nimport {\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n} from \"../core/runtime-types\";\n\nimport {\n  MAX_PROVIDER_STRING_RECORD_CHARACTERS,\n  MAX_PROVIDER_STRING_RECORD_ENTRIES,\n  MAX_PROVIDER_STRING_RECORD_VALUE_LENGTH,\n  OPENAI_COMPATIBLE_SETTING_KEYS,\n} from \"./provider-settings-metadata\";\nimport { snapshotProviderStringRecord } from \"./provider-settings-records\";\n\nexport function prepareProviderSettings(\n  settings: unknown,\n  provider: string,\n  additionalKeys: readonly string[] = []\n): asserts settings is object {\n  if (consumeGenuinePromise(settings)) {\n    throw new TypeError(`${provider} settings must be synchronous`);\n  }\n  if (typeof settings !== \"object\" || settings === null) {\n    throw new TypeError(`${provider} settings must be an object`);\n  }\n  consumeOwnDataPromiseFields(settings, [\n    ...OPENAI_COMPATIBLE_SETTING_KEYS,\n    ...additionalKeys,\n  ]);\n}\n\nexport function rejectAsyncProviderSettingValues(\n  values: readonly unknown[],\n  provider: string\n): void {\n  let asyncSetting = false;\n  for (const value of values) {\n    if (consumeGenuinePromise(value)) {\n      asyncSetting = true;\n    }\n  }\n  if (asyncSetting) {\n    throw new TypeError(`${provider} settings must be synchronous`);\n  }\n}\n\nexport function validateCommonProviderSettings(\n  settings: Record<string, unknown>,\n  provider: string\n): void {\n  for (const key of [\"apiKey\", \"baseURL\"] as const) {\n    const value = settings[key];\n    if (\n      value !== undefined &&\n      (typeof value !== \"string\" || value.length === 0 || value.length > 8192)\n    ) {\n      throw new TypeError(\n        `${provider} ${key} must be a non-empty bounded string`\n      );\n    }\n  }\n  for (const key of [\"includeUsage\", \"supportsStructuredOutputs\"] as const) {\n    const value = settings[key];\n    if (value !== undefined && typeof value !== \"boolean\") {\n      throw new TypeError(`${provider} ${key} must be a boolean`);\n    }\n  }\n  for (const key of [\"convertUsage\", \"fetch\"] as const) {\n    const value = settings[key];\n    if (value !== undefined && typeof value !== \"function\") {\n      throw new TypeError(`${provider} ${key} must be a function`);\n    }\n  }\n  const metadataExtractor = settings.metadataExtractor;\n  if (\n    metadataExtractor !== undefined &&\n    (typeof metadataExtractor !== \"object\" ||\n      metadataExtractor === null ||\n      Array.isArray(metadataExtractor))\n  ) {\n    throw new TypeError(`${provider} metadataExtractor must be an object`);\n  }\n  const supportedUrls = settings.supportedUrls;\n  if (supportedUrls !== undefined && typeof supportedUrls !== \"function\") {\n    throw new TypeError(`${provider} supportedUrls must be a function`);\n  }\n}\n\nexport function snapshotProviderHeaders(\n  value: Record<string, string> | undefined,\n  provider: string\n): Record<string, string> | undefined {\n  if (value === undefined) {\n    return;\n  }\n  if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n    throw new TypeError(`${provider} headers must be an object`);\n  }\n  const keys = boundedEnumerableOwnKeys(\n    value,\n    MAX_PROVIDER_STRING_RECORD_ENTRIES\n  );\n  if (keys === undefined) {\n    throw new TypeError(\n      `${provider} headers must contain at most ${MAX_PROVIDER_STRING_RECORD_ENTRIES} entries`\n    );\n  }\n  consumeOwnDataPromiseFields(value, keys);\n  if (keys.some((key) => !isValidHttpHeaderName(key))) {\n    throw new TypeError(`${provider} header names must use valid HTTP syntax`);\n  }\n  const entries: Array<readonly [string, unknown]> = [];\n  let asyncValue = false;\n  for (const key of keys) {\n    const item = Reflect.get(value, key);\n    if (consumeGenuinePromise(item)) {\n      asyncValue = true;\n    }\n    entries.push([key, item]);\n  }\n  if (asyncValue) {\n    throw new TypeError(`${provider} header values must be synchronous`);\n  }\n  const snapshot: Record<string, string> = {};\n  let totalCharacters = 0;\n  for (const [key, item] of entries) {\n    if (\n      typeof item !== \"string\" ||\n      item.length > MAX_PROVIDER_STRING_RECORD_VALUE_LENGTH ||\n      hasInvalidHttpHeaderValueCharacter(item)\n    ) {\n      throw new TypeError(\n        `${provider} header values must use valid HTTP syntax`\n      );\n    }\n    totalCharacters += key.length + item.length;\n    if (totalCharacters > MAX_PROVIDER_STRING_RECORD_CHARACTERS) {\n      throw new TypeError(\n        `${provider} headers exceed ${MAX_PROVIDER_STRING_RECORD_CHARACTERS} aggregate characters`\n      );\n    }\n    Object.defineProperty(snapshot, key, {\n      configurable: true,\n      enumerable: true,\n      value: item,\n      writable: true,\n    });\n  }\n  return snapshot;\n}\n\nexport function snapshotProviderQueryParams(\n  value: Record<string, string> | undefined,\n  provider: string\n): Record<string, string> | undefined {\n  return snapshotProviderStringRecord(\n    value,\n    provider,\n    \"query parameters\",\n    \"query parameter\"\n  );\n}\n","import type { OpenAICompatibleProviderSettings } from \"@ai-sdk/openai-compatible\";\nimport { isJSONObject, type LanguageModelV4Usage } from \"@ai-sdk/provider\";\nimport { snapshotJsonValue } from \"../core/json-value\";\nimport {\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n  requireGenuinePromise,\n} from \"../core/runtime-types\";\n\nimport {\n  INPUT_USAGE_KEYS,\n  OUTPUT_USAGE_KEYS,\n  snapshotProviderCallbackJson,\n} from \"./provider-settings-metadata\";\n\nexport function captureProviderConvertUsage(\n  value: OpenAICompatibleProviderSettings[\"convertUsage\"],\n  provider: string,\n  receiver: object\n): OpenAICompatibleProviderSettings[\"convertUsage\"] {\n  if (value === undefined) {\n    return;\n  }\n  return (usage) => {\n    const capturedUsage = snapshotProviderCallbackJson(usage);\n    if (capturedUsage === undefined) {\n      throw new TypeError(\n        `${provider} convertUsage input must be bounded JSON`\n      );\n    }\n    const result = Reflect.apply(value, receiver, [capturedUsage]);\n    if (consumeGenuinePromise(result)) {\n      throw new TypeError(`${provider} convertUsage must return synchronously`);\n    }\n    return snapshotProviderUsage(result, provider);\n  };\n}\n\nexport function captureProviderFetch(\n  value: typeof globalThis.fetch | undefined,\n  provider: string,\n  receiver: object\n): typeof globalThis.fetch | undefined {\n  if (value === undefined) {\n    return;\n  }\n  return (input, init) => {\n    let result: unknown;\n    try {\n      result = Reflect.apply(value, receiver, [input, init]);\n    } catch (cause) {\n      return Promise.reject(cause);\n    }\n    const promise = requireGenuinePromise<Response>(\n      result,\n      (cause) =>\n        new TypeError(`${provider} fetch must return a genuine Promise`, {\n          cause,\n        })\n    );\n    return promise.then((response) => {\n      if (typeof response !== \"object\" || response === null) {\n        throw new TypeError(\n          `${provider} fetch must resolve to a response object`\n        );\n      }\n      return response;\n    });\n  };\n}\n\nexport function snapshotProviderUsage(\n  value: unknown,\n  provider: string\n): LanguageModelV4Usage {\n  if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n    throw new TypeError(`${provider} convertUsage must return an object`);\n  }\n  consumeOwnDataPromiseFields(value, [\"inputTokens\", \"outputTokens\", \"raw\"]);\n  for (const [key, fields] of [\n    [\"inputTokens\", INPUT_USAGE_KEYS],\n    [\"outputTokens\", OUTPUT_USAGE_KEYS],\n  ] as const) {\n    const descriptor = Object.getOwnPropertyDescriptor(value, key);\n    if (descriptor !== undefined && \"value\" in descriptor) {\n      consumeUsageFieldPromises(descriptor.value, fields);\n    }\n  }\n  const inputTokens = Reflect.get(value, \"inputTokens\");\n  const outputTokens = Reflect.get(value, \"outputTokens\");\n  const raw = Reflect.get(value, \"raw\");\n  const asyncInput = consumeGenuinePromise(inputTokens);\n  const asyncOutput = consumeGenuinePromise(outputTokens);\n  const asyncRaw = consumeGenuinePromise(raw);\n  if (asyncInput || asyncOutput || asyncRaw) {\n    throw new TypeError(`${provider} convertUsage fields must be synchronous`);\n  }\n  const inputSnapshot = snapshotTokenContainer(\n    inputTokens,\n    INPUT_USAGE_KEYS,\n    provider,\n    \"inputTokens\"\n  );\n  const outputSnapshot = snapshotTokenContainer(\n    outputTokens,\n    OUTPUT_USAGE_KEYS,\n    provider,\n    \"outputTokens\"\n  );\n  let rawSnapshot: LanguageModelV4Usage[\"raw\"];\n  if (raw !== undefined) {\n    const snapshot = snapshotJsonValue(raw, 10_000, 1_048_576);\n    if (!(snapshot.valid && isJSONObject(snapshot.value))) {\n      throw new TypeError(`${provider} convertUsage raw must be bounded JSON`);\n    }\n    rawSnapshot = snapshot.value;\n  }\n  return {\n    inputTokens: inputSnapshot as LanguageModelV4Usage[\"inputTokens\"],\n    outputTokens: outputSnapshot as LanguageModelV4Usage[\"outputTokens\"],\n    raw: rawSnapshot,\n  };\n}\n\nexport function consumeUsageFieldPromises(\n  value: unknown,\n  keys: readonly string[]\n): void {\n  if (typeof value === \"object\" && value !== null) {\n    consumeOwnDataPromiseFields(value, keys);\n  }\n}\n\nexport function snapshotTokenContainer(\n  value: unknown,\n  keys: readonly string[],\n  provider: string,\n  name: string\n): Record<string, number | undefined> {\n  if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n    throw new TypeError(`${provider} convertUsage ${name} must be an object`);\n  }\n  consumeOwnDataPromiseFields(value, keys);\n  const snapshot: Record<string, number | undefined> = {};\n  let asyncField = false;\n  for (const key of keys) {\n    const item = Reflect.get(value, key);\n    if (consumeGenuinePromise(item)) {\n      asyncField = true;\n      continue;\n    }\n    if (\n      item !== undefined &&\n      (typeof item !== \"number\" || !Number.isFinite(item) || item < 0)\n    ) {\n      throw new TypeError(\n        `${provider} convertUsage ${name}.${key} must be a non-negative finite number`\n      );\n    }\n    snapshot[key] = item as number | undefined;\n  }\n  if (asyncField) {\n    throw new TypeError(\n      `${provider} convertUsage ${name} fields must be synchronous`\n    );\n  }\n  return snapshot;\n}\n","import { boundedEnumerableOwnKeys } from \"../core/http-headers\";\nimport {\n  captureGenuinePromise,\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n  requireGenuinePromise,\n} from \"../core/runtime-types\";\n\nimport {\n  MAX_PROVIDER_SUPPORTED_MEDIA_TYPES,\n  MAX_PROVIDER_SUPPORTED_PATTERN_CHARACTERS,\n  MAX_PROVIDER_SUPPORTED_PATTERN_LENGTH,\n  MAX_PROVIDER_SUPPORTED_PATTERNS,\n  MAX_PROVIDER_SUPPORTED_PATTERNS_PER_TYPE,\n} from \"./provider-settings-metadata\";\n\nexport function captureProviderSupportedUrls(\n  value:\n    | (() => PromiseLike<Record<string, RegExp[]>> | Record<string, RegExp[]>)\n    | undefined,\n  provider: string,\n  receiver: object\n):\n  | (() => PromiseLike<Record<string, RegExp[]>> | Record<string, RegExp[]>)\n  | undefined {\n  if (value === undefined) {\n    return;\n  }\n  return () => {\n    const result = Reflect.apply(value, receiver, []);\n    const promise = captureGenuinePromise<Record<string, RegExp[]>>(result);\n    if (promise !== undefined) {\n      return promise.then((resolved) =>\n        snapshotProviderSupportedUrlsResult(resolved, provider)\n      );\n    }\n    if (typeof result !== \"object\" || result === null) {\n      return requireGenuinePromise<Record<string, RegExp[]>>(\n        result,\n        (cause) =>\n          new TypeError(\n            `${provider} supportedUrls must return synchronously or as a genuine Promise`,\n            { cause }\n          )\n      );\n    }\n    return snapshotProviderSupportedUrlsResult(result, provider);\n  };\n}\n\nexport function snapshotProviderSupportedUrlsResult(\n  value: unknown,\n  provider: string\n): Record<string, RegExp[]> {\n  if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n    throw new TypeError(`${provider} supportedUrls must be an object`);\n  }\n  const mediaTypes = boundedEnumerableOwnKeys(\n    value,\n    MAX_PROVIDER_SUPPORTED_MEDIA_TYPES\n  );\n  if (mediaTypes === undefined) {\n    throw new TypeError(\n      `${provider} supportedUrls must contain at most ${MAX_PROVIDER_SUPPORTED_MEDIA_TYPES} media types`\n    );\n  }\n  consumeOwnDataPromiseFields(value, mediaTypes);\n  for (const mediaType of mediaTypes) {\n    const descriptor = Object.getOwnPropertyDescriptor(value, mediaType);\n    if (descriptor !== undefined && \"value\" in descriptor) {\n      preconsumePatternEntries(descriptor.value);\n    }\n  }\n  const captured: Array<readonly [string, unknown]> = [];\n  let asyncField = false;\n  for (const mediaType of mediaTypes) {\n    const patterns = Reflect.get(value, mediaType);\n    if (consumeGenuinePromise(patterns)) {\n      asyncField = true;\n    } else {\n      preconsumePatternEntries(patterns);\n    }\n    captured.push([mediaType, patterns]);\n  }\n  if (asyncField) {\n    throw new TypeError(`${provider} supportedUrls must be synchronous`);\n  }\n  const snapshot: Record<string, RegExp[]> = {};\n  let totalPatterns = 0;\n  let totalCharacters = 0;\n  for (const [mediaType, patterns] of captured) {\n    const cloned = cloneSupportedPatterns(patterns, provider);\n    totalPatterns += cloned.patterns.length;\n    if (totalPatterns > MAX_PROVIDER_SUPPORTED_PATTERNS) {\n      throw new TypeError(\n        `${provider} supportedUrls must contain at most ${MAX_PROVIDER_SUPPORTED_PATTERNS} patterns`\n      );\n    }\n    totalCharacters += cloned.characters;\n    if (totalCharacters > MAX_PROVIDER_SUPPORTED_PATTERN_CHARACTERS) {\n      throw new TypeError(\n        `${provider} supportedUrls exceed the aggregate pattern size limit`\n      );\n    }\n    Object.defineProperty(snapshot, mediaType, {\n      configurable: true,\n      enumerable: true,\n      value: cloned.patterns,\n      writable: true,\n    });\n  }\n  return snapshot;\n}\n\nexport function cloneSupportedPatterns(\n  value: unknown,\n  provider: string\n): { characters: number; patterns: RegExp[] } {\n  if (!Array.isArray(value)) {\n    throw new TypeError(`${provider} supportedUrls values must be arrays`);\n  }\n  const length = Reflect.get(value, \"length\");\n  if (\n    typeof length !== \"number\" ||\n    !Number.isSafeInteger(length) ||\n    length < 0 ||\n    length > MAX_PROVIDER_SUPPORTED_PATTERNS_PER_TYPE\n  ) {\n    throw new TypeError(\n      `${provider} supportedUrls pattern arrays must contain at most ${MAX_PROVIDER_SUPPORTED_PATTERNS_PER_TYPE} entries`\n    );\n  }\n  const patterns = new Array<RegExp>(length);\n  let asyncPattern = false;\n  let characters = 0;\n  for (let index = 0; index < length; index += 1) {\n    if (!Object.hasOwn(value, index)) {\n      throw new TypeError(`${provider} supportedUrls arrays must be dense`);\n    }\n    const pattern = Reflect.get(value, index);\n    if (consumeGenuinePromise(pattern)) {\n      asyncPattern = true;\n      continue;\n    }\n    const copy = cloneSupportedPattern(pattern);\n    if (copy === undefined) {\n      throw new TypeError(`${provider} supportedUrls entries must be RegExp`);\n    }\n    characters += copy.source.length;\n    patterns[index] = copy;\n  }\n  if (asyncPattern) {\n    throw new TypeError(\n      `${provider} supportedUrls entries must be synchronous`\n    );\n  }\n  return { characters, patterns };\n}\n\nexport function preconsumePatternEntries(value: unknown): void {\n  if (!Array.isArray(value)) {\n    return;\n  }\n  const length = Reflect.get(value, \"length\");\n  if (\n    typeof length === \"number\" &&\n    Number.isSafeInteger(length) &&\n    length >= 0 &&\n    length <= MAX_PROVIDER_SUPPORTED_PATTERNS_PER_TYPE\n  ) {\n    consumeOwnDataPromiseFields(\n      value,\n      Array.from({ length }, (_, index) => index)\n    );\n  }\n}\n\nexport function cloneSupportedPattern(value: unknown): RegExp | undefined {\n  try {\n    const sourceGetter = Object.getOwnPropertyDescriptor(\n      RegExp.prototype,\n      \"source\"\n    )?.get;\n    if (sourceGetter === undefined) {\n      return;\n    }\n    const source = Reflect.apply(sourceGetter, value, []);\n    if (\n      typeof source !== \"string\" ||\n      source.length > MAX_PROVIDER_SUPPORTED_PATTERN_LENGTH\n    ) {\n      return;\n    }\n    let flags = \"\";\n    for (const [property, flag] of [\n      [\"hasIndices\", \"d\"],\n      [\"global\", \"g\"],\n      [\"ignoreCase\", \"i\"],\n      [\"multiline\", \"m\"],\n      [\"dotAll\", \"s\"],\n      [\"unicode\", \"u\"],\n      [\"unicodeSets\", \"v\"],\n      [\"sticky\", \"y\"],\n    ] as const) {\n      const getter = Object.getOwnPropertyDescriptor(\n        RegExp.prototype,\n        property\n      )?.get;\n      if (getter !== undefined && Reflect.apply(getter, value, []) === true) {\n        flags += flag;\n      }\n    }\n    return new RegExp(source, flags);\n  } catch {\n    return;\n  }\n}\n","import type { LanguageModelMiddleware } from \"ai\";\nimport { boundedEnumerableOwnKeys } from \"./http-headers\";\nimport {\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n} from \"./runtime-types\";\n\nconst MAX_REASONING_BODY_FIELDS = 10_000;\n\nexport function snapshotReasoningRequestBody(\n  value: unknown,\n  omittedKeys: readonly string[] = []\n): Record<string, unknown> {\n  if (consumeGenuinePromise(value)) {\n    throw new TypeError(\"reasoning request body must be synchronous\");\n  }\n  if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n    throw new TypeError(\"reasoning request body must be an object\");\n  }\n  const keys = boundedEnumerableOwnKeys(value, MAX_REASONING_BODY_FIELDS);\n  if (keys === undefined) {\n    throw new TypeError(\n      `reasoning request body must contain at most ${MAX_REASONING_BODY_FIELDS} fields`\n    );\n  }\n  consumeOwnDataPromiseFields(value, keys);\n  const entries: Array<readonly [string, unknown]> = [];\n  let asyncField = false;\n  for (const key of keys) {\n    const item = Reflect.get(value, key);\n    if (consumeGenuinePromise(item)) {\n      asyncField = true;\n    }\n    entries.push([key, item]);\n  }\n  if (asyncField) {\n    throw new TypeError(\"reasoning request body fields must be synchronous\");\n  }\n  const omitted = new Set(omittedKeys);\n  const snapshot: Record<string, unknown> = {};\n  for (const [key, item] of entries) {\n    if (omitted.has(key)) {\n      continue;\n    }\n    Object.defineProperty(snapshot, key, {\n      configurable: true,\n      enumerable: true,\n      value: item,\n      writable: true,\n    });\n  }\n  return snapshot;\n}\n\n/**\n * Provider-agnostic scaffolding for a `transformRequestBody` hook that turns the\n * OpenAI-style `reasoning_effort` field into a provider's native reasoning shape.\n *\n * Each provider supplies an `applyReasoning` that writes its own dialect into the\n * body (see `src/provider/<name>/reasoning.ts`); this helper owns everything that\n * is the same across providers.\n *\n * The returned hook runs AFTER `getArgs` has assembled the OpenAI-style body, so\n * `body.reasoning_effort` is present when the user passed a top-level `reasoning`\n * option (low|medium|high|minimal|xhigh) or\n * `providerOptions.<provider>.reasoningEffort`.\n *\n * It strips the foreign `reasoning_effort` and classifies it:\n *  - `'none'` / `false` -> reasoning off (`enabled = false`)\n *  - anything else       -> reasoning on (`enabled = true`)\n * then hands `(body, enabled)` to `applyReasoning` to write the native field.\n *\n * If no reasoning was requested (`reasoning_effort` absent), the body is returned\n * unchanged (a fresh clone — the input is never mutated).\n *\n * The AI SDK collapses a top-level `reasoning: 'none'` to an absent\n * `reasoning_effort` before this hook runs, so `'none'` would never reach here on\n * its own. {@link reasoningMiddleware} promotes the call-level `reasoning` option\n * (which still carries `'none'`) back into\n * `providerOptions.<provider>.reasoningEffort`, so disabling works through the\n * plain `reasoning: 'none'` option.\n *\n * @param applyReasoning writes the provider's native reasoning field into the\n *   already-cloned `body`. Mutating `body` is safe — it is never the caller's\n *   object. It receives the classified `enabled` flag plus the original\n *   `effort` value (the raw `reasoning_effort`, e.g. a level string like\n *   `'high'` or a boolean): on/off dialects can ignore it, while a provider\n *   that maps levels natively can forward the granular level.\n */\nexport function createReasoningTransform(\n  applyReasoning: (\n    body: Record<string, unknown>,\n    enabled: boolean,\n    effort: unknown\n  ) => void\n): (args: Record<string, unknown>) => Record<string, unknown> {\n  if (\n    consumeGenuinePromise(applyReasoning) ||\n    typeof applyReasoning !== \"function\"\n  ) {\n    throw new TypeError(\"applyReasoning must be a synchronous function\");\n  }\n  return (args: Record<string, unknown>): Record<string, unknown> => {\n    const body = snapshotReasoningRequestBody(args);\n    const effort = body.reasoning_effort;\n\n    // No reasoning requested -> return an untouched clone (keeps the key if set).\n    if (effort == null) {\n      return body;\n    }\n\n    const bodyWithoutEffort = snapshotReasoningRequestBody(body, [\n      \"reasoning_effort\",\n    ]);\n    const result = applyReasoning(\n      bodyWithoutEffort,\n      !(effort === \"none\" || effort === false),\n      effort\n    );\n    if (consumeGenuinePromise(result)) {\n      throw new TypeError(\"applyReasoning must return synchronously\");\n    }\n    return bodyWithoutEffort;\n  };\n}\n\n/**\n * Middleware that lets the plain `reasoning` option control reasoning end to\n * end — including disabling it.\n *\n * `getArgs` in `@ai-sdk/openai-compatible` turns a call-level `reasoning` into a\n * body `reasoning_effort` for every level EXCEPT `'none'`, which it silently\n * drops. By the time a {@link createReasoningTransform} hook sees the body, that\n * `'none'` intent is gone.\n *\n * This `transformParams` hook runs earlier, on the call options, where\n * `reasoning` still holds its original value. It copies that value into\n * `providerOptions.<name>.reasoningEffort`, which `getArgs` always forwards to\n * the body as `reasoning_effort` (including `'none'`). The result then reaches\n * the provider's transform and is rewritten into its native field.\n *\n * Precedence is preserved: an explicit `providerOptions.<name>.reasoningEffort`\n * is left untouched, and `'provider-default'` / absent reasoning is a no-op so\n * the provider's own default stands.\n *\n * @param name the provider's `providerOptions` key (e.g. `'friendli'`).\n */\nexport function reasoningMiddleware(name: string): LanguageModelMiddleware {\n  if (\n    consumeGenuinePromise(name) ||\n    typeof name !== \"string\" ||\n    name.length === 0 ||\n    name.length > 256\n  ) {\n    throw new TypeError(\n      \"reasoning provider name must be synchronous and bounded\"\n    );\n  }\n  return {\n    transformParams: (options) => {\n      const hookOptions = snapshotReasoningRequestBody(options);\n      const params = hookOptions.params as typeof options.params;\n      if (typeof params !== \"object\" || params === null) {\n        throw new TypeError(\"reasoning middleware params must be an object\");\n      }\n      const capturedParams = snapshotReasoningRequestBody(params);\n      const reasoning = capturedParams.reasoning;\n      // Leave the provider default in place when nothing actionable was asked.\n      if (reasoning == null || reasoning === \"provider-default\") {\n        return Promise.resolve(params);\n      }\n\n      const providerOptions =\n        capturedParams.providerOptions === undefined\n          ? {}\n          : snapshotReasoningRequestBody(capturedParams.providerOptions);\n      const providerSettings =\n        providerOptions[name] === undefined\n          ? {}\n          : snapshotReasoningRequestBody(providerOptions[name]);\n      // An explicit reasoningEffort wins; don't clobber it.\n      if (providerSettings.reasoningEffort != null) {\n        return Promise.resolve(params);\n      }\n\n      return Promise.resolve({\n        ...capturedParams,\n        providerOptions: {\n          ...providerOptions,\n          [name]: { ...providerSettings, reasoningEffort: reasoning },\n        },\n      } as typeof params);\n    },\n  };\n}\n","import {\n  createReasoningTransform,\n  reasoningMiddleware,\n} from \"../../core/reasoning\";\n\n/**\n * Friendli reasoning dialect: `chat_template_kwargs.{thinking, enable_thinking}`.\n *\n * Friendli's toggle is model-dependent — most models read `thinking`, but some\n * (e.g. Gemma 4) read `enable_thinking`. We write both; a model ignores the\n * field it doesn't recognize.\n */\nexport const friendliReasoningTransform = createReasoningTransform(\n  (body, enabled) => {\n    body.chat_template_kwargs = {\n      ...(body.chat_template_kwargs as Record<string, unknown> | undefined),\n      thinking: enabled,\n      enable_thinking: enabled,\n    };\n  }\n);\n\n/**\n * Keeps a call-level `reasoning` option (including `'none'`) alive down to\n * {@link friendliReasoningTransform}.\n */\nexport const friendliReasoningMiddleware = reasoningMiddleware(\"friendli\");\n","import {\n  createOpenAICompatible,\n  type OpenAICompatibleProviderSettings,\n} from \"@ai-sdk/openai-compatible\";\nimport type { LanguageModelV4 } from \"@ai-sdk/provider\";\nimport { wrapLanguageModel } from \"ai\";\n\nimport {\n  prepareProviderSettings,\n  rejectAsyncProviderSettingValues,\n  snapshotProviderHeaders,\n  snapshotProviderQueryParams,\n  validateCommonProviderSettings,\n} from \"../provider-settings\";\nimport {\n  captureProviderConvertUsage,\n  captureProviderFetch,\n} from \"../provider-settings-fetch\";\nimport {\n  captureProviderMetadataExtractor,\n  captureProviderModelId,\n} from \"../provider-settings-metadata\";\nimport { captureProviderSupportedUrls } from \"../provider-settings-urls\";\nimport {\n  friendliReasoningMiddleware,\n  friendliReasoningTransform,\n} from \"./reasoning\";\n\nconst DEFAULT_BASE_URL = \"https://api.friendli.ai/serverless/v1\";\n\nexport interface CreateFriendliSettings\n  extends Omit<\n    OpenAICompatibleProviderSettings,\n    \"name\" | \"baseURL\" | \"transformRequestBody\"\n  > {\n  /** Friendli API token. Defaults to `process.env.FRIENDLI_TOKEN`. */\n  apiKey?: string;\n  /** Override the base URL. Defaults to the Friendli serverless endpoint. */\n  baseURL?: string;\n}\n\n/**\n * Friendli provider built on `@ai-sdk/openai-compatible`.\n *\n * The `reasoning` option drives Friendli's `chat_template_kwargs.thinking`\n * (boolean) for every level, on or off:\n *  - `reasoning: 'low' | 'medium' | 'high' | …` -> `thinking: true`\n *  - `reasoning: 'none'`                         -> `thinking: false`\n *\n * @example\n * const friendli = createFriendli();\n * await streamText({ model: friendli('moonshotai/Kimi-K2.5'), reasoning: 'high', prompt: '...' });\n */\nexport function createFriendli(\n  settings: CreateFriendliSettings = {}\n): (modelId: string) => LanguageModelV4 {\n  prepareProviderSettings(settings, \"Friendli\");\n  const captured = {\n    apiKey: settings.apiKey,\n    baseURL: settings.baseURL,\n    convertUsage: settings.convertUsage,\n    fetch: settings.fetch,\n    headers: settings.headers,\n    includeUsage: settings.includeUsage,\n    metadataExtractor: settings.metadataExtractor,\n    queryParams: settings.queryParams,\n    supportedUrls: settings.supportedUrls,\n    supportsStructuredOutputs: settings.supportsStructuredOutputs,\n  };\n  rejectAsyncProviderSettingValues(Object.values(captured), \"Friendli\");\n  validateCommonProviderSettings(captured, \"Friendli\");\n  const metadataExtractor = captureProviderMetadataExtractor(\n    captured.metadataExtractor,\n    \"Friendli\"\n  );\n  const convertUsage = captureProviderConvertUsage(\n    captured.convertUsage,\n    \"Friendli\",\n    settings\n  );\n  const fetch = captureProviderFetch(captured.fetch, \"Friendli\", settings);\n  const headers = snapshotProviderHeaders(captured.headers, \"Friendli\");\n  const queryParams = snapshotProviderQueryParams(\n    captured.queryParams,\n    \"Friendli\"\n  );\n  const supportedUrls = captureProviderSupportedUrls(\n    captured.supportedUrls,\n    \"Friendli\",\n    settings\n  );\n  const provider = createOpenAICompatible({\n    convertUsage,\n    fetch,\n    headers,\n    includeUsage: captured.includeUsage,\n    metadataExtractor,\n    queryParams,\n    supportedUrls,\n    supportsStructuredOutputs: captured.supportsStructuredOutputs,\n    name: \"friendli\",\n    baseURL: captured.baseURL ?? DEFAULT_BASE_URL,\n    apiKey: captured.apiKey ?? process.env.FRIENDLI_TOKEN,\n    transformRequestBody: friendliReasoningTransform,\n  });\n  // Wrap each model so a top-level `reasoning: 'none'` survives down to the body\n  // (the AI SDK otherwise drops it before `transformRequestBody` can see it).\n  return (modelId: string) =>\n    wrapLanguageModel({\n      model: provider(captureProviderModelId(modelId, \"Friendli\")),\n      middleware: friendliReasoningMiddleware,\n    });\n}\n"]}