@win-trader/bindings 0.0.3 → 0.1.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.
@@ -160,7 +160,7 @@ export type OwnableStorageKey = {
160
160
  };
161
161
  /**
162
162
  * Authoritative per-market state: the side aggregates, the funding indices,
163
- * the current funding flows, and the market configuration.
163
+ * the funding EMA, and the market configuration.
164
164
  *
165
165
  * Soroban limits UDT field names to 30 characters, so where a doc glossary
166
166
  * term is longer the field drops the redundant qualifier and its doc
@@ -170,7 +170,7 @@ export type OwnableStorageKey = {
170
170
  export interface Market {
171
171
  config: MarketConfig;
172
172
  /**
173
- * `INDEX_PRECISION`-scaled bps/day payer rate for the current interval.
173
+ * `INDEX_PRECISION`-scaled bps/day payer rate as of the last refresh.
174
174
  */
175
175
  current_payer_rate: i128;
176
176
  current_payer_side: PayerSide;
@@ -182,12 +182,11 @@ export interface Market {
182
182
  */
183
183
  lp_backed_index_long: i128;
184
184
  lp_backed_index_short: i128;
185
+ lp_payer_remainder: i128;
185
186
  /**
186
- * LP-allocated remainder of the payer flow, cash/second at
187
- * `INDEX_PRECISION` (§8.1).
187
+ * Sub-stroop carry of the receiver-liability accrual (§8.3).
188
188
  */
189
- lp_flow_per_second: i128;
190
- lp_payer_remainder: i128;
189
+ pending_remainder: i128;
191
190
  /**
192
191
  * Cumulative payer fee per unit of dominant-side size whose collection
193
192
  * restores cash backing an already-accrued receiver claim (§8.2).
@@ -195,12 +194,6 @@ export interface Market {
195
194
  receiver_backed_index_long: i128;
196
195
  receiver_backed_index_short: i128;
197
196
  /**
198
- * Receiver-allocated share of the payer flow, cash/second at
199
- * `INDEX_PRECISION` (§8.1).
200
- */
201
- receiver_flow_per_second: i128;
202
- receiver_flow_remainder: i128;
203
- /**
204
197
  * Cumulative funding credit per unit of light-side size (§8.2).
205
198
  */
206
199
  receiver_index_long: i128;
@@ -208,6 +201,12 @@ export interface Market {
208
201
  receiver_index_short: i128;
209
202
  receiver_payer_remainder: i128;
210
203
  short: MarketSide;
204
+ /**
205
+ * §8.1 signed EMA of the instantaneous skew: a fraction of one at
206
+ * `INDEX_PRECISION` scale, positive when history says longs dominate.
207
+ * Decays toward the current skew with the global half-life.
208
+ */
209
+ skew_ema: i128;
211
210
  }
212
211
  export interface LpConfig {
213
212
  lp_request_delay: u64;
@@ -268,8 +267,9 @@ export interface LpRequest {
268
267
  status: LpRequestStatus;
269
268
  }
270
269
  /**
271
- * Which side currently pays funding (§8.1: the side with more base
272
- * exposure). `None` when the market is balanced or empty.
270
+ * Which side currently pays funding (§8.1: the side the blended integral
271
+ * skew points at — under the EMA this can be the *lighter* side for a
272
+ * while after the book flips). `None` when the blend is exactly zero.
273
273
  */
274
274
  export type PayerSide = {
275
275
  tag: "None";
@@ -294,6 +294,40 @@ export type RiskState = {
294
294
  tag: "HardCap";
295
295
  values: void;
296
296
  };
297
+ /**
298
+ * A pending limit/stop entry order: the frozen `open_position` arguments
299
+ * plus a trigger condition and an expiry. Placing one only writes this
300
+ * record — no funds move. A keeper's `execute_entry_order` pulls the
301
+ * collateral via the owner's token allowance and opens the position
302
+ * exactly as a market open would.
303
+ */
304
+ export interface EntryOrder {
305
+ acceptable_price: i128;
306
+ collateral: i128;
307
+ execution_budget: i128;
308
+ /**
309
+ * Ledger timestamp after which the order is dead and swept on the next
310
+ * touch (user-configurable max TTL).
311
+ */
312
+ expires_at: u64;
313
+ id: u64;
314
+ is_long: boolean;
315
+ market: string;
316
+ owner: string;
317
+ size: i128;
318
+ stop_loss: i128;
319
+ take_profit: i128;
320
+ /**
321
+ * True → fill when price ≥ trigger (stop/breakout entry); false → fill
322
+ * when price ≤ trigger (limit/dip entry). Inferred at placement from
323
+ * the trigger vs. the current price.
324
+ */
325
+ trigger_above: boolean;
326
+ /**
327
+ * The oracle price at which the order becomes fillable.
328
+ */
329
+ trigger_price: i128;
330
+ }
297
331
  export interface MarketSide {
298
332
  base_exposure: i128;
299
333
  risk_state: RiskState;
@@ -314,22 +348,68 @@ export interface OracleRound {
314
348
  }
315
349
  export interface GlobalConfig {
316
350
  base_borrow_rate_bps_day: i128;
351
+ /**
352
+ * §9.2 borrow-curve exponent, bps: 20_000 = u² (legacy quadratic),
353
+ * 10_000 = linear. Bounded to ≤ 100_000 (e ≤ 10) by validation.
354
+ */
355
+ borrow_exponent_bps: u32;
356
+ /**
357
+ * §8.1 half-life of the funding skew EMA, seconds (global: one memory
358
+ * horizon for every market).
359
+ */
360
+ funding_half_life_seconds: u64;
317
361
  hard_cap_factor_limit_bps: u32;
318
362
  lp_revenue_share_bps: u32;
319
363
  max_active_markets: u32;
320
364
  max_adl_reward: i128;
321
365
  max_insolvent_touch_reward: i128;
322
366
  max_variable_borrow_bps_day: i128;
367
+ /**
368
+ * §11.2 minimum borrow charge per capitalization: an index delta at
369
+ * `INDEX_PRECISION` scale applied to the position's risk units
370
+ * (2e11 = 2 bps of notional at a 10% market risk factor). Zero
371
+ * disables the floor.
372
+ */
373
+ min_borrow_index_delta: i128;
323
374
  min_collateral: i128;
324
375
  min_position_lifetime: u64;
376
+ /**
377
+ * §11.1 share of a closing fee routed to the trader's referrer, carved
378
+ * from the protocol slice (keeper and LP shares are untouched). `0`
379
+ * disables referral accrual globally — a kill switch. Validated so
380
+ * `lp + keeper + referral ≤ BPS`, keeping the protocol remainder ≥ 0.
381
+ */
382
+ referral_fee_share_bps: u32;
325
383
  risk_capacity_limit_bps: u32;
326
384
  risk_keeper_revenue_share_bps: u32;
327
385
  }
328
386
  export interface MarketConfig {
329
387
  adl_pnl_factor_bps: u32;
330
388
  adl_reward_bps: u32;
389
+ /**
390
+ * §11.1 closing-fee tier when the close worsens skew.
391
+ */
392
+ close_fee_high_bps: u32;
393
+ /**
394
+ * §11.1 closing-fee tier when the close improves or preserves skew.
395
+ */
396
+ close_fee_low_bps: u32;
331
397
  hard_cap_pnl_factor_bps: u32;
398
+ /**
399
+ * Margin required to open or add risk (§12.3). Divides max leverage:
400
+ * a position may not be created closer to liquidation than this.
401
+ */
402
+ initial_margin_bps: u32;
403
+ /**
404
+ * §8.1 weight of the instantaneous skew in the funding blend, in bps;
405
+ * the rest is the half-life EMA. `BPS` reproduces pure instant skew.
406
+ */
407
+ instant_weight_bps: u32;
332
408
  liquidation_reward_bps: u32;
409
+ /**
410
+ * Margin below which the position is liquidatable (§12.3). Must not
411
+ * exceed `initial_margin_bps`; the gap is the entry buffer.
412
+ */
333
413
  maintenance_margin_bps: u32;
334
414
  market_risk_factor_bps: u32;
335
415
  max_funding_rate_bps_day: i128;
@@ -337,8 +417,6 @@ export interface MarketConfig {
337
417
  max_long_size_open_interest: i128;
338
418
  max_short_base_exposure: i128;
339
419
  max_short_size_open_interest: i128;
340
- open_fee_high_bps: u32;
341
- open_fee_low_bps: u32;
342
420
  recovery_pnl_factor_bps: u32;
343
421
  warning_pnl_factor_bps: u32;
344
422
  }
@@ -409,6 +487,23 @@ export type LpRequestStatus = {
409
487
  tag: "Expired";
410
488
  values: void;
411
489
  };
490
+ /**
491
+ * The caller-supplied fields of a `place_entry_order` request, bundled so
492
+ * the entry point stays within Soroban's parameter limit. `owner` and
493
+ * `market` are passed alongside; `id` and `trigger_above` are derived at
494
+ * placement.
495
+ */
496
+ export interface EntryOrderParams {
497
+ acceptable_price: i128;
498
+ collateral: i128;
499
+ execution_budget: i128;
500
+ expires_at: u64;
501
+ is_long: boolean;
502
+ size: i128;
503
+ stop_loss: i128;
504
+ take_profit: i128;
505
+ trigger_price: i128;
506
+ }
412
507
  export interface SettlementResult {
413
508
  /**
414
509
  * Shares minted for a deposit or assets paid for a withdrawal.
@@ -145,22 +145,24 @@ export class Client extends ContractClient {
145
145
  "AAAABQAAACpFdmVudCBlbWl0dGVkIHdoZW4gb3duZXJzaGlwIGlzIHJlbm91bmNlZC4AAAAAAAAAAAAST3duZXJzaGlwUmVub3VuY2VkAAAAAAABAAAAE293bmVyc2hpcF9yZW5vdW5jZWQAAAAAAQAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAAC",
146
146
  "AAAABQAAADZFdmVudCBlbWl0dGVkIHdoZW4gYW4gb3duZXJzaGlwIHRyYW5zZmVyIGlzIGNvbXBsZXRlZC4AAAAAAAAAAAAaT3duZXJzaGlwVHJhbnNmZXJDb21wbGV0ZWQAAAAAAAEAAAAcb3duZXJzaGlwX3RyYW5zZmVyX2NvbXBsZXRlZAAAAAEAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAg==",
147
147
  "AAAAAgAAACNTdG9yYWdlIGtleXMgZm9yIGBPd25hYmxlYCB1dGlsaXR5LgAAAAAAAAAAEU93bmFibGVTdG9yYWdlS2V5AAAAAAAAAgAAAAAAAAAAAAAABU93bmVyAAAAAAAAAAAAAAAAAAAMUGVuZGluZ093bmVy",
148
- "AAAAAQAAAY9BdXRob3JpdGF0aXZlIHBlci1tYXJrZXQgc3RhdGU6IHRoZSBzaWRlIGFnZ3JlZ2F0ZXMsIHRoZSBmdW5kaW5nIGluZGljZXMsCnRoZSBjdXJyZW50IGZ1bmRpbmcgZmxvd3MsIGFuZCB0aGUgbWFya2V0IGNvbmZpZ3VyYXRpb24uCgpTb3JvYmFuIGxpbWl0cyBVRFQgZmllbGQgbmFtZXMgdG8gMzAgY2hhcmFjdGVycywgc28gd2hlcmUgYSBkb2MgZ2xvc3NhcnkKdGVybSBpcyBsb25nZXIgdGhlIGZpZWxkIGRyb3BzIHRoZSByZWR1bmRhbnQgcXVhbGlmaWVyIGFuZCBpdHMgZG9jCmNvbW1lbnQgY2FycmllcyB0aGUgZnVsbCB0ZXJtIChlLmcuIGByZWNlaXZlcl9iYWNrZWRfaW5kZXhfbG9uZ2AgaXMgdGhlCmRvYydzIGByZWNlaXZlcl9iYWNrZWRfcGF5ZXJfaW5kZXhgIGZvciB0aGUgbG9uZyBzaWRlKS4AAAAAAAAAAAZNYXJrZXQAAAAAABIAAAAAAAAABmNvbmZpZwAAAAAH0AAAAAxNYXJrZXRDb25maWcAAABFYElOREVYX1BSRUNJU0lPTmAtc2NhbGVkIGJwcy9kYXkgcGF5ZXIgcmF0ZSBmb3IgdGhlIGN1cnJlbnQgaW50ZXJ2YWwuAAAAAAAAEmN1cnJlbnRfcGF5ZXJfcmF0ZQAAAAAACwAAAAAAAAASY3VycmVudF9wYXllcl9zaWRlAAAAAAfQAAAACVBheWVyU2lkZQAAAAAAAAAAAAAXbGFzdF9mdW5kaW5nX2NoZWNrcG9pbnQAAAAABgAAAAAAAAAEbG9uZwAAB9AAAAAKTWFya2V0U2lkZQAAAAAAXUN1bXVsYXRpdmUgcGF5ZXIgZmVlIHBlciB1bml0IG9mIGRvbWluYW50LXNpZGUgc2l6ZSB0aGF0IGlzIExQCnJldmVudWUgb24gY29sbGVjdGlvbiAowqc4LjIpLgAAAAAAABRscF9iYWNrZWRfaW5kZXhfbG9uZwAAAAsAAAAAAAAAFWxwX2JhY2tlZF9pbmRleF9zaG9ydAAAAAAAAAsAAABTTFAtYWxsb2NhdGVkIHJlbWFpbmRlciBvZiB0aGUgcGF5ZXIgZmxvdywgY2FzaC9zZWNvbmQgYXQKYElOREVYX1BSRUNJU0lPTmAgKMKnOC4xKS4AAAAAEmxwX2Zsb3dfcGVyX3NlY29uZAAAAAAACwAAAAAAAAASbHBfcGF5ZXJfcmVtYWluZGVyAAAAAAALAAAAhUN1bXVsYXRpdmUgcGF5ZXIgZmVlIHBlciB1bml0IG9mIGRvbWluYW50LXNpZGUgc2l6ZSB3aG9zZSBjb2xsZWN0aW9uCnJlc3RvcmVzIGNhc2ggYmFja2luZyBhbiBhbHJlYWR5LWFjY3J1ZWQgcmVjZWl2ZXIgY2xhaW0gKMKnOC4yKS4AAAAAAAAacmVjZWl2ZXJfYmFja2VkX2luZGV4X2xvbmcAAAAAAAsAAAAAAAAAG3JlY2VpdmVyX2JhY2tlZF9pbmRleF9zaG9ydAAAAAALAAAAVVJlY2VpdmVyLWFsbG9jYXRlZCBzaGFyZSBvZiB0aGUgcGF5ZXIgZmxvdywgY2FzaC9zZWNvbmQgYXQKYElOREVYX1BSRUNJU0lPTmAgKMKnOC4xKS4AAAAAAAAYcmVjZWl2ZXJfZmxvd19wZXJfc2Vjb25kAAAACwAAAAAAAAAXcmVjZWl2ZXJfZmxvd19yZW1haW5kZXIAAAAACwAAAD5DdW11bGF0aXZlIGZ1bmRpbmcgY3JlZGl0IHBlciB1bml0IG9mIGxpZ2h0LXNpZGUgc2l6ZSAowqc4LjIpLgAAAAAAE3JlY2VpdmVyX2luZGV4X2xvbmcAAAAACwAAAAAAAAAYcmVjZWl2ZXJfaW5kZXhfcmVtYWluZGVyAAAACwAAAAAAAAAUcmVjZWl2ZXJfaW5kZXhfc2hvcnQAAAALAAAAAAAAABhyZWNlaXZlcl9wYXllcl9yZW1haW5kZXIAAAALAAAAAAAAAAVzaG9ydAAAAAAAB9AAAAAKTWFya2V0U2lkZQAA",
148
+ "AAAAAQAAAYVBdXRob3JpdGF0aXZlIHBlci1tYXJrZXQgc3RhdGU6IHRoZSBzaWRlIGFnZ3JlZ2F0ZXMsIHRoZSBmdW5kaW5nIGluZGljZXMsCnRoZSBmdW5kaW5nIEVNQSwgYW5kIHRoZSBtYXJrZXQgY29uZmlndXJhdGlvbi4KClNvcm9iYW4gbGltaXRzIFVEVCBmaWVsZCBuYW1lcyB0byAzMCBjaGFyYWN0ZXJzLCBzbyB3aGVyZSBhIGRvYyBnbG9zc2FyeQp0ZXJtIGlzIGxvbmdlciB0aGUgZmllbGQgZHJvcHMgdGhlIHJlZHVuZGFudCBxdWFsaWZpZXIgYW5kIGl0cyBkb2MKY29tbWVudCBjYXJyaWVzIHRoZSBmdWxsIHRlcm0gKGUuZy4gYHJlY2VpdmVyX2JhY2tlZF9pbmRleF9sb25nYCBpcyB0aGUKZG9jJ3MgYHJlY2VpdmVyX2JhY2tlZF9wYXllcl9pbmRleGAgZm9yIHRoZSBsb25nIHNpZGUpLgAAAAAAAAAAAAAGTWFya2V0AAAAAAARAAAAAAAAAAZjb25maWcAAAAAB9AAAAAMTWFya2V0Q29uZmlnAAAAQ2BJTkRFWF9QUkVDSVNJT05gLXNjYWxlZCBicHMvZGF5IHBheWVyIHJhdGUgYXMgb2YgdGhlIGxhc3QgcmVmcmVzaC4AAAAAEmN1cnJlbnRfcGF5ZXJfcmF0ZQAAAAAACwAAAAAAAAASY3VycmVudF9wYXllcl9zaWRlAAAAAAfQAAAACVBheWVyU2lkZQAAAAAAAAAAAAAXbGFzdF9mdW5kaW5nX2NoZWNrcG9pbnQAAAAABgAAAAAAAAAEbG9uZwAAB9AAAAAKTWFya2V0U2lkZQAAAAAAXUN1bXVsYXRpdmUgcGF5ZXIgZmVlIHBlciB1bml0IG9mIGRvbWluYW50LXNpZGUgc2l6ZSB0aGF0IGlzIExQCnJldmVudWUgb24gY29sbGVjdGlvbiAowqc4LjIpLgAAAAAAABRscF9iYWNrZWRfaW5kZXhfbG9uZwAAAAsAAAAAAAAAFWxwX2JhY2tlZF9pbmRleF9zaG9ydAAAAAAAAAsAAAAAAAAAEmxwX3BheWVyX3JlbWFpbmRlcgAAAAAACwAAADtTdWItc3Ryb29wIGNhcnJ5IG9mIHRoZSByZWNlaXZlci1saWFiaWxpdHkgYWNjcnVhbCAowqc4LjMpLgAAAAARcGVuZGluZ19yZW1haW5kZXIAAAAAAAALAAAAhUN1bXVsYXRpdmUgcGF5ZXIgZmVlIHBlciB1bml0IG9mIGRvbWluYW50LXNpZGUgc2l6ZSB3aG9zZSBjb2xsZWN0aW9uCnJlc3RvcmVzIGNhc2ggYmFja2luZyBhbiBhbHJlYWR5LWFjY3J1ZWQgcmVjZWl2ZXIgY2xhaW0gKMKnOC4yKS4AAAAAAAAacmVjZWl2ZXJfYmFja2VkX2luZGV4X2xvbmcAAAAAAAsAAAAAAAAAG3JlY2VpdmVyX2JhY2tlZF9pbmRleF9zaG9ydAAAAAALAAAAPkN1bXVsYXRpdmUgZnVuZGluZyBjcmVkaXQgcGVyIHVuaXQgb2YgbGlnaHQtc2lkZSBzaXplICjCpzguMikuAAAAAAATcmVjZWl2ZXJfaW5kZXhfbG9uZwAAAAALAAAAAAAAABhyZWNlaXZlcl9pbmRleF9yZW1haW5kZXIAAAALAAAAAAAAABRyZWNlaXZlcl9pbmRleF9zaG9ydAAAAAsAAAAAAAAAGHJlY2VpdmVyX3BheWVyX3JlbWFpbmRlcgAAAAsAAAAAAAAABXNob3J0AAAAAAAH0AAAAApNYXJrZXRTaWRlAAAAAAC+wqc4LjEgc2lnbmVkIEVNQSBvZiB0aGUgaW5zdGFudGFuZW91cyBza2V3OiBhIGZyYWN0aW9uIG9mIG9uZSBhdApgSU5ERVhfUFJFQ0lTSU9OYCBzY2FsZSwgcG9zaXRpdmUgd2hlbiBoaXN0b3J5IHNheXMgbG9uZ3MgZG9taW5hdGUuCkRlY2F5cyB0b3dhcmQgdGhlIGN1cnJlbnQgc2tldyB3aXRoIHRoZSBnbG9iYWwgaGFsZi1saWZlLgAAAAAACHNrZXdfZW1hAAAACw==",
149
149
  "AAAAAQAAAAAAAAAAAAAACExwQ29uZmlnAAAAAwAAAAAAAAAQbHBfcmVxdWVzdF9kZWxheQAAAAYAAAAAAAAAHG1heF93aXRoZHJhd191dGlsaXphdGlvbl9icHMAAAAEAAAAAAAAABptaW5fZGVwb3NpdF9uYXZfZmFjdG9yX2JwcwAAAAAABA==",
150
150
  "AAAAAQAAADVSZXByZXNlbnRzIGEgc2luZ2xlIHRyYWRlcidzIG9wZW4gbGV2ZXJhZ2VkIHBvc2l0aW9uLgAAAAAAAAAAAAAIUG9zaXRpb24AAAAQAAAAIUFzc2V0IHVuaXRzIGF0IGBQUklDRV9QUkVDSVNJT05gLgAAAAAAAA1iYXNlX2V4cG9zdXJlAAAAAAAACwAAAAAAAAALYm9ycm93X2RlYnQAAAAACwAAAClDYXNoIG93bmVkIGJ5IGFuIG9wdGlvbmFsLW9yZGVyIGV4ZWN1dG9yLgAAAAAAABBleGVjdXRpb25fYnVkZ2V0AAAACwAAAAAAAAAYZnVuZGluZ19wYWlkX3RvX2xwc19kZWJ0AAAACwAAAAAAAAAeZnVuZGluZ19wYWlkX3RvX3JlY2VpdmVyc19kZWJ0AAAAAAALAAAAAAAAABVmdW5kaW5nX3JlY2VpdmVkX2RlYnQAAAAAAAALAAAAAAAAAAJpZAAAAAAABgAAAAAAAAAHaXNfbG9uZwAAAAABAAAAAAAAABNsYXN0X2luY3JlYXNlZF90aW1lAAAAAAYAAAAAAAAABm1hcmtldAAAAAAAEQAAAAAAAAAFb3duZXIAAAAAAAATAAAALkZpeGVkIGdyb3NzIGNhcGFjaXR5IGFzc2lnbmVkIHdoZW4gcmlzayBvcGVucy4AAAAAAApyaXNrX3VuaXRzAAAAAAALAAAAIlVTRCBub3Rpb25hbCBhdCBgUFJJQ0VfUFJFQ0lTSU9OYC4AAAAAAARzaXplAAAACwAAADtUcmlnZ2VyIHByaWNlIGZvciB0aGUgb3B0aW9uYWwgc3RvcC1sb3NzIG9yZGVyOyBgMGAgPSBub25lLgAAAAAJc3RvcF9sb3NzAAAAAAAACwAAAMpUcmFkZXItb3duZWQgY29sbGF0ZXJhbCByZWNvcmRlZCBpbiBjb250cmFjdCBzdGF0ZSAodGhlIGRvYydzCiJzdG9yZWQgY29sbGF0ZXJhbCIpLiBFZmZlY3RpdmUgY29sbGF0ZXJhbCDigJQgc3RvcmVkIGNvbGxhdGVyYWwgYWZ0ZXIKcGVuZGluZyBmZWVzIGFuZCBmdW5kaW5nIGNyZWRpdHMg4oCUIGlzIGFsd2F5cyBkZXJpdmVkLCBuZXZlciBzdG9yZWQuAAAAAAARc3RvcmVkX2NvbGxhdGVyYWwAAAAAAAALAAAAPVRyaWdnZXIgcHJpY2UgZm9yIHRoZSBvcHRpb25hbCB0YWtlLXByb2ZpdCBvcmRlcjsgYDBgID0gbm9uZS4AAAAAAAALdGFrZV9wcm9maXQAAAAACw==",
151
151
  "AAAAAQAAAAAAAAAAAAAACUxwUmVxdWVzdAAAAAAAAAcAAAAAAAAABmFtb3VudAAAAAAACwAAAAAAAAANZXhlY3V0ZV9hZnRlcgAAAAAAAAYAAAAAAAAAAmlkAAAAAAAGAAAAAAAAAARraW5kAAAH0AAAAA1McFJlcXVlc3RLaW5kAAAAAAAAAAAAAAVvd25lcgAAAAAAABMAAAAAAAAADHJlcXVlc3RfdGltZQAAAAYAAAAAAAAABnN0YXR1cwAAAAAH0AAAAA9McFJlcXVlc3RTdGF0dXMA",
152
- "AAAAAgAAAHlXaGljaCBzaWRlIGN1cnJlbnRseSBwYXlzIGZ1bmRpbmcgKMKnOC4xOiB0aGUgc2lkZSB3aXRoIG1vcmUgYmFzZQpleHBvc3VyZSkuIGBOb25lYCB3aGVuIHRoZSBtYXJrZXQgaXMgYmFsYW5jZWQgb3IgZW1wdHkuAAAAAAAAAAAAAAlQYXllclNpZGUAAAAAAAADAAAAAAAAAAAAAAAETm9uZQAAAAAAAAAAAAAABExvbmcAAAAAAAAAAAAAAAVTaG9ydAAAAA==",
152
+ "AAAAAgAAANFXaGljaCBzaWRlIGN1cnJlbnRseSBwYXlzIGZ1bmRpbmcgKMKnOC4xOiB0aGUgc2lkZSB0aGUgYmxlbmRlZCBpbnRlZ3JhbApza2V3IHBvaW50cyBhdCDigJQgdW5kZXIgdGhlIEVNQSB0aGlzIGNhbiBiZSB0aGUgKmxpZ2h0ZXIqIHNpZGUgZm9yIGEKd2hpbGUgYWZ0ZXIgdGhlIGJvb2sgZmxpcHMpLiBgTm9uZWAgd2hlbiB0aGUgYmxlbmQgaXMgZXhhY3RseSB6ZXJvLgAAAAAAAAAAAAAJUGF5ZXJTaWRlAAAAAAAAAwAAAAAAAAAAAAAABE5vbmUAAAAAAAAAAAAAAARMb25nAAAAAAAAAAAAAAAFU2hvcnQAAAA=",
153
153
  "AAAAAgAAAAAAAAAAAAAACVJpc2tTdGF0ZQAAAAAAAAQAAAAAAAAAAAAAAAZOb3JtYWwAAAAAAAAAAAAAAAAAB1dhcm5pbmcAAAAAAAAAAAAAAAADQWRsAAAAAAAAAAAAAAAAB0hhcmRDYXAA",
154
+ "AAAAAQAAATJBIHBlbmRpbmcgbGltaXQvc3RvcCBlbnRyeSBvcmRlcjogdGhlIGZyb3plbiBgb3Blbl9wb3NpdGlvbmAgYXJndW1lbnRzCnBsdXMgYSB0cmlnZ2VyIGNvbmRpdGlvbiBhbmQgYW4gZXhwaXJ5LiBQbGFjaW5nIG9uZSBvbmx5IHdyaXRlcyB0aGlzCnJlY29yZCDigJQgbm8gZnVuZHMgbW92ZS4gQSBrZWVwZXIncyBgZXhlY3V0ZV9lbnRyeV9vcmRlcmAgcHVsbHMgdGhlCmNvbGxhdGVyYWwgdmlhIHRoZSBvd25lcidzIHRva2VuIGFsbG93YW5jZSBhbmQgb3BlbnMgdGhlIHBvc2l0aW9uCmV4YWN0bHkgYXMgYSBtYXJrZXQgb3BlbiB3b3VsZC4AAAAAAAAAAAAKRW50cnlPcmRlcgAAAAAADQAAAAAAAAAQYWNjZXB0YWJsZV9wcmljZQAAAAsAAAAAAAAACmNvbGxhdGVyYWwAAAAAAAsAAAAAAAAAEGV4ZWN1dGlvbl9idWRnZXQAAAALAAAAZ0xlZGdlciB0aW1lc3RhbXAgYWZ0ZXIgd2hpY2ggdGhlIG9yZGVyIGlzIGRlYWQgYW5kIHN3ZXB0IG9uIHRoZSBuZXh0CnRvdWNoICh1c2VyLWNvbmZpZ3VyYWJsZSBtYXggVFRMKS4AAAAACmV4cGlyZXNfYXQAAAAAAAYAAAAAAAAAAmlkAAAAAAAGAAAAAAAAAAdpc19sb25nAAAAAAEAAAAAAAAABm1hcmtldAAAAAAAEQAAAAAAAAAFb3duZXIAAAAAAAATAAAAAAAAAARzaXplAAAACwAAAAAAAAAJc3RvcF9sb3NzAAAAAAAACwAAAAAAAAALdGFrZV9wcm9maXQAAAAACwAAALJUcnVlIOKGkiBmaWxsIHdoZW4gcHJpY2Ug4omlIHRyaWdnZXIgKHN0b3AvYnJlYWtvdXQgZW50cnkpOyBmYWxzZSDihpIgZmlsbAp3aGVuIHByaWNlIOKJpCB0cmlnZ2VyIChsaW1pdC9kaXAgZW50cnkpLiBJbmZlcnJlZCBhdCBwbGFjZW1lbnQgZnJvbQp0aGUgdHJpZ2dlciB2cy4gdGhlIGN1cnJlbnQgcHJpY2UuAAAAAAANdHJpZ2dlcl9hYm92ZQAAAAAAAAEAAAA1VGhlIG9yYWNsZSBwcmljZSBhdCB3aGljaCB0aGUgb3JkZXIgYmVjb21lcyBmaWxsYWJsZS4AAAAAAAANdHJpZ2dlcl9wcmljZQAAAAAAAAs=",
154
155
  "AAAAAQAAAAAAAAAAAAAACk1hcmtldFNpZGUAAAAAAAUAAAAAAAAADWJhc2VfZXhwb3N1cmUAAAAAAAALAAAAAAAAAApyaXNrX3N0YXRlAAAAAAfQAAAACVJpc2tTdGF0ZQAAAAAAAAAAAAAKcmlza191bml0cwAAAAAACwAAAAAAAAASc2l6ZV9vcGVuX2ludGVyZXN0AAAAAAALAAAAAAAAABdzdG9yZWRfY29sbGF0ZXJhbF90b3RhbAAAAAAL",
155
156
  "AAAAAQAAAAAAAAAAAAAAClJvdW5kUHJpY2UAAAAAAAIAAAAAAAAABXByaWNlAAAAAAAACwAAAAAAAAAGc3ltYm9sAAAAAAAR",
156
157
  "AAAAAQAAAAAAAAAAAAAAC09yYWNsZVJvdW5kAAAAAAUAAAAAAAAAAmlkAAAAAAAGAAAAAAAAAAtwcmV2aW91c19pZAAAAAAGAAAAAAAAABJwcmV2aW91c190aW1lc3RhbXAAAAAAAAYAAAAAAAAABnByaWNlcwAAAAAD6gAAB9AAAAAKUm91bmRQcmljZQAAAAAAAAAAAAl0aW1lc3RhbXAAAAAAAAAG",
157
- "AAAAAQAAAAAAAAAAAAAADEdsb2JhbENvbmZpZwAAAAsAAAAAAAAAGGJhc2VfYm9ycm93X3JhdGVfYnBzX2RheQAAAAsAAAAAAAAAGWhhcmRfY2FwX2ZhY3Rvcl9saW1pdF9icHMAAAAAAAAEAAAAAAAAABRscF9yZXZlbnVlX3NoYXJlX2JwcwAAAAQAAAAAAAAAEm1heF9hY3RpdmVfbWFya2V0cwAAAAAABAAAAAAAAAAObWF4X2FkbF9yZXdhcmQAAAAAAAsAAAAAAAAAGm1heF9pbnNvbHZlbnRfdG91Y2hfcmV3YXJkAAAAAAALAAAAAAAAABttYXhfdmFyaWFibGVfYm9ycm93X2Jwc19kYXkAAAAACwAAAAAAAAAObWluX2NvbGxhdGVyYWwAAAAAAAsAAAAAAAAAFW1pbl9wb3NpdGlvbl9saWZldGltZQAAAAAAAAYAAAAAAAAAF3Jpc2tfY2FwYWNpdHlfbGltaXRfYnBzAAAAAAQAAAAAAAAAHXJpc2tfa2VlcGVyX3JldmVudWVfc2hhcmVfYnBzAAAAAAAABA==",
158
- "AAAAAQAAAAAAAAAAAAAADE1hcmtldENvbmZpZwAAAA8AAAAAAAAAEmFkbF9wbmxfZmFjdG9yX2JwcwAAAAAABAAAAAAAAAAOYWRsX3Jld2FyZF9icHMAAAAAAAQAAAAAAAAAF2hhcmRfY2FwX3BubF9mYWN0b3JfYnBzAAAAAAQAAAAAAAAAFmxpcXVpZGF0aW9uX3Jld2FyZF9icHMAAAAAAAQAAAAAAAAAFm1haW50ZW5hbmNlX21hcmdpbl9icHMAAAAAAAQAAAAAAAAAFm1hcmtldF9yaXNrX2ZhY3Rvcl9icHMAAAAAAAQAAAAAAAAAGG1heF9mdW5kaW5nX3JhdGVfYnBzX2RheQAAAAsAAAAAAAAAFm1heF9sb25nX2Jhc2VfZXhwb3N1cmUAAAAAAAsAAAAAAAAAG21heF9sb25nX3NpemVfb3Blbl9pbnRlcmVzdAAAAAALAAAAAAAAABdtYXhfc2hvcnRfYmFzZV9leHBvc3VyZQAAAAALAAAAAAAAABxtYXhfc2hvcnRfc2l6ZV9vcGVuX2ludGVyZXN0AAAACwAAAAAAAAARb3Blbl9mZWVfaGlnaF9icHMAAAAAAAAEAAAAAAAAABBvcGVuX2ZlZV9sb3dfYnBzAAAABAAAAAAAAAAXcmVjb3ZlcnlfcG5sX2ZhY3Rvcl9icHMAAAAABAAAAAAAAAAWd2FybmluZ19wbmxfZmFjdG9yX2JwcwAAAAAABA==",
158
+ "AAAAAQAAAAAAAAAAAAAADEdsb2JhbENvbmZpZwAAAA8AAAAAAAAAGGJhc2VfYm9ycm93X3JhdGVfYnBzX2RheQAAAAsAAACEwqc5LjIgYm9ycm93LWN1cnZlIGV4cG9uZW50LCBicHM6IDIwXzAwMCA9IHXCsiAobGVnYWN5IHF1YWRyYXRpYyksCjEwXzAwMCA9IGxpbmVhci4gQm91bmRlZCB0byDiiaQgMTAwXzAwMCAoZSDiiaQgMTApIGJ5IHZhbGlkYXRpb24uAAAAE2JvcnJvd19leHBvbmVudF9icHMAAAAABAAAAF/CpzguMSBoYWxmLWxpZmUgb2YgdGhlIGZ1bmRpbmcgc2tldyBFTUEsIHNlY29uZHMgKGdsb2JhbDogb25lIG1lbW9yeQpob3Jpem9uIGZvciBldmVyeSBtYXJrZXQpLgAAAAAZZnVuZGluZ19oYWxmX2xpZmVfc2Vjb25kcwAAAAAAAAYAAAAAAAAAGWhhcmRfY2FwX2ZhY3Rvcl9saW1pdF9icHMAAAAAAAAEAAAAAAAAABRscF9yZXZlbnVlX3NoYXJlX2JwcwAAAAQAAAAAAAAAEm1heF9hY3RpdmVfbWFya2V0cwAAAAAABAAAAAAAAAAObWF4X2FkbF9yZXdhcmQAAAAAAAsAAAAAAAAAGm1heF9pbnNvbHZlbnRfdG91Y2hfcmV3YXJkAAAAAAALAAAAAAAAABttYXhfdmFyaWFibGVfYm9ycm93X2Jwc19kYXkAAAAACwAAANDCpzExLjIgbWluaW11bSBib3Jyb3cgY2hhcmdlIHBlciBjYXBpdGFsaXphdGlvbjogYW4gaW5kZXggZGVsdGEgYXQKYElOREVYX1BSRUNJU0lPTmAgc2NhbGUgYXBwbGllZCB0byB0aGUgcG9zaXRpb24ncyByaXNrIHVuaXRzCigyZTExID0gMiBicHMgb2Ygbm90aW9uYWwgYXQgYSAxMCUgbWFya2V0IHJpc2sgZmFjdG9yKS4gWmVybwpkaXNhYmxlcyB0aGUgZmxvb3IuAAAAFm1pbl9ib3Jyb3dfaW5kZXhfZGVsdGEAAAAAAAsAAAAAAAAADm1pbl9jb2xsYXRlcmFsAAAAAAALAAAAAAAAABVtaW5fcG9zaXRpb25fbGlmZXRpbWUAAAAAAAAGAAABEsKnMTEuMSBzaGFyZSBvZiBhIGNsb3NpbmcgZmVlIHJvdXRlZCB0byB0aGUgdHJhZGVyJ3MgcmVmZXJyZXIsIGNhcnZlZApmcm9tIHRoZSBwcm90b2NvbCBzbGljZSAoa2VlcGVyIGFuZCBMUCBzaGFyZXMgYXJlIHVudG91Y2hlZCkuIGAwYApkaXNhYmxlcyByZWZlcnJhbCBhY2NydWFsIGdsb2JhbGx5IOKAlCBhIGtpbGwgc3dpdGNoLiBWYWxpZGF0ZWQgc28KYGxwICsga2VlcGVyICsgcmVmZXJyYWwg4omkIEJQU2AsIGtlZXBpbmcgdGhlIHByb3RvY29sIHJlbWFpbmRlciDiiaUgMC4AAAAAABZyZWZlcnJhbF9mZWVfc2hhcmVfYnBzAAAAAAAEAAAAAAAAABdyaXNrX2NhcGFjaXR5X2xpbWl0X2JwcwAAAAAEAAAAAAAAAB1yaXNrX2tlZXBlcl9yZXZlbnVlX3NoYXJlX2JwcwAAAAAAAAQ=",
159
+ "AAAAAQAAAAAAAAAAAAAADE1hcmtldENvbmZpZwAAABEAAAAAAAAAEmFkbF9wbmxfZmFjdG9yX2JwcwAAAAAABAAAAAAAAAAOYWRsX3Jld2FyZF9icHMAAAAAAAQAAAA0wqcxMS4xIGNsb3NpbmctZmVlIHRpZXIgd2hlbiB0aGUgY2xvc2Ugd29yc2VucyBza2V3LgAAABJjbG9zZV9mZWVfaGlnaF9icHMAAAAAAAQAAABCwqcxMS4xIGNsb3NpbmctZmVlIHRpZXIgd2hlbiB0aGUgY2xvc2UgaW1wcm92ZXMgb3IgcHJlc2VydmVzIHNrZXcuAAAAAAARY2xvc2VfZmVlX2xvd19icHMAAAAAAAAEAAAAAAAAABdoYXJkX2NhcF9wbmxfZmFjdG9yX2JwcwAAAAAEAAAAgk1hcmdpbiByZXF1aXJlZCB0byBvcGVuIG9yIGFkZCByaXNrICjCpzEyLjMpLiBEaXZpZGVzIG1heCBsZXZlcmFnZToKYSBwb3NpdGlvbiBtYXkgbm90IGJlIGNyZWF0ZWQgY2xvc2VyIHRvIGxpcXVpZGF0aW9uIHRoYW4gdGhpcy4AAAAAABJpbml0aWFsX21hcmdpbl9icHMAAAAAAAQAAACHwqc4LjEgd2VpZ2h0IG9mIHRoZSBpbnN0YW50YW5lb3VzIHNrZXcgaW4gdGhlIGZ1bmRpbmcgYmxlbmQsIGluIGJwczsKdGhlIHJlc3QgaXMgdGhlIGhhbGYtbGlmZSBFTUEuIGBCUFNgIHJlcHJvZHVjZXMgcHVyZSBpbnN0YW50IHNrZXcuAAAAABJpbnN0YW50X3dlaWdodF9icHMAAAAAAAQAAAAAAAAAFmxpcXVpZGF0aW9uX3Jld2FyZF9icHMAAAAAAAQAAAB8TWFyZ2luIGJlbG93IHdoaWNoIHRoZSBwb3NpdGlvbiBpcyBsaXF1aWRhdGFibGUgKMKnMTIuMykuIE11c3Qgbm90CmV4Y2VlZCBgaW5pdGlhbF9tYXJnaW5fYnBzYDsgdGhlIGdhcCBpcyB0aGUgZW50cnkgYnVmZmVyLgAAABZtYWludGVuYW5jZV9tYXJnaW5fYnBzAAAAAAAEAAAAAAAAABZtYXJrZXRfcmlza19mYWN0b3JfYnBzAAAAAAAEAAAAAAAAABhtYXhfZnVuZGluZ19yYXRlX2Jwc19kYXkAAAALAAAAAAAAABZtYXhfbG9uZ19iYXNlX2V4cG9zdXJlAAAAAAALAAAAAAAAABttYXhfbG9uZ19zaXplX29wZW5faW50ZXJlc3QAAAAACwAAAAAAAAAXbWF4X3Nob3J0X2Jhc2VfZXhwb3N1cmUAAAAACwAAAAAAAAAcbWF4X3Nob3J0X3NpemVfb3Blbl9pbnRlcmVzdAAAAAsAAAAAAAAAF3JlY292ZXJ5X3BubF9mYWN0b3JfYnBzAAAAAAQAAAAAAAAAFndhcm5pbmdfcG5sX2ZhY3Rvcl9icHMAAAAAAAQ=",
159
160
  "AAAAAQAAAC5HbG9iYWwgc2FmZXR5IHRocmVzaG9sZHMgZm9yIHByaWNlIHZhbGlkYXRpb24uAAAAAAAAAAAADE9yYWNsZUNvbmZpZwAAAAQAAADzSG93IGxvbmcgYSBjYWNoZWQgYWdncmVnYXRlZCBwcmljZSByZW1haW5zIHZhbGlkIGFmdGVyIHRoZSByb3V0ZXIKZmV0Y2ggKGluIHNlY29uZHMpLiBBIGNhY2hlIGhpdCBhbHNvIHJlcXVpcmVzIGV2ZXJ5IHNvdXJjZSB0aW1lc3RhbXAKdXNlZCBmb3IgdGhlIGNhY2hlZCBtZWRpYW4gdG8gcmVtYWluIHdpdGhpbiBgc3RhbGVuZXNzX3RocmVzaG9sZGAuCk11c3QgYmUgPiAwIGFuZCA8PSBgc3RhbGVuZXNzX3RocmVzaG9sZGAuAAAAAA5jYWNoZV9kdXJhdGlvbgAAAAAABgAAAIlNYXhpbXVtIGFsbG93ZWQgc3ByZWFkIGJldHdlZW4gb3JhY2xlIHNvdXJjZXMgaW4gYmFzaXMgcG9pbnRzCihlLmcuLCAxMDAgPSAxJSkuIEJvdW5kZWQgYXQgYGNyYXRlOjpjb25zdGFudHM6Ok1BWF9ERVZJQVRJT05fQlBTX0NFSUxJTkdgLgAAAAAAABFtYXhfZGV2aWF0aW9uX2JwcwAAAAAAAAsAAADhTWluaW11bSBudW1iZXIgb2Ygc291cmNlIHJlc3BvbnNlcyB0aGF0IG11c3QgYWdyZWUgd2l0aGluCmBtYXhfZGV2aWF0aW9uX2Jwc2AgZm9yIE9yYWNsZVJvdXRlciB0byByZXR1cm4gYSBwcmljZS4gRmxvb3JlZCBhdApgY3JhdGU6OmNvbnN0YW50czo6TUlOX1JFUVVJUkVEX1NPVVJDRVNfRkxPT1JgLCBjZWlsaW5nZWQgYXQKYGNyYXRlOjpjb25zdGFudHM6Ok1BWF9PUkFDTEVfU09VUkNFU2AuAAAAAAAAFG1pbl9yZXF1aXJlZF9zb3VyY2VzAAAABAAAAFlNYXhpbXVtIGFnZSBvZiBhbiBleHRlcm5hbCBTRVAtNDAgcHJpY2UgZmVlZCBiZWZvcmUgaXQgaXMgcmVqZWN0ZWQKYXMgc3RhbGUgKGluIHNlY29uZHMpLgAAAAAAABNzdGFsZW5lc3NfdGhyZXNob2xkAAAAAAY=",
160
161
  "AAAAAgAAAAAAAAAAAAAADUxwUmVxdWVzdEtpbmQAAAAAAAACAAAAAAAAAAAAAAAHRGVwb3NpdAAAAAAAAAAAAAAAAApXaXRoZHJhd2FsAAA=",
161
162
  "AAAAAQAAAEtEYXRhIHJlcXVpcmVkIGR1cmluZyBhIFdBU00gbWlncmF0aW9uLiBTaW5nbGUgZGVmaW5pdGlvbiBmb3IgYWxsIGNvbnRyYWN0cy4AAAAAAAAAAA1NaWdyYXRpb25EYXRhAAAAAAAAAQAAAAAAAAAHdmVyc2lvbgAAAAAE",
162
163
  "AAAAAQAAAbBQZW5kaW5nIFdBU00gdXBncmFkZSDigJQgc2V0IGJ5IGBwcm9wb3NlX3VwZ3JhZGVgLCBjb25zdW1lZCBieSBgdXBncmFkZWAKKGNsZWFyZWQgYXRvbWljYWxseSBvbiBhIHN1Y2Nlc3NmdWwgaW5zdGFsbCksIG9yIGNsZWFyZWQgYnkgYGNhbmNlbF91cGdyYWRlYC4KU2luZ2xlIHNoYXBlIGFjcm9zcyBldmVyeSBwcm90b2NvbCBjb250cmFjdC4gQ29udHJhY3RzIHN0b3JlIGl0IGF0CnRoZSBzaGFyZWQgYHBlbmRpbmdfdXBncmFkZWAgU3ltYm9sIGtleSBpbiB0aGVpciBvd24gaW5zdGFuY2Ugc3RvcmFnZSAoc2VlCmBjcmF0ZTo6dXBncmFkZTo6cGVuZGluZ191cGdyYWRlX2tleWApLiBgdXBncmFkZWAgcmVmdXNlcyB0byBpbnN0YWxsCnVubGVzcyBgcGVuZGluZy53YXNtX2hhc2hgIG1hdGNoZXMgdGhlIHN1cHBsaWVkIGhhc2ggYW5kIGBub3cgPj0gZXRhYC4AAAAAAAAADlBlbmRpbmdVcGdyYWRlAAAAAAACAAAAAAAAAANldGEAAAAABgAAAAAAAAAJd2FzbV9oYXNoAAAAAAAD7gAAACA=",
163
164
  "AAAAAgAAAAAAAAAAAAAAD0xwUmVxdWVzdFN0YXR1cwAAAAAEAAAAAAAAAAAAAAAHUGVuZGluZwAAAAAAAAAAAAAAAAdTZXR0bGVkAAAAAAAAAAAAAAAABkZhaWxlZAAAAAAAAAAAAAAAAAAHRXhwaXJlZAA=",
165
+ "AAAAAQAAAN1UaGUgY2FsbGVyLXN1cHBsaWVkIGZpZWxkcyBvZiBhIGBwbGFjZV9lbnRyeV9vcmRlcmAgcmVxdWVzdCwgYnVuZGxlZCBzbwp0aGUgZW50cnkgcG9pbnQgc3RheXMgd2l0aGluIFNvcm9iYW4ncyBwYXJhbWV0ZXIgbGltaXQuIGBvd25lcmAgYW5kCmBtYXJrZXRgIGFyZSBwYXNzZWQgYWxvbmdzaWRlOyBgaWRgIGFuZCBgdHJpZ2dlcl9hYm92ZWAgYXJlIGRlcml2ZWQgYXQKcGxhY2VtZW50LgAAAAAAAAAAAAAQRW50cnlPcmRlclBhcmFtcwAAAAkAAAAAAAAAEGFjY2VwdGFibGVfcHJpY2UAAAALAAAAAAAAAApjb2xsYXRlcmFsAAAAAAALAAAAAAAAABBleGVjdXRpb25fYnVkZ2V0AAAACwAAAAAAAAAKZXhwaXJlc19hdAAAAAAABgAAAAAAAAAHaXNfbG9uZwAAAAABAAAAAAAAAARzaXplAAAACwAAAAAAAAAJc3RvcF9sb3NzAAAAAAAACwAAAAAAAAALdGFrZV9wcm9maXQAAAAACwAAAAAAAAANdHJpZ2dlcl9wcmljZQAAAAAAAAs=",
164
166
  "AAAAAQAAAAAAAAAAAAAAEFNldHRsZW1lbnRSZXN1bHQAAAACAAAAPFNoYXJlcyBtaW50ZWQgZm9yIGEgZGVwb3NpdCBvciBhc3NldHMgcGFpZCBmb3IgYSB3aXRoZHJhd2FsLgAAAAZhbW91bnQAAAAAAAsAAAAAAAAABnN0YXR1cwAAAAAH0AAAABBTZXR0bGVtZW50U3RhdHVz",
165
167
  "AAAAAgAAAAAAAAAAAAAAEFNldHRsZW1lbnRTdGF0dXMAAAACAAAAAAAAAAAAAAAHU2V0dGxlZAAAAAAAAAAAAAAAAAZGYWlsZWQAAA==",
166
168
  "AAAAAQAAAAAAAAAAAAAAEkFjY291bnRpbmdTbmFwc2hvdAAAAAAACgAAAAAAAAAOY2FzaF9scF9lcXVpdHkAAAAAAAsAAAAAAAAADmNhc2hfc2hvcnRmYWxsAAAAAAALAAAAAAAAAA9mcmVlX2xwX2NhcGl0YWwAAAAACwAAAAAAAAAVbHBfYmxvY2tlZF9zaWRlX2NvdW50AAAAAAAABAAAAAAAAAANbm9uX2xwX2NsYWltcwAAAAAAAAsAAAAAAAAAE29wZW5fcG9zaXRpb25fY291bnQAAAAABgAAAAAAAAANcGh5c2ljYWxfY2FzaAAAAAAAAAsAAAAAAAAAFXJlcXVpcmVkX3Jpc2tfYmFja2luZwAAAAAAAAsAAAAAAAAAEHRvdGFsX3Jpc2tfdW5pdHMAAAALAAAAAAAAAAl2YXVsdF9uYXYAAAAAAAAL",
@@ -1227,7 +1227,7 @@ export interface Client {
1227
1227
  /**
1228
1228
  * Construct and simulate a mint transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1229
1229
  * Public faucet mint. Once protocol restrictions are activated, each
1230
- * address can mint at most 5,000 test USDC cumulatively.
1230
+ * address gets one mint of up to 5,000 test USDC.
1231
1231
  */
1232
1232
  mint: ({ to, amount }: {
1233
1233
  to: string;
@@ -1363,6 +1363,8 @@ export interface Client {
1363
1363
  * Construct and simulate a admin_mint transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1364
1364
  * Admin-only mint for deployment seeding and simulations. This bypasses
1365
1365
  * the public faucet cap and must not be exposed as a user faucet path.
1366
+ * The credit consumes the recipient's one-shot faucet claim: a wallet
1367
+ * funded directly must never also claim the public mint on top.
1366
1368
  */
1367
1369
  admin_mint: ({ admin, to, amount }: {
1368
1370
  admin: string;
@@ -1421,6 +1423,16 @@ export interface Client {
1421
1423
  * Construct and simulate a restrictions_active transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1422
1424
  */
1423
1425
  restrictions_active: (options?: MethodOptions) => Promise<AssembledTransaction<boolean>>;
1426
+ /**
1427
+ * Construct and simulate a set_public_mint_cap transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1428
+ * Admin-set faucet cap in whole USD, so weekly competition stakes can
1429
+ * change without redeploying the token. Already-claimed addresses are
1430
+ * unaffected (the claim is one-shot regardless of amount).
1431
+ */
1432
+ set_public_mint_cap: ({ admin, cap_usd }: {
1433
+ admin: string;
1434
+ cap_usd: i128;
1435
+ }, options?: MethodOptions) => Promise<AssembledTransaction<null>>;
1424
1436
  /**
1425
1437
  * Construct and simulate a is_protocol_contract transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1426
1438
  */
@@ -1468,6 +1480,7 @@ export declare class Client extends ContractClient {
1468
1480
  public_mint_cap: (json: string) => AssembledTransaction<bigint>;
1469
1481
  configure_protocol: (json: string) => AssembledTransaction<null>;
1470
1482
  restrictions_active: (json: string) => AssembledTransaction<boolean>;
1483
+ set_public_mint_cap: (json: string) => AssembledTransaction<null>;
1471
1484
  is_protocol_contract: (json: string) => AssembledTransaction<boolean>;
1472
1485
  set_protocol_contract: (json: string) => AssembledTransaction<null>;
1473
1486
  };
@@ -492,7 +492,7 @@ export class Client extends ContractClient {
492
492
  }
493
493
  constructor(options) {
494
494
  super(new ContractSpec(["AAAAAAAAAglEZXN0cm95cyBgYW1vdW50YCBvZiB0b2tlbnMgZnJvbSBgZnJvbWAuIFVwZGF0ZXMgdGhlIHRvdGFsCnN1cHBseSBhY2NvcmRpbmdseS4KCiMgQXJndW1lbnRzCgoqIGBlYCAtIEFjY2VzcyB0byB0aGUgU29yb2JhbiBlbnZpcm9ubWVudC4KKiBgZnJvbWAgLSBUaGUgYWNjb3VudCB3aG9zZSB0b2tlbnMgYXJlIGRlc3Ryb3llZC4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJ1cm4uCgojIEVycm9ycwoKKiBbYGNyYXRlOjpmdW5naWJsZTo6RnVuZ2libGVUb2tlbkVycm9yOjpJbnN1ZmZpY2llbnRCYWxhbmNlYF0gLSBXaGVuCmF0dGVtcHRpbmcgdG8gYnVybiBtb3JlIHRva2VucyB0aGFuIGBmcm9tYCBjdXJyZW50IGJhbGFuY2UuCiogW2BjcmF0ZTo6ZnVuZ2libGU6OkZ1bmdpYmxlVG9rZW5FcnJvcjo6TGVzc1RoYW5aZXJvYF0gLSBXaGVuIGBhbW91bnQgPAowYC4KCiMgRXZlbnRzCgoqIHRvcGljcyAtIGBbImJ1cm4iLCBmcm9tOiBBZGRyZXNzXWAKKiBkYXRhIC0gYFthbW91bnQ6IGkxMjhdYAAAAAAAAARidXJuAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=",
495
- "AAAAAAAAAHlQdWJsaWMgZmF1Y2V0IG1pbnQuIE9uY2UgcHJvdG9jb2wgcmVzdHJpY3Rpb25zIGFyZSBhY3RpdmF0ZWQsIGVhY2gKYWRkcmVzcyBjYW4gbWludCBhdCBtb3N0IDUsMDAwIHRlc3QgVVNEQyBjdW11bGF0aXZlbHkuAAAAAAAABG1pbnQAAAACAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==",
495
+ "AAAAAAAAAHJQdWJsaWMgZmF1Y2V0IG1pbnQuIE9uY2UgcHJvdG9jb2wgcmVzdHJpY3Rpb25zIGFyZSBhY3RpdmF0ZWQsIGVhY2gKYWRkcmVzcyBnZXRzIG9uZSBtaW50IG9mIHVwIHRvIDUsMDAwIHRlc3QgVVNEQy4AAAAAAARtaW50AAAAAgAAAAAAAAACdG8AAAAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=",
496
496
  "AAAAAAAAAFVSZXR1cm5zIHRoZSBuYW1lIGZvciB0aGlzIHRva2VuLgoKIyBBcmd1bWVudHMKCiogYGVgIC0gQWNjZXNzIHRvIFNvcm9iYW4gZW52aXJvbm1lbnQuAAAAAAAABG5hbWUAAAAAAAAAAQAAABA=",
497
497
  "AAAAAAAAAFdSZXR1cm5zIHRoZSBzeW1ib2wgZm9yIHRoaXMgdG9rZW4uCgojIEFyZ3VtZW50cwoKKiBgZWAgLSBBY2Nlc3MgdG8gU29yb2JhbiBlbnZpcm9ubWVudC4AAAAABnN5bWJvbAAAAAAAAAAAAAEAAAAQ",
498
498
  "AAAAAAAAAyZTZXRzIHRoZSBhbW91bnQgb2YgdG9rZW5zIGEgYHNwZW5kZXJgIGlzIGFsbG93ZWQgdG8gc3BlbmQgb24gYmVoYWxmIG9mCmFuIGBvd25lcmAuIE92ZXJyaWRlcyBhbnkgZXhpc3RpbmcgYWxsb3dhbmNlIHNldCBiZXR3ZWVuIGBzcGVuZGVyYCBhbmQKYG93bmVyYC4KCiMgQXJndW1lbnRzCgoqIGBlYCAtIEFjY2VzcyB0byBTb3JvYmFuIGVudmlyb25tZW50LgoqIGBvd25lcmAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSB0b2tlbnMuCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3MgYXV0aG9yaXplZCB0byBzcGVuZCB0aGUgdG9rZW5zLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgbWFkZSBhdmFpbGFibGUgdG8gYHNwZW5kZXJgLgoqIGBsaXZlX3VudGlsX2xlZGdlcmAgLSBUaGUgbGVkZ2VyIG51bWJlciBhdCB3aGljaCB0aGUgYWxsb3dhbmNlCmV4cGlyZXMuCgojIEVycm9ycwoKKiBbYEZ1bmdpYmxlVG9rZW5FcnJvcjo6SW52YWxpZExpdmVVbnRpbExlZGdlcmBdIC0gT2NjdXJzIHdoZW4KYXR0ZW1wdGluZyB0byBzZXQgYGxpdmVfdW50aWxfbGVkZ2VyYCB0aGF0IGlzIGxlc3MgdGhhbiB0aGUgY3VycmVudApsZWRnZXIgbnVtYmVyIGFuZCBncmVhdGVyIHRoYW4gYDBgLgoqIFtgRnVuZ2libGVUb2tlbkVycm9yOjpMZXNzVGhhblplcm9gXSAtIE9jY3VycyB3aGVuIGBhbW91bnQgPCAwYC4KCiMgRXZlbnRzCgoqIHRvcGljcyAtIGBbImFwcHJvdmUiLCBmcm9tOiBBZGRyZXNzLCBzcGVuZGVyOiBBZGRyZXNzXWAKKiBkYXRhIC0gYFthbW91bnQ6IGkxMjgsIGxpdmVfdW50aWxfbGVkZ2VyOiB1MzJdYAAAAAAAB2FwcHJvdmUAAAAABAAAAAAAAAAFb3duZXIAAAAAAAATAAAAAAAAAAdzcGVuZGVyAAAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAAAAAARbGl2ZV91bnRpbF9sZWRnZXIAAAAAAAAEAAAAAA==",
@@ -501,7 +501,7 @@ export class Client extends ContractClient {
501
501
  "AAAAAAAAAAAAAAAIdHJhbnNmZXIAAAADAAAAAAAAAARmcm9tAAAAEwAAAAAAAAACdG8AAAAAABQAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=",
502
502
  "AAAAAAAAAPBSZXR1cm5zIHRoZSBhbW91bnQgb2YgdG9rZW5zIGEgYHNwZW5kZXJgIGlzIGFsbG93ZWQgdG8gc3BlbmQgb24gYmVoYWxmCm9mIGFuIGBvd25lcmAuCgojIEFyZ3VtZW50cwoKKiBgZWAgLSBBY2Nlc3MgdG8gU29yb2JhbiBlbnZpcm9ubWVudC4KKiBgb3duZXJgIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgdG9rZW5zLgoqIGBzcGVuZGVyYCAtIFRoZSBhZGRyZXNzIGF1dGhvcml6ZWQgdG8gc3BlbmQgdGhlIHRva2Vucy4AAAAJYWxsb3dhbmNlAAAAAAAAAgAAAAAAAAAFb3duZXIAAAAAAAATAAAAAAAAAAdzcGVuZGVyAAAAABMAAAABAAAACw==",
503
503
  "AAAAAAAAAsBEZXN0cm95cyBgYW1vdW50YCBvZiB0b2tlbnMgZnJvbSBgZnJvbWAuIFVwZGF0ZXMgdGhlIHRvdGFsCnN1cHBseSBhY2NvcmRpbmdseS4KCiMgQXJndW1lbnRzCgoqIGBlYCAtIEFjY2VzcyB0byB0aGUgU29yb2JhbiBlbnZpcm9ubWVudC4KKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBhdXRob3JpemVkIHRvIGJ1cm4gdGhlIHRva2Vucy4KKiBgZnJvbWAgLSBUaGUgYWNjb3VudCB3aG9zZSB0b2tlbnMgYXJlIGRlc3Ryb3llZC4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJ1cm4uCgojIEVycm9ycwoKKiBbYGNyYXRlOjpmdW5naWJsZTo6RnVuZ2libGVUb2tlbkVycm9yOjpJbnN1ZmZpY2llbnRCYWxhbmNlYF0gLSBXaGVuCmF0dGVtcHRpbmcgdG8gYnVybiBtb3JlIHRva2VucyB0aGFuIGBmcm9tYCBjdXJyZW50IGJhbGFuY2UuCiogW2BjcmF0ZTo6ZnVuZ2libGU6OkZ1bmdpYmxlVG9rZW5FcnJvcjo6SW5zdWZmaWNpZW50QWxsb3dhbmNlYF0gLSBXaGVuCmF0dGVtcHRpbmcgdG8gYnVybiBtb3JlIHRva2VucyB0aGFuIGBmcm9tYCBhbGxvd2FuY2UuCiogW2BjcmF0ZTo6ZnVuZ2libGU6OkZ1bmdpYmxlVG9rZW5FcnJvcjo6TGVzc1RoYW5aZXJvYF0gLSBXaGVuIGBhbW91bnQgPAowYC4KCiMgRXZlbnRzCgoqIHRvcGljcyAtIGBbImJ1cm4iLCBmcm9tOiBBZGRyZXNzXWAKKiBkYXRhIC0gYFthbW91bnQ6IGkxMjhdYAAAAAlidXJuX2Zyb20AAAAAAAADAAAAAAAAAAdzcGVuZGVyAAAAABMAAAAAAAAABGZyb20AAAATAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAA",
504
- "AAAAAAAAAIpBZG1pbi1vbmx5IG1pbnQgZm9yIGRlcGxveW1lbnQgc2VlZGluZyBhbmQgc2ltdWxhdGlvbnMuIFRoaXMgYnlwYXNzZXMKdGhlIHB1YmxpYyBmYXVjZXQgY2FwIGFuZCBtdXN0IG5vdCBiZSBleHBvc2VkIGFzIGEgdXNlciBmYXVjZXQgcGF0aC4AAAAAAAphZG1pbl9taW50AAAAAAADAAAAAAAAAAVhZG1pbgAAAAAAABMAAAAAAAAAAnRvAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAA",
504
+ "AAAAAAAAAQxBZG1pbi1vbmx5IG1pbnQgZm9yIGRlcGxveW1lbnQgc2VlZGluZyBhbmQgc2ltdWxhdGlvbnMuIFRoaXMgYnlwYXNzZXMKdGhlIHB1YmxpYyBmYXVjZXQgY2FwIGFuZCBtdXN0IG5vdCBiZSBleHBvc2VkIGFzIGEgdXNlciBmYXVjZXQgcGF0aC4KVGhlIGNyZWRpdCBjb25zdW1lcyB0aGUgcmVjaXBpZW50J3Mgb25lLXNob3QgZmF1Y2V0IGNsYWltOiBhIHdhbGxldApmdW5kZWQgZGlyZWN0bHkgbXVzdCBuZXZlciBhbHNvIGNsYWltIHRoZSBwdWJsaWMgbWludCBvbiB0b3AuAAAACmFkbWluX21pbnQAAAAAAAMAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAACdG8AAAAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=",
505
505
  "AAAAAAAAACREZXBsb3kgYW5kIGNvbmZpZ3VyZSB0aGUgbW9jayB0b2tlbi4AAAAKaW5pdGlhbGl6ZQAAAAAABAAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAhkZWNpbWFscwAAAAQAAAAAAAAABG5hbWUAAAAQAAAAAAAAAAZzeW1ib2wAAAAAABAAAAAA",
506
506
  "AAAABAAAAAAAAAAAAAAADk1vY2tUb2tlbkVycm9yAAAAAAAEAAAAAAAAABJBbHJlYWR5SW5pdGlhbGl6ZWQAAAAAAAEAAAAAAAAADFVuYXV0aG9yaXplZAAAAAIAAAAAAAAAD01pbnRDYXBFeGNlZWRlZAAAAAADAAAAAAAAABJUcmFuc2ZlclJlc3RyaWN0ZWQAAAAAAAQ=",
507
507
  "AAAAAAAAAGtSZXR1cm5zIHRoZSB0b3RhbCBhbW91bnQgb2YgdG9rZW5zIGluIGNpcmN1bGF0aW9uLgoKIyBBcmd1bWVudHMKCiogYGVgIC0gQWNjZXNzIHRvIHRoZSBTb3JvYmFuIGVudmlyb25tZW50LgAAAAAMdG90YWxfc3VwcGx5AAAAAAAAAAEAAAAL",
@@ -510,6 +510,7 @@ export class Client extends ContractClient {
510
510
  "AAAAAAAAAAAAAAAPcHVibGljX21pbnRfY2FwAAAAAAAAAAABAAAACw==",
511
511
  "AAAAAAAAAHhBY3RpdmF0ZSBwcm90b2NvbC1vbmx5IHRyYW5zZmVyIG1vZGUgYW5kIG1hcmsgdGhlIHR3byBwZXJwcyBjb250cmFjdHMKdGhhdCBtYXkgcmVjZWl2ZSBmcm9tIHVzZXJzIGFuZCBwYXkgYmFjayB0byB1c2Vycy4AAAASY29uZmlndXJlX3Byb3RvY29sAAAAAAADAAAAAAAAAAVhZG1pbgAAAAAAABMAAAAAAAAABXZhdWx0AAAAAAAAEwAAAAAAAAAQcG9zaXRpb25fbWFuYWdlcgAAABMAAAAA",
512
512
  "AAAAAAAAAAAAAAATcmVzdHJpY3Rpb25zX2FjdGl2ZQAAAAAAAAAAAQAAAAE=",
513
+ "AAAAAAAAAMBBZG1pbi1zZXQgZmF1Y2V0IGNhcCBpbiB3aG9sZSBVU0QsIHNvIHdlZWtseSBjb21wZXRpdGlvbiBzdGFrZXMgY2FuCmNoYW5nZSB3aXRob3V0IHJlZGVwbG95aW5nIHRoZSB0b2tlbi4gQWxyZWFkeS1jbGFpbWVkIGFkZHJlc3NlcyBhcmUKdW5hZmZlY3RlZCAodGhlIGNsYWltIGlzIG9uZS1zaG90IHJlZ2FyZGxlc3Mgb2YgYW1vdW50KS4AAAATc2V0X3B1YmxpY19taW50X2NhcAAAAAACAAAAAAAAAAVhZG1pbgAAAAAAABMAAAAAAAAAB2NhcF91c2QAAAAACwAAAAA=",
513
514
  "AAAAAAAAAAAAAAAUaXNfcHJvdG9jb2xfY29udHJhY3QAAAABAAAAAAAAAAhjb250cmFjdAAAABMAAAABAAAAAQ==",
514
515
  "AAAAAAAAAAAAAAAVc2V0X3Byb3RvY29sX2NvbnRyYWN0AAAAAAAAAwAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAhjb250cmFjdAAAABMAAAAAAAAAB2FsbG93ZWQAAAAAAQAAAAA=",
515
516
  "AAAAAQAAAAAAAAAAAAAADk93bmVyVG9rZW5zS2V5AAAAAAACAAAAAAAAAAVpbmRleAAAAAAAAAQAAAAAAAAABW93bmVyAAAAAAAAEw==",
@@ -650,6 +651,7 @@ export class Client extends ContractClient {
650
651
  public_mint_cap: (this.txFromJSON),
651
652
  configure_protocol: (this.txFromJSON),
652
653
  restrictions_active: (this.txFromJSON),
654
+ set_public_mint_cap: (this.txFromJSON),
653
655
  is_protocol_contract: (this.txFromJSON),
654
656
  set_protocol_contract: (this.txFromJSON)
655
657
  };
@@ -57,7 +57,7 @@ export type StorageKey = {
57
57
  };
58
58
  /**
59
59
  * Authoritative per-market state: the side aggregates, the funding indices,
60
- * the current funding flows, and the market configuration.
60
+ * the funding EMA, and the market configuration.
61
61
  *
62
62
  * Soroban limits UDT field names to 30 characters, so where a doc glossary
63
63
  * term is longer the field drops the redundant qualifier and its doc
@@ -67,7 +67,7 @@ export type StorageKey = {
67
67
  export interface Market {
68
68
  config: MarketConfig;
69
69
  /**
70
- * `INDEX_PRECISION`-scaled bps/day payer rate for the current interval.
70
+ * `INDEX_PRECISION`-scaled bps/day payer rate as of the last refresh.
71
71
  */
72
72
  current_payer_rate: i128;
73
73
  current_payer_side: PayerSide;
@@ -79,12 +79,11 @@ export interface Market {
79
79
  */
80
80
  lp_backed_index_long: i128;
81
81
  lp_backed_index_short: i128;
82
+ lp_payer_remainder: i128;
82
83
  /**
83
- * LP-allocated remainder of the payer flow, cash/second at
84
- * `INDEX_PRECISION` (§8.1).
84
+ * Sub-stroop carry of the receiver-liability accrual (§8.3).
85
85
  */
86
- lp_flow_per_second: i128;
87
- lp_payer_remainder: i128;
86
+ pending_remainder: i128;
88
87
  /**
89
88
  * Cumulative payer fee per unit of dominant-side size whose collection
90
89
  * restores cash backing an already-accrued receiver claim (§8.2).
@@ -92,12 +91,6 @@ export interface Market {
92
91
  receiver_backed_index_long: i128;
93
92
  receiver_backed_index_short: i128;
94
93
  /**
95
- * Receiver-allocated share of the payer flow, cash/second at
96
- * `INDEX_PRECISION` (§8.1).
97
- */
98
- receiver_flow_per_second: i128;
99
- receiver_flow_remainder: i128;
100
- /**
101
94
  * Cumulative funding credit per unit of light-side size (§8.2).
102
95
  */
103
96
  receiver_index_long: i128;
@@ -105,6 +98,12 @@ export interface Market {
105
98
  receiver_index_short: i128;
106
99
  receiver_payer_remainder: i128;
107
100
  short: MarketSide;
101
+ /**
102
+ * §8.1 signed EMA of the instantaneous skew: a fraction of one at
103
+ * `INDEX_PRECISION` scale, positive when history says longs dominate.
104
+ * Decays toward the current skew with the global half-life.
105
+ */
106
+ skew_ema: i128;
108
107
  }
109
108
  export interface LpConfig {
110
109
  lp_request_delay: u64;
@@ -165,8 +164,9 @@ export interface LpRequest {
165
164
  status: LpRequestStatus;
166
165
  }
167
166
  /**
168
- * Which side currently pays funding (§8.1: the side with more base
169
- * exposure). `None` when the market is balanced or empty.
167
+ * Which side currently pays funding (§8.1: the side the blended integral
168
+ * skew points at — under the EMA this can be the *lighter* side for a
169
+ * while after the book flips). `None` when the blend is exactly zero.
170
170
  */
171
171
  export type PayerSide = {
172
172
  tag: "None";
@@ -191,6 +191,40 @@ export type RiskState = {
191
191
  tag: "HardCap";
192
192
  values: void;
193
193
  };
194
+ /**
195
+ * A pending limit/stop entry order: the frozen `open_position` arguments
196
+ * plus a trigger condition and an expiry. Placing one only writes this
197
+ * record — no funds move. A keeper's `execute_entry_order` pulls the
198
+ * collateral via the owner's token allowance and opens the position
199
+ * exactly as a market open would.
200
+ */
201
+ export interface EntryOrder {
202
+ acceptable_price: i128;
203
+ collateral: i128;
204
+ execution_budget: i128;
205
+ /**
206
+ * Ledger timestamp after which the order is dead and swept on the next
207
+ * touch (user-configurable max TTL).
208
+ */
209
+ expires_at: u64;
210
+ id: u64;
211
+ is_long: boolean;
212
+ market: string;
213
+ owner: string;
214
+ size: i128;
215
+ stop_loss: i128;
216
+ take_profit: i128;
217
+ /**
218
+ * True → fill when price ≥ trigger (stop/breakout entry); false → fill
219
+ * when price ≤ trigger (limit/dip entry). Inferred at placement from
220
+ * the trigger vs. the current price.
221
+ */
222
+ trigger_above: boolean;
223
+ /**
224
+ * The oracle price at which the order becomes fillable.
225
+ */
226
+ trigger_price: i128;
227
+ }
194
228
  export interface MarketSide {
195
229
  base_exposure: i128;
196
230
  risk_state: RiskState;
@@ -211,22 +245,68 @@ export interface OracleRound {
211
245
  }
212
246
  export interface GlobalConfig {
213
247
  base_borrow_rate_bps_day: i128;
248
+ /**
249
+ * §9.2 borrow-curve exponent, bps: 20_000 = u² (legacy quadratic),
250
+ * 10_000 = linear. Bounded to ≤ 100_000 (e ≤ 10) by validation.
251
+ */
252
+ borrow_exponent_bps: u32;
253
+ /**
254
+ * §8.1 half-life of the funding skew EMA, seconds (global: one memory
255
+ * horizon for every market).
256
+ */
257
+ funding_half_life_seconds: u64;
214
258
  hard_cap_factor_limit_bps: u32;
215
259
  lp_revenue_share_bps: u32;
216
260
  max_active_markets: u32;
217
261
  max_adl_reward: i128;
218
262
  max_insolvent_touch_reward: i128;
219
263
  max_variable_borrow_bps_day: i128;
264
+ /**
265
+ * §11.2 minimum borrow charge per capitalization: an index delta at
266
+ * `INDEX_PRECISION` scale applied to the position's risk units
267
+ * (2e11 = 2 bps of notional at a 10% market risk factor). Zero
268
+ * disables the floor.
269
+ */
270
+ min_borrow_index_delta: i128;
220
271
  min_collateral: i128;
221
272
  min_position_lifetime: u64;
273
+ /**
274
+ * §11.1 share of a closing fee routed to the trader's referrer, carved
275
+ * from the protocol slice (keeper and LP shares are untouched). `0`
276
+ * disables referral accrual globally — a kill switch. Validated so
277
+ * `lp + keeper + referral ≤ BPS`, keeping the protocol remainder ≥ 0.
278
+ */
279
+ referral_fee_share_bps: u32;
222
280
  risk_capacity_limit_bps: u32;
223
281
  risk_keeper_revenue_share_bps: u32;
224
282
  }
225
283
  export interface MarketConfig {
226
284
  adl_pnl_factor_bps: u32;
227
285
  adl_reward_bps: u32;
286
+ /**
287
+ * §11.1 closing-fee tier when the close worsens skew.
288
+ */
289
+ close_fee_high_bps: u32;
290
+ /**
291
+ * §11.1 closing-fee tier when the close improves or preserves skew.
292
+ */
293
+ close_fee_low_bps: u32;
228
294
  hard_cap_pnl_factor_bps: u32;
295
+ /**
296
+ * Margin required to open or add risk (§12.3). Divides max leverage:
297
+ * a position may not be created closer to liquidation than this.
298
+ */
299
+ initial_margin_bps: u32;
300
+ /**
301
+ * §8.1 weight of the instantaneous skew in the funding blend, in bps;
302
+ * the rest is the half-life EMA. `BPS` reproduces pure instant skew.
303
+ */
304
+ instant_weight_bps: u32;
229
305
  liquidation_reward_bps: u32;
306
+ /**
307
+ * Margin below which the position is liquidatable (§12.3). Must not
308
+ * exceed `initial_margin_bps`; the gap is the entry buffer.
309
+ */
230
310
  maintenance_margin_bps: u32;
231
311
  market_risk_factor_bps: u32;
232
312
  max_funding_rate_bps_day: i128;
@@ -234,8 +314,6 @@ export interface MarketConfig {
234
314
  max_long_size_open_interest: i128;
235
315
  max_short_base_exposure: i128;
236
316
  max_short_size_open_interest: i128;
237
- open_fee_high_bps: u32;
238
- open_fee_low_bps: u32;
239
317
  recovery_pnl_factor_bps: u32;
240
318
  warning_pnl_factor_bps: u32;
241
319
  }
@@ -306,6 +384,23 @@ export type LpRequestStatus = {
306
384
  tag: "Expired";
307
385
  values: void;
308
386
  };
387
+ /**
388
+ * The caller-supplied fields of a `place_entry_order` request, bundled so
389
+ * the entry point stays within Soroban's parameter limit. `owner` and
390
+ * `market` are passed alongside; `id` and `trigger_above` are derived at
391
+ * placement.
392
+ */
393
+ export interface EntryOrderParams {
394
+ acceptable_price: i128;
395
+ collateral: i128;
396
+ execution_budget: i128;
397
+ expires_at: u64;
398
+ is_long: boolean;
399
+ size: i128;
400
+ stop_loss: i128;
401
+ take_profit: i128;
402
+ trigger_price: i128;
403
+ }
309
404
  export interface SettlementResult {
310
405
  /**
311
406
  * Shares minted for a deposit or assets paid for a withdrawal.
@@ -101,22 +101,24 @@ export class Client extends ContractClient {
101
101
  "AAAAAAAAAAAAAAANc2V0X3B1Ymxpc2hlcgAAAAAAAAIAAAAAAAAABmNhbGxlcgAAAAAAEwAAAAAAAAANbmV3X3B1Ymxpc2hlcgAAAAAAABMAAAAA",
102
102
  "AAAAAAAAAAAAAAAOY2FuY2VsX3VwZ3JhZGUAAAAAAAEAAAAAAAAABmNhbGxlcgAAAAAAEwAAAAA=",
103
103
  "AAAAAAAAAAAAAAAPcHJvcG9zZV91cGdyYWRlAAAAAAIAAAAAAAAABmNhbGxlcgAAAAAAEwAAAAAAAAAJd2FzbV9oYXNoAAAAAAAD7gAAACAAAAAA",
104
- "AAAAAQAAAY9BdXRob3JpdGF0aXZlIHBlci1tYXJrZXQgc3RhdGU6IHRoZSBzaWRlIGFnZ3JlZ2F0ZXMsIHRoZSBmdW5kaW5nIGluZGljZXMsCnRoZSBjdXJyZW50IGZ1bmRpbmcgZmxvd3MsIGFuZCB0aGUgbWFya2V0IGNvbmZpZ3VyYXRpb24uCgpTb3JvYmFuIGxpbWl0cyBVRFQgZmllbGQgbmFtZXMgdG8gMzAgY2hhcmFjdGVycywgc28gd2hlcmUgYSBkb2MgZ2xvc3NhcnkKdGVybSBpcyBsb25nZXIgdGhlIGZpZWxkIGRyb3BzIHRoZSByZWR1bmRhbnQgcXVhbGlmaWVyIGFuZCBpdHMgZG9jCmNvbW1lbnQgY2FycmllcyB0aGUgZnVsbCB0ZXJtIChlLmcuIGByZWNlaXZlcl9iYWNrZWRfaW5kZXhfbG9uZ2AgaXMgdGhlCmRvYydzIGByZWNlaXZlcl9iYWNrZWRfcGF5ZXJfaW5kZXhgIGZvciB0aGUgbG9uZyBzaWRlKS4AAAAAAAAAAAZNYXJrZXQAAAAAABIAAAAAAAAABmNvbmZpZwAAAAAH0AAAAAxNYXJrZXRDb25maWcAAABFYElOREVYX1BSRUNJU0lPTmAtc2NhbGVkIGJwcy9kYXkgcGF5ZXIgcmF0ZSBmb3IgdGhlIGN1cnJlbnQgaW50ZXJ2YWwuAAAAAAAAEmN1cnJlbnRfcGF5ZXJfcmF0ZQAAAAAACwAAAAAAAAASY3VycmVudF9wYXllcl9zaWRlAAAAAAfQAAAACVBheWVyU2lkZQAAAAAAAAAAAAAXbGFzdF9mdW5kaW5nX2NoZWNrcG9pbnQAAAAABgAAAAAAAAAEbG9uZwAAB9AAAAAKTWFya2V0U2lkZQAAAAAAXUN1bXVsYXRpdmUgcGF5ZXIgZmVlIHBlciB1bml0IG9mIGRvbWluYW50LXNpZGUgc2l6ZSB0aGF0IGlzIExQCnJldmVudWUgb24gY29sbGVjdGlvbiAowqc4LjIpLgAAAAAAABRscF9iYWNrZWRfaW5kZXhfbG9uZwAAAAsAAAAAAAAAFWxwX2JhY2tlZF9pbmRleF9zaG9ydAAAAAAAAAsAAABTTFAtYWxsb2NhdGVkIHJlbWFpbmRlciBvZiB0aGUgcGF5ZXIgZmxvdywgY2FzaC9zZWNvbmQgYXQKYElOREVYX1BSRUNJU0lPTmAgKMKnOC4xKS4AAAAAEmxwX2Zsb3dfcGVyX3NlY29uZAAAAAAACwAAAAAAAAASbHBfcGF5ZXJfcmVtYWluZGVyAAAAAAALAAAAhUN1bXVsYXRpdmUgcGF5ZXIgZmVlIHBlciB1bml0IG9mIGRvbWluYW50LXNpZGUgc2l6ZSB3aG9zZSBjb2xsZWN0aW9uCnJlc3RvcmVzIGNhc2ggYmFja2luZyBhbiBhbHJlYWR5LWFjY3J1ZWQgcmVjZWl2ZXIgY2xhaW0gKMKnOC4yKS4AAAAAAAAacmVjZWl2ZXJfYmFja2VkX2luZGV4X2xvbmcAAAAAAAsAAAAAAAAAG3JlY2VpdmVyX2JhY2tlZF9pbmRleF9zaG9ydAAAAAALAAAAVVJlY2VpdmVyLWFsbG9jYXRlZCBzaGFyZSBvZiB0aGUgcGF5ZXIgZmxvdywgY2FzaC9zZWNvbmQgYXQKYElOREVYX1BSRUNJU0lPTmAgKMKnOC4xKS4AAAAAAAAYcmVjZWl2ZXJfZmxvd19wZXJfc2Vjb25kAAAACwAAAAAAAAAXcmVjZWl2ZXJfZmxvd19yZW1haW5kZXIAAAAACwAAAD5DdW11bGF0aXZlIGZ1bmRpbmcgY3JlZGl0IHBlciB1bml0IG9mIGxpZ2h0LXNpZGUgc2l6ZSAowqc4LjIpLgAAAAAAE3JlY2VpdmVyX2luZGV4X2xvbmcAAAAACwAAAAAAAAAYcmVjZWl2ZXJfaW5kZXhfcmVtYWluZGVyAAAACwAAAAAAAAAUcmVjZWl2ZXJfaW5kZXhfc2hvcnQAAAALAAAAAAAAABhyZWNlaXZlcl9wYXllcl9yZW1haW5kZXIAAAALAAAAAAAAAAVzaG9ydAAAAAAAB9AAAAAKTWFya2V0U2lkZQAA",
104
+ "AAAAAQAAAYVBdXRob3JpdGF0aXZlIHBlci1tYXJrZXQgc3RhdGU6IHRoZSBzaWRlIGFnZ3JlZ2F0ZXMsIHRoZSBmdW5kaW5nIGluZGljZXMsCnRoZSBmdW5kaW5nIEVNQSwgYW5kIHRoZSBtYXJrZXQgY29uZmlndXJhdGlvbi4KClNvcm9iYW4gbGltaXRzIFVEVCBmaWVsZCBuYW1lcyB0byAzMCBjaGFyYWN0ZXJzLCBzbyB3aGVyZSBhIGRvYyBnbG9zc2FyeQp0ZXJtIGlzIGxvbmdlciB0aGUgZmllbGQgZHJvcHMgdGhlIHJlZHVuZGFudCBxdWFsaWZpZXIgYW5kIGl0cyBkb2MKY29tbWVudCBjYXJyaWVzIHRoZSBmdWxsIHRlcm0gKGUuZy4gYHJlY2VpdmVyX2JhY2tlZF9pbmRleF9sb25nYCBpcyB0aGUKZG9jJ3MgYHJlY2VpdmVyX2JhY2tlZF9wYXllcl9pbmRleGAgZm9yIHRoZSBsb25nIHNpZGUpLgAAAAAAAAAAAAAGTWFya2V0AAAAAAARAAAAAAAAAAZjb25maWcAAAAAB9AAAAAMTWFya2V0Q29uZmlnAAAAQ2BJTkRFWF9QUkVDSVNJT05gLXNjYWxlZCBicHMvZGF5IHBheWVyIHJhdGUgYXMgb2YgdGhlIGxhc3QgcmVmcmVzaC4AAAAAEmN1cnJlbnRfcGF5ZXJfcmF0ZQAAAAAACwAAAAAAAAASY3VycmVudF9wYXllcl9zaWRlAAAAAAfQAAAACVBheWVyU2lkZQAAAAAAAAAAAAAXbGFzdF9mdW5kaW5nX2NoZWNrcG9pbnQAAAAABgAAAAAAAAAEbG9uZwAAB9AAAAAKTWFya2V0U2lkZQAAAAAAXUN1bXVsYXRpdmUgcGF5ZXIgZmVlIHBlciB1bml0IG9mIGRvbWluYW50LXNpZGUgc2l6ZSB0aGF0IGlzIExQCnJldmVudWUgb24gY29sbGVjdGlvbiAowqc4LjIpLgAAAAAAABRscF9iYWNrZWRfaW5kZXhfbG9uZwAAAAsAAAAAAAAAFWxwX2JhY2tlZF9pbmRleF9zaG9ydAAAAAAAAAsAAAAAAAAAEmxwX3BheWVyX3JlbWFpbmRlcgAAAAAACwAAADtTdWItc3Ryb29wIGNhcnJ5IG9mIHRoZSByZWNlaXZlci1saWFiaWxpdHkgYWNjcnVhbCAowqc4LjMpLgAAAAARcGVuZGluZ19yZW1haW5kZXIAAAAAAAALAAAAhUN1bXVsYXRpdmUgcGF5ZXIgZmVlIHBlciB1bml0IG9mIGRvbWluYW50LXNpZGUgc2l6ZSB3aG9zZSBjb2xsZWN0aW9uCnJlc3RvcmVzIGNhc2ggYmFja2luZyBhbiBhbHJlYWR5LWFjY3J1ZWQgcmVjZWl2ZXIgY2xhaW0gKMKnOC4yKS4AAAAAAAAacmVjZWl2ZXJfYmFja2VkX2luZGV4X2xvbmcAAAAAAAsAAAAAAAAAG3JlY2VpdmVyX2JhY2tlZF9pbmRleF9zaG9ydAAAAAALAAAAPkN1bXVsYXRpdmUgZnVuZGluZyBjcmVkaXQgcGVyIHVuaXQgb2YgbGlnaHQtc2lkZSBzaXplICjCpzguMikuAAAAAAATcmVjZWl2ZXJfaW5kZXhfbG9uZwAAAAALAAAAAAAAABhyZWNlaXZlcl9pbmRleF9yZW1haW5kZXIAAAALAAAAAAAAABRyZWNlaXZlcl9pbmRleF9zaG9ydAAAAAsAAAAAAAAAGHJlY2VpdmVyX3BheWVyX3JlbWFpbmRlcgAAAAsAAAAAAAAABXNob3J0AAAAAAAH0AAAAApNYXJrZXRTaWRlAAAAAAC+wqc4LjEgc2lnbmVkIEVNQSBvZiB0aGUgaW5zdGFudGFuZW91cyBza2V3OiBhIGZyYWN0aW9uIG9mIG9uZSBhdApgSU5ERVhfUFJFQ0lTSU9OYCBzY2FsZSwgcG9zaXRpdmUgd2hlbiBoaXN0b3J5IHNheXMgbG9uZ3MgZG9taW5hdGUuCkRlY2F5cyB0b3dhcmQgdGhlIGN1cnJlbnQgc2tldyB3aXRoIHRoZSBnbG9iYWwgaGFsZi1saWZlLgAAAAAACHNrZXdfZW1hAAAACw==",
105
105
  "AAAAAQAAAAAAAAAAAAAACExwQ29uZmlnAAAAAwAAAAAAAAAQbHBfcmVxdWVzdF9kZWxheQAAAAYAAAAAAAAAHG1heF93aXRoZHJhd191dGlsaXphdGlvbl9icHMAAAAEAAAAAAAAABptaW5fZGVwb3NpdF9uYXZfZmFjdG9yX2JwcwAAAAAABA==",
106
106
  "AAAAAQAAADVSZXByZXNlbnRzIGEgc2luZ2xlIHRyYWRlcidzIG9wZW4gbGV2ZXJhZ2VkIHBvc2l0aW9uLgAAAAAAAAAAAAAIUG9zaXRpb24AAAAQAAAAIUFzc2V0IHVuaXRzIGF0IGBQUklDRV9QUkVDSVNJT05gLgAAAAAAAA1iYXNlX2V4cG9zdXJlAAAAAAAACwAAAAAAAAALYm9ycm93X2RlYnQAAAAACwAAAClDYXNoIG93bmVkIGJ5IGFuIG9wdGlvbmFsLW9yZGVyIGV4ZWN1dG9yLgAAAAAAABBleGVjdXRpb25fYnVkZ2V0AAAACwAAAAAAAAAYZnVuZGluZ19wYWlkX3RvX2xwc19kZWJ0AAAACwAAAAAAAAAeZnVuZGluZ19wYWlkX3RvX3JlY2VpdmVyc19kZWJ0AAAAAAALAAAAAAAAABVmdW5kaW5nX3JlY2VpdmVkX2RlYnQAAAAAAAALAAAAAAAAAAJpZAAAAAAABgAAAAAAAAAHaXNfbG9uZwAAAAABAAAAAAAAABNsYXN0X2luY3JlYXNlZF90aW1lAAAAAAYAAAAAAAAABm1hcmtldAAAAAAAEQAAAAAAAAAFb3duZXIAAAAAAAATAAAALkZpeGVkIGdyb3NzIGNhcGFjaXR5IGFzc2lnbmVkIHdoZW4gcmlzayBvcGVucy4AAAAAAApyaXNrX3VuaXRzAAAAAAALAAAAIlVTRCBub3Rpb25hbCBhdCBgUFJJQ0VfUFJFQ0lTSU9OYC4AAAAAAARzaXplAAAACwAAADtUcmlnZ2VyIHByaWNlIGZvciB0aGUgb3B0aW9uYWwgc3RvcC1sb3NzIG9yZGVyOyBgMGAgPSBub25lLgAAAAAJc3RvcF9sb3NzAAAAAAAACwAAAMpUcmFkZXItb3duZWQgY29sbGF0ZXJhbCByZWNvcmRlZCBpbiBjb250cmFjdCBzdGF0ZSAodGhlIGRvYydzCiJzdG9yZWQgY29sbGF0ZXJhbCIpLiBFZmZlY3RpdmUgY29sbGF0ZXJhbCDigJQgc3RvcmVkIGNvbGxhdGVyYWwgYWZ0ZXIKcGVuZGluZyBmZWVzIGFuZCBmdW5kaW5nIGNyZWRpdHMg4oCUIGlzIGFsd2F5cyBkZXJpdmVkLCBuZXZlciBzdG9yZWQuAAAAAAARc3RvcmVkX2NvbGxhdGVyYWwAAAAAAAALAAAAPVRyaWdnZXIgcHJpY2UgZm9yIHRoZSBvcHRpb25hbCB0YWtlLXByb2ZpdCBvcmRlcjsgYDBgID0gbm9uZS4AAAAAAAALdGFrZV9wcm9maXQAAAAACw==",
107
107
  "AAAAAQAAAAAAAAAAAAAACUxwUmVxdWVzdAAAAAAAAAcAAAAAAAAABmFtb3VudAAAAAAACwAAAAAAAAANZXhlY3V0ZV9hZnRlcgAAAAAAAAYAAAAAAAAAAmlkAAAAAAAGAAAAAAAAAARraW5kAAAH0AAAAA1McFJlcXVlc3RLaW5kAAAAAAAAAAAAAAVvd25lcgAAAAAAABMAAAAAAAAADHJlcXVlc3RfdGltZQAAAAYAAAAAAAAABnN0YXR1cwAAAAAH0AAAAA9McFJlcXVlc3RTdGF0dXMA",
108
- "AAAAAgAAAHlXaGljaCBzaWRlIGN1cnJlbnRseSBwYXlzIGZ1bmRpbmcgKMKnOC4xOiB0aGUgc2lkZSB3aXRoIG1vcmUgYmFzZQpleHBvc3VyZSkuIGBOb25lYCB3aGVuIHRoZSBtYXJrZXQgaXMgYmFsYW5jZWQgb3IgZW1wdHkuAAAAAAAAAAAAAAlQYXllclNpZGUAAAAAAAADAAAAAAAAAAAAAAAETm9uZQAAAAAAAAAAAAAABExvbmcAAAAAAAAAAAAAAAVTaG9ydAAAAA==",
108
+ "AAAAAgAAANFXaGljaCBzaWRlIGN1cnJlbnRseSBwYXlzIGZ1bmRpbmcgKMKnOC4xOiB0aGUgc2lkZSB0aGUgYmxlbmRlZCBpbnRlZ3JhbApza2V3IHBvaW50cyBhdCDigJQgdW5kZXIgdGhlIEVNQSB0aGlzIGNhbiBiZSB0aGUgKmxpZ2h0ZXIqIHNpZGUgZm9yIGEKd2hpbGUgYWZ0ZXIgdGhlIGJvb2sgZmxpcHMpLiBgTm9uZWAgd2hlbiB0aGUgYmxlbmQgaXMgZXhhY3RseSB6ZXJvLgAAAAAAAAAAAAAJUGF5ZXJTaWRlAAAAAAAAAwAAAAAAAAAAAAAABE5vbmUAAAAAAAAAAAAAAARMb25nAAAAAAAAAAAAAAAFU2hvcnQAAAA=",
109
109
  "AAAAAgAAAAAAAAAAAAAACVJpc2tTdGF0ZQAAAAAAAAQAAAAAAAAAAAAAAAZOb3JtYWwAAAAAAAAAAAAAAAAAB1dhcm5pbmcAAAAAAAAAAAAAAAADQWRsAAAAAAAAAAAAAAAAB0hhcmRDYXAA",
110
+ "AAAAAQAAATJBIHBlbmRpbmcgbGltaXQvc3RvcCBlbnRyeSBvcmRlcjogdGhlIGZyb3plbiBgb3Blbl9wb3NpdGlvbmAgYXJndW1lbnRzCnBsdXMgYSB0cmlnZ2VyIGNvbmRpdGlvbiBhbmQgYW4gZXhwaXJ5LiBQbGFjaW5nIG9uZSBvbmx5IHdyaXRlcyB0aGlzCnJlY29yZCDigJQgbm8gZnVuZHMgbW92ZS4gQSBrZWVwZXIncyBgZXhlY3V0ZV9lbnRyeV9vcmRlcmAgcHVsbHMgdGhlCmNvbGxhdGVyYWwgdmlhIHRoZSBvd25lcidzIHRva2VuIGFsbG93YW5jZSBhbmQgb3BlbnMgdGhlIHBvc2l0aW9uCmV4YWN0bHkgYXMgYSBtYXJrZXQgb3BlbiB3b3VsZC4AAAAAAAAAAAAKRW50cnlPcmRlcgAAAAAADQAAAAAAAAAQYWNjZXB0YWJsZV9wcmljZQAAAAsAAAAAAAAACmNvbGxhdGVyYWwAAAAAAAsAAAAAAAAAEGV4ZWN1dGlvbl9idWRnZXQAAAALAAAAZ0xlZGdlciB0aW1lc3RhbXAgYWZ0ZXIgd2hpY2ggdGhlIG9yZGVyIGlzIGRlYWQgYW5kIHN3ZXB0IG9uIHRoZSBuZXh0CnRvdWNoICh1c2VyLWNvbmZpZ3VyYWJsZSBtYXggVFRMKS4AAAAACmV4cGlyZXNfYXQAAAAAAAYAAAAAAAAAAmlkAAAAAAAGAAAAAAAAAAdpc19sb25nAAAAAAEAAAAAAAAABm1hcmtldAAAAAAAEQAAAAAAAAAFb3duZXIAAAAAAAATAAAAAAAAAARzaXplAAAACwAAAAAAAAAJc3RvcF9sb3NzAAAAAAAACwAAAAAAAAALdGFrZV9wcm9maXQAAAAACwAAALJUcnVlIOKGkiBmaWxsIHdoZW4gcHJpY2Ug4omlIHRyaWdnZXIgKHN0b3AvYnJlYWtvdXQgZW50cnkpOyBmYWxzZSDihpIgZmlsbAp3aGVuIHByaWNlIOKJpCB0cmlnZ2VyIChsaW1pdC9kaXAgZW50cnkpLiBJbmZlcnJlZCBhdCBwbGFjZW1lbnQgZnJvbQp0aGUgdHJpZ2dlciB2cy4gdGhlIGN1cnJlbnQgcHJpY2UuAAAAAAANdHJpZ2dlcl9hYm92ZQAAAAAAAAEAAAA1VGhlIG9yYWNsZSBwcmljZSBhdCB3aGljaCB0aGUgb3JkZXIgYmVjb21lcyBmaWxsYWJsZS4AAAAAAAANdHJpZ2dlcl9wcmljZQAAAAAAAAs=",
110
111
  "AAAAAQAAAAAAAAAAAAAACk1hcmtldFNpZGUAAAAAAAUAAAAAAAAADWJhc2VfZXhwb3N1cmUAAAAAAAALAAAAAAAAAApyaXNrX3N0YXRlAAAAAAfQAAAACVJpc2tTdGF0ZQAAAAAAAAAAAAAKcmlza191bml0cwAAAAAACwAAAAAAAAASc2l6ZV9vcGVuX2ludGVyZXN0AAAAAAALAAAAAAAAABdzdG9yZWRfY29sbGF0ZXJhbF90b3RhbAAAAAAL",
111
112
  "AAAAAQAAAAAAAAAAAAAAClJvdW5kUHJpY2UAAAAAAAIAAAAAAAAABXByaWNlAAAAAAAACwAAAAAAAAAGc3ltYm9sAAAAAAAR",
112
113
  "AAAAAQAAAAAAAAAAAAAAC09yYWNsZVJvdW5kAAAAAAUAAAAAAAAAAmlkAAAAAAAGAAAAAAAAAAtwcmV2aW91c19pZAAAAAAGAAAAAAAAABJwcmV2aW91c190aW1lc3RhbXAAAAAAAAYAAAAAAAAABnByaWNlcwAAAAAD6gAAB9AAAAAKUm91bmRQcmljZQAAAAAAAAAAAAl0aW1lc3RhbXAAAAAAAAAG",
113
- "AAAAAQAAAAAAAAAAAAAADEdsb2JhbENvbmZpZwAAAAsAAAAAAAAAGGJhc2VfYm9ycm93X3JhdGVfYnBzX2RheQAAAAsAAAAAAAAAGWhhcmRfY2FwX2ZhY3Rvcl9saW1pdF9icHMAAAAAAAAEAAAAAAAAABRscF9yZXZlbnVlX3NoYXJlX2JwcwAAAAQAAAAAAAAAEm1heF9hY3RpdmVfbWFya2V0cwAAAAAABAAAAAAAAAAObWF4X2FkbF9yZXdhcmQAAAAAAAsAAAAAAAAAGm1heF9pbnNvbHZlbnRfdG91Y2hfcmV3YXJkAAAAAAALAAAAAAAAABttYXhfdmFyaWFibGVfYm9ycm93X2Jwc19kYXkAAAAACwAAAAAAAAAObWluX2NvbGxhdGVyYWwAAAAAAAsAAAAAAAAAFW1pbl9wb3NpdGlvbl9saWZldGltZQAAAAAAAAYAAAAAAAAAF3Jpc2tfY2FwYWNpdHlfbGltaXRfYnBzAAAAAAQAAAAAAAAAHXJpc2tfa2VlcGVyX3JldmVudWVfc2hhcmVfYnBzAAAAAAAABA==",
114
- "AAAAAQAAAAAAAAAAAAAADE1hcmtldENvbmZpZwAAAA8AAAAAAAAAEmFkbF9wbmxfZmFjdG9yX2JwcwAAAAAABAAAAAAAAAAOYWRsX3Jld2FyZF9icHMAAAAAAAQAAAAAAAAAF2hhcmRfY2FwX3BubF9mYWN0b3JfYnBzAAAAAAQAAAAAAAAAFmxpcXVpZGF0aW9uX3Jld2FyZF9icHMAAAAAAAQAAAAAAAAAFm1haW50ZW5hbmNlX21hcmdpbl9icHMAAAAAAAQAAAAAAAAAFm1hcmtldF9yaXNrX2ZhY3Rvcl9icHMAAAAAAAQAAAAAAAAAGG1heF9mdW5kaW5nX3JhdGVfYnBzX2RheQAAAAsAAAAAAAAAFm1heF9sb25nX2Jhc2VfZXhwb3N1cmUAAAAAAAsAAAAAAAAAG21heF9sb25nX3NpemVfb3Blbl9pbnRlcmVzdAAAAAALAAAAAAAAABdtYXhfc2hvcnRfYmFzZV9leHBvc3VyZQAAAAALAAAAAAAAABxtYXhfc2hvcnRfc2l6ZV9vcGVuX2ludGVyZXN0AAAACwAAAAAAAAARb3Blbl9mZWVfaGlnaF9icHMAAAAAAAAEAAAAAAAAABBvcGVuX2ZlZV9sb3dfYnBzAAAABAAAAAAAAAAXcmVjb3ZlcnlfcG5sX2ZhY3Rvcl9icHMAAAAABAAAAAAAAAAWd2FybmluZ19wbmxfZmFjdG9yX2JwcwAAAAAABA==",
114
+ "AAAAAQAAAAAAAAAAAAAADEdsb2JhbENvbmZpZwAAAA8AAAAAAAAAGGJhc2VfYm9ycm93X3JhdGVfYnBzX2RheQAAAAsAAACEwqc5LjIgYm9ycm93LWN1cnZlIGV4cG9uZW50LCBicHM6IDIwXzAwMCA9IHXCsiAobGVnYWN5IHF1YWRyYXRpYyksCjEwXzAwMCA9IGxpbmVhci4gQm91bmRlZCB0byDiiaQgMTAwXzAwMCAoZSDiiaQgMTApIGJ5IHZhbGlkYXRpb24uAAAAE2JvcnJvd19leHBvbmVudF9icHMAAAAABAAAAF/CpzguMSBoYWxmLWxpZmUgb2YgdGhlIGZ1bmRpbmcgc2tldyBFTUEsIHNlY29uZHMgKGdsb2JhbDogb25lIG1lbW9yeQpob3Jpem9uIGZvciBldmVyeSBtYXJrZXQpLgAAAAAZZnVuZGluZ19oYWxmX2xpZmVfc2Vjb25kcwAAAAAAAAYAAAAAAAAAGWhhcmRfY2FwX2ZhY3Rvcl9saW1pdF9icHMAAAAAAAAEAAAAAAAAABRscF9yZXZlbnVlX3NoYXJlX2JwcwAAAAQAAAAAAAAAEm1heF9hY3RpdmVfbWFya2V0cwAAAAAABAAAAAAAAAAObWF4X2FkbF9yZXdhcmQAAAAAAAsAAAAAAAAAGm1heF9pbnNvbHZlbnRfdG91Y2hfcmV3YXJkAAAAAAALAAAAAAAAABttYXhfdmFyaWFibGVfYm9ycm93X2Jwc19kYXkAAAAACwAAANDCpzExLjIgbWluaW11bSBib3Jyb3cgY2hhcmdlIHBlciBjYXBpdGFsaXphdGlvbjogYW4gaW5kZXggZGVsdGEgYXQKYElOREVYX1BSRUNJU0lPTmAgc2NhbGUgYXBwbGllZCB0byB0aGUgcG9zaXRpb24ncyByaXNrIHVuaXRzCigyZTExID0gMiBicHMgb2Ygbm90aW9uYWwgYXQgYSAxMCUgbWFya2V0IHJpc2sgZmFjdG9yKS4gWmVybwpkaXNhYmxlcyB0aGUgZmxvb3IuAAAAFm1pbl9ib3Jyb3dfaW5kZXhfZGVsdGEAAAAAAAsAAAAAAAAADm1pbl9jb2xsYXRlcmFsAAAAAAALAAAAAAAAABVtaW5fcG9zaXRpb25fbGlmZXRpbWUAAAAAAAAGAAABEsKnMTEuMSBzaGFyZSBvZiBhIGNsb3NpbmcgZmVlIHJvdXRlZCB0byB0aGUgdHJhZGVyJ3MgcmVmZXJyZXIsIGNhcnZlZApmcm9tIHRoZSBwcm90b2NvbCBzbGljZSAoa2VlcGVyIGFuZCBMUCBzaGFyZXMgYXJlIHVudG91Y2hlZCkuIGAwYApkaXNhYmxlcyByZWZlcnJhbCBhY2NydWFsIGdsb2JhbGx5IOKAlCBhIGtpbGwgc3dpdGNoLiBWYWxpZGF0ZWQgc28KYGxwICsga2VlcGVyICsgcmVmZXJyYWwg4omkIEJQU2AsIGtlZXBpbmcgdGhlIHByb3RvY29sIHJlbWFpbmRlciDiiaUgMC4AAAAAABZyZWZlcnJhbF9mZWVfc2hhcmVfYnBzAAAAAAAEAAAAAAAAABdyaXNrX2NhcGFjaXR5X2xpbWl0X2JwcwAAAAAEAAAAAAAAAB1yaXNrX2tlZXBlcl9yZXZlbnVlX3NoYXJlX2JwcwAAAAAAAAQ=",
115
+ "AAAAAQAAAAAAAAAAAAAADE1hcmtldENvbmZpZwAAABEAAAAAAAAAEmFkbF9wbmxfZmFjdG9yX2JwcwAAAAAABAAAAAAAAAAOYWRsX3Jld2FyZF9icHMAAAAAAAQAAAA0wqcxMS4xIGNsb3NpbmctZmVlIHRpZXIgd2hlbiB0aGUgY2xvc2Ugd29yc2VucyBza2V3LgAAABJjbG9zZV9mZWVfaGlnaF9icHMAAAAAAAQAAABCwqcxMS4xIGNsb3NpbmctZmVlIHRpZXIgd2hlbiB0aGUgY2xvc2UgaW1wcm92ZXMgb3IgcHJlc2VydmVzIHNrZXcuAAAAAAARY2xvc2VfZmVlX2xvd19icHMAAAAAAAAEAAAAAAAAABdoYXJkX2NhcF9wbmxfZmFjdG9yX2JwcwAAAAAEAAAAgk1hcmdpbiByZXF1aXJlZCB0byBvcGVuIG9yIGFkZCByaXNrICjCpzEyLjMpLiBEaXZpZGVzIG1heCBsZXZlcmFnZToKYSBwb3NpdGlvbiBtYXkgbm90IGJlIGNyZWF0ZWQgY2xvc2VyIHRvIGxpcXVpZGF0aW9uIHRoYW4gdGhpcy4AAAAAABJpbml0aWFsX21hcmdpbl9icHMAAAAAAAQAAACHwqc4LjEgd2VpZ2h0IG9mIHRoZSBpbnN0YW50YW5lb3VzIHNrZXcgaW4gdGhlIGZ1bmRpbmcgYmxlbmQsIGluIGJwczsKdGhlIHJlc3QgaXMgdGhlIGhhbGYtbGlmZSBFTUEuIGBCUFNgIHJlcHJvZHVjZXMgcHVyZSBpbnN0YW50IHNrZXcuAAAAABJpbnN0YW50X3dlaWdodF9icHMAAAAAAAQAAAAAAAAAFmxpcXVpZGF0aW9uX3Jld2FyZF9icHMAAAAAAAQAAAB8TWFyZ2luIGJlbG93IHdoaWNoIHRoZSBwb3NpdGlvbiBpcyBsaXF1aWRhdGFibGUgKMKnMTIuMykuIE11c3Qgbm90CmV4Y2VlZCBgaW5pdGlhbF9tYXJnaW5fYnBzYDsgdGhlIGdhcCBpcyB0aGUgZW50cnkgYnVmZmVyLgAAABZtYWludGVuYW5jZV9tYXJnaW5fYnBzAAAAAAAEAAAAAAAAABZtYXJrZXRfcmlza19mYWN0b3JfYnBzAAAAAAAEAAAAAAAAABhtYXhfZnVuZGluZ19yYXRlX2Jwc19kYXkAAAALAAAAAAAAABZtYXhfbG9uZ19iYXNlX2V4cG9zdXJlAAAAAAALAAAAAAAAABttYXhfbG9uZ19zaXplX29wZW5faW50ZXJlc3QAAAAACwAAAAAAAAAXbWF4X3Nob3J0X2Jhc2VfZXhwb3N1cmUAAAAACwAAAAAAAAAcbWF4X3Nob3J0X3NpemVfb3Blbl9pbnRlcmVzdAAAAAsAAAAAAAAAF3JlY292ZXJ5X3BubF9mYWN0b3JfYnBzAAAAAAQAAAAAAAAAFndhcm5pbmdfcG5sX2ZhY3Rvcl9icHMAAAAAAAQ=",
115
116
  "AAAAAQAAAC5HbG9iYWwgc2FmZXR5IHRocmVzaG9sZHMgZm9yIHByaWNlIHZhbGlkYXRpb24uAAAAAAAAAAAADE9yYWNsZUNvbmZpZwAAAAQAAADzSG93IGxvbmcgYSBjYWNoZWQgYWdncmVnYXRlZCBwcmljZSByZW1haW5zIHZhbGlkIGFmdGVyIHRoZSByb3V0ZXIKZmV0Y2ggKGluIHNlY29uZHMpLiBBIGNhY2hlIGhpdCBhbHNvIHJlcXVpcmVzIGV2ZXJ5IHNvdXJjZSB0aW1lc3RhbXAKdXNlZCBmb3IgdGhlIGNhY2hlZCBtZWRpYW4gdG8gcmVtYWluIHdpdGhpbiBgc3RhbGVuZXNzX3RocmVzaG9sZGAuCk11c3QgYmUgPiAwIGFuZCA8PSBgc3RhbGVuZXNzX3RocmVzaG9sZGAuAAAAAA5jYWNoZV9kdXJhdGlvbgAAAAAABgAAAIlNYXhpbXVtIGFsbG93ZWQgc3ByZWFkIGJldHdlZW4gb3JhY2xlIHNvdXJjZXMgaW4gYmFzaXMgcG9pbnRzCihlLmcuLCAxMDAgPSAxJSkuIEJvdW5kZWQgYXQgYGNyYXRlOjpjb25zdGFudHM6Ok1BWF9ERVZJQVRJT05fQlBTX0NFSUxJTkdgLgAAAAAAABFtYXhfZGV2aWF0aW9uX2JwcwAAAAAAAAsAAADhTWluaW11bSBudW1iZXIgb2Ygc291cmNlIHJlc3BvbnNlcyB0aGF0IG11c3QgYWdyZWUgd2l0aGluCmBtYXhfZGV2aWF0aW9uX2Jwc2AgZm9yIE9yYWNsZVJvdXRlciB0byByZXR1cm4gYSBwcmljZS4gRmxvb3JlZCBhdApgY3JhdGU6OmNvbnN0YW50czo6TUlOX1JFUVVJUkVEX1NPVVJDRVNfRkxPT1JgLCBjZWlsaW5nZWQgYXQKYGNyYXRlOjpjb25zdGFudHM6Ok1BWF9PUkFDTEVfU09VUkNFU2AuAAAAAAAAFG1pbl9yZXF1aXJlZF9zb3VyY2VzAAAABAAAAFlNYXhpbXVtIGFnZSBvZiBhbiBleHRlcm5hbCBTRVAtNDAgcHJpY2UgZmVlZCBiZWZvcmUgaXQgaXMgcmVqZWN0ZWQKYXMgc3RhbGUgKGluIHNlY29uZHMpLgAAAAAAABNzdGFsZW5lc3NfdGhyZXNob2xkAAAAAAY=",
116
117
  "AAAAAgAAAAAAAAAAAAAADUxwUmVxdWVzdEtpbmQAAAAAAAACAAAAAAAAAAAAAAAHRGVwb3NpdAAAAAAAAAAAAAAAAApXaXRoZHJhd2FsAAA=",
117
118
  "AAAAAQAAAEtEYXRhIHJlcXVpcmVkIGR1cmluZyBhIFdBU00gbWlncmF0aW9uLiBTaW5nbGUgZGVmaW5pdGlvbiBmb3IgYWxsIGNvbnRyYWN0cy4AAAAAAAAAAA1NaWdyYXRpb25EYXRhAAAAAAAAAQAAAAAAAAAHdmVyc2lvbgAAAAAE",
118
119
  "AAAAAQAAAbBQZW5kaW5nIFdBU00gdXBncmFkZSDigJQgc2V0IGJ5IGBwcm9wb3NlX3VwZ3JhZGVgLCBjb25zdW1lZCBieSBgdXBncmFkZWAKKGNsZWFyZWQgYXRvbWljYWxseSBvbiBhIHN1Y2Nlc3NmdWwgaW5zdGFsbCksIG9yIGNsZWFyZWQgYnkgYGNhbmNlbF91cGdyYWRlYC4KU2luZ2xlIHNoYXBlIGFjcm9zcyBldmVyeSBwcm90b2NvbCBjb250cmFjdC4gQ29udHJhY3RzIHN0b3JlIGl0IGF0CnRoZSBzaGFyZWQgYHBlbmRpbmdfdXBncmFkZWAgU3ltYm9sIGtleSBpbiB0aGVpciBvd24gaW5zdGFuY2Ugc3RvcmFnZSAoc2VlCmBjcmF0ZTo6dXBncmFkZTo6cGVuZGluZ191cGdyYWRlX2tleWApLiBgdXBncmFkZWAgcmVmdXNlcyB0byBpbnN0YWxsCnVubGVzcyBgcGVuZGluZy53YXNtX2hhc2hgIG1hdGNoZXMgdGhlIHN1cHBsaWVkIGhhc2ggYW5kIGBub3cgPj0gZXRhYC4AAAAAAAAADlBlbmRpbmdVcGdyYWRlAAAAAAACAAAAAAAAAANldGEAAAAABgAAAAAAAAAJd2FzbV9oYXNoAAAAAAAD7gAAACA=",
119
120
  "AAAAAgAAAAAAAAAAAAAAD0xwUmVxdWVzdFN0YXR1cwAAAAAEAAAAAAAAAAAAAAAHUGVuZGluZwAAAAAAAAAAAAAAAAdTZXR0bGVkAAAAAAAAAAAAAAAABkZhaWxlZAAAAAAAAAAAAAAAAAAHRXhwaXJlZAA=",
121
+ "AAAAAQAAAN1UaGUgY2FsbGVyLXN1cHBsaWVkIGZpZWxkcyBvZiBhIGBwbGFjZV9lbnRyeV9vcmRlcmAgcmVxdWVzdCwgYnVuZGxlZCBzbwp0aGUgZW50cnkgcG9pbnQgc3RheXMgd2l0aGluIFNvcm9iYW4ncyBwYXJhbWV0ZXIgbGltaXQuIGBvd25lcmAgYW5kCmBtYXJrZXRgIGFyZSBwYXNzZWQgYWxvbmdzaWRlOyBgaWRgIGFuZCBgdHJpZ2dlcl9hYm92ZWAgYXJlIGRlcml2ZWQgYXQKcGxhY2VtZW50LgAAAAAAAAAAAAAQRW50cnlPcmRlclBhcmFtcwAAAAkAAAAAAAAAEGFjY2VwdGFibGVfcHJpY2UAAAALAAAAAAAAAApjb2xsYXRlcmFsAAAAAAALAAAAAAAAABBleGVjdXRpb25fYnVkZ2V0AAAACwAAAAAAAAAKZXhwaXJlc19hdAAAAAAABgAAAAAAAAAHaXNfbG9uZwAAAAABAAAAAAAAAARzaXplAAAACwAAAAAAAAAJc3RvcF9sb3NzAAAAAAAACwAAAAAAAAALdGFrZV9wcm9maXQAAAAACwAAAAAAAAANdHJpZ2dlcl9wcmljZQAAAAAAAAs=",
120
122
  "AAAAAQAAAAAAAAAAAAAAEFNldHRsZW1lbnRSZXN1bHQAAAACAAAAPFNoYXJlcyBtaW50ZWQgZm9yIGEgZGVwb3NpdCBvciBhc3NldHMgcGFpZCBmb3IgYSB3aXRoZHJhd2FsLgAAAAZhbW91bnQAAAAAAAsAAAAAAAAABnN0YXR1cwAAAAAH0AAAABBTZXR0bGVtZW50U3RhdHVz",
121
123
  "AAAAAgAAAAAAAAAAAAAAEFNldHRsZW1lbnRTdGF0dXMAAAACAAAAAAAAAAAAAAAHU2V0dGxlZAAAAAAAAAAAAAAAAAZGYWlsZWQAAA==",
122
124
  "AAAAAQAAAAAAAAAAAAAAEkFjY291bnRpbmdTbmFwc2hvdAAAAAAACgAAAAAAAAAOY2FzaF9scF9lcXVpdHkAAAAAAAsAAAAAAAAADmNhc2hfc2hvcnRmYWxsAAAAAAALAAAAAAAAAA9mcmVlX2xwX2NhcGl0YWwAAAAACwAAAAAAAAAVbHBfYmxvY2tlZF9zaWRlX2NvdW50AAAAAAAABAAAAAAAAAANbm9uX2xwX2NsYWltcwAAAAAAAAsAAAAAAAAAE29wZW5fcG9zaXRpb25fY291bnQAAAAABgAAAAAAAAANcGh5c2ljYWxfY2FzaAAAAAAAAAsAAAAAAAAAFXJlcXVpcmVkX3Jpc2tfYmFja2luZwAAAAAAAAsAAAAAAAAAEHRvdGFsX3Jpc2tfdW5pdHMAAAALAAAAAAAAAAl2YXVsdF9uYXYAAAAAAAAL",