@tastytrade/api 3.1.0 → 5.0.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/.vscode/launch.json +29 -0
- package/CHANGELOG.md +41 -0
- package/CODEOWNERS +1 -0
- package/README.md +64 -31
- package/dist/account-streamer.d.ts +10 -8
- package/dist/account-streamer.d.ts.map +1 -0
- package/dist/account-streamer.js +147 -229
- package/dist/account-streamer.js.map +1 -0
- package/dist/logger.d.ts +20 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +36 -0
- package/dist/logger.js.map +1 -0
- package/dist/market-data-streamer.d.ts +7 -5
- package/dist/market-data-streamer.d.ts.map +1 -0
- package/dist/market-data-streamer.js +139 -172
- package/dist/market-data-streamer.js.map +1 -0
- package/dist/models/tastytrade-session.d.ts +1 -0
- package/dist/models/tastytrade-session.d.ts.map +1 -0
- package/dist/models/tastytrade-session.js +10 -20
- package/dist/models/tastytrade-session.js.map +1 -0
- package/dist/services/account-status-service.d.ts +2 -1
- package/dist/services/account-status-service.d.ts.map +1 -0
- package/dist/services/account-status-service.js +11 -60
- package/dist/services/account-status-service.js.map +1 -0
- package/dist/services/accounts-and-customers-service.d.ts +2 -1
- package/dist/services/accounts-and-customers-service.d.ts.map +1 -0
- package/dist/services/accounts-and-customers-service.js +29 -112
- package/dist/services/accounts-and-customers-service.js.map +1 -0
- package/dist/services/balances-and-positions-service.d.ts +2 -1
- package/dist/services/balances-and-positions-service.d.ts.map +1 -0
- package/dist/services/balances-and-positions-service.js +22 -88
- package/dist/services/balances-and-positions-service.js.map +1 -0
- package/dist/services/instruments-service.d.ts +2 -1
- package/dist/services/instruments-service.d.ts.map +1 -0
- package/dist/services/instruments-service.js +130 -365
- package/dist/services/instruments-service.js.map +1 -0
- package/dist/services/margin-requirements-service.d.ts +2 -1
- package/dist/services/margin-requirements-service.d.ts.map +1 -0
- package/dist/services/margin-requirements-service.js +16 -73
- package/dist/services/margin-requirements-service.js.map +1 -0
- package/dist/services/market-metrics-service.d.ts +2 -1
- package/dist/services/market-metrics-service.d.ts.map +1 -0
- package/dist/services/market-metrics-service.js +21 -88
- package/dist/services/market-metrics-service.js.map +1 -0
- package/dist/services/net-liquidating-value-history-service.d.ts +2 -1
- package/dist/services/net-liquidating-value-history-service.d.ts.map +1 -0
- package/dist/services/net-liquidating-value-history-service.js +16 -74
- package/dist/services/net-liquidating-value-history-service.js.map +1 -0
- package/dist/services/orders-service.d.ts +2 -1
- package/dist/services/orders-service.d.ts.map +1 -0
- package/dist/services/orders-service.js +76 -231
- package/dist/services/orders-service.js.map +1 -0
- package/dist/services/risk-parameters-service.d.ts +2 -1
- package/dist/services/risk-parameters-service.d.ts.map +1 -0
- package/dist/services/risk-parameters-service.js +16 -73
- package/dist/services/risk-parameters-service.js.map +1 -0
- package/dist/services/session-service.d.ts +2 -1
- package/dist/services/session-service.d.ts.map +1 -0
- package/dist/services/session-service.js +30 -110
- package/dist/services/session-service.js.map +1 -0
- package/dist/services/symbol-search-service.d.ts +2 -1
- package/dist/services/symbol-search-service.d.ts.map +1 -0
- package/dist/services/symbol-search-service.js +11 -60
- package/dist/services/symbol-search-service.js.map +1 -0
- package/dist/services/tastytrade-http-client.d.ts +5 -3
- package/dist/services/tastytrade-http-client.d.ts.map +1 -0
- package/dist/services/tastytrade-http-client.js +53 -134
- package/dist/services/tastytrade-http-client.js.map +1 -0
- package/dist/services/transactions-service.d.ts +2 -1
- package/dist/services/transactions-service.d.ts.map +1 -0
- package/dist/services/transactions-service.js +22 -87
- package/dist/services/transactions-service.js.map +1 -0
- package/dist/services/watchlists-service.d.ts +2 -1
- package/dist/services/watchlists-service.d.ts.map +1 -0
- package/dist/services/watchlists-service.js +51 -165
- package/dist/services/watchlists-service.js.map +1 -0
- package/dist/tastytrade-api.d.ts +32 -22
- package/dist/tastytrade-api.d.ts.map +1 -0
- package/dist/tastytrade-api.js +44 -79
- package/dist/tastytrade-api.js.map +1 -0
- package/dist/utils/constants.d.ts +1 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +2 -4
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/json-util.d.ts +4 -3
- package/dist/utils/json-util.d.ts.map +1 -0
- package/dist/utils/json-util.js +14 -25
- package/dist/utils/json-util.js.map +1 -0
- package/dist/utils/response-util.d.ts +1 -0
- package/dist/utils/response-util.d.ts.map +1 -0
- package/dist/utils/response-util.js +7 -12
- package/dist/utils/response-util.js.map +1 -0
- package/lib/account-streamer.ts +19 -12
- package/lib/logger.ts +48 -0
- package/lib/market-data-streamer.ts +5 -1
- package/lib/services/account-status-service.ts +2 -2
- package/lib/services/accounts-and-customers-service.ts +2 -2
- package/lib/services/balances-and-positions-service.ts +2 -2
- package/lib/services/instruments-service.ts +2 -2
- package/lib/services/margin-requirements-service.ts +2 -2
- package/lib/services/market-metrics-service.ts +2 -2
- package/lib/services/net-liquidating-value-history-service.ts +2 -2
- package/lib/services/orders-service.ts +2 -2
- package/lib/services/risk-parameters-service.ts +2 -2
- package/lib/services/session-service.ts +2 -2
- package/lib/services/symbol-search-service.ts +2 -2
- package/lib/services/tastytrade-http-client.ts +21 -16
- package/lib/services/transactions-service.ts +2 -2
- package/lib/services/watchlists-service.ts +2 -2
- package/lib/tastytrade-api.ts +35 -22
- package/package.json +14 -9
- package/tsconfig.json +12 -11
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
// Use IntelliSense to learn about possible attributes.
|
|
3
|
+
// Hover to view descriptions of existing attributes.
|
|
4
|
+
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
|
5
|
+
"version": "0.2.0",
|
|
6
|
+
"configurations": [
|
|
7
|
+
{
|
|
8
|
+
"type": "node",
|
|
9
|
+
"request": "launch",
|
|
10
|
+
"name": "Typescript",
|
|
11
|
+
"skipFiles": [
|
|
12
|
+
"<node_internals>/**"
|
|
13
|
+
],
|
|
14
|
+
"runtimeExecutable": "ts-node",
|
|
15
|
+
// "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"],
|
|
16
|
+
"args": ["thingy/main.ts"]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"type": "node",
|
|
20
|
+
"request": "launch",
|
|
21
|
+
"name": "Javascript",
|
|
22
|
+
"skipFiles": [
|
|
23
|
+
"<node_internals>/**"
|
|
24
|
+
],
|
|
25
|
+
"runtimeExecutable": "node",
|
|
26
|
+
"args": ["thingy/default.js"]
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
}
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# @tastytrade/api
|
|
2
|
+
All notable changes to this project will be documented in this file.
|
|
3
|
+
|
|
4
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
5
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
|
+
|
|
7
|
+
## [Unreleased]
|
|
8
|
+
|
|
9
|
+
## [5.0.0] - 2024-09-17
|
|
10
|
+
|
|
11
|
+
The `TastytradeClient` constructor now takes a single config object instead of 2 urls.
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- Add optional logging; update example app [#44](https://github.com/tastytrade/tastytrade-api-js/pull/44)
|
|
16
|
+
- Add future option quote streaming example to README
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- Update README.md [#42](https://github.com/tastytrade/tastytrade-api-js/pull/35)
|
|
21
|
+
- README corrections
|
|
22
|
+
- typo on json account node name [#39](https://github.com/tastytrade/tastytrade-api-js/pull/39)
|
|
23
|
+
|
|
24
|
+
## [4.0.0] - 2024-03-12
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
|
|
28
|
+
- Tsconfig library updates [#35](https://github.com/tastytrade/tastytrade-api-js/pull/35)
|
|
29
|
+
- target modern JS modules [#30](https://github.com/tastytrade/tastytrade-api-js/pull/30)
|
|
30
|
+
- Deprecate MarketDataStreamer [#29](https://github.com/tastytrade/tastytrade-api-js/pull/29)
|
|
31
|
+
- Target moden node runtimes [#22](https://github.com/tastytrade/tastytrade-api-js/pull/22)
|
|
32
|
+
|
|
33
|
+
### Fixed
|
|
34
|
+
|
|
35
|
+
- add missing return in getDefaultHeaders [#32](https://github.com/tastytrade/tastytrade-api-js/pull/32)
|
|
36
|
+
- Dont set User-Agent header in browser environment [#28](https://github.com/tastytrade/tastytrade-api-js/pull/28)
|
|
37
|
+
|
|
38
|
+
### Removed
|
|
39
|
+
|
|
40
|
+
- Remove https.Agent in `tastytrade-http-client` [#24](https://github.com/tastytrade/tastytrade-api-js/pull/24)
|
|
41
|
+
- Remove un-needed types dependency [#21](https://github.com/tastytrade/tastytrade-api-js/pull/21)
|
package/CODEOWNERS
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* @dmoss18
|
package/README.md
CHANGED
|
@@ -2,53 +2,84 @@
|
|
|
2
2
|
|
|
3
3
|
## Installation
|
|
4
4
|
npm:
|
|
5
|
-
`npm
|
|
5
|
+
`npm i @tastytrade/api`
|
|
6
6
|
|
|
7
7
|
yarn:
|
|
8
8
|
`yarn add @tastytrade/api`
|
|
9
9
|
|
|
10
10
|
## Quickstart
|
|
11
11
|
```js
|
|
12
|
-
import
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
12
|
+
import TastytradeApi from "@tastytrade/api"
|
|
13
|
+
|
|
14
|
+
const tastytradeApi = new TastytradeApi(baseUrl, accountStreamerUrl)
|
|
15
|
+
const loginResponse = await tastytradeApi.sessionService.login(usernameOrEmail, password)
|
|
16
|
+
const accounts = await tastytradeApi.accountsAndCustomersService.getCustomerAccounts()
|
|
17
|
+
const accountPositions = await tastytradeApi.balancesAndPositionsService.getPositionsList(accounts[0].account['account-number'])
|
|
17
18
|
```
|
|
18
19
|
|
|
19
20
|
### Market Data
|
|
21
|
+
The MarketDataStreamer in this package is deprecated. We recommend using DxFeed's [@dxfeed/dxlink-api](https://github.com/dxFeed/dxLink/blob/main/dxlink-javascript/dxlink-api/README.md) instead.
|
|
22
|
+
|
|
23
|
+
Here's a node example of how you can subscribe to some future option quotes using `@dxfeed/dxlink-api`:
|
|
20
24
|
```js
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
console.log(data)
|
|
31
|
-
}
|
|
25
|
+
/**
|
|
26
|
+
* Below code assumes you've hit GET /api-quote-tokens and received a token
|
|
27
|
+
* You should also hit GET /futures-option-chains/{future_contract_code}/nested to get the future options you want to subscribe to
|
|
28
|
+
* There is an equivalent GET /option-chains/{underlying_ticker_symbol}/nested for equity options
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
const WebSocket = require('isomorphic-ws')
|
|
32
|
+
const { DXLinkWebSocketClient, DXLinkFeed, FeedDataFormat } = require('@dxfeed/dxlink-api')
|
|
33
|
+
global.WebSocket = WebSocket
|
|
32
34
|
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
+
const token = '<api quote token>'
|
|
36
|
+
const client = new DXLinkWebSocketClient()
|
|
37
|
+
client.connect('wss://tasty-openapi-ws.dxfeed.com/realtime')
|
|
38
|
+
client.setAuthToken(token)
|
|
39
|
+
|
|
40
|
+
const feed = new DXLinkFeed(client, 'AUTO')
|
|
41
|
+
|
|
42
|
+
// Note: Calling feed.configure is optional - omitting it means DxLink will return all fields
|
|
43
|
+
feed.configure({
|
|
44
|
+
acceptAggregationPeriod: 10,
|
|
45
|
+
acceptDataFormat: FeedDataFormat.COMPACT,
|
|
46
|
+
acceptEventFields: {
|
|
47
|
+
Quote: ['eventSymbol', 'askPrice', 'bidPrice']
|
|
48
|
+
},
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
feed.addEventListener((events) => {
|
|
52
|
+
events.map(event => {
|
|
53
|
+
console.log(event)
|
|
54
|
+
})
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
feed.addSubscriptions({
|
|
58
|
+
type: 'Quote',
|
|
59
|
+
symbol: './EW4Q24C5750:XCME', // Please note: we don't update this README daily. This symbol may be expired. You'll have to find an unexpired symbol.
|
|
60
|
+
})
|
|
61
|
+
```
|
|
35
62
|
|
|
36
|
-
|
|
37
|
-
streamer.addSubscription('AAPL')
|
|
38
|
-
// Optionally specify which market data events you want to subscribe to
|
|
39
|
-
streamer.addSubscription('SPY', { subscriptionTypes: [MarketDataSubscriptionType.Quote] })
|
|
63
|
+
To run the above code, save it to a file and run `node <filename>.js` in a terminal.
|
|
40
64
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
65
|
+
When adding a subscription, the `symbol` value should be the `put-streamer-symbol` or `call-streamer-symbol` returned by the `GET /futures-option-chains/{future_contract_code}/nested` endpoint. For example:
|
|
66
|
+
```js
|
|
67
|
+
// GET /futures-option-chains/ES/nested response:
|
|
68
|
+
{
|
|
69
|
+
"strike-price": "5750.0",
|
|
70
|
+
"call": "./ESU4 EW4Q4 240823C5750",
|
|
71
|
+
"call-streamer-symbol": "./EW4Q24C5750:XCME", <-- use this value
|
|
72
|
+
"put": "./ESU4 EW4Q4 240823P5750",
|
|
73
|
+
"put-streamer-symbol": "./EW4Q24P5750:XCME" <-- or this value
|
|
74
|
+
}
|
|
44
75
|
```
|
|
45
76
|
|
|
77
|
+
To subscribe to equities quotes, the `symbol` is just the ticker symbol, like `AAPL`.
|
|
78
|
+
|
|
46
79
|
### Account Streamer
|
|
47
80
|
```js
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const { AccountStreamer } = TastytradeApi
|
|
51
|
-
const _ = require('lodash')
|
|
81
|
+
import TastytradeApi from "@tastytrade/api"
|
|
82
|
+
import _ from 'lodash'
|
|
52
83
|
|
|
53
84
|
function handleStreamerMessage(json) {
|
|
54
85
|
console.log('streamer message received: ', json)
|
|
@@ -58,7 +89,7 @@ function handleStreamerStateChange(streamerState) {
|
|
|
58
89
|
console.log('streamer state changed: ', streamerState)
|
|
59
90
|
}
|
|
60
91
|
|
|
61
|
-
const tastytradeClient = new
|
|
92
|
+
const tastytradeClient = new TastytradeApi(baseUlr, accountStreamerUrl)
|
|
62
93
|
const accountStreamer = tastytradeClient.accountStreamer
|
|
63
94
|
const loginResponse = await tastytradeClient.sessionService.login(usernameOrEmail, password)
|
|
64
95
|
const accounts = await tastytradeClient.accountsAndCustomersService.getCustomerAccounts()
|
|
@@ -95,6 +126,8 @@ API_PASSWORD=<your cert password>
|
|
|
95
126
|
API_ACCOUNT_NUMBER=<your cert account number>
|
|
96
127
|
```
|
|
97
128
|
|
|
129
|
+
These values should match whatever username/password/account you set up in the tastytrade sandbox environment. Head to developer.tastyworks.com to get that set up.
|
|
130
|
+
|
|
98
131
|
## Running example app
|
|
99
132
|
```sh
|
|
100
133
|
npm run build
|
|
@@ -1,17 +1,19 @@
|
|
|
1
|
-
import type { JsonValue } from './utils/json-util';
|
|
2
|
-
import { JsonBuilder } from './utils/json-util';
|
|
3
|
-
import TastytradeSession from './models/tastytrade-session';
|
|
1
|
+
import type { JsonValue } from './utils/json-util.js';
|
|
2
|
+
import { JsonBuilder } from './utils/json-util.js';
|
|
3
|
+
import TastytradeSession from './models/tastytrade-session.js';
|
|
4
|
+
import type Logger from './logger.js';
|
|
4
5
|
export declare enum STREAMER_STATE {
|
|
5
6
|
Open = 0,
|
|
6
7
|
Closed = 1,
|
|
7
8
|
Error = 2
|
|
8
9
|
}
|
|
9
|
-
export
|
|
10
|
-
export
|
|
11
|
-
export
|
|
10
|
+
export type Disposer = () => void;
|
|
11
|
+
export type StreamerStateObserver = (streamerState: STREAMER_STATE) => void;
|
|
12
|
+
export type StreamerMessageObserver = (json: object) => void;
|
|
12
13
|
export declare class AccountStreamer {
|
|
13
14
|
private readonly url;
|
|
14
15
|
private readonly session;
|
|
16
|
+
private readonly logger;
|
|
15
17
|
private websocket;
|
|
16
18
|
private startResolve;
|
|
17
19
|
private startReject;
|
|
@@ -25,12 +27,11 @@ export declare class AccountStreamer {
|
|
|
25
27
|
private readonly streamerMessageObservers;
|
|
26
28
|
private startPromise;
|
|
27
29
|
private readonly requestPromises;
|
|
28
|
-
private readonly logger;
|
|
29
30
|
/**
|
|
30
31
|
*
|
|
31
32
|
* @param url Url of the account streamer service
|
|
32
33
|
*/
|
|
33
|
-
constructor(url: string, session: TastytradeSession);
|
|
34
|
+
constructor(url: string, session: TastytradeSession, logger: Logger);
|
|
34
35
|
get streamerState(): STREAMER_STATE;
|
|
35
36
|
set streamerState(streamerState: STREAMER_STATE);
|
|
36
37
|
private get authToken();
|
|
@@ -90,3 +91,4 @@ export declare class AccountStreamer {
|
|
|
90
91
|
addMessageObserver(observer: StreamerMessageObserver): Disposer;
|
|
91
92
|
private readonly handleOneMessage;
|
|
92
93
|
}
|
|
94
|
+
//# sourceMappingURL=account-streamer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-streamer.d.ts","sourceRoot":"","sources":["../lib/account-streamer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAW,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,iBAAiB,MAAM,gCAAgC,CAAA;AAE9D,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,oBAAY,cAAc;IACxB,IAAI,IAAI;IACR,MAAM,IAAI;IACV,KAAK,IAAI;CACV;AAeD,MAAM,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAA;AAEjC,MAAM,MAAM,qBAAqB,GAAG,CAAC,aAAa,EAAE,cAAc,KAAK,IAAI,CAAA;AAE3E,MAAM,MAAM,uBAAuB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;AAa5D,qBAAa,eAAe;IA8BxB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IA9B1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,YAAY,CAA2C;IAC/D,OAAO,CAAC,WAAW,CAAwC;IAC3D,OAAO,CAAC,cAAc,CAAY;IAClC,OAAO,CAAC,MAAM,CAAe;IAE7B,OAAO,CAAC,gBAAgB,CAAuC;IAE/D,cAAc,EAAE,GAAG,CAAO;IAC1B,cAAc,EAAE,GAAG,CAAO;IAC1B,OAAO,CAAC,cAAc,CAAwC;IAE9D,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA8B;IAErE,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAgC;IAEzE,OAAO,CAAC,YAAY,CAAgC;IAEpD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAGnB;IAEb;;;OAGG;gBAEgB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,iBAAiB,EAC3C,MAAM,EAAE,MAAM;IAKhB,IAAI,aAAa,IAAI,cAAc,CAElC;IAED,IAAI,aAAa,CAAC,aAAa,EAAE,cAAc,EAM9C;IAED,OAAO,KAAK,SAAS,GAEpB;IAED;;;;OAIG;IACH,wBAAwB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,QAAQ;IAQnE,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAyB/B,IAAI;IAIJ,OAAO,CAAC,QAAQ;IAsBhB,QAAQ,CAAC,aAAa,aAGrB;IAED,OAAO,CAAC,sBAAsB;IAc9B,IAAI,oBAAoB,YAEvB;IAED,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,qBAAqB;IAI7B;;;;;OAKG;IACH,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,mBAAmB,UAAO,GAAG,MAAM;IA2B3D;;;;;OAKG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM;IAS7D;;;;OAIG;IACI,eAAe,CAAC,cAAc,EAAE,MAAM;IAQ7C;;;;OAIG;IACU,mBAAmB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAc3E,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAa1B;IAED,OAAO,CAAC,QAAQ,CAAC,WAAW,CAS3B;IAED,OAAO,CAAC,QAAQ,CAAC,WAAW,CAgB3B;IAED,OAAO,CAAC,QAAQ,CAAC,aAAa,CAW7B;IAED,kBAAkB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,QAAQ;IAQ/D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CA0BhC;CACF"}
|