@indigo-labs/indigo-sdk
Version:
Indigo SDK for interacting with Indigo endpoints via lucid-evolution
366 lines (349 loc) • 115 kB
JavaScript
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var index_exports = {};
__export(index_exports, {
CDPContract: () => CDPContract,
CDPCreatorContract: () => CDPCreatorContract,
CDPHelpers: () => CDPHelpers,
CollectorContract: () => CollectorContract,
GovContract: () => GovContract,
IAssetHelpers: () => IAssetHelpers,
InterestOracleContract: () => InterestOracleContract,
PriceOracleContract: () => PriceOracleContract,
TreasuryContract: () => TreasuryContract,
_cdpCreatorValidator: () => _cdpCreatorValidator,
_cdpValidator: () => _cdpValidator,
_collectorValidator: () => _collectorValidator,
_interestOracleValidator: () => _interestOracleValidator,
_treasuryValidator: () => _treasuryValidator,
addrDetails: () => addrDetails,
balance: () => balance,
calculateFeeFromPercentage: () => calculateFeeFromPercentage,
getRandomElement: () => getRandomElement,
loadSystemParamsFromFile: () => loadSystemParamsFromFile,
loadSystemParamsFromUrl: () => loadSystemParamsFromUrl,
oneDay: () => oneDay,
oneHour: () => oneHour,
oneYear: () => oneYear,
scriptRef: () => scriptRef
});
module.exports = __toCommonJS(index_exports);
// src/contracts/cdp-creator.ts
var import_lucid2 = require("@lucid-evolution/lucid");
// src/scripts/cdp-creator-validator.ts
var _cdpCreatorValidator = {
type: "PlutusV2",
description: "",
cborHex: "591a6c591a6901000032323232323232322232322323225333009323232533300c3006300e37540022646464646464646464646464646464646464a66603c603660406ea80644c8c8c8ccccc8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c88888c8c8c8c8c8c94ccc0f8c0ecc100dd50008991919192999821181e18221baa00213232533304433034490115496e636f72726563742074782076616c69646974790032325333046325333047302d00114a22a66608e6082002294452818241baa3301d303930493754004607260926ea80044c94ccc11cc1100045288a99982398208008a5114a060906ea8cc074c0c4c124dd5001181898249baa00114a06034606e66094606e660946036660946ea0cdc08071bad30163048375408897ae03304a3330454a298103d87a80004c0103d87980004bd7019825181b99825180d998251ba83370001c6eb4c058c120dd502225eb80cc128ccc11528a6103d87a80004c0103d87980004bd7025eb80c064c058c11cdd501d0a9998221981a24811754582069736e74207369676e6564206279206f776e657200330283758602a608e6ea80e804054ccc110cc0d124011543445043726561746f724e4654206d697373696e67003302e3756605e608e6ea8c0bcc11cdd5003181b98239baa04315333044330344912043445043726561746f72206f757470757420646f6573206e6f74206d617463680033333014008301a330490054bd70260107d87b9fd87980ff00301330373047375408698103d87a80001533304433034491174d696e7465642076616c756520697320696e76616c6964003375e6e98c0c8dd5981898239baa03a374c66660306026604e608e6ea810cdd7181798239baa043375c606e608e6ea800803c54ccc110cc0d1240115434450206f757470757420697320696e76616c69640033333014008303633049301a33049304a304b304b304b304b304b3047375408697ae04bd7019ba548010cc124c0d8cc124c0d8cc124c0d8cc124dd480825eb80cc124c0dcc11cdd5001198249ba800f33049303633049375001a660926ea0cdc01bad303730473754002a66608866e20dd6981398239baa00100d13370666e0ccdc119b823370201a6eb4c09cc11cdd50009bad303730473754605e608e6ea8005208080a0f6f4acdbe01b48202c227efa8052080897a15330454901254d75737420686f6c643a206e6f77203e206c61737420696e7465726573742075706461746500164bd7025eb812f5c097ae033012301330273047375408601c980103d87980001325332330463303649115556e646572636f6c6c61746572697a65642043445000337126eb4c0e4c124dd51980c9980c981998249baa00430383304b3750600202297ae03039304937540046eb4c0e4c124dd51980c981c198259ba830010104bd70181c198259ba833704906400a410112f497ae01533304633036491164e6f6e706f736974697665206d696e74656420616d7400302e011153330463303649012e4d7573742070726f76696465206d6f7265207468616e206d696e436f6c6c61746572616c496e4c6f76656c61636500337126eb4c060c124dd50228080a9998231981b249174f7261636c652063616e2774206265206578706972656400333046325333047304130493754002266e24dd6981918251baa003375a609a60946ea800454cc121240124496e636f7272656374207472616e73616374696f6e2076616c69646974792072616e67650016303930493754606260926ea8c060c124dd501e2504a226606c9201194d757374207061792064656274206d696e74696e67206665650033322232533304a3032002132533304b3232302c00232533304d304a00115333051305037540042930b0a99982698238008a99982898281baa00214985854ccc134c0cc00454ccc144c140dd50010a4c2c2c609c6ea8004c94ccc130c124c138dd50008982918279baa001153304d49117436f756c64206e6f742066696e642072656465656d6572001632323300100100722533305200114c0103d87a8000132323253330513375e00c60a600626086660ac00297ae0133005005002305300230560023054001302133050303e304e375400297ae013333301b00f302133050303d33050002330504c103d87a80004bd7025eb8130107d87b9fd87980ff00330193756606c609c6ea8c0d8c138dd5000801a60103d879800014a064a66609e0022a66098921284d757374207370656e64203120696e7075742066726f6d20636f6c6c6563746f722073637269707400161533304f305200113051001153304c4901284d757374207370656e64203120696e7075742066726f6d20636f6c6c6563746f722073637269707400163303301123375e607c609c6ea8c0f8c138dd5181b18271baa00100214a2603e6609c6ea40092f5c06eacc130c134c134c134c134c134c134c134c134c134c124dd501e1bae30133049375408a6644a66609066e2400520001480004dd6981d98259baa303a3304d375066e0cc00cdd6981d98259baa3301b303a3304d375000297ae0002375a607660966ea8c0e8cc134dd419b8248320052080897a4bd7025eb80c04cc124dd50021bad303930493754660326070660966ea00452f5c0607260926ea80085280a5014a06e092080897a14a064a66608a6084608e6ea800454cc11924012543616e6e6f74206f70656e206120434450206f6620612064656c69737465642061737365740016132320025333046304330483754002264646464a66609c60a20042649318118018b1bad304f001304f002304d001304937540022c6054605060906ea8c0c0c120dd51929998250008a99823a492145787065637465642065786163746c79206f6e65206f7261636c6520696e70757400161533304a304d0011304c001153304749012145787065637465642065786163746c79206f6e65206f7261636c6520696e707574001633302c00a304b30483754609660906ea8005300103d8798000302f3047375400429405280a5014a0294052819190012999822182098231baa0011323232323232533304e3051002132498c08c00c58dd698278009827801182680098268011bad304b001304737540022c6050604c608c6ea8c0b8c118dd51929998240008a99822a492a45787065637465642065786163746c79206f6e6520696e746572657374206f7261636c6520696e707574001615333048304b0011304a001153304549012a45787065637465642065786163746c79206f6e6520696e746572657374206f7261636c6520696e707574001633302a008302630463754002980103d87980003048304537540042c64a666084607e00226464a6660906096004264932999822182098231baa001132323232323232325333050305300213232498c94ccc138c12c0044c8c8c8c94ccc158c16400852616375a60ae00260ae0046eb4c154004c144dd50018a9998271824000899191919299982b182c8010a4c2c6eb4c15c004c15c008dd6982a80098289baa00316304f3754004604800e2c60a200260a20046eb4c13c004c13c008dd718268009826801182580098239baa00116163049001304537540042a666084607800226464a6660906096004264932999822182098231baa001132323232323232323232323232323232323232323232323232323232533306430670021323232323232323232323232498c10c030c10c03cc108040c104044c100048c0fc04cc0f8050c0f4054c0f0058c0ec05cc0f4060c94ccc184c1780044c8c94ccc19cc1a80084c926303c001163068001306437540342a6660c260b600226464a6660ce60d4004264932999831983018329baa001132325333069306c002132498c10400458c1a8004c198dd50008b0b183400098321baa01a16306237540322c60ca00260ca00464a6660c460c20022a6660bc60b060c0002294454ccc178c16cc1800045280b0b1baa3063001306300230610013061002305f001305f002305d001305d002305b001305b0023059001305900230570013057002305500130550023053001305300230510013051002304f001304f002304d001304d002375c6096002608e6ea80045858c124004c114dd50010b18219baa0013025302330433754605660866ea8c94ccc11400454cc10924012145787065637465642065786163746c79206f6e652069617373657420696e707574001615333045304800113047001153304249012145787065637465642065786163746c79206f6e652069617373657420696e707574001633302700530463047304730473043375407e980103d8798000303230423754605460846ea8004c110c104dd50008b198170020189bac304230430023758608200260820046eb0c0fc004c0ecdd50171181d181d981d981d981d981d981d800911999804001244100488100001233225333034302e4800052f5bded8c0264646600200297adef6c6022533303b00113303c337606ea4014dd3001a5eb7bdb1804c8c8c8c94ccc0ecc068cc0540240084cc100cdd81ba9009374c00e00a2a66607666e3c0240084cc100cdd81ba9009374c00e00626608066ec0dd48011ba6001330060060033756607a0066eb8c0ec008c0fc008c0f4004c8cc0040052f5bded8c044a66607400226607666ec0dd4801a610101004bd6f7b630099191919299981d180c9980a00380109981f99bb0375200e9810101000051533303a3371e00e00426607e66ec0dd4803a6101010000313303f337606ea4008dd4000998030030019bad303c003375c6074004607c00460780026eb8c094c0d4dd50009bae301d303537540024444464660020026603e00ca66606c606660706ea80144c88cdd79815981d9baa302b303b3754002004607860726ea80144c88cdd79815981d9baa001002303c3039375400a44a66607600229404c94ccc0e0c94ccc0e4cdd7980e181e1baa001007132533303e00114a22a66607c60820022646464a66607a60586eb8c10c00c54ccc0f4c0b000454ccc0f4c0e8c0fcdd50048a99981e99b89480000084cdc48012410137dc0429404cdc4a400000429405281bae30423043002375a6082608460840026eb0c1000045281919800800991998008009bab3026303e3754006646600200201244a666082002297adef6c6013233043337606ea4dd718200009ba632330010013756608400444a666088002297adef6c6013233046337606ea4dd718218009ba83370290001bad3044001330030033048002304600133003003304500230430012225333041002100113233300400430450033333301b002375c60800026eacc104004888c94ccc108c0740045300103d87a80001303433047374c00297ae03233300100100300222253330480021001132333004004304c00333333023002375c608e0026eb4c120004888c94ccc124c1180045300103d87a80001303b3304e375000297ae03370000400203e6094004030608600444a66607e002297ae01323332223233001001003225333045001100313233047374e6608e6ea4018cc11cdd49bae30440013304737506eb4c1140052f5c0660060066092004608e0026eb8c0f8004dd5981f80099801801982180118208008a50303e00214a2266006006002607c0024606c606e606e606e606e606e606e606e606e0024606a606c606c606c606c606c606c606c002446042660686ea0cdc199b82375a604460646ea8008dd6981118191baa0014820225e92f5c04444a666060605a002200826666601a0080066464004646600200200444a66606e002293099299981c0008a4c26464a66606c606660706ea8cc040dd7181c181e0021bae30380021330050053303b0020011533037491326b65797320696e206173736f63696174697665206c697374206172656e277420696e20617363656e64696e67206f726465720016303c002303a001303a00133035337606ea4008dd4000a5eb7bdb180888c94ccc0d0c03c004530103d87a80001302633039374c00297ae033333011001005004222325333037303400114c103d87a8000130293303c375000297ae03370000200401a0144603c6606264a66605a604e605e6ea80044c94ccc0b8c94ccc0ccc0c800454ccc0bcc0a4c0c40045288a999817981618188008a5016163754603260626ea8c084c0c4dd500189802198199ba80014bd7009802198199ba833700002900125eb80dd6981998181baa0011001301f302f3754603e605e6ea8004cc0c4c94ccc0b4c09cc0bcdd5000899299981719299981998190008a999817981498188008a511533302f302c303100114a02c2c6ea8c064c0c4dd5180c98189baa0031300433033375000297ae01300433033375066e0000520014bd701bad3033303037540022002603e605e6ea8c05cc0bcdd5000a5eb80dd2a40044464a66605860520022a6660586052605c6ea8008530103d87a800014c103d87980001533302c30120011533302c3012302e3754004298103d87a800014c103d87b800013232533302e3028001132533302f33710006002298103d87980001533302f337100020062980103d87b800014c103d87a8000375a606860626ea801054ccc0b8c0ac004530103d87b800014c103d8798000302f37540066eb4c0c8c0bcdd500198169baa002232533302a30270011323253330303033002149858dd7181880098169baa0021533302a30240011533302e302d37540042930b0b18159baa001253330283025302a375400226464a66605c60620042930b1bad302f001302b37540022c44a66605066e40008004530103d8798000153330283371e0040022980103d87a800014c103d87b80002533302a00114a2294094ccc094c088c09cdd5000899191919299981698180010a4c2c6eb8c0b8004c0b8008dd7181600098141baa0011622222323300100100622533302e00113302f337606ea4018dd3002a5eb7bdb1804c8c8c8c94ccc0b8c034cc01c0280084cc0cccdd81ba900a374c01200a2a66605c66e3c0280084c94ccc0bcc0b0c0c4dd500089981a19bb03752016606a60646ea80040104010ccc0200280240044cc0cccdd81ba9002374c0026600c00c0066eacc0c000cdd718170011819001181800091111191980080080311299981680089981719bb0375200c6ea00152f5bded8c0264646464a66605a60186600e01400426606466ec0dd48051ba80090051533302d3371e014004264a66605c605660606ea80044cc0cccdd81ba900b303430313754002008200866601001401200226606466ec0dd48011ba800133006006003375a605e0066eb8c0b4008c0c4008c0bc004dd7a6103d8798000375c604e0066eb4c09c008dd698138009bad302730280013027001302600130213754032266646464446464646464a666050604a60546ea80044c94ccc0a4c08cc0acdd500089919192999818181980109919192999817981618189baa00113301f3300f3303437526e61241084d697373696e6720003303437526e60038cc0d0dd49b984901172075706772616465206d696e74696e6720706f6c696379004bd7024900330133010301d009375c606a60646ea800454cc0c0cc03ccc0d0dd49b98491084d697373696e6720003303437526e60038cc0d0dd49b9849010d20757067726164652070617468004bd70249001632533302f302930313754002298103d87a8000130213303437526eb8c0c8c8cdd8181b000981b181b8009bac30353032375400297ae032330010013756603460646ea800c894ccc0d00045300103d87a80001323253330323371e6eb8c0d00080244c090cc0dcdd39981b981a0011981b981a80125eb812f5c02660080080026070004606c002a66605a6054605e6ea80044c8c8c8c94ccc0d4c0e00084c926323300100100222533303700114984c8cc00c00cc0ec008c8c8dd7181c0011bae30360013039001163756606c002606c0046eb4c0d0004c0c0dd50008b1808980798179baa3017302f37540022c606200266602200a01098103d8798000375c605e60586ea800458c06cc0acdd5180d98159baa3013302b3754605c60566ea800458cc060dd6181680200d9bab302c302d302d302d002375860560026056002604c6ea806488dcc9919199800800802244100222533302a0021001132333004004302e00353330273024371a00426e600044cdc500119b8a00537300026e64dd718160011b98001300100122533302400114bd7009981298111813000998010011813800a490a43445043726561746f7200300b3021375403a46048604a604a00244646600200200644a66604800229404c94ccc084cdc79bae302700200414a2266006006002604e0024a6660386004603c6ea80044c088c07cdd50008a9980ea481134e6f7420616e20696e6c696e6520646174756d0016370e9002111191980300211801180498109baa001533301c3019301e3754002246600e6eacc020c080dd50008018918029998049bab3008302037540026eb8c040c080dd50019bae3008302037540066e21200022323300100100322533301f00114bd7009919299980e980280109981100119802002000899802002000981180118108009118091998020011bae300b301b37540026eb8c00cc06cdd50009180e180e80091119299980c1809180d1baa0011480004dd6980f180d9baa0013253330183012301a37540022980103d87a8000132330010013756603e60386ea8008894ccc078004530103d87a80001323232533301d3371e00e6eb8c07c00c4c03ccc088dd4000a5eb804cc014014008dd6980f80118110011810000991980080080211299980e8008a6103d87a80001323232533301c3371e00e6eb8c07800c4c038cc084dd3000a5eb804cc014014008dd5980f0011810801180f8009180d180d980d980d980d8009191980080080111299980c8008a5eb7bdb1804c8c8c8c94ccc064c020008400c4cc078cdd81ba9002374c0026600c00c0066eacc06c00cdd7180c801180e801180d8009b8f4881002253330123330120014a094454cc04c0084004400488c8cc00400400c894ccc05c0045300103d87a80001323253330153375e601060306ea80080144c01ccc0680092f5c0266008008002603600460320026e952000230140013012300f37540022c60226024004602000260186ea80045261365632533300830050011323232323232323253330143017002149858dd6980a800980a8011bad30130013013002375a602200260220046eb8c03c004c02cdd50018a99980418010008a99980618059baa00314985858c024dd50011b8748008c94ccc014c008c01c00454ccc024c020004526161637540046e1d20005734ae7155ceaab9e5573eae815d0aba21"
};
// src/helpers/lucid-utils.ts
var import_lucid = require("@lucid-evolution/lucid");
async function addrDetails(lucid) {
const addr = await lucid.wallet().address();
return [
(0, import_lucid.paymentCredentialOf)(addr),
(0, import_lucid.stakeCredentialOf)(addr)
];
}
async function scriptRef(ref, lucid) {
const utxos = await lucid.utxosByOutRef([{ txHash: ref.input.transactionId, outputIndex: ref.input.index }]);
if (utxos.length === 0)
throw "Unable to locate script ref.";
return utxos[0];
}
function balance(utxos) {
return utxos.reduce((acc, utxo) => (0, import_lucid.addAssets)(acc, utxo.assets), {});
}
var getRandomElement = (arr) => arr.length ? arr[Math.floor(Math.random() * arr.length)] : void 0;
// src/contracts/cdp-creator.ts
var CDPCreatorContract = class _CDPCreatorContract {
static address(params, lucid) {
const network = lucid.config().network;
if (!network) {
throw new Error("Network configuration is undefined");
}
return (0, import_lucid2.validatorToAddress)(network, _CDPCreatorContract.validator(params));
}
static validator(params) {
return {
type: "PlutusV2",
script: (0, import_lucid2.applyParamsToScript)(_cdpCreatorValidator.cborHex, [
new import_lucid2.Constr(0, [
new import_lucid2.Constr(0, [
params.cdpCreatorNft[0].unCurrencySymbol,
(0, import_lucid2.fromText)(params.cdpCreatorNft[1].unTokenName)
]),
params.cdpAssetCs.unCurrencySymbol,
new import_lucid2.Constr(0, [
params.cdpAuthTk[0].unCurrencySymbol,
(0, import_lucid2.fromText)(params.cdpAuthTk[1].unTokenName)
]),
new import_lucid2.Constr(0, [
params.iAssetAuthTk[0].unCurrencySymbol,
(0, import_lucid2.fromText)(params.iAssetAuthTk[1].unTokenName)
]),
new import_lucid2.Constr(0, [
params.versionRecordToken[0].unCurrencySymbol,
(0, import_lucid2.fromText)(params.versionRecordToken[1].unTokenName)
]),
params.cdpScriptHash,
params.collectorValHash,
BigInt(params.minCollateralInLovelace),
BigInt(params.biasTime)
])
])
};
}
static validatorHash(params) {
return (0, import_lucid2.validatorToScriptHash)(_CDPCreatorContract.validator(params));
}
static redeemer(hash, mintedAmount, collateralAmount, currentTime) {
if (hash.type !== "Key") throw new Error("Cannot support script hash.");
return new import_lucid2.Constr(0, [
hash.hash,
BigInt(mintedAmount),
BigInt(collateralAmount),
currentTime
]);
}
static scriptRef(params, lucid) {
return scriptRef(params.cdpCreatorValidatorRef, lucid);
}
};
// src/contracts/cdp.ts
var import_lucid9 = require("@lucid-evolution/lucid");
// src/helpers/asset-helpers.ts
var import_lucid3 = require("@lucid-evolution/lucid");
var IAssetHelpers = class {
static async findIAssetByRef(outRef, params, lucid) {
throw new Error("Not implemented");
}
static async findIAssetByName(assetName, params, lucid) {
return lucid.utxosAtWithUnit(
CDPContract.address(params.cdpParams, lucid),
params.cdpParams.iAssetAuthToken[0].unCurrencySymbol + (0, import_lucid3.fromText)(params.cdpParams.iAssetAuthToken[1].unTokenName)
).then((utxos) => utxos.map((utxo) => {
if (!utxo.datum) return void 0;
const datum = CDPContract.decodeCdpDatum(utxo.datum);
if (datum.type !== "IAsset") return void 0;
if (datum.name !== assetName) return void 0;
return { utxo, datum };
}).find((utxo) => utxo !== void 0)).then((result) => {
if (!result) throw "Unable to locate IAsset by name.";
return result;
});
}
};
// src/contracts/price-oracle.ts
var import_lucid4 = require("@lucid-evolution/lucid");
var PriceOracleContract = class {
static decodePriceOracleDatum(datum) {
const oracleDatum = import_lucid4.Data.from(datum);
if (oracleDatum.index != 0 || oracleDatum.fields.length !== 2 || oracleDatum.fields[0].index !== 0)
throw "Invalid Price Oracle Datum provided.";
return {
price: oracleDatum.fields[0].fields[0],
expiration: oracleDatum.fields[1]
};
}
static encodePriceOracleDatum(datum) {
return import_lucid4.Data.to(
new import_lucid4.Constr(0, [
new import_lucid4.Constr(0, [datum.price]),
datum.expiration
])
);
}
};
// src/contracts/collector.ts
var import_lucid5 = require("@lucid-evolution/lucid");
// src/scripts/collector-validator.ts
var _collectorValidator = {
type: "PlutusV2",
description: "Generated by Aiken",
cborHex: "590e7f590e7c010000323232323232323222323223232322533300a323232533300d3007300f37540022646464646464646464a6466602e60280122646464646464a66603a6034603e6ea80044c8c94ccc07ccc03524012f4d757374207370656e642073696e676c6520636f6c6c6563746f7220696e7075742077697468206f6e6c79204144410032533302400114a02a666048604e00226466ebcc058c090dd5180b18121baa001374c64a666044603e002297adef6c6013232330010014bd6f7b63011299981480089981519bb04c01014000374c00697adef6c60132323232533302930123300e48810000213302e337609801014000374c00e00a2a666052602600426605c66ec13001014000374c00e00626605c66ec0dd48011ba600133006006003375660560066eb8c0a4008c0b4008c0ac004c8cc0040052f5bded8c044a66605000226605266ec13001014000375000697adef6c60132323232533302830113300d48810000213302d337609801014000375000e00a2a666050602400426605a66ec13001014000375000e00626605a66ec0dd48011ba800133006006003375a60540066eb8c0a0008c0b0008c0a8004ccc030dd5980b18121baa30163024375400291100488100302600114a0660166eb0c040c088dd500a919baf301130233754602260466ea8c054c08cdd5000801099806a49364d7573742070726f6475636520636f6c6c6563746f72206f7574707574207769746820696e63726561736564204144412076616c75650033322232330010013300f0045333023302030253754006264466ebcc058c0a0dd5180b18141baa001002302930263754006264466ebcc058c0a0dd5000801181498131baa00322533302800114a0264a66604a64a66604c66ebcc04cc0a4dd5000a60107d87b9fd87980ff00132533302b00114a22a666056605c0022646464a66605460286eb8c0c000c54ccc0a8c05000454ccc0a8c09cc0b0dd526103d87a80001533302a337129000001099b89002482026fb808528099b89480000085280a50375c605e60600046eb4c0b8c0bcc0bc004dd618168008a503233001001323330010013756603a60566ea800cc8cc004004020894ccc0b800452f5bded8c02646606066ec0dd49bae302d001374c64660020026eacc0bc008894ccc0c400452f5bded8c02646606666ec0dd49bae3030001375066e052000375a606200266006006606a00460660026600600660640046060002444a66605c00420022646660080086064006666660240046eb8c0b4004dd59817000911192999817980a8008a60103d87a80001301f33034374c00297ae0323330010010030022225333035002100113233300400430390033333301a002375c60680026eb4c0d4004888c94ccc0d8c0cc0045300103d87a8000130263303b375000297ae03370000400202e606e004020606000444a666058002297ae01323332223233001001003225333032001100313233034374e660686ea4018cc0d0dd49bae30310013303437506eb4c0c80052f5c066006006606c00460680026eb8c0ac004dd5981600099801801981800118170008a50302b00214a226600600600260560026eb0c030c088dd500a99ba548008cc090c03ccc090004cc091300103d87a80004bd7025eb80c94ccc080c069200010011333330070014881003232002323300100100222533302700114984c94ccc0a0004526132325333026302330283754660166eb8c0a0c0b0010dd71814001099802802998158010008a99813a49326b65797320696e206173736f63696174697665206c697374206172656e277420696e20617363656e64696e67206f726465720016302c002302a001302a00133025337609810140004c010101004bd6f7b63011119299981218050008a60103d87a80001301433029374c00297ae03333300b0014890048008888c94ccc09cc090004530103d87a8000130173302c375000297ae03370000200401000a6eacc050c088dd5180a18111baa00214a0601e60426ea8c03cc084dd5180998109baa0013023302037540022c660166eb0c034c07cdd500900791299980e99b9000200114c103d87980001533301d3371e0040022980103d87a800014c103d87b80002533301f00114a2294088888c8cc004004018894ccc0900044cc094cdd81ba9006374c00a97adef6c601323232325333024300d3300700a002133029337606ea4028dd30048028a99981219b8f00a002132533302530223027375400226605466ec0dd4805981598141baa001004100433300800a009001133029337606ea4008dd3000998030030019bab3026003375c60480046050004604c00244444646600200200c44a66604600226604866ec0dd48031ba80054bd6f7b630099191919299981198061980380500109981419bb037520146ea002401454ccc08ccdc78050010992999812181098131baa001133029337606ea402cc0a8c09cdd5000802080219980400500480089981419bb037520046ea0004cc01801800cdd698128019bae302300230270023025001375e98103d87980001325333018301200a13233007491334d757374207370656e64207374616b696e67206d616e61676572207769746820446973747269627574652072656465656d65720032533301e00114a02a66603c60420022646466ebc009300103d87b800032533301c30190011323253330223025002149858dd71811800980f9baa0021533301c301600115333020301f37540042930b0a99980e180a8008a999810180f9baa00214985854ccc070cdc3a400c00226464a666044604a0042930b1bad3023001301f37540042a66603866e1d200800115333020301f37540042930b0a99980e19b874802800454ccc080c07cdd50010a4c2c2a66603866e1d200c00115333020301f37540042930b0b180e9baa00132533301b3018301d375400226042603c6ea800454cc071240117436f756c64206e6f742066696e642072656465656d6572001632323300100137566044604660466046604660466046604660466046603e6ea8048894ccc0840045300103d87a8000132323253330203375e00c6044006260206604a00297ae01330050050023022002302500230230013374a90011980f9805980e9baa30200014bd700a50330053758601460386ea803c8cc00cdd59807980e9baa300f301d3754002004601260366ea805c4cccc8c8c8888c8c8c8c8c94ccc08cc080c094dd50008992999812180f18131baa0011323232533302b302e0021323232533302a3027302c3754002266030660206605e6ea4dcc2481084d697373696e6720003302f37526e6003ccc0bcdd49b984901172075706772616465206d696e74696e6720706f6c696379004bd70249003322323300100100322533303200114a0264a66605e66e3cdd7181a8010020a5113300300300130350013011323300100100a22533303000114bd6f7b6300991919192999818180d001080189981a99bb037520046e98004cc01801800cdd598190019bae303000230340023032001375c6060605a6ea800454cc0accc040cc0bcdd49b98491084d697373696e6720003302f37526e6003ccc0bcdd49b9849010d20757067726164652070617468004bd70249001632533302a3024302c3754002298103d87a80001301a3302f37526eb8c0b4c8cdd81818800981898190009bac3030302d375400297ae032330010013756603e605a6ea800c894ccc0bc0045300103d87a800013232533302d3371e6eb8c0bc0080244c074cc0c8dd399819181780119819181800125eb812f5c026600800800260660046062002a666050604a60546ea80044c8c8c8c94ccc0c0c0cc0084c926323300100100222533303200114984c8cc00c00cc0d8008c8c8dd718198011bae30310013034001163756606200260620046eb4c0bc004c0acdd50008b192999814181098151baa0011302e302b37540022a660529201134e6f7420616e20696e6c696e6520646174756d00163014302a3754603860546ea800458c0b0004c8cc0480188c008c070c0a8dd5000a999812981118139baa4c0103d8798000123300f3756603660526ea800402448cdc4240006660226eacc06cc0a4dd50009bae3017302937540126eb8c06cc0a4dd50049bae302a302737540022c6028604c6ea8c050c098dd5180c18131baa3029302637540022c660226eb0c0a0010054dd598139814181418140011bac3026001302600130213754004446e64c8c8ccc0040040112201002225333024002100113233300400430280035333021301e371a00426e600044cdc500119b8a00537300026e64dd718130011b98001300100122533301e00114bd7009980f980e1810000998010011810800a4909436f6c6c6563746f72003009301b375401e600a60366ea805c88c04cccc010008dd71805180e1baa001375c601c60386ea8004dc7a45002223253330193013301b37540022900009bad301f301c375400264a666032602660366ea8004530103d87a80001323300100137566040603a6ea8008894ccc07c004530103d87a80001323232533301e3371e00e6eb8c08000c4c038cc08cdd4000a5eb804cc014014008dd6981000118118011810800991980080080211299980f0008a6103d87a80001323232533301d3371e00e6eb8c07c00c4c034cc088dd3000a5eb804cc014014008dd5980f8011811001181000091191980080080191299980e0008a5eb804c8c94ccc068c0140084cc07c008cc0100100044cc010010004c080008c0780048c068c06cc06c004894ccc050ccc0500052825115330150021001100122323300100100322533301900114c103d87a80001323253330173375e601060346ea80080144c01ccc0700092f5c0266008008002603a00460360026e9520002301600130103754012602660206ea800458c004c03cdd5001918091809800980818069baa00114984d958c94ccc024c01800454ccc034c030dd50020a4c2c2a66601260060022a66601a60186ea8010526161533300930020011533300d300c37540082930b0b18051baa003370e90021b8748008c94ccc014c008c01c00454ccc024c020004526161637540046e1d20005734ae7155ceaab9e5573eae815d0aba21"
};
// src/contracts/collector.ts
var CollectorContract = class _CollectorContract {
static async feeTx(fee, lucid, params, tx, collectorRef) {
const collectorUtxo = collectorRef ? getRandomElement(await lucid.utxosByOutRef([collectorRef])) : getRandomElement(await lucid.utxosAt(
_CollectorContract.address(params.collectorParams, lucid)
));
const collectorScriptRefUtxo = await _CollectorContract.scriptRef(
params.scriptReferences,
lucid
);
tx.collectFrom([collectorUtxo], import_lucid5.Data.to(new import_lucid5.Constr(0, []))).pay.ToContract(
collectorUtxo.address,
{ kind: "inline", value: import_lucid5.Data.to(new import_lucid5.Constr(0, [])) },
{
...collectorUtxo.assets,
lovelace: collectorUtxo.assets["lovelace"] + fee
}
).readFrom([collectorScriptRefUtxo]);
}
// Collector Validator
static validator(params) {
return {
type: "PlutusV2",
script: (0, import_lucid5.applyParamsToScript)(_collectorValidator.cborHex, [
new import_lucid5.Constr(0, [
new import_lucid5.Constr(0, [
params.stakingManagerNFT[0].unCurrencySymbol,
(0, import_lucid5.fromText)(params.stakingManagerNFT[1].unTokenName)
]),
new import_lucid5.Constr(0, [
params.stakingToken[0].unCurrencySymbol,
(0, import_lucid5.fromText)(params.stakingToken[1].unTokenName)
]),
new import_lucid5.Constr(0, [
params.versionRecordToken[0].unCurrencySymbol,
(0, import_lucid5.fromText)(params.versionRecordToken[1].unTokenName)
])
])
])
};
}
static validatorHash(params) {
return (0, import_lucid5.validatorToScriptHash)(_CollectorContract.validator(params));
}
static address(params, lucid) {
const network = lucid.config().network;
if (!network) {
throw new Error("Network configuration is undefined");
}
return (0, import_lucid5.validatorToAddress)(network, _CollectorContract.validator(params));
}
static async scriptRef(params, lucid) {
return scriptRef(params.collectorValidatorRef, lucid);
}
};
// src/contracts/interest-oracle.ts
var import_lucid6 = require("@lucid-evolution/lucid");
// src/helpers/time-helpers.ts
var oneHour = 3600000n;
var oneDay = 86400000n;
var oneYear = 31536000000n;
// src/contracts/interest-oracle.ts
var unitaryInterestPrecision = 1000000000000000000n;
var decimalUnit = 1000000n;
var InterestOracleContract = class _InterestOracleContract {
static decodeInterestOracleDatum(datum) {
const oracleDatum = import_lucid6.Data.from(datum);
if (oracleDatum.index != 0 || oracleDatum.fields.length !== 3 || oracleDatum.fields[1].index !== 0)
throw "Invalid Interest Oracle Datum provided.";
return {
unitaryInterest: oracleDatum.fields[0],
interestRate: oracleDatum.fields[1].fields[0],
lastUpdated: oracleDatum.fields[2]
};
}
static encodeInterestOracleDatum(datum) {
return import_lucid6.Data.to(
new import_lucid6.Constr(0, [
datum.unitaryInterest,
new import_lucid6.Constr(0, [datum.interestRate]),
datum.lastUpdated
])
);
}
static calculateUnitaryInterestSinceOracleLastUpdated(now, oracleDatum) {
return _InterestOracleContract.calculateUnitaryInterest(now - oracleDatum.lastUpdated, oracleDatum.interestRate);
}
static calculateUnitaryInterest(timePeriod, interestRate) {
return timePeriod * interestRate * unitaryInterestPrecision / oneYear / decimalUnit;
}
static calculateAccruedInterest(now, unitaryInterestSnapshot, mintedAmount, interestLastSettled, interestOracleDatum) {
if (interestOracleDatum.unitaryInterest >= unitaryInterestSnapshot) {
const interestFromPreviousRates = (interestOracleDatum.unitaryInterest - unitaryInterestSnapshot) * mintedAmount / unitaryInterestPrecision;
const lastRateInterest = (now - interestOracleDatum.lastUpdated) * interestOracleDatum.interestRate * mintedAmount / oneYear / decimalUnit;
return interestFromPreviousRates + lastRateInterest;
} else {
return (now - interestLastSettled) * interestOracleDatum.interestRate * mintedAmount / oneYear / decimalUnit;
}
}
};
// src/contracts/gov.ts
var import_lucid7 = require("@lucid-evolution/lucid");
var GovContract = class {
static decodeGovDatum(datum) {
const d = import_lucid7.Data.from(datum);
if (d.index !== 0 || d.fields.length !== 6 || d.fields[1].fields.length !== 10)
throw "Invalid GovDatum found";
return {
currentProposal: d.fields[0],
protocolParams: {
proposalDeposit: d.fields[1].fields[0],
votingPeriod: d.fields[1].fields[1],
effectiveDelay: d.fields[1].fields[2],
expirationPeriod: d.fields[1].fields[3],
collateralFeePercentage: d.fields[1].fields[4].fields[0],
proposingPeriod: d.fields[1].fields[5],
totalShards: d.fields[1].fields[6],
minimumQuorum: d.fields[1].fields[7],
maxTreasuryLovelaceSpend: d.fields[1].fields[8],
maxTreasuryIndySpend: d.fields[1].fields[9]
},
currentVersion: d.fields[2],
iassetsCount: d.fields[3],
activeProposals: d.fields[4],
treasuryIndyWithdrawnAmt: d.fields[5]
};
}
static encodeGovDatum(datum) {
return import_lucid7.Data.to(
new import_lucid7.Constr(0, [
datum.currentProposal,
new import_lucid7.Constr(0, [
datum.protocolParams.proposalDeposit,
datum.protocolParams.votingPeriod,
datum.protocolParams.effectiveDelay,
datum.protocolParams.expirationPeriod,
new import_lucid7.Constr(0, [datum.protocolParams.collateralFeePercentage]),
datum.protocolParams.proposingPeriod,
datum.protocolParams.totalShards,
datum.protocolParams.minimumQuorum,
datum.protocolParams.maxTreasuryLovelaceSpend,
datum.protocolParams.maxTreasuryIndySpend
]),
datum.currentVersion,
datum.iassetsCount,
datum.activeProposals,
datum.treasuryIndyWithdrawnAmt
])
);
}
};
// src/contracts/treasury.ts
var import_lucid8 = require("@lucid-evolution/lucid");
// src/scripts/treasury-validator.ts
var _treasuryValidator = {
type: "PlutusV2",
description: "Generated by Aiken",
cborHex: "591f62591f5f0100003232323232323232222323232323232322533300c323232533300f300a3011375400226464646464646464646464646464646464646464646464646464646464646464646464a64666066605e046264a6660686060606c6ea80044c8c8c8c94ccc0f0c0fc0084c94ccc0e4c0d4c0ecdd5000899191919191919191919191929998249826001099192999823982198249baa0031323232533304a33031491205769746864726177616c2076616c75652063616e6e6f7420626520656d7074790033304a3375e98101a000374c004941288a99982519818a492245787065637473206a757374203120696e7075742066726f6d2074726561737572790032533304f00114a02a66609e60a40022944528198181bac3039304d375407a02a2a666094660629201245472656173757279207769746864726177616c206f757470757420696e636f727265637400333330243304f0014bd70180c19827981c98269baa0034bd7019ba548010cc13cc8dd3998281826800998281827000a5eb80cdd826011a5818496e6469676f54726561737572795769746864726177616c003039304d375402697ae00024c103d87a8000132533304b3375e6e98005300101a00014a22a6660966466002002605800444a6660a200229404c94ccc138cdc41bad305430553055375860a800490000a511330030030013054001153304c4901224e6f7420656e6f7567682066756e647320696e20747265617375727920696e707574001613303249011c5472656173757279206f757470757420697320696e636f727265637400333330253758604e609c6ea80f8c064cc140c0e4cc140058cc140c09cc138dd502525eb812f5c0980107d87b9fd87980ff000014c103d87a8000330283756606a609a6ea8c0d4c134dd500b18148010a5014a02940c94ccc13800454cc12d24128457870656374732073696e676c65206f757470757420746f207769746864726177616c206164647200161533304e305100113050001153304b490128457870656374732073696e676c65206f757470757420746f207769746864726177616c20616464720016330223758604a60986ea80f0c05ccc138c0e0c130dd500125eb80c060cc05cdd6181998259baa0012323233050305100233050305100133050305130520014bd70182880098261baa001304d304a37540062c603000460320122c609400260940046eb4c120004c120008dd6982300098230011bad3044001304400230420013042002375a608000260786ea800458c080c050c0ecdd51811981d9baa00116303d00133301f3758604a60726ea80a4c094c0e4dd501aa60103d8798000302430383754604860706ea8c080c0e0dd5000981d181b9baa001163302037586044606c6ea80980904c8c8c8c8c8c94c8ccc0e8c0d40a84c94ccc0ecc0dcc0f4dd50008991919299981f181d18201baa0011323232323232323232323232533304e305100213232323232325333050304c3052375400e264a6660a2660709213d43616e6e6f742062652075736564207768656e207769746864726177616c2076616c7565206861732073696e676c65206173736574206f72206e6f6e6500301830193031001153330513303849012d416c6c206f776e20696e70757473206861766520746f20757365207468652072696768742072656465656d6572003301d005232323375e00498103d87a8000304a0013301d3041305537540026eacc070c154dd50228a9998289981c2481374f6e65206f75747075742068617320746f2068617665207468652076616c7565206f662074726561737572795f7769746864726177616c003333302b3758605a60a86ea8110c07ccc1580552f5c0980107d87b9fd87980ff000014c103d87a8000153330513303849123416c6c207370656e742076616c75652068617320746f2062652070616964206261636b0033302c0020044c0103d87a8000133038490126416c6c206f776e206f7574707574732068617320746f206861766520766f696420646174756d003301d00323375e605c60aa6ea800530107d87b9fd87980ff0014a029405280a5030203301f3758607660a66ea8c158c14cdd5003919191982c182c8011982c182c8009982c182c982d000a5eb80c164004c150dd50008b19980e000a5eb7bdb18088cc0bc004dd5981e182a1baa002330273758605460a26ea8104c070cc14c0492f5c066603400297adef6c60223302d0013756607460a46ea8c0e8c148dd5001198191bac303b304f375407e022603a004603c0122c609e002609e0046eb4c134004c134008dd6982580098258011bad3049001304900230470013047002375a608a00260826ea800458c094c064c100dd5181418201baa325333042001153303f49012548617320746f207265666572656e63652073696e676c65206578656375746520696e707574001615333042304500113044001153303f49012548617320746f207265666572656e63652073696e676c65206578656375746520696e70757400163330263758605060806ea80c0c0b0c100dd501e26103d8798000302a33041001330413018303f375407697ae0302a303e37546054607c6ea8c098c0f8dd51820981f1baa001163302737586052607a6ea80b40ac4c8c8c8c94ccc0f8c0e00b84c8c94ccc100c0f0c108dd500089919191929998241825998151bac30333047375406e0042646464a66608e6605c9215d416c6c20696e70757473206d7573742068617665206d6f7265207468616e2031206e6f6e2d414441206173736574206f722031206e6f6e2d41444120617373657420616e64206d6f7265207468616e203278204144412062756666657200325333048300f00114a22a6660906086002266e20cdc12400890404df70119981a003a450048810014a0601e604e601200c2a66608e6605c92012f416c6c207468652076616c7565206e6565647320746f2062652073656e74206261636b20746f207472656173757279003330220020064c0103d87a8000153330473302e4914e45616368206e6f6e204144412061737365742069732073657061726174656420696e746f20697473206f776e20636f6e74696e75696e67206f7574707574207769746820766f696420646174756d003300b001232333330233758604a60986ea80f0c05ccc1380192f5c098107d87b9fd87980ff00333222533304c304800114bd6f7b6300991919800800a5eb7bdb180894ccc14c0044cc150cdd81ba9006374c00697adef6c60132323232533305330383303400a002133058337606ea4028dd30038028a99982999b8f00a002133058337606ea4028dd300380189982c19bb037520046e98004cc01801800cdd5982a8019bae30530023057002305500132330010014bd6f7b63011299982900089982999bb037520086ea000d2f5bded8c0264646464a6660a4606e660660100042660ae66ec0dd48041ba8007005153330523371e0100042660ae66ec0dd48041ba8007003133057337606ea4008dd4000998030030019bad3054003375c60a400460ac00460a80026eb8c13c008dd718278009bad304f30500014c0103d8798000304f00113302e4912354686572652063616e2062652031206f75747075742077697468206f6e6c7920414441003371266e04c03000cc03c005200214a0294052818131804000999809000a5eb7bdb18088cc094004dd5981918251baa0023301d37586040608e6ea80dcc048cc1240052f5c02c60626609000266090603e608c6ea81092f5c06062608a6ea8c0c4c114dd5181698229baa0023756605860886ea8c0b0c110dd5000982318219baa001163302c3758605c60846ea80c80c08cc008005221001533303e303702e132533303f303b3041375400226464646464a666088660569212d416c6c206f776e20696e70757473206861766520746f20757365207468652072696768742072656465656d65720033010003232323375e00498103d87c8000303d001330103034304837540026eacc03cc120dd501c0a99982219815a4812554686572652068617320746f206265206174206c656173742032206f776e20696e7075747300300b3009003153330443302b49011c5472656173757279206f757470757420697320696e636f7272656374003333301e330490014bd7018091982480225eb8130107d87b9fd87980ff000024c103d87a800013302b490132416c6c20696e70757473206861766520746f20636f6e7461696e207468652073616d65206d657267696e672061737365747300323301100423300a00223371090001998199bab3032304a3754606460946ea8008dd718268009bae304d304e001302400214a029405281929998240008a99822a4811e45787065637473206f6e6c792073696e676c65206f776e206f7574707574001615333048304b0011304a001153304549011e45787065637473206f6e6c792073696e676c65206f776e206f757470757400163301c3758603e608c6ea80d8c044cc12000d2f5c066601e00297adef6c6022330220013756605e608e6ea8c0bcc11cdd5001198139bac303030443754068004605c6608a0026608a603860866ea80fd2f5c0605c60846ea8c0b8c108dd5181518211baa3045304237540022c660566eb0c0b4c104dd50188178a99981f181b017099299981f981d98209baa001132325333041330284912245787065637473206a757374203120696e7075742066726f6d2074726561737572790032533304600114a02a66608c60920022944528198139bac3030304437540680022660509211c5472656173757279206f757470757420697320696e636f7272656374003333301b3758603a60886ea80d0c03ccc118c0bccc118004cc118c074c110dd502025eb812f5c0980107d87b9fd87980ff0033330123756605860886ea8c0b0c110dd5001245004881004800930103d87a800014a0605e60866ea8c0bcc10cdd5181598219baa0013045304237540022c660566eb0c0b4c104dd50188178999919191119191919192999824182218251baa00113253330493044304b37540022646464a6660a060a60042646464a66609e609660a26ea80044cc0d8cc03ccc150dd49b984901084d697373696e6720003305437526e60038cc150dd49b984901172075706772616465206d696e74696e6720706f6c696379004bd70249003322323300100100322533305700114a0264a6660a866e3cdd7182d0010020a51133003003001305a001301033012009488100375c60aa60a46ea800454cc140cc03ccc150dd49b98491084d697373696e6720003305437526e60038cc150dd49b9849010d20757067726164652070617468004bd70249001632533304f304a30513754002298103d87a80001303d3305437526eb8c148c8cdd8182b000982b182b8009bac30553052375400297ae032330010013756607460a46ea800c894ccc1500045300103d87a80001323253330523371e6eb8c1500080244c100cc15cdd39982b982a0011982b982a80125eb812f5c026600800800260b000460ac002a66609a6092609e6ea80044c8c8c8c94ccc154c1600084c92633028001232375c60ac0046eb8c15000458dd5982b000982b0011bad3054001305037540022c60686050609e6ea8c0dcc13cdd50008b1828800999819802804260103d8798000375c609e60986ea800458c0dcc12cdd5181b98259baa3033304b3754609c60966ea800458cc0d0dd6182680201c1bab304c304d304d304d002375860960026096002608c6ea80d888dcc9919199800800802244100222533304a0021001132333004004304e00353330473043371a00426e600044cdc500119b8a00537300026e64dd718260011b98001300100122533304400114bd7009982298211823000998010011823800a490854726561737572790030293041375407a44646600200200644a66608a002297adef6c6013232323253330453371e00e004200626609466ec0dd48011ba6001330060060033756608e0066eb8c114008c124008c11c00488c8cc00400400c894ccc110004528899299982098021bac304700213300300300114a0608e002600200244a66608000229000099b8048008cc008008c10c004dc424004600200244a66607a00229000099b8048008cc008008c1000048c0f4c0f8c0f8c0f8c0f8c0f8c0f8c0f8c0f8c0f800488c94ccc0e0c0d0c0e8dd50008981f181d9baa001153303949117436f756c64206e6f742066696e642072656465656d6572001632323300100100322533303e00114c0103d87a80001323232533303d3375e00c607e006260566608400297ae0133005005002303f0023042002304000130053303c0024bd7011191980080080191299981e0008a5113253330393004303f00213300300300114a0607e002444646600200200844a6660780022008266006607c00266004004607e0026e95200222323300100100322533303900114bd7009981d1ba73003303b00133002002303c0012323300100100222533303700114bd6f7b63009919199980319802002181e0019bae303b002375c60760026eb4c0ecc0f0004c0ec004dd6181c800911129998199817800880209999980b0020019919001191980080080111299981d0008a4c264a66607600229309919299981c981a981d9baa3301a375c6076607e0086eb8c0ec0084cc014014cc0f800800454cc0e92401326b65797320696e206173736f63696174697665206c697374206172656e277420696e20617363656e64696e67206f726465720016303f002303d001303d00133038337606ea4008dd4000a5eb7bdb180888c94ccc0dcc064004530103d87a8000130253303c374c00297ae03333301a00100500422232533303a303600114c103d87a8000130283303f375000297ae03370000200402e028464a666060605800226464a66606c60720042649329998191817181a1baa001132323232533303a303d00213232498cc03800894ccc0e0c0d0c0e8dd50008991919191919299982118228010a4c2c6eb4c10c004c10c008dd7182080098208011bae303f001303b37540022ca66606c606460706ea800c4c8c8c8c94ccc0f8c1040084c8c92632533303c30380011323253330423045002132498c94ccc0fcc0ec0044c8c94ccc114c1200084c9263014001163046001304237540042a66607e60740022646464646464a66609260980042930b1bad304a001304a002375a609000260900046eb4c118004c108dd50010b18201baa001163043001303f37540062a666078606e0022a666080607e6ea800c5261616303d3754004601a0062c607e002607e004607a00260726ea800c5858dd6181d800981d801181c800981a9baa00116163037001303337540042a66606060560022a66606860666ea8008526161630313754002464a66605e605600226464a66606a60700042930b1bae3036001303237540042a66605e605400226464a66606a60700042930b1bae3036001303237540042c60606ea80048c94ccc0b8c0a80044c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c94ccc128c1340084c8c8c8c8c8c8c8c8c8c8c926302500b302400c302300d302200e302100f3020010301f011301e012301d013301f014301c01516304b001304b0023049001304900230470013047002304500130450023043001304300230410013041002303f001303f002303d001303d002303b001303b0023039001303900230370013037002375c606a00260626ea800854ccc0b8c0a40044c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c94ccc128c1340084c8c8c8c8c8c8c8c8c8c8c926302500b302400c302300d302200e302100f3020010301f011301e012301d013301f014325333047304300113232533304d3050002132498c07800458c138004c128dd500b0a9998239821000899192999826982800109924c603e0022c609c00260946ea805858c120dd500a8b182580098258011824800982480118238009823801182280098228011821800982180118208009820801181f800981f801181e800981e801181d800981d801181c800981c801181b800981b8011bae3035001303137540042a66605c605000226464a666068606e004264932999818181618191baa001132323232323232323232323232323232323232325333048304b002132498c06402c58dd6982480098248011bad30470013047002375a608a002608a0046eb4c10c004c10c008dd698208009820801181f800981f8011bad303d001303d002375a607600260760046eb4c0e4004c0e4008dd6981b80098199baa00116163035001303137540042a66605c604e00226464a666068606e004264932999818181618191baa0011323232325333038303b002132498cc02c0048c8c94ccc0dcc0ccc0e4dd500089919299981e98200010a4c2c6eb8c0f8004c0e8dd50008b181c8011bae3037001163756607200260720046eb4c0dc004c0ccdd50008b0b181a80098189baa0021533302e30260011323253330343037002149858dd7181a80098189baa00216302f37540024a6660586050605c6ea80044c8c94ccc0c8c0d400852616375a6066002605e6ea80045894ccc0acc09cc0b4dd5000899192999818981a00109924c600a0022c6064002605c6ea80045888c8cc00400400c894ccc0c400452613233003003303500230033033001253330293025302b3754002264646464a66606260680042930b1bae30320013032002375c606000260586ea80045888cc04c008c01800488888c8cc004004cc058018c024014894ccc0c4004528099299981719299981799baf300b3032375400200e26660146eacc068c0c8dd50008030028a50303400214a2266006006002606800244464a66605a002294454ccc0b4c0c00044c8c8c94ccc0b0cdc79bae30320034881001533302c3371e0029101001533302c3028302e375400a2a66605866e25200000213371200490404df7010a5013371290000010a5014a06eb8c0c4c0c8008dd69818181898188009bac302f00114a060106600c006600e00446056605860580024a6660486040604c6ea80044c88cdd7980a98149baa3015302937540020046054604e6ea80044c88cdd7980a98149baa001002302a302737540024464666002002006004444a6660560042002264666008008605e006666660160046eb8c0a8004dd5981580091119299981618070008a60103d87a80001301a33031374c00297ae03233300100100300222253330320021001132333004004303600333333013002375c60620026eb4c0c8004888c94ccc0ccc0bc0045300103d87a80001302133038375000297ae0337000040020206068004012605a0044646600200200444a666050002297adef6c601323302a337606ea4dd718138009ba632330010013756605200444a666056002297adef6c601323302d337606ea4dd718150009ba83370290001bad302b00133003003302f002302d00133003003302c002302a0012323300100100222533302700114bd7009919991119198008008019129998168008801899198179ba73302f375200c6605e6ea4dd71816000998179ba8375a605a00297ae0330030033031002302f001375c604c0026eacc09c004cc00c00cc0ac008c0a4004894ccc084cdc80010008a60103d8798000153330213371e0040022980103d87a800014c103d87b80002533302300114a2294088888c8cc004004018894ccc0a00044cc0a4cdd81ba9006374c00a97adef6c601323232325333028300d3300700a00213302d337606ea4028dd30048028a99981419b8f00a00213253330293025302b375400226605c66ec0dd4805981798161baa001004100433300800a00900113302d337606ea4008dd3000998030030019bab302a003375c60500046058004605400244444646600200200c44a66604e00226605066ec0dd48031ba80054bd6f7b630099191919299981398061980380500109981619bb037520146ea002401454ccc09ccdc78050010992999814181218151baa00113302d337606ea402cc0b8c0acdd5000802080219980400500480089981619bb037520046ea0004cc01801800cdd698148019bae3027002302b0023029001375e98103d8798000223300600223375e601860406ea8c030c080dd5180418101baa00100222533301b33301b0014a094454cc0700084004400494ccc064c04cc06cdd50008980f980e1baa001153301a4901134e6f7420616e20696e6c696e6520646174756d00162223233005004230023007301f3754002a666034602c60386ea800448c058ccc01cdd59803180f1baa001375c6014603c6ea800cdd71803180f1baa003123371090001998039bab3006301e37540026eb8c028c078dd50019bae3006301e375400644646600200200644a66603c002297ae013232533301c300500213302100233004004001133004004001302200230200012301c301d0012223253330183013301a37540022900009ba