@indigo-labs/indigo-sdk 0.3.9 → 0.3.11

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.
Files changed (47) hide show
  1. package/dist/index.d.mts +337 -772
  2. package/dist/index.d.ts +337 -772
  3. package/dist/index.js +1194 -557
  4. package/dist/index.mjs +1091 -451
  5. package/package.json +1 -1
  6. package/src/contracts/cdp/helpers.ts +12 -0
  7. package/src/contracts/cdp/transactions.ts +32 -8
  8. package/src/contracts/gov/helpers.ts +58 -0
  9. package/src/contracts/gov/transactions.ts +35 -14
  10. package/src/contracts/iasset/helpers.ts +3 -0
  11. package/src/contracts/price-oracle/types-new.ts +1 -1
  12. package/src/contracts/rob/helpers.ts +274 -196
  13. package/src/contracts/rob/transactions.ts +11 -5
  14. package/src/contracts/rob-leverage/helpers.ts +379 -371
  15. package/src/contracts/rob-leverage/transactions.ts +176 -104
  16. package/src/contracts/staking/transactions.ts +3 -0
  17. package/src/contracts/treasury/transactions.ts +58 -36
  18. package/src/contracts/treasury/types-new.ts +1 -1
  19. package/src/index.ts +0 -2
  20. package/src/utils/utils.ts +0 -3
  21. package/src/validators/cdp-creator-validator.ts +1 -1
  22. package/src/validators/cdp-redeem-validator.ts +1 -1
  23. package/src/validators/cdp-validator.ts +1 -1
  24. package/src/validators/collector-validator.ts +1 -1
  25. package/src/validators/execute-validator.ts +1 -1
  26. package/src/validators/governance-validator.ts +1 -1
  27. package/src/validators/interest-collection-validator.ts +1 -1
  28. package/src/validators/interest-oracle-validator.ts +1 -1
  29. package/src/validators/poll-manager-validator.ts +1 -1
  30. package/src/validators/poll-shard-validator.ts +1 -1
  31. package/src/validators/stability-pool-validator.ts +1 -1
  32. package/src/validators/stableswap-validator.ts +1 -1
  33. package/src/validators/staking-validator.ts +1 -1
  34. package/src/validators/treasury-validator.ts +1 -1
  35. package/tests/cdp/actions.ts +87 -6
  36. package/tests/cdp/cdp-queries.ts +1 -1
  37. package/tests/cdp/cdp.test.ts +949 -94
  38. package/tests/endpoints/initialize.ts +14 -2
  39. package/tests/gov/gov.test.ts +864 -1
  40. package/tests/interest-collection/interest-collector-queries.ts +2 -1
  41. package/tests/queries/collector-queries.ts +2 -1
  42. package/tests/queries/poll-queries.ts +2 -1
  43. package/tests/queries/treasury-queries.ts +8 -2
  44. package/tests/rob/rob-leverage.test.ts +1646 -612
  45. package/tests/rob/rob.test.ts +35 -19
  46. package/tests/rob/transactions-mutated.ts +6 -4
  47. package/tests/stability-pool.test.ts +251 -25
@@ -1,4 +1,4 @@
1
- /*import {
1
+ import {
2
2
  LucidEvolution,
3
3
  TxBuilder,
4
4
  OutRef,
@@ -7,26 +7,25 @@
7
7
  slotToUnixTime,
8
8
  Data,
9
9
  fromHex,
10
+ getInputIndices,
10
11
  } from '@lucid-evolution/lucid';
11
12
  import {
12
13
  addrDetails,
13
14
  createScriptAddress,
14
15
  getInlineDatumOrThrow,
15
16
  } from '../../utils/lucid-utils';
16
- import { parsePriceOracleDatum } from '../price-oracle/types-new';
17
- import { ocdMul } from '../../types/on-chain-decimal';
18
17
  import { serialiseCdpDatum } from '../cdp/types-new';
19
- import { calculateFeeFromPercentage } from '../../utils/indigo-helpers';
20
18
  import { matchSingle } from '../../utils/utils';
21
19
  import {
22
20
  fromSystemParamsAsset,
23
21
  fromSystemParamsScriptRef,
24
22
  SystemParams,
25
23
  } from '../../types/system-params';
26
- import { oracleExpirationAwareValidity } from '../price-oracle/helpers';
27
24
  import { parseInterestOracleDatum } from '../interest-oracle/types-new';
28
- import { serialiseCDPCreatorRedeemer } from '../cdp-creator/types-new';
29
- import { collectorFeeTx } from '../collector/transactions';
25
+ import {
26
+ serialiseCDPCreatorDatum,
27
+ serialiseCDPCreatorRedeemer,
28
+ } from '../cdp-creator/types-new';
30
29
  import { calculateUnitaryInterestSinceOracleLastUpdated } from '../interest-oracle/helpers';
31
30
  import {
32
31
  approximateLeverageRedemptions,
@@ -34,33 +33,41 @@ import {
34
33
  calculateLeverageFromCollateralRatio,
35
34
  MAX_REDEMPTIONS_WITH_CDP_OPEN,
36
35
  } from './helpers';
37
- import {
38
- buildRedemptionsTx,
39
- randomLrpsSubsetSatisfyingTargetLovelaces,
40
- } from '../lrp/helpers';
36
+
41
37
  import {
42
38
  parseCollateralAssetDatumOrThrow,
43
39
  parseIAssetDatumOrThrow,
44
40
  } from '../iasset/types';
41
+ import { mkAssetsOf } from '@3rd-eye-labs/cardano-offchain-common';
42
+ import { RobDatum } from '../rob/types-new';
43
+ import { rationalToFloat } from '../../types/rational';
45
44
  import {
46
- mkAssetsOf,
47
- mkLovelacesOf,
48
- } from '@3rd-eye-labs/cardano-offchain-common';
49
- import { RobDatum } from '../lrp/types-new';
45
+ buildRedemptionsTx,
46
+ randomRobsSubsetSatisfyingTargetCollateral,
47
+ } from '../rob/helpers';
48
+ import { treasuryFeeTx } from '../treasury/transactions';
49
+ import Decimal from 'decimal.js';
50
+ import { fromDecimal } from '../../utils/bigint-utils';
51
+ import { calculateFeeFromRatio } from '../../utils/indigo-helpers';
52
+ import { retrieveAdjustedPrice } from '../../utils/oracle-helpers';
53
+ import { attachOracle } from '../iasset/helpers';
54
+ import { OracleIdx } from '../price-oracle/types-new';
50
55
 
51
- export async function leverageCdpWithLrp(
56
+ export async function leverageCdpWithRob(
52
57
  leverage: number,
53
58
  baseCollateral: bigint,
54
- priceOracleOutRef: OutRef,
59
+ priceOracleOutRef: OutRef | undefined,
55
60
  iassetOutRef: OutRef,
56
61
  collateralAssetOutRef: OutRef,
57
62
  cdpCreatorOref: OutRef,
58
63
  interestOracleOref: OutRef,
59
- collectorOref: OutRef,
64
+ treasuryOref: OutRef,
60
65
  sysParams: SystemParams,
61
66
  lucid: LucidEvolution,
62
67
  allRobs: [UTxO, RobDatum][],
63
68
  currentSlot: number,
69
+ pythMessage: string | undefined = undefined,
70
+ pythStateOref: OutRef | undefined = undefined,
64
71
  ): Promise<TxBuilder> {
65
72
  const network = lucid.config().network!;
66
73
  const currentTime = BigInt(slotToUnixTime(network, currentSlot));
@@ -112,14 +119,6 @@ export async function leverageCdpWithLrp(
112
119
  getInlineDatumOrThrow(interestOracleUtxo),
113
120
  );
114
121
 
115
- const priceOracleUtxo = matchSingle(
116
- await lucid.utxosByOutRef([priceOracleOutRef]),
117
- (_) => new Error('Expected a single price oracle UTXO'),
118
- );
119
- const priceOracleDatum = parsePriceOracleDatum(
120
- getInlineDatumOrThrow(priceOracleUtxo),
121
- );
122
-
123
122
  const iassetUtxo = matchSingle(
124
123
  await lucid.utxosByOutRef([iassetOutRef]),
125
124
  (_) => new Error('Expected a single IAsset UTXO'),
@@ -136,14 +135,25 @@ export async function leverageCdpWithLrp(
136
135
  getInlineDatumOrThrow(collateralAssetUtxo),
137
136
  );
138
137
 
138
+ const [price, _] = await retrieveAdjustedPrice(
139
+ iassetDatum.assetName,
140
+ collateralAssetDatum.collateralAsset,
141
+ collateralAssetDatum.priceInfo,
142
+ collateralAssetDatum.extraDecimals,
143
+ priceOracleOutRef,
144
+ pythMessage,
145
+ sysParams.pythConfig,
146
+ lucid,
147
+ );
148
+
139
149
  const maxLeverage = calculateLeverageFromCollateralRatio(
140
150
  collateralAssetDatum.iasset,
151
+ collateralAssetDatum.collateralAsset,
141
152
  collateralAssetDatum.maintenanceRatio,
142
153
  baseCollateral,
143
- priceOracleDatum.price,
144
- iassetDatum.debtMintingFeePercentage,
145
- iassetDatum.redemptionReimbursementPercentage,
146
- sysParams.robParams,
154
+ price,
155
+ iassetDatum.debtMintingFeeRatio,
156
+ iassetDatum.redemptionReimbursementRatio,
147
157
  allRobs,
148
158
  );
149
159
 
@@ -154,8 +164,8 @@ export async function leverageCdpWithLrp(
154
164
  const leverageSummary = approximateLeverageRedemptions(
155
165
  baseCollateral,
156
166
  leverage,
157
- iassetDatum.redemptionReimbursementPercentage,
158
- iassetDatum.debtMintingFeePercentage,
167
+ iassetDatum.redemptionProcessingFeeRatio,
168
+ iassetDatum.debtMintingFeeRatio,
159
169
  );
160
170
 
161
171
  if (maxLeverage < leverageSummary.leverage) {
@@ -163,8 +173,8 @@ export async function leverageCdpWithLrp(
163
173
  }
164
174
 
165
175
  if (
166
- leverageSummary.collateralRatio.getOnChainInt <
167
- collateralAssetDatum.maintenanceRatio.getOnChainInt
176
+ rationalToFloat(leverageSummary.collateralRatio) <
177
+ rationalToFloat(collateralAssetDatum.maintenanceRatio)
168
178
  ) {
169
179
  throw new Error(
170
180
  "Can't have collateral ratio smaller than maintenance ratio",
@@ -172,83 +182,67 @@ export async function leverageCdpWithLrp(
172
182
  }
173
183
 
174
184
  const redemptionDetails = summarizeActualLeverageRedemptions(
175
- leverageSummary.lovelacesForRedemptionWithReimbursement,
176
- iassetDatum.redemptionReimbursementPercentage,
177
- priceOracleDatum.price,
178
- sysParams.robParams,
179
- randomLrpsSubsetSatisfyingTargetLovelaces(
185
+ leverageSummary.redeemedCollateral,
186
+ iassetDatum.redemptionReimbursementRatio,
187
+ price,
188
+ randomRobsSubsetSatisfyingTargetCollateral(
180
189
  iassetDatum.assetName,
181
- leverageSummary.lovelacesForRedemptionWithReimbursement,
182
- priceOracleDatum.price,
190
+ collateralAssetDatum.collateralAsset,
191
+ leverageSummary.redeemedCollateral,
192
+ price,
183
193
  allRobs,
184
- sysParams.robParams,
185
194
  MAX_REDEMPTIONS_WITH_CDP_OPEN,
186
195
  ),
187
196
  );
188
197
 
189
- const mintedAmt = redemptionDetails.totalRedemptionIAssets;
198
+ // payout / (1 - debtMintingFee) = total minted amount
199
+ const mintedAmt = fromDecimal(
200
+ Decimal(redemptionDetails.totalIAssetPayout)
201
+ .div(
202
+ Decimal(1).minus(
203
+ Decimal(iassetDatum.debtMintingFeeRatio.numerator).div(
204
+ iassetDatum.debtMintingFeeRatio.denominator,
205
+ ),
206
+ ),
207
+ )
208
+ .floor(),
209
+ );
190
210
 
191
- const debtMintingFee = calculateFeeFromPercentage(
192
- iassetDatum.debtMintingFeePercentage,
193
- ocdMul({ getOnChainInt: mintedAmt }, priceOracleDatum.price).getOnChainInt,
211
+ const debtMintingFee = calculateFeeFromRatio(
212
+ iassetDatum.debtMintingFeeRatio,
213
+ mintedAmt,
194
214
  );
195
215
 
196
216
  const collateralAmt =
197
- redemptionDetails.totalRedeemedLovelaces + baseCollateral - debtMintingFee;
217
+ redemptionDetails.totalRedeemedCollateral + baseCollateral;
198
218
 
199
219
  const cdpNftVal = mkAssetsOf(
200
220
  fromSystemParamsAsset(sysParams.cdpParams.cdpAuthToken),
201
221
  1n,
202
222
  );
203
223
 
204
- const iassetTokensVal = mkAssetsOf(
205
- {
206
- currencySymbol: fromHex(
207
- sysParams.cdpParams.cdpAssetSymbol.unCurrencySymbol,
208
- ),
209
- tokenName: iassetDatum.assetName,
210
- },
211
- mintedAmt,
212
- );
224
+ const iassetClass = {
225
+ currencySymbol: fromHex(
226
+ sysParams.cdpParams.cdpAssetSymbol.unCurrencySymbol,
227
+ ),
228
+ tokenName: iassetDatum.assetName,
229
+ };
213
230
 
214
- const txValidity = oracleExpirationAwareValidity(
215
- currentSlot,
216
- Number(sysParams.cdpCreatorParams.biasTime),
217
- Number(priceOracleDatum.expiration),
218
- network,
219
- );
231
+ const iassetTokensVal = mkAssetsOf(iassetClass, mintedAmt);
232
+
233
+ const refScripts = [
234
+ cdpCreatorRefScriptUtxo,
235
+ cdpAuthTokenPolicyRefScriptUtxo,
236
+ iAssetTokenPolicyRefScriptUtxo,
237
+ robScriptRefUtxo,
238
+ ];
220
239
 
221
240
  const tx = lucid
222
241
  .newTx()
223
- .validFrom(txValidity.validFrom)
224
- .validTo(txValidity.validTo)
225
- // Ref inputs
226
- .readFrom([
227
- priceOracleUtxo,
228
- interestOracleUtxo,
229
- iassetUtxo,
230
- collateralAssetUtxo,
231
- ])
232
242
  // Ref scripts
233
- .readFrom([
234
- cdpCreatorRefScriptUtxo,
235
- cdpAuthTokenPolicyRefScriptUtxo,
236
- iAssetTokenPolicyRefScriptUtxo,
237
- robScriptRefUtxo,
238
- ])
243
+ .readFrom(refScripts)
239
244
  .mintAssets(cdpNftVal, Data.void())
240
245
  .mintAssets(iassetTokensVal, Data.void())
241
- .collectFrom(
242
- [cdpCreatorUtxo],
243
- serialiseCDPCreatorRedeemer({
244
- CreateCDP: {
245
- cdpOwner: fromHex(pkh.hash),
246
- minted: mintedAmt,
247
- collateral: collateralAmt,
248
- currentTime: currentTime,
249
- },
250
- }),
251
- )
252
246
  .pay.ToContract(
253
247
  createScriptAddress(network, sysParams.validatorHashes.cdpHash, skh),
254
248
  {
@@ -256,6 +250,7 @@ export async function leverageCdpWithLrp(
256
250
  value: serialiseCdpDatum({
257
251
  cdpOwner: fromHex(pkh.hash),
258
252
  iasset: iassetDatum.assetName,
253
+ collateralAsset: collateralAssetDatum.collateralAsset,
259
254
  mintedAmt: mintedAmt,
260
255
  cdpFees: {
261
256
  ActiveCDPInterestTracking: {
@@ -269,31 +264,108 @@ export async function leverageCdpWithLrp(
269
264
  },
270
265
  }),
271
266
  },
272
- addAssets(cdpNftVal, mkLovelacesOf(collateralAmt)),
267
+ addAssets(
268
+ cdpNftVal,
269
+ mkAssetsOf(collateralAssetDatum.collateralAsset, collateralAmt),
270
+ ),
273
271
  )
274
272
  .pay.ToContract(
275
273
  cdpCreatorUtxo.address,
276
- { kind: 'inline', value: Data.void() },
274
+ {
275
+ kind: 'inline',
276
+ value: serialiseCDPCreatorDatum({
277
+ creatorInputOref: {
278
+ outputIndex: BigInt(cdpCreatorUtxo.outputIndex),
279
+ txHash: fromHex(cdpCreatorUtxo.txHash),
280
+ },
281
+ }),
282
+ },
277
283
  cdpCreatorUtxo.assets,
278
- )
279
- .addSignerKey(pkh.hash);
284
+ );
285
+
286
+ const treasuryRefScriptUtxo =
287
+ debtMintingFee > 0n
288
+ ? await treasuryFeeTx(
289
+ iassetClass,
290
+ debtMintingFee,
291
+ 0n,
292
+ lucid,
293
+ sysParams,
294
+ tx,
295
+ cdpCreatorUtxo,
296
+ treasuryOref,
297
+ )
298
+ : undefined;
299
+
300
+ const { interval, referenceInputs: refInputs } = await attachOracle(
301
+ iassetDatum.assetName,
302
+ collateralAssetDatum.collateralAsset,
303
+ collateralAssetDatum.priceInfo,
304
+ priceOracleOutRef,
305
+ pythStateOref,
306
+ pythMessage,
307
+ sysParams.pythConfig,
308
+ sysParams.cdpCreatorParams.biasTime,
309
+ currentSlot,
310
+ lucid,
311
+ tx,
312
+ );
313
+
314
+ const referenceInputs = [
315
+ interestOracleUtxo,
316
+ iassetUtxo,
317
+ collateralAssetUtxo,
318
+ ...refInputs,
319
+ ];
320
+
321
+ const refInputsIndices = getInputIndices(referenceInputs, [
322
+ ...referenceInputs,
323
+ ...refScripts,
324
+ ...(treasuryRefScriptUtxo != null ? [treasuryRefScriptUtxo] : []),
325
+ ]);
326
+
327
+ const oracleIdx: OracleIdx =
328
+ priceOracleOutRef !== undefined
329
+ ? { OracleRefInputIdx: refInputsIndices[3] }
330
+ : 'OracleVoid';
331
+
332
+ tx.validFrom(interval.validFrom)
333
+ .validTo(interval.validTo)
334
+ .readFrom(referenceInputs)
335
+ .collectFrom([cdpCreatorUtxo], {
336
+ kind: 'self',
337
+ makeRedeemer: (inputIdx) => {
338
+ return serialiseCDPCreatorRedeemer({
339
+ CreateCDP: {
340
+ cdpOwner: fromHex(pkh.hash),
341
+ minted: mintedAmt,
342
+ collateralAmt: collateralAmt,
343
+ currentTime: currentTime,
344
+ creatorInputIdx: inputIdx,
345
+ creatorOutputIdx: 1n,
346
+ cdpOutputIdx: 0n,
347
+ iassetRefInputIdx: refInputsIndices[1],
348
+ collateralAssetRefInputIdx: refInputsIndices[2],
349
+ interestOracleRefInputIdx: refInputsIndices[0],
350
+ priceOracleIdx: oracleIdx,
351
+ },
352
+ });
353
+ },
354
+ });
280
355
 
281
356
  buildRedemptionsTx(
282
- redemptionDetails.redemptions.map((r) => [
283
- r.utxo,
284
- r.iassetsForRedemptionAmt,
285
- ]),
286
- priceOracleDatum.price,
287
- iassetDatum.redemptionReimbursementPercentage,
357
+ redemptionDetails.redemptions.map((r) => [r.utxo, r.iassetsPayoutAmt]),
358
+ iassetDatum.assetName,
359
+ collateralAssetDatum.collateralAsset,
360
+ price,
361
+ iassetDatum.redemptionReimbursementRatio,
288
362
  sysParams,
289
363
  tx,
290
- 2n,
364
+ 2n + (debtMintingFee > 0n ? 1n : 0n),
365
+ refInputsIndices[2],
366
+ refInputsIndices[1],
367
+ oracleIdx,
291
368
  );
292
369
 
293
- if (debtMintingFee > 0) {
294
- await collectorFeeTx(debtMintingFee, lucid, sysParams, tx, collectorOref);
295
- }
296
-
297
370
  return tx;
298
371
  }
299
- */
@@ -195,6 +195,9 @@ export async function adjustStakingPosition(
195
195
  kind: 'inline',
196
196
  value: serialiseStakingDatum({
197
197
  ...stakingPositionOut.datum,
198
+ positionSnapshot: {
199
+ snapshotAda: stakingManagerOut.datum.managerSnapshot.snapshotAda,
200
+ },
198
201
  lockedAmount: newLockedAmount,
199
202
  }),
200
203
  },
@@ -35,7 +35,10 @@ export async function treasuryFeeTx(
35
35
  sysParams: SystemParams,
36
36
  tx: TxBuilder,
37
37
  actionOref: OutRef,
38
- treasuryOref: OutRef,
38
+ /**
39
+ * `undefined` in case using direct treasury payment.
40
+ */
41
+ treasuryOref: OutRef | undefined,
39
42
  ): Promise<UTxO | null> {
40
43
  const [asset, amt, extraLov] = ((): [AssetClass, bigint, bigint] => {
41
44
  if (amountToPay <= 0 && extraLovelaces > 0) {
@@ -48,56 +51,75 @@ export async function treasuryFeeTx(
48
51
  // If no fee is to be collected, do not include treasury collection.
49
52
  if (amt <= 0n) return null;
50
53
 
51
- const treasuryUtxo = matchSingle(
52
- await lucid.utxosByOutRef([treasuryOref]),
53
- (_) => new Error('Expected a single treasury UTXO'),
54
- );
54
+ let treasuryRefScriptUtxo = null;
55
55
 
56
- const treasuryRefScriptUtxo = matchSingle(
57
- await lucid.utxosByOutRef([
58
- fromSystemParamsScriptRef(
59
- sysParams.scriptReferences.treasuryValidatorRef,
60
- ),
61
- ]),
62
- (_) => new Error('Expected a single treasury Ref Script UTXO'),
63
- );
56
+ if (treasuryOref !== undefined) {
57
+ const treasuryUtxo = matchSingle(
58
+ await lucid.utxosByOutRef([treasuryOref]),
59
+ (_) => new Error('Expected a single treasury UTXO'),
60
+ );
64
61
 
65
- tx.readFrom([treasuryRefScriptUtxo])
66
- .collectFrom(
67
- [treasuryUtxo],
68
- serialiseTreasuryRedeemer({
69
- Collect: {
70
- assetToCollect: asset,
71
- amountToCollect: amt,
72
- extraLovelaces: extraLov,
73
- actionInputOref: {
74
- txHash: fromHex(actionOref.txHash),
75
- outputIndex: BigInt(actionOref.outputIndex),
62
+ treasuryRefScriptUtxo = matchSingle(
63
+ await lucid.utxosByOutRef([
64
+ fromSystemParamsScriptRef(
65
+ sysParams.scriptReferences.treasuryValidatorRef,
66
+ ),
67
+ ]),
68
+ (_) => new Error('Expected a single treasury Ref Script UTXO'),
69
+ );
70
+
71
+ tx.readFrom([treasuryRefScriptUtxo])
72
+ .collectFrom(
73
+ [treasuryUtxo],
74
+ serialiseTreasuryRedeemer({
75
+ Collect: {
76
+ assetToCollect: asset,
77
+ amountToCollect: amt,
78
+ extraLovelaces: extraLov,
79
+ actionInputOref: {
80
+ txHash: fromHex(actionOref.txHash),
81
+ outputIndex: BigInt(actionOref.outputIndex),
82
+ },
76
83
  },
84
+ }),
85
+ )
86
+ .pay.ToContract(
87
+ mkTreasuryAddr(lucid, sysParams),
88
+ {
89
+ kind: 'inline',
90
+ value: serialiseTreasuryDatum({
91
+ treasuryInputOref: {
92
+ txHash: fromHex(treasuryOref.txHash),
93
+ outputIndex: BigInt(treasuryOref.outputIndex),
94
+ },
95
+ actionInputOref: {
96
+ txHash: fromHex(actionOref.txHash),
97
+ outputIndex: BigInt(actionOref.outputIndex),
98
+ },
99
+ }),
77
100
  },
78
- }),
79
- )
80
- .pay.ToContract(
101
+ addAssets(
102
+ treasuryUtxo.assets,
103
+ mkAssetsOf(asset, amt),
104
+ mkLovelacesOf(extraLov),
105
+ ),
106
+ );
107
+ } else {
108
+ tx.pay.ToContract(
81
109
  mkTreasuryAddr(lucid, sysParams),
82
110
  {
83
111
  kind: 'inline',
84
112
  value: serialiseTreasuryDatum({
85
- treasuryInputOref: {
86
- txHash: fromHex(treasuryOref.txHash),
87
- outputIndex: BigInt(treasuryOref.outputIndex),
88
- },
113
+ treasuryInputOref: null,
89
114
  actionInputOref: {
90
115
  txHash: fromHex(actionOref.txHash),
91
116
  outputIndex: BigInt(actionOref.outputIndex),
92
117
  },
93
118
  }),
94
119
  },
95
- addAssets(
96
- treasuryUtxo.assets,
97
- mkAssetsOf(asset, amt),
98
- mkLovelacesOf(extraLov),
99
- ),
120
+ addAssets(mkAssetsOf(asset, amt), mkLovelacesOf(extraLov)),
100
121
  );
122
+ }
101
123
 
102
124
  return treasuryRefScriptUtxo;
103
125
  }
@@ -14,7 +14,7 @@ export type WithdrawalOutputDatum = typeof WithdrawalOutputDatumSchema.Type;
14
14
 
15
15
  const TreasuryDatumSchema = TSchema.Struct(
16
16
  {
17
- treasuryInputOref: OutputReferenceSchema,
17
+ treasuryInputOref: TSchema.NullOr(OutputReferenceSchema),
18
18
  actionInputOref: OutputReferenceSchema,
19
19
  },
20
20
  { flatFields: true },
package/src/index.ts CHANGED
@@ -6,8 +6,6 @@ export * from './contracts/cdp/scripts';
6
6
  export * from './contracts/cdp-creator/types';
7
7
  export * from './contracts/cdp-creator/scripts';
8
8
  export * from './contracts/poll/scripts';
9
- export * from './contracts/poll/types-poll-new';
10
- export * from './contracts/poll/helpers';
11
9
  export * from './contracts/collector/transactions';
12
10
  export * from './contracts/collector/types-new';
13
11
  export * from './contracts/gov/transactions';
@@ -23,6 +23,3 @@ export function loadSystemParamsFromUrl(url: string): Promise<SystemParams> {
23
23
  .then((res: Response) => res.json())
24
24
  .then((data: unknown) => data as SystemParams);
25
25
  }
26
-
27
- export const getRandomElement = <T>(arr: T[]) =>
28
- arr.length ? arr[Math.floor(Math.random() * arr.length)] : undefined;
@@ -3,5 +3,5 @@ export const _cdpCreatorValidator = {
3
3
  type: 'PlutusScriptV3',
4
4
  description: 'Generated by Aiken',
5
5
  cborHex:
6
- '592929592926010100229800aba2aba1aba0aab9faab9eaab9dab9cab9a488888888cc896600264653001300b00198059806000cdc3a4005300b0024888966002600460166ea800e33001300c3754007370e90024dc3a4001300b375400891111919912cc004c014012264b300130180018992cc004c01cc050dd5000c4c8c8c8c8c8c8c8c8c8ca60026eb4c0880066046003375c6044015375a6044013375a6044011375a604400f375a604400d375a604400b375a6044009375a6044007375a6044004911111111112cc004c0b802a26464b3001301e001899192cc004c0c800a03b1640bc6eb4c0c0004c0b0dd5001456600260440031323259800981900140762c8178dd6981800098161baa0028acc004c07c0062b3001302c375400501b8b205a8b205240a48148c0a8dd5000981680545902b0c088004c084004c080004c07c004c078004c074004c070004c06c004c068004c054dd5000c59012180b800c5901518099baa00b8acc004c0240122b3001301337540170028b20288acc004c0180122b3001301337540170028b20288b202040408080660024602a602c602c602c602c602c602c003374a900048c054c0580064446466446600400400244b3001001801c4c8cc896600266e4401c00a2b30013371e00e0051001803202e899802802980f002202e375c602e0026eb4c060004c068005018191919800800803112cc00400600713233225980099b910090028acc004cdc78048014400600c80c226600a00a603e00880c0dd7180c0009bab3019001301b0014064297adef6c6014800244646600200200644b30010018a5eb8226644b3001300500289980c80119802002000c4cc010010005014180c000980c800a02c9b88480024602a602c602c602c602c0032301530163016001911919800800801911980180098010014966002600a60226ea80062602a60246ea80062c807a60206ea80264b300130043011375400312323375e602e60286ea8c05cc050dd5001000980b18099baa002891919baf301730143754004002602c60266ea800900f48888c8cc0040040148966002003133019337606ea4014dd400225eb7bdb1822653001375c602e003375a6030003301c00248896600266e4002400e26603a66ec0dd48049ba80080058acc004cdc7804801c6600201300880148cc078cdd81ba900a37500020051001401d13301d337606ea400cdd400119803003000a0304060301a0014061222232330010010052259800800c4cc064cdd81ba9005374c00897adef6c608994c004dd7180b800cdd5980c000cc0700092225980099b9000900389980e99bb037520126e980200162b30013371e01200719800804c02200523301e337606ea4028dd30008014400500744cc074cdd81ba9003374c0046600c00c00280c10180c068005018496600200314a314a0809a24444464b3001300900180144c00c00501419b800040039b81480024464b30013006001899192cc004c06800a00916405c6eb8c060004c050dd5001c5660026014003159800980a1baa0038014590154590112022301237540052259800980298091baa0028991919912cc004c06c00e00b1640606eb4c060004dd6980c001180c00098099baa0028b2020912cc004c014c048dd500144c8c8cc896600260360070058b2030375c60300026eb8c060008c060004c04cdd50014590104dc4a4009370e90044dd2a4004911111111111111111111114c00488c8cc00400400c896600200314c0103d87a80008992cc004cdd7981818169baa0010048980d99817800a5eb8226600600660620048150c0bc00502d488c0826002005375c605a60546ea80066eb8c05cc0a8dd5000a02c919912cc00528452f5bded8c113232330010014bd6f7b630112cc00400626606066ec0dd48029ba60034bd6f7b63044ca60026eb8c0b80066eacc0bc00660660049112cc004cdc8004801c4cc0d0cdd81ba9009374c00e00b15980099b8f00900389981a19bb037520126e9801c00626606866ec0dd48019ba60023300600600140bc817860620028178c8cc0040052f5bded8c044b300100189981799bb037520069810101004bd6f7b63044ca60026eb8c0b40066eb4c0b800660640049112cc004cdc8003801c4cc0cccdd81ba90074c010101000058acc004cdc7803801c4cc0cccdd81ba90074c0101010000189981999bb037520066ea0008cc01801800502e205c1818000a05c40a06eb8c0b0c0a4dd50009bae3016302937540032223259800800c528c56600260600031323298009bae30310019bad303130320019bae303100248896600266e3c0052201008acc004cdc7801a441008acc004c08cc0c0dd5003c56600266e252000002899b89002482026fb80a294102e44cdc4a40000048172294102e4528205c18188009bac302f0018a5040b48168c8cc004004ca60020030059919800800802912cc004006297adef6c608991981919bb0302f001374c64660020026eacc0c4008896600200314bd6f7b63044c8cc0d4cdd818190009ba83012375a606600266006006606e004606a0028198cc00c00cc0d0008c0c8005030200222259800801440062653001004981a001e6002005375c605e00337566060003222223259800980b800c00a260060028198c8ca6002003006802a00222259800801440062653001004981f001e6002005375c6072003375a607400300540748020c0f000903a280aa024401060640048180896600200314bd7044c8cc88cc88cc008008004896600200310038991981a9ba733035375200a6606a60640026606a606600297ae0330030033037002303500140cc6eacc0c000cdd718168009980180198190011818000a05c91192cc004c074006264b300130300018998049817800801c5902d18159baa0038acc004c084006264b300130300018998041817800801c5902d18159baa0038acc004c07800626464b3001303100280245902e1bae302f001302b37540071640a0814102818149baa002488888c9660026040027198009b804800644b30010018a4d13259800800c5268992cc004cdc81bae30313035003375c60620031330040043303400130360028a998182481326b65797320696e206173736f63696174697665206c697374206172656e277420696e20617363656e64696e67206f72646572001640bc60680028190c0d0005031488cc88c080cc0d0dd419b82375a606a0046eb4c0d4004cc0d0dd419b82375a606a606c0046eb4c0d4c0d80052f5c060606ea8008c0c0dd5000c8966002604400314c0103d87a80008acc004cdc4000a40011301e33032301e330323750601e004660646ea0c03c0052f5c097ae08980f19819180f198191ba800233032375000297ae04bd70205a40b5230323033303330333033303330333033001911919800800801912cc0040062980103d87a80008992cc004cdd78021819000c4c084cc0d4c0cc0052f5c1133003003303700240c0606a002819a4464b300130230018acc004c08cc0c0dd500145300103d87a80008a6103d879800040b91598009812000c566002604860606ea800a2980103d87a80008a6103d87b800040b913322598009814800c4c96600266e2000c0062980103d87980008acc004cdc4000801c530103d87b80008a6103d87a800040c48188dd6981b18199baa0048acc004c094006298103d87b80008a6103d879800040c08180dd6981a18189baa00330303754004817102e18179baa0029180e998189ba8001330314c10101004bd70488889660026602e00800b15980099baf301b3033375400a007198009bab30203033375400b002800a0108a5040c114a081824606460666066606600323032303330333033303330333033303330333033001918191819981998199819981998199819981998199819800c8c0c8c0ccc0ccc0ccc0ccc0ccc0ccc0ccc0cc006605c6ea8c0c4c0b8dd50134c0b8dd5011a4444444444444453001222598008014530103d87a80008acc004c0c80062605c66084608600497ae08cc00400e60880053012001400c81e90414c03803a444b30013371000290004520008acc004c0c80062900144c966002606666e1800920048cc0040126002007337060049002200889800cc00401260020073370660260049002200840f86e0800903d207a9192cc004c0c4c0f8dd5000c4c108c0fcdd5000c54cc0f5241263c65787065637465643e2044656e6f6d696e61746f722063616e6e6f74206265207a65726f2e001640f06601a6eb4c104c0f8dd50009bad302b303e37540032302c330403259800981a981f1baa0018992cc004c0d8c0fcdd5181698201baa3043304037540071301933042375000297ae08980c998211ba833700002900125eb8103d1bad3042303f3754003100140f06082607c6ea8c104c0f8dd500099820192cc004c0d4c0f8dd5000c4c966002606c607e6ea8c0b4c100dd5181698201baa0038980c998211ba80014bd7044c064cc108dd41809000a5eb8103d1bad3042303f3754003100140f06082607c6ea8c0acc0f8dd5000a5eb826082005375c608000530410019bac3040001488888888a60026012013300700791119912cc004c0f400e200b19800802c00a6464004601c0026609a66ec0dd48009ba80034bd6f7b630488888c966002606400300289801800a09c329800802401e013222229800802c00e009002800a00c40d0a06081690481bae304c304937540046eb8c0d8c124dd50014c1280126eb4c1240126eb0c12400a6eb0c124c1280092222222323322323232323298009bad3058001982c182c800cdd6982c0064dd6982c0044cc018040dd6982c003cdd6982c0024dd6982c00124444444b3001304e305b37540071325980099baf3060305d375400209b1598009981a1bab304a305d3754609460ba6ea8004c180c174dd5031c4c96600260a060ba6ea8006264b300198009831182f9baa002981c198309831182f9baa304c305f375400697ae09800998309826998309831182f9baa0034bd7025eb82606a60c460be6ea8196980103d87a800040a5132598009829182f9baa0018992cc004cc0e0dd5982718309baa304e30613754002605460c26ea819e264b3001305430613754003132598009833800c4c96600260ac60c66ea80062646464646464646465300130700019bae30700099bad307000898380034c1c001660e00093070003992cc004c1b80062b30013049306d0018b44c190c1b400506b45906f1baa30700024888888896600260f2013133052307800f133052005133052004133052003133052002133053008132598009834183a9baa0018992cc004cc138dd59832183b9baa30643077375400260c060ee6ea81f6264b3001306e3077375400313259800983e800c4c8c96600260da60f46ea800a2646464646464646464646530013089010019bae30890100b9bad3089010099844808044c2240401e61120200d3089010059844808024dd6984480801cc966002610e020031598009831184300800c5a260fa610c0200284200a2c844008dd518448080124444444444b300130940100b89983618498080a0998320038998360030998368028998368020998368018992cc004c20c04006264b3001309601001899837184a8080080c459093011848809baa00b8acc004c21c040062b300130910137540170178b2124028b211c02423804611e026ea802a2c848808611202002611002002610e02002610c02002610a0200261080200261060200261040200261020200261000200260f66ea800a2c83c0566002b30013375e60a6660f8608460f46ea8200052f5c060fa60f46ea8c1f4c1e8dd51833983d1baa01a899baf30533307c3042307a37541000297ae0307d307a375460fa60f46ea8c19cc1e8dd5002452820ee8acc004cdc79bae307d307a375402e6eb8c1f4c1e8dd5000c4c96600260da60f46ea8006264b300133053375660d260f86ea8c1a4c1f0dd50009832983e1baa0038992cc004c1bcc1f0dd5000c4c8c8c8cc8966002610c0200713259800983a9841009baa001899192cc004c2240400a264b30019800820cc1b8c21804dd504600d30103d87a8000416513259800983c9843009baa0018acc0066002611402610e026ea800660ea661120260c0661120260aa610e026ea8234052f5c097ae098149984480983a9984480983a9984480983a99844809ba90444bd7019844809845009843809baa02433089013074308701375401c66112026ea00f4cc22404c1d4cc22404dd401799844809ba8337006eb4c22804c21c04dd5005acc004cdc41bad306f308701375401605f13370666e0ccdc119b823370205e6eb4c1bcc21c04dd50059bad308a01308701375460e8610e026ea802d208080a0f6f4acdbe01b48202c227efa8052080897a8a9984280a49015a001642100497ae04bd7025eb812f5c19800982e98379843809baa08d01983a1843809baa00e818207ea60103d87a8000414515980099912cc004c96600260fa00314a3159800984000800c528c528210e02421c046110026ea8cc154c23004c22404dd50011846009844809baa0018992cc004c1f000629462b30013080010018a518a50421c04843808c22004dd51982a983b1844809baa0023076308901375400314a0843008c118c154c21c04dd503e1823183a9984480983a9984480983019844809ba83370205e6eb4c138c21c04dd504680a5eb80cc22406600294698103d87a8000a60103d879800042100497ae033089013075330890130603308901375066e000bcdd698271843809baa08d014bd701984480cc00528d300103d87a8000a60103d879800042100497ae04bd7044c96600266ebcc1c4c22004dd503e9ba69800982f18381844009baa08e01800c0f9040456600264b3001307b3088013754003133223371266e08dd69847008009bad308e01308f01002337046eb4c23804008dd69847009847808009844809baa308c0130890137540026112026ea8cc164010c124c1e0c22404dd5008459086011982b81881f456600260e407d15980099b89375a609c6110026ea803c0c62b300132323298009bad308e010019bad308e01308f010019bae3051308b01375412203375660a66116026ea820006611c02004911112cc004c1e8016264b300100184680c566002612a0200314a308d01424804849008cc1ecc8cc1f01308cdd7984a809849009baa309501309201375460fe6124026ea8004008c1a4cc24804dd4801a5eb808c8cc8966002610c02003159800984a009baa003801459095014566002611402003159800984a009baa003801459095014566002610e02003159800984a009baa00380145909501456600266e1d20060018acc004c25004dd5001c00a2c84a80a2b3001306e0018991919194c004c26c040066eb4c26c0400e6eb4c26c0400922259800984f8080244cc1dcc2780401c566002611a026134026ea800e264646644b300130a301003806c590a0011bad30a001001375c6140020046140020026136026ea800e2c84c00a2c84e0086136020026134020026132020026128026ea800e2b30013370e9005000c5660026128026ea800e0051642540516424404848809091012122024244048488084cdd780099ba548020cc2500400ccc25004dd40039984a009ba80063309401082014bd701848809baa00132598009842009848809baa0018984a809849009baa0018b211e023305e003306a3309301309401309101375400297ae08a51423404308e010013259800acc004cdc4800a400114a114a084380a2661180298106d8799f4040ff003308c014c10100003308c014c10100004bd7044cc23004c23404008cc23004dd40009984600a610100004bd70210e02375a611802611a02002661140200266114026ea16600266e240f920008a4001132337066eb4c23004004dd69846009846808009844009baa33058305303e30483070308801375404a8428092f5c114a31533086014901243c65787065637465643e204d757374207061792064656274206d696e74696e67206665650016421405153308601491253c65787065637465643e204d696e20636f6c6c61746572616c20756e7361746973666965640016421405153308601491213c65787065637465643e204e6f6e706f736974697665206d696e74656420616d740016421405153308601491203c65787065637465643e20556e646572636f6c6c61746572697a6564204344500016421405153308601491223c65787065637465643e204d696e7465642076616c756520697320696e76616c6964001642140460ea661120260e8610e026ea823404cc22404c22804c21c04dd501225eb822a6610a029201203c65787065637465643e20496e636f72726563742074782076616c69646974790016421005153308501491203c65787065637465643e20434450206f757470757420697320696e76616c69640016421005164210046606e07405908101421c04646644b3001307a0018801456600260e400313305800230533304148050006264b3001307b30880137540031308c0130890137540031642180464b3001307f308801375400314c0103d87a80008983b99845809982c8019846009844809baa0014bd70210c023233225980099b8800248002260f26611a0260f26611a026ea0c1a8004cc23404dd4183500125eb812f5c1159800983a80144c1e4cc23404c1e4cc23404dd400099846809ba80024bd7025eb82298103d87a8000422004844008dd69846008009bad308c01308d01001308801375460a666082900a1833800a10a0242140464b300130790018acc006600294294294508401454cc21405240101570016898239845009843809baa002421005159800983e800c4c96600264b3001307f30880137540031337126eb4c1d8c22404dd50011bad308c013089013754003164218046116026110026ea8c1d4c22004dd5182b1844009baa07d8a9984300a48101580016898241845809844009baa00142140464b30013305f375660ea6110026ea8004c22c04c22004dd5001c4c96600260f66110026ea800626464646644b3001309201003899835984880802880345908f011847808009bad308f01002308f01001308e0100130890137540031642180460dc60e06110026ea80062c842808c96600260f400313259800983d9844009baa0018983b1844809baa308c01308901375400316421804660726eb0c1d4c22004dd503e9bad308b013088013754065159800983f000c4c96600260f66110026ea800626118026112026ea80062c843008cc0e4dd618381844009baa07d375a6116026110026ea80ca2a6610c029201014f0016421404842808c21804dd5018c4c96600260f4610e026ea8006264b3001307b308801375400313232325980098480080144cc1a4c23c0400c4c130c23c04c23004dd500245908d011847008009847008009844809baa0018b210c02308b01308801375400316421404660a86eacc13cc21c04dd503e18149984480983019844809845009843809baa0024bd7025eb810840121080230850137540026eb4c1b8c21804dd500698271842809baa00c8b210c02375a610e020026106026ea80062c840008c214040122c841808dd69841808009bad308301003308301001308201001307d37540031641e860c460c860f86ea8c1a4c1f0dd5000c59079183f183d9baa0018b20f03302b02f0258a9983c2491b3c65787065637465643e2077726f6e6720636f6c6c206173736574001641dd1533078491193c65787065637465643e204d697865642076657273696f6e73001641dc60f80031641e860f06ea80062c83a8c174c17cc1dcdd51832183b9baa0018b20e83079307637540031641cc6604c0540351641d83070001306f001306e001306d001306c001306b001306a00130690013064375400316418460cc00316419060c46ea80062c82f8c11cc124c184dd5182718309baa0018b20bc306330603754003164174660200286eb4c1880362a660ba92012b3c65787065637465643e2043445043726561746f72206f757470757420646f6573206e6f74206d61746368001641706e9520048b20b63300e011375a60c001b153305b4901203c65787065637465643e2043445043726561746f724e4654206d697373696e670016416916416860be60b86ea800e2c82c860b000260ae00260ac00260aa00260a800460a400244b300133710002900045300103d87a8000899805001000a09a305100411598009812009c4cc88ca6002660120020432232598009813000c4c8c96600260740050048b206e375c607000260686ea800e2b3001302a001899192cc004c0e800a0091640dc6eb8c0e0004c0d0dd5001c5903120623032375400537586068606a606a00530030034888966002604e60686ea8012264b30013300d37566046606c6ea8c08cc0d8dd5000981c981b1baa03c8992cc006600200f301f3037375407b4c103d87a8000402913259800981e000c4c966002605660706ea80062646464646465300130420019bad30420049bad30420039bad30420024888966002608e00b1329800899912cc004c0e0006264b3001304b0018992cc004c0e8c11cdd5000c4c8c8c966002609e0051332259800981f98261baa00289919192cc004c15000a26603c60a6006264b300130430018992cc004c15800626464b300130460018992cc004c16400626604660b000201316415860a86ea800a2b3001304a00189919194c004dd6982d000cdd6982d001cdd6982d0012444b3001305e00480745905b0c168004c164004c150dd500145905120a23052375400260aa00316414c60a26ea800a2b300130470018acc004c144dd500140162c82922c827104e18279baa0018b20a230520013052001304d3754005164128609c00626606400244b3001002804c4c9660026080609a6ea800626464653001375a60a8003375c60a8007375c60a80049112cc004c1600122601060b001316415430540013053001304e375400316412c60a000482722c8260dd61826800982680098241baa0018b208a304a0018b20903046375400f159800981e000c566002608c6ea801e00516411d16410c8218566002b3001301e3043375400314a314a0820a264b30010018800c54cc10d24012043445043726561746f72206f757470757420646f6573206e6f74206d6174636800100141086466446600400466064028605600244b30010018a508acc004c96600266ebcc0c0c120dd5000a60107d87b9fd87980ff008cc004dd5981a98241baa0018025300103d87a8000407514a08228c128006294626600400460960028221048180f19823807a5eb80c068c11cc110dd502545904118219baa00598219baa0019bad304700b4889660026072005132598009826000c4c966002607660906ea80062646464646465300130520019bae305200698290024c14800e60a4004911112cc004c16001a26606260ae01426606200626606200426606200226606200a021164154305200130510013050001304f001304e001304937540031641186096003164124608e6ea80122b3001303d0028992cc004c130006264b3001303b30483754003132323232323298009829000cdd718290034c14801260a400730520024888896600260b000d133031305700a1330310031330310021330310011330310050108b20aa1829000982880098280009827800982700098249baa0018b208c304b0018b209230473754009159800981d00144c966002609800313259800981d98241baa00189919191919191919194c004dd6982a800cdd7182a804cdd6982a803cc15401a60aa00b3055004982a801cc1540092222222259800982f004c4cc0d8c1740404cc0b80144cc0d80104cc0dc00c4cc0dc0084cc0dc00405a2c82d860aa00260a800260a600260a400260a200260a0002609e002609c00260926ea80062c8230c12c0062c8248c11cdd5002456600266e1d20060028992cc004c130006264b3001303b30483754003132323232323232323298009bad30550019bae30550099bad3055007982a8034c15401660aa0093055003982a801244444444b3001305e00989981b182e80809981700289981b00209981b80189981b80109981b80080b45905b0c154004c150004c14c004c148004c144004c140004c13c004c138004c124dd5000c590461825800c5904918239baa0048acc004c08400a264b3001304c0018992cc004c0ecc120dd5000c4c8c8c8c8c8c8c8c8ca60026eb8c1540066eb8c15402660aa00f3055006982a802cc1540126eb4c15400e6eb4c1540092222222259800982f004c4cc0d8c1740404cc0dc0184cc0dc0144cc0dc0104cc0e000c05a2c82d860aa00260a800260a600260a400260a200260a0002609e002609c00260926ea80062c8230c12c0062c8248c11cdd5002456600266e1d200a0028992cc004c130006264b3001303b304837540031323232323232323232323298009bae30570019bae305700b982b804cc15c02260ae00f3259800982a800c566002606060a80031689825982a000a0a48b20ac375460ae00d3259800982a800c566002606060a80031689825982a000a0a48b20ac375460ae00b30570049bad30570039bad3057002488888888896600260c401713303a306101413303b00813303b00713303b00613303c00301a8b20be182b800982b000982a800982a00098298009829000982880098280009827800982700098249baa0018b208c304b0018b20923047375400915980099b874803000a264b3001304c0018992cc004c0ecc120dd5000c4c8c8c8c8c8c8c8c8c8c8c8ca600260b0003375a60b0019375a60b0017375a60b0015375a60b0013375a60b0011375a60b000f375a60b000d375a60b000b375a60b0009375a60b0004911111111112cc004c19003226607c60c601c266058016039164184305800130570013056001305500130540013053001305200130510013050001304f001304e001304937540031641186096003164124608e6ea80122b30013370e900700144c966002609800313259800981d98241baa00189919912cc004c1400062660666eb0c13c004896600200500a89919912cc004c154006264b30013044305137540031323259800982c00144c01cc1600222c82a8dd7182b00098291baa0018b209e30540018b20a4375c60a400260a60026eb0c14400904f45904d1bad304d001304e001304937540031641186096003164124608e6ea80122b30013370e900800144c8c966002609a0050058b2094375c6096002608e6ea80122c8221044208841108221044208841108220608c013164110304200130410013040001303f001303e001303937540031640d8603c604060706ea8c094c0e0dd5181d800c590394c00401e607460766076607660766076606e6ea80f698103d8798000402903240e06072606c6ea8c08cc0d8dd5000c54cc0d1241253c65787065637465643e2043445043726561746f72204e46542069732070726573656e742e001640cc6070606a6ea80122c81906eb0c0cc004888c96600260480031323259800981c00140122c81a8dd7181b00098191baa0038acc004c0a00062646644b3001303900189980e1bac30380012259800801401e33001009981d00144c004c0ec00900920708b206c375a606c002606e00260646ea800e2c817902f18181baa002302e3754047132332259800981198181baa0018992cc004c0a0c0c4dd5000c4cc89660026070003132598009813981a1baa00189919912cc004c0f000626603e6eb0c0ec0048966002005132598009816981d1baa001899191980080098071bab3026303d375406444b30010018a508acc004cdc79bae30410010038a518998010011821000a07640fc6eb8c0f8c0ecdd5000c5903819198008009bac3028303b375400e44b30010018a60103d87a80008992cc006600266ebc00530103d87a8000a50a5140e9100189980180198208012074325980099b8f375c60800020171302b3303f304030410014bd7045300103d87a800040e86eb0c0fc00503d44c8c8cc896600260840071300530420068b207e375c607e0026eb8c0fc008c0fc004dd6181e80120768b2072375a60720026074002606a6ea80062c8190c068c070c0d0dd51810981a1baa30370018b206a375c606a60646ea800660026eb0c07cc0c8dd5013cc084c0c8dd501c530103d879800040151640bc606860626ea8c0d0c0c4dd5180f18189baa3034303137540031640b860020026600e6eb0c0c8c0bcdd501200f912cc004006297ae08998191817981980099801001181a000a06240ac8158888c8cc0700108c008c07cc0c8dd5000acc004c088c0bcdd5000c48cc020dd5980f18189baa00100389180dcc004dd5980f18189baa0019bae303430313754007375c603c60626ea800d01d205a0c050c054014c04c011164024300b00130063754017149a26cac801854cc0092401373c65787065637465643e2053696e676c6520747265617375727920696e707574207769746820636f72726563742072656465656d65722e001615330024911d3c65787065637465643e204e6f204344507320617265207370656e742e001601',
6
+ '59296c592969010100229800aba2aba1aba0aab9faab9eaab9dab9cab9a488888888c96600264653001300a00198051805800cdc3a4005300a0024888966002600460146ea800e33001300b3754007370e90024dc3a4001300a375400891111919912cc004c014012264b300130170018992cc004c01cc04cdd5000c4c8c8c8c8c8c8c8c8c8ca60026eb4c0840066044003375c6042015375a6042013375a6042011375a604200f375a604200d375a604200b375a6042009375a6042007375a6042004911111111112cc004c0b402a26464b3001301e001899192cc004c0c400a03b1640b86eb4c0bc004c0acdd5001456600260440031323259800981880140762c8170dd6981780098159baa0028acc004c07c0062b3001302b375400501b8b20588b205040a08140c0a4dd5000981600545902a0c084004c080004c07c004c078004c074004c070004c06c004c068004c064004c050dd5000c59011180b000c5901418091baa00b8acc004c0240122b3001301237540170028b20268acc004c0180122b3001301237540170028b20268b201e403c80786600246028602a602a602a602a602a602a003374a900048c050c0540064446466446600400400244b3001001801c4c8cc896600266e4401c00a2b30013371e00e0051001803202c899802802980e802202c375c602c0026eb4c05c004c064005017191919800800803112cc00400600713233225980099b910090028acc004cdc78048014400600c80ba26600a00a603c00880b8dd7180b8009bab3018001301a0014060297adef6c6014800244646600200200644b30010018a5eb8226644b3001300500289980c00119802002000c4cc010010005013180b800980c000a02a9b884800246028602a602a602a602a0032232330010010032233003001300200292cc004c014c040dd5000c4c050c044dd5000c5900e48c050c054c054006601e6ea8026444b300130060018a5eb7bdb182264646600200297adef6c602259800800c4cc060cdd81ba9006374c00697adef6c608994c004dd7180b000cdd5980b800cc06c0092225980099b9000a00389980e19bb037520146e9801c0162b30013371e01400713301c337606ea4028dd3003800c4cc070cdd81ba9003374c0046600c00c00280b90170c0640050171919800800a5eb7bdb1808966002003133017337606ea4010dd4001a5eb7bdb1822653001375c602a003375a602c003301a00248896600266e4002000e26603666ec0dd48041ba80070058acc004cdc7804001c4cc06ccdd81ba9008375000e00313301b337606ea400cdd400119803003000a02c40583018001405880824464b30013006001899192cc004c06400a0091640586eb8c05c004c04cdd5001c566002601400315980098099baa0038014590144590102020301137540052259800980298089baa0028991919912cc004c06800e00b16405c6eb4c05c004dd6980b801180b80098091baa0028b201e912cc004c014c044dd500144c8c8cc896600260340070058b202e375c602e0026eb8c05c008c05c004c048dd500145900f48888c8cc0040040148966002003133018337606ea4014dd400225eb7bdb1822653001375c602c003375a602e003301b00248896600266e4002400e26603866ec0dd48049ba80080058acc004cdc7804801c6600201300880148cc074cdd81ba900a37500020051001401d13301c337606ea400cdd400119803003000a02e405c3019001405d222232330010010052259800800c4cc060cdd81ba9005374c00897adef6c608994c004dd7180b000cdd5980b800cc06c0092225980099b9000900389980e19bb037520126e980200162b30013371e01200719800804c02200523301d337606ea4028dd30008014400500744cc070cdd81ba9003374c0046600c00c00280b90170c064005017496600200314a314a0809224444464b3001300900180144c00c00501319b8000400392cc004c010c040dd5000c48c8cdd7980b18099baa301630133754004002602a60246ea800a246466ebcc058c04cdd5001000980a98091baa0024039370290004dc4a4009370e90044dd2a40049111111111111111111111114c00488c8cc00400400c896600200314c0103d87a80008992cc004cdd7981818169baa0010048980e19817800a5eb8226600600660620048150c0bc00502d488c0866002005375c605a60546ea80066eb8c060c0a8dd5000a02e94c004dd7181618149baa0019bae3017302937540034800900e488c966002603c003132598009818000c4cc03cc0bc00400e2c8168c0acdd5001c5660026044003132598009818000c4cc038c0bc00400e2c8168c0acdd5001c566002603e0031323259800981880140122c8170dd7181780098159baa0038b205040a08140c0a4dd50014888c96600200314a31598009818000c4c8ca60026eb8c0c40066eb4c0c4c0c80066eb8c0c40092225980099b8f001489008acc004cdc7801a441008acc004c090c0c0dd5003c56600266e252000002899b89002482026fb80a294102e44cdc4a40000048172294102e4528205c18188009bac302f0018a5040b48168c8cc004004ca60020030059919800800802912cc004006297adef6c608991981919bb0302f001374c64660020026eacc0c4008896600200314bd6f7b63044c8cc0d4cdd818190009ba8300f375a606600266006006606e004606a0028198cc00c00cc0d0008c0c8005030200222259800801440062653001004981a001e6002005375c605e00337566060003222223259800980a800c00a260060028198c8ca6002003006802a00222259800801440062653001004981f001e6002005375c6072003375a6074003005406c8020c0f000903a2809a020401060640048180896600200314bd7044c8cc88cc88cc008008004896600200310038991981a9ba733035375200a6606a60640026606a606600297ae0330030033037002303500140cc6eacc0c000cdd718168009980180198190011818000a05c488888cc8966002604402b198009b804800644b30010018a4d13259800800c5268992cc004cdc81bae30323036003375c60640031330040043303500130370028a99818a49326b65797320696e206173736f63696174697665206c697374206172656e277420696e20617363656e64696e67206f72646572001640c0606a0028198c0d4005032488cc88c088cc0d4dd419b82375a606c0046eb4c0d8004cc0d4dd419b82375a606c606e0046eb4c0d8c0dc0052f5c060626ea8008c0c4dd5000c8966002604800314c0103d87a80008acc004cdc4000a400113020330333020330333750601a004660666ea0c0340052f5c097ae089810198199810198199ba800233033375000297ae04bd70205c40b9230333034303430343034303430343034001911919800800801912cc0040062980103d87a80008992cc004cdd78021819800c4c08ccc0d8c0d00052f5c1133003003303800240c4606c00281a24464b300130250018acc004c094c0c4dd500145300103d87a80008a6103d879800040bd1598009813000c566002604c60626ea800a2980103d87a80008a6103d87b800040bd13322598009815800c4c96600266e2000c0062980103d87980008acc004cdc4000801c530103d87b80008a6103d87a800040c88190dd6981b981a1baa0048acc004c09c006298103d87b80008a6103d879800040c48188dd6981a98191baa00330313754004817902f18181baa0029180f998191ba8001330324c10101004bd70488889660026602200800b15980099baf301b3034375400a007198009bab30223034375400b002800a0108a5040c514a0818a460666068606860680032303330343034303430343034303430343034303400191819981a181a181a181a181a181a181a181a181a181a000c8c0ccc0d0c0d0c0d0c0d0c0d0c0d0c0d0c0d0006605e6ea8c0c8c0bcdd50144c0bcdd5012a4444444444444453001222598008014530103d87a80008acc004c0d00062606066086608800497ae08cc00400e608a0053012001400c81f10424c03803a444b30013371000290004520008acc004c0d00062900144c966002606a66e1800920048cc0040126002007337060049002200889800cc00401260020073370660260049002200840fc6e0800903e207c9192cc004c0ccc0fcdd5000c4c10cc100dd5000c54cc0f9241263c65787065637465643e2044656e6f6d696e61746f722063616e6e6f74206265207a65726f2e001640f46601a6eb4c108c0fcdd50009bad302d303f37540032302e330413259800981b981f9baa0018992cc004c0e0c100dd5181798209baa3044304137540071301a33043375000297ae08980d198219ba833700002900125eb8103e1bad304330403754003100140f46084607e6ea8c108c0fcdd500099820992cc004c0dcc0fcdd5000c4c966002607060806ea8c0bcc104dd5181798209baa0038980d198219ba80014bd7044c068cc10cdd41809000a5eb8103e1bad304330403754003100140f46084607e6ea8c0b4c0fcdd5000a5eb826084005375c608200530420019bac3041001488888888a60026012013300700791112cc004c0f8006200919800802400e6464004601a0026609a66ec0dd48011ba80014bd6f7b630488888c966002606000300289801800a09c329800802402200f222229800802c00e009002800a00c40c8a05c81590484c12c0126eb4c1280126eb0c12800a6eb0c128c12c00922222229800912cc004cdc4000a400114c0103d87a8000899804801000a09a9114c00400e6eb8c150c144dd50014dd7181f98289baa002800a01098290024dd69828802244446464646464653001375a60b6003305b305c0019bad305b008998050091bad305b0069bad305b0049bad305b00248888896600260a260ba6ea800e264b30013375e60c460be6ea80041422b3001330363756609a60be6ea8c134c17cdd50009831182f9baa0658992cc004c14cc17cdd5000c4c9660033001306430613754005303a33063306430613754609e60c26ea800d2f5c130013306330503306330643061375400697ae04bd704c0dcc190c184dd5033d30103d87a800040a913259800982a98309baa0018992cc004cc0e8dd5982898319baa305130633754002605660c66ea81a6264b3001305730633754003132598009834800c4c96600260b260ca6ea80062646464646464646465300130720019bae30720099bad307200898390034c1c801660e40093072003992cc004c1c00062b3001304b306f0018b44c19cc1bc00506d4590711baa30720024888888896600260f601313305a307a00f13305a00513305a00413305a00313305a00213305b008132598009835983b9baa0018992cc004cc140dd59833983c9baa30673079375400260c660f26ea81fe264b300130713079375400313259800983f800c4c8c96600260e060f86ea800a264646464646464646464653001308b010019bae308b0100b9bad308b010099845808044c22c0401e61160200d308b010059845808024dd6984580801cc9660026112020031598009832184400800c5a261000261100200284300a2c845008dd518458080124444444444b300130960100b89983a184a8080a09983380389983a00309983a80289983a80209983a8018992cc004c21804006264b300130980100189983b184b8080080c459095011849809baa00b8acc004c228040062b300130930137540170178b2128028b2120024240046122026ea802a2c849808611602002611402002611202002611002002610e02002610c02002610a0200261080200261060200261040200260fa6ea800a2c83d0566002b30013375e60aa660fc608660f86ea8208052f5c060fe60f86ea8c1fcc1f0dd51835183e1baa01a899baf30553307e3043307c37541040297ae0307f307c375460fe60f86ea8c1a8c1f0dd5002452820f28acc004cdc79bae307f307c375402e6eb8c1fcc1f0dd5000c4c96600260e060f86ea8006264b300133055375660d860fc6ea8c1b0c1f8dd50009834183f1baa0038992cc004c1c8c1f8dd5000c4c8c8c8cc896600261100200713259800983c1842009baa001899192cc004c22c0400a264b300198008214c1bcc22004dd504700d30103d87a8000416d13259800983e1844009baa0018acc00660026118026112026ea800660f0661160260c4661160260ac6112026ea823c052f5c097ae098149984580983c1984580983c1984580983c19845809ba90454bd7019845809846009844809baa0243308b013077308901375401c66116026ea00f8cc22c04c1e0cc22c04dd401799845809ba8337006eb4c23004c22404dd5005acc004cdc41bad3070308901375401605f13370666e0ccdc119b823370205e6eb4c1c0c22404dd50059bad308c01308901375460ee6112026ea802d208080a0f6f4acdbe01b48202c227efa8052080897a8a9984380a49015a001642180497ae04bd7025eb812f5c19800982f98381844809baa08f01983b9844809baa00e81c2074a60103d87a8000414915980099912cc004c96600261000200314a3159800984180800c528c5282112024224046114026ea8cc158c23804c22c04dd50011847009845809baa0018992cc004c1fc00629462b30013083010018a518a50422404844808c22804dd51982b183c9845809baa0023079308b01375400314a0844008c11cc158c22404dd503f9823983c1984580983c1984580983119845809ba83370205e6eb4c13cc22404dd504780a5eb80cc22c06600294698103d87a8000a60103d879800042180497ae03308b0130783308b0130623308b01375066e000bcdd698279844809baa08f014bd701984580cc00528d300103d87a8000a60103d879800042180497ae04bd7044c96600266ebcc1d0c22804dd5040009ba69800983018389845009baa09001800c0fd03b456600264b3001307e308a013754003133223371266e08dd69848008009bad309001309101002337046eb4c24004008dd69848009848808009845809baa308e01308b0137540026116026ea8cc168010c128c1ecc22c04dd5008459088011982c01c81fc56600260ea07f15980099b89375a609e6114026ea803c0e62b300132323298009bad3090010019bad3090013091010019bae3052308d01375412603375660a8611a026ea820c06612002004911112cc004c1f401626464b30010018cc00411e6106026612c0200497ae0981a1984b009841809984b00a6103d87a80003309601085014bd7025eb83300198009bae3097013094013754007375c6104026128026ea800e00e83ca910100a441008032096a6103d87a80004199159800984c00800c4c8cc8966002611402003159800984b809baa003801459098014566002611c02003159800984b809baa003801459098014566002611602003159800984b809baa00380145909801456600266e1d20060018acc004c25c04dd5001c00a2c84c00a2b300130710018991919194c004c278040066eb4c2780400e6eb4c278040092225980098510080244cc20004c2840401c566002612202613a026ea800e264646644b300130a601003806c590a3011bad30a301001375c614602004614602002613c026ea800e2c84d80a2c84f808613c02002613a02002613802002612e026ea800e2b30013370e9005000c566002612e026ea800e005164260051642500484a0090940121280242500484a0084cdd780099ba548020cc25c04010cc25c04dd40041984b809ba80073309701086014bd70184a009baa0013259800984400984a009baa0018984c00984a809baa0018b21240233060004306d33096013097013094013754612e0200297ae08b212a02425404660fe09a466ebcc25c04c25004dd5184b80984a009baa308201309401375400200460d666128026ea400d2f5c114a284780861200200264b30015980099b8900148002294229410890144cc2380530106d8799f4040ff003308e014c10100003308e014c10100004bd7044cc23804c23c04008cc23804dd40009984700a610100004bd70211202375a611c02611e02002661180200266118026ea16600266e240fd20008a4001132337066eb4c23804004dd69847009847808009845009baa33059305403f30493071308a01375404a8438092f5c114a31533088014901243c65787065637465643e204d757374207061792064656274206d696e74696e67206665650016421c05153308801491253c65787065637465643e204d696e20636f6c6c61746572616c20756e7361746973666965640016421c05153308801491213c65787065637465643e204e6f6e706f736974697665206d696e74656420616d740016421c05153308801491203c65787065637465643e20556e646572636f6c6c61746572697a6564204344500016421c05153308801491223c65787065637465643e204d696e7465642076616c756520697320696e76616c69640016421c0460f0661160260ee6112026ea823c04cc22c04c23004c22404dd501225eb822a6610e029201203c65787065637465643e20496e636f72726563742074782076616c69646974790016421805153308701491203c65787065637465643e20434450206f757470757420697320696e76616c69640016421805164218046607407605908401422404646644b3001307d0018801456600260ea00313305900230543304248050006264b3001307e308a0137540031308e01308b0137540031642200464b3001308201308a01375400314c0103d87a80008983d19846809982d0019847009845809baa0014bd702110023233225980099b8800248002260f86611e0260f86611e026ea0c1a4004cc23c04dd4183480125eb812f5c1159800983c00144c1f0cc23c04c1f0cc23c04dd400099847809ba80024bd7025eb82298103d87a8000422804845008dd69847008009bad308e01308f01001308a01375460a866084900a1833000a10e02421c0464b3001307c0018acc006600294294294508601454cc21c05240101570016898241846009844809baa002421805159800984000800c4c96600264b3001308201308a0137540031337126eb4c1e4c22c04dd50011bad308e01308b01375400316422004611a026114026ea8c1e0c22804dd5182b9845009baa080018a9984400a48101580016898249846809845009baa001421c0464b300133061375660f06114026ea8004c23404c22804dd5001c4c96600260fc6114026ea800626464646644b30013094010038998399849808028803459091011848808009bad309101002309101001309001001308b0137540031642200460e460e26114026ea80062c843808c96600260fa00313259800983f1845009baa0018983c9845809baa308e01308b01375400316422004660786eb0c1e0c22804dd5040009bad308d01308a013754063159800984080800c4c96600260fc6114026ea80062611c026116026ea80062c844008cc0f0dd618389845009baa08001375a611a026114026ea80c62a66110029201014f0016421c04843808c22004dd501844c96600260fa6112026ea8006264b3001307e308a01375400313232325980098490080144cc1c4c2440400c4c134c24404c23804dd500245908f011848008009848008009845809baa0018b211002308d01308a01375400316421c04660aa6eacc140c22404dd503f98149984580983119845809846009844809baa0024bd7025eb8108601210c0230870137540026eb4c1bcc22004dd500698279843809baa00c8b211002375a611202002610a026ea80062c841008c21c040122c842808dd69842808009bad308501003308501001308401001307f37540031641f060cc60ca60fc6ea8c1b0c1f8dd5000c5907b184000983e9baa0018b20f43302e0300248a9983d2491b3c65787065637465643e2077726f6e6720636f6c6c206173736574001641e5153307a491193c65787065637465643e204d697865642076657273696f6e73001641e460fc0031641f060f46ea80062c83b8c184c180c1e4dd51833983c9baa0018b20ec307b307837540031641d4660520560351641e0307200130710013070001306f001306e001306d001306c001306b0013066375400316418c60d000316419860c86ea80062c8308c12cc128c18cdd5182898319baa0018b20c030653062375400316417c6602602a6eb4c1900322a660be92012b3c65787065637465643e2043445043726561746f72206f757470757420646f6573206e6f74206d61746368001641786e9520048b20ba33011012375a60c4019153305d4901203c65787065637465643e2043445043726561746f724e4654206d697373696e670016417116417060c260bc6ea800e2c82d860b600260b400260b200260b000260ae00260ac0041159800981300ac4cc88ca6002660140020472232598009814000c4c8c96600260760050048b2070375c6072002606a6ea800e2b3001302c001899192cc004c0ec00a0091640e06eb8c0e4004c0d4dd5001c590322064303337540053758606a606c606c005300300348889660026052606a6ea8012264b30013300e3756604a606e6ea8c094c0dcdd5000981d181b9baa03d8992cc006600200f301f3038375407d4c103d87a8000402d13259800981e800c4c966002605a60726ea80062646464646465300130430019bad30430049bad30430039bad30430024888966002609000b1329800899912cc004c0e8006264b3001304c0018992cc004c0f0c120dd5000c4c8c8c96600260a00051332259800982098269baa00289919192cc004c15400a26603c60a8006264b300130450018992cc004c15c00626464b300130480018992cc004c16800626604660b200201316415c60aa6ea800a2b3001304c00189919194c004dd6982d800cdd6982d801cdd6982d8012444b3001305f00480745905c0c16c004c168004c154dd500145905220a43053375400260ac00316415060a46ea800a2b300130490018acc004c148dd500140162c829a2c827904f18281baa0018b20a430530013053001304e375400516412c609e00626606a00244b3001002804c4c9660026084609c6ea800626464653001375a60aa003375c60aa007375c60aa0049112cc004c1640122601060b201316415830550013054001304f375400316413060a2004827a2c8268dd61827000982700098249baa0018b208c304b0018b20923047375400f159800981f000c566002608e6ea801e0051641211641108220566002b3001301f3044375400314a314a08212264b30010018800c54cc11124012043445043726561746f72206f757470757420646f6573206e6f74206d61746368001001410d3001011980f1982380725eb8298107d87b9fd87980ff00980d982418229baa04ba6103d87a8000405d16410860886ea801660886ea80066eb4c12002d22259800981d80144c966002609a00313259800981e98249baa00189919191919194c004c14c0066eb8c14c01a60a600930530039829801244444b3001305900689981c182c00509981c00189981c00109981c00089981c0028084590560c14c004c148004c144004c140004c13c004c128dd5000c590471826000c5904a18241baa0048acc004c0fc00a264b3001304d0018992cc004c0f4c124dd5000c4c8c8c8c8c8ca600260a6003375c60a600d30530049829801cc14c0092222259800982c80344cc0e0c1600284cc0e000c4cc0e00084cc0e00044cc0e00140422c82b060a600260a400260a200260a0002609e00260946ea80062c8238c1300062c8250c120dd500245660026078005132598009826800c4c966002607a60926ea800626464646464646464653001375a60ac003375c60ac013375a60ac00f3056006982b002cc15801260ac00730560024888888896600260be01313303d305e01013303000513303d00413303e00313303e00213303e0010168b20b8182b000982a800982a0009829800982900098288009828000982780098251baa0018b208e304c0018b20943048375400915980099b874801800a264b3001304d0018992cc004c0f4c124dd5000c4c8c8c8c8c8c8c8c8ca60026eb4c1580066eb8c1580266eb4c15801e60ac00d3056005982b0024c15800e60ac004911111112cc004c17c02626607a60bc02026606000a26607a00826607c00626607c00426607c00202d1641703056001305500130540013053001305200130510013050001304f001304a375400316411c609800316412860906ea80122b300130220028992cc004c134006264b3001303d30493754003132323232323232323298009bae30560019bae3056009982b003cc15801a60ac00b30560049bad30560039bad30560024888888896600260be01313303d305e01013303e00613303e00513303e00413303f0030168b20b8182b000982a800982a0009829800982900098288009828000982780098251baa0018b208e304c0018b20943048375400915980099b874802800a264b3001304d0018992cc004c0f4c124dd5000c4c8c8c8c8c8c8c8c8c8c8ca60026eb8c1600066eb8c16002e60b00133058008982c003cc96600260ac0031598009818982a800c5a2609a60aa002829a2c82b8dd5182c0034c96600260ac0031598009818982a800c5a2609a60aa002829a2c82b8dd5182c002cc1600126eb4c16000e6eb4c1600092222222222598009831805c4cc104c1880504cc1080204cc10801c4cc1080184cc10c00c06a2c830060b000260ae00260ac00260aa00260a800260a600260a400260a200260a0002609e00260946ea80062c8238c1300062c8250c120dd5002456600266e1d200c0028992cc004c134006264b3001303d3049375400313232323232323232323232329800982c800cdd6982c8064dd6982c805cdd6982c8054dd6982c804cdd6982c8044dd6982c803cdd6982c8034dd6982c802cdd6982c8024dd6982c801244444444444b3001306500c899822983200709981600580e4590620c164004c160004c15c004c158004c154004c150004c14c004c148004c144004c140004c13c004c128dd5000c590471826000c5904a18241baa0048acc004cdc3a401c005132598009826800c4c966002607a60926ea80062646644b3001305100189981b1bac30500012259800801402a2646644b300130560018992cc004c118c148dd5000c4c8c96600260b20051300730590088b20ac375c60ae00260a66ea80062c8280c1540062c8298dd71829800982a0009bac305200241411641386eb4c138004c13c004c128dd5000c590471826000c5904a18241baa0048acc004cdc3a40200051323259800982700140162c8258dd7182600098241baa0048b208a41148229045208a41148229045208a1823804c590450c10c004c108004c104004c100004c0fc004c0e8dd5000c5903718109810181c9baa30273039375460780031640e93001007981d981e181e181e181e181e181c1baa03ea60103d8798000402d03440e46074606e6ea8c094c0dcdd5000c54cc0d5241253c65787065637465643e2043445043726561746f72204e46542069732070726573656e742e001640d06072606c6ea80122c81986eb0c0d0004888c966002604c0031323259800981c80140122c81b0dd7181b80098199baa0038acc004c0a80062646644b3001303a00189980f9bac30390012259800801401e33001009981d80144c004c0f000900920728b206e375a606e002607000260666ea800e2c818103018189baa002302f375404b132332259800981298189baa0018992cc004c0a8c0c8dd5000c4cc89660026072003132598009814981a9baa00189919912cc004c0f40062660446eb0c0f00048966002005132598009817981d9baa001899191980080098071bab3028303e375406844b30010018a508acc004cdc79bae30420010038a518998010011821800a07841006eb8c0fcc0f0dd5000c5903919198008009bac302a303c375400e44b30010018a60103d87a80008992cc006600266ebc00530103d87a8000a50a5140ed100189980180198210012076325980099b8f375c60820020171302d33040304130420014bd7045300103d87a800040ec6eb0c10000503e44c8c8cc896600260860071300530430068b2080375c60800026eb8c100008c100004dd6181f00120788b2074375a60740026076002606c6ea80062c8198c074c070c0d4dd51811981a9baa30380018b206c375c606c60666ea800660026eb0c084c0ccdd5014cc08cc0ccdd501cd30103d879800040191640c0606a60646ea8c0d4c0c8dd5181018191baa3035303237540031640bc6002002660106eb0c0ccc0c0dd5013010912cc004006297ae08998199818181a00099801001181a800a06440b08160888c8cc0740108c008c080c0c8dd5000acc004c08cc0bcdd5000c48cc020dd5980f98189baa00100389180e4c004dd5980f98189baa0019bae303430313754007375c603e60626ea800d01e205a222223232330010010072259800800c528456600264b300130040018acc004cdd7980e981b1baa0010078cc004dd59812181b1baa001803401500a452820668a5040cc607000314a3133002002303900140c881b0c03c0103013301400530120044590080c028004c014dd5005452689b2b200415330024911d3c65787065637465643e204e6f204344507320617265207370656e742e001601',
7
7
  };