@w3lib/solana-batch-call 0.2.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -0
- package/README.md +205 -2
- package/dist/address.d.ts +2 -0
- package/dist/address.d.ts.map +1 -1
- package/dist/address.js +8 -0
- package/dist/address.js.map +1 -1
- package/dist/client.d.ts +4 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +8 -0
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/layout.d.ts +5 -0
- package/dist/layout.d.ts.map +1 -1
- package/dist/layout.js +16 -0
- package/dist/layout.js.map +1 -1
- package/dist/liquidity/amm.d.ts +7 -0
- package/dist/liquidity/amm.d.ts.map +1 -0
- package/dist/liquidity/amm.js +307 -0
- package/dist/liquidity/amm.js.map +1 -0
- package/dist/liquidity/clmm.d.ts +18 -0
- package/dist/liquidity/clmm.d.ts.map +1 -0
- package/dist/liquidity/clmm.js +85 -0
- package/dist/liquidity/clmm.js.map +1 -0
- package/dist/liquidity/common.d.ts +94 -0
- package/dist/liquidity/common.d.ts.map +1 -0
- package/dist/liquidity/common.js +228 -0
- package/dist/liquidity/common.js.map +1 -0
- package/dist/liquidity/index.d.ts +34 -0
- package/dist/liquidity/index.d.ts.map +1 -0
- package/dist/liquidity/index.js +157 -0
- package/dist/liquidity/index.js.map +1 -0
- package/dist/liquidity/orca.d.ts +6 -0
- package/dist/liquidity/orca.d.ts.map +1 -0
- package/dist/liquidity/orca.js +303 -0
- package/dist/liquidity/orca.js.map +1 -0
- package/dist/liquidity/raydiumClmm.d.ts +6 -0
- package/dist/liquidity/raydiumClmm.d.ts.map +1 -0
- package/dist/liquidity/raydiumClmm.js +307 -0
- package/dist/liquidity/raydiumClmm.js.map +1 -0
- package/dist/liquidity/types.d.ts +150 -0
- package/dist/liquidity/types.d.ts.map +1 -0
- package/dist/liquidity/types.js +2 -0
- package/dist/liquidity/types.js.map +1 -0
- package/dist/lp.d.ts +168 -0
- package/dist/lp.d.ts.map +1 -0
- package/dist/lp.js +632 -0
- package/dist/lp.js.map +1 -0
- package/dist/lpMath.d.ts +82 -0
- package/dist/lpMath.d.ts.map +1 -0
- package/dist/lpMath.js +365 -0
- package/dist/lpMath.js.map +1 -0
- package/dist/shortcuts.d.ts +8 -0
- package/dist/shortcuts.d.ts.map +1 -1
- package/dist/shortcuts.js +1 -1
- package/dist/shortcuts.js.map +1 -1
- package/dist/subpaths/liquidity.d.ts +23 -0
- package/dist/subpaths/liquidity.d.ts.map +1 -0
- package/dist/subpaths/liquidity.js +19 -0
- package/dist/subpaths/liquidity.js.map +1 -0
- package/dist/subpaths/lp.d.ts +31 -0
- package/dist/subpaths/lp.d.ts.map +1 -0
- package/dist/subpaths/lp.js +33 -0
- package/dist/subpaths/lp.js.map +1 -0
- package/dist/subpaths/write.d.ts +22 -0
- package/dist/subpaths/write.d.ts.map +1 -0
- package/dist/subpaths/write.js +19 -0
- package/dist/subpaths/write.js.map +1 -0
- package/dist/write/batch.d.ts +41 -0
- package/dist/write/batch.d.ts.map +1 -0
- package/dist/write/batch.js +46 -0
- package/dist/write/batch.js.map +1 -0
- package/dist/write/collect.d.ts +50 -0
- package/dist/write/collect.d.ts.map +1 -0
- package/dist/write/collect.js +220 -0
- package/dist/write/collect.js.map +1 -0
- package/dist/write/instructions.d.ts +16 -0
- package/dist/write/instructions.d.ts.map +1 -0
- package/dist/write/instructions.js +89 -0
- package/dist/write/instructions.js.map +1 -0
- package/dist/write/send.d.ts +115 -0
- package/dist/write/send.d.ts.map +1 -0
- package/dist/write/send.js +720 -0
- package/dist/write/send.js.map +1 -0
- package/dist/write/signer.d.ts +94 -0
- package/dist/write/signer.d.ts.map +1 -0
- package/dist/write/signer.js +197 -0
- package/dist/write/signer.js.map +1 -0
- package/dist/write/transaction.d.ts +75 -0
- package/dist/write/transaction.d.ts.map +1 -0
- package/dist/write/transaction.js +133 -0
- package/dist/write/transaction.js.map +1 -0
- package/dist/write/transfer.d.ts +72 -0
- package/dist/write/transfer.d.ts.map +1 -0
- package/dist/write/transfer.js +127 -0
- package/dist/write/transfer.js.map +1 -0
- package/package.json +23 -5
- package/src/address.ts +9 -0
- package/src/client.ts +10 -0
- package/src/index.ts +2 -1
- package/src/layout.ts +17 -0
- package/src/liquidity/amm.ts +353 -0
- package/src/liquidity/clmm.ts +108 -0
- package/src/liquidity/common.ts +285 -0
- package/src/liquidity/index.ts +177 -0
- package/src/liquidity/orca.ts +344 -0
- package/src/liquidity/raydiumClmm.ts +348 -0
- package/src/liquidity/types.ts +158 -0
- package/src/lp.ts +850 -0
- package/src/lpMath.ts +420 -0
- package/src/shortcuts.ts +1 -1
- package/src/subpaths/liquidity.ts +45 -0
- package/src/subpaths/lp.ts +71 -0
- package/src/subpaths/write.ts +29 -0
- package/src/write/batch.ts +78 -0
- package/src/write/collect.ts +286 -0
- package/src/write/instructions.ts +98 -0
- package/src/write/send.ts +876 -0
- package/src/write/signer.ts +314 -0
- package/src/write/transaction.ts +181 -0
- package/src/write/transfer.ts +189 -0
package/dist/lp.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lp.js","sourceRoot":"","sources":["../src/lp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE1F,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAoB,MAAM,aAAa,CAAA;AACzF,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACnE,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,WAAW,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,WAAW,EAAoB,MAAM,aAAa,CAAA;AAEnL,MAAM,CAAC,MAAM,uBAAuB,GAAG,8CAA8C,CAAA;AACrF,MAAM,CAAC,MAAM,yBAAyB,GAAG,6CAA6C,CAAA;AACtF,MAAM,CAAC,MAAM,sBAAsB,GAAG,8CAA8C,CAAA;AACpF,MAAM,CAAC,MAAM,uBAAuB,GAAG,8CAA8C,CAAA;AACrF,gCAAgC;AAChC,MAAM,CAAC,MAAM,qBAAqB,GAAG,8CAA8C,CAAA;AACnF,4DAA4D;AAC5D,MAAM,CAAC,MAAM,sBAAsB,GAAG,8CAA8C,CAAA;AAIpF,MAAM,CAAC,MAAM,mBAAmB,GAAkG;IAChI,cAAc,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,uBAAuB,EAAE;IAC1F,gBAAgB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,yBAAyB,EAAE;IAChG,aAAa,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,sBAAsB,EAAE;IACzF,cAAc,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,uBAAuB,EAAE;CAC1F,CAAA;AAYD,iFAAiF;AACjF,MAAM,UAAU,eAAe,CAAC,UAAsC,EAAE;IACtE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,GAAG,CAAA;IAClD,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE;YAC5C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAA;YACxC,MAAM,OAAO,GAAe,EAAE,CAAA;YAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;YACvC,CAAC;YACD,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBAC1B,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,yCAAyC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;gBAC3H,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;oBACZ,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;gBACzD,CAAC;gBACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAwE,CAAA;gBACtG,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;oBAC3D,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,aAAa,CAAC,EAAE,CAAC;wBACzI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;oBACzD,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CACH,CAAA;YACD,OAAO,MAAM,CAAA;QACf,CAAC;KACF,CAAA;AACH,CAAC;AAoGD,8EAA8E;AAC9E,wCAAwC;AACxC,8EAA8E;AAE9E,6BAA6B;AAC7B,MAAM,OAAO,KAAK;IAEK;IADZ,KAAK,CAAU;IACxB,YAAqB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;QACnC,IAAI,CAAC,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IAC1E,CAAC;IACD,EAAE,CAAC,CAAS;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC/B,CAAC;IACD,GAAG,CAAC,CAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IACtC,CAAC;IACD,GAAG,CAAC,CAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IACtC,CAAC;IACD,GAAG,CAAC,CAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IACrC,CAAC;IACD,GAAG,CAAC,CAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IACzC,CAAC;IACD,IAAI,CAAC,CAAS;QACZ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IACzF,CAAC;IACD,GAAG,CAAC,CAAS;QACX,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IACrD,CAAC;CACF;AAED,MAAM,qBAAqB,GAAG,GAAG,CAAA;AACjC,MAAM,kBAAkB,GAAG,GAAG,CAAA;AAC9B,uEAAuE;AACvE,MAAM,qBAAqB,GAAG,GAAG,CAAA;AACjC,MAAM,kBAAkB,GAAG,GAAG,CAAA;AAC9B,MAAM,aAAa,GAAG,GAAG,CAAA;AACzB,MAAM,cAAc,GAAG,GAAG,CAAA;AAC1B,MAAM,uBAAuB,GAAG,EAAE,CAAA;AAClC,MAAM,iBAAiB,GAAG,GAAG,CAAA;AAC7B,MAAM,oBAAoB,GAAG,EAAE,CAAA;AAC/B,MAAM,cAAc,GAAG,GAAG,CAAA;AAgB1B,SAAS,eAAe,CAAC,OAAe,EAAE,CAAQ;IAChD,OAAO;QACL,QAAQ,EAAE,cAAc;QACxB,OAAO;QACP,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACd,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACf,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACxB,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACjB,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;KAClB,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,OAAe,EAAE,CAAQ;IAC7C,OAAO;QACL,QAAQ,EAAE,gBAAgB;QAC1B,OAAO;QACP,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACd,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACf,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACjB,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACxB,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;KAClB,CAAA;AACH,CAAC;AAiBD,SAAS,WAAW,CAAC,CAAQ;IAC3B,OAAO;QACL,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACnB,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QAChB,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACjB,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;QACpB,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACvB,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACtB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QAChB,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACpB,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACpB,GAAG,EAAE,IAAI;KACV,CAAA;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,CAAQ;IACxB,OAAO;QACL,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACd,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACf,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACjB,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACpB,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACjB,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACpB,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;KAChB,CAAA;AACH,CAAC;AAkBD,SAAS,OAAO,CAAC,OAAe,EAAE,CAAQ;IACxC,OAAO;QACL,QAAQ,EAAE,aAAa;QACvB,OAAO;QACP,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5B,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACrB,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACrB,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QAClB,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QAClB,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACjB,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACjB,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QAClB,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;KACrB,CAAA;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,OAAe,EAAE,CAAQ;IACzC,OAAO;QACL,QAAQ,EAAE,cAAc;QACxB,OAAO;QACP,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACjB,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QAClB,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QAClB,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACjB,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACjB,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;QACpB,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;QACpB,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACpB,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QAC/C,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;KAChD,CAAA;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAoB;IAC/C,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,IAAI,OAAO,CAAC,KAAK,KAAK,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QACtF,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IACpC,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,KAAK,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QACxF,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IACrC,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAE9D,SAAS,QAAQ,CAAC,CAAS,EAAE,CAAS;IACpC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;AAC9B,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,IAAY,EAAE,OAAe;IAC1E,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,uBAAuB,CAAC,CAAA;IAC/D,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAA;IAC5B,IAAI,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IACjD,OAAO,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,uBAAuB,CAAC,EAAE,KAAK,EAAE,CAAA;AACvH,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,IAAY,EAAE,OAAe;IACvE,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,oBAAoB,CAAC,CAAA;IAC5D,OAAO,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,yBAAyB,CAAC,EAAE,KAAK,EAAE,CAAA;AAC1I,CAAC;AAED,SAAS,WAAW,CAAC,OAAoB,EAAE,KAAa,EAAE,IAAY,EAAE,OAAe;IACrF,oBAAoB,KAAK,aAAa,CAAC,gBAAgB,CAAC,CAAA;IACxD,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,iBAAiB,CAAA;IAClE,6CAA6C;IAC7C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,oBAAoB,CAAC,IAAI,MAAM,GAAG,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACxG,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,kDAAkD;IAClD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAA;AAC9G,CAAC;AAED,kDAAkD;AAClD,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACtF,IAAI,kBAA0E,CAAA;AAC9E,IAAI,oBAA4C,CAAA;AAChD,MAAM,UAAU,GAAG,CAAC,IAAgB,EAAE,MAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAA;AAExI,SAAS,QAAQ,CAAC,OAAoB,EAAE,KAAa,EAAE,IAAY,EAAE,OAAe;IAClF,kBAAkB,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAA;IACxG,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAA,CAAC,+BAA+B;IAC7C,CAAC;IACD,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,MAAM,KAAK,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAA;IACtC,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,gHAAgH;QAChH,MAAM,MAAM,GAAG,EAAE,GAAG,KAAK,GAAG,cAAc,CAAA;QAC1C,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,MAAM,GAAG,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACxE,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAA;IAC5H,CAAC;IACD,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,2FAA2F;QAC3F,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;YACvB,OAAO,IAAI,CAAA;QACb,CAAC;QACD,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,IAAI,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAClC,OAAO,IAAI,CAAA,CAAC,QAAQ;YACtB,CAAC;YACD,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACxC,CAAC;QACD,IAAI,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO,IAAI,CAAA;QACb,CAAC;QACD,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAA;QAC7E,CAAC;QACD,IAAI,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACvC,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAA;IAC9G,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AA8BD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAoB,EAAE,KAAa,EAAE,UAA8B,EAAE;IACrG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAA;IACpD,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAmB,OAAO,CAAC,SAAS,IAAK,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAwB,CAAC,CAAA;IAC1H,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAA;QAC9C,CAAC;IACH,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QAC3E,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAA;QAChD,CAAC;IACH,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC1B,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IACjF,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IAC7E,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAA;IACX,CAAC;IAED,kCAAkC;IAClC,MAAM,UAAU,GAAmB,EAAE,CAAA;IACrC,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;QACjE,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;YAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YACnD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,qCAAqC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;YAC5E,CAAC;YACD,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACvB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAA;IAE1G,wEAAwE;IACxE,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACxF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACrC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,cAAuB,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClL,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,gBAAyB,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,yBAAyB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACzL,CAAC,CAAA;IACF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACvH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IAEtH,MAAM,SAAS,GAAwB,EAAE,CAAA;IACzC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACxB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAM;QACR,CAAC;QACD,MAAM,OAAO,GAAG,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAA;QACzD,IAAI,CAAC,CAAC,QAAQ,KAAK,cAAc,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,qBAAqB,EAAE,CAAC;YAChH,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACrE,CAAC;aAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,gBAAgB,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;YACtH,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAClE,CAAC;IACH,CAAC,CAAC,CAAA;IACF,2CAA2C;IAC3C,MAAM,OAAO,GAAmE,EAAE,CAAA;IAClF,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAM;QACR,CAAC;QACD,IAAI,SAAwB,CAAA;QAC5B,IAAI,CAAC;YACH,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,CAAA;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,OAAM;QACR,CAAC;QACD,IAAI,SAAS,KAAK,qBAAqB,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAC3D,CAAC;aAAM,IAAI,SAAS,KAAK,sBAAsB,IAAI,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YACjF,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAC5D,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,sCAAsC;IACtC,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAChE,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9C,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;KACnF,CAAC,CAAA;IACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,EAAE,CAAC;YACT,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACjC,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAA;IAC9C,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;QAC/B,IAAI,OAAO,EAAE,KAAK,KAAK,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,qBAAqB,EAAE,CAAC;YAC/F,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1D,CAAC;aAAM,IAAI,OAAO,EAAE,KAAK,KAAK,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,kBAAkB,EAAE,CAAC;YACrG,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACvD,CAAC;IACH,CAAC,CAAC,CAAA;IACF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACtD,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;IAE7F,oDAAoD;IACpD,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC9B,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,KAAK,EAAE,EAAE,CAAC;YAChC,OAAO,EAAE,CAAA;QACX,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,KAAK,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAA;QAC/E,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IACtI,CAAC,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACpG,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IAC3D,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IACjG,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,aAAa,EAAE,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IAC3F,MAAM,SAAS,GAAG,IAAI,GAAG,EAAuB,CAC/C;IAAA,CAAC,GAAG,aAAa,EAAE,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;QAChE,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACzB,IAAI,OAAO,EAAE,CAAC;YACZ,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACjC,CAAC;IACH,CAAC,CAAC,CAAA;IACF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC1C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACrC,qFAAqF;QACrF,IAAI,OAAO,EAAE,KAAK,KAAK,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YAC5E,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAyB,EAAE,CAAA;IACpC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACrC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,SAAQ;QACV,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,KAAK,cAAc,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,mBAAmB,CAAA;QAClG,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAA;QAChM,iBAAiB;QACjB,IAAI,KAAK,GAAkB,QAAQ,CAAC,KAAK,CAAA;QACzC,IAAI,KAAK,GAAkB,QAAQ,CAAC,KAAK,CAAA;QACzC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAA;QAC9D,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,KAAK,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAA;YAC1E,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACxD,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACxD,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAChH,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAChH,+CAA+C;YAC/C,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;gBACnB,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;gBAC1I,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;gBACtF,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;YACxF,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,IAAI,CAAA;gBACZ,KAAK,GAAG,IAAI,CAAA;YACd,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,QAAQ,CAAC,SAAS,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACxF,SAAQ;QACV,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IAC5K,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,EAAE,CAAA;QACnD,MAAM,KAAK,GAAG,CAAC,OAAe,EAAE,EAAE;YAChC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACtC,IAAI,CAAC;gBACH,OAAO,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA;YAChE,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC,CAAA;QACD,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC7B,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC7B,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;YACvD,SAAQ;QACV,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAC1D,+CAA+C;QAC/C,oEAAoE;QACpE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,OAAO,GAAG,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,OAAO,GAAG,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IACtK,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;AACvC,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,GAAY;IACrC,IAAI,GAAG,YAAY,mBAAmB,EAAE,CAAC;QACvC,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;IACrF,CAAC;IACD,IAAI,GAAG,YAAY,SAAS,EAAE,CAAC;QAC7B,OAAO,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAA;IACvE,CAAC;IACD,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC5B,4EAA4E;QAC5E,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,IAAI,8CAA8C,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAChH,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,gIAAgI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACtM,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,oDAAoD;AACpD,KAAK,UAAU,YAAY,CAAC,MAAoB,EAAE,KAAa,EAAE,KAAoC,EAAE,KAAwB,EAAE,MAA+B;IAC9J,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAClF,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;IAC7J,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QAC1I,IAAI,MAAM,EAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,GAAG,CAAA,CAAC,wBAAwB;QACpC,CAAC;QACD,MAAM,IAAI,KAAK,CACb,kCAAkC,KAAK,YAAY,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;YACtG,gKAAgK,EAClK,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAA;IACH,CAAC,CAAC,CAAA;IACF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;AAChG,CAAC;AAED,4EAA4E;AAC5E,KAAK,UAAU,WAAW,CAAC,MAAoB,EAAE,QAAwC,EAAE,MAAc,EAAE,MAA+B;IACxI,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,sBAAsB,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,EAAE,cAAc,EAAE,GAAG,CAAC,CAAA;IAC5J,MAAM,GAAG,GAAG,MAAM,MAAM;SACrB,OAAO,CACN,oBAAoB,EACpB,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EACxI,EAAE,MAAM,EAAE,CACX;SACA,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACtB,IAAI,MAAM,EAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,GAAG,CAAA;QACX,CAAC;QACD,wCAAwC;QACxC,MAAM,IAAI,KAAK,CACb,eAAe,mBAAmB,CAAC,QAAQ,CAAC,CAAC,IAAI,qBAAqB,MAAM,2CAA2C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,+CAA+C;YACpN,uJAAuJ,EACzJ,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAA;IACH,CAAC,CAAC,CAAA;IACJ,KAAK,MAAM,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QAChD,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAA;QACrH,IAAI,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,MAAoB,EAAE,GAAkC,EAAE,OAA2B;IAC3G,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC1B,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5E,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAA;IACxF,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAA8B,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IACxF,sDAAsD;IACtD,MAAM,UAAU,GAAG,KAAK,IAAkC,EAAE;QAC1D,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO,IAAI,GAAG,EAAE,CAAA;QAClB,CAAC;QACD,IAAI,CAAC;YACH,+CAA+C;YAC/C,OAAO,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAA;QACpE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBACpB,MAAM,GAAG,CAAA;YACX,CAAC;YACD,IAAI,CAAC;gBACH,OAAO,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAA;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc;YAChB,CAAC;YACD,OAAO,IAAI,GAAG,EAAE,CAAA;QAClB,CAAC;IACH,CAAC,CAAA;IACD,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC5C,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACrG,UAAU,EAAE;KACb,CAAC,CAAA;IACF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACxD,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,YAA2B,EAAiB,EAAE;QACzE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACxB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,IAAI,YAAY,EAAE,CAAA;IACnF,CAAC,CAAA;IACD,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,CAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC9G,MAAM,GAAG,GAAG,CAAC,CAAgB,EAAE,SAAwB,EAAE,EAAE;QACzD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAClC,OAAO,SAAS,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAA;IACrF,CAAC,CAAA;IACD,MAAM,GAAG,GAAG,CAAC,CAAgB,EAAE,CAAgB,EAAE,OAAe,EAAE,OAAe,EAAE,EAAE;QACnF,oBAAoB;QACpB,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC;YACjE,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAC5B,CAAC,CAAA;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAoB,EAAE;QAC3C,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAA;QAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACpD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACpD,MAAM,gBAAgB,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAC/C,MAAM,gBAAgB,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAC/C,MAAM,IAAI,GAAG;YACX,QAAQ;YACR,YAAY,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC,IAAI;YAChD,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO;YAC1D,MAAM;YACN,MAAM;YACN,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC7B,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC7B,gBAAgB;YAChB,gBAAgB;YAChB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9H,CAAA;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACrB,OAAO;gBACL,GAAG,IAAI;gBACP,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM;gBACrB,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE;gBAC7B,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;gBACvC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;aACnD,CAAA;QACH,CAAC;QACD,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;QAC/B,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAA;QAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAA;QAC1B,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACrE,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACrE,OAAO;YACL,GAAG,IAAI;YACP,IAAI,EAAE,MAAM;YACZ,YAAY,EAAE,CAAC,CAAC,IAAI;YACpB,QAAQ,EAAE,CAAC,CAAC,OAAO;YACnB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS;YAC5D,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE;YACjC,KAAK,EAAE,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC;YACnF,UAAU,EAAE,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC;YAChF,UAAU,EAAE,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC;YAChF,KAAK,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE;YACnD,KAAK,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE;YACnD,cAAc;YACd,cAAc;YACd,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnK,CAAA;IACH,CAAC,CAAC,CAAA;IACF,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACvJ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
|
package/dist/lpMath.d.ts
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 集中流动性(Raydium CLMM / Orca Whirlpool)的定点数计算,与链上程序逐位一致(Q64.64,bigint)。
|
|
3
|
+
* 两个程序的 tick → 价格换算用的常量和步骤不同(结果在最后几位可能不同),各自照搬;
|
|
4
|
+
* 数量和手续费的公式两边相同:撤出流动性时向下取整,手续费增长按 u128 回绕相减。
|
|
5
|
+
*/
|
|
6
|
+
export declare const MIN_TICK = -443636;
|
|
7
|
+
export declare const MAX_TICK = 443636;
|
|
8
|
+
/** Raydium CLMM:tick → sqrt 价格(Q64.64) */
|
|
9
|
+
export declare function raydiumSqrtPriceAtTick(tick: number): bigint;
|
|
10
|
+
/** Orca Whirlpool:tick → sqrt 价格(Q64.64) */
|
|
11
|
+
export declare function orcaSqrtPriceAtTick(tick: number): bigint;
|
|
12
|
+
/**
|
|
13
|
+
* 撤出全部流动性能拿到的两种代币数量(向下取整)。两个程序都按当前 tick(不是价格)判断区间:
|
|
14
|
+
* tick < 下限只有 token0;tick ≥ 上限只有 token1;否则两种都有
|
|
15
|
+
*/
|
|
16
|
+
export declare function getAmountsForLiquidity(tick: number, sqrtPrice: bigint, sqrtLower: bigint, sqrtUpper: bigint, liquidity: bigint, tickLower: number, tickUpper: number): [bigint, bigint];
|
|
17
|
+
/** 一个 tick 上用于计算手续费的数据;Orca 的 tick 未初始化时 initialized 为 false */
|
|
18
|
+
export interface TickFeeData {
|
|
19
|
+
initialized: boolean;
|
|
20
|
+
feeGrowthOutside0: bigint;
|
|
21
|
+
feeGrowthOutside1: bigint;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 区间内的手续费增长(u128 回绕)。Raydium 不区分是否初始化(未初始化的 tick 各项为 0,传 initialized: true 即可);
|
|
25
|
+
* Orca 未初始化的 tick:下限按“下方增长 = 全局”、上限按“上方增长 = 0”处理(与程序一致)
|
|
26
|
+
*/
|
|
27
|
+
export declare function getFeeGrowthInside(tick: number, tickLower: number, lower: TickFeeData, tickUpper: number, upper: TickFeeData, global0: bigint, global1: bigint): [bigint, bigint];
|
|
28
|
+
/**
|
|
29
|
+
* 未领取的手续费:已记账的 owed + L · (区间内增长 − 上次记录) / 2^64(向下取整)。
|
|
30
|
+
* 新增部分超过 u64 时:Orca 程序记为 0(checked_mul_shift_right 失败),这里同样记为 0(正常仓位不会碰到)
|
|
31
|
+
*/
|
|
32
|
+
export declare function getFeesOwed(owed: bigint, liquidity: bigint, growthInside: bigint, growthLast: bigint): bigint;
|
|
33
|
+
/** Q64.64 sqrt 价格 → token1 / token0 的价格(按精度换算,浮点数,只用于展示) */
|
|
34
|
+
export declare function sqrtPriceToPrice(sqrtPrice: bigint, decimals0: number, decimals1: number): number;
|
|
35
|
+
/** tick → token1 / token0 的价格(1.0001^tick,按精度换算,只用于展示) */
|
|
36
|
+
export declare function tickToPrice(tick: number, decimals0: number, decimals1: number): number;
|
|
37
|
+
/** 两个程序允许的 sqrt 价格范围(Raydium:MIN / MAX_SQRT_PRICE_X64;Orca:MIN / MAX_SQRT_PRICE) */
|
|
38
|
+
export declare const RAYDIUM_MIN_SQRT_PRICE = 4295048016n;
|
|
39
|
+
export declare const RAYDIUM_MAX_SQRT_PRICE = 79226673521066979257578248091n;
|
|
40
|
+
export declare const ORCA_MIN_SQRT_PRICE = 4295048016n;
|
|
41
|
+
export declare const ORCA_MAX_SQRT_PRICE = 79226673515401279992447579055n;
|
|
42
|
+
export type ClmmProgram = 'raydium' | 'orca';
|
|
43
|
+
/** tick → sqrt 价格(按程序) */
|
|
44
|
+
export declare function sqrtPriceAtTick(program: ClmmProgram, tick: number): bigint;
|
|
45
|
+
/** sqrt 价格 → tick:满足 sqrtPriceAtTick(tick) <= sqrtPrice 的最大 tick(二分查找,与程序的 get_tick_at_sqrt_price 一致),限制在 [MIN_TICK, MAX_TICK] 内 */
|
|
46
|
+
export declare function tickAtSqrtPrice(program: ClmmProgram, sqrtPrice: bigint): number;
|
|
47
|
+
/** 向上取整的整数除法 */
|
|
48
|
+
export declare const ceilDiv: (a: bigint, b: bigint) => bigint;
|
|
49
|
+
/** 添加流动性 L 时程序收取的两种代币数量(向上取整;按当前 tick 判断区间,与程序一致) */
|
|
50
|
+
export declare function getMintAmounts(tick: number, sqrtPrice: bigint, sqrtLower: bigint, sqrtUpper: bigint, liquidity: bigint, tickLower: number, tickUpper: number): [bigint, bigint];
|
|
51
|
+
/** 区间 [a, b] 内 amount0 个 token0 对应的流动性(向下取整):amount0 · (a · b / 2^64) / (b − a) */
|
|
52
|
+
export declare function getLiquidityForAmount0(a: bigint, b: bigint, amount0: bigint): bigint;
|
|
53
|
+
/** 区间 [a, b] 内 amount1 个 token1 对应的流动性(向下取整):amount1 · 2^64 / (b − a) */
|
|
54
|
+
export declare function getLiquidityForAmount1(a: bigint, b: bigint, amount1: bigint): bigint;
|
|
55
|
+
/**
|
|
56
|
+
* 最多用 amount0 / amount1 时能添加的流动性:两边都给时取较小的;只给一边时只按这一边算(另一边要多少由 getMintAmounts 算)。
|
|
57
|
+
* 区间在当前价格之外时只需要一种代币,给的是另一种时返回 0
|
|
58
|
+
*/
|
|
59
|
+
export declare function getLiquidityForAmounts(tick: number, sqrtPrice: bigint, sqrtLower: bigint, sqrtUpper: bigint, amount0: bigint | undefined, amount1: bigint | undefined, tickLower: number, tickUpper: number): bigint;
|
|
60
|
+
/** 整数平方根(向下取整,牛顿迭代从不小于平方根的值开始) */
|
|
61
|
+
export declare function sqrtBigInt(value: bigint): bigint;
|
|
62
|
+
/** 十进制数('1.5'、'2e-7'、1.5)→ 分子 / 分母,精确,不经过浮点 */
|
|
63
|
+
export declare function parseDecimal(value: string | number): {
|
|
64
|
+
num: bigint;
|
|
65
|
+
den: bigint;
|
|
66
|
+
};
|
|
67
|
+
/** 价格(token1 / token0,按精度换算)→ Q64.64 sqrt 价格(向下取整);num / den 是价格的分子分母 */
|
|
68
|
+
export declare function ratioToSqrtPrice(num: bigint, den: bigint, decimals0: number, decimals1: number): bigint;
|
|
69
|
+
/** 价格(token1 / token0,按精度换算)→ tick(按程序;满足价格 >= tick 价格的最大 tick) */
|
|
70
|
+
export declare function priceToTick(program: ClmmProgram, price: string | number, decimals0: number, decimals1: number): number;
|
|
71
|
+
/** 最近的可用 tick(tickSpacing 的整数倍),限制在 [MIN_TICK, MAX_TICK] 内 */
|
|
72
|
+
export declare function nearestUsableTick(tick: number, tickSpacing: number): number;
|
|
73
|
+
/** 价格按 slippage 上下浮动后的 sqrt 价格和对应的 tick,限制在程序允许的范围内(slippage 是比例,精确到百万分之一) */
|
|
74
|
+
export declare function sqrtPriceBounds(program: ClmmProgram, sqrtPrice: bigint, slippage: number): Array<{
|
|
75
|
+
sqrtPrice: bigint;
|
|
76
|
+
tick: number;
|
|
77
|
+
}>;
|
|
78
|
+
/** 价格在 slippage 范围内变动时,流动性 L 至少对应多少代币(移除时的最小数量,向下取整) */
|
|
79
|
+
export declare function getMinAmounts(program: ClmmProgram, sqrtPrice: bigint, tickLower: number, tickUpper: number, liquidity: bigint, slippage: number): [bigint, bigint];
|
|
80
|
+
/** 价格在 slippage 范围内变动时,添加流动性 L 最多需要多少代币(amountMax,向上取整) */
|
|
81
|
+
export declare function getMaxAmounts(program: ClmmProgram, sqrtPrice: bigint, tickLower: number, tickUpper: number, liquidity: bigint, slippage: number): [bigint, bigint];
|
|
82
|
+
//# sourceMappingURL=lpMath.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lpMath.d.ts","sourceRoot":"","sources":["../src/lpMath.ts"],"names":[],"mappings":"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"}
|
package/dist/lpMath.js
ADDED
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 集中流动性(Raydium CLMM / Orca Whirlpool)的定点数计算,与链上程序逐位一致(Q64.64,bigint)。
|
|
3
|
+
* 两个程序的 tick → 价格换算用的常量和步骤不同(结果在最后几位可能不同),各自照搬;
|
|
4
|
+
* 数量和手续费的公式两边相同:撤出流动性时向下取整,手续费增长按 u128 回绕相减。
|
|
5
|
+
*/
|
|
6
|
+
const Q64 = 1n << 64n;
|
|
7
|
+
const U128_MAX = (1n << 128n) - 1n;
|
|
8
|
+
const U64_MAX = (1n << 64n) - 1n;
|
|
9
|
+
export const MIN_TICK = -443636;
|
|
10
|
+
export const MAX_TICK = 443636;
|
|
11
|
+
function checkTick(tick) {
|
|
12
|
+
if (!Number.isInteger(tick) || tick < MIN_TICK || tick > MAX_TICK) {
|
|
13
|
+
throw new RangeError(`Tick out of range: ${tick}`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
// raydium-clmm programs/amm/src/libraries/tick_math.rs(第 0 项对应 abs_tick & 0x1)
|
|
17
|
+
const RAYDIUM_RATIOS = [
|
|
18
|
+
0xfffcb933bd6fb800n,
|
|
19
|
+
0xfff97272373d4000n,
|
|
20
|
+
0xfff2e50f5f657000n,
|
|
21
|
+
0xffe5caca7e10f000n,
|
|
22
|
+
0xffcb9843d60f7000n,
|
|
23
|
+
0xff973b41fa98e800n,
|
|
24
|
+
0xff2ea16466c9b000n,
|
|
25
|
+
0xfe5dee046a9a3800n,
|
|
26
|
+
0xfcbe86c7900bb000n,
|
|
27
|
+
0xf987a7253ac65800n,
|
|
28
|
+
0xf3392b0822bb6000n,
|
|
29
|
+
0xe7159475a2caf000n,
|
|
30
|
+
0xd097f3bdfd2f2000n,
|
|
31
|
+
0xa9f746462d9f8000n,
|
|
32
|
+
0x70d869a156f31c00n,
|
|
33
|
+
0x31be135f97ed3200n,
|
|
34
|
+
0x9aa508b5b85a500n,
|
|
35
|
+
0x5d6af8dedc582cn,
|
|
36
|
+
0x2216e584f5fan,
|
|
37
|
+
];
|
|
38
|
+
/** Raydium CLMM:tick → sqrt 价格(Q64.64) */
|
|
39
|
+
export function raydiumSqrtPriceAtTick(tick) {
|
|
40
|
+
checkTick(tick);
|
|
41
|
+
const abs = Math.abs(tick);
|
|
42
|
+
let ratio = abs & 1 ? RAYDIUM_RATIOS[0] : Q64;
|
|
43
|
+
for (let i = 1; i < RAYDIUM_RATIOS.length; i++) {
|
|
44
|
+
if (abs & (1 << i)) {
|
|
45
|
+
ratio = (ratio * RAYDIUM_RATIOS[i]) >> 64n;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return tick > 0 ? U128_MAX / ratio : ratio;
|
|
49
|
+
}
|
|
50
|
+
// orca whirlpools programs/whirlpool/src/math/tick_math.rs:正 tick 用 Q96 常量,负 tick 用 Q64 常量
|
|
51
|
+
const ORCA_POSITIVE = [
|
|
52
|
+
79232123823359799118286999567n,
|
|
53
|
+
79236085330515764027303304731n,
|
|
54
|
+
79244008939048815603706035061n,
|
|
55
|
+
79259858533276714757314932305n,
|
|
56
|
+
79291567232598584799939703904n,
|
|
57
|
+
79355022692464371645785046466n,
|
|
58
|
+
79482085999252804386437311141n,
|
|
59
|
+
79736823300114093921829183326n,
|
|
60
|
+
80248749790819932309965073892n,
|
|
61
|
+
81282483887344747381513967011n,
|
|
62
|
+
83390072131320151908154831281n,
|
|
63
|
+
87770609709833776024991924138n,
|
|
64
|
+
97234110755111693312479820773n,
|
|
65
|
+
119332217159966728226237229890n,
|
|
66
|
+
179736315981702064433883588727n,
|
|
67
|
+
407748233172238350107850275304n,
|
|
68
|
+
2098478828474011932436660412517n,
|
|
69
|
+
55581415166113811149459800483533n,
|
|
70
|
+
38992368544603139932233054999993551n,
|
|
71
|
+
];
|
|
72
|
+
const ORCA_NEGATIVE = [
|
|
73
|
+
18445821805675392311n,
|
|
74
|
+
18444899583751176498n,
|
|
75
|
+
18443055278223354162n,
|
|
76
|
+
18439367220385604838n,
|
|
77
|
+
18431993317065449817n,
|
|
78
|
+
18417254355718160513n,
|
|
79
|
+
18387811781193591352n,
|
|
80
|
+
18329067761203520168n,
|
|
81
|
+
18212142134806087854n,
|
|
82
|
+
17980523815641551639n,
|
|
83
|
+
17526086738831147013n,
|
|
84
|
+
16651378430235024244n,
|
|
85
|
+
15030750278693429944n,
|
|
86
|
+
12247334978882834399n,
|
|
87
|
+
8131365268884726200n,
|
|
88
|
+
3584323654723342297n,
|
|
89
|
+
696457651847595233n,
|
|
90
|
+
26294789957452057n,
|
|
91
|
+
37481735321082n,
|
|
92
|
+
];
|
|
93
|
+
/** Orca Whirlpool:tick → sqrt 价格(Q64.64) */
|
|
94
|
+
export function orcaSqrtPriceAtTick(tick) {
|
|
95
|
+
checkTick(tick);
|
|
96
|
+
if (tick >= 0) {
|
|
97
|
+
let ratio = tick & 1 ? ORCA_POSITIVE[0] : 1n << 96n;
|
|
98
|
+
for (let i = 1; i < ORCA_POSITIVE.length; i++) {
|
|
99
|
+
if (tick & (1 << i)) {
|
|
100
|
+
ratio = (ratio * ORCA_POSITIVE[i]) >> 96n;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return ratio >> 32n;
|
|
104
|
+
}
|
|
105
|
+
const abs = -tick;
|
|
106
|
+
let ratio = abs & 1 ? ORCA_NEGATIVE[0] : Q64;
|
|
107
|
+
for (let i = 1; i < ORCA_NEGATIVE.length; i++) {
|
|
108
|
+
if (abs & (1 << i)) {
|
|
109
|
+
ratio = (ratio * ORCA_NEGATIVE[i]) >> 64n;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return ratio;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* 撤出全部流动性能拿到的两种代币数量(向下取整)。两个程序都按当前 tick(不是价格)判断区间:
|
|
116
|
+
* tick < 下限只有 token0;tick ≥ 上限只有 token1;否则两种都有
|
|
117
|
+
*/
|
|
118
|
+
export function getAmountsForLiquidity(tick, sqrtPrice, sqrtLower, sqrtUpper, liquidity, tickLower, tickUpper) {
|
|
119
|
+
if (liquidity === 0n) {
|
|
120
|
+
return [0n, 0n];
|
|
121
|
+
}
|
|
122
|
+
if (tick < tickLower) {
|
|
123
|
+
return [amount0Delta(sqrtLower, sqrtUpper, liquidity), 0n];
|
|
124
|
+
}
|
|
125
|
+
if (tick < tickUpper) {
|
|
126
|
+
return [amount0Delta(sqrtPrice, sqrtUpper, liquidity), amount1Delta(sqrtLower, sqrtPrice, liquidity)];
|
|
127
|
+
}
|
|
128
|
+
return [0n, amount1Delta(sqrtLower, sqrtUpper, liquidity)];
|
|
129
|
+
}
|
|
130
|
+
/** floor(L · 2^64 · (b − a) / (a · b)) */
|
|
131
|
+
function amount0Delta(a, b, liquidity) {
|
|
132
|
+
const [lo, hi] = a < b ? [a, b] : [b, a];
|
|
133
|
+
return lo === 0n ? 0n : ((liquidity << 64n) * (hi - lo)) / (lo * hi);
|
|
134
|
+
}
|
|
135
|
+
/** floor(L · (b − a) / 2^64) */
|
|
136
|
+
function amount1Delta(a, b, liquidity) {
|
|
137
|
+
const [lo, hi] = a < b ? [a, b] : [b, a];
|
|
138
|
+
return (liquidity * (hi - lo)) >> 64n;
|
|
139
|
+
}
|
|
140
|
+
const wrap = (x) => ((x % (1n << 128n)) + (1n << 128n)) % (1n << 128n);
|
|
141
|
+
/**
|
|
142
|
+
* 区间内的手续费增长(u128 回绕)。Raydium 不区分是否初始化(未初始化的 tick 各项为 0,传 initialized: true 即可);
|
|
143
|
+
* Orca 未初始化的 tick:下限按“下方增长 = 全局”、上限按“上方增长 = 0”处理(与程序一致)
|
|
144
|
+
*/
|
|
145
|
+
export function getFeeGrowthInside(tick, tickLower, lower, tickUpper, upper, global0, global1) {
|
|
146
|
+
const below = !lower.initialized
|
|
147
|
+
? [global0, global1]
|
|
148
|
+
: tick < tickLower
|
|
149
|
+
? [wrap(global0 - lower.feeGrowthOutside0), wrap(global1 - lower.feeGrowthOutside1)]
|
|
150
|
+
: [lower.feeGrowthOutside0, lower.feeGrowthOutside1];
|
|
151
|
+
const above = !upper.initialized
|
|
152
|
+
? [0n, 0n]
|
|
153
|
+
: tick < tickUpper
|
|
154
|
+
? [upper.feeGrowthOutside0, upper.feeGrowthOutside1]
|
|
155
|
+
: [wrap(global0 - upper.feeGrowthOutside0), wrap(global1 - upper.feeGrowthOutside1)];
|
|
156
|
+
return [wrap(global0 - below[0] - above[0]), wrap(global1 - below[1] - above[1])];
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* 未领取的手续费:已记账的 owed + L · (区间内增长 − 上次记录) / 2^64(向下取整)。
|
|
160
|
+
* 新增部分超过 u64 时:Orca 程序记为 0(checked_mul_shift_right 失败),这里同样记为 0(正常仓位不会碰到)
|
|
161
|
+
*/
|
|
162
|
+
export function getFeesOwed(owed, liquidity, growthInside, growthLast) {
|
|
163
|
+
const delta = (liquidity * wrap(growthInside - growthLast)) >> 64n;
|
|
164
|
+
return owed + (delta > U64_MAX ? 0n : delta);
|
|
165
|
+
}
|
|
166
|
+
/** Q64.64 sqrt 价格 → token1 / token0 的价格(按精度换算,浮点数,只用于展示) */
|
|
167
|
+
export function sqrtPriceToPrice(sqrtPrice, decimals0, decimals1) {
|
|
168
|
+
// 先取高位再转浮点,避免 2^128 级别的整数转换丢精度后再平方
|
|
169
|
+
const ratio = Number(sqrtPrice) / 2 ** 64;
|
|
170
|
+
return ratio * ratio * 10 ** (decimals0 - decimals1);
|
|
171
|
+
}
|
|
172
|
+
/** tick → token1 / token0 的价格(1.0001^tick,按精度换算,只用于展示) */
|
|
173
|
+
export function tickToPrice(tick, decimals0, decimals1) {
|
|
174
|
+
return 1.0001 ** tick * 10 ** (decimals0 - decimals1);
|
|
175
|
+
}
|
|
176
|
+
// ---------------------------------------------------------------------------
|
|
177
|
+
// 添加 / 移除流动性用到的计算(两个程序公式相同,tick ↔ 价格按各自的换算)
|
|
178
|
+
// ---------------------------------------------------------------------------
|
|
179
|
+
/** 两个程序允许的 sqrt 价格范围(Raydium:MIN / MAX_SQRT_PRICE_X64;Orca:MIN / MAX_SQRT_PRICE) */
|
|
180
|
+
export const RAYDIUM_MIN_SQRT_PRICE = 4295048016n;
|
|
181
|
+
export const RAYDIUM_MAX_SQRT_PRICE = 79226673521066979257578248091n;
|
|
182
|
+
export const ORCA_MIN_SQRT_PRICE = 4295048016n;
|
|
183
|
+
export const ORCA_MAX_SQRT_PRICE = 79226673515401279992447579055n;
|
|
184
|
+
const sqrtAtTick = (program) => (program === 'raydium' ? raydiumSqrtPriceAtTick : orcaSqrtPriceAtTick);
|
|
185
|
+
const sqrtRange = (program) => (program === 'raydium' ? [RAYDIUM_MIN_SQRT_PRICE, RAYDIUM_MAX_SQRT_PRICE] : [ORCA_MIN_SQRT_PRICE, ORCA_MAX_SQRT_PRICE]);
|
|
186
|
+
/** tick → sqrt 价格(按程序) */
|
|
187
|
+
export function sqrtPriceAtTick(program, tick) {
|
|
188
|
+
return sqrtAtTick(program)(tick);
|
|
189
|
+
}
|
|
190
|
+
/** sqrt 价格 → tick:满足 sqrtPriceAtTick(tick) <= sqrtPrice 的最大 tick(二分查找,与程序的 get_tick_at_sqrt_price 一致),限制在 [MIN_TICK, MAX_TICK] 内 */
|
|
191
|
+
export function tickAtSqrtPrice(program, sqrtPrice) {
|
|
192
|
+
const at = sqrtAtTick(program);
|
|
193
|
+
if (sqrtPrice < at(MIN_TICK)) {
|
|
194
|
+
return MIN_TICK;
|
|
195
|
+
}
|
|
196
|
+
let lo = MIN_TICK;
|
|
197
|
+
let hi = MAX_TICK;
|
|
198
|
+
while (lo < hi) {
|
|
199
|
+
const mid = Math.floor((lo + hi + 1) / 2);
|
|
200
|
+
if (at(mid) <= sqrtPrice) {
|
|
201
|
+
lo = mid;
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
hi = mid - 1;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return lo;
|
|
208
|
+
}
|
|
209
|
+
/** 向上取整的整数除法 */
|
|
210
|
+
export const ceilDiv = (a, b) => (a + b - 1n) / b;
|
|
211
|
+
/** 添加流动性 L 时程序收取的 token0(向上取整):ceil(L · 2^64 · (b − a) / (a · b)) */
|
|
212
|
+
function amount0Up(a, b, liquidity) {
|
|
213
|
+
const [lo, hi] = a < b ? [a, b] : [b, a];
|
|
214
|
+
return ceilDiv((liquidity << 64n) * (hi - lo), lo * hi);
|
|
215
|
+
}
|
|
216
|
+
/** 添加流动性 L 时程序收取的 token1(向上取整):ceil(L · (b − a) / 2^64) */
|
|
217
|
+
function amount1Up(a, b, liquidity) {
|
|
218
|
+
const [lo, hi] = a < b ? [a, b] : [b, a];
|
|
219
|
+
return ceilDiv(liquidity * (hi - lo), Q64);
|
|
220
|
+
}
|
|
221
|
+
/** 添加流动性 L 时程序收取的两种代币数量(向上取整;按当前 tick 判断区间,与程序一致) */
|
|
222
|
+
export function getMintAmounts(tick, sqrtPrice, sqrtLower, sqrtUpper, liquidity, tickLower, tickUpper) {
|
|
223
|
+
if (liquidity === 0n) {
|
|
224
|
+
return [0n, 0n];
|
|
225
|
+
}
|
|
226
|
+
if (tick < tickLower) {
|
|
227
|
+
return [amount0Up(sqrtLower, sqrtUpper, liquidity), 0n];
|
|
228
|
+
}
|
|
229
|
+
if (tick < tickUpper) {
|
|
230
|
+
return [amount0Up(sqrtPrice, sqrtUpper, liquidity), amount1Up(sqrtLower, sqrtPrice, liquidity)];
|
|
231
|
+
}
|
|
232
|
+
return [0n, amount1Up(sqrtLower, sqrtUpper, liquidity)];
|
|
233
|
+
}
|
|
234
|
+
/** 区间 [a, b] 内 amount0 个 token0 对应的流动性(向下取整):amount0 · (a · b / 2^64) / (b − a) */
|
|
235
|
+
export function getLiquidityForAmount0(a, b, amount0) {
|
|
236
|
+
const [lo, hi] = a < b ? [a, b] : [b, a];
|
|
237
|
+
return (amount0 * ((lo * hi) / Q64)) / (hi - lo);
|
|
238
|
+
}
|
|
239
|
+
/** 区间 [a, b] 内 amount1 个 token1 对应的流动性(向下取整):amount1 · 2^64 / (b − a) */
|
|
240
|
+
export function getLiquidityForAmount1(a, b, amount1) {
|
|
241
|
+
const [lo, hi] = a < b ? [a, b] : [b, a];
|
|
242
|
+
return (amount1 * Q64) / (hi - lo);
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* 最多用 amount0 / amount1 时能添加的流动性:两边都给时取较小的;只给一边时只按这一边算(另一边要多少由 getMintAmounts 算)。
|
|
246
|
+
* 区间在当前价格之外时只需要一种代币,给的是另一种时返回 0
|
|
247
|
+
*/
|
|
248
|
+
export function getLiquidityForAmounts(tick, sqrtPrice, sqrtLower, sqrtUpper, amount0, amount1, tickLower, tickUpper) {
|
|
249
|
+
let l0 = null;
|
|
250
|
+
let l1 = null;
|
|
251
|
+
// 价格正好在下限(tick == tickLower 且 sqrtPrice == sqrtLower)时也只需要 token0:按下方处理,避免除以 0
|
|
252
|
+
if (tick < tickLower || sqrtPrice <= sqrtLower) {
|
|
253
|
+
l0 = amount0 === undefined ? null : getLiquidityForAmount0(sqrtLower, sqrtUpper, amount0);
|
|
254
|
+
l1 = amount1 === undefined ? null : amount0 === undefined ? 0n : null;
|
|
255
|
+
}
|
|
256
|
+
else if (tick < tickUpper && sqrtPrice < sqrtUpper) {
|
|
257
|
+
// 价格正好在上限(向下穿过 tick 后 tick = tickUpper − 1、sqrtPrice = 上限)时只需要 token1:按上方处理
|
|
258
|
+
l0 = amount0 === undefined ? null : getLiquidityForAmount0(sqrtPrice, sqrtUpper, amount0);
|
|
259
|
+
l1 = amount1 === undefined ? null : getLiquidityForAmount1(sqrtLower, sqrtPrice, amount1);
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
l1 = amount1 === undefined ? null : getLiquidityForAmount1(sqrtLower, sqrtUpper, amount1);
|
|
263
|
+
l0 = amount0 === undefined ? null : amount1 === undefined ? 0n : null;
|
|
264
|
+
}
|
|
265
|
+
if (l0 === null)
|
|
266
|
+
return l1 ?? 0n;
|
|
267
|
+
if (l1 === null)
|
|
268
|
+
return l0;
|
|
269
|
+
return l0 < l1 ? l0 : l1;
|
|
270
|
+
}
|
|
271
|
+
/** 整数平方根(向下取整,牛顿迭代从不小于平方根的值开始) */
|
|
272
|
+
export function sqrtBigInt(value) {
|
|
273
|
+
if (value < 0n) {
|
|
274
|
+
throw new RangeError('square root of a negative number');
|
|
275
|
+
}
|
|
276
|
+
if (value < 2n) {
|
|
277
|
+
return value;
|
|
278
|
+
}
|
|
279
|
+
let x = 1n << BigInt((value.toString(2).length + 1) >> 1);
|
|
280
|
+
for (;;) {
|
|
281
|
+
const y = (x + value / x) >> 1n;
|
|
282
|
+
if (y >= x) {
|
|
283
|
+
return x;
|
|
284
|
+
}
|
|
285
|
+
x = y;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
/** 十进制数('1.5'、'2e-7'、1.5)→ 分子 / 分母,精确,不经过浮点 */
|
|
289
|
+
export function parseDecimal(value) {
|
|
290
|
+
const text = typeof value === 'number' ? (Number.isFinite(value) ? String(value) : '') : value.trim();
|
|
291
|
+
const m = /^\+?(\d*)(?:\.(\d*))?(?:[eE]([+-]?\d+))?$/.exec(text);
|
|
292
|
+
if (!m || (!m[1] && !m[2])) {
|
|
293
|
+
throw new Error(`Invalid number: ${String(value)}`);
|
|
294
|
+
}
|
|
295
|
+
const frac = m[2] ?? '';
|
|
296
|
+
const exp = Number(m[3] ?? 0) - frac.length;
|
|
297
|
+
if (Math.abs(exp) > 400) {
|
|
298
|
+
throw new RangeError(`Number out of range: ${String(value)}`);
|
|
299
|
+
}
|
|
300
|
+
const digits = BigInt(`${m[1] ?? ''}${frac}` || '0');
|
|
301
|
+
return exp >= 0 ? { num: digits * 10n ** BigInt(exp), den: 1n } : { num: digits, den: 10n ** BigInt(-exp) };
|
|
302
|
+
}
|
|
303
|
+
/** 价格(token1 / token0,按精度换算)→ Q64.64 sqrt 价格(向下取整);num / den 是价格的分子分母 */
|
|
304
|
+
export function ratioToSqrtPrice(num, den, decimals0, decimals1) {
|
|
305
|
+
if (num <= 0n || den <= 0n) {
|
|
306
|
+
throw new RangeError('price must be greater than 0');
|
|
307
|
+
}
|
|
308
|
+
const scale = decimals1 - decimals0;
|
|
309
|
+
return sqrtBigInt((num * (scale > 0 ? 10n ** BigInt(scale) : 1n) * 2n ** 128n) / (den * (scale < 0 ? 10n ** BigInt(-scale) : 1n)));
|
|
310
|
+
}
|
|
311
|
+
/** 价格(token1 / token0,按精度换算)→ tick(按程序;满足价格 >= tick 价格的最大 tick) */
|
|
312
|
+
export function priceToTick(program, price, decimals0, decimals1) {
|
|
313
|
+
const { num, den } = parseDecimal(price);
|
|
314
|
+
return tickAtSqrtPrice(program, ratioToSqrtPrice(num, den, decimals0, decimals1));
|
|
315
|
+
}
|
|
316
|
+
/** 最近的可用 tick(tickSpacing 的整数倍),限制在 [MIN_TICK, MAX_TICK] 内 */
|
|
317
|
+
export function nearestUsableTick(tick, tickSpacing) {
|
|
318
|
+
if (!Number.isInteger(tickSpacing) || tickSpacing <= 0) {
|
|
319
|
+
throw new RangeError(`invalid tickSpacing: ${tickSpacing}`);
|
|
320
|
+
}
|
|
321
|
+
const rounded = Math.round(tick / tickSpacing) * tickSpacing;
|
|
322
|
+
if (rounded < MIN_TICK) {
|
|
323
|
+
return rounded + tickSpacing;
|
|
324
|
+
}
|
|
325
|
+
if (rounded > MAX_TICK) {
|
|
326
|
+
return rounded - tickSpacing;
|
|
327
|
+
}
|
|
328
|
+
return rounded;
|
|
329
|
+
}
|
|
330
|
+
/** 价格按 slippage 上下浮动后的 sqrt 价格和对应的 tick,限制在程序允许的范围内(slippage 是比例,精确到百万分之一) */
|
|
331
|
+
export function sqrtPriceBounds(program, sqrtPrice, slippage) {
|
|
332
|
+
if (!(slippage >= 0 && slippage < 1)) {
|
|
333
|
+
throw new RangeError(`slippage must be in [0, 1): ${slippage}`);
|
|
334
|
+
}
|
|
335
|
+
const [min, max] = sqrtRange(program);
|
|
336
|
+
const ppm = BigInt(Math.round(slippage * 1e6));
|
|
337
|
+
const square = sqrtPrice * sqrtPrice;
|
|
338
|
+
return [1000000n - ppm, 1000000n + ppm].map((factor) => {
|
|
339
|
+
let s = sqrtBigInt((square * factor) / 1000000n);
|
|
340
|
+
s = s < min ? min : s >= max ? max - 1n : s;
|
|
341
|
+
return { sqrtPrice: s, tick: tickAtSqrtPrice(program, s) };
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
/** 价格在 slippage 范围内变动时,流动性 L 至少对应多少代币(移除时的最小数量,向下取整) */
|
|
345
|
+
export function getMinAmounts(program, sqrtPrice, tickLower, tickUpper, liquidity, slippage) {
|
|
346
|
+
const [lower, upper] = sqrtPriceBounds(program, sqrtPrice, slippage);
|
|
347
|
+
const a = sqrtPriceAtTick(program, tickLower);
|
|
348
|
+
const b = sqrtPriceAtTick(program, tickUpper);
|
|
349
|
+
// token0 随价格上涨而减少,取上限价格时的;token1 取下限价格时的
|
|
350
|
+
return [
|
|
351
|
+
getAmountsForLiquidity(upper.tick, upper.sqrtPrice, a, b, liquidity, tickLower, tickUpper)[0],
|
|
352
|
+
getAmountsForLiquidity(lower.tick, lower.sqrtPrice, a, b, liquidity, tickLower, tickUpper)[1],
|
|
353
|
+
];
|
|
354
|
+
}
|
|
355
|
+
/** 价格在 slippage 范围内变动时,添加流动性 L 最多需要多少代币(amountMax,向上取整) */
|
|
356
|
+
export function getMaxAmounts(program, sqrtPrice, tickLower, tickUpper, liquidity, slippage) {
|
|
357
|
+
const [lower, upper] = sqrtPriceBounds(program, sqrtPrice, slippage);
|
|
358
|
+
const a = sqrtPriceAtTick(program, tickLower);
|
|
359
|
+
const b = sqrtPriceAtTick(program, tickUpper);
|
|
360
|
+
return [
|
|
361
|
+
getMintAmounts(lower.tick, lower.sqrtPrice, a, b, liquidity, tickLower, tickUpper)[0],
|
|
362
|
+
getMintAmounts(upper.tick, upper.sqrtPrice, a, b, liquidity, tickLower, tickUpper)[1],
|
|
363
|
+
];
|
|
364
|
+
}
|
|
365
|
+
//# sourceMappingURL=lpMath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lpMath.js","sourceRoot":"","sources":["../src/lpMath.ts"],"names":[],"mappings":"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"}
|
package/dist/shortcuts.d.ts
CHANGED
|
@@ -9,6 +9,14 @@ export interface ShortcutOptions extends ClientConfig {
|
|
|
9
9
|
*/
|
|
10
10
|
provider?: RpcSource | readonly RpcSource[];
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* 拆出节点参数和函数自己的参数(ownKeys),其余作为客户端配置;值为 undefined 的参数忽略。
|
|
14
|
+
* signal 总是作为函数自己的参数(放进客户端配置会让每次调用都新建客户端)
|
|
15
|
+
*/
|
|
16
|
+
export declare function resolve<T extends ShortcutOptions, K extends keyof T & string = never>(options: T, ownKeys?: readonly K[]): {
|
|
17
|
+
client: SolanaClient;
|
|
18
|
+
own: Pick<T, K>;
|
|
19
|
+
};
|
|
12
20
|
export interface GetBalancesOptions extends BalancesOptions, ShortcutOptions {
|
|
13
21
|
}
|
|
14
22
|
/**
|
package/dist/shortcuts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shortcuts.d.ts","sourceRoot":"","sources":["../src/shortcuts.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEzI,iBAAiB;AACjB,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,GAAG,SAAS,SAAS,EAAE,CAAA;CAC5C;
|
|
1
|
+
{"version":3,"file":"shortcuts.d.ts","sourceRoot":"","sources":["../src/shortcuts.ts"],"names":[],"mappings":"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"}
|
package/dist/shortcuts.js
CHANGED
|
@@ -50,7 +50,7 @@ function sourceKey(source) {
|
|
|
50
50
|
* 拆出节点参数和函数自己的参数(ownKeys),其余作为客户端配置;值为 undefined 的参数忽略。
|
|
51
51
|
* signal 总是作为函数自己的参数(放进客户端配置会让每次调用都新建客户端)
|
|
52
52
|
*/
|
|
53
|
-
function resolve(options, ownKeys = []) {
|
|
53
|
+
export function resolve(options, ownKeys = []) {
|
|
54
54
|
const { provider, ...others } = options;
|
|
55
55
|
const own = {};
|
|
56
56
|
const config = {};
|