@meterio/sumer-js 0.1.1 → 0.1.2

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 (26) hide show
  1. package/dist/browser/sumer.min.js +9 -9
  2. package/dist/nodejs/abi.js +10 -0
  3. package/dist/nodejs/abi.js.map +1 -1
  4. package/dist/nodejs/cToken.d.ts +2 -1
  5. package/dist/nodejs/cToken.js +34 -6
  6. package/dist/nodejs/cToken.js.map +1 -1
  7. package/dist/nodejs/comptroller.d.ts +12 -0
  8. package/dist/nodejs/comptroller.js +120 -1
  9. package/dist/nodejs/comptroller.js.map +1 -1
  10. package/dist/nodejs/typechain/contracts/CToken/SuErc20.d.ts +3 -1
  11. package/dist/nodejs/typechain/contracts/index.d.ts +0 -1
  12. package/dist/nodejs/typechain/factories/contracts/CToken/CErc20__factory.d.ts +1 -1
  13. package/dist/nodejs/typechain/factories/contracts/CToken/CErc20__factory.js +1 -1
  14. package/dist/nodejs/typechain/factories/contracts/CToken/CEther__factory.d.ts +1 -1
  15. package/dist/nodejs/typechain/factories/contracts/CToken/CEther__factory.js +1 -1
  16. package/dist/nodejs/typechain/factories/contracts/CToken/SuErc20__factory.d.ts +9 -1
  17. package/dist/nodejs/typechain/factories/contracts/CToken/SuErc20__factory.js +11 -1
  18. package/dist/nodejs/typechain/factories/contracts/CToken/SuErc20__factory.js.map +1 -1
  19. package/dist/nodejs/typechain/factories/contracts/Comptroller/CompoundLens__factory.d.ts +1 -1
  20. package/dist/nodejs/typechain/factories/contracts/Comptroller/CompoundLens__factory.js +1 -1
  21. package/dist/nodejs/typechain/factories/contracts/Comptroller/CompoundLens__factory.js.map +1 -1
  22. package/dist/nodejs/typechain/factories/contracts/index.d.ts +0 -1
  23. package/dist/nodejs/typechain/factories/contracts/index.js +1 -3
  24. package/dist/nodejs/typechain/factories/contracts/index.js.map +1 -1
  25. package/dist/nodejs/typechain/hardhat.d.ts +0 -18
  26. package/package.json +1 -1
@@ -147,4 +147,5 @@ export declare function borrow(asset: string, amount: string | number, options?:
147
147
  */
148
148
  export declare function repayBorrow(asset: string, amount: string | number, borrower: string, noApprove?: boolean, options?: CallOptions): Promise<TrxResponse>;
149
149
  export declare function liquidateBorrow(repayToken: string, borrower: string, amount: BigNumberish, cTokenCollateral: string): Promise<ContractTransactionResponse>;
150
- export declare function borrowCollateralAndMintSynthetic(asset: string, collateral: string, mintAmount: string | number, options?: CallOptions): Promise<TrxResponse>;
150
+ export declare function calcCBorrowAmount(asset: string, collateral: string, mintAmount: string | number, options?: CallOptions): Promise<any>;
151
+ export declare function borrowCollateralAndMintSynthetic(asset: string, collateral: string, cBorrowAmount: string | number, mintAmount: string | number, options?: CallOptions): Promise<TrxResponse>;
@@ -31,7 +31,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
31
31
  return (mod && mod.__esModule) ? mod : { "default": mod };
32
32
  };
33
33
  Object.defineProperty(exports, "__esModule", { value: true });
34
- exports.borrowCollateralAndMintSynthetic = exports.liquidateBorrow = exports.repayBorrow = exports.borrow = exports.redeem = exports.supply = void 0;
34
+ exports.borrowCollateralAndMintSynthetic = exports.calcCBorrowAmount = exports.liquidateBorrow = exports.repayBorrow = exports.borrow = exports.redeem = exports.supply = void 0;
35
35
  const ethers_1 = require("ethers");
36
36
  const eth = __importStar(require("./eth"));
37
37
  const helpers_1 = require("./helpers");
@@ -348,7 +348,31 @@ async function liquidateBorrow(repayToken, borrower, amount, cTokenCollateral) {
348
348
  return cerc20.liquidateBorrow(borrower, amount, cTokenCollateral);
349
349
  }
350
350
  exports.liquidateBorrow = liquidateBorrow;
351
- async function borrowCollateralAndMintSynthetic(asset, collateral, mintAmount, options = {}) {
351
+ async function calcCBorrowAmount(asset, collateral, mintAmount, options = {}) {
352
+ const errorPrefix = 'Sumer [calcCBorrowAmount] | ';
353
+ console.log(`Sumer calcCBorrowAmount ${mintAmount} ${asset} with collateral ${collateral}`);
354
+ const suTokenName = toSDRSymbol(asset);
355
+ const suTokenAddress = (0, constants_1.getAddress)(this._network.name, suTokenName);
356
+ if (!suTokenAddress || !(0, constants_1.isUnderlyAllowed)(this._network.name, asset)) {
357
+ throw Error(errorPrefix + 'Argument `asset` is not supported.');
358
+ }
359
+ const cTokenName = toSDRSymbol(collateral);
360
+ const cTokenAddress = (0, constants_1.getAddress)(this._network.name, cTokenName);
361
+ if (!cTokenAddress || !(0, constants_1.isUnderlyAllowed)(this._network.name, collateral)) {
362
+ throw Error(errorPrefix + 'Argument `collateral` is not supported.');
363
+ }
364
+ const assetDecimals = (0, constants_1.getDecimals)(this._network.name, asset);
365
+ if (assetDecimals <= 0) {
366
+ throw Error(`Asset ${asset} decimals is configured wrong as ${assetDecimals} `);
367
+ }
368
+ let amountBN = new bignumber_js_1.default(mintAmount.toString());
369
+ amountBN = amountBN.times(`1e${assetDecimals}`);
370
+ options.abi = abi_1.abi.suErc20;
371
+ const trxOptions = Object.assign(Object.assign({}, options), { _sumerProvider: this._provider });
372
+ return await eth.read(suTokenAddress, 'calcCBorrowAmount', [cTokenAddress, amountBN.toFixed(0)], trxOptions);
373
+ }
374
+ exports.calcCBorrowAmount = calcCBorrowAmount;
375
+ async function borrowCollateralAndMintSynthetic(asset, collateral, cBorrowAmount, mintAmount, options = {}) {
352
376
  await (0, helpers_1.netId)(this);
353
377
  const errorPrefix = 'Sumer [borrowCollateralAndMintSynthetic] | ';
354
378
  console.log(`Sumer borrowCollateralAndMintSynthetic ${mintAmount} ${asset} with collateral ${collateral}`);
@@ -362,6 +386,12 @@ async function borrowCollateralAndMintSynthetic(asset, collateral, mintAmount, o
362
386
  if (!cTokenAddress || !(0, constants_1.isUnderlyAllowed)(this._network.name, collateral)) {
363
387
  throw Error(errorPrefix + 'Argument `collateral` is not supported.');
364
388
  }
389
+ const collateralDecimals = (0, constants_1.getDecimals)(this._network.name, collateral);
390
+ if (collateralDecimals <= 0) {
391
+ throw Error(`Collateral ${collateral} decimals is configured wrong as ${collateralDecimals} `);
392
+ }
393
+ let cBorrowAmountBN = new bignumber_js_1.default(cBorrowAmount.toString());
394
+ cBorrowAmountBN = cBorrowAmountBN.times(`1e${collateralDecimals}`);
365
395
  if (typeof mintAmount !== 'number' && typeof mintAmount !== 'string') {
366
396
  throw Error(errorPrefix + 'Argument `mintAmount` must be a string, number.');
367
397
  }
@@ -370,13 +400,11 @@ async function borrowCollateralAndMintSynthetic(asset, collateral, mintAmount, o
370
400
  throw Error(`Asset ${asset} decimals is configured wrong as ${assetDecimals} `);
371
401
  }
372
402
  let amountBN = new bignumber_js_1.default(mintAmount.toString());
373
- if (!options.mantissa) {
374
- amountBN = amountBN.times(`1e${assetDecimals}`);
375
- }
403
+ amountBN = amountBN.times(`1e${assetDecimals}`);
376
404
  options.abi = abi_1.abi.suErc20;
377
405
  const trxOptions = Object.assign(Object.assign({}, options), { _sumerProvider: this._provider });
378
406
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
379
- const parameters = [cTokenAddress, amountBN.toFixed(0)];
407
+ const parameters = [cTokenAddress, cBorrowAmountBN.toFixed(0), amountBN.toFixed(0)];
380
408
  console.log(`Call borrowCollateralAndMintSynthetic on ${suTokenName}:${suTokenAddress} with [${cTokenAddress}, ${amountBN.toFixed(0)}]`);
381
409
  return eth.trx(suTokenAddress, 'borrowCollateralAndMintSynthetic', parameters, trxOptions);
382
410
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cToken.js","sourceRoot":"","sources":["../../src/cToken.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cToken.js","sourceRoot":"","sources":["../../src/cToken.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,mCAAkF;AAClF,2CAA4B;AAC5B,uCAAiC;AACjC,2CAAiG;AACjG,+BAA2B;AAE3B,gEAA6B;AAC7B,2CAA6C;AAE7C,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE;IACnC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,GAAG,IAAI,CAAA;IACrB,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACI,KAAK,UAAU,MAAM,CAC1B,KAAa,EACb,MAAuB,EACvB,SAAS,GAAG,KAAK,EACjB,UAAuB,EAAE;IAEzB,MAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAA;IACjB,MAAM,WAAW,GAAG,mBAAmB,CAAA;IAEvC,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,IAAI,KAAK,EAAE,CAAC,CAAA;IAC9C,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;IACrC,MAAM,aAAa,GAAG,IAAA,sBAAU,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IAEhE,IAAI,CAAC,aAAa,IAAI,CAAC,IAAA,4BAAgB,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QACnE,MAAM,KAAK,CAAC,WAAW,GAAG,SAAS,KAAK,sBAAsB,CAAC,CAAA;IACjE,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7D,MAAM,KAAK,CAAC,WAAW,GAAG,6CAA6C,CAAC,CAAA;IAC1E,CAAC;IAED,MAAM,aAAa,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAE5D,IAAI,QAAQ,GAAG,IAAI,sBAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IACxC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,aAAa,EAAE,CAAC,CAAA;IACjD,CAAC;IAED,IAAI,IAAA,mBAAO,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,GAAG,SAAG,CAAC,MAAM,CAAA;IAC1B,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,GAAG,SAAG,CAAC,MAAM,CAAA;IAC1B,CAAC;IAED,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAA;IAEvC,IAAI,CAAC,IAAA,mBAAO,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACnE,MAAM,iBAAiB,GAAG,IAAA,sBAAU,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC/D,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAA;QAExC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;YAC9C,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAA;QACjD,CAAC;QAED,kBAAkB;QAClB,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,CAAA;QAEvG,MAAM,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;QAEhD,IAAI,SAAS,EAAE,CAAC;YACd,6BAA6B;YAC7B,MAAM,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,SAAS,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;QAC3F,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,EAAE,CAAA;IACrB,IAAI,IAAA,mBAAO,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAA;IACpC,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;IACrC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,UAAU,IAAI,aAAa,SAAS,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IACvF,OAAO,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;AAC5D,CAAC;AAhED,wBAgEC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACI,KAAK,UAAU,MAAM,CAAC,KAAa,EAAE,MAAuB,EAAE,UAAuB,EAAE;IAC5F,MAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAA;IACjB,MAAM,WAAW,GAAG,mBAAmB,CAAA;IAEvC,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,IAAI,KAAK,EAAE,CAAC,CAAA;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,KAAK,CAAC,WAAW,GAAG,8CAA8C,CAAC,CAAA;IAC3E,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE3C,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;IACrC,MAAM,aAAa,GAAG,IAAA,sBAAU,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IAEhE,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IAE3E,IAAI,CAAC,IAAA,2BAAe,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAA,4BAAgB,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC;QAC9G,MAAM,KAAK,CAAC,WAAW,GAAG,UAAU,UAAU,qBAAqB,CAAC,CAAA;IACtE,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7D,MAAM,KAAK,CAAC,WAAW,GAAG,6CAA6C,CAAC,CAAA;IAC1E,CAAC;IAED,IAAI,QAAQ,GAAG,IAAI,sBAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IACxC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,aAAa,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC5D,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,KAAK,CAAC,SAAS,KAAK,oCAAoC,aAAa,GAAG,CAAC,CAAA;QACjF,CAAC;QACD,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,aAAa,EAAE,CAAC,CAAA;IACjD,CAAC;IAED,MAAM,UAAU,mCACX,OAAO,KACV,cAAc,EAAE,IAAI,CAAC,SAAS,EAC9B,GAAG,EAAE,IAAA,mBAAO,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAG,CAAC,MAAM,GACvE,CAAA;IACD,MAAM,UAAU,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;IACvC,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAA;IAE5D,OAAO,CAAC,GAAG,CAAC,QAAQ,MAAM,OAAO,UAAU,IAAI,aAAa,SAAS,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IAC3F,OAAO,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;AAC/D,CAAC;AA3CD,wBA2CC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACI,KAAK,UAAU,MAAM,CAAC,KAAa,EAAE,MAAuB,EAAE,UAAuB,EAAE;IAC5F,MAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAA;IACjB,MAAM,WAAW,GAAG,mBAAmB,CAAA;IAEvC,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,IAAI,KAAK,EAAE,CAAC,CAAA;IAC9C,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;IACrC,MAAM,aAAa,GAAG,IAAA,sBAAU,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IAEhE,IAAI,CAAC,aAAa,IAAI,CAAC,IAAA,4BAAgB,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QACnE,MAAM,KAAK,CAAC,WAAW,GAAG,sCAAsC,CAAC,CAAA;IACnE,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7D,MAAM,KAAK,CAAC,WAAW,GAAG,6CAA6C,CAAC,CAAA;IAC1E,CAAC;IAED,IAAI,QAAQ,GAAG,IAAI,sBAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IACxC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,aAAa,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC5D,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,KAAK,CAAC,SAAS,KAAK,oCAAoC,aAAa,GAAG,CAAC,CAAA;QACjF,CAAC;QACD,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,aAAa,EAAE,CAAC,CAAA;IACjD,CAAC;IAED,MAAM,UAAU,mCACX,OAAO,KACV,cAAc,EAAE,IAAI,CAAC,SAAS,GAC/B,CAAA;IACD,MAAM,UAAU,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;IACvC,UAAU,CAAC,GAAG,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAG,CAAC,MAAM,CAAA;IAElF,OAAO,CAAC,GAAG,CAAC,kBAAkB,UAAU,IAAI,aAAa,SAAS,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IACtF,OAAO,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;AACjE,CAAC;AAlCD,wBAkCC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACI,KAAK,UAAU,WAAW,CAC/B,KAAa,EACb,MAAuB,EACvB,QAAgB,EAChB,SAAS,GAAG,KAAK,EACjB,UAAuB,EAAE;IAEzB,MAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAA;IACjB,MAAM,WAAW,GAAG,wBAAwB,CAAA;IAE5C,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,IAAI,KAAK,QAAQ,QAAQ,EAAE,CAAC,CAAA;IACnE,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;IACrC,MAAM,aAAa,GAAG,IAAA,sBAAU,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IAEhE,IAAI,CAAC,aAAa,IAAI,CAAC,IAAA,4BAAgB,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QACnE,MAAM,KAAK,CAAC,WAAW,GAAG,oCAAoC,CAAC,CAAA;IACjE,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7D,MAAM,KAAK,CAAC,WAAW,GAAG,6CAA6C,CAAC,CAAA;IAC1E,CAAC;IAED,MAAM,MAAM,GAAG,eAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAA;IAC/E,IAAI,QAAQ,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;QACzC,MAAM,KAAK,CAAC,WAAW,GAAG,6BAA6B,CAAC,CAAA;IAC1D,CAAC;IACD,MAAM,aAAa,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC5D,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,KAAK,CAAC,SAAS,KAAK,oCAAoC,aAAa,GAAG,CAAC,CAAA;IACjF,CAAC;IAED,IAAI,QAAQ,GAAG,IAAI,sBAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IACxC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,aAAa,EAAE,CAAC,CAAA;IACjD,CAAC;IAED,MAAM,UAAU,mCACX,OAAO,KACV,cAAc,EAAE,IAAI,CAAC,SAAS,GAC/B,CAAA;IAED,8DAA8D;IAC9D,MAAM,UAAU,GAAU,MAAM,KAAK,mBAAmB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1E,IAAI,IAAA,mBAAO,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;QAC5C,UAAU,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAA;QACrC,UAAU,CAAC,GAAG,GAAG,SAAG,CAAC,MAAM,CAAA;IAC7B,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;QACnC,UAAU,CAAC,GAAG,GAAG,SAAG,CAAC,MAAM,CAAA;IAC7B,CAAC;IAED,IAAI,CAAC,IAAA,mBAAO,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACnE,MAAM,iBAAiB,GAAG,IAAA,sBAAU,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC/D,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAA;QAExC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;YAC9C,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAA;QACjD,CAAC;QAED,kBAAkB;QAClB,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,CAAA;QAE1G,MAAM,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;QAEhD,IAAI,SAAS,EAAE,CAAC;YACd,6BAA6B;YAC7B,MAAM,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,SAAS,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,UAAU,CAAC,CAAA;QAC9F,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,uBAAuB,UAAU,IAAI,aAAa,SAAS,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IAC7F,OAAO,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;AAC/D,CAAC;AAxED,kCAwEC;AAEM,KAAK,UAAU,eAAe,CACnC,UAAkB,EAClB,QAAgB,EAChB,MAAoB,EACpB,gBAAwB;IAExB,MAAM,MAAM,GAAG,2BAAe,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IAClE,OAAO,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAA;AACnE,CAAC;AARD,0CAQC;AAEM,KAAK,UAAU,iBAAiB,CACrC,KAAa,EACb,UAAkB,EAClB,UAA2B,EAC3B,UAAuB,EAAE;IAEzB,MAAM,WAAW,GAAG,8BAA8B,CAAA;IAClD,OAAO,CAAC,GAAG,CAAC,2BAA2B,UAAU,IAAI,KAAK,oBAAoB,UAAU,EAAE,CAAC,CAAA;IAC3F,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;IACtC,MAAM,cAAc,GAAG,IAAA,sBAAU,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAElE,IAAI,CAAC,cAAc,IAAI,CAAC,IAAA,4BAAgB,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QACpE,MAAM,KAAK,CAAC,WAAW,GAAG,oCAAoC,CAAC,CAAA;IACjE,CAAC;IAED,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,CAAA;IAC1C,MAAM,aAAa,GAAG,IAAA,sBAAU,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IAEhE,IAAI,CAAC,aAAa,IAAI,CAAC,IAAA,4BAAgB,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;QACxE,MAAM,KAAK,CAAC,WAAW,GAAG,yCAAyC,CAAC,CAAA;IACtE,CAAC;IAED,MAAM,aAAa,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC5D,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,KAAK,CAAC,SAAS,KAAK,oCAAoC,aAAa,GAAG,CAAC,CAAA;IACjF,CAAC;IAED,IAAI,QAAQ,GAAG,IAAI,sBAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC5C,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,aAAa,EAAE,CAAC,CAAA;IAC/C,OAAO,CAAC,GAAG,GAAG,SAAG,CAAC,OAAO,CAAA;IAEzB,MAAM,UAAU,mCACX,OAAO,KACV,cAAc,EAAE,IAAI,CAAC,SAAS,GAC/B,CAAA;IAED,OAAO,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,mBAAmB,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;AAC9G,CAAC;AArCD,8CAqCC;AAEM,KAAK,UAAU,gCAAgC,CACpD,KAAa,EACb,UAAkB,EAClB,aAA8B,EAC9B,UAA2B,EAC3B,UAAuB,EAAE;IAEzB,MAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAA;IACjB,MAAM,WAAW,GAAG,6CAA6C,CAAA;IAEjE,OAAO,CAAC,GAAG,CAAC,0CAA0C,UAAU,IAAI,KAAK,oBAAoB,UAAU,EAAE,CAAC,CAAA;IAC1G,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;IACtC,MAAM,cAAc,GAAG,IAAA,sBAAU,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAElE,IAAI,CAAC,cAAc,IAAI,CAAC,IAAA,4BAAgB,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QACpE,MAAM,KAAK,CAAC,WAAW,GAAG,oCAAoC,CAAC,CAAA;IACjE,CAAC;IAED,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,CAAA;IAC1C,MAAM,aAAa,GAAG,IAAA,sBAAU,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IAEhE,IAAI,CAAC,aAAa,IAAI,CAAC,IAAA,4BAAgB,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;QACxE,MAAM,KAAK,CAAC,WAAW,GAAG,yCAAyC,CAAC,CAAA;IACtE,CAAC;IACD,MAAM,kBAAkB,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IACtE,IAAI,kBAAkB,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,KAAK,CAAC,cAAc,UAAU,oCAAoC,kBAAkB,GAAG,CAAC,CAAA;IAChG,CAAC;IACD,IAAI,eAAe,GAAG,IAAI,sBAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAA;IACtD,eAAe,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,kBAAkB,EAAE,CAAC,CAAA;IAElE,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACrE,MAAM,KAAK,CAAC,WAAW,GAAG,iDAAiD,CAAC,CAAA;IAC9E,CAAC;IAED,MAAM,aAAa,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC5D,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,KAAK,CAAC,SAAS,KAAK,oCAAoC,aAAa,GAAG,CAAC,CAAA;IACjF,CAAC;IAED,IAAI,QAAQ,GAAG,IAAI,sBAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC5C,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,aAAa,EAAE,CAAC,CAAA;IAC/C,OAAO,CAAC,GAAG,GAAG,SAAG,CAAC,OAAO,CAAA;IAEzB,MAAM,UAAU,mCACX,OAAO,KACV,cAAc,EAAE,IAAI,CAAC,SAAS,GAC/B,CAAA;IAED,8DAA8D;IAC9D,MAAM,UAAU,GAAU,CAAC,aAAa,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1F,OAAO,CAAC,GAAG,CACT,4CAA4C,WAAW,IAAI,cAAc,UAAU,aAAa,KAAK,QAAQ,CAAC,OAAO,CACnH,CAAC,CACF,GAAG,CACL,CAAA;IACD,OAAO,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,kCAAkC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;AAC5F,CAAC;AAzDD,4EAyDC"}
@@ -52,3 +52,15 @@ export declare function enterMarkets(markets?: string | string[], options?: Call
52
52
  */
53
53
  export declare function exitMarket(market: string, options?: CallOptions): Promise<TrxResponse>;
54
54
  export declare function redeemFaceValue(market: string, amount: string | number, options?: CallOptions): Promise<TrxResponse>;
55
+ interface RedeemDetail {
56
+ provider: string;
57
+ redeemAmount: string;
58
+ redeemVal: string;
59
+ seizeSymbol: string;
60
+ seizeAmount: string;
61
+ seizeVal: string;
62
+ protocolSeize: string;
63
+ protocolSeizeVal: string;
64
+ }
65
+ export declare function redeemFaceValueTrial(redeemer: string, market: string, amount: string | number): Promise<RedeemDetail[]>;
66
+ export {};
@@ -28,17 +28,26 @@ var __importStar = (this && this.__importStar) || function (mod) {
28
28
  return result;
29
29
  };
30
30
  Object.defineProperty(exports, "__esModule", { value: true });
31
- exports.redeemFaceValue = exports.exitMarket = exports.enterMarkets = void 0;
31
+ exports.redeemFaceValueTrial = exports.redeemFaceValue = exports.exitMarket = exports.enterMarkets = void 0;
32
32
  const eth = __importStar(require("./eth"));
33
33
  const helpers_1 = require("./helpers");
34
34
  const constants_1 = require("./constants");
35
35
  const abi_1 = require("./abi");
36
+ const ethers_1 = require("ethers");
37
+ const typechain_1 = require("./typechain");
38
+ const ethers_2 = require("ethers");
36
39
  const toSDRSymbol = (name) => {
37
40
  if (!name.startsWith('sdr')) {
38
41
  return 'sdr' + name;
39
42
  }
40
43
  return name;
41
44
  };
45
+ const toUnderlySymbol = (name) => {
46
+ if (name.startsWith('sdr')) {
47
+ return name.slice(3);
48
+ }
49
+ return name;
50
+ };
42
51
  /**
43
52
  * Enters the user's address into Sumer Protocol markets.
44
53
  *
@@ -144,4 +153,114 @@ async function redeemFaceValue(market, amount, options = {}) {
144
153
  return eth.trx(comptrollerAddress, 'redeemFaceValue', parameters, trxOptions);
145
154
  }
146
155
  exports.redeemFaceValue = redeemFaceValue;
156
+ async function redeemFaceValueTrial(redeemer, market, amount) {
157
+ console.log('entered redeemFaceValueTrial', 'network:', this._network.name);
158
+ const comptrollerAddr = (0, constants_1.getAddress)(this._network.name, 'Comptroller');
159
+ const redempManagerAddr = (0, constants_1.getAddress)(this._network.name, 'RedemptionManager');
160
+ const suAddr = (0, constants_1.getAddress)(this._network.name, toSDRSymbol(market));
161
+ console.log(`comptroller: ${comptrollerAddr}`, `rm: ${redempManagerAddr}, suAddr: ${suAddr}`);
162
+ const su = typechain_1.SuErc20__factory.connect(suAddr, this._provider);
163
+ const suUnderlyAddr = await su.underlying();
164
+ console.log(`su underlying: ${suUnderlyAddr}`);
165
+ const suUnderly = typechain_1.ERC20MinterBurnerPauser__factory.connect(suUnderlyAddr, this._provider);
166
+ const r = typechain_1.RedemptionManager__factory.connect(redempManagerAddr, this._provider);
167
+ const c = typechain_1.Comptroller__factory.connect(comptrollerAddr, this._provider);
168
+ const suGroupId = (await c.markets(suAddr)).assetGroupId;
169
+ const suUnderlySymbol = await suUnderly.symbol();
170
+ const suUnderlyDecimals = Number((await suUnderly.decimals()).toString());
171
+ let provider = await r.getFirstProvider(suAddr);
172
+ let targetRedeemAmount = BigInt(amount);
173
+ console.log('comptroller: ', comptrollerAddr, 'suToken: ', suAddr, 'suUnderly');
174
+ let details = [];
175
+ for (; targetRedeemAmount > 0 && provider != ethers_1.ZeroAddress;) {
176
+ const assets = await c.getAssetsIn(provider);
177
+ let homoAssets = [];
178
+ let heteroAssets = [];
179
+ for (const a of assets) {
180
+ const cToken = typechain_1.CToken__factory.connect(a, this._provider);
181
+ const isCToken = await cToken.isCToken();
182
+ if (!isCToken) {
183
+ continue;
184
+ }
185
+ const underlying = await cToken.underlying();
186
+ const underly = typechain_1.ERC20MinterBurnerPauser__factory.connect(underlying, this._provider);
187
+ const underlySymbol = await underly.symbol();
188
+ const underlyDecimals = await underly.decimals();
189
+ const cGroupId = (await c.markets(a)).assetGroupId;
190
+ if (suGroupId == cGroupId) {
191
+ homoAssets.push({ address: a, underlySymbol, underlyDecimals });
192
+ }
193
+ else {
194
+ heteroAssets.push({ address: a, underlySymbol, underlyDecimals });
195
+ }
196
+ }
197
+ console.log('homoAssets:', homoAssets);
198
+ console.log('heteroAssets:', heteroAssets);
199
+ for (const asset of homoAssets) {
200
+ if (targetRedeemAmount <= 0) {
201
+ break;
202
+ }
203
+ const [actualRedeem, actualSeize, protocolSeizeTokens, redeemPrice, seizePrice] = await c.redeemFaceValueWithTargetPlan.staticCall(redeemer, provider, asset.address, suAddr, targetRedeemAmount);
204
+ if (actualRedeem > 0 && actualRedeem <= targetRedeemAmount) {
205
+ targetRedeemAmount -= actualRedeem;
206
+ details.push({
207
+ redeemAmount: (0, ethers_2.formatUnits)(actualRedeem, suUnderlyDecimals),
208
+ // seizeToken: asset.address,
209
+ redeemVal: '$ ' +
210
+ (0, ethers_2.formatUnits)((BigInt(actualRedeem) * BigInt(redeemPrice)) /
211
+ BigInt(1e18) /
212
+ BigInt(Number(`1e${suUnderlyDecimals - 2}`)), 2),
213
+ seizeSymbol: asset.underlySymbol,
214
+ seizeAmount: (0, ethers_2.formatUnits)(actualSeize, asset.underlyDecimals),
215
+ seizeVal: '$ ' +
216
+ (0, ethers_2.formatUnits)((BigInt(actualSeize) * BigInt(seizePrice)) /
217
+ BigInt(1e18) /
218
+ BigInt(Number(`1e${Number(asset.underlyDecimals.toString()) - 2}`)), 2),
219
+ provider,
220
+ protocolSeize: (0, ethers_2.formatUnits)(protocolSeizeTokens, asset.underlyDecimals),
221
+ protocolSeizeVal: '$ ' +
222
+ (0, ethers_2.formatUnits)((BigInt(protocolSeizeTokens) * BigInt(seizePrice)) /
223
+ BigInt(1e18) /
224
+ BigInt(Number(`1e${Number(asset.underlyDecimals.toString()) - 2}`)), 2),
225
+ });
226
+ }
227
+ else {
228
+ }
229
+ }
230
+ for (const asset of heteroAssets) {
231
+ if (targetRedeemAmount <= 0) {
232
+ break;
233
+ }
234
+ const [actualRedeem, actualSeize, protocolSeizeTokens, redeemPrice, seizePrice] = await c.redeemFaceValueWithTargetPlan.staticCall(redeemer, provider, asset.address, suAddr, targetRedeemAmount);
235
+ if (actualRedeem > 0 && actualRedeem <= targetRedeemAmount) {
236
+ targetRedeemAmount -= actualRedeem;
237
+ details.push({
238
+ redeemAmount: (0, ethers_2.formatUnits)(actualRedeem, suUnderlyDecimals),
239
+ redeemVal: '$ ' +
240
+ (0, ethers_2.formatUnits)((BigInt(actualRedeem) * BigInt(redeemPrice)) /
241
+ BigInt(1e18) /
242
+ BigInt(Number(`1e${suUnderlyDecimals - 2}`)), 2),
243
+ // seizeToken: asset.address,
244
+ seizeSymbol: asset.underlySymbol,
245
+ seizeAmount: (0, ethers_2.formatUnits)(actualSeize, asset.underlyDecimals),
246
+ seizeVal: '$ ' +
247
+ (0, ethers_2.formatUnits)((BigInt(actualSeize) * BigInt(seizePrice)) /
248
+ BigInt(1e18) /
249
+ BigInt(Number(`1e${Number(asset.underlyDecimals.toString()) - 2}`)), 2),
250
+ provider,
251
+ protocolSeize: (0, ethers_2.formatUnits)(protocolSeizeTokens, asset.underlyDecimals),
252
+ protocolSeizeVal: '$ ' +
253
+ (0, ethers_2.formatUnits)((BigInt(protocolSeizeTokens) * BigInt(seizePrice)) /
254
+ BigInt(1e18) /
255
+ BigInt(Number(`1e${Number(asset.underlyDecimals.toString()) - 2}`)), 2),
256
+ });
257
+ }
258
+ else {
259
+ }
260
+ }
261
+ provider = await r.getNextProvider(suAddr, provider);
262
+ }
263
+ return details;
264
+ }
265
+ exports.redeemFaceValueTrial = redeemFaceValueTrial;
147
266
  //# sourceMappingURL=comptroller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"comptroller.js","sourceRoot":"","sources":["../../src/comptroller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"comptroller.js","sourceRoot":"","sources":["../../src/comptroller.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,7 @@ export interface SuErc20Interface extends Interface {
23
23
  encodeFunctionData(functionFragment: "borrowAndDepositBack", values: [AddressLike, BigNumberish]): string;
24
24
  encodeFunctionData(functionFragment: "borrowBalanceCurrent", values: [AddressLike]): string;
25
25
  encodeFunctionData(functionFragment: "borrowBalanceStored", values: [AddressLike]): string;
26
- encodeFunctionData(functionFragment: "borrowCollateralAndMintSynthetic", values: [AddressLike, BigNumberish]): string;
26
+ encodeFunctionData(functionFragment: "borrowCollateralAndMintSynthetic", values: [AddressLike, BigNumberish, BigNumberish]): string;
27
27
  encodeFunctionData(functionFragment: "borrowIndex", values?: undefined): string;
28
28
  encodeFunctionData(functionFragment: "borrowRatePerBlock", values?: undefined): string;
29
29
  encodeFunctionData(functionFragment: "calcCBorrowAmount", values: [AddressLike, BigNumberish]): string;
@@ -563,6 +563,7 @@ export interface SuErc20 extends BaseContract {
563
563
  ], "view">;
564
564
  borrowCollateralAndMintSynthetic: TypedContractMethod<[
565
565
  cTokenCollateral: AddressLike,
566
+ cBorrowAmount: BigNumberish,
566
567
  suBorrowAmount: BigNumberish
567
568
  ], [
568
569
  bigint
@@ -738,6 +739,7 @@ export interface SuErc20 extends BaseContract {
738
739
  getFunction(nameOrSignature: "borrowBalanceStored"): TypedContractMethod<[account: AddressLike], [bigint], "view">;
739
740
  getFunction(nameOrSignature: "borrowCollateralAndMintSynthetic"): TypedContractMethod<[
740
741
  cTokenCollateral: AddressLike,
742
+ cBorrowAmount: BigNumberish,
741
743
  suBorrowAmount: BigNumberish
742
744
  ], [
743
745
  bigint
@@ -16,5 +16,4 @@ import type * as proxy from "./proxy";
16
16
  export type { proxy };
17
17
  import type * as stake from "./stake";
18
18
  export type { stake };
19
- export type { ITimelock } from "./ITimelock";
20
19
  export type { Multicall2 } from "./Multicall2";
@@ -14,7 +14,7 @@ export declare class CErc20__factory extends ContractFactory {
14
14
  deploymentTransaction(): ContractTransactionResponse;
15
15
  }>;
16
16
  connect(runner: ContractRunner | null): CErc20__factory;
17
- static readonly bytecode = "0x6080806040523461002357670de0b6b3a7640000601155615a7d9081620000298239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c806304e59e5c146103a257806306fdde031461039d578063095ea7b3146103985780630e75270214610393578063134131a21461038e578063173b99041461038957806317bfdfbc1461038457806318160ddd1461037f578063182df0f51461037a5780631be195601461037557806323b872dd146103705780632608f8181461036b5780632678224714610366578063313ce567146103615780633af9e6691461035c5780633b1d21a21461033e5780633e941010146103575780634000fbad1461035257806342f3251a1461034d5780634576b5db1461034857806347bd37181461034357806359356c5c1461033e5780635fe3b56714610339578063601a0bf1146103345780636752e7021461032f5780636c540baf1461032a5780636f307dc31461032557806370a082311461032057806373acee981461031b578063852a12e3146103165780638f840ddd1461031157806394f431231461030c57806395d89b411461030757806395dd919314610302578063a0712d68146102fd578063a6afed95146102f8578063a9059cbb146102f3578063aa5af0fd146102ee578063ac784ddc146102e9578063ae9d70b0146102e4578063b5866382146102df578063b71d1a0c146102da578063bd6d894d146102d5578063c37f68e2146102d0578063c5ebeaec146102cb578063c7178230146102c6578063d2c6d0dc146102c1578063db006a75146102bc578063dd62ed3e146102b7578063e9c714f2146102b2578063f2b3abbd146102ad578063f3fdb15a146102a8578063f5e3c462146102a3578063f851a4401461029e578063f8f9da2814610299578063fca7820b146102945763fe9c44ae1461028f57600080fd5b612c14565b612b5b565b612b02565b612ad5565b6125be565b612595565b61249f565b612377565b612314565b61204f565b611ff2565b611ee6565b611c62565b611c18565b611bfd565b611b53565b611ac9565b611a27565b611a01565b6119e3565b611994565b611979565b6116cf565b6116a8565b611601565b611569565b6114c2565b611168565b611118565b6110db565b6110ae565b611090565b61106e565b610f3d565b610f14565b610c41565b610ef6565b610de9565b610dcb565b610d4a565b610c5f565b610bbb565b610b9a565b610b71565b610b1a565b610aad565b6108b3565b610890565b610872565b61080f565b6107f1565b6106f0565b610694565b610605565b610526565b6103cc565b6001600160a01b038116036103b857565b600080fd5b604435906103ca826103a7565b565b346103b85760603660031901126103b8576103f96004356103ec816103a7565b6044359060243590614f6e565b60408051928352602083019190915290f35b0390f35b60009103126103b857565b90600182811c9216801561044a575b602083101461043457565b634e487b7160e01b600052602260045260246000fd5b91607f1691610429565b634e487b7160e01b600052604160045260246000fd5b6020810190811067ffffffffffffffff82111761048657604052565b610454565b67ffffffffffffffff811161048657604052565b6040810190811067ffffffffffffffff82111761048657604052565b90601f8019910116810190811067ffffffffffffffff82111761048657604052565b6020808252825181830181905290939260005b82811061051257505060409293506000838284010152601f8019910116010190565b8181018601518482016040015285016104f0565b346103b857600080600319360112610602576040519080600180549161054b8361041a565b808652928281169081156105d8575060011461057e575b61040b85610572818703826104bb565b604051918291826104dd565b92508083527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b8284106105c05750505081016020016105728261040b610562565b805460208587018101919091529093019281016105a5565b86955061040b9693506020925061057294915060ff191682840152151560051b8201019293610562565b80fd5b346103b85760403660031901126103b857600435610622816103a7565b6024359033600052600f602052816106508260406000209060018060a01b0316600052602052604060002090565b556040519182526001600160a01b03169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590602090a3602060405160018152f35b346103b85760203660031901126103b85760206000546106b960ff8260101c166132e4565b62ff0000199081166000556106cc613790565b50620100006106de6004353333614412565b50916000541617600055604051908152f35b346103b85760403660031901126103b85760043561070d816103a7565b60005461071f60ff8260101c166132e4565b62ff0000198116600055604051637f4e225760e11b8152602081600481335afa9081156107ec576000916107be575b506107ac5760ff161561079b5761040b9061077590602435906001600160a01b0316615242565b61078b6201000062ff0000196000541617600055565b6040519081529081906020820190565b60405162771b3360e91b8152600490fd5b604051634a8af12d60e01b8152600490fd5b6107df915060203d81116107e5575b6107d781836104bb565b810190613016565b3861074e565b503d6107cd565b612ffd565b346103b85760003660031901126103b8576020600854604051908152f35b346103b85760203660031901126103b857602060043561082e816103a7565b620100006108616000549261084860ff8560101c166132e4565b62ff00001993841660005561085b613790565b506135f2565b916000541617600055604051908152f35b346103b85760003660031901126103b8576020600d54604051908152f35b346103b85760003660031901126103b85760206108ab6136cf565b604051908152f35b346103b8576020806003193601126103b85760048035916108d3836103a7565b6000805490936001600160a01b039081169160181c16818114610a9c576040516370a0823160e01b80825230868301908152919390929091859185918290819060200103915afa9283156107ec578693610a7d575b50604051828152308682019081528590829081906020010381855afa80156107ec576109989286928992610a5e575b5060035460081c6001600160a01b03168960405180968195829463a9059cbb60e01b84528d840160209093929193604081019460018060a01b031681520152565b03925af180156107ec57610a41575b50845483906109cf906109c39060181c6001600160a01b031681565b6001600160a01b031690565b604051928352308684019081528391908290819060200103915afa9283156107ec578593610a12575b505003610a03575080f35b6040516346edcd5360e11b8152fd5b610a32929350803d10610a3a575b610a2a81836104bb565b810190612fee565b9038806109f8565b503d610a20565b610a5790843d86116107e5576107d781836104bb565b50386109a7565b610a76919250833d8511610a3a57610a2a81836104bb565b9038610957565b610a95919350843d8611610a3a57610a2a81836104bb565b9138610928565b604051632f028cfb60e01b81528490fd5b346103b85760603660031901126103b8576020600435610acc816103a7565b62010000610b0860243592610ae0846103a7565b60005493610af360ff8660101c166132e4565b62ff000019948516600055604435913361333d565b15916000541617600055604051908152f35b346103b85760403660031901126103b8576020600435610b39816103a7565b620100006106de60005492610b5360ff8560101c166132e4565b62ff000019938416600055610b66613790565b506024359033614412565b346103b85760003660031901126103b8576004546040516001600160a01b039091168152602090f35b346103b85760003660031901126103b857602060ff60035416604051908152f35b346103b85760203660031901126103b857610c11600435610bdb816103a7565b610be3613691565b9060405191610bf18361046a565b82526001600160a01b03166000908152600e60205260409020549061570d565b906004811015610c3c57610c2a57602090604051908152f35b604051630ea4bb4160e21b8152600490fd5b61331d565b346103b85760003660031901126103b8576020601254604051908152f35b346103b85760203660031901126103b857600054610c8260ff8260101c166132e4565b62ff00001916600055610c93613790565b506009544303610d3857610ca960043533613cca565b600c5481810190818111610d33578110610d2157600c8190556040805133815260208101939093528201527fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59080606081015b0390a1610d156201000062ff0000196000541617600055565b60405160008152602090f35b6040516335c973c760e21b8152600490fd5b613a26565b604051638e10cbd360e01b8152600490fd5b346103b85760203660031901126103b8576003546004359060081c6001600160a01b03163303610db957601180549082905560408051918252602080830184905292917f68e61dbc80efc8af787740901509a321d0fc29f4e432fae6c4e175867b9614439190a1604051908152f35b604051634755657960e01b8152600490fd5b346103b85760003660031901126103b8576020601154604051908152f35b346103b85760203660031901126103b857600435610e06816103a7565b6003546001600160a01b03919060081c82163303610db9576005546004906020906001600160a01b03169360405192838092623f1ee960e11b825286165afa9081156107ec57600091610ed8575b5015610ec657600580546001600160a01b0319166001600160a01b0383161790557f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d915b604080516001600160a01b039283168152929091166020830152819081015b0390a160405160008152602090f35b6040516383aebebd60e01b8152600490fd5b610ef0915060203d81116107e5576107d781836104bb565b38610e54565b346103b85760003660031901126103b8576020600b54604051908152f35b346103b85760003660031901126103b8576005546040516001600160a01b039091168152602090f35b346103b85760203660031901126103b85760048035600054610f6460ff8260101c166132e4565b62ff00001916600055610f75613790565b5060035460081c6001600160a01b0316330361105e57600954430361104e57806012541061104e57600c5480821161103d57610fb18282613cbd565b90811061102c577f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e9250610fe481600c55565b600354610ffe90839060081c6001600160a01b03166142ba565b6003546040805160089290921c6001600160a01b031682526020820193909352918201528060608101610cfc565b604051636f7bdc5360e01b81528390fd5b60405163152125f760e21b81528390fd5b50604051638e10cbd360e01b8152fd5b50604051634755657960e01b8152fd5b346103b85760003660031901126103b8576020604051666379da05b600008152f35b346103b85760003660031901126103b8576020600954604051908152f35b346103b85760003660031901126103b85760005460405160189190911c6001600160a01b03168152602090f35b346103b85760203660031901126103b8576004356110f8816103a7565b60018060a01b0316600052600e6020526020604060002054604051908152f35b346103b8576000806003193601126106025780602091549061113f60ff8360101c166132e4565b62ff0000199182168155611151613790565b5062010000600b5492825416179055604051908152f35b346103b85760203660031901126103b857600480359060009081549061119360ff8360101c166132e4565b62ff00001991821683556111a5613790565b506111ae6139d7565b936111c96111ba61370d565b91906020880192835287613a1a565b85516111d481613333565b6111dd81613333565b6114b1576111f790516111ee6114e0565b90815282615791565b909561120b60409788830193845282613a1a565b805161121681613333565b61121f81613333565b6114a15760608101928352600554611241906109c3906001600160a01b031681565b8251813b1561149d57885163eabe7d9160e01b815230878201908152336020820152604081019290925291889183919082908490829060600103925af180156107ec5761148a575b50600954430361147a576112b4906112a5600d548451906155c9565b92906080830193845282613a1a565b80516112bf81613333565b6112c881613333565b61146a57336000908152600e602052604090206112fe9291906112ef905b548551906155c9565b939060a0830194855282613a1a565b5161130881613333565b61131181613333565b61145a57865460ff168061144e575b61143e5751600d5551336000908152600e6020526040902055611344825133613e79565b8051865190815230903390600080516020615a2883398151915290602090a3815181518751338152602081019290925260408201527fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a92990606090a16005546113b6906109c3906001600160a01b031681565b9151905192823b1561143a5786516351dff98960e01b815230918101918252336020830152604082019290925260608101939093529291849184918290849082906080015b03925af19182156107ec576201000092611421575b508254161790555160008152602090f35b8061142e6114349261048b565b8061040f565b38611410565b8580fd5b875163f630766b60e01b81528590fd5b50601254845111611320565b875163547d32af60e01b81528590fd5b8751635b8ae23960e01b81528590fd5b8651638e10cbd360e01b81528490fd5b8061142e6114979261048b565b38611289565b8780fd5b8651632721a8cd60e21b81528490fd5b60405163144ff09b60e31b81528390fd5b346103b85760003660031901126103b8576020600c54604051908152f35b604051906103ca8261046a565b81601f820112156103b85780359067ffffffffffffffff82116104865760405192611522601f8401601f1916602001856104bb565b828452602083830101116103b857816000926020809301838601378301015290565b60ff8116036103b857565b60c435906103ca82611544565b60e435906103ca826103a7565b346103b8576101403660031901126103b857600435611587816103a7565b602435611593816103a7565b61159b6103bd565b906084359267ffffffffffffffff938481116103b8576115bf9036906004016114ed565b60a4359485116103b8576115da6115ff9536906004016114ed565b6115e261154f565b916115eb61155c565b936101243596610104359660643592612c37565b005b346103b8576000806003193601126106025760405190806002546116248161041a565b808552916001918083169081156105d8575060011461164d5761040b85610572818703826104bb565b9250600283527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5b8284106116905750505081016020016105728261040b610562565b80546020858701810191909152909301928101611675565b346103b85760203660031901126103b85760206108ab6004356116ca816103a7565b6135f2565b346103b85760203660031901126103b85760048035600080546116f760ff8260101c166132e4565b62ff0000199081168255611709613790565b50600554611721906109c3906001600160a01b031681565b92833b156119755760408051634ef4c3e160e01b815230878201908152336020820152808301849052919590918591839182908490829060600103925af180156107ec57611962575b5060095443036119525793611799946117816139d7565b9061178a61370d565b97906020840198895283613a1a565b81516117a481613333565b6117ad81613333565b61194257906117dd6117c36117eb949333613cca565b60a0830198818a5251906117d56114e0565b918252615791565b939087830194855282613a1a565b80516117f681613333565b6117ff81613333565b611933579061182591611816600d548551906155eb565b93906060830194855282613a1a565b805161183081613333565b61183981613333565b61192557336000908152600e6020526040902061187093929190611861905b548651906155eb565b94906080830195865282613a1a565b5161187a81613333565b61188381613333565b6119175750957f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f916118bb6201000096979851600d55565b51336000908152600e602052604090205551825187513381526020810192909252604082015280606081010390a151845190815233903090600080516020615a2883398151915290602090a38254161790555160008152602090f35b865163062f79e760e41b8152fd5b50855162ba6be960e81b8152fd5b50845163d0cd4f9b60e01b8152fd5b8551631624a1b560e01b81528390fd5b50505051638e10cbd360e01b8152fd5b8061142e61196f9261048b565b3861176a565b8280fd5b346103b85760003660031901126103b85760206108ab613790565b346103b85760403660031901126103b85760206004356119b3816103a7565b62010000610b08600054926119cd60ff8560101c166132e4565b62ff00001993841660005560243590338061333d565b346103b85760003660031901126103b8576020600a54604051908152f35b346103b85760003660031901126103b857602060ff60005460081c166040519015158152f35b346103b85760003660031901126103b857600654601254600b54600c54600854604051635c0b440b60e11b815260048101949094526024840192909252604483015260648201529060209082906001600160a01b03168180608481015b03915afa80156107ec5761040b91600091611aab575b506040519081529081906020820190565b611ac3915060203d8111610a3a57610a2a81836104bb565b38611a9a565b346103b857600080600319360112610602576003546001600160a01b039060081c81163303610db95781546040516370a0823160e01b8152306004820152916020918391602491839160189190911c165afa80156107ec57611b32918391611b35575b50601255565b80f35b611b4d915060203d8111610a3a57610a2a81836104bb565b38611b2c565b346103b85760203660031901126103b857600435611b70816103a7565b6003546001600160a01b039060081c81163303610db9576004548183168015611beb576001600160a01b0319821617600455604080516001600160a01b0393909216831682529190921660208301527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9919081908101610eb7565b60405163e6c4247b60e01b8152600490fd5b346103b85760003660031901126103b85760206108ab613691565b346103b85760203660031901126103b85761040b611c40600435611c3b816103a7565b613588565b6040805194855260208501939093529183015260608201529081906080820190565b346103b85760203660031901126103b85760048035600090815490611c8c60ff8360101c166132e4565b62ff0000199182168355611c9e613790565b50600554611cb6906109c3906001600160a01b031681565b93843b15611ee2576040805163368f515360e21b815230838201908152336020820152808301859052919690918691839182908490829060600103925af180156107ec57611ecf575b506009544303611ec157835460ff1680611eb6575b611ea857611d20614393565b611d3b611d2c3361361e565b91906020840192835283613a1a565b8151611d4681613333565b611d4f81613333565b611e985790611d6284611d7093516155eb565b929088830193845282613a1a565b8051611d7b81613333565b611d8481613333565b611e885790611d999161181685600b546155eb565b51611da381613333565b611dac81613333565b611e78578051336000908152601060205260409020908155600a546001909101558151600b557f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809190611dff85336140df565b51905187513381526020810186905260408101929092526060820152608090a1600554611e36906109c3906001600160a01b031681565b90813b15611e74578551635c77860560e01b8152309181019182523360208301526040820193909352919291849184918290849082906060016113fb565b8480fd5b86516303ab774960e61b81528390fd5b865163bbd8fc0160e01b81528390fd5b865163bcce27e360e01b81528390fd5b845163f630766b60e01b8152fd5b508160125410611d14565b8451638e10cbd360e01b8152fd5b8061142e611edc9261048b565b38611cff565b8380fd5b346103b85760003660031901126103b857600554611f0e906109c3906001600160a01b031681565b6040516302a9bed760e61b81523060048201526020908181602481865afa80156107ec5760ff91600091611fc5575b5016159182611f6f575b505080611f5c575b6040519015158152602090f35b50600854670de0b6b3a764000014611f4f565b60405163715cfdd960e01b81523060048201529192508290829060249082905afa9182156107ec57600092611fa8575b50503880611f47565b611fbe9250803d106107e5576107d781836104bb565b3880611f9f565b611fe59150833d8511611feb575b611fdd81836104bb565b810190614f4b565b38611f3d565b503d611fd3565b346103b85760803660031901126103b8576020600435612011816103a7565b62010000610861602435612024816103a7565b6000549361203760ff8660101c166132e4565b62ff0000199485166000556064359160443591614787565b346103b85760203660031901126103b857600480359060009081549061207a60ff8360101c166132e4565b62ff000019918216835561208c613790565b5083151593848061230d575b6122fd576120c0906120a86139d7565b956120b161370d565b93906020890194855288613a1a565b86516120cb81613333565b6120d481613333565b6122ec57156122965780612107926120fc926040890152516120f46114e0565b90815261570d565b606087015285613a1a565b835161211281613333565b61211b81613333565b612287575b600554612137906109c3906001600160a01b031681565b604094858101918251813b1561228357875163eabe7d9160e01b815230868201908152336020820152604081019290925291879183919082908490829060600103925af180156107ec57612270575b506009544303612260576121b06121a1600d548451906155c9565b91906080840192835283613a1a565b81516121bb81613333565b6121c481613333565b61225057336000908152600e602052604090206121f491906121e5906112e6565b929060a0850193845284613a1a565b82516121ff81613333565b61220881613333565b61145a57865460ff1680612241575b61143e5751600d556060919051336000908152600e60205260409020550190611344825133613e79565b50601254606084015111612217565b8651635b8ae23960e01b81528490fd5b8551638e10cbd360e01b81528390fd5b8061142e61227d9261048b565b38612186565b8680fd5b6040516345812ea760e11b8152fd5b506122af6122ba91516122a76114e0565b908152615778565b604087015285613a1a565b83516122c581613333565b6122ce81613333565b6122dd57826060850152612120565b604051632721a8cd60e21b8152fd5b60405163144ff09b60e31b81528490fd5b5060405163431f269d60e01b8152fd5b5083612098565b346103b85760403660031901126103b857602061236e600435612336816103a7565b60243590612343826103a7565b60018060a01b0316600052600f835260406000209060018060a01b0316600052602052604060002090565b54604051908152f35b346103b85760003660031901126103b8576004546001600160a01b031680338114801590612497575b612485576003547fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9927ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc9161242c906124049060081c6001600160a01b03166109c3565b60038054610100600160a81b03191660089490941b610100600160a81b031693909317909255565b600480546001600160a01b0319169055600354604080516001600160a01b03938416815260089290921c9092166020820152a1600454604080516001600160a01b03938416815292909116602083015281908101610eb7565b60405163d1ec4b2360e01b8152600490fd5b5033156123a0565b346103b85760203660031901126103b8576004356124bc816103a7565b6124c4613790565b506003546001600160a01b03919060081c82163303610db9576009544303610d38576006546004906020906001600160a01b031693604051928380926310c8fc9560e11b825287165afa9081156107ec57600091612577575b501561256557600680546001600160a01b0319166001600160a01b0383161790557fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f92691610e98565b60405163ee39b72560e01b8152600490fd5b61258f915060203d81116107e5576107d781836104bb565b3861251d565b346103b85760003660031901126103b8576006546040516001600160a01b039091168152602090f35b346103b8576060806003193601126103b85760048035916125de836103a7565b602435926044356125ee816103a7565b6000805461260160ff8260101c166132e4565b62ff000019168155612611613790565b506040805163a6afed9560e01b815290966020926001600160a01b038581169391929185818b8187895af180156107ec57612ab8575b5060055461265f906109c3906001600160a01b031681565b803b15611ee257838884928c8a8f61268e905196879586948594632fe3f38f60e11b865233913090870161470b565b03915afa80156107ec57612aa5575b506009544303612a78578951636c540baf60e01b815285818b8187895af19081156107ec578491612a88575b504303612a785786163314612a68578015612a58576000198114612a48576126f2908633614412565b6005549097915061270d906109c3906001600160a01b031681565b8951638e8f294b60e01b808252308b83019081529192918490849081906020010381855afa9081156107ec578b85918e8b968995612a22575b50519081526001600160a01b03909516908501908152849081906020015b0381855afa9283156107ec578b92859187956129f0575b508d51634ada90af60e01b815293849182905afa9182156107ec578590869587946129b9575b505060ff80919416911614612960575b506127be91508786614f6e565b89516370a0823160e01b81526001600160a01b038816818b0190815291999250908590829081906020010381875afa80156107ec5789918491612943575b50106129355730830361289a5750505050836128779161283f7f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb5296853330614b11565b505b86513381526001600160a01b039485166020820152604081019590955290921660608401526080830191909152819060a0820190565b0390a16128906201000062ff0000196000541617600055565b5160008152602090f35b88516334b1b43760e21b8152339181019182526001600160a01b038716602083015260408201899052600060608301529793949285928992839190829060800103925af19283156107ec577f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529661287794612917575b5050612841565b8161292d92903d10610a3a57610a2a81836104bb565b503880612910565b8851630e7a24eb60e11b8152fd5b61295a9150863d8811610a3a57610a2a81836104bb565b386127fc565b8a51637f4e225760e11b81529290915085838b81305afa80156107ec576127be93859161299c575b5061299557505b386127b1565b905061298f565b6129b39150873d89116107e5576107d781836104bb565b38612988565b60ff96508694506129df9250803d106129e9575b6129d781836104bb565b81019061476c565b90959093906127a1565b503d6129cd565b612a11919550823d8411612a1b575b612a0981836104bb565b81019061473d565b509050933861277b565b503d6129ff565b612764919550612a3e90853d8711612a1b57612a0981836104bb565b5090509490612746565b885163f72ef4e160e01b81528890fd5b885163b2f72f4760e01b81528890fd5b885163039f861b60e51b81528890fd5b8951638e10cbd360e01b81528990fd5b612a9f9150863d8811610a3a57610a2a81836104bb565b386126c9565b8061142e612ab29261048b565b3861269d565b612ace90863d8811610a3a57610a2a81836104bb565b5038612647565b346103b85760003660031901126103b85760035460405160089190911c6001600160a01b03168152602090f35b346103b85760003660031901126103b857600654601254600b54600c546040516315f2405360e01b81526004810193909352602483019190915260448201529060209082906001600160a01b0316818060648101611a84565b346103b85760203660031901126103b857600435600054612b8160ff8260101c166132e4565b62ff00001916600055612b92613790565b5060035460081c6001600160a01b03163303610db9576009544303610d3857670de0b6b3a76400008111612c025760088054908290556040805191825260208201929092527faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f8214609181908101610cfc565b604051631b9bc96960e11b8152600490fd5b346103b85760003660031901126103b857602060ff600054166040519015158152f35b979593919896949290986013549960ff8b60081c1615809b819c612d5d575b8115612d3d575b5015612ce157612c83998b612c7a600160ff196013541617601355565b612cc857612d6b565b612c8957565b612c9961ff001960135416601355565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b612cdc61010061ff00196013541617601355565b612d6b565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b15915081612d4f575b5038612c5d565b6001915060ff161438612d48565b600160ff8216109150612c56565b98959697919392909760ff60135460081c1615612f955760038054610100600160a81b03191660089290921b610100600160a81b031691909117905560095415801590612f8a575b612f7857612dd290612dcd600160ff196000541617600055565b600755565b60075415612f66576011556011548015908115612f54575b50612f42577fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926612ec5612ecd937f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d612e88612ee29a612e4b612ed29a600855565b600580546001600160a01b0319166001600160a01b0383161790555b60408051600081526001600160a01b03909216602083015290918291820190565b0390a1612e9443600955565b612ea5670de0b6b3a7640000600a55565b600680546001600160a01b0319166001600160a01b038316179055612e67565b0390a1613112565b6131fa565b60ff1660ff196003541617600355565b612ef86201000062ff0000196000541617600055565b612f0861ff001960005416600055565b6001600160a01b03811615611beb57600080546301000000600160b81b03191660189290921b6301000000600160b81b0316919091179055565b6040516314bba91760e11b8152600490fd5b670de0b6b3a764000091501138612dea565b60405163a2ec3a5560e01b8152600490fd5b604051634743547560e01b8152600490fd5b50600a541515612db3565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b908160209103126103b8575190565b6040513d6000823e3d90fd5b519081151582036103b857565b908160209103126103b85761302a90613009565b90565b90601f821161303a575050565b6001916000908382527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6906020601f850160051c83019410613097575b601f0160051c01915b82811061308d5750505050565b8181558301613080565b9092508290613077565b601f81116130ad575050565b600090600282527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace906020601f850160051c83019410613108575b601f0160051c01915b8281106130fd57505050565b8181556001016130f1565b90925082906130e8565b90815167ffffffffffffffff81116104865760019061313a81613135845461041a565b61302d565b602080601f831160011461317557508192939460009261316a575b5050600019600383901b1c191690821b179055565b015190503880613155565b90601f198316956131a860016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690565b926000905b8882106131e357505083859697106131ca575b505050811b019055565b015160001960f88460031b161c191690553880806131c0565b8087859682949686015181550195019301906131ad565b90815167ffffffffffffffff8111610486576132208161321b60025461041a565b6130a1565b602080601f831160011461325c5750819293600092613251575b50508160011b916000199060031b1c191617600255565b01519050388061323a565b90601f1983169461328f60026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90565b926000905b8782106132cc5750508360019596106132b3575b505050811b01600255565b015160001960f88460031b161c191690553880806132a8565b80600185968294968601518155019501930190613294565b156132eb57565b60405162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b6044820152606490fd5b634e487b7160e01b600052602160045260246000fd5b60041115610c3c57565b6005549093919290613359906109c3906001600160a01b031681565b90813b156103b857604080516317b9b84b60e31b81523060048201526001600160a01b038681166024830152831660448201526064810185905290926000908290608490829084905af180156107ec57613575575b506001600160a01b03818116958582169591868814613564578116860361353b576000195b6133dd86826155c9565b94906133e881613333565b61352a576001600160a01b0384166000908152600e602052604090206134119088905b546155c9565b919061341c81613333565b613519576001600160a01b0381166000908152600e60205260409020613444908990546155eb565b929061344f81613333565b61350857916134a8869492600080516020615a288339815191529a98969461348d6134c19b9960018060a01b0316600052600e602052604060002090565b556001600160a01b03166000908152600e6020526040902090565b55196134c9575b50505051918291829190602083019252565b0390a3600090565b6134e86134ff9260018060a01b0316600052600f602052604060002090565b9060018060a01b0316600052602052604060002090565b553880806134af565b8751636132d86760e11b8152600490fd5b865163f4f600dd60e01b8152600490fd5b8551638cd22d1960e01b8152600490fd5b6001600160a01b0382166000908152600f6020526040902061355e9082906134e8565b546133d3565b8451638cd22d1960e01b8152600490fd5b8061142e6135829261048b565b386133ae565b6001600160a01b0381166000908152600e602052604081205492916135ac9061361e565b92906004811015610c3c576135e5576135c361370d565b92906135ce81613333565b6135d85793929190565b6009945092508291508190565b9150915060099180918190565b6135fb9061361e565b906004811015610c3c5761360c5790565b604051638329b28360e01b8152600490fd5b6001600160a01b031660009081526010602052604081208054919291801561368b57600a5461364c91615575565b906004811015610c3c57806136845750600161366a920154906155af565b929061367581613333565b8061367f57509190565b925090565b9150509190565b50508190565b600054906136a460ff8360101c166132e4565b62ff0000199182166000556136b7613790565b50620100006136c46136cf565b926000541617600055565b6136d761370d565b906004811015610c3c576136e85790565b604051637e32c5cb60e01b8152600490fd5b604051906137078261046a565b60008252565b60009061372261371e835460ff1690565b1590565b61378a57600d5480613735575060075490565b6137506012546137436136fa565b50600b54600c549161560c565b61375b829392613333565b826137845761376a9250615690565b9061377481613333565b8061377e57505190565b90509190565b50509190565b60075490565b600954904382146139d157601254600b5490600c548094600a546137c16109c36109c360065460018060a01b031690565b6040926020845180936315f2405360e01b825281806137f760049a8d8d8d85016040919493926060820195825260208201520152565b03915afa9182156107ec576000926139b1575b5065048c273950008083116139a7575b5061382590436155c9565b919061383081613333565b6139975790613852916138416136fa565b5061384a6114e0565b9081526156d5565b919061385d81613333565b6139885761386b868361570d565b969061387681613333565b6139785761388490876155eb565b989061388f81613333565b613968576138ab90876008546138a36114e0565b908152615740565b92906138b681613333565b6139585790806138c592615740565b93906138d081613333565b61394a5750917f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc049596916139216139429461390a43600955565b61391384600a55565b61391c85600b55565b600c55565b51948594859094939260609260808301968352602083015260408201520152565b0390a1600090565b8251637147c17f60e11b8152fd5b505050516323de885360e01b8152fd5b505050516397373c4d60e01b8152fd5b5050505163ba1406af60e01b8152fd5b50505163190cdb4160e11b8152fd5b5050505163db19c5b160e01b8152fd5b915061382561381a565b6139ca91925060203d8111610a3a57610a2a81836104bb565b903861380a565b60009150565b6040519060c0820182811067ffffffffffffffff821117610486576040528160a06000918281528260208201528260408201528260608201528260808201520152565b6004821015610c3c5752565b634e487b7160e01b600052601160045260246000fd5b90670de0b6b3a76400008201809211610d3357565b91908201809211610d3357565b600554613a75906109c3906001600160a01b031681565b803b156103b85760408051634ef4c3e160e01b8152306004808301919091526001600160a01b03851660248301526044820186905291926000908290606490829084905af180156107ec57613c9c575b506009544303613c8e57613ad76139d7565b613ae2611d2c61370d565b8151613aed81613333565b613af681613333565b613c7e5790613b2b613b399392613b1e613b1960a0850199808b52601254613a51565b601255565b87519051906117d56114e0565b939085830194855282613a1a565b8051613b4481613333565b613b4d81613333565b613c6f5790613b6491611816600d548551906155eb565b8051613b6f81613333565b613b7881613333565b613c61576001600160a01b0386166000908152600e60205260409020613ba49392919061186190611858565b51613bae81613333565b613bb781613333565b613c53575051600d55600080516020615a288339815191529190516001600160a01b0385166000908152600e60205260409020558451815184516001600160a01b0387168152602081019290925260408201527f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f9080606081010390a15191519182526001600160a01b0392909216913091602090a351600091565b845163062f79e760e41b8152fd5b50835162ba6be960e81b8152fd5b50825163d0cd4f9b60e01b8152fd5b8351631624a1b560e01b81528390fd5b9051638e10cbd360e01b8152fd5b8061142e613ca99261048b565b38613ac5565b6012039060128211610d3357565b91908203918211610d3357565b60008054909291906001600160a01b0390613ce99060181c82166109c3565b6040516370a0823160e01b808252306004830152909490936020939192909116908386602481855afa9586156107ec578796613e3b575b506040516323b872dd60e01b81526001600160a01b039091166004820152306024820152604481019290925282908290818881606481015b03925af180156107ec57613e1e575b503d8015613e1557602014613d7a578380fd5b8084803e83515b15613de45783548190613da1906109c39060181c6001600160a01b031681565b604051938452306004850152839060249082905afa9384156107ec5793613df6575b5050808210613de457613dd591613cbd565b61302a613b1982601254613a51565b60405163065559c560e51b8152600490fd5b613e0d929350803d10610a3a57610a2a81836104bb565b903880613dc3565b50600019613d81565b613e3490823d84116107e5576107d781836104bb565b5038613d67565b613d589391965091613e5a8593843d8611610a3a57610a2a81836104bb565b9691935091613d20565b908160209103126103b8575161302a816103a7565b600554613e90906109c3906001600160a01b031681565b6040516334cc866d60e21b8152602093908481600481865afa9081156107ec5760049386916000936140c0575b506040516307dc0d1d60e41b815294859182905afa9283156107ec57600093614091575b506000546001600160a01b03918216939060181c82166040516325ad1be560e01b81526001600160a01b0382166004820152878180602481010381895afa9283156107ec5785928992600095614072575b5084613fe1575b50505050600014613fd35750918183613f56613fa89587956142ba565b6000805460181c6001600160a01b031660405163b5eb38d960e01b8152600160048201526001600160a01b03918216602482015260448101939093529093166064820152938492839182906084820190565b03925af180156107ec57613fba575050565b81613fd092903d10610a3a57610a2a81836104bb565b50565b9150916103ca9350166142ba565b9091929350614037613ff560035460ff1690565b604051636112d0cb60e01b81526001600160a01b039384166004820152939092166024840152604483019490945260ff16606482015291829081906084820190565b0381875afa9081156107ec57600091614055575b5082863880613f39565b61406c9150863d88116107e5576107d781836104bb565b3861404b565b61408a919550833d85116107e5576107d781836104bb565b9338613f32565b6140b2919350853d87116140b9575b6140aa81836104bb565b810190613e64565b9138613ee1565b503d6140a0565b6140d8919350823d84116140b9576140aa81836104bb565b9138613ebd565b6005546140f6906109c3906001600160a01b031681565b6040516334cc866d60e21b8152602093908481600481865afa9081156107ec57600493869160009361429b575b506040516307dc0d1d60e41b815294859182905afa9283156107ec5760009361427c575b506000546001600160a01b03918216939060181c82166040516325ad1be560e01b81526001600160a01b0382166004820152878180602481010381895afa9283156107ec578592899260009561425d575b508461420e575b50505050600014613fd357509181836141bc613fa89587956142ba565b6000805460181c6001600160a01b031660405163b5eb38d960e01b8152600060048201526001600160a01b03918216602482015260448101939093529093166064820152938492839182906084820190565b9091929350614222613ff560035460ff1690565b0381875afa9081156107ec57600091614240575b508286388061419f565b6142579150863d88116107e5576107d781836104bb565b38614236565b614275919550833d85116107e5576107d781836104bb565b9338614198565b614294919350853d87116140b9576140aa81836104bb565b9138614147565b6142b3919350823d84116140b9576140aa81836104bb565b9138614123565b9190614316906020816000956142e06109c36109c3895460018060a01b039060181c1690565b60405163a9059cbb60e01b81526001600160a01b0390921660048301526024820192909252938491908290889082906044820190565b03925af19081156107ec5761433792613b1992614375575b50601254613cbd565b3d801561436a57602014614349575080fd5b90602081803e515b1561435857565b604051637308799360e11b8152600490fd5b509050600019614351565b61438c9060203d81116107e5576107d781836104bb565b503861432e565b604051906080820182811067ffffffffffffffff8211176104865760405260006060838281528260208201528260408201520152565b6040519060e0820182811067ffffffffffffffff821117610486576040528160c06000918281528260208201528260408201528260608201528260808201528260a08201520152565b60055491939092909161442f906109c3906001600160a01b031681565b93843b156103b85760408051631200453160e11b8152306004808301919091526001600160a01b03878116602484015284166044830152606482018590529196600096919087908290608490829084905af180156107ec576146f8575b5060095443036146e9576144df9495966144a46143c9565b6001600160a01b038516600090815260106020526040902060010154958282019687526144d08661361e565b989060608401998a5283613a1a565b81516144ea81613333565b6144f381613333565b6146d95761452d919060001981036146cf5750875160208201525b6112a561451f602083015186613cca565b60c0830199818b52516155c9565b805161453881613333565b61454181613333565b6146bf5761456690614557600b548a51906155c9565b929060a0830193845282613a1a565b5161457081613333565b61457981613333565b6146af57817f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1918b9796959493516145c38860018060a01b03166000526010602052604060002090565b55600a546001600160a01b03881660009081526010602052604090206001015551906145ee82600b55565b8951905184516001600160a01b0387811682528916602082015260408101929092526060820152608081019190915260a090a1600554614638906109c3906001600160a01b031681565b928751965191843b156122835751631ededc9160e01b8152309181019182526001600160a01b03938416602083015292909416604085015260608401959095526080830194909452839182908490829060a00103925af180156107ec5761469e57505190565b8061142e6146ab9261048b565b5190565b82516368dfd0a960e11b81528590fd5b8251631133bdd360e21b81528590fd5b602082015261450e565b8251631933d58d60e31b81528590fd5b508551638e10cbd360e01b8152fd5b8061142e6147059261048b565b3861448c565b6001600160a01b0391821681529181166020830152918216604082015291166060820152608081019190915260a00190565b908160609103126103b85761475181613009565b9161302a6040602084015161476581611544565b9301613009565b908160609103126103b8578051916040602083015192015190565b939280158015614aa9575b15614a9d576005546147ae906109c3906001600160a01b031681565b94853b156103b85760409560008751809263d02f735160e01b82528183816147dd8b8b8a33306004870161470b565b03925af180156107ec57614a8a575b506001600160a01b038181169490841691828614614a7957906148429291614812614aba565b946148338361340b8960018060a01b0316600052600e602052604060002090565b95906020880196875287613a1a565b855161484d81613333565b61485681613333565b614a685761487261487f916148696114e0565b908152846158fb565b6080870193818552615848565b95606086019687526148a161489261370d565b919060c0890192835288613a1a565b86516148ac81613333565b6148b581613333565b614a5757906148d38b92516148c86114e0565b9081528551906157cb565b956148e760a0890197808952600c546157e3565b9760e081019889526148fd600d54875190615848565b90610100810191825261493d6149316149288860018060a01b0316600052600e602052604060002090565b548d51906155eb565b96830196875282613a1a565b5161494781613333565b61495081613333565b614a4657936149df614a04948a9894614a409e9f9a97614a3699956149a46149c1927fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59f61499e9051600c55565b51600d55565b516001600160a01b039092166000908152600e6020526040902090565b55516001600160a01b039092166000908152600e6020526040902090565b5589828a51895180600080516020615a28833981519152978893829190602083019252565b0390a3518651908152309290602090a35191519251308152602081019290925260408201929092529081906060820190565b0390a15190614c2e565b50600090565b8c51633288b61b60e21b8152600490fd5b8a5163144ff09b60e31b8152600490fd5b89516353d9d51960e01b8152600490fd5b8751637a2d3db360e01b8152600490fd5b8061142e614a979261048b565b386147ec565b5061302a929333614b11565b50670de0b6b3a76400008111614792565b60405190610120820182811067ffffffffffffffff82111761048657604052816101006000918281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201520152565b600554909493929190614b2e906109c3906001600160a01b031681565b803b156103b8576000838592848360409a614b5f8c519788968795869463d02f735160e01b8652306004870161470b565b03925af180156107ec57614c1b575b506001600160a01b038181169390831690818514614c0a5790614bc391614b93614aba565b93614bb48261340b8860018060a01b0316600052600e602052604060002090565b94906020870195865286613a1a565b8451614bce81613333565b614bd781613333565b614bf95761487f614872614be96114e0565b666379da05b600008152846158fb565b88516353d9d51960e01b8152600490fd5b8651637a2d3db360e01b8152600490fd5b8061142e614c289261048b565b38614b6e565b908015614f3957614c58614c406139d7565b92614c4961370d565b92906020860193845285613a1a565b8351614c6381613333565b614c6c81613333565b614f2757614c9990614c8a60409485870194818652516120f46114e0565b92906060870193845286613a1a565b8451614ca481613333565b614cad81613333565b614f1657600554614cc8906109c3906001600160a01b031681565b94835190863b156103b857855163eabe7d9160e01b8152306004808301919091526001600160a01b0385166024830152604482019390935260009788908290606490829084905af180156107ec57614f03575b506009544303614ef457614d37906112a5600d548751906155c9565b8051614d4281613333565b614d4b81613333565b614ee4576001600160a01b0384166000908152600e60205260409020614d7a9291906112ef90548851906155c9565b51614d8481613333565b614d8d81613333565b614ed457875460ff1680614ec8575b614eb85751600d55516001600160a01b0383166000908152600e6020526040902055614dc98351836142ba565b8351855190815230906001600160a01b03841690600080516020615a2883398151915290602090a38251845186516001600160a01b0385168152602081019290925260408201527fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a92990606090a1600554614e4d906109c3906001600160a01b031681565b9251935194833b1561228357516351dff98960e01b8152309181019182526001600160a01b03909216602082015260408101939093526060830193909352839183919082908490829060800103925af180156107ec57614eab575090565b8061142e61302a9261048b565b865163f630766b60e01b81528390fd5b50601254855111614d9c565b86516321ad662360e21b81528390fd5b865163cbebf92d60e01b81528390fd5b508451638e10cbd360e01b8152fd5b8061142e614f109261048b565b38614d1b565b83516310c99edb60e01b8152600490fd5b604051637f083f3f60e11b8152600490fd5b60405163ae664e2f60e01b8152600490fd5b908160209103126103b8575161302a81611544565b604d8111610d3357600a0a90565b600554614f85906109c3906001600160a01b031681565b906040908151948580946307dc0d1d60e41b825260209586916004998a915afa9081156107ec57600091615225575b50835163fc57d4df60e01b8082523089830190815291946001600160a01b0393841693929091908890879081906020010381875afa9384156107ec578a899261502398600097615200575b5089519081526001600160a01b038516918101918252978892918391829160200190565b03915afa9485156107ec576000956151e1575b50821580156151d9575b6151c957855163182df0f560e01b815292911686838a81845afa9283156107ec576000936151aa575b5085519087828b8163313ce56760e01b948582525afa9182156107ec57889260ff9160009161518d575b50169651998a91825281305afa9081156107ec576150e760ff6151029361512f9b61512a9a600092615170575b5050169460006150ce6136fa565b50506150d86136fa565b506150e16136fa565b50613a3c565b6150ef6114e0565b9081526150fa6114e0565b91825261588f565b9160128110615157575b5061511a91926150ef6114e0565b9160128110615134575b506159c7565b6157cb565b600091565b9161514a6151456151509394613caf565b614f60565b906158d0565b9038615124565b61511a9261514a61514561516a93613caf565b9161510c565b6151869250803d10611feb57611fdd81836104bb565b38806150c0565b6151a49150843d8611611feb57611fdd81836104bb565b38615093565b6151c2919350873d8911610a3a57610a2a81836104bb565b9138615069565b85516348fa9b2b60e11b81528990fd5b508415615040565b6151f9919550873d8911610a3a57610a2a81836104bb565b9338615036565b85939291975061521c90853d8711610a3a57610a2a81836104bb565b96909192614fff565b61523c9150853d87116140b9576140aa81836104bb565b38614fb4565b919061524c613790565b50600554615264906109c3906001600160a01b031681565b90813b156103b8576040805163368f515360e21b8152306004808301919091526001600160a01b0387166024830152604482018490526000949092919085908290606490829084905af180156107ec576154cd575b5060095443036154c057835460ff16806154b5575b6154a8576152da614393565b6001600160a01b03871692906152f2611d2c8561361e565b81516152fd81613333565b61530681613333565b61549857906153198661532793516155eb565b929085830193845282613a1a565b805161533281613333565b61533b81613333565b61548857906153509161181687600b546155eb565b5161535a81613333565b61536381613333565b6154785780516001600160a01b038a166000908152601060205260409020908155600a546001909101558151600b557f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab8091906153c4613b1988601254613cbd565b51905184516001600160a01b038b1681526020810188905260408101929092526060820152608090a1600554615404906109c3906001600160a01b031681565b91823b1561143a5751635c77860560e01b8152309181019182526001600160a01b03909716602082015260408101849052949593948591859182908490829060600103925af19283156107ec5761546093615465575b50613a5e565b505090565b8061142e6154729261048b565b3861545a565b83516303ab774960e61b81528390fd5b835163bbd8fc0160e01b81528390fd5b835163bcce27e360e01b81528390fd5b5163f630766b60e01b8152fd5b5082601254106152ce565b51638e10cbd360e01b8152fd5b8061142e6154da9261048b565b386152b9565b81810292918115918404141715610d3357565b81156154fd570490565b634e487b7160e01b600052601260045260246000fd5b801561554757670de0b6b3a7640000808202918083048203610d335761553990836154f3565b1461512f5750600290600090565b50600090600090565b670de0b6b3a764000090808202918204808203610d33571461512f5750600290600090565b9081156155905761553961558982846154e0565b92836154f3565b5050600090600090565b156155a757600090600090565b600190600090565b9080156155bf5761512f916154f3565b5050600190600090565b91908281116155e1578203918211610d335760009190565b5060039150600090565b9190820191828111610d335782106156035760009190565b60029150600090565b90615616916155eb565b60048293921015610c3c57826156345761563092506155c9565b9091565b505090600090565b61565490600060405161564e8161046a565b5261559a565b919061565f81613333565b8061567a5750604051916156728361046a565b825260009190565b60405192506156888361046a565b600083529190565b6156ab9092919260006040516156a58161046a565b52615513565b60048294921015610c3c57836156c6576156549293506155af565b5050604051916156888361046a565b906156ef9160006040516156e88161046a565b5251615575565b91906004811015610c3c578061567a5750604051916156728361046a565b90615717916156d5565b6004821015610c3c578161573957670de0b6b3a7640000915051049060009190565b5090600090565b9061574a916156d5565b91906004811015610c3c578061576f5750670de0b6b3a76400006156309251046155eb565b91505090600090565b61571790600060405161578a8161046a565b525161563c565b604051615717916157ae916000906157a88161046a565b52615550565b90926004841015610c3c57836156c6576156309293505190615690565b670de0b6b3a7640000916157de916158d0565b510490565b604051916157f08361049f565b60118352706164646974696f6e206f766572666c6f7760781b6020840152810191828211610d335761302a918310155b156158285750565b60405162461bcd60e51b815290819061584490600483016104dd565b0390fd5b906158836040516158588161049f565b60158152747375627472616374696f6e20756e646572666c6f7760581b602082015283831115615820565b8103908111610d335790565b670de0b6b3a7640000916158bd9160006040516158ab8161046a565b525190516158b7615916565b91615999565b04604051906158cb8261046a565b815290565b906158ee9160006040516158e38161046a565b5251906158b7615916565b604051906158cb8261046a565b61591290670de0b6b3a764000092516158b7615916565b0490565b604051906159238261049f565b601782527f6d756c7469706c69636174696f6e206f766572666c6f770000000000000000006020830152565b801591828015615991575b61598957670de0b6b3a76400008083029383850482141715610d335761598361302a93856154f3565b14615820565b505050600090565b50600061595a565b91821580156159bf575b61598957816159836159b861302a94866154e0565b94856154f3565b5081156159a3565b906159ed6158ee9260006040516159dd8161046a565b52516159e7615916565b9061594f565b905190615a226040516159ff8161049f565b600e81526d646976696465206279207a65726f60901b6020820152831515615820565b6154f356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e984f3c6dc4c6aa128450bafdb6b1745a01456f25c859b7d3d00974076de936164736f6c63430008130033";
17
+ static readonly bytecode = "0x6080806040523461002357670de0b6b3a7640000601155615a7d9081620000298239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c806304e59e5c146103a257806306fdde031461039d578063095ea7b3146103985780630e75270214610393578063134131a21461038e578063173b99041461038957806317bfdfbc1461038457806318160ddd1461037f578063182df0f51461037a5780631be195601461037557806323b872dd146103705780632608f8181461036b5780632678224714610366578063313ce567146103615780633af9e6691461035c5780633b1d21a21461033e5780633e941010146103575780634000fbad1461035257806342f3251a1461034d5780634576b5db1461034857806347bd37181461034357806359356c5c1461033e5780635fe3b56714610339578063601a0bf1146103345780636752e7021461032f5780636c540baf1461032a5780636f307dc31461032557806370a082311461032057806373acee981461031b578063852a12e3146103165780638f840ddd1461031157806394f431231461030c57806395d89b411461030757806395dd919314610302578063a0712d68146102fd578063a6afed95146102f8578063a9059cbb146102f3578063aa5af0fd146102ee578063ac784ddc146102e9578063ae9d70b0146102e4578063b5866382146102df578063b71d1a0c146102da578063bd6d894d146102d5578063c37f68e2146102d0578063c5ebeaec146102cb578063c7178230146102c6578063d2c6d0dc146102c1578063db006a75146102bc578063dd62ed3e146102b7578063e9c714f2146102b2578063f2b3abbd146102ad578063f3fdb15a146102a8578063f5e3c462146102a3578063f851a4401461029e578063f8f9da2814610299578063fca7820b146102945763fe9c44ae1461028f57600080fd5b612c14565b612b5b565b612b02565b612ad5565b6125be565b612595565b61249f565b612377565b612314565b61204f565b611ff2565b611ee6565b611c62565b611c18565b611bfd565b611b53565b611ac9565b611a27565b611a01565b6119e3565b611994565b611979565b6116cf565b6116a8565b611601565b611569565b6114c2565b611168565b611118565b6110db565b6110ae565b611090565b61106e565b610f3d565b610f14565b610c41565b610ef6565b610de9565b610dcb565b610d4a565b610c5f565b610bbb565b610b9a565b610b71565b610b1a565b610aad565b6108b3565b610890565b610872565b61080f565b6107f1565b6106f0565b610694565b610605565b610526565b6103cc565b6001600160a01b038116036103b857565b600080fd5b604435906103ca826103a7565b565b346103b85760603660031901126103b8576103f96004356103ec816103a7565b6044359060243590614f6e565b60408051928352602083019190915290f35b0390f35b60009103126103b857565b90600182811c9216801561044a575b602083101461043457565b634e487b7160e01b600052602260045260246000fd5b91607f1691610429565b634e487b7160e01b600052604160045260246000fd5b6020810190811067ffffffffffffffff82111761048657604052565b610454565b67ffffffffffffffff811161048657604052565b6040810190811067ffffffffffffffff82111761048657604052565b90601f8019910116810190811067ffffffffffffffff82111761048657604052565b6020808252825181830181905290939260005b82811061051257505060409293506000838284010152601f8019910116010190565b8181018601518482016040015285016104f0565b346103b857600080600319360112610602576040519080600180549161054b8361041a565b808652928281169081156105d8575060011461057e575b61040b85610572818703826104bb565b604051918291826104dd565b92508083527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b8284106105c05750505081016020016105728261040b610562565b805460208587018101919091529093019281016105a5565b86955061040b9693506020925061057294915060ff191682840152151560051b8201019293610562565b80fd5b346103b85760403660031901126103b857600435610622816103a7565b6024359033600052600f602052816106508260406000209060018060a01b0316600052602052604060002090565b556040519182526001600160a01b03169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590602090a3602060405160018152f35b346103b85760203660031901126103b85760206000546106b960ff8260101c166132e4565b62ff0000199081166000556106cc613790565b50620100006106de6004353333614412565b50916000541617600055604051908152f35b346103b85760403660031901126103b85760043561070d816103a7565b60005461071f60ff8260101c166132e4565b62ff0000198116600055604051637f4e225760e11b8152602081600481335afa9081156107ec576000916107be575b506107ac5760ff161561079b5761040b9061077590602435906001600160a01b0316615242565b61078b6201000062ff0000196000541617600055565b6040519081529081906020820190565b60405162771b3360e91b8152600490fd5b604051634a8af12d60e01b8152600490fd5b6107df915060203d81116107e5575b6107d781836104bb565b810190613016565b3861074e565b503d6107cd565b612ffd565b346103b85760003660031901126103b8576020600854604051908152f35b346103b85760203660031901126103b857602060043561082e816103a7565b620100006108616000549261084860ff8560101c166132e4565b62ff00001993841660005561085b613790565b506135f2565b916000541617600055604051908152f35b346103b85760003660031901126103b8576020600d54604051908152f35b346103b85760003660031901126103b85760206108ab6136cf565b604051908152f35b346103b8576020806003193601126103b85760048035916108d3836103a7565b6000805490936001600160a01b039081169160181c16818114610a9c576040516370a0823160e01b80825230868301908152919390929091859185918290819060200103915afa9283156107ec578693610a7d575b50604051828152308682019081528590829081906020010381855afa80156107ec576109989286928992610a5e575b5060035460081c6001600160a01b03168960405180968195829463a9059cbb60e01b84528d840160209093929193604081019460018060a01b031681520152565b03925af180156107ec57610a41575b50845483906109cf906109c39060181c6001600160a01b031681565b6001600160a01b031690565b604051928352308684019081528391908290819060200103915afa9283156107ec578593610a12575b505003610a03575080f35b6040516346edcd5360e11b8152fd5b610a32929350803d10610a3a575b610a2a81836104bb565b810190612fee565b9038806109f8565b503d610a20565b610a5790843d86116107e5576107d781836104bb565b50386109a7565b610a76919250833d8511610a3a57610a2a81836104bb565b9038610957565b610a95919350843d8611610a3a57610a2a81836104bb565b9138610928565b604051632f028cfb60e01b81528490fd5b346103b85760603660031901126103b8576020600435610acc816103a7565b62010000610b0860243592610ae0846103a7565b60005493610af360ff8660101c166132e4565b62ff000019948516600055604435913361333d565b15916000541617600055604051908152f35b346103b85760403660031901126103b8576020600435610b39816103a7565b620100006106de60005492610b5360ff8560101c166132e4565b62ff000019938416600055610b66613790565b506024359033614412565b346103b85760003660031901126103b8576004546040516001600160a01b039091168152602090f35b346103b85760003660031901126103b857602060ff60035416604051908152f35b346103b85760203660031901126103b857610c11600435610bdb816103a7565b610be3613691565b9060405191610bf18361046a565b82526001600160a01b03166000908152600e60205260409020549061570d565b906004811015610c3c57610c2a57602090604051908152f35b604051630ea4bb4160e21b8152600490fd5b61331d565b346103b85760003660031901126103b8576020601254604051908152f35b346103b85760203660031901126103b857600054610c8260ff8260101c166132e4565b62ff00001916600055610c93613790565b506009544303610d3857610ca960043533613cca565b600c5481810190818111610d33578110610d2157600c8190556040805133815260208101939093528201527fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59080606081015b0390a1610d156201000062ff0000196000541617600055565b60405160008152602090f35b6040516335c973c760e21b8152600490fd5b613a26565b604051638e10cbd360e01b8152600490fd5b346103b85760203660031901126103b8576003546004359060081c6001600160a01b03163303610db957601180549082905560408051918252602080830184905292917f68e61dbc80efc8af787740901509a321d0fc29f4e432fae6c4e175867b9614439190a1604051908152f35b604051634755657960e01b8152600490fd5b346103b85760003660031901126103b8576020601154604051908152f35b346103b85760203660031901126103b857600435610e06816103a7565b6003546001600160a01b03919060081c82163303610db9576005546004906020906001600160a01b03169360405192838092623f1ee960e11b825286165afa9081156107ec57600091610ed8575b5015610ec657600580546001600160a01b0319166001600160a01b0383161790557f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d915b604080516001600160a01b039283168152929091166020830152819081015b0390a160405160008152602090f35b6040516383aebebd60e01b8152600490fd5b610ef0915060203d81116107e5576107d781836104bb565b38610e54565b346103b85760003660031901126103b8576020600b54604051908152f35b346103b85760003660031901126103b8576005546040516001600160a01b039091168152602090f35b346103b85760203660031901126103b85760048035600054610f6460ff8260101c166132e4565b62ff00001916600055610f75613790565b5060035460081c6001600160a01b0316330361105e57600954430361104e57806012541061104e57600c5480821161103d57610fb18282613cbd565b90811061102c577f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e9250610fe481600c55565b600354610ffe90839060081c6001600160a01b03166142ba565b6003546040805160089290921c6001600160a01b031682526020820193909352918201528060608101610cfc565b604051636f7bdc5360e01b81528390fd5b60405163152125f760e21b81528390fd5b50604051638e10cbd360e01b8152fd5b50604051634755657960e01b8152fd5b346103b85760003660031901126103b8576020604051666379da05b600008152f35b346103b85760003660031901126103b8576020600954604051908152f35b346103b85760003660031901126103b85760005460405160189190911c6001600160a01b03168152602090f35b346103b85760203660031901126103b8576004356110f8816103a7565b60018060a01b0316600052600e6020526020604060002054604051908152f35b346103b8576000806003193601126106025780602091549061113f60ff8360101c166132e4565b62ff0000199182168155611151613790565b5062010000600b5492825416179055604051908152f35b346103b85760203660031901126103b857600480359060009081549061119360ff8360101c166132e4565b62ff00001991821683556111a5613790565b506111ae6139d7565b936111c96111ba61370d565b91906020880192835287613a1a565b85516111d481613333565b6111dd81613333565b6114b1576111f790516111ee6114e0565b90815282615791565b909561120b60409788830193845282613a1a565b805161121681613333565b61121f81613333565b6114a15760608101928352600554611241906109c3906001600160a01b031681565b8251813b1561149d57885163eabe7d9160e01b815230878201908152336020820152604081019290925291889183919082908490829060600103925af180156107ec5761148a575b50600954430361147a576112b4906112a5600d548451906155c9565b92906080830193845282613a1a565b80516112bf81613333565b6112c881613333565b61146a57336000908152600e602052604090206112fe9291906112ef905b548551906155c9565b939060a0830194855282613a1a565b5161130881613333565b61131181613333565b61145a57865460ff168061144e575b61143e5751600d5551336000908152600e6020526040902055611344825133613e79565b8051865190815230903390600080516020615a2883398151915290602090a3815181518751338152602081019290925260408201527fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a92990606090a16005546113b6906109c3906001600160a01b031681565b9151905192823b1561143a5786516351dff98960e01b815230918101918252336020830152604082019290925260608101939093529291849184918290849082906080015b03925af19182156107ec576201000092611421575b508254161790555160008152602090f35b8061142e6114349261048b565b8061040f565b38611410565b8580fd5b875163f630766b60e01b81528590fd5b50601254845111611320565b875163547d32af60e01b81528590fd5b8751635b8ae23960e01b81528590fd5b8651638e10cbd360e01b81528490fd5b8061142e6114979261048b565b38611289565b8780fd5b8651632721a8cd60e21b81528490fd5b60405163144ff09b60e31b81528390fd5b346103b85760003660031901126103b8576020600c54604051908152f35b604051906103ca8261046a565b81601f820112156103b85780359067ffffffffffffffff82116104865760405192611522601f8401601f1916602001856104bb565b828452602083830101116103b857816000926020809301838601378301015290565b60ff8116036103b857565b60c435906103ca82611544565b60e435906103ca826103a7565b346103b8576101403660031901126103b857600435611587816103a7565b602435611593816103a7565b61159b6103bd565b906084359267ffffffffffffffff938481116103b8576115bf9036906004016114ed565b60a4359485116103b8576115da6115ff9536906004016114ed565b6115e261154f565b916115eb61155c565b936101243596610104359660643592612c37565b005b346103b8576000806003193601126106025760405190806002546116248161041a565b808552916001918083169081156105d8575060011461164d5761040b85610572818703826104bb565b9250600283527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5b8284106116905750505081016020016105728261040b610562565b80546020858701810191909152909301928101611675565b346103b85760203660031901126103b85760206108ab6004356116ca816103a7565b6135f2565b346103b85760203660031901126103b85760048035600080546116f760ff8260101c166132e4565b62ff0000199081168255611709613790565b50600554611721906109c3906001600160a01b031681565b92833b156119755760408051634ef4c3e160e01b815230878201908152336020820152808301849052919590918591839182908490829060600103925af180156107ec57611962575b5060095443036119525793611799946117816139d7565b9061178a61370d565b97906020840198895283613a1a565b81516117a481613333565b6117ad81613333565b61194257906117dd6117c36117eb949333613cca565b60a0830198818a5251906117d56114e0565b918252615791565b939087830194855282613a1a565b80516117f681613333565b6117ff81613333565b611933579061182591611816600d548551906155eb565b93906060830194855282613a1a565b805161183081613333565b61183981613333565b61192557336000908152600e6020526040902061187093929190611861905b548651906155eb565b94906080830195865282613a1a565b5161187a81613333565b61188381613333565b6119175750957f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f916118bb6201000096979851600d55565b51336000908152600e602052604090205551825187513381526020810192909252604082015280606081010390a151845190815233903090600080516020615a2883398151915290602090a38254161790555160008152602090f35b865163062f79e760e41b8152fd5b50855162ba6be960e81b8152fd5b50845163d0cd4f9b60e01b8152fd5b8551631624a1b560e01b81528390fd5b50505051638e10cbd360e01b8152fd5b8061142e61196f9261048b565b3861176a565b8280fd5b346103b85760003660031901126103b85760206108ab613790565b346103b85760403660031901126103b85760206004356119b3816103a7565b62010000610b08600054926119cd60ff8560101c166132e4565b62ff00001993841660005560243590338061333d565b346103b85760003660031901126103b8576020600a54604051908152f35b346103b85760003660031901126103b857602060ff60005460081c166040519015158152f35b346103b85760003660031901126103b857600654601254600b54600c54600854604051635c0b440b60e11b815260048101949094526024840192909252604483015260648201529060209082906001600160a01b03168180608481015b03915afa80156107ec5761040b91600091611aab575b506040519081529081906020820190565b611ac3915060203d8111610a3a57610a2a81836104bb565b38611a9a565b346103b857600080600319360112610602576003546001600160a01b039060081c81163303610db95781546040516370a0823160e01b8152306004820152916020918391602491839160189190911c165afa80156107ec57611b32918391611b35575b50601255565b80f35b611b4d915060203d8111610a3a57610a2a81836104bb565b38611b2c565b346103b85760203660031901126103b857600435611b70816103a7565b6003546001600160a01b039060081c81163303610db9576004548183168015611beb576001600160a01b0319821617600455604080516001600160a01b0393909216831682529190921660208301527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9919081908101610eb7565b60405163e6c4247b60e01b8152600490fd5b346103b85760003660031901126103b85760206108ab613691565b346103b85760203660031901126103b85761040b611c40600435611c3b816103a7565b613588565b6040805194855260208501939093529183015260608201529081906080820190565b346103b85760203660031901126103b85760048035600090815490611c8c60ff8360101c166132e4565b62ff0000199182168355611c9e613790565b50600554611cb6906109c3906001600160a01b031681565b93843b15611ee2576040805163368f515360e21b815230838201908152336020820152808301859052919690918691839182908490829060600103925af180156107ec57611ecf575b506009544303611ec157835460ff1680611eb6575b611ea857611d20614393565b611d3b611d2c3361361e565b91906020840192835283613a1a565b8151611d4681613333565b611d4f81613333565b611e985790611d6284611d7093516155eb565b929088830193845282613a1a565b8051611d7b81613333565b611d8481613333565b611e885790611d999161181685600b546155eb565b51611da381613333565b611dac81613333565b611e78578051336000908152601060205260409020908155600a546001909101558151600b557f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809190611dff85336140df565b51905187513381526020810186905260408101929092526060820152608090a1600554611e36906109c3906001600160a01b031681565b90813b15611e74578551635c77860560e01b8152309181019182523360208301526040820193909352919291849184918290849082906060016113fb565b8480fd5b86516303ab774960e61b81528390fd5b865163bbd8fc0160e01b81528390fd5b865163bcce27e360e01b81528390fd5b845163f630766b60e01b8152fd5b508160125410611d14565b8451638e10cbd360e01b8152fd5b8061142e611edc9261048b565b38611cff565b8380fd5b346103b85760003660031901126103b857600554611f0e906109c3906001600160a01b031681565b6040516302a9bed760e61b81523060048201526020908181602481865afa80156107ec5760ff91600091611fc5575b5016159182611f6f575b505080611f5c575b6040519015158152602090f35b50600854670de0b6b3a764000014611f4f565b60405163715cfdd960e01b81523060048201529192508290829060249082905afa9182156107ec57600092611fa8575b50503880611f47565b611fbe9250803d106107e5576107d781836104bb565b3880611f9f565b611fe59150833d8511611feb575b611fdd81836104bb565b810190614f4b565b38611f3d565b503d611fd3565b346103b85760803660031901126103b8576020600435612011816103a7565b62010000610861602435612024816103a7565b6000549361203760ff8660101c166132e4565b62ff0000199485166000556064359160443591614787565b346103b85760203660031901126103b857600480359060009081549061207a60ff8360101c166132e4565b62ff000019918216835561208c613790565b5083151593848061230d575b6122fd576120c0906120a86139d7565b956120b161370d565b93906020890194855288613a1a565b86516120cb81613333565b6120d481613333565b6122ec57156122965780612107926120fc926040890152516120f46114e0565b90815261570d565b606087015285613a1a565b835161211281613333565b61211b81613333565b612287575b600554612137906109c3906001600160a01b031681565b604094858101918251813b1561228357875163eabe7d9160e01b815230868201908152336020820152604081019290925291879183919082908490829060600103925af180156107ec57612270575b506009544303612260576121b06121a1600d548451906155c9565b91906080840192835283613a1a565b81516121bb81613333565b6121c481613333565b61225057336000908152600e602052604090206121f491906121e5906112e6565b929060a0850193845284613a1a565b82516121ff81613333565b61220881613333565b61145a57865460ff1680612241575b61143e5751600d556060919051336000908152600e60205260409020550190611344825133613e79565b50601254606084015111612217565b8651635b8ae23960e01b81528490fd5b8551638e10cbd360e01b81528390fd5b8061142e61227d9261048b565b38612186565b8680fd5b6040516345812ea760e11b8152fd5b506122af6122ba91516122a76114e0565b908152615778565b604087015285613a1a565b83516122c581613333565b6122ce81613333565b6122dd57826060850152612120565b604051632721a8cd60e21b8152fd5b60405163144ff09b60e31b81528490fd5b5060405163431f269d60e01b8152fd5b5083612098565b346103b85760403660031901126103b857602061236e600435612336816103a7565b60243590612343826103a7565b60018060a01b0316600052600f835260406000209060018060a01b0316600052602052604060002090565b54604051908152f35b346103b85760003660031901126103b8576004546001600160a01b031680338114801590612497575b612485576003547fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9927ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc9161242c906124049060081c6001600160a01b03166109c3565b60038054610100600160a81b03191660089490941b610100600160a81b031693909317909255565b600480546001600160a01b0319169055600354604080516001600160a01b03938416815260089290921c9092166020820152a1600454604080516001600160a01b03938416815292909116602083015281908101610eb7565b60405163d1ec4b2360e01b8152600490fd5b5033156123a0565b346103b85760203660031901126103b8576004356124bc816103a7565b6124c4613790565b506003546001600160a01b03919060081c82163303610db9576009544303610d38576006546004906020906001600160a01b031693604051928380926310c8fc9560e11b825287165afa9081156107ec57600091612577575b501561256557600680546001600160a01b0319166001600160a01b0383161790557fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f92691610e98565b60405163ee39b72560e01b8152600490fd5b61258f915060203d81116107e5576107d781836104bb565b3861251d565b346103b85760003660031901126103b8576006546040516001600160a01b039091168152602090f35b346103b8576060806003193601126103b85760048035916125de836103a7565b602435926044356125ee816103a7565b6000805461260160ff8260101c166132e4565b62ff000019168155612611613790565b506040805163a6afed9560e01b815290966020926001600160a01b038581169391929185818b8187895af180156107ec57612ab8575b5060055461265f906109c3906001600160a01b031681565b803b15611ee257838884928c8a8f61268e905196879586948594632fe3f38f60e11b865233913090870161470b565b03915afa80156107ec57612aa5575b506009544303612a78578951636c540baf60e01b815285818b8187895af19081156107ec578491612a88575b504303612a785786163314612a68578015612a58576000198114612a48576126f2908633614412565b6005549097915061270d906109c3906001600160a01b031681565b8951638e8f294b60e01b808252308b83019081529192918490849081906020010381855afa9081156107ec578b85918e8b968995612a22575b50519081526001600160a01b03909516908501908152849081906020015b0381855afa9283156107ec578b92859187956129f0575b508d51634ada90af60e01b815293849182905afa9182156107ec578590869587946129b9575b505060ff80919416911614612960575b506127be91508786614f6e565b89516370a0823160e01b81526001600160a01b038816818b0190815291999250908590829081906020010381875afa80156107ec5789918491612943575b50106129355730830361289a5750505050836128779161283f7f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb5296853330614b11565b505b86513381526001600160a01b039485166020820152604081019590955290921660608401526080830191909152819060a0820190565b0390a16128906201000062ff0000196000541617600055565b5160008152602090f35b88516334b1b43760e21b8152339181019182526001600160a01b038716602083015260408201899052600060608301529793949285928992839190829060800103925af19283156107ec577f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529661287794612917575b5050612841565b8161292d92903d10610a3a57610a2a81836104bb565b503880612910565b8851630e7a24eb60e11b8152fd5b61295a9150863d8811610a3a57610a2a81836104bb565b386127fc565b8a51637f4e225760e11b81529290915085838b81305afa80156107ec576127be93859161299c575b5061299557505b386127b1565b905061298f565b6129b39150873d89116107e5576107d781836104bb565b38612988565b60ff96508694506129df9250803d106129e9575b6129d781836104bb565b81019061476c565b90959093906127a1565b503d6129cd565b612a11919550823d8411612a1b575b612a0981836104bb565b81019061473d565b509050933861277b565b503d6129ff565b612764919550612a3e90853d8711612a1b57612a0981836104bb565b5090509490612746565b885163f72ef4e160e01b81528890fd5b885163b2f72f4760e01b81528890fd5b885163039f861b60e51b81528890fd5b8951638e10cbd360e01b81528990fd5b612a9f9150863d8811610a3a57610a2a81836104bb565b386126c9565b8061142e612ab29261048b565b3861269d565b612ace90863d8811610a3a57610a2a81836104bb565b5038612647565b346103b85760003660031901126103b85760035460405160089190911c6001600160a01b03168152602090f35b346103b85760003660031901126103b857600654601254600b54600c546040516315f2405360e01b81526004810193909352602483019190915260448201529060209082906001600160a01b0316818060648101611a84565b346103b85760203660031901126103b857600435600054612b8160ff8260101c166132e4565b62ff00001916600055612b92613790565b5060035460081c6001600160a01b03163303610db9576009544303610d3857670de0b6b3a76400008111612c025760088054908290556040805191825260208201929092527faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f8214609181908101610cfc565b604051631b9bc96960e11b8152600490fd5b346103b85760003660031901126103b857602060ff600054166040519015158152f35b979593919896949290986013549960ff8b60081c1615809b819c612d5d575b8115612d3d575b5015612ce157612c83998b612c7a600160ff196013541617601355565b612cc857612d6b565b612c8957565b612c9961ff001960135416601355565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b612cdc61010061ff00196013541617601355565b612d6b565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b15915081612d4f575b5038612c5d565b6001915060ff161438612d48565b600160ff8216109150612c56565b98959697919392909760ff60135460081c1615612f955760038054610100600160a81b03191660089290921b610100600160a81b031691909117905560095415801590612f8a575b612f7857612dd290612dcd600160ff196000541617600055565b600755565b60075415612f66576011556011548015908115612f54575b50612f42577fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926612ec5612ecd937f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d612e88612ee29a612e4b612ed29a600855565b600580546001600160a01b0319166001600160a01b0383161790555b60408051600081526001600160a01b03909216602083015290918291820190565b0390a1612e9443600955565b612ea5670de0b6b3a7640000600a55565b600680546001600160a01b0319166001600160a01b038316179055612e67565b0390a1613112565b6131fa565b60ff1660ff196003541617600355565b612ef86201000062ff0000196000541617600055565b612f0861ff001960005416600055565b6001600160a01b03811615611beb57600080546301000000600160b81b03191660189290921b6301000000600160b81b0316919091179055565b6040516314bba91760e11b8152600490fd5b670de0b6b3a764000091501138612dea565b60405163a2ec3a5560e01b8152600490fd5b604051634743547560e01b8152600490fd5b50600a541515612db3565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b908160209103126103b8575190565b6040513d6000823e3d90fd5b519081151582036103b857565b908160209103126103b85761302a90613009565b90565b90601f821161303a575050565b6001916000908382527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6906020601f850160051c83019410613097575b601f0160051c01915b82811061308d5750505050565b8181558301613080565b9092508290613077565b601f81116130ad575050565b600090600282527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace906020601f850160051c83019410613108575b601f0160051c01915b8281106130fd57505050565b8181556001016130f1565b90925082906130e8565b90815167ffffffffffffffff81116104865760019061313a81613135845461041a565b61302d565b602080601f831160011461317557508192939460009261316a575b5050600019600383901b1c191690821b179055565b015190503880613155565b90601f198316956131a860016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690565b926000905b8882106131e357505083859697106131ca575b505050811b019055565b015160001960f88460031b161c191690553880806131c0565b8087859682949686015181550195019301906131ad565b90815167ffffffffffffffff8111610486576132208161321b60025461041a565b6130a1565b602080601f831160011461325c5750819293600092613251575b50508160011b916000199060031b1c191617600255565b01519050388061323a565b90601f1983169461328f60026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90565b926000905b8782106132cc5750508360019596106132b3575b505050811b01600255565b015160001960f88460031b161c191690553880806132a8565b80600185968294968601518155019501930190613294565b156132eb57565b60405162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b6044820152606490fd5b634e487b7160e01b600052602160045260246000fd5b60041115610c3c57565b6005549093919290613359906109c3906001600160a01b031681565b90813b156103b857604080516317b9b84b60e31b81523060048201526001600160a01b038681166024830152831660448201526064810185905290926000908290608490829084905af180156107ec57613575575b506001600160a01b03818116958582169591868814613564578116860361353b576000195b6133dd86826155c9565b94906133e881613333565b61352a576001600160a01b0384166000908152600e602052604090206134119088905b546155c9565b919061341c81613333565b613519576001600160a01b0381166000908152600e60205260409020613444908990546155eb565b929061344f81613333565b61350857916134a8869492600080516020615a288339815191529a98969461348d6134c19b9960018060a01b0316600052600e602052604060002090565b556001600160a01b03166000908152600e6020526040902090565b55196134c9575b50505051918291829190602083019252565b0390a3600090565b6134e86134ff9260018060a01b0316600052600f602052604060002090565b9060018060a01b0316600052602052604060002090565b553880806134af565b8751636132d86760e11b8152600490fd5b865163f4f600dd60e01b8152600490fd5b8551638cd22d1960e01b8152600490fd5b6001600160a01b0382166000908152600f6020526040902061355e9082906134e8565b546133d3565b8451638cd22d1960e01b8152600490fd5b8061142e6135829261048b565b386133ae565b6001600160a01b0381166000908152600e602052604081205492916135ac9061361e565b92906004811015610c3c576135e5576135c361370d565b92906135ce81613333565b6135d85793929190565b6009945092508291508190565b9150915060099180918190565b6135fb9061361e565b906004811015610c3c5761360c5790565b604051638329b28360e01b8152600490fd5b6001600160a01b031660009081526010602052604081208054919291801561368b57600a5461364c91615575565b906004811015610c3c57806136845750600161366a920154906155af565b929061367581613333565b8061367f57509190565b925090565b9150509190565b50508190565b600054906136a460ff8360101c166132e4565b62ff0000199182166000556136b7613790565b50620100006136c46136cf565b926000541617600055565b6136d761370d565b906004811015610c3c576136e85790565b604051637e32c5cb60e01b8152600490fd5b604051906137078261046a565b60008252565b60009061372261371e835460ff1690565b1590565b61378a57600d5480613735575060075490565b6137506012546137436136fa565b50600b54600c549161560c565b61375b829392613333565b826137845761376a9250615690565b9061377481613333565b8061377e57505190565b90509190565b50509190565b60075490565b600954904382146139d157601254600b5490600c548094600a546137c16109c36109c360065460018060a01b031690565b6040926020845180936315f2405360e01b825281806137f760049a8d8d8d85016040919493926060820195825260208201520152565b03915afa9182156107ec576000926139b1575b5065048c273950008083116139a7575b5061382590436155c9565b919061383081613333565b6139975790613852916138416136fa565b5061384a6114e0565b9081526156d5565b919061385d81613333565b6139885761386b868361570d565b969061387681613333565b6139785761388490876155eb565b989061388f81613333565b613968576138ab90876008546138a36114e0565b908152615740565b92906138b681613333565b6139585790806138c592615740565b93906138d081613333565b61394a5750917f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc049596916139216139429461390a43600955565b61391384600a55565b61391c85600b55565b600c55565b51948594859094939260609260808301968352602083015260408201520152565b0390a1600090565b8251637147c17f60e11b8152fd5b505050516323de885360e01b8152fd5b505050516397373c4d60e01b8152fd5b5050505163ba1406af60e01b8152fd5b50505163190cdb4160e11b8152fd5b5050505163db19c5b160e01b8152fd5b915061382561381a565b6139ca91925060203d8111610a3a57610a2a81836104bb565b903861380a565b60009150565b6040519060c0820182811067ffffffffffffffff821117610486576040528160a06000918281528260208201528260408201528260608201528260808201520152565b6004821015610c3c5752565b634e487b7160e01b600052601160045260246000fd5b90670de0b6b3a76400008201809211610d3357565b91908201809211610d3357565b600554613a75906109c3906001600160a01b031681565b803b156103b85760408051634ef4c3e160e01b8152306004808301919091526001600160a01b03851660248301526044820186905291926000908290606490829084905af180156107ec57613c9c575b506009544303613c8e57613ad76139d7565b613ae2611d2c61370d565b8151613aed81613333565b613af681613333565b613c7e5790613b2b613b399392613b1e613b1960a0850199808b52601254613a51565b601255565b87519051906117d56114e0565b939085830194855282613a1a565b8051613b4481613333565b613b4d81613333565b613c6f5790613b6491611816600d548551906155eb565b8051613b6f81613333565b613b7881613333565b613c61576001600160a01b0386166000908152600e60205260409020613ba49392919061186190611858565b51613bae81613333565b613bb781613333565b613c53575051600d55600080516020615a288339815191529190516001600160a01b0385166000908152600e60205260409020558451815184516001600160a01b0387168152602081019290925260408201527f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f9080606081010390a15191519182526001600160a01b0392909216913091602090a351600091565b845163062f79e760e41b8152fd5b50835162ba6be960e81b8152fd5b50825163d0cd4f9b60e01b8152fd5b8351631624a1b560e01b81528390fd5b9051638e10cbd360e01b8152fd5b8061142e613ca99261048b565b38613ac5565b6012039060128211610d3357565b91908203918211610d3357565b60008054909291906001600160a01b0390613ce99060181c82166109c3565b6040516370a0823160e01b808252306004830152909490936020939192909116908386602481855afa9586156107ec578796613e3b575b506040516323b872dd60e01b81526001600160a01b039091166004820152306024820152604481019290925282908290818881606481015b03925af180156107ec57613e1e575b503d8015613e1557602014613d7a578380fd5b8084803e83515b15613de45783548190613da1906109c39060181c6001600160a01b031681565b604051938452306004850152839060249082905afa9384156107ec5793613df6575b5050808210613de457613dd591613cbd565b61302a613b1982601254613a51565b60405163065559c560e51b8152600490fd5b613e0d929350803d10610a3a57610a2a81836104bb565b903880613dc3565b50600019613d81565b613e3490823d84116107e5576107d781836104bb565b5038613d67565b613d589391965091613e5a8593843d8611610a3a57610a2a81836104bb565b9691935091613d20565b908160209103126103b8575161302a816103a7565b600554613e90906109c3906001600160a01b031681565b6040516334cc866d60e21b8152602093908481600481865afa9081156107ec5760049386916000936140c0575b506040516307dc0d1d60e41b815294859182905afa9283156107ec57600093614091575b506000546001600160a01b03918216939060181c82166040516325ad1be560e01b81526001600160a01b0382166004820152878180602481010381895afa9283156107ec5785928992600095614072575b5084613fe1575b50505050600014613fd35750918183613f56613fa89587956142ba565b6000805460181c6001600160a01b031660405163b5eb38d960e01b8152600160048201526001600160a01b03918216602482015260448101939093529093166064820152938492839182906084820190565b03925af180156107ec57613fba575050565b81613fd092903d10610a3a57610a2a81836104bb565b50565b9150916103ca9350166142ba565b9091929350614037613ff560035460ff1690565b604051636112d0cb60e01b81526001600160a01b039384166004820152939092166024840152604483019490945260ff16606482015291829081906084820190565b0381875afa9081156107ec57600091614055575b5082863880613f39565b61406c9150863d88116107e5576107d781836104bb565b3861404b565b61408a919550833d85116107e5576107d781836104bb565b9338613f32565b6140b2919350853d87116140b9575b6140aa81836104bb565b810190613e64565b9138613ee1565b503d6140a0565b6140d8919350823d84116140b9576140aa81836104bb565b9138613ebd565b6005546140f6906109c3906001600160a01b031681565b6040516334cc866d60e21b8152602093908481600481865afa9081156107ec57600493869160009361429b575b506040516307dc0d1d60e41b815294859182905afa9283156107ec5760009361427c575b506000546001600160a01b03918216939060181c82166040516325ad1be560e01b81526001600160a01b0382166004820152878180602481010381895afa9283156107ec578592899260009561425d575b508461420e575b50505050600014613fd357509181836141bc613fa89587956142ba565b6000805460181c6001600160a01b031660405163b5eb38d960e01b8152600060048201526001600160a01b03918216602482015260448101939093529093166064820152938492839182906084820190565b9091929350614222613ff560035460ff1690565b0381875afa9081156107ec57600091614240575b508286388061419f565b6142579150863d88116107e5576107d781836104bb565b38614236565b614275919550833d85116107e5576107d781836104bb565b9338614198565b614294919350853d87116140b9576140aa81836104bb565b9138614147565b6142b3919350823d84116140b9576140aa81836104bb565b9138614123565b9190614316906020816000956142e06109c36109c3895460018060a01b039060181c1690565b60405163a9059cbb60e01b81526001600160a01b0390921660048301526024820192909252938491908290889082906044820190565b03925af19081156107ec5761433792613b1992614375575b50601254613cbd565b3d801561436a57602014614349575080fd5b90602081803e515b1561435857565b604051637308799360e11b8152600490fd5b509050600019614351565b61438c9060203d81116107e5576107d781836104bb565b503861432e565b604051906080820182811067ffffffffffffffff8211176104865760405260006060838281528260208201528260408201520152565b6040519060e0820182811067ffffffffffffffff821117610486576040528160c06000918281528260208201528260408201528260608201528260808201528260a08201520152565b60055491939092909161442f906109c3906001600160a01b031681565b93843b156103b85760408051631200453160e11b8152306004808301919091526001600160a01b03878116602484015284166044830152606482018590529196600096919087908290608490829084905af180156107ec576146f8575b5060095443036146e9576144df9495966144a46143c9565b6001600160a01b038516600090815260106020526040902060010154958282019687526144d08661361e565b989060608401998a5283613a1a565b81516144ea81613333565b6144f381613333565b6146d95761452d919060001981036146cf5750875160208201525b6112a561451f602083015186613cca565b60c0830199818b52516155c9565b805161453881613333565b61454181613333565b6146bf5761456690614557600b548a51906155c9565b929060a0830193845282613a1a565b5161457081613333565b61457981613333565b6146af57817f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1918b9796959493516145c38860018060a01b03166000526010602052604060002090565b55600a546001600160a01b03881660009081526010602052604090206001015551906145ee82600b55565b8951905184516001600160a01b0387811682528916602082015260408101929092526060820152608081019190915260a090a1600554614638906109c3906001600160a01b031681565b928751965191843b156122835751631ededc9160e01b8152309181019182526001600160a01b03938416602083015292909416604085015260608401959095526080830194909452839182908490829060a00103925af180156107ec5761469e57505190565b8061142e6146ab9261048b565b5190565b82516368dfd0a960e11b81528590fd5b8251631133bdd360e21b81528590fd5b602082015261450e565b8251631933d58d60e31b81528590fd5b508551638e10cbd360e01b8152fd5b8061142e6147059261048b565b3861448c565b6001600160a01b0391821681529181166020830152918216604082015291166060820152608081019190915260a00190565b908160609103126103b85761475181613009565b9161302a6040602084015161476581611544565b9301613009565b908160609103126103b8578051916040602083015192015190565b939280158015614aa9575b15614a9d576005546147ae906109c3906001600160a01b031681565b94853b156103b85760409560008751809263d02f735160e01b82528183816147dd8b8b8a33306004870161470b565b03925af180156107ec57614a8a575b506001600160a01b038181169490841691828614614a7957906148429291614812614aba565b946148338361340b8960018060a01b0316600052600e602052604060002090565b95906020880196875287613a1a565b855161484d81613333565b61485681613333565b614a685761487261487f916148696114e0565b908152846158fb565b6080870193818552615848565b95606086019687526148a161489261370d565b919060c0890192835288613a1a565b86516148ac81613333565b6148b581613333565b614a5757906148d38b92516148c86114e0565b9081528551906157cb565b956148e760a0890197808952600c546157e3565b9760e081019889526148fd600d54875190615848565b90610100810191825261493d6149316149288860018060a01b0316600052600e602052604060002090565b548d51906155eb565b96830196875282613a1a565b5161494781613333565b61495081613333565b614a4657936149df614a04948a9894614a409e9f9a97614a3699956149a46149c1927fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59f61499e9051600c55565b51600d55565b516001600160a01b039092166000908152600e6020526040902090565b55516001600160a01b039092166000908152600e6020526040902090565b5589828a51895180600080516020615a28833981519152978893829190602083019252565b0390a3518651908152309290602090a35191519251308152602081019290925260408201929092529081906060820190565b0390a15190614c2e565b50600090565b8c51633288b61b60e21b8152600490fd5b8a5163144ff09b60e31b8152600490fd5b89516353d9d51960e01b8152600490fd5b8751637a2d3db360e01b8152600490fd5b8061142e614a979261048b565b386147ec565b5061302a929333614b11565b50670de0b6b3a76400008111614792565b60405190610120820182811067ffffffffffffffff82111761048657604052816101006000918281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201520152565b600554909493929190614b2e906109c3906001600160a01b031681565b803b156103b8576000838592848360409a614b5f8c519788968795869463d02f735160e01b8652306004870161470b565b03925af180156107ec57614c1b575b506001600160a01b038181169390831690818514614c0a5790614bc391614b93614aba565b93614bb48261340b8860018060a01b0316600052600e602052604060002090565b94906020870195865286613a1a565b8451614bce81613333565b614bd781613333565b614bf95761487f614872614be96114e0565b666379da05b600008152846158fb565b88516353d9d51960e01b8152600490fd5b8651637a2d3db360e01b8152600490fd5b8061142e614c289261048b565b38614b6e565b908015614f3957614c58614c406139d7565b92614c4961370d565b92906020860193845285613a1a565b8351614c6381613333565b614c6c81613333565b614f2757614c9990614c8a60409485870194818652516120f46114e0565b92906060870193845286613a1a565b8451614ca481613333565b614cad81613333565b614f1657600554614cc8906109c3906001600160a01b031681565b94835190863b156103b857855163eabe7d9160e01b8152306004808301919091526001600160a01b0385166024830152604482019390935260009788908290606490829084905af180156107ec57614f03575b506009544303614ef457614d37906112a5600d548751906155c9565b8051614d4281613333565b614d4b81613333565b614ee4576001600160a01b0384166000908152600e60205260409020614d7a9291906112ef90548851906155c9565b51614d8481613333565b614d8d81613333565b614ed457875460ff1680614ec8575b614eb85751600d55516001600160a01b0383166000908152600e6020526040902055614dc98351836142ba565b8351855190815230906001600160a01b03841690600080516020615a2883398151915290602090a38251845186516001600160a01b0385168152602081019290925260408201527fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a92990606090a1600554614e4d906109c3906001600160a01b031681565b9251935194833b1561228357516351dff98960e01b8152309181019182526001600160a01b03909216602082015260408101939093526060830193909352839183919082908490829060800103925af180156107ec57614eab575090565b8061142e61302a9261048b565b865163f630766b60e01b81528390fd5b50601254855111614d9c565b86516321ad662360e21b81528390fd5b865163cbebf92d60e01b81528390fd5b508451638e10cbd360e01b8152fd5b8061142e614f109261048b565b38614d1b565b83516310c99edb60e01b8152600490fd5b604051637f083f3f60e11b8152600490fd5b60405163ae664e2f60e01b8152600490fd5b908160209103126103b8575161302a81611544565b604d8111610d3357600a0a90565b600554614f85906109c3906001600160a01b031681565b906040908151948580946307dc0d1d60e41b825260209586916004998a915afa9081156107ec57600091615225575b50835163fc57d4df60e01b8082523089830190815291946001600160a01b0393841693929091908890879081906020010381875afa9384156107ec578a899261502398600097615200575b5089519081526001600160a01b038516918101918252978892918391829160200190565b03915afa9485156107ec576000956151e1575b50821580156151d9575b6151c957855163182df0f560e01b815292911686838a81845afa9283156107ec576000936151aa575b5085519087828b8163313ce56760e01b948582525afa9182156107ec57889260ff9160009161518d575b50169651998a91825281305afa9081156107ec576150e760ff6151029361512f9b61512a9a600092615170575b5050169460006150ce6136fa565b50506150d86136fa565b506150e16136fa565b50613a3c565b6150ef6114e0565b9081526150fa6114e0565b91825261588f565b9160128110615157575b5061511a91926150ef6114e0565b9160128110615134575b506159c7565b6157cb565b600091565b9161514a6151456151509394613caf565b614f60565b906158d0565b9038615124565b61511a9261514a61514561516a93613caf565b9161510c565b6151869250803d10611feb57611fdd81836104bb565b38806150c0565b6151a49150843d8611611feb57611fdd81836104bb565b38615093565b6151c2919350873d8911610a3a57610a2a81836104bb565b9138615069565b85516348fa9b2b60e11b81528990fd5b508415615040565b6151f9919550873d8911610a3a57610a2a81836104bb565b9338615036565b85939291975061521c90853d8711610a3a57610a2a81836104bb565b96909192614fff565b61523c9150853d87116140b9576140aa81836104bb565b38614fb4565b919061524c613790565b50600554615264906109c3906001600160a01b031681565b90813b156103b8576040805163368f515360e21b8152306004808301919091526001600160a01b0387166024830152604482018490526000949092919085908290606490829084905af180156107ec576154cd575b5060095443036154c057835460ff16806154b5575b6154a8576152da614393565b6001600160a01b03871692906152f2611d2c8561361e565b81516152fd81613333565b61530681613333565b61549857906153198661532793516155eb565b929085830193845282613a1a565b805161533281613333565b61533b81613333565b61548857906153509161181687600b546155eb565b5161535a81613333565b61536381613333565b6154785780516001600160a01b038a166000908152601060205260409020908155600a546001909101558151600b557f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab8091906153c4613b1988601254613cbd565b51905184516001600160a01b038b1681526020810188905260408101929092526060820152608090a1600554615404906109c3906001600160a01b031681565b91823b1561143a5751635c77860560e01b8152309181019182526001600160a01b03909716602082015260408101849052949593948591859182908490829060600103925af19283156107ec5761546093615465575b50613a5e565b505090565b8061142e6154729261048b565b3861545a565b83516303ab774960e61b81528390fd5b835163bbd8fc0160e01b81528390fd5b835163bcce27e360e01b81528390fd5b5163f630766b60e01b8152fd5b5082601254106152ce565b51638e10cbd360e01b8152fd5b8061142e6154da9261048b565b386152b9565b81810292918115918404141715610d3357565b81156154fd570490565b634e487b7160e01b600052601260045260246000fd5b801561554757670de0b6b3a7640000808202918083048203610d335761553990836154f3565b1461512f5750600290600090565b50600090600090565b670de0b6b3a764000090808202918204808203610d33571461512f5750600290600090565b9081156155905761553961558982846154e0565b92836154f3565b5050600090600090565b156155a757600090600090565b600190600090565b9080156155bf5761512f916154f3565b5050600190600090565b91908281116155e1578203918211610d335760009190565b5060039150600090565b9190820191828111610d335782106156035760009190565b60029150600090565b90615616916155eb565b60048293921015610c3c57826156345761563092506155c9565b9091565b505090600090565b61565490600060405161564e8161046a565b5261559a565b919061565f81613333565b8061567a5750604051916156728361046a565b825260009190565b60405192506156888361046a565b600083529190565b6156ab9092919260006040516156a58161046a565b52615513565b60048294921015610c3c57836156c6576156549293506155af565b5050604051916156888361046a565b906156ef9160006040516156e88161046a565b5251615575565b91906004811015610c3c578061567a5750604051916156728361046a565b90615717916156d5565b6004821015610c3c578161573957670de0b6b3a7640000915051049060009190565b5090600090565b9061574a916156d5565b91906004811015610c3c578061576f5750670de0b6b3a76400006156309251046155eb565b91505090600090565b61571790600060405161578a8161046a565b525161563c565b604051615717916157ae916000906157a88161046a565b52615550565b90926004841015610c3c57836156c6576156309293505190615690565b670de0b6b3a7640000916157de916158d0565b510490565b604051916157f08361049f565b60118352706164646974696f6e206f766572666c6f7760781b6020840152810191828211610d335761302a918310155b156158285750565b60405162461bcd60e51b815290819061584490600483016104dd565b0390fd5b906158836040516158588161049f565b60158152747375627472616374696f6e20756e646572666c6f7760581b602082015283831115615820565b8103908111610d335790565b670de0b6b3a7640000916158bd9160006040516158ab8161046a565b525190516158b7615916565b91615999565b04604051906158cb8261046a565b815290565b906158ee9160006040516158e38161046a565b5251906158b7615916565b604051906158cb8261046a565b61591290670de0b6b3a764000092516158b7615916565b0490565b604051906159238261049f565b601782527f6d756c7469706c69636174696f6e206f766572666c6f770000000000000000006020830152565b801591828015615991575b61598957670de0b6b3a76400008083029383850482141715610d335761598361302a93856154f3565b14615820565b505050600090565b50600061595a565b91821580156159bf575b61598957816159836159b861302a94866154e0565b94856154f3565b5081156159a3565b906159ed6158ee9260006040516159dd8161046a565b52516159e7615916565b9061594f565b905190615a226040516159ff8161049f565b600e81526d646976696465206279207a65726f60901b6020820152831515615820565b6154f356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b103626f3d5bebeebd905aba819519f3fa398a3bd1330f10a3ba3db858fdf95264736f6c63430008130033";
18
18
  static readonly abi: readonly [{
19
19
  readonly inputs: readonly [];
20
20
  readonly name: "AccrueInterest_AccumulatedCalcFailed";