@mastra/core 0.19.0 → 0.19.1-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/dist/agent/agent.d.ts +2 -2
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/index.cjs +11 -11
- package/dist/agent/index.js +2 -2
- package/dist/agent/input-processor/index.cjs +6 -6
- package/dist/agent/input-processor/index.js +1 -1
- package/dist/ai-tracing/index.cjs +32 -32
- package/dist/ai-tracing/index.js +1 -1
- package/dist/cache/index.cjs +3 -3
- package/dist/cache/index.js +1 -1
- package/dist/{chunk-4VNAMG7K.cjs → chunk-2C5AQMP5.cjs} +6 -6
- package/dist/{chunk-4VNAMG7K.cjs.map → chunk-2C5AQMP5.cjs.map} +1 -1
- package/dist/{chunk-JKLLXBOY.js → chunk-2EMOWXLL.js} +9 -9
- package/dist/{chunk-JKLLXBOY.js.map → chunk-2EMOWXLL.js.map} +1 -1
- package/dist/{chunk-EPMJYNEK.cjs → chunk-2F4RLQ5V.cjs} +4 -4
- package/dist/{chunk-EPMJYNEK.cjs.map → chunk-2F4RLQ5V.cjs.map} +1 -1
- package/dist/{chunk-HNBU4PI7.cjs → chunk-3I3NRXSD.cjs} +4 -4
- package/dist/{chunk-HNBU4PI7.cjs.map → chunk-3I3NRXSD.cjs.map} +1 -1
- package/dist/{chunk-SQQMX4VC.cjs → chunk-4PRV2Y55.cjs} +6 -6
- package/dist/{chunk-SQQMX4VC.cjs.map → chunk-4PRV2Y55.cjs.map} +1 -1
- package/dist/{chunk-7E4ESNZS.cjs → chunk-576KDLXN.cjs} +5 -5
- package/dist/{chunk-7E4ESNZS.cjs.map → chunk-576KDLXN.cjs.map} +1 -1
- package/dist/{chunk-PG6ZNDSR.cjs → chunk-57UPIDGK.cjs} +19 -19
- package/dist/{chunk-PG6ZNDSR.cjs.map → chunk-57UPIDGK.cjs.map} +1 -1
- package/dist/{chunk-5BQOHHCI.js → chunk-5QUE7HZF.js} +4 -4
- package/dist/{chunk-5BQOHHCI.js.map → chunk-5QUE7HZF.js.map} +1 -1
- package/dist/{chunk-CQ73JM2N.cjs → chunk-62I4SVWU.cjs} +10 -10
- package/dist/{chunk-CQ73JM2N.cjs.map → chunk-62I4SVWU.cjs.map} +1 -1
- package/dist/{chunk-COC64XPP.js → chunk-7CJKBCDL.js} +8 -8
- package/dist/{chunk-COC64XPP.js.map → chunk-7CJKBCDL.js.map} +1 -1
- package/dist/chunk-7J5DS33F.js +3 -0
- package/dist/chunk-7J5DS33F.js.map +1 -0
- package/dist/{chunk-RAXBZZKS.js → chunk-A7REAXWA.js} +3 -3
- package/dist/{chunk-RAXBZZKS.js.map → chunk-A7REAXWA.js.map} +1 -1
- package/dist/{chunk-DRVSEV5Y.cjs → chunk-BBTR6DPH.cjs} +8 -8
- package/dist/{chunk-DRVSEV5Y.cjs.map → chunk-BBTR6DPH.cjs.map} +1 -1
- package/dist/{chunk-FV3SA5TI.js → chunk-BMBWTBCL.js} +3 -3
- package/dist/{chunk-FV3SA5TI.js.map → chunk-BMBWTBCL.js.map} +1 -1
- package/dist/{chunk-NHJVMZIL.cjs → chunk-CC4KO56Z.cjs} +19 -19
- package/dist/{chunk-NHJVMZIL.cjs.map → chunk-CC4KO56Z.cjs.map} +1 -1
- package/dist/{chunk-N4PK4MOG.js → chunk-D2ZPF2AK.js} +4 -4
- package/dist/{chunk-N4PK4MOG.js.map → chunk-D2ZPF2AK.js.map} +1 -1
- package/dist/{chunk-3PQNUWJM.js → chunk-EQV2PPN2.js} +2 -4
- package/dist/chunk-EQV2PPN2.js.map +1 -0
- package/dist/chunk-FUVNHPNL.cjs +4 -0
- package/dist/chunk-FUVNHPNL.cjs.map +1 -0
- package/dist/{chunk-F6EJEELE.cjs → chunk-HJQ7ANDX.cjs} +6 -6
- package/dist/{chunk-F6EJEELE.cjs.map → chunk-HJQ7ANDX.cjs.map} +1 -1
- package/dist/{chunk-2GHLV754.cjs → chunk-HV5ND4KF.cjs} +4 -4
- package/dist/{chunk-2GHLV754.cjs.map → chunk-HV5ND4KF.cjs.map} +1 -1
- package/dist/{chunk-HQPFM22N.cjs → chunk-IB27A3HF.cjs} +16 -16
- package/dist/{chunk-HQPFM22N.cjs.map → chunk-IB27A3HF.cjs.map} +1 -1
- package/dist/{chunk-BCWRUNMS.cjs → chunk-K3UPABLX.cjs} +38 -38
- package/dist/{chunk-BCWRUNMS.cjs.map → chunk-K3UPABLX.cjs.map} +1 -1
- package/dist/{chunk-XG3SFWOH.js → chunk-KK5LUATU.js} +3 -3
- package/dist/{chunk-XG3SFWOH.js.map → chunk-KK5LUATU.js.map} +1 -1
- package/dist/{chunk-VWO3JJXC.js → chunk-LYRPXSHB.js} +4 -4
- package/dist/{chunk-VWO3JJXC.js.map → chunk-LYRPXSHB.js.map} +1 -1
- package/dist/{chunk-IAXAPVOP.js → chunk-M24QFL6S.js} +4 -4
- package/dist/{chunk-IAXAPVOP.js.map → chunk-M24QFL6S.js.map} +1 -1
- package/dist/{chunk-5HCVPQTD.js → chunk-M4AX46DS.js} +3 -3
- package/dist/{chunk-5HCVPQTD.js.map → chunk-M4AX46DS.js.map} +1 -1
- package/dist/{chunk-3WFH6YRI.js → chunk-M635OK6I.js} +4 -4
- package/dist/{chunk-3WFH6YRI.js.map → chunk-M635OK6I.js.map} +1 -1
- package/dist/{chunk-UTEH2LCJ.cjs → chunk-NLBX7Q47.cjs} +19 -19
- package/dist/{chunk-UTEH2LCJ.cjs.map → chunk-NLBX7Q47.cjs.map} +1 -1
- package/dist/{chunk-2DGWSOVQ.js → chunk-NMSLDMQ6.js} +3 -3
- package/dist/{chunk-2DGWSOVQ.js.map → chunk-NMSLDMQ6.js.map} +1 -1
- package/dist/{chunk-PJ6HF3KW.js → chunk-NVMKTP4N.js} +3 -3
- package/dist/{chunk-PJ6HF3KW.js.map → chunk-NVMKTP4N.js.map} +1 -1
- package/dist/{chunk-4BEHJSL6.js → chunk-QFKTSGBI.js} +3 -3
- package/dist/{chunk-4BEHJSL6.js.map → chunk-QFKTSGBI.js.map} +1 -1
- package/dist/{chunk-LZBVDMVQ.cjs → chunk-QMDJVXFQ.cjs} +19 -19
- package/dist/{chunk-LZBVDMVQ.cjs.map → chunk-QMDJVXFQ.cjs.map} +1 -1
- package/dist/{chunk-TIBULEK6.cjs → chunk-SZD4WTRW.cjs} +717 -275
- package/dist/chunk-SZD4WTRW.cjs.map +1 -0
- package/dist/{chunk-OBIF7QD5.js → chunk-T2CUZA2P.js} +3 -3
- package/dist/{chunk-OBIF7QD5.js.map → chunk-T2CUZA2P.js.map} +1 -1
- package/dist/{chunk-WHFNGECY.js → chunk-T3JFFQH2.js} +3 -2
- package/dist/chunk-T3JFFQH2.js.map +1 -0
- package/dist/{chunk-BUY5X7DT.js → chunk-TJHEGJNW.js} +4 -4
- package/dist/{chunk-BUY5X7DT.js.map → chunk-TJHEGJNW.js.map} +1 -1
- package/dist/{chunk-KTCBGNCZ.cjs → chunk-UU5L5GDY.cjs} +2 -4
- package/dist/chunk-UU5L5GDY.cjs.map +1 -0
- package/dist/{chunk-S7UXT3V4.cjs → chunk-WM4VQWOZ.cjs} +3 -2
- package/dist/chunk-WM4VQWOZ.cjs.map +1 -0
- package/dist/{chunk-RNIY63FP.cjs → chunk-WMGV4CS3.cjs} +59 -59
- package/dist/{chunk-RNIY63FP.cjs.map → chunk-WMGV4CS3.cjs.map} +1 -1
- package/dist/{chunk-5M6ZTQJN.js → chunk-X6PLOE2T.js} +717 -275
- package/dist/chunk-X6PLOE2T.js.map +1 -0
- package/dist/error/index.cjs +5 -5
- package/dist/error/index.d.ts +2 -1
- package/dist/error/index.d.ts.map +1 -1
- package/dist/error/index.js +1 -1
- package/dist/eval/index.cjs +3 -3
- package/dist/eval/index.js +1 -1
- package/dist/index.cjs +66 -66
- package/dist/index.js +15 -15
- package/dist/llm/index.cjs +5 -5
- package/dist/llm/index.d.ts +1 -0
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +1 -1
- package/dist/llm/model/gateway-resolver.d.ts +9 -0
- package/dist/llm/model/gateway-resolver.d.ts.map +1 -0
- package/dist/llm/model/gateways/base.d.ts +5 -4
- package/dist/llm/model/gateways/base.d.ts.map +1 -1
- package/dist/llm/model/gateways/index.d.ts +1 -0
- package/dist/llm/model/gateways/index.d.ts.map +1 -1
- package/dist/llm/model/gateways/models-dev.d.ts +3 -2
- package/dist/llm/model/gateways/models-dev.d.ts.map +1 -1
- package/dist/llm/model/gateways/netlify.d.ts +15 -0
- package/dist/llm/model/gateways/netlify.d.ts.map +1 -0
- package/dist/llm/model/openai-compatible.d.ts +8 -3
- package/dist/llm/model/openai-compatible.d.ts.map +1 -1
- package/dist/llm/model/provider-registry.generated.d.ts +8 -370
- package/dist/llm/model/provider-registry.generated.d.ts.map +1 -1
- package/dist/loop/index.cjs +2 -2
- package/dist/loop/index.js +1 -1
- package/dist/mastra/index.cjs +2 -2
- package/dist/mastra/index.js +1 -1
- package/dist/memory/index.cjs +4 -4
- package/dist/memory/index.js +1 -1
- package/dist/network/vNext/index.cjs +29 -29
- package/dist/network/vNext/index.js +2 -2
- package/dist/processors/index.cjs +10 -10
- package/dist/processors/index.js +1 -1
- package/dist/relevance/index.cjs +4 -4
- package/dist/relevance/index.js +1 -1
- package/dist/scores/index.cjs +9 -9
- package/dist/scores/index.js +2 -2
- package/dist/scores/scoreTraces/index.cjs +13 -13
- package/dist/scores/scoreTraces/index.js +4 -4
- package/dist/server/index.cjs +7 -7
- package/dist/server/index.js +2 -2
- package/dist/storage/index.cjs +25 -25
- package/dist/storage/index.js +4 -4
- package/dist/stream/index.cjs +4 -4
- package/dist/stream/index.js +1 -1
- package/dist/telemetry/index.cjs +7 -7
- package/dist/telemetry/index.js +1 -1
- package/dist/test-utils/llm-mock.cjs +2 -2
- package/dist/test-utils/llm-mock.js +1 -1
- package/dist/tts/index.cjs +2 -2
- package/dist/tts/index.js +1 -1
- package/dist/utils.cjs +17 -17
- package/dist/utils.js +1 -1
- package/dist/vector/index.cjs +4 -4
- package/dist/vector/index.js +1 -1
- package/dist/voice/index.cjs +4 -4
- package/dist/voice/index.js +1 -1
- package/dist/workflows/evented/index.cjs +10 -10
- package/dist/workflows/evented/index.js +1 -1
- package/dist/workflows/index.cjs +12 -12
- package/dist/workflows/index.js +1 -1
- package/dist/workflows/legacy/index.cjs +22 -22
- package/dist/workflows/legacy/index.js +1 -1
- package/package.json +3 -3
- package/dist/chunk-3PQNUWJM.js.map +0 -1
- package/dist/chunk-5M6ZTQJN.js.map +0 -1
- package/dist/chunk-KTCBGNCZ.cjs.map +0 -1
- package/dist/chunk-S7UXT3V4.cjs.map +0 -1
- package/dist/chunk-TIBULEK6.cjs.map +0 -1
- package/dist/chunk-WHFNGECY.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/llm/model/provider-registry.generated.ts","../src/llm/model/gateways/base.ts","../src/llm/model/gateways/models-dev.ts","../src/llm/model/gateways/netlify.ts","../src/llm/model/gateway-resolver.ts","../src/llm/model/openai-compatible.ts"],"names":["InMemoryServerCache","MastraError","buffer","controller"],"mappings":";;;;;;AAUO,IAAM,iBAAA,GAAoD;AAAA,EAC/D,eAAA,EAAiB;AAAA,IACf,GAAA,EAAK,6CAAA;AAAA,IACL,YAAA,EAAc,kBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,qBAAA;AAAA,IACN,MAAA,EAAQ,CAAC,sBAAA,EAAwB,sBAAA,EAAwB,uBAAuB,CAAA;AAAA,IAChF,MAAA,EAAQ,4CAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,UAAA,EAAY;AAAA,IACV,GAAA,EAAK,gDAAA;AAAA,IACL,YAAA,EAAc,oBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,eAAA;AAAA,IACN,MAAA,EAAQ,CAAC,oBAAA,EAAsB,wBAAwB,CAAA;AAAA,IACvD,MAAA,EAAQ,iCAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,UAAA,EAAY;AAAA,IACV,GAAA,EAAK,6CAAA;AAAA,IACL,YAAA,EAAc,kBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,aAAA;AAAA,IACN,MAAA,EAAQ,CAAC,sBAAA,EAAwB,sBAAA,EAAwB,uBAAuB,CAAA;AAAA,IAChF,MAAA,EAAQ,4CAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,GAAA,EAAK,sDAAA;AAAA,IACL,YAAA,EAAc,eAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,kBAAA;AAAA,IACN,QAAQ,CAAC,SAAA,EAAW,aAAA,EAAe,eAAA,EAAiB,YAAY,SAAS,CAAA;AAAA,IACzE,MAAA,EAAQ,oCAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,GAAA,EAAK,yEAAA;AAAA,IACL,YAAA,EAAc,mBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,CAAC,kBAAkB,CAAA;AAAA,IAC3B,MAAA,EAAQ,0DAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,GAAA,EAAK;AAAA,IACH,GAAA,EAAK,sCAAA;AAAA,IACL,YAAA,EAAc,aAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,KAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,QAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,eAAA;AAAA,MACA,oBAAA;AAAA,MACA,sBAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,oBAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACA,kBAAA;AAAA,MACA,yBAAA;AAAA,MACA,oBAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,2BAAA;AAAA,MACA,WAAA;AAAA,MACA,kBAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,+BAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,GAAA,EAAK,sDAAA;AAAA,IACL,YAAA,EAAc,gBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,QAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,8BAAA;AAAA,MACA,2BAAA;AAAA,MACA,uBAAA;AAAA,MACA,+BAAA;AAAA,MACA,6BAAA;AAAA,MACA,4BAAA;AAAA,MACA,yCAAA;AAAA,MACA,6BAAA;AAAA,MACA,6BAAA;AAAA,MACA,qBAAA;AAAA,MACA,yBAAA;AAAA,MACA,sBAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,kCAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,GAAA,EAAK,yCAAA;AAAA,IACL,YAAA,EAAc,iBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,CAAC,YAAA,EAAc,YAAY,CAAA;AAAA,IACnC,MAAA,EAAQ,8CAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,GAAA,EAAK,iDAAA;AAAA,IACL,YAAA,EAAc,cAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,MAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,+BAAA;AAAA,MACA,cAAA;AAAA,MACA,sBAAA;AAAA,MACA,yBAAA;AAAA,MACA,kBAAA;AAAA,MACA,iBAAA;AAAA,MACA,gBAAA;AAAA,MACA,+CAAA;AAAA,MACA,2CAAA;AAAA,MACA,8BAAA;AAAA,MACA,kBAAA;AAAA,MACA,6BAAA;AAAA,MACA,kCAAA;AAAA,MACA,qBAAA;AAAA,MACA,oBAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,sCAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,GAAA,EAAK,gDAAA;AAAA,IACL,YAAA,EAAc,cAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,gBAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,mBAAA;AAAA,MACA,mBAAA;AAAA,MACA,2BAAA;AAAA,MACA,eAAA;AAAA,MACA,gBAAA;AAAA,MACA,iBAAA;AAAA,MACA,mBAAA;AAAA,MACA,sBAAA;AAAA,MACA,gBAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,YAAA;AAAA,MACA,kBAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,oCAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,GAAA,EAAK,4CAAA;AAAA,IACL,YAAA,EAAc,iBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,kBAAA;AAAA,MACA,sBAAA;AAAA,MACA,qBAAA;AAAA,MACA,qBAAA;AAAA,MACA,yBAAA;AAAA,MACA,iBAAA;AAAA,MACA,qBAAA;AAAA,MACA,qBAAA;AAAA,MACA,sBAAA;AAAA,MACA,qBAAA;AAAA,MACA,qBAAA;AAAA,MACA,uBAAA;AAAA,MACA,cAAA;AAAA,MACA,sBAAA;AAAA,MACA,iBAAA;AAAA,MACA,oBAAA;AAAA,MACA,mBAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,iDAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,GAAA,EAAK,kDAAA;AAAA,IACL,YAAA,EAAc,oBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,mBAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,kBAAA;AAAA,MACA,mBAAA;AAAA,MACA,iBAAA;AAAA,MACA,4BAAA;AAAA,MACA,0BAAA;AAAA,MACA,yBAAA;AAAA,MACA,6BAAA;AAAA,MACA,6BAAA;AAAA,MACA,2BAAA;AAAA,MACA,yBAAA;AAAA,MACA,2BAAA;AAAA,MACA,6BAAA;AAAA,MACA,sBAAA;AAAA,MACA,sBAAA;AAAA,MACA,wCAAA;AAAA,MACA,yBAAA;AAAA,MACA,8BAAA;AAAA,MACA,yBAAA;AAAA,MACA,uBAAA;AAAA,MACA,oBAAA;AAAA,MACA,uBAAA;AAAA,MACA,oBAAA;AAAA,MACA,mBAAA;AAAA,MACA,0BAAA;AAAA,MACA,yBAAA;AAAA,MACA,sBAAA;AAAA,MACA,sBAAA;AAAA,MACA,uBAAA;AAAA,MACA,uBAAA;AAAA,MACA,gCAAA;AAAA,MACA,qBAAA;AAAA,MACA,uBAAA;AAAA,MACA,oBAAA;AAAA,MACA,qBAAA;AAAA,MACA,sBAAA;AAAA,MACA,oBAAA;AAAA,MACA,gBAAA;AAAA,MACA,qBAAA;AAAA,MACA,qBAAA;AAAA,MACA,eAAA;AAAA,MACA,oBAAA;AAAA,MACA,cAAA;AAAA,MACA,mBAAA;AAAA,MACA,mBAAA;AAAA,MACA,qBAAA;AAAA,MACA,oBAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,gBAAA;AAAA,MACA,kBAAA;AAAA,MACA,kBAAA;AAAA,MACA,YAAA;AAAA,MACA,mBAAA;AAAA,MACA,YAAA;AAAA,MACA,iBAAA;AAAA,MACA,iBAAA;AAAA,MACA,sBAAA;AAAA,MACA,YAAA;AAAA,MACA,iBAAA;AAAA,MACA,+BAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,6FAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,GAAA,EAAK,2CAAA;AAAA,IACL,YAAA,EAAc,kBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,UAAA;AAAA,IACN,MAAA,EAAQ,CAAC,eAAA,EAAiB,mBAAmB,CAAA;AAAA,IAC7C,MAAA,EAAQ,gDAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,GAAA,EAAK,oEAAA;AAAA,IACL,YAAA,EAAc,mBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,iBAAA;AAAA,IACN,MAAA,EAAQ,CAAC,kBAAkB,CAAA;AAAA,IAC3B,MAAA,EAAQ,0DAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,GAAA,EAAK,+CAAA;AAAA,IACL,YAAA,EAAc,gBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,WAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,wBAAA;AAAA,MACA,kBAAA;AAAA,MACA,yBAAA;AAAA,MACA,gBAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,MACA,gBAAA;AAAA,MACA,oBAAA;AAAA,MACA,kBAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,wBAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,GAAA,EAAK,2CAAA;AAAA,IACL,YAAA,EAAc,gBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,QAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,oCAAA;AAAA,MACA,oCAAA;AAAA,MACA,oBAAA;AAAA,MACA,kCAAA;AAAA,MACA,kCAAA;AAAA,MACA,mCAAA;AAAA,MACA,yCAAA;AAAA,MACA,kCAAA;AAAA,MACA,kCAAA;AAAA,MACA,8BAAA;AAAA,MACA,8CAAA;AAAA,MACA,8BAAA;AAAA,MACA,uCAAA;AAAA,MACA,2CAAA;AAAA,MACA,8BAAA;AAAA,MACA,2BAAA;AAAA,MACA,oCAAA;AAAA,MACA,iCAAA;AAAA,MACA,oCAAA;AAAA,MACA,wCAAA;AAAA,MACA,yBAAA;AAAA,MACA,kCAAA;AAAA,MACA,iCAAA;AAAA,MACA,iCAAA;AAAA,MACA,qBAAA;AAAA,MACA,8BAAA;AAAA,MACA,mCAAA;AAAA,MACA,qBAAA;AAAA,MACA,qBAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,iCAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,GAAA,EAAK,4CAAA;AAAA,IACL,YAAA,EAAc,iBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,iBAAA;AAAA,MACA,kBAAA;AAAA,MACA,gBAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,kBAAA;AAAA,MACA,yBAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,kCAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,GAAA,EAAK,qDAAA;AAAA,IACL,YAAA,EAAc,cAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,eAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,gCAAA;AAAA,MACA,+BAAA;AAAA,MACA,yBAAA;AAAA,MACA,yBAAA;AAAA,MACA,iCAAA;AAAA,MACA,8BAAA;AAAA,MACA,sCAAA;AAAA,MACA,sBAAA;AAAA,MACA,sBAAA;AAAA,MACA,2BAAA;AAAA,MACA,2BAAA;AAAA,MACA,oCAAA;AAAA,MACA,oCAAA;AAAA,MACA,6BAAA;AAAA,MACA,6CAAA;AAAA,MACA,qCAAA;AAAA,MACA,gCAAA;AAAA,MACA,+BAAA;AAAA,MACA,mCAAA;AAAA,MACA,kCAAA;AAAA,MACA,iCAAA;AAAA,MACA,qBAAA;AAAA,MACA,sCAAA;AAAA,MACA,oCAAA;AAAA,MACA,oCAAA;AAAA,MACA,kCAAA;AAAA,MACA,qCAAA;AAAA,MACA,mCAAA;AAAA,MACA,iCAAA;AAAA,MACA,gCAAA;AAAA,MACA,mCAAA;AAAA,MACA,iBAAA;AAAA,MACA,+BAAA;AAAA,MACA,gCAAA;AAAA,MACA,qCAAA;AAAA,MACA,2BAAA;AAAA,MACA,2BAAA;AAAA,MACA,yBAAA;AAAA,MACA,+BAAA;AAAA,MACA,gCAAA;AAAA,MACA,yBAAA;AAAA,MACA,+BAAA;AAAA,MACA,gBAAA;AAAA,MACA,qBAAA;AAAA,MACA,qBAAA;AAAA,MACA,eAAA;AAAA,MACA,oBAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,mBAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,gBAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,0CAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,UAAA,EAAY;AAAA,IACV,GAAA,EAAK,8CAAA;AAAA,IACL,YAAA,EAAc,kBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,aAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,yCAAA;AAAA,MACA,yBAAA;AAAA,MACA,yBAAA;AAAA,MACA,yCAAA;AAAA,MACA,6BAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,iDAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,GAAA,EAAK,kDAAA;AAAA,IACL,YAAA,EAAc,iBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,CAAC,sCAAA,EAAwC,kCAAkC,CAAA;AAAA,IACnF,MAAA,EAAQ,yDAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,WAAA,EAAa;AAAA,IACX,GAAA,EAAK,mDAAA;AAAA,IACL,YAAA,EAAc,UAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,cAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,oCAAA;AAAA,MACA,qCAAA;AAAA,MACA,kCAAA;AAAA,MACA,kCAAA;AAAA,MACA,8BAAA;AAAA,MACA,8BAAA;AAAA,MACA,6BAAA;AAAA,MACA,kCAAA;AAAA,MACA,iBAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,iDAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,GAAA,EAAK,6CAAA;AAAA,IACL,YAAA,EAAc,kBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,cAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,kBAAA;AAAA,MACA,iBAAA;AAAA,MACA,iBAAA;AAAA,MACA,mBAAA;AAAA,MACA,gBAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,0BAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,UAAA,EAAY;AAAA,IACV,GAAA,EAAK,kDAAA;AAAA,IACL,YAAA,EAAc,oBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,YAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,2BAAA;AAAA,MACA,2BAAA;AAAA,MACA,2CAAA;AAAA,MACA,yBAAA;AAAA,MACA,uBAAA;AAAA,MACA,oBAAA;AAAA,MACA,gBAAA;AAAA,MACA,cAAA;AAAA,MACA,mBAAA;AAAA,MACA,mBAAA;AAAA,MACA,qBAAA;AAAA,MACA,oBAAA;AAAA,MACA,kBAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,8BAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,GAAA,EAAK,mEAAA;AAAA,IACL,YAAA,EAAc,8BAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,QAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,kBAAA;AAAA,MACA,qBAAA;AAAA,MACA,gBAAA;AAAA,MACA,kBAAA;AAAA,MACA,uBAAA;AAAA,MACA,kBAAA;AAAA,MACA,uBAAA;AAAA,MACA,qCAAA;AAAA,MACA,uCAAA;AAAA,MACA,gCAAA;AAAA,MACA,gCAAA;AAAA,MACA,kCAAA;AAAA,MACA,gBAAA;AAAA,MACA,8BAAA;AAAA,MACA,8BAAA;AAAA,MACA,qBAAA;AAAA,MACA,0BAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,+CAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,SAAA,EAAW;AAAA,IACT,GAAA,EAAK,kDAAA;AAAA,IACL,YAAA,EAAc,mBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,WAAA;AAAA,IACN,MAAA,EAAQ,CAAC,SAAA,EAAW,eAAe,CAAA;AAAA,IACnC,MAAA,EAAQ,wCAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,KAAA,EAAO;AAAA,IACL,GAAA,EAAK,oDAAA;AAAA,IACL,YAAA,EAAc,eAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,kBAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,oCAAA;AAAA,MACA,oCAAA;AAAA,MACA,qCAAA;AAAA,MACA,8BAAA;AAAA,MACA,8BAAA;AAAA,MACA,kCAAA;AAAA,MACA,mCAAA;AAAA,MACA,2CAAA;AAAA,MACA,+BAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,4DAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,GAAA,EAAK,4CAAA;AAAA,IACL,YAAA,EAAc,gBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,QAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,eAAA;AAAA,MACA,OAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,QAAA;AAAA,MACA,mBAAA;AAAA,MACA,mBAAA;AAAA,MACA,mBAAA;AAAA,MACA,aAAA;AAAA,MACA,OAAA;AAAA,MACA,mBAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA;AAAA,MACA,kBAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,yCAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,qBAAA,EAAuB;AAAA,IACrB,GAAA,EAAK,8DAAA;AAAA,IACL,YAAA,EAAc,eAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,sBAAA;AAAA,IACN,QAAQ,CAAC,SAAA,EAAW,aAAA,EAAe,eAAA,EAAiB,YAAY,SAAS,CAAA;AAAA,IACzE,MAAA,EAAQ,kDAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,UAAA,EAAY;AAAA,IACV,GAAA,EAAK,4CAAA;AAAA,IACL,YAAA,EAAc,oBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,YAAA;AAAA,IACN,MAAA,EAAQ,CAAC,OAAA,EAAS,WAAA,EAAa,mBAAmB,qBAAqB,CAAA;AAAA,IACvE,MAAA,EAAQ,4BAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,UAAA,EAAY;AAAA,IACV,GAAA,EAAK,+CAAA;AAAA,IACL,YAAA,EAAc,oBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,YAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,4BAAA;AAAA,MACA,6BAAA;AAAA,MACA,yBAAA;AAAA,MACA,2BAAA;AAAA,MACA,2BAAA;AAAA,MACA,6BAAA;AAAA,MACA,8CAAA;AAAA,MACA,iDAAA;AAAA,MACA,gCAAA;AAAA,MACA,6BAAA;AAAA,MACA,yCAAA;AAAA,MACA,gCAAA;AAAA,MACA,wCAAA;AAAA,MACA,uCAAA;AAAA,MACA,2BAAA;AAAA,MACA,gCAAA;AAAA,MACA,iCAAA;AAAA,MACA,wBAAA;AAAA,MACA,6BAAA;AAAA,MACA,kCAAA;AAAA,MACA,yBAAA;AAAA,MACA,uBAAA;AAAA,MACA,qCAAA;AAAA,MACA,qCAAA;AAAA,MACA,2BAAA;AAAA,MACA,uBAAA;AAAA,MACA,uBAAA;AAAA,MACA,wBAAA;AAAA,MACA,6BAAA;AAAA,MACA,0CAAA;AAAA,MACA,wCAAA;AAAA,MACA,+BAAA;AAAA,MACA,0BAAA;AAAA,MACA,0BAAA;AAAA,MACA,gCAAA;AAAA,MACA,+BAAA;AAAA,MACA,oCAAA;AAAA,MACA,+BAAA;AAAA,MACA,oCAAA;AAAA,MACA,4BAAA;AAAA,MACA,8BAAA;AAAA,MACA,6BAAA;AAAA,MACA,0CAAA;AAAA,MACA,0CAAA;AAAA,MACA,+CAAA;AAAA,MACA,8BAAA;AAAA,MACA,oBAAA;AAAA,MACA,yBAAA;AAAA,MACA,yBAAA;AAAA,MACA,8CAAA;AAAA,MACA,4BAAA;AAAA,MACA,2BAAA;AAAA,MACA,gBAAA;AAAA,MACA,qBAAA;AAAA,MACA,oBAAA;AAAA,MACA,cAAA;AAAA,MACA,mBAAA;AAAA,MACA,mBAAA;AAAA,MACA,mBAAA;AAAA,MACA,qBAAA;AAAA,MACA,oBAAA;AAAA,MACA,gBAAA;AAAA,MACA,8BAAA;AAAA,MACA,0BAAA;AAAA,MACA,yBAAA;AAAA,MACA,8BAAA;AAAA,MACA,6BAAA;AAAA,MACA,kCAAA;AAAA,MACA,mCAAA;AAAA,MACA,8BAAA;AAAA,MACA,mCAAA;AAAA,MACA,qBAAA;AAAA,MACA,4BAAA;AAAA,MACA,iCAAA;AAAA,MACA,oCAAA;AAAA,MACA,2BAAA;AAAA,MACA,kCAAA;AAAA,MACA,yBAAA;AAAA,MACA,qBAAA;AAAA,MACA,oBAAA;AAAA,MACA,kBAAA;AAAA,MACA,uBAAA;AAAA,MACA,gBAAA;AAAA,MACA,kCAAA;AAAA,MACA,mBAAA;AAAA,MACA,qBAAA;AAAA,MACA,wBAAA;AAAA,MACA,uBAAA;AAAA,MACA,oCAAA;AAAA,MACA,aAAA;AAAA,MACA,kBAAA;AAAA,MACA,kBAAA;AAAA,MACA,uBAAA;AAAA,MACA,aAAA;AAAA,MACA,kBAAA;AAAA,MACA,uBAAA;AAAA,MACA,uBAAA;AAAA,MACA,cAAA;AAAA,MACA,kBAAA;AAAA,MACA,uBAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,8BAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,SAAA,EAAW;AAAA,IACT,GAAA,EAAK,+CAAA;AAAA,IACL,YAAA,EAAc,mBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,WAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,oCAAA;AAAA,MACA,uCAAA;AAAA,MACA,uCAAA;AAAA,MACA,wCAAA;AAAA,MACA,4BAAA;AAAA,MACA,iCAAA;AAAA,MACA,4BAAA;AAAA,MACA,iCAAA;AAAA,MACA,8BAAA;AAAA,MACA,uCAAA;AAAA,MACA,uCAAA;AAAA,MACA,sCAAA;AAAA,MACA,qCAAA;AAAA,MACA,sCAAA;AAAA,MACA,sDAAA;AAAA,MACA,8CAAA;AAAA,MACA,gCAAA;AAAA,MACA,qCAAA;AAAA,MACA,wBAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,+BAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,SAAA,EAAW;AAAA,IACT,GAAA,EAAK,sDAAA;AAAA,IACL,YAAA,EAAc,mBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,YAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,qCAAA;AAAA,MACA,2CAAA;AAAA,MACA,6BAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,8BAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,GAAA,EAAK,uDAAA;AAAA,IACL,YAAA,EAAc,eAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,UAAA;AAAA,IACN,QAAQ,CAAC,SAAA,EAAW,aAAA,EAAe,eAAA,EAAiB,YAAY,SAAS,CAAA;AAAA,IACzE,MAAA,EAAQ,2CAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,GAAA,EAAK,6CAAA;AAAA,IACL,YAAA,EAAc,8BAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,UAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,oCAAA;AAAA,MACA,oCAAA;AAAA,MACA,yCAAA;AAAA,MACA,8BAAA;AAAA,MACA,8BAAA;AAAA,MACA,2BAAA;AAAA,MACA,qBAAA;AAAA,MACA,qBAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,6BAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,GAAA,EAAK;AAAA,IACH,GAAA,EAAK,+CAAA;AAAA,IACL,YAAA,EAAc,eAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,MAAA;AAAA,IACN,QAAQ,CAAC,SAAA,EAAW,aAAA,EAAe,eAAA,EAAiB,YAAY,SAAS,CAAA;AAAA,IACzE,MAAA,EAAQ,2CAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,SAAA,EAAW;AAAA,IACT,GAAA,EAAK,2CAAA;AAAA,IACL,YAAA,EAAc,mBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,WAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,gBAAA;AAAA,MACA,4BAAA;AAAA,MACA,oCAAA;AAAA,MACA,4BAAA;AAAA,MACA,4BAAA;AAAA,MACA,mCAAA;AAAA,MACA,gCAAA;AAAA,MACA,kCAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,8BAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,GAAA,EAAK,gDAAA;AAAA,IACL,YAAA,EAAc,kBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,UAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,6BAAA;AAAA,MACA,oCAAA;AAAA,MACA,yBAAA;AAAA,MACA,oCAAA;AAAA,MACA,yBAAA;AAAA,MACA,uBAAA;AAAA,MACA,gBAAA;AAAA,MACA,qBAAA;AAAA,MACA,oBAAA;AAAA,MACA,cAAA;AAAA,MACA,mBAAA;AAAA,MACA,mBAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,iDAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,KAAA,EAAO;AAAA,IACL,GAAA,EAAK,8CAAA;AAAA,IACL,YAAA,EAAc,eAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,OAAA;AAAA,IACN,MAAA,EAAQ,CAAC,MAAA,EAAQ,eAAA,EAAiB,gBAAgB,CAAA;AAAA,IAClD,MAAA,EAAQ,sDAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,GAAA,EAAK,2CAAA;AAAA,IACL,YAAA,EAAc,kBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,UAAA;AAAA,IACN,MAAA,EAAQ,CAAC,oBAAA,EAAsB,yBAAA,EAA2B,sBAAsB,CAAA;AAAA,IAChF,MAAA,EAAQ,4BAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,SAAA,EAAW;AAAA,IACT,GAAA,EAAK,+CAAA;AAAA,IACL,YAAA,EAAc,mBAAA;AAAA,IACd,YAAA,EAAc,WAAA;AAAA,IACd,IAAA,EAAM,WAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,2BAAA;AAAA,MACA,4BAAA;AAAA,MACA,4BAAA;AAAA,MACA,4BAAA;AAAA,MACA,yBAAA;AAAA,MACA,wBAAA;AAAA,MACA,0BAAA;AAAA,MACA,0BAAA;AAAA,MACA,wBAAA;AAAA,MACA,0BAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,wDAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,GAAA,EAAK,wDAAA;AAAA,IACL,YAAA,EAAc,mBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,cAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,4CAAA;AAAA,MACA,4CAAA;AAAA,MACA,yCAAA;AAAA,MACA,mCAAA;AAAA,MACA,uCAAA;AAAA,MACA,wCAAA;AAAA,MACA,uCAAA;AAAA,MACA,4CAAA;AAAA,MACA,2CAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,4BAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,UAAA,EAAY;AAAA,IACV,GAAA,EAAK,yDAAA;AAAA,IACL,YAAA,EAAc,oBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,YAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,oCAAA;AAAA,MACA,oCAAA;AAAA,MACA,kCAAA;AAAA,MACA,kCAAA;AAAA,MACA,mCAAA;AAAA,MACA,qCAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,8DAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,KAAA,EAAO;AAAA,IACL,GAAA,EAAK,kDAAA;AAAA,IACL,YAAA,EAAc,eAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,OAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,6CAAA;AAAA,MACA,yCAAA;AAAA,MACA,yCAAA;AAAA,MACA,wBAAA;AAAA,MACA,uBAAA;AAAA,MACA,wCAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,8CAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,GAAA,EAAK,6CAAA;AAAA,IACL,YAAA,EAAc,kBAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,UAAA;AAAA,IACN,MAAA,EAAQ,CAAC,cAAA,EAAgB,gCAAA,EAAkC,mBAAmB,CAAA;AAAA,IAC9E,MAAA,EAAQ,oDAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,YAAA,EAAc,CAAC,eAAA,EAAiB,iBAAiB,CAAA;AAAA,IACjD,YAAA,EAAc,eAAA;AAAA,IACd,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,MAAA,EAAQ;AAAA,MACN,oCAAA;AAAA,MACA,kCAAA;AAAA,MACA,oCAAA;AAAA,MACA,sCAAA;AAAA,MACA,qCAAA;AAAA,MACA,sCAAA;AAAA,MACA,oCAAA;AAAA,MACA,mCAAA;AAAA,MACA,mCAAA;AAAA,MACA,4BAAA;AAAA,MACA,yBAAA;AAAA,MACA,8CAAA;AAAA,MACA,8BAAA;AAAA,MACA,yBAAA;AAAA,MACA,8BAAA;AAAA,MACA,uBAAA;AAAA,MACA,yCAAA;AAAA,MACA,iCAAA;AAAA,MACA,uCAAA;AAAA,MACA,WAAA;AAAA,MACA,mBAAA;AAAA,MACA,qBAAA;AAAA,MACA,gBAAA;AAAA,MACA,gBAAA;AAAA,MACA,0BAAA;AAAA,MACA,cAAA;AAAA,MACA,oBAAA;AAAA,MACA,mBAAA;AAAA,MACA,gBAAA;AAAA,MACA,qBAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA;AACF;AAEJ;AA6pBO,SAAS,kBAAkB,UAAA,EAAgD;AAChF,EAAA,OAAO,kBAAkB,UAA4C,CAAA;AACvE;AAuBO,SAAS,iBAAiB,WAAA,EAAmE;AAClG,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,OAAA,CAAQ,GAAG,CAAA;AAE/C,EAAA,IAAI,oBAAoB,EAAA,EAAI;AAE1B,IAAA,MAAM,QAAA,GAAW,WAAA,CAAY,SAAA,CAAU,CAAA,EAAG,eAAe,CAAA;AACzD,IAAA,MAAM,OAAA,GAAU,WAAA,CAAY,SAAA,CAAU,eAAA,GAAkB,CAAC,CAAA;AAEzD,IAAA,IAAI,YAAY,OAAA,EAAS;AACvB,MAAA,OAAO;AAAA,QACL,QAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAAA,EACF;AAGA,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,IAAA;AAAA,IACV,OAAA,EAAS;AAAA,GACX;AACF;;;AClrDO,IAAe,qBAAf,MAAkC;AAmCzC,CAAA;;;AC3BA,IAAM,2BAAA,GAAuE;AAAA,EAC3E,MAAA,EAAQ;AAAA,IACN,GAAA,EAAK;AAAA,GACP;AAAA,EACA,SAAA,EAAW;AAAA,IACT,GAAA,EAAK,+CAAA;AAAA,IACL,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,QAAA,EAAU;AAAA,IACR,GAAA,EAAK;AAAA,GACP;AAAA,EACA,GAAA,EAAK;AAAA,IACH,GAAA,EAAK;AAAA,GACP;AAAA,EACA,OAAA,EAAS;AAAA,IACP,GAAA,EAAK;AAAA,GACP;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,GAAA,EAAK;AAAA,GACP;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,GAAA,EAAK;AAAA,GACP;AAAA,EACA,UAAA,EAAY;AAAA,IACV,GAAA,EAAK;AAAA,GACP;AAAA,EACA,SAAA,EAAW;AAAA,IACT,GAAA,EAAK;AAAA,GACP;AAAA,EACA,UAAA,EAAY;AAAA,IACV,GAAA,EAAK;AAAA,GACP;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,GAAA,EAAK,kDAAA;AAAA,IACL,YAAA,EAAc;AAAA;AAElB,CAAA;AAEO,IAAM,gBAAA,GAAN,cAA+B,kBAAA,CAAmB;AAAA,EAC9C,IAAA,GAAO,YAAA;AAAA,EACP,MAAA,GAAS,MAAA;AAAA;AAAA,EAEV,kBAAkD,EAAC;AAAA,EAE3D,YAAY,eAAA,EAAkD;AAC5D,IAAA,KAAA,EAAM;AACN,IAAA,IAAI,eAAA,OAAsB,eAAA,GAAkB,eAAA;AAAA,EAC9C;AAAA,EAEA,MAAM,cAAA,GAA0D;AAC9D,IAAA,OAAA,CAAQ,KAAK,2CAA2C,CAAA;AAExD,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,6BAA6B,CAAA;AAC1D,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,iCAAA,EAAoC,QAAA,CAAS,UAAU,CAAA,CAAE,CAAA;AAAA,IAC3E;AAEA,IAAA,MAAM,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAA,EAAK;AAElC,IAAA,MAAM,kBAAkD,EAAC;AAEzD,IAAA,KAAA,MAAW,CAAC,UAAA,EAAY,YAAY,KAAK,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,EAAG;AAE7D,MAAA,IAAI,CAAC,YAAA,IAAgB,OAAO,iBAAiB,QAAA,IAAY,CAAC,aAAa,MAAA,EAAQ;AAG/E,MAAA,MAAM,YAAA,GAAe,UAAA;AAGrB,MAAA,MAAM,kBAAA,GACJ,YAAA,CAAa,GAAA,KAAQ,2BAAA,IACrB,aAAa,GAAA,KAAQ,iBAAA;AAAA,MACrB,YAAA,IAAgB,2BAAA;AAGlB,MAAA,MAAM,eAAe,YAAA,CAAa,GAAA,IAAO,aAAa,GAAA,IAAO,YAAA,CAAa,IAAI,MAAA,GAAS,CAAA;AAEvF,MAAA,IAAI,sBAAsB,YAAA,EAAc;AAEtC,QAAA,MAAM,WAAW,MAAA,CAAO,IAAA,CAAK,YAAA,CAAa,MAAM,EAAE,IAAA,EAAK;AAGvD,QAAA,IAAI,GAAA,GAAM,YAAA,CAAa,GAAA,IAAO,2BAAA,CAA4B,YAAY,CAAA,EAAG,GAAA;AAGzE,QAAA,IAAI,GAAA,IAAO,CAAC,GAAA,CAAI,QAAA,CAAS,mBAAmB,KAAK,CAAC,GAAA,CAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AAC3E,UAAA,GAAA,GAAM,GAAA,CAAI,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA,GAAI,mBAAA;AAAA,QACjC;AAGA,QAAA,IAAI,CAAC,GAAA,EAAK;AACR,UAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,SAAA,EAAY,YAAY,CAAA,sBAAA,CAAwB,CAAA;AAC7D,UAAA;AAAA,QACF;AAIA,QAAA,MAAM,YAAA,GAAe,YAAA,CAAa,GAAA,GAAM,CAAC,CAAA,IAAK,CAAA,EAAG,YAAA,CAAa,WAAA,EAAY,CAAE,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAC,CAAA,QAAA,CAAA;AAG9F,QAAA,MAAM,YAAA,GAAe,2BAAA,CAA4B,YAAY,CAAA,EAAG,YAAA,IAAgB,eAAA;AAEhF,QAAA,eAAA,CAAgB,YAAY,CAAA,GAAI;AAAA,UAC9B,GAAA;AAAA,UACA,YAAA;AAAA,UACA,YAAA;AAAA,UACA,IAAA,EAAM,YAAA,CAAa,IAAA,IAAQ,UAAA,CAAW,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAY,GAAI,UAAA,CAAW,KAAA,CAAM,CAAC,CAAA;AAAA,UAClF,MAAA,EAAQ,SAAS,MAAA,CAAO,CAAA,EAAA,KAAM,CAAC,EAAA,CAAG,QAAA,CAAS,OAAO,CAAC,CAAA;AAAA;AAAA,UACnD,QAAQ,YAAA,CAAa,GAAA;AAAA;AAAA,UACrB,OAAA,EAAS,CAAA,UAAA;AAAA,SACX;AAAA,MACF,CAAA,MAAO;AACL,QAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,iBAAA,EAAoB,YAAA,CAAa,IAAI,CAAA,CAAE,CAAA;AAAA,MACtD;AAAA,IACF;AAGA,IAAA,IAAA,CAAK,eAAA,GAAkB,eAAA;AAEvB,IAAA,OAAA,CAAQ,KAAK,CAAA,MAAA,EAAS,MAAA,CAAO,KAAK,eAAe,CAAA,CAAE,MAAM,CAAA,4BAAA,CAA8B,CAAA;AACvF,IAAA,OAAA,CAAQ,KAAK,YAAA,EAAc,MAAA,CAAO,KAAK,eAAe,CAAA,CAAE,MAAM,CAAA;AAC9D,IAAA,OAAO,eAAA;AAAA,EACT;AAAA,EAEA,QAAA,CAAS,SAAiB,OAAA,EAA2E;AAEnG,IAAA,MAAM,CAAC,QAAA,EAAU,GAAG,UAAU,CAAA,GAAI,OAAA,CAAQ,MAAM,GAAG,CAAA;AAInD,IAAA,IAAI,CAAC,QAAA,IAAY,CAAC,UAAA,CAAW,MAAA,EAAQ;AACnC,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,eAAA,CAAgB,QAAQ,CAAA;AAE5C,IAAA,IAAI,CAAC,QAAQ,GAAA,EAAK;AAChB,MAAA,OAAO,KAAA;AAAA,IACT;AAGA,IAAA,MAAM,aAAA,GAAgB,GAAG,QAAA,CAAS,WAAA,GAAc,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAC,CAAA,SAAA,CAAA;AAClE,IAAA,MAAM,aAAA,GAAgB,QAAQ,aAAa,CAAA;AAE3C,IAAA,OAAO,iBAAiB,MAAA,CAAO,GAAA;AAAA,EACjC;AAAA,EAEA,YAAA,CACE,SACA,OAAA,EAC0D;AAC1D,IAAA,MAAM,CAAC,QAAQ,CAAA,GAAI,OAAA,CAAQ,MAAM,GAAG,CAAA;AACpC,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,OAAO,EAAC;AAAA,IACV;AAEA,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,eAAA,CAAgB,QAAQ,CAAA;AAE5C,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,OAAO,EAAC;AAAA,IACV;AAEA,IAAA,MAAM,MAAA,GAAS,OAAO,MAAA,CAAO,YAAA,KAAiB,WAAW,OAAA,CAAQ,MAAA,CAAO,YAAY,CAAA,GAAI,MAAA;AACxF,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,OAAO,EAAC;AAAA,IACV;AAEA,IAAA,MAAM,UAAkC,EAAC;AAEzC,IAAA,IAAI,MAAA,CAAO,YAAA,KAAiB,eAAA,IAAmB,CAAC,OAAO,YAAA,EAAc;AACnE,MAAA,OAAA,CAAQ,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,MAAM,CAAA,CAAA;AAAA,IAC7C,CAAA,MAAO;AACL,MAAA,OAAA,CAAQ,MAAA,CAAO,YAAY,CAAA,GAAI,MAAA;AAAA,IACjC;AAGA,IAAA,IAAI,aAAa,WAAA,EAAa;AAC5B,MAAA,OAAA,CAAQ,mBAAmB,CAAA,GAAI,YAAA;AAAA,IACjC;AAEA,IAAA,OAAO,OAAA;AAAA,EACT;AACF,CAAA;;;AC/KO,IAAM,cAAA,GAAN,cAA6B,kBAAA,CAAmB;AAAA,EAC5C,IAAA,GAAO,SAAA;AAAA,EACP,MAAA,GAAS,SAAA;AAAA;AAAA,EACV,UAAA,GAAa,IAAIA,qCAAA,EAAoB;AAAA,EAE7C,MAAM,cAAA,GAA0D;AAC9D,IAAA,OAAA,CAAQ,KAAK,+CAA+C,CAAA;AAC5D,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,qDAAqD,CAAA;AAClF,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,8BAAA,EAAiC,QAAA,CAAS,UAAU,CAAA,CAAE,CAAA;AAAA,IACxE;AACA,IAAA,MAAM,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAA,EAAK;AAClC,IAAA,MAAM,OAAA,GAA0B;AAAA,MAC9B,YAAA,EAAc,CAAC,eAAA,EAAiB,iBAAiB,CAAA;AAAA,MACjD,YAAA,EAAc,eAAA;AAAA;AAAA,MACd,IAAA,EAAM,CAAA,OAAA,CAAA;AAAA,MACN,OAAA,EAAS,CAAA,OAAA,CAAA;AAAA,MACT,QAAQ;AAAC,KACX;AAEA,IAAA,KAAA,MAAW,CAAC,YAAY,QAAQ,CAAA,IAAK,OAAO,OAAA,CAAQ,IAAA,CAAK,SAAS,CAAA,EAAG;AACnE,MAAA,KAAA,MAAW,KAAA,IAAS,SAAS,MAAA,EAAQ;AACnC,QAAA,OAAA,CAAQ,OAAO,IAAA,CAAK,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAAA;AAAA,MAC9C;AAAA,IACF;AACA,IAAA,OAAA,CAAQ,IAAA,CAAK,SAAS,MAAA,CAAO,IAAA,CAAK,KAAK,SAAS,CAAA,CAAE,MAAM,CAAA,2BAAA,CAA6B,CAAA;AACrF,IAAA,OAAO,EAAE,OAAA,EAAQ;AAAA,EACnB;AAAA,EAEA,MAAM,QAAA,CAAS,OAAA,EAAiB,OAAA,EAA0D;AAExF,IAAA,IAAI,CAAC,OAAA,CAAQ,UAAA,CAAW,GAAG,IAAA,CAAK,MAAM,GAAG,CAAA,EAAG;AAC1C,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,KAAA,CAAM,GAAG,CAAA;AAC/B,IAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACpB,MAAA,OAAO,KAAA;AAAA,IACT;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,CAAC,CAAA;AACxB,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,OAAO,KAAA;AAAA,IACT;AAGA,IAAA,MAAM,MAAA,GAAS,QAAQ,iBAAiB,CAAA;AACxC,IAAA,MAAM,YAAA,GAAe,QAAQ,eAAe,CAAA;AAE5C,IAAA,IAAI,CAAC,YAAA,EAAc;AACjB,MAAA,MAAM,IAAIC,6BAAA,CAAY;AAAA,QACpB,EAAA,EAAI,0BAAA;AAAA,QACJ,MAAA,EAAQ,KAAA;AAAA,QACR,QAAA,EAAU,SAAA;AAAA,QACV,IAAA,EAAM,kEAAkE,OAAO,CAAA;AAAA,OAChF,CAAA;AAAA,IACH;AAEA,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAM,IAAIA,6BAAA,CAAY;AAAA,QACpB,EAAA,EAAI,4BAAA;AAAA,QACJ,MAAA,EAAQ,KAAA;AAAA,QACR,QAAA,EAAU,SAAA;AAAA,QACV,IAAA,EAAM,oEAAoE,OAAO,CAAA;AAAA,OAClF,CAAA;AAAA,IACH;AAEA,IAAA,IAAI;AACF,MAAA,MAAM,SAAA,GAAY,MAAM,IAAA,CAAK,eAAA,CAAgB,QAAQ,YAAY,CAAA;AACjE,MAAA,OAAO,CAAA,EAAG,UAAU,GAAG,CAAA,gBAAA,CAAA;AAAA,IACzB,SAAS,KAAA,EAAO;AACd,MAAA,MAAM,IAAIA,6BAAA,CAAY;AAAA,QACpB,EAAA,EAAI,6BAAA;AAAA,QACJ,MAAA,EAAQ,KAAA;AAAA,QACR,QAAA,EAAU,SAAA;AAAA,QACV,IAAA,EAAM,CAAA,iDAAA,EAAoD,OAAO,CAAA,EAAA,EAAK,KAAA,YAAiB,QAAQ,KAAA,CAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,OAC7H,CAAA;AAAA,IACH;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,eAAA,CAAgB,MAAA,EAAgB,YAAA,EAA0C;AACtF,IAAA,MAAM,QAAA,GAAW,CAAA,cAAA,EAAiB,MAAM,CAAA,CAAA,EAAI,YAAY,CAAA,CAAA;AAGxD,IAAA,MAAM,MAAA,GAAU,MAAM,IAAA,CAAK,UAAA,CAAW,IAAI,QAAQ,CAAA;AAClD,IAAA,IAAI,UAAU,MAAA,CAAO,SAAA,GAAY,KAAK,GAAA,EAAI,GAAI,MAAO,EAAA,EAAI;AAEvD,MAAA,OAAO,EAAE,KAAA,EAAO,MAAA,CAAO,KAAA,EAAO,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,IAChD;AAGA,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,CAAA,qCAAA,EAAwC,MAAM,CAAA,iBAAA,CAAA,EAAqB;AAAA,MAC9F,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS;AAAA,QACP,aAAA,EAAe,UAAU,YAAY,CAAA;AAAA;AACvC,KACD,CAAA;AAED,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,MAAM,KAAA,GAAQ,MAAM,QAAA,CAAS,IAAA,EAAK;AAClC,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,wCAAA,EAA2C,SAAS,MAAM,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAAA;AAAA,IACvF;AAEA,IAAA,MAAM,aAAA,GAAiB,MAAM,QAAA,CAAS,IAAA,EAAK;AAG3C,IAAA,MAAM,IAAA,CAAK,UAAA,CAAW,GAAA,CAAI,QAAA,EAAU;AAAA,MAClC,OAAO,aAAA,CAAc,KAAA;AAAA,MACrB,KAAK,aAAA,CAAc,GAAA;AAAA,MACnB,WAAW,aAAA,CAAc;AAAA,KAC1B,CAAA;AAED,IAAA,OAAO,EAAE,KAAA,EAAO,aAAA,CAAc,KAAA,EAAO,GAAA,EAAK,cAAc,GAAA,EAAI;AAAA,EAC9D;AAAA,EACA,MAAM,YAAA,CAAa,OAAA,EAAiB,OAAA,EAAkE;AACpG,IAAA,MAAM,MAAA,GAAS,QAAQ,iBAAiB,CAAA;AACxC,IAAA,MAAM,YAAA,GAAe,QAAQ,eAAe,CAAA;AAE5C,IAAA,IAAI,CAAC,YAAA,EAAc;AACjB,MAAA,MAAM,IAAIA,6BAAA,CAAY;AAAA,QACpB,EAAA,EAAI,0BAAA;AAAA,QACJ,MAAA,EAAQ,KAAA;AAAA,QACR,QAAA,EAAU,SAAA;AAAA,QACV,IAAA,EAAM,kEAAkE,OAAO,CAAA;AAAA,OAChF,CAAA;AAAA,IACH;AAEA,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAM,IAAIA,6BAAA,CAAY;AAAA,QACpB,EAAA,EAAI,4BAAA;AAAA,QACJ,MAAA,EAAQ,KAAA;AAAA,QACR,QAAA,EAAU,SAAA;AAAA,QACV,IAAA,EAAM,oEAAoE,OAAO,CAAA;AAAA,OAClF,CAAA;AAAA,IACH;AAEA,IAAA,IAAI;AACF,MAAA,MAAM,SAAA,GAAY,MAAM,IAAA,CAAK,eAAA,CAAgB,QAAQ,YAAY,CAAA;AACjE,MAAA,OAAO;AAAA,QACL,aAAA,EAAe,CAAA,OAAA,EAAU,SAAA,CAAU,KAAK,CAAA;AAAA,OAC1C;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,MAAM,IAAIA,6BAAA,CAAY;AAAA,QACpB,EAAA,EAAI,6BAAA;AAAA,QACJ,MAAA,EAAQ,KAAA;AAAA,QACR,QAAA,EAAU,SAAA;AAAA,QACV,IAAA,EAAM,CAAA,iDAAA,EAAoD,OAAO,CAAA,EAAA,EAAK,KAAA,YAAiB,QAAQ,KAAA,CAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,OAC7H,CAAA;AAAA,IACH;AAAA,EACF;AACF,CAAA;;;ACjLA,SAAS,4BAA4B,IAAA,EAAc;AACjD,EAAA,OAAO,MAAA,CAAO,WAAA,CAAY,MAAA,CAAO,OAAA,CAAQ,iBAAiB,CAAA,CAAE,MAAA,CAAO,CAAC,CAAC,WAAW,MAAM,CAAA,KAAM,MAAA,CAAO,OAAA,KAAY,IAAI,CAAC,CAAA;AACtH;AAEA,IAAM,QAAA,GAAW,CAAC,IAAI,cAAA,EAAe,EAAG,IAAI,gBAAA,CAAiB,2BAAA,CAA4B,CAAA,UAAA,CAAY,CAAC,CAAC,CAAA;AAKvG,SAAS,oBAAoB,OAAA,EAA4C;AAEvE,EAAA,MAAM,eAAA,GAAkB,QAAA,CAAS,IAAA,CAAK,CAAC,CAAA,KAA0B,CAAA,CAAE,MAAA,IAAU,OAAA,CAAQ,UAAA,CAAW,CAAA,EAAG,CAAA,CAAE,MAAM,GAAG,CAAC,CAAA;AAC/G,EAAA,IAAI,eAAA,EAAiB;AACnB,IAAA,OAAO,eAAA;AAAA,EACT;AAGA,EAAA,MAAM,qBAAqB,QAAA,CAAS,MAAA,CAAO,CAAC,CAAA,KAA0B,CAAC,EAAE,MAAM,CAAA;AAC/E,EAAA,KAAA,MAAW,WAAW,kBAAA,EAAoB;AAExC,IAAA,OAAO,OAAA;AAAA,EACT;AAEA,EAAA,OAAO,IAAA;AACT;AAKA,eAAsB,kBAAA,CACpB,OAAA,EACA,OAAA,GAAkC,OAAA,CAAQ,GAAA,EAKzC;AACD,EAAA,MAAM,OAAA,GAAU,oBAAoB,OAAO,CAAA;AAE3C,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO,EAAE,GAAA,EAAK,KAAA,EAAO,SAAS,EAAC,EAAG,iBAAiB,OAAA,EAAQ;AAAA,EAC7D;AAEA,EAAA,MAAM,GAAA,GAAM,MAAM,OAAA,CAAQ,QAAA,CAAS,SAAS,OAAO,CAAA;AACnD,EAAA,IAAI,QAAQ,KAAA,EAAO;AACjB,IAAA,OAAO,EAAE,GAAA,EAAK,KAAA,EAAO,SAAS,EAAC,EAAG,iBAAiB,OAAA,EAAQ;AAAA,EAC7D;AAEA,EAAA,MAAM,OAAA,GAAU,QAAQ,YAAA,GAAe,MAAM,QAAQ,YAAA,CAAa,OAAA,EAAS,OAAO,CAAA,GAAI,EAAC;AAEvF,EAAA,IAAI,eAAA,GAAkB,OAAA;AAGtB,EAAA,MAAM,SAAS,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG,OAAA,CAAQ,MAAM,CAAA,CAAA,CAAA,GAAM,IAAA;AACvD,EAAA,IAAI,MAAA,IAAU,eAAA,CAAgB,UAAA,CAAW,MAAM,CAAA,EAAG;AAChD,IAAA,eAAA,GAAkB,eAAA,CAAgB,SAAA,CAAU,MAAA,CAAO,MAAM,CAAA;AAAA,EAC3D;AAGA,EAAA,MAAM,eAAA,GAAkB,eAAA,CAAgB,OAAA,CAAQ,GAAG,CAAA;AACnD,EAAA,IAAI,oBAAoB,EAAA,EAAI;AAC1B,IAAA,eAAA,GAAkB,eAAA,CAAgB,SAAA,CAAU,eAAA,GAAkB,CAAC,CAAA;AAAA,EACjE;AAEA,EAAA,OAAO,EAAE,GAAA,EAAK,OAAA,EAAS,eAAA,EAAgB;AACzC;;;ACzDA,SAAS,aAAA,CAAc,EAAE,QAAA,EAAU,MAAA,EAAO,EAA+D;AACvG,EAAA,IAAI,QAAQ,OAAO,MAAA;AAEnB,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,MAAM,MAAA,GAAS,kBAAkB,QAAQ,CAAA;AACzC,IAAA,IAAI,OAAO,MAAA,EAAQ,YAAA,KAAiB,CAAA,MAAA,CAAA,EAAU;AAC5C,MAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAO,YAAY,CAAA;AAAA,IACxC;AACA,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAA,EAAQ,YAAY,CAAA,EAAG;AACvC,MAAA,KAAA,MAAW,GAAA,IAAO,OAAO,YAAA,EAAc;AACrC,QAAA,IAAI,QAAQ,GAAA,CAAI,GAAG,GAAG,OAAO,OAAA,CAAQ,IAAI,GAAG,CAAA;AAAA,MAC9C;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;AAgCO,IAAM,wBAAN,MAAuD;AAAA,EACnD,oBAAA,GAAuB,IAAA;AAAA,EACvB,2BAAA,GAA8B,MAAA;AAAA,EAC9B,yBAAA,GAA4B,IAAA;AAAA,EAC5B,iBAAA,GAAoB,IAAA;AAAA,EACpB,gBAAgB,EAAC;AAAA,EAEjB,OAAA;AAAA,EACA,QAAA;AAAA,EAED,MAAA;AAAA,EACA,WAAA;AAAA;AAAA,EAER,YAAY,MAAA,EAAqD;AAE/D,IAAA,IAAI,YAAA;AAEJ,IAAA,IAAI,OAAO,WAAW,QAAA,EAAU;AAE9B,MAAA,IAAI,KAAA,GAAQ,KAAA;AACZ,MAAA,IAAI;AACF,QAAA,IAAI,IAAI,MAAM,CAAA;AACd,QAAA,KAAA,GAAQ,IAAA;AAAA,MACV,CAAA,CAAA,MAAQ;AAAA,MAER;AAEA,MAAA,IAAI,KAAA,EAAO;AAET,QAAA,YAAA,GAAe;AAAA,UACb,EAAA,EAAI,SAAA;AAAA,UACJ,GAAA,EAAK;AAAA,SACP;AACA,QAAA,IAAA,CAAK,QAAA,GAAW,mBAAA;AAChB,QAAA,IAAA,CAAK,WAAA,GAAc,SAAA;AACnB,QAAA,IAAA,CAAK,MAAA,GAAS,EAAE,EAAA,EAAI,SAAA,EAAW,KAAK,MAAA,EAAO;AAAA,MAC7C,CAAA,MAAO;AAEL,QAAA,IAAA,CAAK,WAAA,GAAc,MAAA;AACnB,QAAA,MAAM,eAAA,GAAkB,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AAE1C,QAAA,IAAI,oBAAoB,EAAA,EAAI;AAC1B,UAAA,MAAM,QAAA,GAAW,MAAA,CAAO,SAAA,CAAU,CAAA,EAAG,eAAe,CAAA;AACpD,UAAA,MAAM,OAAA,GAAU,MAAA,CAAO,SAAA,CAAU,eAAA,GAAkB,CAAC,CAAA;AAEpD,UAAA,YAAA,GAAe;AAAA,YACb,EAAA,EAAI,OAAA;AAAA,YACJ,MAAA,EAAQ,aAAA,CAAc,EAAE,QAAA,EAAU;AAAA,WACpC;AACA,UAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAAA,QAClB,CAAA,MAAO;AAEL,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,uBAAA,EAA0B,MAAM,CAAA,+CAAA,CAAiD,CAAA;AAAA,QACnG;AAAA,MACF;AAAA,IACF,CAAA,MAAO;AAEL,MAAA,YAAA,GAAe,MAAA;AACf,MAAA,IAAA,CAAK,cAAc,MAAA,CAAO,EAAA;AAG1B,MAAA,MAAM,MAAA,GAAS,gBAAA,CAAiB,MAAA,CAAO,EAAE,CAAA;AACzC,MAAA,IAAA,CAAK,QAAA,GAAW,OAAO,QAAA,IAAY,mBAAA;AAEnC,MAAA,IAAI,MAAA,CAAO,QAAA,IAAY,MAAA,CAAO,OAAA,KAAY,OAAO,EAAA,EAAI;AACnD,QAAA,YAAA,CAAa,KAAK,MAAA,CAAO,OAAA;AAAA,MAC3B;AAGA,MAAA,IAAI,CAAC,aAAa,MAAA,EAAQ;AACxB,QAAA,YAAA,CAAa,SAAS,aAAA,CAAc,EAAE,UAAU,MAAA,CAAO,QAAA,IAAY,QAAW,CAAA;AAAA,MAChF;AAAA,IACF;AAGA,IAAA,IAAA,CAAK,UAAU,YAAA,CAAa,EAAA;AAC5B,IAAA,IAAA,CAAK,MAAA,GAAS,YAAA;AAAA,EAChB;AAAA,EAEQ,wBAAwB,QAAA,EAAuD;AACrF,IAAA,OAAO,QAAA,CACJ,IAAI,CAAA,GAAA,KAAO;AACV,MAAA,IAAI,GAAA,CAAI,SAAS,QAAA,EAAU;AACzB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,QAAA;AAAA,UACN,SAAS,GAAA,CAAI;AAAA,SACf;AAAA,MACF;AAEA,MAAA,IAAI,GAAA,CAAI,SAAS,MAAA,EAAQ;AAEvB,QAAA,MAAM,YAAA,GAAe,GAAA,CAAI,OAAA,CACtB,GAAA,CAAI,CAAA,IAAA,KAAQ;AACX,UAAA,IAAI,IAAA,CAAK,SAAS,MAAA,EAAQ;AACxB,YAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,KAAK,IAAA,EAAK;AAAA,UACzC;AAEA,UAAA,IAAI,IAAA,CAAK,SAAS,MAAA,EAAQ;AACxB,YAAA,OAAO;AAAA,cACL,IAAA,EAAM,WAAA;AAAA,cACN,SAAA,EAAW,EAAE,GAAA,EAAK,IAAA,CAAK,IAAA;AAAK,aAC9B;AAAA,UACF;AACA,UAAA,OAAO,IAAA;AAAA,QACT,CAAC,CAAA,CACA,MAAA,CAAO,OAAO,CAAA;AAGjB,QAAA,IAAI,aAAa,KAAA,CAAM,CAAA,CAAA,KAAK,CAAA,EAAG,IAAA,KAAS,MAAM,CAAA,EAAG;AAC/C,UAAA,OAAO;AAAA,YACL,IAAA,EAAM,MAAA;AAAA,YACN,OAAA,EAAS,aAAa,GAAA,CAAI,CAAA,CAAA,KAAK,GAAG,IAAA,IAAQ,EAAE,CAAA,CAAE,IAAA,CAAK,EAAE;AAAA,WACvD;AAAA,QACF;AAEA,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,MAAA;AAAA,UACN,OAAA,EAAS;AAAA,SACX;AAAA,MACF;AAEA,MAAA,IAAI,GAAA,CAAI,SAAS,WAAA,EAAa;AAC5B,QAAA,MAAM,WAAA,GAAc,GAAA,CAAI,OAAA,CACrB,MAAA,CAAO,UAAQ,IAAA,CAAK,IAAA,KAAS,MAAM,CAAA,CACnC,IAAI,CAAA,IAAA,KAAQ,IAAA,CAAK,IAAI,CAAA,CACrB,KAAK,EAAE,CAAA;AAEV,QAAA,MAAM,SAAA,GAAY,GAAA,CAAI,OAAA,CACnB,MAAA,CAAO,CAAA,IAAA,KAAQ,KAAK,IAAA,KAAS,WAAW,CAAA,CACxC,GAAA,CAAI,CAAA,IAAA,MAAS;AAAA,UACZ,IAAI,IAAA,CAAK,UAAA;AAAA,UACT,IAAA,EAAM,UAAA;AAAA,UACN,QAAA,EAAU;AAAA,YACR,MAAM,IAAA,CAAK,QAAA;AAAA,YACX,WAAW,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,KAAA,IAAS,EAAE;AAAA;AAC5C,SACF,CAAE,CAAA;AAEJ,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,WAAA;AAAA,UACN,SAAS,WAAA,IAAe,IAAA;AAAA,UACxB,GAAI,SAAA,CAAU,MAAA,GAAS,CAAA,IAAK,EAAE,YAAY,SAAA;AAAU,SACtD;AAAA,MACF;AAEA,MAAA,IAAI,GAAA,CAAI,SAAS,MAAA,EAAQ;AACvB,QAAA,OAAO,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,CAAA,YAAA,MAAiB;AAAA,UACtC,IAAA,EAAM,MAAA;AAAA,UACN,cAAc,YAAA,CAAa,UAAA;AAAA,UAC3B,OAAA,EAAS,IAAA,CAAK,SAAA,CAAU,YAAA,CAAa,MAAM;AAAA,SAC7C,CAAE,CAAA;AAAA,MACJ;AAEA,MAAA,OAAO,GAAA;AAAA,IACT,CAAC,EACA,IAAA,EAAK;AAAA,EACV;AAAA,EAEQ,qBAAqB,KAAA,EAA+D;AAC1F,IAAA,IAAI,CAAC,SAAS,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,MAAA,KAAW,GAAG,OAAO,MAAA;AAEtD,IAAA,OAAO,MAAA,CAAO,QAAQ,KAAK,CAAA,CAAE,IAAI,CAAC,CAAC,IAAA,EAAM,IAAI,CAAA,KAAM;AACjD,MAAA,IAAI,IAAA,CAAK,SAAS,UAAA,EAAY;AAC5B,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,UAAA;AAAA,UACN,QAAA,EAAU;AAAA,YACR,MAAM,IAAA,CAAK,IAAA;AAAA,YACX,aAAa,IAAA,CAAK,WAAA;AAAA,YAClB,UAAA,EAAY,IAAA,CAAK,WAAA,IAAe;AAAC;AACnC,SACF;AAAA,MACF;AAEA,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,UAAA;AAAA,QACN,QAAA,EAAU;AAAA,UACR,IAAA;AAAA,UACA,WAAA,EAAa,kBAAkB,IAAI,CAAA,CAAA;AAAA,UACnC,YAAY;AAAC;AACf,OACF;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AAAA,EAEQ,gBAAgB,MAAA,EAAoD;AAC1E,IAAA,QAAQ,MAAA;AAAQ,MACd,KAAK,MAAA;AACH,QAAA,OAAO,MAAA;AAAA,MACT,KAAK,QAAA;AAAA,MACL,KAAK,YAAA;AACH,QAAA,OAAO,QAAA;AAAA,MACT,KAAK,YAAA;AAAA,MACL,KAAK,eAAA;AACH,QAAA,OAAO,YAAA;AAAA,MACT,KAAK,gBAAA;AACH,QAAA,OAAO,gBAAA;AAAA,MACT;AACE,QAAA,OAAO,SAAA;AAAA;AACX,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAc,oBAAA,GAAmG;AAE/G,IAAA,MAAM,gBAAA,GAAmB,CAAC,IAAA,CAAK,MAAA,CAAO,GAAA;AAEtC,IAAA,IAAI,gBAAA,EAAkB;AAEpB,MAAA,MAAM,EAAE,KAAK,OAAA,EAAS,eAAA,KAAoB,MAAM,kBAAA,CAAmB,KAAK,WAAW,CAAA;AAEnF,MAAA,IAAI,QAAQ,KAAA,EAAO;AACjB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,6BAAA,EAAgC,IAAA,CAAK,WAAW,CAAA,CAAE,CAAA;AAAA,MACpE;AAGA,MAAA,MAAM,YAAA,GAAe;AAAA,QACnB,cAAA,EAAgB,kBAAA;AAAA,QAChB,GAAG,OAAA;AAAA,QACH,GAAG,KAAK,MAAA,CAAO;AAAA,OACjB;AAEA,MAAA,OAAO,EAAE,GAAA,EAAK,OAAA,EAAS,YAAA,EAAc,SAAS,eAAA,EAAgB;AAAA,IAChE,CAAA,MAAO;AAEL,MAAA,IAAI,CAAC,IAAA,CAAK,MAAA,CAAO,GAAA,EAAK;AACpB,QAAA,MAAM,IAAI,MAAM,6CAA6C,CAAA;AAAA,MAC/D;AAEA,MAAA,MAAM,OAAA,GAAkC;AAAA,QACtC,cAAA,EAAgB,kBAAA;AAAA,QAChB,GAAG,KAAK,MAAA,CAAO;AAAA,OACjB;AAGA,MAAA,IAAI,IAAA,CAAK,OAAO,MAAA,EAAQ;AAEtB,QAAA,MAAM,iBAAiB,IAAA,CAAK,QAAA,KAAa,sBAAsB,iBAAA,CAAkB,IAAA,CAAK,QAAQ,CAAA,GAAI,MAAA;AAClG,QAAA,IAAI,cAAA,EAAgB,iBAAiB,WAAA,EAAa;AAChD,UAAA,OAAA,CAAQ,WAAW,CAAA,GAAI,IAAA,CAAK,MAAA,CAAO,MAAA;AAAA,QACrC,CAAA,MAAO;AACL,UAAA,OAAA,CAAQ,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,IAAA,CAAK,OAAO,MAAM,CAAA,CAAA;AAAA,QACzD;AAAA,MACF;AAEA,MAAA,OAAO,EAAE,KAAK,IAAA,CAAK,MAAA,CAAO,KAAK,OAAA,EAAS,OAAA,EAAS,KAAK,OAAA,EAAQ;AAAA,IAChE;AAAA,EACF;AAAA,EAEQ,cAAA,GAAuB;AAG7B,IAAA,MAAM,cAAA,GAAiB,CAAC,IAAA,CAAK,MAAA,CAAO,GAAA;AACpC,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA;AAAA,IACF;AAGA,IAAA,IAAI,CAAC,IAAA,CAAK,MAAA,CAAO,MAAA,IAAU,IAAA,CAAK,aAAa,mBAAA,EAAqB;AAEhE,MAAA,MAAM,cAAA,GAAiB,iBAAA,CAAkB,IAAA,CAAK,QAAQ,CAAA;AACtD,MAAA,IAAI,gBAAgB,YAAA,EAAc;AAChC,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,CAAA,gCAAA,EAAmC,IAAA,CAAK,QAAQ,CAAA,kBAAA,EAAqB,eAAe,YAAY,CAAA,sBAAA;AAAA,SAClG;AAAA,MACF,CAAA,MAAO;AACL,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,CAAA,gCAAA,EAAmC,KAAK,QAAQ,CAAA,kDAAA;AAAA,SAClD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,UAAA,GAA6B;AACjC,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KAEF;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,OAAA,EAKZ;AAED,IAAA,IAAI;AACF,MAAA,IAAA,CAAK,cAAA,EAAe;AAAA,IACtB,SAAS,KAAA,EAAO;AAEd,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,IAAI,cAAA,CAAe;AAAA,UACzB,MAAM,UAAA,EAAY;AAChB,YAAA,UAAA,CAAW,OAAA,CAAQ;AAAA,cACjB,IAAA,EAAM,OAAA;AAAA,cACN,OAAO,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK;AAAA,aAChC,CAAA;AAAA,UAChC;AAAA,SACD,CAAA;AAAA,QACD,UAAU;AAAC,OACb;AAAA,IACF;AAEA,IAAA,IAAI;AAEF,MAAA,MAAM,EAAE,KAAK,OAAA,EAAS,OAAA,EAAS,iBAAgB,GAAI,MAAM,KAAK,oBAAA,EAAqB;AAEnF,MAAA,MAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,UAAA,EAAY,iBAAgB,GAAI,OAAA;AAGvD,MAAA,MAAM,IAAA,GAAY;AAAA,QAChB,QAAA,EAAU,IAAA,CAAK,uBAAA,CAAwB,MAAM,CAAA;AAAA,QAC7C,KAAA,EAAO,eAAA;AAAA,QACP,MAAA,EAAQ,IAAA;AAAA,QACR,GAAG;AAAA,OACL;AAEA,MAAA,MAAM,WAAA,GAAc,IAAA,CAAK,oBAAA,CAAqB,KAAK,CAAA;AACnD,MAAA,IAAI,WAAA,EAAa;AACf,QAAA,IAAA,CAAK,KAAA,GAAQ,WAAA;AACb,QAAA,IAAI,UAAA,EAAY;AACd,UAAA,IAAA,CAAK,WAAA,GACH,UAAA,CAAW,IAAA,KAAS,MAAA,GAChB,MAAA,GACA,WAAW,IAAA,KAAS,UAAA,GAClB,UAAA,GACA,UAAA,CAAW,IAAA,KAAS,MAAA,GAClB,SACA,UAAA,CAAW,IAAA,KAAS,MAAA,GAClB,EAAE,IAAA,EAAM,UAAA,EAAY,QAAA,EAAU,EAAE,IAAA,EAAM,UAAA,CAAW,QAAA,EAAS,EAAE,GAC5D,MAAA;AAAA,QACd;AAAA,MACF;AAGA,MAAA,IAAI,OAAA,CAAQ,cAAA,EAAgB,IAAA,KAAS,MAAA,EAAQ;AAC3C,QAAA,IAAA,CAAK,eAAA,GAAkB;AAAA,UACrB,IAAA,EAAM,aAAA;AAAA,UACN,WAAA,EAAa;AAAA,YACX,IAAA,EAAM,UAAA;AAAA,YACN,MAAA,EAAQ,IAAA;AAAA,YACR,MAAA,EAAQ,QAAQ,cAAA,CAAe;AAAA;AACjC,SACF;AAAA,MACF;AAEA,MAAA,MAAM,SAAA,GAAY;AAAA,QAChB,MAAA,EAAQ,MAAA;AAAA,QACR,OAAA;AAAA,QACA,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA;AAAA,QACzB,QAAQ,OAAA,CAAQ;AAAA,OAClB;AACA,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,EAAK,SAAS,CAAA;AAE3C,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,KAAA,GAAQ,MAAM,QAAA,CAAS,IAAA,EAAK;AAGlC,QAAA,IAAI,QAAA,CAAS,MAAA,KAAW,GAAA,IAAO,QAAA,CAAS,WAAW,GAAA,EAAK;AACtD,UAAA,MAAM,cAAA,GAAiB,iBAAA,CAAkB,IAAA,CAAK,QAAQ,CAAA;AACtD,UAAA,IAAI,gBAAgB,YAAA,EAAc;AAChC,YAAA,MAAM,IAAI,KAAA;AAAA,cACR,CAAA,oCAAA,EAAuC,IAAA,CAAK,QAAQ,CAAA,qBAAA,EAAwB,eAAe,YAAY,CAAA,kDAAA;AAAA,aACzG;AAAA,UACF;AAAA,QACF;AAEA,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,6BAAA,EAAgC,SAAS,MAAM,CAAA,GAAA,EAAM,KAAK,CAAA,CAAE,CAAA;AAAA,MAC9E;AAEA,MAAA,MAAM,MAAA,GAAS,QAAA,CAAS,IAAA,EAAM,SAAA,EAAU;AACxC,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,IAAI,MAAM,+BAA+B,CAAA;AAAA,MACjD;AAEA,MAAA,MAAM,OAAA,GAAU,IAAI,WAAA,EAAY;AAChC,MAAA,IAAI,MAAA,GAAS,EAAA;AACb,MAAA,IAAI,SAAA,GAAY,KAAA;AAChB,MAAA,MAAM,eAAA,uBAAsB,GAAA,EAAwE;AACpG,MAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAA;AACtD,MAAA,MAAM,UAAU,IAAA,CAAK,OAAA;AAErB,MAAA,IAAI,YAAA,GAAe,KAAA;AAEnB,MAAA,MAAM,MAAA,GAAS,IAAI,cAAA,CAA0C;AAAA,QAC3D,MAAM,MAAM,UAAA,EAAY;AACtB,UAAA,IAAI;AAEF,YAAA,UAAA,CAAW,OAAA,CAAQ;AAAA,cACjB,IAAA,EAAM,cAAA;AAAA,cACN,UAAU;AAAC,aACZ,CAAA;AAED,YAAA,OAAO,IAAA,EAAM;AACX,cAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,MAAM,OAAO,IAAA,EAAK;AAE1C,cAAA,IAAI,IAAA,EAAM;AAER,gBAAA,KAAA,MAAW,CAAC,CAAA,EAAG,QAAQ,CAAA,IAAK,eAAA,EAAiB;AAC3C,kBAAA,IAAI,CAAC,SAAS,IAAA,IAAQ,QAAA,CAAS,MAAM,QAAA,CAAS,IAAA,IAAQ,SAAS,IAAA,EAAM;AACnE,oBAAA,UAAA,CAAW,OAAA,CAAQ;AAAA,sBACjB,IAAA,EAAM,WAAA;AAAA,sBACN,YAAY,QAAA,CAAS,EAAA;AAAA,sBACrB,UAAU,QAAA,CAAS,IAAA;AAAA,sBACnB,KAAA,EAAO,SAAS,IAAA,IAAQ;AAAA,qBACzB,CAAA;AAAA,kBACH;AAAA,gBACF;AAEA,gBAAA,UAAA,CAAW,KAAA,EAAM;AACjB,gBAAA;AAAA,cACF;AAEA,cAAA,MAAA,IAAU,QAAQ,MAAA,CAAO,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAM,CAAA;AAChD,cAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA;AAC/B,cAAA,MAAA,GAAS,KAAA,CAAM,KAAI,IAAK,EAAA;AAExB,cAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,gBAAA,IAAI,KAAK,IAAA,EAAK,KAAM,MAAM,IAAA,CAAK,IAAA,OAAW,cAAA,EAAgB;AACxD,kBAAA;AAAA,gBACF;AAEA,gBAAA,IAAI,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA,EAAG;AAC7B,kBAAA,IAAI;AACF,oBAAA,MAAM,OAA0B,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA;AAGxD,oBAAA,IAAI,CAAC,SAAA,IAAa,IAAA,CAAK,EAAA,EAAI;AACzB,sBAAA,UAAA,CAAW,OAAA,CAAQ;AAAA,wBACjB,IAAA,EAAM,mBAAA;AAAA,wBACN,IAAI,IAAA,CAAK,EAAA;AAAA,wBACT,OAAA,EAAS,KAAK,KAAA,IAAS,OAAA;AAAA,wBACvB,SAAA,EAAW,IAAI,IAAA,CAAK,IAAA,CAAK,OAAA,GAAU,KAAK,OAAA,GAAU,GAAA,GAAO,IAAA,CAAK,GAAA,EAAK;AAAA,uBACpE,CAAA;AACD,sBAAA,SAAA,GAAY,IAAA;AAAA,oBACd;AAEA,oBAAA,MAAM,MAAA,GAAS,IAAA,CAAK,OAAA,GAAU,CAAC,CAAA;AAC/B,oBAAA,IAAI,CAAC,MAAA,EAAQ;AAGb,oBAAA,IAAI,MAAA,CAAO,OAAO,OAAA,EAAS;AACzB,sBAAA,IAAI,CAAC,YAAA,EAAc;AACjB,wBAAA,UAAA,CAAW,QAAQ,EAAE,IAAA,EAAM,YAAA,EAAc,EAAA,EAAI,UAAU,CAAA;AACvD,wBAAA,YAAA,GAAe,IAAA;AAAA,sBACjB;AAEA,sBAAA,UAAA,CAAW,OAAA,CAAQ;AAAA,wBACjB,IAAA,EAAM,YAAA;AAAA,wBACN,EAAA,EAAI,QAAA;AAAA,wBACJ,KAAA,EAAO,OAAO,KAAA,CAAM;AAAA,uBACrB,CAAA;AAAA,oBACH,WAAW,YAAA,EAAc;AACvB,sBAAA,UAAA,CAAW,QAAQ,EAAE,IAAA,EAAM,UAAA,EAAY,EAAA,EAAI,UAAU,CAAA;AACrD,sBAAA,YAAA,GAAe,KAAA;AAAA,oBACjB;AAGA,oBAAA,IAAI,MAAA,CAAO,OAAO,UAAA,EAAY;AAC5B,sBAAA,KAAA,MAAW,QAAA,IAAY,MAAA,CAAO,KAAA,CAAM,UAAA,EAAY;AAC9C,wBAAA,MAAM,QAAQ,QAAA,CAAS,KAAA;AAEvB,wBAAA,IAAI,CAAC,eAAA,CAAgB,GAAA,CAAI,KAAK,CAAA,EAAG;AAE/B,0BAAA,IAAI,QAAA,CAAS,EAAA,IAAM,QAAA,CAAS,QAAA,EAAU,IAAA,EAAM;AAC1C,4BAAA,UAAA,CAAW,OAAA,CAAQ;AAAA,8BACjB,IAAA,EAAM,kBAAA;AAAA,8BACN,IAAI,QAAA,CAAS,EAAA;AAAA,8BACb,QAAA,EAAU,SAAS,QAAA,CAAS;AAAA,6BAC7B,CAAA;AAAA,0BACH;AAEA,0BAAA,eAAA,CAAgB,IAAI,KAAA,EAAO;AAAA,4BACzB,EAAA,EAAI,SAAS,EAAA,IAAM,EAAA;AAAA,4BACnB,IAAA,EAAM,QAAA,CAAS,QAAA,EAAU,IAAA,IAAQ,EAAA;AAAA,4BACjC,IAAA,EAAM;AAAA,2BACP,CAAA;AAAA,wBACH;AAEA,wBAAA,MAAMC,OAAAA,GAAS,eAAA,CAAgB,GAAA,CAAI,KAAK,CAAA;AAExC,wBAAA,IAAI,SAAS,EAAA,EAAI;AACf,0BAAAA,OAAAA,CAAO,KAAK,QAAA,CAAS,EAAA;AAAA,wBACvB;AAEA,wBAAA,IAAI,QAAA,CAAS,UAAU,IAAA,EAAM;AAC3B,0BAAAA,OAAAA,CAAO,IAAA,GAAO,QAAA,CAAS,QAAA,CAAS,IAAA;AAAA,wBAClC;AAEA,wBAAA,IAAI,QAAA,CAAS,UAAU,SAAA,EAAW;AAChC,0BAAAA,OAAAA,CAAO,IAAA,IAAQ,QAAA,CAAS,QAAA,CAAS,SAAA;AACjC,0BAAA,UAAA,CAAW,OAAA,CAAQ;AAAA,4BACjB,IAAA,EAAM,kBAAA;AAAA,4BACN,IAAIA,OAAAA,CAAO,EAAA;AAAA,4BACX,KAAA,EAAO,SAAS,QAAA,CAAS;AAAA,2BAC1B,CAAA;AAGD,0BAAA,IAAI;AACF,4BAAA,IAAA,CAAK,KAAA,CAAMA,QAAO,IAAI,CAAA;AACtB,4BAAA,IAAIA,OAAAA,CAAO,EAAA,IAAMA,OAAAA,CAAO,IAAA,EAAM;AAC5B,8BAAA,UAAA,CAAW,OAAA,CAAQ;AAAA,gCACjB,IAAA,EAAM,gBAAA;AAAA,gCACN,IAAIA,OAAAA,CAAO;AAAA,+BACZ,CAAA;AAED,8BAAA,UAAA,CAAW,OAAA,CAAQ;AAAA,gCACjB,IAAA,EAAM,WAAA;AAAA,gCACN,YAAYA,OAAAA,CAAO,EAAA;AAAA,gCACnB,UAAUA,OAAAA,CAAO,IAAA;AAAA,gCACjB,OAAOA,OAAAA,CAAO;AAAA,+BACf,CAAA;AAED,8BAAA,eAAA,CAAgB,IAAI,KAAA,EAAO;AAAA,gCACzB,IAAIA,OAAAA,CAAO,EAAA;AAAA,gCACX,MAAMA,OAAAA,CAAO,IAAA;AAAA,gCACb,MAAMA,OAAAA,CAAO,IAAA;AAAA,gCACb,IAAA,EAAM;AAAA,+BACP,CAAA;AAAA,4BACH;AAAA,0BACF,CAAA,CAAA,MAAQ;AAAA,0BAER;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAGA,oBAAA,IAAI,OAAO,aAAA,EAAe;AAExB,sBAAA,eAAA,CAAgB,KAAA,EAAM;AAEtB,sBAAA,UAAA,CAAW,OAAA,CAAQ;AAAA,wBACjB,IAAA,EAAM,QAAA;AAAA,wBACN,YAAA,EAAc,eAAA,CAAgB,MAAA,CAAO,aAAa,CAAA;AAAA,wBAClD,KAAA,EAAO,KAAK,KAAA,GACR;AAAA,0BACE,WAAA,EAAa,IAAA,CAAK,KAAA,CAAM,aAAA,IAAiB,CAAA;AAAA,0BACzC,YAAA,EAAc,IAAA,CAAK,KAAA,CAAM,iBAAA,IAAqB,CAAA;AAAA,0BAC9C,WAAA,EAAa,IAAA,CAAK,KAAA,CAAM,YAAA,IAAgB;AAAA,yBAC1C,GACA;AAAA,0BACE,WAAA,EAAa,CAAA;AAAA,0BACb,YAAA,EAAc,CAAA;AAAA,0BACd,WAAA,EAAa;AAAA;AACf,uBACL,CAAA;AAAA,oBACH;AAAA,kBACF,SAAS,CAAA,EAAG;AACV,oBAAA,OAAA,CAAQ,KAAA,CAAM,2BAA2B,CAAC,CAAA;AAAA,kBAC5C;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF,SAAS,KAAA,EAAO;AACd,YAAA,OAAO;AAAA,cACL,MAAA,EAAQ,IAAI,cAAA,CAAe;AAAA,gBACzB,MAAMC,WAAAA,EAAY;AAChB,kBAAAA,YAAW,OAAA,CAAQ;AAAA,oBACjB,IAAA,EAAM,OAAA;AAAA,oBACN,OAAO,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK;AAAA,mBAChC,CAAA;AAAA,gBAChC;AAAA,eACD,CAAA;AAAA,cACD,UAAU;AAAC,aACb;AAAA,UACF;AAAA,QACF;AAAA,OACD,CAAA;AAED,MAAA,OAAO;AAAA,QACL,MAAA;AAAA,QACA,SAAS,EAAE,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA,EAAE;AAAA,QACtC,QAAA,EAAU,EAAE,OAAA,EAAS,MAAA,CAAO,YAAY,QAAA,CAAS,OAAA,CAAQ,OAAA,EAAS,CAAA,EAAE;AAAA,QACpE,UAAU;AAAC,OACb;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,IAAI,cAAA,CAAe;AAAA,UACzB,MAAM,UAAA,EAAY;AAChB,YAAA,UAAA,CAAW,OAAA,CAAQ;AAAA,cACjB,IAAA,EAAM,OAAA;AAAA,cACN,OAAO,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK;AAAA,aAChC,CAAA;AAAA,UAChC;AAAA,SACD,CAAA;AAAA,QACD,UAAU;AAAC,OACb;AAAA,IACF;AAAA,EACF;AACF","file":"chunk-SZD4WTRW.cjs","sourcesContent":["/**\n * THIS FILE IS AUTO-GENERATED - DO NOT EDIT\n * Generated from model gateway providers\n */\n\nimport type { ProviderConfig } from './gateways/base';\n\n/**\n * Provider configurations for OpenAI-compatible APIs\n */\nexport const PROVIDER_REGISTRY: Record<string, ProviderConfig> = {\n 'moonshotai-cn': {\n url: 'https://api.moonshot.cn/v1/chat/completions',\n apiKeyEnvVar: 'MOONSHOT_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Moonshot AI (China)',\n models: ['kimi-k2-0711-preview', 'kimi-k2-0905-preview', 'kimi-k2-turbo-preview'],\n docUrl: 'https://platform.moonshot.cn/docs/api/chat',\n gateway: 'models.dev',\n },\n lucidquery: {\n url: 'https://lucidquery.com/api/v1/chat/completions',\n apiKeyEnvVar: 'LUCIDQUERY_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'LucidQuery AI',\n models: ['lucidnova-rf1-100b', 'lucidquery-nexus-coder'],\n docUrl: 'https://lucidquery.com/api/docs',\n gateway: 'models.dev',\n },\n moonshotai: {\n url: 'https://api.moonshot.ai/v1/chat/completions',\n apiKeyEnvVar: 'MOONSHOT_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Moonshot AI',\n models: ['kimi-k2-0711-preview', 'kimi-k2-0905-preview', 'kimi-k2-turbo-preview'],\n docUrl: 'https://platform.moonshot.ai/docs/api/chat',\n gateway: 'models.dev',\n },\n 'zai-coding-plan': {\n url: 'https://api.z.ai/api/coding/paas/v4/chat/completions',\n apiKeyEnvVar: 'ZHIPU_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Z.AI Coding Plan',\n models: ['glm-4.5', 'glm-4.5-air', 'glm-4.5-flash', 'glm-4.5v', 'glm-4.6'],\n docUrl: 'https://docs.z.ai/devpack/overview',\n gateway: 'models.dev',\n },\n alibaba: {\n url: 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions',\n apiKeyEnvVar: 'DASHSCOPE_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Alibaba',\n models: ['qwen3-coder-plus'],\n docUrl: 'https://www.alibabacloud.com/help/en/model-studio/models',\n gateway: 'models.dev',\n },\n xai: {\n url: 'https://api.x.ai/v1/chat/completions',\n apiKeyEnvVar: 'XAI_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'xAI',\n models: [\n 'grok-2',\n 'grok-2-1212',\n 'grok-2-latest',\n 'grok-2-vision',\n 'grok-2-vision-1212',\n 'grok-2-vision-latest',\n 'grok-3',\n 'grok-3-fast',\n 'grok-3-fast-latest',\n 'grok-3-latest',\n 'grok-3-mini',\n 'grok-3-mini-fast',\n 'grok-3-mini-fast-latest',\n 'grok-3-mini-latest',\n 'grok-4',\n 'grok-4-fast',\n 'grok-4-fast-non-reasoning',\n 'grok-beta',\n 'grok-code-fast-1',\n 'grok-vision-beta',\n ],\n docUrl: 'https://docs.x.ai/docs/models',\n gateway: 'models.dev',\n },\n nvidia: {\n url: 'https://integrate.api.nvidia.com/v1/chat/completions',\n apiKeyEnvVar: 'NVIDIA_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Nvidia',\n models: [\n 'black-forest-labs/flux.1-dev',\n 'deepseek-ai/deepseek-v3.1',\n 'google/gemma-3-27b-it',\n 'microsoft/phi-4-mini-instruct',\n 'moonshotai/kimi-k2-instruct',\n 'nvidia/cosmos-nemotron-34b',\n 'nvidia/llama-3.1-nemotron-ultra-253b-v1',\n 'nvidia/nemoretriever-ocr-v1',\n 'nvidia/parakeet-tdt-0.6b-v2',\n 'openai/gpt-oss-120b',\n 'openai/whisper-large-v3',\n 'qwen/qwen3-235b-a22b',\n 'qwen/qwen3-coder-480b-a35b-instruct',\n ],\n docUrl: 'https://docs.api.nvidia.com/nim/',\n gateway: 'models.dev',\n },\n upstage: {\n url: 'https://api.upstage.ai/chat/completions',\n apiKeyEnvVar: 'UPSTAGE_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Upstage',\n models: ['solar-mini', 'solar-pro2'],\n docUrl: 'https://developers.upstage.ai/docs/apis/chat',\n gateway: 'models.dev',\n },\n groq: {\n url: 'https://api.groq.com/openai/v1/chat/completions',\n apiKeyEnvVar: 'GROQ_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Groq',\n models: [\n 'deepseek-r1-distill-llama-70b',\n 'gemma2-9b-it',\n 'llama-3.1-8b-instant',\n 'llama-3.3-70b-versatile',\n 'llama-guard-3-8b',\n 'llama3-70b-8192',\n 'llama3-8b-8192',\n 'meta-llama/llama-4-maverick-17b-128e-instruct',\n 'meta-llama/llama-4-scout-17b-16e-instruct',\n 'meta-llama/llama-guard-4-12b',\n 'mistral-saba-24b',\n 'moonshotai/kimi-k2-instruct',\n 'moonshotai/kimi-k2-instruct-0905',\n 'openai/gpt-oss-120b',\n 'openai/gpt-oss-20b',\n 'qwen-qwq-32b',\n 'qwen/qwen3-32b',\n ],\n docUrl: 'https://console.groq.com/docs/models',\n gateway: 'models.dev',\n },\n 'github-copilot': {\n url: 'https://api.githubcopilot.com/chat/completions',\n apiKeyEnvVar: 'GITHUB_TOKEN',\n apiKeyHeader: 'Authorization',\n name: 'GitHub Copilot',\n models: [\n 'claude-3.5-sonnet',\n 'claude-3.7-sonnet',\n 'claude-3.7-sonnet-thought',\n 'claude-opus-4',\n 'claude-opus-41',\n 'claude-sonnet-4',\n 'claude-sonnet-4.5',\n 'gemini-2.0-flash-001',\n 'gemini-2.5-pro',\n 'gpt-4.1',\n 'gpt-4o',\n 'gpt-5',\n 'gpt-5-mini',\n 'grok-code-fast-1',\n 'o3',\n 'o3-mini',\n 'o4-mini',\n ],\n docUrl: 'https://docs.github.com/en/copilot',\n gateway: 'models.dev',\n },\n mistral: {\n url: 'https://api.mistral.ai/v1/chat/completions',\n apiKeyEnvVar: 'MISTRAL_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Mistral',\n models: [\n 'codestral-latest',\n 'devstral-medium-2507',\n 'devstral-small-2505',\n 'devstral-small-2507',\n 'magistral-medium-latest',\n 'magistral-small',\n 'ministral-3b-latest',\n 'ministral-8b-latest',\n 'mistral-large-latest',\n 'mistral-medium-2505',\n 'mistral-medium-2508',\n 'mistral-medium-latest',\n 'mistral-nemo',\n 'mistral-small-latest',\n 'open-mistral-7b',\n 'open-mixtral-8x22b',\n 'open-mixtral-8x7b',\n 'pixtral-12b',\n 'pixtral-large-latest',\n ],\n docUrl: 'https://docs.mistral.ai/getting-started/models/',\n gateway: 'models.dev',\n },\n vercel: {\n url: 'https://ai-gateway.vercel.sh/v1/chat/completions',\n apiKeyEnvVar: 'AI_GATEWAY_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Vercel AI Gateway',\n models: [\n 'amazon/nova-lite',\n 'amazon/nova-micro',\n 'amazon/nova-pro',\n 'anthropic/claude-3-5-haiku',\n 'anthropic/claude-3-haiku',\n 'anthropic/claude-3-opus',\n 'anthropic/claude-3.5-sonnet',\n 'anthropic/claude-3.7-sonnet',\n 'anthropic/claude-4-1-opus',\n 'anthropic/claude-4-opus',\n 'anthropic/claude-4-sonnet',\n 'anthropic/claude-4.5-sonnet',\n 'cerebras/qwen3-coder',\n 'deepseek/deepseek-r1',\n 'deepseek/deepseek-r1-distill-llama-70b',\n 'google/gemini-2.0-flash',\n 'google/gemini-2.0-flash-lite',\n 'google/gemini-2.5-flash',\n 'google/gemini-2.5-pro',\n 'meta/llama-3.3-70b',\n 'meta/llama-4-maverick',\n 'meta/llama-4-scout',\n 'mistral/codestral',\n 'mistral/magistral-medium',\n 'mistral/magistral-small',\n 'mistral/ministral-3b',\n 'mistral/ministral-8b',\n 'mistral/mistral-large',\n 'mistral/mistral-small',\n 'mistral/mixtral-8x22b-instruct',\n 'mistral/pixtral-12b',\n 'mistral/pixtral-large',\n 'moonshotai/kimi-k2',\n 'morph/morph-v3-fast',\n 'morph/morph-v3-large',\n 'openai/gpt-4-turbo',\n 'openai/gpt-4.1',\n 'openai/gpt-4.1-mini',\n 'openai/gpt-4.1-nano',\n 'openai/gpt-4o',\n 'openai/gpt-4o-mini',\n 'openai/gpt-5',\n 'openai/gpt-5-mini',\n 'openai/gpt-5-nano',\n 'openai/gpt-oss-120b',\n 'openai/gpt-oss-20b',\n 'openai/o1',\n 'openai/o3',\n 'openai/o3-mini',\n 'openai/o4-mini',\n 'vercel/v0-1.0-md',\n 'vercel/v0-1.5-md',\n 'xai/grok-2',\n 'xai/grok-2-vision',\n 'xai/grok-3',\n 'xai/grok-3-fast',\n 'xai/grok-3-mini',\n 'xai/grok-3-mini-fast',\n 'xai/grok-4',\n 'xai/grok-4-fast',\n 'xai/grok-4-fast-non-reasoning',\n 'xai/grok-code-fast-1',\n ],\n docUrl: 'https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway',\n gateway: 'models.dev',\n },\n deepseek: {\n url: 'https://api.deepseek.com/chat/completions',\n apiKeyEnvVar: 'DEEPSEEK_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'DeepSeek',\n models: ['deepseek-chat', 'deepseek-reasoner'],\n docUrl: 'https://platform.deepseek.com/api-docs/pricing',\n gateway: 'models.dev',\n },\n 'alibaba-cn': {\n url: 'https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions',\n apiKeyEnvVar: 'DASHSCOPE_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Alibaba (China)',\n models: ['qwen3-coder-plus'],\n docUrl: 'https://www.alibabacloud.com/help/en/model-studio/models',\n gateway: 'models.dev',\n },\n venice: {\n url: 'https://api.venice.ai/api/v1/chat/completions',\n apiKeyEnvVar: 'VENICE_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Venice AI',\n models: [\n 'deepseek-coder-v2-lite',\n 'deepseek-r1-671b',\n 'dolphin-2.9.2-qwen2-72b',\n 'llama-3.1-405b',\n 'llama-3.2-3b',\n 'llama-3.3-70b',\n 'mistral-31-24b',\n 'qwen-2.5-coder-32b',\n 'qwen-2.5-qwq-32b',\n 'qwen-2.5-vl',\n 'qwen3-235b',\n 'qwen3-4b',\n 'venice-uncensored',\n ],\n docUrl: 'https://docs.venice.ai',\n gateway: 'models.dev',\n },\n chutes: {\n url: 'https://llm.chutes.ai/v1/chat/completions',\n apiKeyEnvVar: 'CHUTES_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Chutes',\n models: [\n 'Qwen/Qwen3-235B-A22B-Instruct-2507',\n 'Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'Qwen/Qwen3-30B-A3B',\n 'Qwen/Qwen3-30B-A3B-Instruct-2507',\n 'Qwen/Qwen3-30B-A3B-Thinking-2507',\n 'Qwen/Qwen3-Coder-30B-A3B-Instruct',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8',\n 'Qwen/Qwen3-Next-80B-A3B-Instruct',\n 'Qwen/Qwen3-Next-80B-A3B-Thinking',\n 'chutesai/Devstral-Small-2505',\n 'chutesai/Mistral-Small-3.2-24B-Instruct-2506',\n 'deepseek-ai/DeepSeek-R1-0528',\n 'deepseek-ai/DeepSeek-R1-0528-Qwen3-8B',\n 'deepseek-ai/DeepSeek-R1-Distill-Llama-70B',\n 'deepseek-ai/DeepSeek-V3-0324',\n 'deepseek-ai/DeepSeek-V3.1',\n 'deepseek-ai/DeepSeek-V3.1-Terminus',\n 'deepseek-ai/DeepSeek-V3.1-turbo',\n 'deepseek-ai/DeepSeek-V3.1:THINKING',\n 'meituan-longcat/LongCat-Flash-Chat-FP8',\n 'moonshotai/Kimi-Dev-72B',\n 'moonshotai/Kimi-K2-Instruct-0905',\n 'moonshotai/Kimi-K2-Instruct-75k',\n 'moonshotai/Kimi-VL-A3B-Thinking',\n 'openai/gpt-oss-120b',\n 'tngtech/DeepSeek-R1T-Chimera',\n 'tngtech/DeepSeek-TNG-R1T2-Chimera',\n 'zai-org/GLM-4.5-Air',\n 'zai-org/GLM-4.5-FP8',\n 'zai-org/GLM-4.5-turbo',\n ],\n docUrl: 'https://llm.chutes.ai/v1/models',\n gateway: 'models.dev',\n },\n cortecs: {\n url: 'https://api.cortecs.ai/v1/chat/completions',\n apiKeyEnvVar: 'CORTECS_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Cortecs',\n models: [\n 'claude-sonnet-4',\n 'deepseek-v3-0324',\n 'gemini-2.5-pro',\n 'gpt-4.1',\n 'gpt-oss-120b',\n 'kimi-k2-instruct',\n 'llama-3.1-405b-instruct',\n 'nova-pro-v1',\n 'qwen3-32b',\n 'qwen3-coder-480b-a35b-instruct',\n ],\n docUrl: 'https://api.cortecs.ai/v1/models',\n gateway: 'models.dev',\n },\n 'github-models': {\n url: 'https://models.github.ai/inference/chat/completions',\n apiKeyEnvVar: 'GITHUB_TOKEN',\n apiKeyHeader: 'Authorization',\n name: 'GitHub Models',\n models: [\n 'ai21-labs/ai21-jamba-1.5-large',\n 'ai21-labs/ai21-jamba-1.5-mini',\n 'cohere/cohere-command-a',\n 'cohere/cohere-command-r',\n 'cohere/cohere-command-r-08-2024',\n 'cohere/cohere-command-r-plus',\n 'cohere/cohere-command-r-plus-08-2024',\n 'core42/jais-30b-chat',\n 'deepseek/deepseek-r1',\n 'deepseek/deepseek-r1-0528',\n 'deepseek/deepseek-v3-0324',\n 'meta/llama-3.2-11b-vision-instruct',\n 'meta/llama-3.2-90b-vision-instruct',\n 'meta/llama-3.3-70b-instruct',\n 'meta/llama-4-maverick-17b-128e-instruct-fp8',\n 'meta/llama-4-scout-17b-16e-instruct',\n 'meta/meta-llama-3-70b-instruct',\n 'meta/meta-llama-3-8b-instruct',\n 'meta/meta-llama-3.1-405b-instruct',\n 'meta/meta-llama-3.1-70b-instruct',\n 'meta/meta-llama-3.1-8b-instruct',\n 'microsoft/mai-ds-r1',\n 'microsoft/phi-3-medium-128k-instruct',\n 'microsoft/phi-3-medium-4k-instruct',\n 'microsoft/phi-3-mini-128k-instruct',\n 'microsoft/phi-3-mini-4k-instruct',\n 'microsoft/phi-3-small-128k-instruct',\n 'microsoft/phi-3-small-8k-instruct',\n 'microsoft/phi-3.5-mini-instruct',\n 'microsoft/phi-3.5-moe-instruct',\n 'microsoft/phi-3.5-vision-instruct',\n 'microsoft/phi-4',\n 'microsoft/phi-4-mini-instruct',\n 'microsoft/phi-4-mini-reasoning',\n 'microsoft/phi-4-multimodal-instruct',\n 'microsoft/phi-4-reasoning',\n 'mistral-ai/codestral-2501',\n 'mistral-ai/ministral-3b',\n 'mistral-ai/mistral-large-2411',\n 'mistral-ai/mistral-medium-2505',\n 'mistral-ai/mistral-nemo',\n 'mistral-ai/mistral-small-2503',\n 'openai/gpt-4.1',\n 'openai/gpt-4.1-mini',\n 'openai/gpt-4.1-nano',\n 'openai/gpt-4o',\n 'openai/gpt-4o-mini',\n 'openai/o1',\n 'openai/o1-mini',\n 'openai/o1-preview',\n 'openai/o3',\n 'openai/o3-mini',\n 'openai/o4-mini',\n 'xai/grok-3',\n 'xai/grok-3-mini',\n ],\n docUrl: 'https://docs.github.com/en/github-models',\n gateway: 'models.dev',\n },\n togetherai: {\n url: 'https://api.together.xyz/v1/chat/completions',\n apiKeyEnvVar: 'TOGETHER_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Together AI',\n models: [\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8',\n 'deepseek-ai/DeepSeek-R1',\n 'deepseek-ai/DeepSeek-V3',\n 'meta-llama/Llama-3.3-70B-Instruct-Turbo',\n 'moonshotai/Kimi-K2-Instruct',\n 'openai/gpt-oss-120b',\n ],\n docUrl: 'https://docs.together.ai/docs/serverless-models',\n gateway: 'models.dev',\n },\n baseten: {\n url: 'https://inference.baseten.co/v1/chat/completions',\n apiKeyEnvVar: 'BASETEN_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Baseten',\n models: ['Qwen3/Qwen3-Coder-480B-A35B-Instruct', 'moonshotai/Kimi-K2-Instruct-0905'],\n docUrl: 'https://docs.baseten.co/development/model-apis/overview',\n gateway: 'models.dev',\n },\n huggingface: {\n url: 'https://router.huggingface.co/v1/chat/completions',\n apiKeyEnvVar: 'HF_TOKEN',\n apiKeyHeader: 'Authorization',\n name: 'Hugging Face',\n models: [\n 'Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct',\n 'Qwen/Qwen3-Next-80B-A3B-Instruct',\n 'Qwen/Qwen3-Next-80B-A3B-Thinking',\n 'deepseek-ai/DeepSeek-R1-0528',\n 'deepseek-ai/Deepseek-V3-0324',\n 'moonshotai/Kimi-K2-Instruct',\n 'moonshotai/Kimi-K2-Instruct-0905',\n 'zai-org/GLM-4.5',\n 'zai-org/GLM-4.5-Air',\n ],\n docUrl: 'https://huggingface.co/docs/inference-providers',\n gateway: 'models.dev',\n },\n opencode: {\n url: 'https://opencode.ai/zen/v1/chat/completions',\n apiKeyEnvVar: 'OPENCODE_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'opencode zen',\n models: [\n 'claude-3-5-haiku',\n 'claude-opus-4-1',\n 'claude-sonnet-4',\n 'claude-sonnet-4-5',\n 'code-supernova',\n 'gpt-5',\n 'grok-code',\n 'kimi-k2',\n 'qwen3-coder',\n 'qwen3-max',\n ],\n docUrl: 'https://opencode.ai/docs',\n gateway: 'models.dev',\n },\n fastrouter: {\n url: 'https://go.fastrouter.ai/api/v1/chat/completions',\n apiKeyEnvVar: 'FASTROUTER_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'FastRouter',\n models: [\n 'anthropic/claude-opus-4.1',\n 'anthropic/claude-sonnet-4',\n 'deepseek-ai/deepseek-r1-distill-llama-70b',\n 'google/gemini-2.5-flash',\n 'google/gemini-2.5-pro',\n 'moonshotai/kimi-k2',\n 'openai/gpt-4.1',\n 'openai/gpt-5',\n 'openai/gpt-5-mini',\n 'openai/gpt-5-nano',\n 'openai/gpt-oss-120b',\n 'openai/gpt-oss-20b',\n 'qwen/qwen3-coder',\n 'x-ai/grok-4',\n ],\n docUrl: 'https://fastrouter.ai/models',\n gateway: 'models.dev',\n },\n google: {\n url: 'https://generativelanguage.googleapis.com/v1beta/chat/completions',\n apiKeyEnvVar: 'GOOGLE_GENERATIVE_AI_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Google',\n models: [\n 'gemini-1.5-flash',\n 'gemini-1.5-flash-8b',\n 'gemini-1.5-pro',\n 'gemini-2.0-flash',\n 'gemini-2.0-flash-lite',\n 'gemini-2.5-flash',\n 'gemini-2.5-flash-lite',\n 'gemini-2.5-flash-lite-preview-06-17',\n 'gemini-2.5-flash-lite-preview-09-2025',\n 'gemini-2.5-flash-preview-04-17',\n 'gemini-2.5-flash-preview-05-20',\n 'gemini-2.5-flash-preview-09-2025',\n 'gemini-2.5-pro',\n 'gemini-2.5-pro-preview-05-06',\n 'gemini-2.5-pro-preview-06-05',\n 'gemini-flash-latest',\n 'gemini-flash-lite-latest',\n 'gemini-live-2.5-flash-preview-native-audio',\n ],\n docUrl: 'https://ai.google.dev/gemini-api/docs/pricing',\n gateway: 'models.dev',\n },\n inception: {\n url: 'https://api.inceptionlabs.ai/v1/chat/completions',\n apiKeyEnvVar: 'INCEPTION_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Inception',\n models: ['mercury', 'mercury-coder'],\n docUrl: 'https://platform.inceptionlabs.ai/docs',\n gateway: 'models.dev',\n },\n wandb: {\n url: 'https://api.inference.wandb.ai/v1/chat/completions',\n apiKeyEnvVar: 'WANDB_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Weights & Biases',\n models: [\n 'Qwen/Qwen3-235B-A22B-Instruct-2507',\n 'Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct',\n 'deepseek-ai/DeepSeek-R1-0528',\n 'deepseek-ai/DeepSeek-V3-0324',\n 'meta-llama/Llama-3.1-8B-Instruct',\n 'meta-llama/Llama-3.3-70B-Instruct',\n 'meta-llama/Llama-4-Scout-17B-16E-Instruct',\n 'microsoft/Phi-4-mini-instruct',\n 'moonshotai/Kimi-K2-Instruct',\n ],\n docUrl: 'https://weave-docs.wandb.ai/guides/integrations/inference/',\n gateway: 'models.dev',\n },\n openai: {\n url: 'https://api.openai.com/v1/chat/completions',\n apiKeyEnvVar: 'OPENAI_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'OpenAI',\n models: [\n 'gpt-3.5-turbo',\n 'gpt-4',\n 'gpt-4-turbo',\n 'gpt-4.1',\n 'gpt-4.1-mini',\n 'gpt-4.1-nano',\n 'gpt-4o',\n 'gpt-4o-2024-05-13',\n 'gpt-4o-2024-08-06',\n 'gpt-4o-2024-11-20',\n 'gpt-4o-mini',\n 'gpt-5',\n 'gpt-5-chat-latest',\n 'gpt-5-mini',\n 'gpt-5-nano',\n 'o1',\n 'o1-mini',\n 'o1-preview',\n 'o1-pro',\n 'o3',\n 'o3-deep-research',\n 'o3-mini',\n 'o3-pro',\n 'o4-mini',\n 'o4-mini-deep-research',\n ],\n docUrl: 'https://platform.openai.com/docs/models',\n gateway: 'models.dev',\n },\n 'zhipuai-coding-plan': {\n url: 'https://open.bigmodel.cn/api/coding/paas/v4/chat/completions',\n apiKeyEnvVar: 'ZHIPU_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Zhipu AI Coding Plan',\n models: ['glm-4.5', 'glm-4.5-air', 'glm-4.5-flash', 'glm-4.5v', 'glm-4.6'],\n docUrl: 'https://docs.bigmodel.cn/cn/coding-plan/overview',\n gateway: 'models.dev',\n },\n perplexity: {\n url: 'https://api.perplexity.ai/chat/completions',\n apiKeyEnvVar: 'PERPLEXITY_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Perplexity',\n models: ['sonar', 'sonar-pro', 'sonar-reasoning', 'sonar-reasoning-pro'],\n docUrl: 'https://docs.perplexity.ai',\n gateway: 'models.dev',\n },\n openrouter: {\n url: 'https://openrouter.ai/api/v1/chat/completions',\n apiKeyEnvVar: 'OPENROUTER_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'OpenRouter',\n models: [\n 'anthropic/claude-3.5-haiku',\n 'anthropic/claude-3.7-sonnet',\n 'anthropic/claude-opus-4',\n 'anthropic/claude-opus-4.1',\n 'anthropic/claude-sonnet-4',\n 'anthropic/claude-sonnet-4.5',\n 'cognitivecomputations/dolphin3.0-mistral-24b',\n 'cognitivecomputations/dolphin3.0-r1-mistral-24b',\n 'deepseek/deepseek-chat-v3-0324',\n 'deepseek/deepseek-chat-v3.1',\n 'deepseek/deepseek-r1-0528-qwen3-8b:free',\n 'deepseek/deepseek-r1-0528:free',\n 'deepseek/deepseek-r1-distill-llama-70b',\n 'deepseek/deepseek-r1-distill-qwen-14b',\n 'deepseek/deepseek-r1:free',\n 'deepseek/deepseek-v3-base:free',\n 'deepseek/deepseek-v3.1-terminus',\n 'featherless/qwerky-72b',\n 'google/gemini-2.0-flash-001',\n 'google/gemini-2.0-flash-exp:free',\n 'google/gemini-2.5-flash',\n 'google/gemini-2.5-pro',\n 'google/gemini-2.5-pro-preview-05-06',\n 'google/gemini-2.5-pro-preview-06-05',\n 'google/gemma-2-9b-it:free',\n 'google/gemma-3-12b-it',\n 'google/gemma-3-27b-it',\n 'google/gemma-3n-e4b-it',\n 'google/gemma-3n-e4b-it:free',\n 'meta-llama/llama-3.2-11b-vision-instruct',\n 'meta-llama/llama-3.3-70b-instruct:free',\n 'meta-llama/llama-4-scout:free',\n 'microsoft/mai-ds-r1:free',\n 'mistralai/codestral-2508',\n 'mistralai/devstral-medium-2507',\n 'mistralai/devstral-small-2505',\n 'mistralai/devstral-small-2505:free',\n 'mistralai/devstral-small-2507',\n 'mistralai/mistral-7b-instruct:free',\n 'mistralai/mistral-medium-3',\n 'mistralai/mistral-medium-3.1',\n 'mistralai/mistral-nemo:free',\n 'mistralai/mistral-small-3.1-24b-instruct',\n 'mistralai/mistral-small-3.2-24b-instruct',\n 'mistralai/mistral-small-3.2-24b-instruct:free',\n 'moonshotai/kimi-dev-72b:free',\n 'moonshotai/kimi-k2',\n 'moonshotai/kimi-k2-0905',\n 'moonshotai/kimi-k2:free',\n 'nousresearch/deephermes-3-llama-3-8b-preview',\n 'nousresearch/hermes-4-405b',\n 'nousresearch/hermes-4-70b',\n 'openai/gpt-4.1',\n 'openai/gpt-4.1-mini',\n 'openai/gpt-4o-mini',\n 'openai/gpt-5',\n 'openai/gpt-5-chat',\n 'openai/gpt-5-mini',\n 'openai/gpt-5-nano',\n 'openai/gpt-oss-120b',\n 'openai/gpt-oss-20b',\n 'openai/o4-mini',\n 'openrouter/cypher-alpha:free',\n 'openrouter/horizon-alpha',\n 'openrouter/horizon-beta',\n 'openrouter/sonoma-dusk-alpha',\n 'openrouter/sonoma-sky-alpha',\n 'qwen/qwen-2.5-coder-32b-instruct',\n 'qwen/qwen2.5-vl-32b-instruct:free',\n 'qwen/qwen2.5-vl-72b-instruct',\n 'qwen/qwen2.5-vl-72b-instruct:free',\n 'qwen/qwen3-14b:free',\n 'qwen/qwen3-235b-a22b-07-25',\n 'qwen/qwen3-235b-a22b-07-25:free',\n 'qwen/qwen3-235b-a22b-thinking-2507',\n 'qwen/qwen3-235b-a22b:free',\n 'qwen/qwen3-30b-a3b-instruct-2507',\n 'qwen/qwen3-30b-a3b:free',\n 'qwen/qwen3-32b:free',\n 'qwen/qwen3-8b:free',\n 'qwen/qwen3-coder',\n 'qwen/qwen3-coder:free',\n 'qwen/qwen3-max',\n 'qwen/qwen3-next-80b-a3b-instruct',\n 'qwen/qwq-32b:free',\n 'rekaai/reka-flash-3',\n 'sarvamai/sarvam-m:free',\n 'thudm/glm-z1-32b:free',\n 'tngtech/deepseek-r1t2-chimera:free',\n 'x-ai/grok-3',\n 'x-ai/grok-3-beta',\n 'x-ai/grok-3-mini',\n 'x-ai/grok-3-mini-beta',\n 'x-ai/grok-4',\n 'x-ai/grok-4-fast',\n 'x-ai/grok-4-fast:free',\n 'x-ai/grok-code-fast-1',\n 'z-ai/glm-4.5',\n 'z-ai/glm-4.5-air',\n 'z-ai/glm-4.5-air:free',\n 'z-ai/glm-4.5v',\n ],\n docUrl: 'https://openrouter.ai/models',\n gateway: 'models.dev',\n },\n synthetic: {\n url: 'https://api.synthetic.new/v1/chat/completions',\n apiKeyEnvVar: 'SYNTHETIC_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Synthetic',\n models: [\n 'hf:Qwen/Qwen2.5-Coder-32B-Instruct',\n 'hf:Qwen/Qwen3-235B-A22B-Instruct-2507',\n 'hf:Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'hf:Qwen/Qwen3-Coder-480B-A35B-Instruct',\n 'hf:deepseek-ai/DeepSeek-R1',\n 'hf:deepseek-ai/DeepSeek-R1-0528',\n 'hf:deepseek-ai/DeepSeek-V3',\n 'hf:deepseek-ai/DeepSeek-V3-0324',\n 'hf:deepseek-ai/DeepSeek-V3.1',\n 'hf:deepseek-ai/DeepSeek-V3.1-Terminus',\n 'hf:meta-llama/Llama-3.1-405B-Instruct',\n 'hf:meta-llama/Llama-3.1-70B-Instruct',\n 'hf:meta-llama/Llama-3.1-8B-Instruct',\n 'hf:meta-llama/Llama-3.3-70B-Instruct',\n 'hf:meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8',\n 'hf:meta-llama/Llama-4-Scout-17B-16E-Instruct',\n 'hf:moonshotai/Kimi-K2-Instruct',\n 'hf:moonshotai/Kimi-K2-Instruct-0905',\n 'hf:openai/gpt-oss-120b',\n 'hf:zai-org/GLM-4.5',\n ],\n docUrl: 'https://synthetic.new/pricing',\n gateway: 'models.dev',\n },\n deepinfra: {\n url: 'https://api.deepinfra.com/v1/openai/chat/completions',\n apiKeyEnvVar: 'DEEPINFRA_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Deep Infra',\n models: [\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo',\n 'moonshotai/Kimi-K2-Instruct',\n 'zai-org/GLM-4.5',\n ],\n docUrl: 'https://deepinfra.com/models',\n gateway: 'models.dev',\n },\n zhipuai: {\n url: 'https://open.bigmodel.cn/api/paas/v4/chat/completions',\n apiKeyEnvVar: 'ZHIPU_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Zhipu AI',\n models: ['glm-4.5', 'glm-4.5-air', 'glm-4.5-flash', 'glm-4.5v', 'glm-4.6'],\n docUrl: 'https://docs.z.ai/guides/overview/pricing',\n gateway: 'models.dev',\n },\n submodel: {\n url: 'https://llm.submodel.ai/v1/chat/completions',\n apiKeyEnvVar: 'SUBMODEL_INSTAGEN_ACCESS_KEY',\n apiKeyHeader: 'Authorization',\n name: 'submodel',\n models: [\n 'Qwen/Qwen3-235B-A22B-Instruct-2507',\n 'Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8',\n 'deepseek-ai/DeepSeek-R1-0528',\n 'deepseek-ai/DeepSeek-V3-0324',\n 'deepseek-ai/DeepSeek-V3.1',\n 'openai/gpt-oss-120b',\n 'zai-org/GLM-4.5-Air',\n 'zai-org/GLM-4.5-FP8',\n ],\n docUrl: 'https://submodel.gitbook.io',\n gateway: 'models.dev',\n },\n zai: {\n url: 'https://api.z.ai/api/paas/v4/chat/completions',\n apiKeyEnvVar: 'ZHIPU_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Z.AI',\n models: ['glm-4.5', 'glm-4.5-air', 'glm-4.5-flash', 'glm-4.5v', 'glm-4.6'],\n docUrl: 'https://docs.z.ai/guides/overview/pricing',\n gateway: 'models.dev',\n },\n inference: {\n url: 'https://inference.net/v1/chat/completions',\n apiKeyEnvVar: 'INFERENCE_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Inference',\n models: [\n 'google/gemma-3',\n 'meta/llama-3.1-8b-instruct',\n 'meta/llama-3.2-11b-vision-instruct',\n 'meta/llama-3.2-1b-instruct',\n 'meta/llama-3.2-3b-instruct',\n 'mistral/mistral-nemo-12b-instruct',\n 'osmosis/osmosis-structure-0.6b',\n 'qwen/qwen-2.5-7b-vision-instruct',\n 'qwen/qwen3-embedding-4b',\n ],\n docUrl: 'https://inference.net/models',\n gateway: 'models.dev',\n },\n requesty: {\n url: 'https://router.requesty.ai/v1/chat/completions',\n apiKeyEnvVar: 'REQUESTY_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Requesty',\n models: [\n 'anthropic/claude-3-7-sonnet',\n 'anthropic/claude-4-sonnet-20250522',\n 'anthropic/claude-opus-4',\n 'anthropic/claude-opus-4-1-20250805',\n 'google/gemini-2.5-flash',\n 'google/gemini-2.5-pro',\n 'openai/gpt-4.1',\n 'openai/gpt-4.1-mini',\n 'openai/gpt-4o-mini',\n 'openai/gpt-5',\n 'openai/gpt-5-mini',\n 'openai/gpt-5-nano',\n 'openai/o4-mini',\n ],\n docUrl: 'https://requesty.ai/solution/llm-routing/models',\n gateway: 'models.dev',\n },\n morph: {\n url: 'https://api.morphllm.com/v1/chat/completions',\n apiKeyEnvVar: 'MORPH_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Morph',\n models: ['auto', 'morph-v3-fast', 'morph-v3-large'],\n docUrl: 'https://docs.morphllm.com/api-reference/introduction',\n gateway: 'models.dev',\n },\n lmstudio: {\n url: 'http://127.0.0.1:1234/v1/chat/completions',\n apiKeyEnvVar: 'LMSTUDIO_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'LMStudio',\n models: ['openai/gpt-oss-20b', 'qwen/qwen3-30b-a3b-2507', 'qwen/qwen3-coder-30b'],\n docUrl: 'https://lmstudio.ai/models',\n gateway: 'models.dev',\n },\n anthropic: {\n url: 'https://api.anthropic.com/v1/chat/completions',\n apiKeyEnvVar: 'ANTHROPIC_API_KEY',\n apiKeyHeader: 'x-api-key',\n name: 'Anthropic',\n models: [\n 'claude-3-5-haiku-20241022',\n 'claude-3-5-sonnet-20240620',\n 'claude-3-5-sonnet-20241022',\n 'claude-3-7-sonnet-20250219',\n 'claude-3-haiku-20240307',\n 'claude-3-opus-20240229',\n 'claude-3-sonnet-20240229',\n 'claude-opus-4-1-20250805',\n 'claude-opus-4-20250514',\n 'claude-sonnet-4-20250514',\n 'claude-sonnet-4-5-20250929',\n ],\n docUrl: 'https://docs.anthropic.com/en/docs/about-claude/models',\n gateway: 'models.dev',\n },\n 'fireworks-ai': {\n url: 'https://api.fireworks.ai/inference/v1/chat/completions',\n apiKeyEnvVar: 'FIREWORKS_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Fireworks AI',\n models: [\n 'accounts/fireworks/models/deepseek-r1-0528',\n 'accounts/fireworks/models/deepseek-v3-0324',\n 'accounts/fireworks/models/deepseek-v3p1',\n 'accounts/fireworks/models/glm-4p5',\n 'accounts/fireworks/models/glm-4p5-air',\n 'accounts/fireworks/models/gpt-oss-120b',\n 'accounts/fireworks/models/gpt-oss-20b',\n 'accounts/fireworks/models/kimi-k2-instruct',\n 'accounts/fireworks/models/qwen3-235b-a22b',\n 'accounts/fireworks/models/qwen3-coder-480b-a35b-instruct',\n ],\n docUrl: 'https://fireworks.ai/docs/',\n gateway: 'models.dev',\n },\n modelscope: {\n url: 'https://api-inference.modelscope.cn/v1/chat/completions',\n apiKeyEnvVar: 'MODELSCOPE_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'ModelScope',\n models: [\n 'Qwen/Qwen3-235B-A22B-Instruct-2507',\n 'Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'Qwen/Qwen3-30B-A3B-Instruct-2507',\n 'Qwen/Qwen3-30B-A3B-Thinking-2507',\n 'Qwen/Qwen3-Coder-30B-A3B-Instruct',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct',\n 'ZhipuAI/GLM-4.5',\n ],\n docUrl: 'https://modelscope.cn/docs/model-service/API-Inference/intro',\n gateway: 'models.dev',\n },\n llama: {\n url: 'https://api.llama.com/compat/v1/chat/completions',\n apiKeyEnvVar: 'LLAMA_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Llama',\n models: [\n 'cerebras-llama-4-maverick-17b-128e-instruct',\n 'cerebras-llama-4-scout-17b-16e-instruct',\n 'groq-llama-4-maverick-17b-128e-instruct',\n 'llama-3.3-70b-instruct',\n 'llama-3.3-8b-instruct',\n 'llama-4-maverick-17b-128e-instruct-fp8',\n 'llama-4-scout-17b-16e-instruct-fp8',\n ],\n docUrl: 'https://llama.developer.meta.com/docs/models',\n gateway: 'models.dev',\n },\n cerebras: {\n url: 'https://api.cerebras.ai/v1/chat/completions',\n apiKeyEnvVar: 'CEREBRAS_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Cerebras',\n models: ['gpt-oss-120b', 'qwen-3-235b-a22b-instruct-2507', 'qwen-3-coder-480b'],\n docUrl: 'https://inference-docs.cerebras.ai/models/overview',\n gateway: 'models.dev',\n },\n netlify: {\n apiKeyEnvVar: ['NETLIFY_TOKEN', 'NETLIFY_SITE_ID'],\n apiKeyHeader: 'Authorization',\n name: 'Netlify',\n gateway: 'netlify',\n models: [\n 'anthropic/claude-opus-4-1-20250805',\n 'anthropic/claude-opus-4-20250514',\n 'anthropic/claude-sonnet-4-20250514',\n 'anthropic/claude-3-7-sonnet-20250219',\n 'anthropic/claude-3-5-haiku-20241022',\n 'anthropic/claude-sonnet-4-5-20250929',\n 'anthropic/claude-3-7-sonnet-latest',\n 'anthropic/claude-3-5-haiku-latest',\n 'anthropic/claude-3-haiku-20240307',\n 'gemini/gemini-flash-latest',\n 'gemini/gemini-2.5-flash',\n 'gemini/gemini-2.5-flash-lite-preview-09-2025',\n 'gemini/gemini-2.5-flash-lite',\n 'gemini/gemini-2.0-flash',\n 'gemini/gemini-2.0-flash-lite',\n 'gemini/gemini-2.5-pro',\n 'gemini/gemini-2.5-flash-preview-09-2025',\n 'gemini/gemini-flash-lite-latest',\n 'gemini/gemini-2.5-flash-image-preview',\n 'openai/o3',\n 'openai/gpt-5-mini',\n 'openai/gpt-4.1-nano',\n 'openai/o4-mini',\n 'openai/o3-mini',\n 'openai/codex-mini-latest',\n 'openai/gpt-5',\n 'openai/gpt-5-codex',\n 'openai/gpt-5-nano',\n 'openai/gpt-4.1',\n 'openai/gpt-4.1-mini',\n 'openai/gpt-4o',\n 'openai/gpt-4o-mini',\n ],\n },\n} as const;\n\n/**\n * Available models per provider\n */\nexport const PROVIDER_MODELS = {\n 'moonshotai-cn': ['kimi-k2-0711-preview', 'kimi-k2-0905-preview', 'kimi-k2-turbo-preview'],\n lucidquery: ['lucidnova-rf1-100b', 'lucidquery-nexus-coder'],\n moonshotai: ['kimi-k2-0711-preview', 'kimi-k2-0905-preview', 'kimi-k2-turbo-preview'],\n 'zai-coding-plan': ['glm-4.5', 'glm-4.5-air', 'glm-4.5-flash', 'glm-4.5v', 'glm-4.6'],\n alibaba: ['qwen3-coder-plus'],\n xai: [\n 'grok-2',\n 'grok-2-1212',\n 'grok-2-latest',\n 'grok-2-vision',\n 'grok-2-vision-1212',\n 'grok-2-vision-latest',\n 'grok-3',\n 'grok-3-fast',\n 'grok-3-fast-latest',\n 'grok-3-latest',\n 'grok-3-mini',\n 'grok-3-mini-fast',\n 'grok-3-mini-fast-latest',\n 'grok-3-mini-latest',\n 'grok-4',\n 'grok-4-fast',\n 'grok-4-fast-non-reasoning',\n 'grok-beta',\n 'grok-code-fast-1',\n 'grok-vision-beta',\n ],\n nvidia: [\n 'black-forest-labs/flux.1-dev',\n 'deepseek-ai/deepseek-v3.1',\n 'google/gemma-3-27b-it',\n 'microsoft/phi-4-mini-instruct',\n 'moonshotai/kimi-k2-instruct',\n 'nvidia/cosmos-nemotron-34b',\n 'nvidia/llama-3.1-nemotron-ultra-253b-v1',\n 'nvidia/nemoretriever-ocr-v1',\n 'nvidia/parakeet-tdt-0.6b-v2',\n 'openai/gpt-oss-120b',\n 'openai/whisper-large-v3',\n 'qwen/qwen3-235b-a22b',\n 'qwen/qwen3-coder-480b-a35b-instruct',\n ],\n upstage: ['solar-mini', 'solar-pro2'],\n groq: [\n 'deepseek-r1-distill-llama-70b',\n 'gemma2-9b-it',\n 'llama-3.1-8b-instant',\n 'llama-3.3-70b-versatile',\n 'llama-guard-3-8b',\n 'llama3-70b-8192',\n 'llama3-8b-8192',\n 'meta-llama/llama-4-maverick-17b-128e-instruct',\n 'meta-llama/llama-4-scout-17b-16e-instruct',\n 'meta-llama/llama-guard-4-12b',\n 'mistral-saba-24b',\n 'moonshotai/kimi-k2-instruct',\n 'moonshotai/kimi-k2-instruct-0905',\n 'openai/gpt-oss-120b',\n 'openai/gpt-oss-20b',\n 'qwen-qwq-32b',\n 'qwen/qwen3-32b',\n ],\n 'github-copilot': [\n 'claude-3.5-sonnet',\n 'claude-3.7-sonnet',\n 'claude-3.7-sonnet-thought',\n 'claude-opus-4',\n 'claude-opus-41',\n 'claude-sonnet-4',\n 'claude-sonnet-4.5',\n 'gemini-2.0-flash-001',\n 'gemini-2.5-pro',\n 'gpt-4.1',\n 'gpt-4o',\n 'gpt-5',\n 'gpt-5-mini',\n 'grok-code-fast-1',\n 'o3',\n 'o3-mini',\n 'o4-mini',\n ],\n mistral: [\n 'codestral-latest',\n 'devstral-medium-2507',\n 'devstral-small-2505',\n 'devstral-small-2507',\n 'magistral-medium-latest',\n 'magistral-small',\n 'ministral-3b-latest',\n 'ministral-8b-latest',\n 'mistral-large-latest',\n 'mistral-medium-2505',\n 'mistral-medium-2508',\n 'mistral-medium-latest',\n 'mistral-nemo',\n 'mistral-small-latest',\n 'open-mistral-7b',\n 'open-mixtral-8x22b',\n 'open-mixtral-8x7b',\n 'pixtral-12b',\n 'pixtral-large-latest',\n ],\n vercel: [\n 'amazon/nova-lite',\n 'amazon/nova-micro',\n 'amazon/nova-pro',\n 'anthropic/claude-3-5-haiku',\n 'anthropic/claude-3-haiku',\n 'anthropic/claude-3-opus',\n 'anthropic/claude-3.5-sonnet',\n 'anthropic/claude-3.7-sonnet',\n 'anthropic/claude-4-1-opus',\n 'anthropic/claude-4-opus',\n 'anthropic/claude-4-sonnet',\n 'anthropic/claude-4.5-sonnet',\n 'cerebras/qwen3-coder',\n 'deepseek/deepseek-r1',\n 'deepseek/deepseek-r1-distill-llama-70b',\n 'google/gemini-2.0-flash',\n 'google/gemini-2.0-flash-lite',\n 'google/gemini-2.5-flash',\n 'google/gemini-2.5-pro',\n 'meta/llama-3.3-70b',\n 'meta/llama-4-maverick',\n 'meta/llama-4-scout',\n 'mistral/codestral',\n 'mistral/magistral-medium',\n 'mistral/magistral-small',\n 'mistral/ministral-3b',\n 'mistral/ministral-8b',\n 'mistral/mistral-large',\n 'mistral/mistral-small',\n 'mistral/mixtral-8x22b-instruct',\n 'mistral/pixtral-12b',\n 'mistral/pixtral-large',\n 'moonshotai/kimi-k2',\n 'morph/morph-v3-fast',\n 'morph/morph-v3-large',\n 'openai/gpt-4-turbo',\n 'openai/gpt-4.1',\n 'openai/gpt-4.1-mini',\n 'openai/gpt-4.1-nano',\n 'openai/gpt-4o',\n 'openai/gpt-4o-mini',\n 'openai/gpt-5',\n 'openai/gpt-5-mini',\n 'openai/gpt-5-nano',\n 'openai/gpt-oss-120b',\n 'openai/gpt-oss-20b',\n 'openai/o1',\n 'openai/o3',\n 'openai/o3-mini',\n 'openai/o4-mini',\n 'vercel/v0-1.0-md',\n 'vercel/v0-1.5-md',\n 'xai/grok-2',\n 'xai/grok-2-vision',\n 'xai/grok-3',\n 'xai/grok-3-fast',\n 'xai/grok-3-mini',\n 'xai/grok-3-mini-fast',\n 'xai/grok-4',\n 'xai/grok-4-fast',\n 'xai/grok-4-fast-non-reasoning',\n 'xai/grok-code-fast-1',\n ],\n deepseek: ['deepseek-chat', 'deepseek-reasoner'],\n 'alibaba-cn': ['qwen3-coder-plus'],\n venice: [\n 'deepseek-coder-v2-lite',\n 'deepseek-r1-671b',\n 'dolphin-2.9.2-qwen2-72b',\n 'llama-3.1-405b',\n 'llama-3.2-3b',\n 'llama-3.3-70b',\n 'mistral-31-24b',\n 'qwen-2.5-coder-32b',\n 'qwen-2.5-qwq-32b',\n 'qwen-2.5-vl',\n 'qwen3-235b',\n 'qwen3-4b',\n 'venice-uncensored',\n ],\n chutes: [\n 'Qwen/Qwen3-235B-A22B-Instruct-2507',\n 'Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'Qwen/Qwen3-30B-A3B',\n 'Qwen/Qwen3-30B-A3B-Instruct-2507',\n 'Qwen/Qwen3-30B-A3B-Thinking-2507',\n 'Qwen/Qwen3-Coder-30B-A3B-Instruct',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8',\n 'Qwen/Qwen3-Next-80B-A3B-Instruct',\n 'Qwen/Qwen3-Next-80B-A3B-Thinking',\n 'chutesai/Devstral-Small-2505',\n 'chutesai/Mistral-Small-3.2-24B-Instruct-2506',\n 'deepseek-ai/DeepSeek-R1-0528',\n 'deepseek-ai/DeepSeek-R1-0528-Qwen3-8B',\n 'deepseek-ai/DeepSeek-R1-Distill-Llama-70B',\n 'deepseek-ai/DeepSeek-V3-0324',\n 'deepseek-ai/DeepSeek-V3.1',\n 'deepseek-ai/DeepSeek-V3.1-Terminus',\n 'deepseek-ai/DeepSeek-V3.1-turbo',\n 'deepseek-ai/DeepSeek-V3.1:THINKING',\n 'meituan-longcat/LongCat-Flash-Chat-FP8',\n 'moonshotai/Kimi-Dev-72B',\n 'moonshotai/Kimi-K2-Instruct-0905',\n 'moonshotai/Kimi-K2-Instruct-75k',\n 'moonshotai/Kimi-VL-A3B-Thinking',\n 'openai/gpt-oss-120b',\n 'tngtech/DeepSeek-R1T-Chimera',\n 'tngtech/DeepSeek-TNG-R1T2-Chimera',\n 'zai-org/GLM-4.5-Air',\n 'zai-org/GLM-4.5-FP8',\n 'zai-org/GLM-4.5-turbo',\n ],\n cortecs: [\n 'claude-sonnet-4',\n 'deepseek-v3-0324',\n 'gemini-2.5-pro',\n 'gpt-4.1',\n 'gpt-oss-120b',\n 'kimi-k2-instruct',\n 'llama-3.1-405b-instruct',\n 'nova-pro-v1',\n 'qwen3-32b',\n 'qwen3-coder-480b-a35b-instruct',\n ],\n 'github-models': [\n 'ai21-labs/ai21-jamba-1.5-large',\n 'ai21-labs/ai21-jamba-1.5-mini',\n 'cohere/cohere-command-a',\n 'cohere/cohere-command-r',\n 'cohere/cohere-command-r-08-2024',\n 'cohere/cohere-command-r-plus',\n 'cohere/cohere-command-r-plus-08-2024',\n 'core42/jais-30b-chat',\n 'deepseek/deepseek-r1',\n 'deepseek/deepseek-r1-0528',\n 'deepseek/deepseek-v3-0324',\n 'meta/llama-3.2-11b-vision-instruct',\n 'meta/llama-3.2-90b-vision-instruct',\n 'meta/llama-3.3-70b-instruct',\n 'meta/llama-4-maverick-17b-128e-instruct-fp8',\n 'meta/llama-4-scout-17b-16e-instruct',\n 'meta/meta-llama-3-70b-instruct',\n 'meta/meta-llama-3-8b-instruct',\n 'meta/meta-llama-3.1-405b-instruct',\n 'meta/meta-llama-3.1-70b-instruct',\n 'meta/meta-llama-3.1-8b-instruct',\n 'microsoft/mai-ds-r1',\n 'microsoft/phi-3-medium-128k-instruct',\n 'microsoft/phi-3-medium-4k-instruct',\n 'microsoft/phi-3-mini-128k-instruct',\n 'microsoft/phi-3-mini-4k-instruct',\n 'microsoft/phi-3-small-128k-instruct',\n 'microsoft/phi-3-small-8k-instruct',\n 'microsoft/phi-3.5-mini-instruct',\n 'microsoft/phi-3.5-moe-instruct',\n 'microsoft/phi-3.5-vision-instruct',\n 'microsoft/phi-4',\n 'microsoft/phi-4-mini-instruct',\n 'microsoft/phi-4-mini-reasoning',\n 'microsoft/phi-4-multimodal-instruct',\n 'microsoft/phi-4-reasoning',\n 'mistral-ai/codestral-2501',\n 'mistral-ai/ministral-3b',\n 'mistral-ai/mistral-large-2411',\n 'mistral-ai/mistral-medium-2505',\n 'mistral-ai/mistral-nemo',\n 'mistral-ai/mistral-small-2503',\n 'openai/gpt-4.1',\n 'openai/gpt-4.1-mini',\n 'openai/gpt-4.1-nano',\n 'openai/gpt-4o',\n 'openai/gpt-4o-mini',\n 'openai/o1',\n 'openai/o1-mini',\n 'openai/o1-preview',\n 'openai/o3',\n 'openai/o3-mini',\n 'openai/o4-mini',\n 'xai/grok-3',\n 'xai/grok-3-mini',\n ],\n togetherai: [\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8',\n 'deepseek-ai/DeepSeek-R1',\n 'deepseek-ai/DeepSeek-V3',\n 'meta-llama/Llama-3.3-70B-Instruct-Turbo',\n 'moonshotai/Kimi-K2-Instruct',\n 'openai/gpt-oss-120b',\n ],\n baseten: ['Qwen3/Qwen3-Coder-480B-A35B-Instruct', 'moonshotai/Kimi-K2-Instruct-0905'],\n huggingface: [\n 'Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct',\n 'Qwen/Qwen3-Next-80B-A3B-Instruct',\n 'Qwen/Qwen3-Next-80B-A3B-Thinking',\n 'deepseek-ai/DeepSeek-R1-0528',\n 'deepseek-ai/Deepseek-V3-0324',\n 'moonshotai/Kimi-K2-Instruct',\n 'moonshotai/Kimi-K2-Instruct-0905',\n 'zai-org/GLM-4.5',\n 'zai-org/GLM-4.5-Air',\n ],\n opencode: [\n 'claude-3-5-haiku',\n 'claude-opus-4-1',\n 'claude-sonnet-4',\n 'claude-sonnet-4-5',\n 'code-supernova',\n 'gpt-5',\n 'grok-code',\n 'kimi-k2',\n 'qwen3-coder',\n 'qwen3-max',\n ],\n fastrouter: [\n 'anthropic/claude-opus-4.1',\n 'anthropic/claude-sonnet-4',\n 'deepseek-ai/deepseek-r1-distill-llama-70b',\n 'google/gemini-2.5-flash',\n 'google/gemini-2.5-pro',\n 'moonshotai/kimi-k2',\n 'openai/gpt-4.1',\n 'openai/gpt-5',\n 'openai/gpt-5-mini',\n 'openai/gpt-5-nano',\n 'openai/gpt-oss-120b',\n 'openai/gpt-oss-20b',\n 'qwen/qwen3-coder',\n 'x-ai/grok-4',\n ],\n google: [\n 'gemini-1.5-flash',\n 'gemini-1.5-flash-8b',\n 'gemini-1.5-pro',\n 'gemini-2.0-flash',\n 'gemini-2.0-flash-lite',\n 'gemini-2.5-flash',\n 'gemini-2.5-flash-lite',\n 'gemini-2.5-flash-lite-preview-06-17',\n 'gemini-2.5-flash-lite-preview-09-2025',\n 'gemini-2.5-flash-preview-04-17',\n 'gemini-2.5-flash-preview-05-20',\n 'gemini-2.5-flash-preview-09-2025',\n 'gemini-2.5-pro',\n 'gemini-2.5-pro-preview-05-06',\n 'gemini-2.5-pro-preview-06-05',\n 'gemini-flash-latest',\n 'gemini-flash-lite-latest',\n 'gemini-live-2.5-flash-preview-native-audio',\n ],\n inception: ['mercury', 'mercury-coder'],\n wandb: [\n 'Qwen/Qwen3-235B-A22B-Instruct-2507',\n 'Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct',\n 'deepseek-ai/DeepSeek-R1-0528',\n 'deepseek-ai/DeepSeek-V3-0324',\n 'meta-llama/Llama-3.1-8B-Instruct',\n 'meta-llama/Llama-3.3-70B-Instruct',\n 'meta-llama/Llama-4-Scout-17B-16E-Instruct',\n 'microsoft/Phi-4-mini-instruct',\n 'moonshotai/Kimi-K2-Instruct',\n ],\n openai: [\n 'gpt-3.5-turbo',\n 'gpt-4',\n 'gpt-4-turbo',\n 'gpt-4.1',\n 'gpt-4.1-mini',\n 'gpt-4.1-nano',\n 'gpt-4o',\n 'gpt-4o-2024-05-13',\n 'gpt-4o-2024-08-06',\n 'gpt-4o-2024-11-20',\n 'gpt-4o-mini',\n 'gpt-5',\n 'gpt-5-chat-latest',\n 'gpt-5-mini',\n 'gpt-5-nano',\n 'o1',\n 'o1-mini',\n 'o1-preview',\n 'o1-pro',\n 'o3',\n 'o3-deep-research',\n 'o3-mini',\n 'o3-pro',\n 'o4-mini',\n 'o4-mini-deep-research',\n ],\n 'zhipuai-coding-plan': ['glm-4.5', 'glm-4.5-air', 'glm-4.5-flash', 'glm-4.5v', 'glm-4.6'],\n perplexity: ['sonar', 'sonar-pro', 'sonar-reasoning', 'sonar-reasoning-pro'],\n openrouter: [\n 'anthropic/claude-3.5-haiku',\n 'anthropic/claude-3.7-sonnet',\n 'anthropic/claude-opus-4',\n 'anthropic/claude-opus-4.1',\n 'anthropic/claude-sonnet-4',\n 'anthropic/claude-sonnet-4.5',\n 'cognitivecomputations/dolphin3.0-mistral-24b',\n 'cognitivecomputations/dolphin3.0-r1-mistral-24b',\n 'deepseek/deepseek-chat-v3-0324',\n 'deepseek/deepseek-chat-v3.1',\n 'deepseek/deepseek-r1-0528-qwen3-8b:free',\n 'deepseek/deepseek-r1-0528:free',\n 'deepseek/deepseek-r1-distill-llama-70b',\n 'deepseek/deepseek-r1-distill-qwen-14b',\n 'deepseek/deepseek-r1:free',\n 'deepseek/deepseek-v3-base:free',\n 'deepseek/deepseek-v3.1-terminus',\n 'featherless/qwerky-72b',\n 'google/gemini-2.0-flash-001',\n 'google/gemini-2.0-flash-exp:free',\n 'google/gemini-2.5-flash',\n 'google/gemini-2.5-pro',\n 'google/gemini-2.5-pro-preview-05-06',\n 'google/gemini-2.5-pro-preview-06-05',\n 'google/gemma-2-9b-it:free',\n 'google/gemma-3-12b-it',\n 'google/gemma-3-27b-it',\n 'google/gemma-3n-e4b-it',\n 'google/gemma-3n-e4b-it:free',\n 'meta-llama/llama-3.2-11b-vision-instruct',\n 'meta-llama/llama-3.3-70b-instruct:free',\n 'meta-llama/llama-4-scout:free',\n 'microsoft/mai-ds-r1:free',\n 'mistralai/codestral-2508',\n 'mistralai/devstral-medium-2507',\n 'mistralai/devstral-small-2505',\n 'mistralai/devstral-small-2505:free',\n 'mistralai/devstral-small-2507',\n 'mistralai/mistral-7b-instruct:free',\n 'mistralai/mistral-medium-3',\n 'mistralai/mistral-medium-3.1',\n 'mistralai/mistral-nemo:free',\n 'mistralai/mistral-small-3.1-24b-instruct',\n 'mistralai/mistral-small-3.2-24b-instruct',\n 'mistralai/mistral-small-3.2-24b-instruct:free',\n 'moonshotai/kimi-dev-72b:free',\n 'moonshotai/kimi-k2',\n 'moonshotai/kimi-k2-0905',\n 'moonshotai/kimi-k2:free',\n 'nousresearch/deephermes-3-llama-3-8b-preview',\n 'nousresearch/hermes-4-405b',\n 'nousresearch/hermes-4-70b',\n 'openai/gpt-4.1',\n 'openai/gpt-4.1-mini',\n 'openai/gpt-4o-mini',\n 'openai/gpt-5',\n 'openai/gpt-5-chat',\n 'openai/gpt-5-mini',\n 'openai/gpt-5-nano',\n 'openai/gpt-oss-120b',\n 'openai/gpt-oss-20b',\n 'openai/o4-mini',\n 'openrouter/cypher-alpha:free',\n 'openrouter/horizon-alpha',\n 'openrouter/horizon-beta',\n 'openrouter/sonoma-dusk-alpha',\n 'openrouter/sonoma-sky-alpha',\n 'qwen/qwen-2.5-coder-32b-instruct',\n 'qwen/qwen2.5-vl-32b-instruct:free',\n 'qwen/qwen2.5-vl-72b-instruct',\n 'qwen/qwen2.5-vl-72b-instruct:free',\n 'qwen/qwen3-14b:free',\n 'qwen/qwen3-235b-a22b-07-25',\n 'qwen/qwen3-235b-a22b-07-25:free',\n 'qwen/qwen3-235b-a22b-thinking-2507',\n 'qwen/qwen3-235b-a22b:free',\n 'qwen/qwen3-30b-a3b-instruct-2507',\n 'qwen/qwen3-30b-a3b:free',\n 'qwen/qwen3-32b:free',\n 'qwen/qwen3-8b:free',\n 'qwen/qwen3-coder',\n 'qwen/qwen3-coder:free',\n 'qwen/qwen3-max',\n 'qwen/qwen3-next-80b-a3b-instruct',\n 'qwen/qwq-32b:free',\n 'rekaai/reka-flash-3',\n 'sarvamai/sarvam-m:free',\n 'thudm/glm-z1-32b:free',\n 'tngtech/deepseek-r1t2-chimera:free',\n 'x-ai/grok-3',\n 'x-ai/grok-3-beta',\n 'x-ai/grok-3-mini',\n 'x-ai/grok-3-mini-beta',\n 'x-ai/grok-4',\n 'x-ai/grok-4-fast',\n 'x-ai/grok-4-fast:free',\n 'x-ai/grok-code-fast-1',\n 'z-ai/glm-4.5',\n 'z-ai/glm-4.5-air',\n 'z-ai/glm-4.5-air:free',\n 'z-ai/glm-4.5v',\n ],\n synthetic: [\n 'hf:Qwen/Qwen2.5-Coder-32B-Instruct',\n 'hf:Qwen/Qwen3-235B-A22B-Instruct-2507',\n 'hf:Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'hf:Qwen/Qwen3-Coder-480B-A35B-Instruct',\n 'hf:deepseek-ai/DeepSeek-R1',\n 'hf:deepseek-ai/DeepSeek-R1-0528',\n 'hf:deepseek-ai/DeepSeek-V3',\n 'hf:deepseek-ai/DeepSeek-V3-0324',\n 'hf:deepseek-ai/DeepSeek-V3.1',\n 'hf:deepseek-ai/DeepSeek-V3.1-Terminus',\n 'hf:meta-llama/Llama-3.1-405B-Instruct',\n 'hf:meta-llama/Llama-3.1-70B-Instruct',\n 'hf:meta-llama/Llama-3.1-8B-Instruct',\n 'hf:meta-llama/Llama-3.3-70B-Instruct',\n 'hf:meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8',\n 'hf:meta-llama/Llama-4-Scout-17B-16E-Instruct',\n 'hf:moonshotai/Kimi-K2-Instruct',\n 'hf:moonshotai/Kimi-K2-Instruct-0905',\n 'hf:openai/gpt-oss-120b',\n 'hf:zai-org/GLM-4.5',\n ],\n deepinfra: [\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo',\n 'moonshotai/Kimi-K2-Instruct',\n 'zai-org/GLM-4.5',\n ],\n zhipuai: ['glm-4.5', 'glm-4.5-air', 'glm-4.5-flash', 'glm-4.5v', 'glm-4.6'],\n submodel: [\n 'Qwen/Qwen3-235B-A22B-Instruct-2507',\n 'Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8',\n 'deepseek-ai/DeepSeek-R1-0528',\n 'deepseek-ai/DeepSeek-V3-0324',\n 'deepseek-ai/DeepSeek-V3.1',\n 'openai/gpt-oss-120b',\n 'zai-org/GLM-4.5-Air',\n 'zai-org/GLM-4.5-FP8',\n ],\n zai: ['glm-4.5', 'glm-4.5-air', 'glm-4.5-flash', 'glm-4.5v', 'glm-4.6'],\n inference: [\n 'google/gemma-3',\n 'meta/llama-3.1-8b-instruct',\n 'meta/llama-3.2-11b-vision-instruct',\n 'meta/llama-3.2-1b-instruct',\n 'meta/llama-3.2-3b-instruct',\n 'mistral/mistral-nemo-12b-instruct',\n 'osmosis/osmosis-structure-0.6b',\n 'qwen/qwen-2.5-7b-vision-instruct',\n 'qwen/qwen3-embedding-4b',\n ],\n requesty: [\n 'anthropic/claude-3-7-sonnet',\n 'anthropic/claude-4-sonnet-20250522',\n 'anthropic/claude-opus-4',\n 'anthropic/claude-opus-4-1-20250805',\n 'google/gemini-2.5-flash',\n 'google/gemini-2.5-pro',\n 'openai/gpt-4.1',\n 'openai/gpt-4.1-mini',\n 'openai/gpt-4o-mini',\n 'openai/gpt-5',\n 'openai/gpt-5-mini',\n 'openai/gpt-5-nano',\n 'openai/o4-mini',\n ],\n morph: ['auto', 'morph-v3-fast', 'morph-v3-large'],\n lmstudio: ['openai/gpt-oss-20b', 'qwen/qwen3-30b-a3b-2507', 'qwen/qwen3-coder-30b'],\n anthropic: [\n 'claude-3-5-haiku-20241022',\n 'claude-3-5-sonnet-20240620',\n 'claude-3-5-sonnet-20241022',\n 'claude-3-7-sonnet-20250219',\n 'claude-3-haiku-20240307',\n 'claude-3-opus-20240229',\n 'claude-3-sonnet-20240229',\n 'claude-opus-4-1-20250805',\n 'claude-opus-4-20250514',\n 'claude-sonnet-4-20250514',\n 'claude-sonnet-4-5-20250929',\n ],\n 'fireworks-ai': [\n 'accounts/fireworks/models/deepseek-r1-0528',\n 'accounts/fireworks/models/deepseek-v3-0324',\n 'accounts/fireworks/models/deepseek-v3p1',\n 'accounts/fireworks/models/glm-4p5',\n 'accounts/fireworks/models/glm-4p5-air',\n 'accounts/fireworks/models/gpt-oss-120b',\n 'accounts/fireworks/models/gpt-oss-20b',\n 'accounts/fireworks/models/kimi-k2-instruct',\n 'accounts/fireworks/models/qwen3-235b-a22b',\n 'accounts/fireworks/models/qwen3-coder-480b-a35b-instruct',\n ],\n modelscope: [\n 'Qwen/Qwen3-235B-A22B-Instruct-2507',\n 'Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'Qwen/Qwen3-30B-A3B-Instruct-2507',\n 'Qwen/Qwen3-30B-A3B-Thinking-2507',\n 'Qwen/Qwen3-Coder-30B-A3B-Instruct',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct',\n 'ZhipuAI/GLM-4.5',\n ],\n llama: [\n 'cerebras-llama-4-maverick-17b-128e-instruct',\n 'cerebras-llama-4-scout-17b-16e-instruct',\n 'groq-llama-4-maverick-17b-128e-instruct',\n 'llama-3.3-70b-instruct',\n 'llama-3.3-8b-instruct',\n 'llama-4-maverick-17b-128e-instruct-fp8',\n 'llama-4-scout-17b-16e-instruct-fp8',\n ],\n cerebras: ['gpt-oss-120b', 'qwen-3-235b-a22b-instruct-2507', 'qwen-3-coder-480b'],\n netlify: [\n 'anthropic/claude-opus-4-1-20250805',\n 'anthropic/claude-opus-4-20250514',\n 'anthropic/claude-sonnet-4-20250514',\n 'anthropic/claude-3-7-sonnet-20250219',\n 'anthropic/claude-3-5-haiku-20241022',\n 'anthropic/claude-sonnet-4-5-20250929',\n 'anthropic/claude-3-7-sonnet-latest',\n 'anthropic/claude-3-5-haiku-latest',\n 'anthropic/claude-3-haiku-20240307',\n 'gemini/gemini-flash-latest',\n 'gemini/gemini-2.5-flash',\n 'gemini/gemini-2.5-flash-lite-preview-09-2025',\n 'gemini/gemini-2.5-flash-lite',\n 'gemini/gemini-2.0-flash',\n 'gemini/gemini-2.0-flash-lite',\n 'gemini/gemini-2.5-pro',\n 'gemini/gemini-2.5-flash-preview-09-2025',\n 'gemini/gemini-flash-lite-latest',\n 'gemini/gemini-2.5-flash-image-preview',\n 'openai/o3',\n 'openai/gpt-5-mini',\n 'openai/gpt-4.1-nano',\n 'openai/o4-mini',\n 'openai/o3-mini',\n 'openai/codex-mini-latest',\n 'openai/gpt-5',\n 'openai/gpt-5-codex',\n 'openai/gpt-5-nano',\n 'openai/gpt-4.1',\n 'openai/gpt-4.1-mini',\n 'openai/gpt-4o',\n 'openai/gpt-4o-mini',\n ],\n} as const;\n\n/**\n * Type definitions for autocomplete support\n */\nexport type ProviderModels = typeof PROVIDER_MODELS;\nexport type Provider = keyof ProviderModels;\nexport type ModelForProvider<P extends Provider> = ProviderModels[P][number];\n\n/**\n * OpenAI-compatible model ID type\n * Full provider/model paths (e.g., \"openai/gpt-4o\", \"anthropic/claude-3-5-sonnet-20241022\")\n */\nexport type ModelRouterModelId = { [P in Provider]: `${P}/${ModelForProvider<P>}` }[Provider] | (string & {});\n\n/**\n * Get provider configuration by provider ID\n */\nexport function getProviderConfig(providerId: string): ProviderConfig | undefined {\n return PROVIDER_REGISTRY[providerId as keyof typeof PROVIDER_REGISTRY];\n}\n\n/**\n * Check if a provider is registered\n */\nexport function isProviderRegistered(providerId: string): boolean {\n return providerId in PROVIDER_REGISTRY;\n}\n\n/**\n * Get all registered provider IDs\n */\nexport function getRegisteredProviders(): string[] {\n return Object.keys(PROVIDER_REGISTRY);\n}\n\n/**\n * Parse a model string to extract provider and model ID\n * Examples:\n * \"openai/gpt-4o\" -> { provider: \"openai\", modelId: \"gpt-4o\" }\n * \"fireworks/accounts/etc/model\" -> { provider: \"fireworks\", modelId: \"accounts/etc/model\" }\n * \"gpt-4o\" -> { provider: null, modelId: \"gpt-4o\" }\n */\nexport function parseModelString(modelString: string): { provider: string | null; modelId: string } {\n const firstSlashIndex = modelString.indexOf('/');\n\n if (firstSlashIndex !== -1) {\n // Has at least one slash - extract everything before first slash as provider\n const provider = modelString.substring(0, firstSlashIndex);\n const modelId = modelString.substring(firstSlashIndex + 1);\n\n if (provider && modelId) {\n return {\n provider,\n modelId,\n };\n }\n }\n\n // No slash or invalid format\n return {\n provider: null,\n modelId: modelString,\n };\n}\n\n/**\n * Type guard to check if a string is a valid OpenAI-compatible model ID\n */\nexport function isValidModelId(modelId: string): modelId is ModelRouterModelId {\n const { provider } = parseModelString(modelId);\n return provider !== null && isProviderRegistered(provider);\n}\n","/**\n * Base class for model gateway providers\n * Gateways fetch provider configurations and build URLs for model access\n */\n\nexport interface ProviderConfig {\n url?: string;\n apiKeyHeader?: string;\n apiKeyEnvVar: string | string[];\n name: string;\n models: string[];\n docUrl?: string; // Optional documentation URL\n gateway: string;\n}\n\nexport abstract class MastraModelGateway {\n /**\n * Name of the gateway provider\n */\n abstract readonly name: string;\n\n /**\n * Optional prefix for provider IDs\n * If set, all providers from this gateway will be prefixed (e.g., \"netlify/openai\")\n * Registry gateways (like models.dev) typically don't have a prefix\n */\n abstract readonly prefix?: string;\n\n /**\n * Fetch provider configurations from the gateway\n * Should return providers in the standard format\n */\n abstract fetchProviders(): Promise<Record<string, ProviderConfig>>;\n\n /**\n * Build the URL for a specific model/provider combination\n * @param modelId Full model ID (e.g., \"openai/gpt-4o\" or \"netlify/openai/gpt-4o\")\n * @param envVars Environment variables available\n * @returns URL string if this gateway can handle the model, false otherwise\n */\n abstract buildUrl(modelId: string, envVars: Record<string, string>): string | false | Promise<string | false>;\n\n /**\n * Build headers for the request\n * Optional - only needed if the gateway requires special headers\n */\n buildHeaders?(\n modelId: string,\n envVars: Record<string, string>,\n ): Record<string, string> | Promise<Record<string, string>>;\n}\n","import { MastraModelGateway } from './base.js';\nimport type { ProviderConfig } from './base.js';\n\ninterface ModelsDevProviderInfo {\n id: string;\n name: string;\n models: Record<string, any>;\n env?: string[]; // Array of env var names\n api?: string; // Base API URL\n npm?: string; // NPM package name\n doc?: string; // Documentation URL\n}\n\ninterface ModelsDevResponse {\n [providerId: string]: ModelsDevProviderInfo;\n}\n\n// Special cases: providers that are OpenAI-compatible but have their own SDKs\n// These providers work with OpenAI-compatible endpoints even though models.dev\n// might list them with their own SDK packages\n// This constant is ONLY used during generation in fetchProviders() to determine\n// which providers from models.dev should be included in the registry.\n// At runtime, buildUrl() and buildHeaders() use the pre-generated PROVIDER_REGISTRY instead.\nconst OPENAI_COMPATIBLE_OVERRIDES: Record<string, Partial<ProviderConfig>> = {\n openai: {\n url: 'https://api.openai.com/v1/chat/completions',\n },\n anthropic: {\n url: 'https://api.anthropic.com/v1/chat/completions',\n apiKeyHeader: 'x-api-key',\n },\n cerebras: {\n url: 'https://api.cerebras.ai/v1/chat/completions',\n },\n xai: {\n url: 'https://api.x.ai/v1/chat/completions',\n },\n mistral: {\n url: 'https://api.mistral.ai/v1/chat/completions',\n },\n google: {\n url: 'https://generativelanguage.googleapis.com/v1beta/chat/completions',\n },\n groq: {\n url: 'https://api.groq.com/openai/v1/chat/completions',\n },\n togetherai: {\n url: 'https://api.together.xyz/v1/chat/completions',\n },\n deepinfra: {\n url: 'https://api.deepinfra.com/v1/openai/chat/completions',\n },\n perplexity: {\n url: 'https://api.perplexity.ai/chat/completions',\n },\n vercel: {\n url: 'https://ai-gateway.vercel.sh/v1/chat/completions',\n apiKeyEnvVar: 'AI_GATEWAY_API_KEY',\n },\n};\n\nexport class ModelsDevGateway extends MastraModelGateway {\n readonly name = 'models.dev';\n readonly prefix = undefined; // No prefix for registry gateway\n\n private providerConfigs: Record<string, ProviderConfig> = {};\n\n constructor(providerConfigs?: Record<string, ProviderConfig>) {\n super();\n if (providerConfigs) this.providerConfigs = providerConfigs;\n }\n\n async fetchProviders(): Promise<Record<string, ProviderConfig>> {\n console.info('Fetching providers from models.dev API...');\n\n const response = await fetch('https://models.dev/api.json');\n if (!response.ok) {\n throw new Error(`Failed to fetch from models.dev: ${response.statusText}`);\n }\n\n const data = (await response.json()) as ModelsDevResponse;\n\n const providerConfigs: Record<string, ProviderConfig> = {};\n\n for (const [providerId, providerInfo] of Object.entries(data)) {\n // Skip non-provider entries (if any)\n if (!providerInfo || typeof providerInfo !== 'object' || !providerInfo.models) continue;\n\n // Use provider ID as-is (keep hyphens for consistency)\n const normalizedId = providerId;\n\n // Check if this is OpenAI-compatible based on npm package or overrides\n const isOpenAICompatible =\n providerInfo.npm === '@ai-sdk/openai-compatible' ||\n providerInfo.npm === '@ai-sdk/gateway' || // Vercel AI Gateway is OpenAI-compatible\n normalizedId in OPENAI_COMPATIBLE_OVERRIDES;\n\n // Also include providers that have an API URL and env vars (likely OpenAI-compatible)\n const hasApiAndEnv = providerInfo.api && providerInfo.env && providerInfo.env.length > 0;\n\n if (isOpenAICompatible || hasApiAndEnv) {\n // Get model IDs from the models object\n const modelIds = Object.keys(providerInfo.models).sort();\n\n // Get the API URL from the provider info or overrides\n let url = providerInfo.api || OPENAI_COMPATIBLE_OVERRIDES[normalizedId]?.url;\n\n // Ensure the URL ends with /chat/completions if it doesn't already\n if (url && !url.includes('/chat/completions') && !url.includes('/messages')) {\n url = url.replace(/\\/$/, '') + '/chat/completions';\n }\n\n // Skip if we don't have a URL\n if (!url) {\n console.info(`Skipping ${normalizedId}: No API URL available`);\n continue;\n }\n\n // Get the API key env var from the provider info\n // Convert hyphens to underscores for env var naming convention\n const apiKeyEnvVar = providerInfo.env?.[0] || `${normalizedId.toUpperCase().replace(/-/g, '_')}_API_KEY`;\n\n // Determine the API key header (special case for Anthropic)\n const apiKeyHeader = OPENAI_COMPATIBLE_OVERRIDES[normalizedId]?.apiKeyHeader || 'Authorization';\n\n providerConfigs[normalizedId] = {\n url,\n apiKeyEnvVar,\n apiKeyHeader,\n name: providerInfo.name || providerId.charAt(0).toUpperCase() + providerId.slice(1),\n models: modelIds.filter(id => !id.includes(`codex`)), // codex requires responses api\n docUrl: providerInfo.doc, // Include documentation URL if available\n gateway: `models.dev`,\n };\n } else {\n console.info(`Skipped provider ${providerInfo.name}`);\n }\n }\n\n // Store for later use in buildUrl and buildHeaders\n this.providerConfigs = providerConfigs;\n\n console.info(`Found ${Object.keys(providerConfigs).length} OpenAI-compatible providers`);\n console.info('Providers:', Object.keys(providerConfigs).sort());\n return providerConfigs;\n }\n\n buildUrl(modelId: string, envVars: Record<string, string>): string | false | Promise<string | false> {\n // Parse model ID to get provider\n const [provider, ...modelParts] = modelId.split('/');\n\n // This gateway only handles models without a prefix (since we have no prefix)\n // and only if we know about the provider\n if (!provider || !modelParts.length) {\n return false; // Not a full model ID\n }\n\n const config = this.providerConfigs[provider];\n\n if (!config?.url) {\n return false; // We don't know how to handle this provider\n }\n\n // Check for custom base URL from env vars\n const baseUrlEnvVar = `${provider.toUpperCase().replace(/-/g, '_')}_BASE_URL`;\n const customBaseUrl = envVars[baseUrlEnvVar];\n\n return customBaseUrl || config.url;\n }\n\n buildHeaders(\n modelId: string,\n envVars: Record<string, string>,\n ): Record<string, string> | Promise<Record<string, string>> {\n const [provider] = modelId.split('/');\n if (!provider) {\n return {};\n }\n\n const config = this.providerConfigs[provider];\n\n if (!config) {\n return {};\n }\n\n const apiKey = typeof config.apiKeyEnvVar === `string` ? envVars[config.apiKeyEnvVar] : undefined; // we only use single string env var for models.dev for now\n if (!apiKey) {\n return {};\n }\n\n const headers: Record<string, string> = {};\n\n if (config.apiKeyHeader === 'Authorization' || !config.apiKeyHeader) {\n headers['Authorization'] = `Bearer ${apiKey}`;\n } else {\n headers[config.apiKeyHeader] = apiKey;\n }\n\n // Special handling for Anthropic\n if (provider === 'anthropic') {\n headers['anthropic-version'] = '2023-06-01';\n }\n\n return headers;\n }\n}\n","import { InMemoryServerCache } from '../../../cache/inmemory.js';\nimport { MastraError } from '../../../error/index.js';\nimport { MastraModelGateway } from './base.js';\nimport type { ProviderConfig } from './base.js';\n\ninterface NetlifyProviderResponse {\n token_env_var: string;\n url_env_var: string;\n models: string[];\n}\ninterface NetlifyResponse {\n providers: Record<string, NetlifyProviderResponse>;\n}\n\ninterface NetlifyTokenResponse {\n token: string;\n url: string;\n expires_at: number;\n}\n\ninterface CachedToken {\n token: string;\n url: string;\n expiresAt: number;\n}\n\ninterface TokenData {\n token: string;\n url: string;\n}\nexport class NetlifyGateway extends MastraModelGateway {\n readonly name = 'netlify';\n readonly prefix = 'netlify'; // All providers will be prefixed with \"netlify/\"\n private tokenCache = new InMemoryServerCache();\n\n async fetchProviders(): Promise<Record<string, ProviderConfig>> {\n console.info('Fetching providers from Netlify AI Gateway...');\n const response = await fetch('https://api.netlify.com/api/v1/ai-gateway/providers');\n if (!response.ok) {\n throw new Error(`Failed to fetch from Netlify: ${response.statusText}`);\n }\n const data = (await response.json()) as NetlifyResponse;\n const netlify: ProviderConfig = {\n apiKeyEnvVar: ['NETLIFY_TOKEN', 'NETLIFY_SITE_ID'],\n apiKeyHeader: 'Authorization', // Netlify uses standard Bearer auth\n name: `Netlify`,\n gateway: `netlify`,\n models: [],\n };\n // Convert Netlify format to our standard format\n for (const [providerId, provider] of Object.entries(data.providers)) {\n for (const model of provider.models) {\n netlify.models.push(`${providerId}/${model}`);\n }\n }\n console.info(`Found ${Object.keys(data.providers).length} models via Netlify Gateway`);\n return { netlify };\n }\n\n async buildUrl(modelId: string, envVars: Record<string, string>): Promise<string | false> {\n // Check if this model ID is for our gateway\n if (!modelId.startsWith(`${this.prefix}/`)) {\n return false; // Not our prefix\n }\n // Parse the model ID: \"netlify/openai/gpt-4o\"\n const parts = modelId.split('/');\n if (parts.length < 3) {\n return false; // Invalid format\n }\n const provider = parts[1];\n if (!provider) {\n return false;\n }\n\n // Check for Netlify site ID first (for token exchange)\n const siteId = envVars['NETLIFY_SITE_ID'];\n const netlifyToken = envVars['NETLIFY_TOKEN'];\n\n if (!netlifyToken) {\n throw new MastraError({\n id: 'NETLIFY_GATEWAY_NO_TOKEN',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Missing NETLIFY_TOKEN environment variable required for model: ${modelId}`,\n });\n }\n\n if (!siteId) {\n throw new MastraError({\n id: 'NETLIFY_GATEWAY_NO_SITE_ID',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Missing NETLIFY_SITE_ID environment variable required for model: ${modelId}`,\n });\n }\n\n try {\n const tokenData = await this.getOrFetchToken(siteId, netlifyToken);\n return `${tokenData.url}chat/completions`;\n } catch (error) {\n throw new MastraError({\n id: 'NETLIFY_GATEWAY_TOKEN_ERROR',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Failed to get Netlify AI Gateway token for model ${modelId}: ${error instanceof Error ? error.message : String(error)}`,\n });\n }\n }\n\n /**\n * Get cached token or fetch a new site-specific AI Gateway token from Netlify\n */\n private async getOrFetchToken(siteId: string, netlifyToken: string): Promise<TokenData> {\n const cacheKey = `netlify-token:${siteId}:${netlifyToken}`;\n\n // Check cache first\n const cached = (await this.tokenCache.get(cacheKey)) as CachedToken | undefined;\n if (cached && cached.expiresAt > Date.now() / 1000 + 60) {\n // Return cached token if it won't expire in the next minute\n return { token: cached.token, url: cached.url };\n }\n\n // Fetch new token\n const response = await fetch(`https://api.netlify.com/api/v1/sites/${siteId}/ai-gateway/token`, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${netlifyToken}`,\n },\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`Failed to get Netlify AI Gateway token: ${response.status} ${error}`);\n }\n\n const tokenResponse = (await response.json()) as NetlifyTokenResponse;\n\n // Cache the token - InMemoryServerCache will handle the TTL\n await this.tokenCache.set(cacheKey, {\n token: tokenResponse.token,\n url: tokenResponse.url,\n expiresAt: tokenResponse.expires_at,\n });\n\n return { token: tokenResponse.token, url: tokenResponse.url };\n }\n async buildHeaders(modelId: string, envVars: Record<string, string>): Promise<Record<string, string>> {\n const siteId = envVars['NETLIFY_SITE_ID'];\n const netlifyToken = envVars['NETLIFY_TOKEN'];\n\n if (!netlifyToken) {\n throw new MastraError({\n id: 'NETLIFY_GATEWAY_NO_TOKEN',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Missing NETLIFY_TOKEN environment variable required for model: ${modelId}`,\n });\n }\n\n if (!siteId) {\n throw new MastraError({\n id: 'NETLIFY_GATEWAY_NO_SITE_ID',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Missing NETLIFY_SITE_ID environment variable required for model: ${modelId}`,\n });\n }\n\n try {\n const tokenData = await this.getOrFetchToken(siteId, netlifyToken);\n return {\n Authorization: `Bearer ${tokenData.token}`,\n };\n } catch (error) {\n throw new MastraError({\n id: 'NETLIFY_GATEWAY_TOKEN_ERROR',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Failed to get Netlify AI Gateway token for model ${modelId}: ${error instanceof Error ? error.message : String(error)}`,\n });\n }\n }\n}\n","import type { MastraModelGateway } from './gateways/base.js';\nimport { ModelsDevGateway } from './gateways/models-dev.js';\nimport { NetlifyGateway } from './gateways/netlify.js';\nimport { PROVIDER_REGISTRY } from './provider-registry.generated.js';\n\nfunction getStaticProvidersByGateway(name: string) {\n return Object.fromEntries(Object.entries(PROVIDER_REGISTRY).filter(([_provider, config]) => config.gateway === name));\n}\n\nconst gateways = [new NetlifyGateway(), new ModelsDevGateway(getStaticProvidersByGateway(`models.dev`))];\n\n/**\n * Find the gateway that handles a specific model ID based on prefix\n */\nfunction findGatewayForModel(modelId: string): MastraModelGateway | null {\n // First, check for gateways with specific prefixes\n const prefixedGateway = gateways.find((g: MastraModelGateway) => g.prefix && modelId.startsWith(`${g.prefix}/`));\n if (prefixedGateway) {\n return prefixedGateway;\n }\n\n // Then check gateways without prefixes (like models.dev) that might handle the model\n const unprefixedGateways = gateways.filter((g: MastraModelGateway) => !g.prefix);\n for (const gateway of unprefixedGateways) {\n // These gateways will check internally if they can handle the model\n return gateway; // For now, return the first unprefixed gateway (models.dev)\n }\n\n return null;\n}\n\n/**\n * Resolve URL and headers for a model using runtime gateways\n */\nexport async function resolveModelConfig(\n modelId: string,\n envVars: Record<string, string> = process.env as Record<string, string>,\n): Promise<{\n url: string | false;\n headers: Record<string, string>;\n resolvedModelId: string;\n}> {\n const gateway = findGatewayForModel(modelId);\n\n if (!gateway) {\n return { url: false, headers: {}, resolvedModelId: modelId };\n }\n\n const url = await gateway.buildUrl(modelId, envVars);\n if (url === false) {\n return { url: false, headers: {}, resolvedModelId: modelId };\n }\n\n const headers = gateway.buildHeaders ? await gateway.buildHeaders(modelId, envVars) : {};\n\n let resolvedModelId = modelId;\n\n // remove any gateway prefix\n const prefix = gateway.prefix ? `${gateway.prefix}/` : null;\n if (prefix && resolvedModelId.startsWith(prefix)) {\n resolvedModelId = resolvedModelId.substring(prefix.length);\n }\n\n // remove the provider id\n const firstSlashIndex = resolvedModelId.indexOf('/');\n if (firstSlashIndex !== -1) {\n resolvedModelId = resolvedModelId.substring(firstSlashIndex + 1);\n }\n\n return { url, headers, resolvedModelId };\n}\n","import type {\n LanguageModelV2,\n LanguageModelV2CallOptions,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2CallWarning,\n} from '@ai-sdk/provider-v5';\nimport { resolveModelConfig } from './gateway-resolver.js';\nimport { parseModelString, getProviderConfig } from './provider-registry.generated.js';\nimport type { ModelRouterModelId } from './provider-registry.generated.js';\nimport type { OpenAICompatibleConfig } from './shared.types';\n\n// Helper function to resolve API key from environment\nfunction resolveApiKey({ provider, apiKey }: { provider?: string; apiKey?: string }): string | undefined {\n if (apiKey) return apiKey;\n\n if (provider) {\n const config = getProviderConfig(provider);\n if (typeof config?.apiKeyEnvVar === `string`) {\n return process.env[config.apiKeyEnvVar];\n }\n if (Array.isArray(config?.apiKeyEnvVar)) {\n for (const key of config.apiKeyEnvVar) {\n if (process.env[key]) return process.env[key];\n }\n }\n }\n\n return undefined;\n}\n\n// TODO: get these types from openai\ninterface OpenAIStreamChunk {\n id?: string;\n object?: string;\n created?: number;\n model?: string;\n choices?: Array<{\n index: number;\n delta?: {\n role?: string;\n content?: string | null;\n tool_calls?: Array<{\n index: number;\n id?: string;\n type?: string;\n function?: {\n name?: string;\n arguments?: string;\n };\n }>;\n };\n finish_reason?: string | null;\n }>;\n usage?: {\n prompt_tokens?: number;\n completion_tokens?: number;\n total_tokens?: number;\n };\n}\n\nexport class OpenAICompatibleModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2' as const;\n readonly defaultObjectGenerationMode = 'json' as const;\n readonly supportsStructuredOutputs = true;\n readonly supportsImageUrls = true;\n readonly supportedUrls = {} as Record<string, RegExp[]>;\n\n readonly modelId: string;\n readonly provider: string;\n\n private config: OpenAICompatibleConfig;\n private fullModelId: string; // Store the full model ID for gateway resolution\n\n constructor(config: ModelRouterModelId | OpenAICompatibleConfig) {\n // Parse configuration\n let parsedConfig: OpenAICompatibleConfig;\n\n if (typeof config === 'string') {\n // First check if it's a valid URL\n let isUrl = false;\n try {\n new URL(config);\n isUrl = true;\n } catch {\n // Not a URL, continue with provider parsing\n }\n\n if (isUrl) {\n // If it's a direct URL - use as-is\n parsedConfig = {\n id: 'unknown',\n url: config,\n };\n this.provider = 'openai-compatible';\n this.fullModelId = 'unknown';\n this.config = { id: 'unknown', url: config };\n } else {\n // Handle magic strings like \"openai/gpt-4o\" or \"netlify/openai/gpt-4o\"\n this.fullModelId = config;\n const firstSlashIndex = config.indexOf('/');\n\n if (firstSlashIndex !== -1) {\n const provider = config.substring(0, firstSlashIndex);\n const modelId = config.substring(firstSlashIndex + 1);\n\n parsedConfig = {\n id: modelId,\n apiKey: resolveApiKey({ provider }),\n };\n this.provider = provider;\n } else {\n // No slash at all, treat as direct model ID\n throw new Error(`Invalid model string: \"${config}\". Use \"provider/model\" format or a direct URL.`);\n }\n }\n } else {\n // Handle config object\n parsedConfig = config;\n this.fullModelId = config.id;\n\n // Extract provider from id if present\n const parsed = parseModelString(config.id);\n this.provider = parsed.provider || 'openai-compatible';\n\n if (parsed.provider && parsed.modelId !== config.id) {\n parsedConfig.id = parsed.modelId;\n }\n\n // Resolve API key if not provided\n if (!parsedConfig.apiKey) {\n parsedConfig.apiKey = resolveApiKey({ provider: parsed.provider || undefined });\n }\n }\n\n // Store the configuration\n this.modelId = parsedConfig.id;\n this.config = parsedConfig;\n }\n\n private convertMessagesToOpenAI(messages: LanguageModelV2CallOptions['prompt']): any[] {\n return messages\n .map(msg => {\n if (msg.role === 'system') {\n return {\n role: 'system',\n content: msg.content,\n };\n }\n\n if (msg.role === 'user') {\n // Handle content parts\n const contentParts = msg.content\n .map(part => {\n if (part.type === 'text') {\n return { type: 'text', text: part.text };\n }\n // Note: v2 uses 'file' type with image property\n if (part.type === 'file') {\n return {\n type: 'image_url',\n image_url: { url: part.data },\n };\n }\n return null;\n })\n .filter(Boolean);\n\n // If only text parts, flatten to string\n if (contentParts.every(p => p?.type === 'text')) {\n return {\n role: 'user',\n content: contentParts.map(p => p?.text || '').join(''),\n };\n }\n\n return {\n role: 'user',\n content: contentParts,\n };\n }\n\n if (msg.role === 'assistant') {\n const textContent = msg.content\n .filter(part => part.type === 'text')\n .map(part => part.text)\n .join('');\n\n const toolCalls = msg.content\n .filter(part => part.type === 'tool-call')\n .map(part => ({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input || {}),\n },\n }));\n\n return {\n role: 'assistant',\n content: textContent || null,\n ...(toolCalls.length > 0 && { tool_calls: toolCalls }),\n };\n }\n\n if (msg.role === 'tool') {\n return msg.content.map(toolResponse => ({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content: JSON.stringify(toolResponse.output),\n }));\n }\n\n return msg;\n })\n .flat();\n }\n\n private convertToolsToOpenAI(tools: LanguageModelV2CallOptions['tools']): any[] | undefined {\n if (!tools || Object.keys(tools).length === 0) return undefined;\n\n return Object.entries(tools).map(([name, tool]) => {\n if (tool.type === 'function') {\n return {\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema || {},\n },\n };\n }\n // For provider-defined tools, use minimal definition\n return {\n type: 'function',\n function: {\n name,\n description: `Provider tool: ${name}`,\n parameters: {},\n },\n };\n });\n }\n\n private mapFinishReason(reason: string | null): LanguageModelV2FinishReason {\n switch (reason) {\n case 'stop':\n return 'stop';\n case 'length':\n case 'max_tokens':\n return 'length';\n case 'tool_calls':\n case 'function_call':\n return 'tool-calls';\n case 'content_filter':\n return 'content-filter';\n default:\n return 'unknown';\n }\n }\n\n /**\n * Resolve URL and headers for the request\n * This is called fresh for each request to ensure we get the latest values\n * (e.g., Netlify tokens can expire and need to be refreshed)\n */\n private async resolveRequestConfig(): Promise<{ url: string; headers: Record<string, string>; modelId: string }> {\n // If they provide a url as a string or in the config object, we shouldn't use our gateway classes\n const shouldUseGateway = !this.config.url;\n\n if (shouldUseGateway) {\n // Use gateway resolution - always get fresh values\n const { url, headers, resolvedModelId } = await resolveModelConfig(this.fullModelId);\n\n if (url === false) {\n throw new Error(`No gateway can handle model: ${this.fullModelId}`);\n }\n\n // Merge headers with custom headers\n const finalHeaders = {\n 'Content-Type': 'application/json',\n ...headers,\n ...this.config.headers,\n };\n\n return { url, headers: finalHeaders, modelId: resolvedModelId };\n } else {\n // Use static configuration\n if (!this.config.url) {\n throw new Error('URL is required for OpenAI-compatible model');\n }\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...this.config.headers,\n };\n\n // Add auth header if API key is available\n if (this.config.apiKey) {\n // Check if we need a special header format\n const providerConfig = this.provider !== 'openai-compatible' ? getProviderConfig(this.provider) : undefined;\n if (providerConfig?.apiKeyHeader === 'x-api-key') {\n headers['x-api-key'] = this.config.apiKey;\n } else {\n headers['Authorization'] = `Bearer ${this.config.apiKey}`;\n }\n }\n\n return { url: this.config.url, headers, modelId: this.modelId };\n }\n }\n\n private validateApiKey(): void {\n // Skip validation for models that will use gateway resolution\n // Gateway handles auth through its own mechanism (e.g., Netlify uses site ID + token)\n const willUseGateway = !this.config.url;\n if (willUseGateway) {\n return;\n }\n\n // Check if API key is required and missing\n if (!this.config.apiKey && this.provider !== 'openai-compatible') {\n // Get the provider config to find the env var name\n const providerConfig = getProviderConfig(this.provider);\n if (providerConfig?.apiKeyEnvVar) {\n throw new Error(\n `API key not found for provider \"${this.provider}\". Please set the ${providerConfig.apiKeyEnvVar} environment variable.`,\n );\n } else {\n throw new Error(\n `API key not found for provider \"${this.provider}\". Please provide an API key in the configuration.`,\n );\n }\n }\n }\n\n async doGenerate(): Promise<never> {\n throw new Error(\n 'doGenerate is not supported by OpenAICompatibleModel. ' +\n 'Mastra only uses streaming (doStream) for all LLM calls.',\n );\n }\n\n async doStream(options: LanguageModelV2CallOptions): Promise<{\n stream: ReadableStream<LanguageModelV2StreamPart>;\n request?: { body: string };\n response?: { headers: Record<string, string> };\n warnings: LanguageModelV2CallWarning[];\n }> {\n // Validate API key and return error stream if validation fails\n try {\n this.validateApiKey();\n } catch (error) {\n // Return an error stream instead of throwing\n return {\n stream: new ReadableStream({\n start(controller) {\n controller.enqueue({\n type: 'error',\n error: error instanceof Error ? error.message : String(error),\n } as LanguageModelV2StreamPart);\n },\n }),\n warnings: [],\n };\n }\n\n try {\n // Resolve URL and headers\n const { url, headers, modelId: resolvedModelId } = await this.resolveRequestConfig();\n\n const { prompt, tools, toolChoice, providerOptions } = options;\n\n // TODO: real body type, not any\n const body: any = {\n messages: this.convertMessagesToOpenAI(prompt),\n model: resolvedModelId,\n stream: true,\n ...providerOptions,\n };\n\n const openAITools = this.convertToolsToOpenAI(tools);\n if (openAITools) {\n body.tools = openAITools;\n if (toolChoice) {\n body.tool_choice =\n toolChoice.type === 'none'\n ? 'none'\n : toolChoice.type === 'required'\n ? 'required'\n : toolChoice.type === 'auto'\n ? 'auto'\n : toolChoice.type === 'tool'\n ? { type: 'function', function: { name: toolChoice.toolName } }\n : 'auto';\n }\n }\n\n // Handle structured output\n if (options.responseFormat?.type === 'json') {\n body.response_format = {\n type: 'json_schema',\n json_schema: {\n name: 'response',\n strict: true,\n schema: options.responseFormat.schema,\n },\n };\n }\n\n const fetchArgs = {\n method: 'POST',\n headers,\n body: JSON.stringify(body),\n signal: options.abortSignal,\n };\n const response = await fetch(url, fetchArgs);\n\n if (!response.ok) {\n const error = await response.text();\n\n // Check for authentication errors\n if (response.status === 401 || response.status === 403) {\n const providerConfig = getProviderConfig(this.provider);\n if (providerConfig?.apiKeyEnvVar) {\n throw new Error(\n `Authentication failed for provider \"${this.provider}\". Please ensure the ${providerConfig.apiKeyEnvVar} environment variable is set with a valid API key.`,\n );\n }\n }\n\n throw new Error(`OpenAI-compatible API error: ${response.status} - ${error}`);\n }\n\n const reader = response.body?.getReader();\n if (!reader) {\n throw new Error('Response body is not readable');\n }\n\n const decoder = new TextDecoder();\n let buffer = '';\n let sentStart = false;\n const toolCallBuffers = new Map<number, { id: string; name: string; args: string; sent?: boolean }>();\n const mapFinishReason = this.mapFinishReason.bind(this);\n const modelId = this.modelId; // Capture modelId for use in stream\n\n let isActiveText = false;\n\n const stream = new ReadableStream<LanguageModelV2StreamPart>({\n async start(controller) {\n try {\n // Send stream-start\n controller.enqueue({\n type: 'stream-start',\n warnings: [],\n });\n\n while (true) {\n const { done, value } = await reader.read();\n\n if (done) {\n // Parse and send any buffered tool calls that haven't been sent yet\n for (const [_, toolCall] of toolCallBuffers) {\n if (!toolCall.sent && toolCall.id && toolCall.name && toolCall.args) {\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.id,\n toolName: toolCall.name,\n input: toolCall.args || '{}',\n });\n }\n }\n\n controller.close();\n break;\n }\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split('\\n');\n buffer = lines.pop() || '';\n\n for (const line of lines) {\n if (line.trim() === '' || line.trim() === 'data: [DONE]') {\n continue;\n }\n\n if (line.startsWith('data: ')) {\n try {\n const data: OpenAIStreamChunk = JSON.parse(line.slice(6));\n\n // Send response metadata from first chunk\n if (!sentStart && data.id) {\n controller.enqueue({\n type: 'response-metadata',\n id: data.id,\n modelId: data.model || modelId,\n timestamp: new Date(data.created ? data.created * 1000 : Date.now()),\n });\n sentStart = true;\n }\n\n const choice = data.choices?.[0];\n if (!choice) continue;\n\n // Handle text delta\n if (choice.delta?.content) {\n if (!isActiveText) {\n controller.enqueue({ type: 'text-start', id: 'text-1' });\n isActiveText = true;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: 'text-1',\n delta: choice.delta.content,\n });\n } else if (isActiveText) {\n controller.enqueue({ type: 'text-end', id: 'text-1' });\n isActiveText = false;\n }\n\n // Handle tool call deltas\n if (choice.delta?.tool_calls) {\n for (const toolCall of choice.delta.tool_calls) {\n const index = toolCall.index;\n\n if (!toolCallBuffers.has(index)) {\n // Send tool-input-start when we first see a tool call\n if (toolCall.id && toolCall.function?.name) {\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCall.id,\n toolName: toolCall.function.name,\n });\n }\n\n toolCallBuffers.set(index, {\n id: toolCall.id || '',\n name: toolCall.function?.name || '',\n args: '',\n });\n }\n\n const buffer = toolCallBuffers.get(index)!;\n\n if (toolCall.id) {\n buffer.id = toolCall.id;\n }\n\n if (toolCall.function?.name) {\n buffer.name = toolCall.function.name;\n }\n\n if (toolCall.function?.arguments) {\n buffer.args += toolCall.function.arguments;\n controller.enqueue({\n type: 'tool-input-delta',\n id: buffer.id,\n delta: toolCall.function.arguments,\n });\n\n // Check if tool call is complete (parsable JSON)\n try {\n JSON.parse(buffer.args);\n if (buffer.id && buffer.name) {\n controller.enqueue({\n type: 'tool-input-end',\n id: buffer.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: buffer.id,\n toolName: buffer.name,\n input: buffer.args,\n });\n\n toolCallBuffers.set(index, {\n id: buffer.id,\n name: buffer.name,\n args: buffer.args,\n sent: true,\n });\n }\n } catch {\n // Not complete JSON yet, continue buffering\n }\n }\n }\n }\n\n // Handle finish\n if (choice.finish_reason) {\n // Don't send tool calls again - they've already been sent when complete\n toolCallBuffers.clear();\n\n controller.enqueue({\n type: 'finish',\n finishReason: mapFinishReason(choice.finish_reason),\n usage: data.usage\n ? {\n inputTokens: data.usage.prompt_tokens || 0,\n outputTokens: data.usage.completion_tokens || 0,\n totalTokens: data.usage.total_tokens || 0,\n }\n : {\n inputTokens: 0,\n outputTokens: 0,\n totalTokens: 0,\n },\n });\n }\n } catch (e) {\n console.error('Error parsing SSE data:', e);\n }\n }\n }\n }\n } catch (error) {\n return {\n stream: new ReadableStream({\n start(controller) {\n controller.enqueue({\n type: 'error',\n error: error instanceof Error ? error.message : String(error),\n } as LanguageModelV2StreamPart);\n },\n }),\n warnings: [],\n };\n }\n },\n });\n\n return {\n stream,\n request: { body: JSON.stringify(body) },\n response: { headers: Object.fromEntries(response.headers.entries()) },\n warnings: [],\n };\n } catch (error) {\n return {\n stream: new ReadableStream({\n start(controller) {\n controller.enqueue({\n type: 'error',\n error: error instanceof Error ? error.message : String(error),\n } as LanguageModelV2StreamPart);\n },\n }),\n warnings: [],\n };\n }\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { InstrumentClass } from './chunk-
|
|
1
|
+
import { InstrumentClass } from './chunk-QFKTSGBI.js';
|
|
2
2
|
import { MastraBase } from './chunk-BMVFEBPE.js';
|
|
3
3
|
import { __decoratorStart, __decorateElement, __runInitializers } from './chunk-3HXBPDKN.js';
|
|
4
4
|
|
|
@@ -35,5 +35,5 @@ MastraTTS = /*@__PURE__*/(_ => {
|
|
|
35
35
|
})();
|
|
36
36
|
|
|
37
37
|
export { MastraTTS };
|
|
38
|
-
//# sourceMappingURL=chunk-
|
|
39
|
-
//# sourceMappingURL=chunk-
|
|
38
|
+
//# sourceMappingURL=chunk-T2CUZA2P.js.map
|
|
39
|
+
//# sourceMappingURL=chunk-T2CUZA2P.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,IAAA;AAaA,GAAA,EAAA;AAAiB,IACf,KAAA,CAAQ;AAAA,MACR,SAAA,EAAA;AACF,KAAC,CAAA;AACM,IAAe,IAAA,CAAA,KAAA;AAA6B,EACjD;AAAA,EACA,MAAA,CAAA,MAAY,EAAE,UAAoB,EAAA;AAChC,IAAA,OAAM,IAAA,CAAA,SAAA,EAAA,WAAA,CAAA,MAAA,EAAA;AAAA,MACJ,QAAA,EAAA,CAAW,EAAA,IAAA,CAAA,KAAA,CAAA,IAAA,CAAA,KAAA,EAAA,UAAA,CAAA,CAAA;AAAA,MACZ,UAAA,EAAA;AACD,QAAA,UAAa,EAAA,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,IAAA,CAAA;AAAA;AACf,KAEA,CAAA;AACE,EAAA;AACsC;AACY,SAC9C,gBAAY,CAAA,CAAA,IAAA;AAAA,EAAA,KAAA,GACV,gBAAe,CAAA,EAAK,CAAA;AAAU,EAAA,SAChC,GAAA,iBAAA,CAAA,KAAA,EAAA,CAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,SAAA,CAAA;AAAA,EAAA,iBACI,CAAA,KAAA,EAAA,CAAA,EAAA,SAAA,CAAA;AAAA,EAEV,OAAA,SAAA;AAIF,CAAA,EAAA","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/tts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,IAAA;AAaA,GAAA,EAAA;AAAiB,IACf,KAAA,CAAQ;AAAA,MACR,SAAA,EAAA;AACF,KAAC,CAAA;AACM,IAAe,IAAA,CAAA,KAAA;AAA6B,EACjD;AAAA,EACA,MAAA,CAAA,MAAY,EAAE,UAAoB,EAAA;AAChC,IAAA,OAAM,IAAA,CAAA,SAAA,EAAA,WAAA,CAAA,MAAA,EAAA;AAAA,MACJ,QAAA,EAAA,CAAW,EAAA,IAAA,CAAA,KAAA,CAAA,IAAA,CAAA,KAAA,EAAA,UAAA,CAAA,CAAA;AAAA,MACZ,UAAA,EAAA;AACD,QAAA,UAAa,EAAA,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,IAAA,CAAA;AAAA;AACf,KAEA,CAAA;AACE,EAAA;AACsC;AACY,SAC9C,gBAAY,CAAA,CAAA,IAAA;AAAA,EAAA,KAAA,GACV,gBAAe,CAAA,EAAK,CAAA;AAAU,EAAA,SAChC,GAAA,iBAAA,CAAA,KAAA,EAAA,CAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,SAAA,CAAA;AAAA,EAAA,iBACI,CAAA,KAAA,EAAA,CAAA,EAAA,SAAA,CAAA;AAAA,EAEV,OAAA,SAAA;AAIF,CAAA,EAAA","file":"chunk-T2CUZA2P.js","sourcesContent":["import { MastraBase } from '../base';\nimport { InstrumentClass } from '../telemetry';\n\ninterface BuiltInModelConfig {\n provider: string;\n name: string;\n apiKey?: string;\n}\n\nexport interface TTSConfig {\n model: BuiltInModelConfig;\n}\n\n@InstrumentClass({\n prefix: 'tts',\n excludeMethods: ['__setTools', '__setLogger', '__setTelemetry', '#log'],\n})\nexport abstract class MastraTTS extends MastraBase {\n model: BuiltInModelConfig;\n constructor({ model }: TTSConfig) {\n super({\n component: 'TTS',\n });\n this.model = model;\n }\n\n traced<T extends Function>(method: T, methodName: string): T {\n return (\n this.telemetry?.traceMethod(method, {\n spanName: `${this.model.name}-tts.${methodName}`,\n attributes: {\n 'tts.type': `${this.model.name}`,\n },\n }) ?? method\n );\n }\n\n abstract generate({ text }: { text: string }): Promise<any>;\n abstract stream({ text }: { text: string }): Promise<any>;\n}\n"]}
|
|
@@ -34,6 +34,7 @@ var ErrorDomain = /* @__PURE__ */ ((ErrorDomain2) => {
|
|
|
34
34
|
ErrorDomain2["MASTRA"] = "MASTRA";
|
|
35
35
|
ErrorDomain2["DEPLOYER"] = "DEPLOYER";
|
|
36
36
|
ErrorDomain2["STORAGE"] = "STORAGE";
|
|
37
|
+
ErrorDomain2["MODEL_ROUTER"] = "MODEL_ROUTER";
|
|
37
38
|
return ErrorDomain2;
|
|
38
39
|
})(ErrorDomain || {});
|
|
39
40
|
var ErrorCategory = /* @__PURE__ */ ((ErrorCategory2) => {
|
|
@@ -92,5 +93,5 @@ var MastraError = class extends MastraBaseError {
|
|
|
92
93
|
};
|
|
93
94
|
|
|
94
95
|
export { ErrorCategory, ErrorDomain, MastraBaseError, MastraError, safeParseErrorObject };
|
|
95
|
-
//# sourceMappingURL=chunk-
|
|
96
|
-
//# sourceMappingURL=chunk-
|
|
96
|
+
//# sourceMappingURL=chunk-T3JFFQH2.js.map
|
|
97
|
+
//# sourceMappingURL=chunk-T3JFFQH2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/error/utils.ts","../src/error/index.ts"],"names":["ErrorDomain","ErrorCategory"],"mappings":"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","file":"chunk-T3JFFQH2.js","sourcesContent":["/**\n * Safely converts an object to a string representation.\n * Uses JSON.stringify first, but falls back to String() if:\n * - JSON.stringify fails (e.g., circular references)\n * - JSON.stringify returns \"{}\" (e.g., Error objects with no enumerable properties)\n */\nexport function safeParseErrorObject(obj: unknown): string {\n if (typeof obj !== 'object' || obj === null) {\n return String(obj);\n }\n\n try {\n const stringified = JSON.stringify(obj);\n // If JSON.stringify returns \"{}\", fall back to String() for better representation\n if (stringified === '{}') {\n return String(obj);\n }\n return stringified;\n } catch {\n // Fallback to String() if JSON.stringify fails (e.g., circular references)\n return String(obj);\n }\n}\n","import { safeParseErrorObject } from './utils.js';\n\nexport enum ErrorDomain {\n TOOL = 'TOOL',\n AGENT = 'AGENT',\n MCP = 'MCP',\n AGENT_NETWORK = 'AGENT_NETWORK',\n MASTRA_SERVER = 'MASTRA_SERVER',\n MASTRA_TELEMETRY = 'MASTRA_TELEMETRY',\n MASTRA_OBSERVABILITY = 'MASTRA_OBSERVABILITY',\n MASTRA_WORKFLOW = 'MASTRA_WORKFLOW',\n MASTRA_VOICE = 'MASTRA_VOICE',\n MASTRA_VECTOR = 'MASTRA_VECTOR',\n LLM = 'LLM',\n EVAL = 'EVAL',\n SCORER = 'SCORER',\n A2A = 'A2A',\n MASTRA_INSTANCE = 'MASTRA_INSTANCE',\n MASTRA = 'MASTRA',\n DEPLOYER = 'DEPLOYER',\n STORAGE = 'STORAGE',\n MODEL_ROUTER = 'MODEL_ROUTER',\n}\n\nexport enum ErrorCategory {\n UNKNOWN = 'UNKNOWN',\n USER = 'USER',\n SYSTEM = 'SYSTEM',\n THIRD_PARTY = 'THIRD_PARTY',\n}\n\ntype Scalar = null | boolean | number | string;\n\ntype Json<T> = [T] extends [Scalar | undefined]\n ? Scalar\n : [T] extends [{ [x: number]: unknown }]\n ? { [K in keyof T]: Json<T[K]> }\n : never;\n\n/**\n * Defines the structure for an error's metadata.\n * This is used to create instances of MastraError.\n */\nexport interface IErrorDefinition<D, C> {\n /** Unique identifier for the error. */\n id: Uppercase<string>;\n /**\n * Optional custom error message that overrides the original error message.\n * If not provided, the original error message will be used, or 'Unknown error' if no error is provided.\n */\n text?: string;\n /**\n * Functional domain of the error (e.g., CONFIG, BUILD, API).\n */\n domain: D;\n /** Broad category of the error (e.g., USER, SYSTEM, THIRD_PARTY). */\n category: C;\n\n details?: Record<string, Json<Scalar>>;\n}\n\n/**\n * Base error class for the Mastra ecosystem.\n * It standardizes error reporting and can be extended for more specific error types.\n */\nexport class MastraBaseError<D, C> extends Error {\n public readonly id: Uppercase<string>;\n public readonly domain: D;\n public readonly category: C;\n public readonly details?: Record<string, Json<Scalar>> = {};\n public readonly message: string;\n\n constructor(\n errorDefinition: IErrorDefinition<D, C>,\n originalError?: string | Error | MastraBaseError<D, C> | unknown,\n ) {\n // Convert originalError to Error instance\n let error: Error | undefined;\n if (originalError instanceof Error) {\n error = originalError;\n } else if (originalError) {\n const errorMessage = safeParseErrorObject(originalError);\n error = new Error(errorMessage);\n }\n\n const message = errorDefinition.text ?? error?.message ?? 'Unknown error';\n\n super(message, { cause: error });\n this.id = errorDefinition.id;\n this.domain = errorDefinition.domain;\n this.category = errorDefinition.category;\n this.details = errorDefinition.details ?? {};\n this.message = message;\n\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n /**\n * Returns a structured representation of the error, useful for logging or API responses.\n */\n public toJSONDetails() {\n return {\n message: this.message,\n domain: this.domain,\n category: this.category,\n details: this.details,\n };\n }\n\n public toJSON() {\n return {\n message: this.message,\n details: this.toJSONDetails(),\n code: this.id,\n };\n }\n\n public toString() {\n return JSON.stringify(this.toJSON());\n }\n}\n\nexport class MastraError extends MastraBaseError<`${ErrorDomain}`, `${ErrorCategory}`> {}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { fetchWithRetry } from './chunk-
|
|
2
|
-
import { MastraError } from './chunk-
|
|
1
|
+
import { fetchWithRetry } from './chunk-NVMKTP4N.js';
|
|
2
|
+
import { MastraError } from './chunk-T3JFFQH2.js';
|
|
3
3
|
import { randomUUID } from 'crypto';
|
|
4
4
|
import * as AIV4 from 'ai';
|
|
5
5
|
import * as AIV5 from 'ai-v5';
|
|
@@ -2956,5 +2956,5 @@ function convertMessages(messages) {
|
|
|
2956
2956
|
}
|
|
2957
2957
|
|
|
2958
2958
|
export { DefaultGeneratedFile, DefaultGeneratedFileWithType, MessageList, convertMessages };
|
|
2959
|
-
//# sourceMappingURL=chunk-
|
|
2960
|
-
//# sourceMappingURL=chunk-
|
|
2959
|
+
//# sourceMappingURL=chunk-TJHEGJNW.js.map
|
|
2960
|
+
//# sourceMappingURL=chunk-TJHEGJNW.js.map
|