0 txs
13.4k calls
constructor
No constructor.
functions
_borrowGuardianPaused
viewfunction _borrowGuardianPaused() view returns (bool)
_getExtensionFunctions
purefunction _getExtensionFunctions() pure returns (bytes4[] functionSelectors)
_mintGuardianPaused
viewfunction _mintGuardianPaused() view returns (bool)
accountAssets
viewfunction accountAssets(address, uint256) view returns (address)
admin
viewfunction admin() view returns (address)
adminHasRights
viewfunction adminHasRights() view returns (bool)
allBorrowers
viewfunction allBorrowers(uint256) view returns (address)
allMarkets
viewfunction allMarkets(uint256) view returns (address)
borrowCapForCollateral
viewfunction borrowCapForCollateral(address, address) view returns (uint256)
borrowCapGuardian
viewfunction borrowCapGuardian() view returns (address)
borrowCaps
viewfunction borrowCaps(address) view returns (uint256)
borrowGuardianPaused
viewfunction borrowGuardianPaused(address) view returns (bool)
borrowingAgainstCollateralBlacklist
viewfunction borrowingAgainstCollateralBlacklist(address, address) view returns (bool)
borrowWithinLimits
viewfunction borrowWithinLimits(address cToken, uint256 accountBorrowsNew) view returns (uint256)
checkMembership
viewfunction checkMembership(address account, address cToken) view returns (bool)
closeFactorMantissa
viewfunction closeFactorMantissa() view returns (uint256)
cTokensByUnderlying
viewfunction cTokensByUnderlying(address) view returns (address)
effectiveBorrowCaps
viewfunction effectiveBorrowCaps(address cToken) view returns (uint256 borrowCap)
effectiveSupplyCaps
viewfunction effectiveSupplyCaps(address cToken) view returns (uint256 supplyCap)
enforceWhitelist
viewfunction enforceWhitelist() view returns (bool)
getAccountLiquidity
viewfunction getAccountLiquidity(address account) view returns (uint256, uint256, uint256, uint256)
getAssetsIn
viewfunction getAssetsIn(address account) view returns (address[])
getHypotheticalAccountLiquidity
viewfunction getHypotheticalAccountLiquidity(address account, address cTokenModify, uint256 redeemTokens, uint256 borrowAmount, uint256 repayAmount) view returns (uint256, uint256, uint256, uint256)
getMaxRedeemOrBorrow
viewfunction getMaxRedeemOrBorrow(address account, address cTokenModify, bool isBorrow) view returns (uint256)
ionicAdmin
viewfunction ionicAdmin() view returns (address)
ionicAdminHasRights
viewfunction ionicAdminHasRights() view returns (bool)
isComptroller
viewfunction isComptroller() view returns (bool)
isDeprecated
viewfunction isDeprecated(address cToken) view returns (bool)
liquidateCalculateSeizeTokens
viewfunction liquidateCalculateSeizeTokens(address cTokenBorrowed, address cTokenCollateral, uint256 actualRepayAmount) view returns (uint256, uint256)
liquidationIncentiveMantissa
viewfunction liquidationIncentiveMantissa() view returns (uint256)
markets
viewfunction markets(address) view returns (bool isListed, uint256 collateralFactorMantissa)
mintGuardianPaused
viewfunction mintGuardianPaused(address) view returns (bool)
nonAccruingRewardsDistributors
viewfunction nonAccruingRewardsDistributors(uint256) view returns (address)
oracle
viewfunction oracle() view returns (address)
pauseGuardian
viewfunction pauseGuardian() view returns (address)
pendingAdmin
viewfunction pendingAdmin() view returns (address)
rewardsDistributors
viewfunction rewardsDistributors(uint256) view returns (address)
seizeGuardianPaused
viewfunction seizeGuardianPaused() view returns (bool)
suppliers
viewfunction suppliers(address) view returns (bool)
supplyCaps
viewfunction supplyCaps(address) view returns (uint256)
transferGuardianPaused
viewfunction transferGuardianPaused() view returns (bool)
whitelist
viewfunction whitelist(address) view returns (bool)
whitelistArray
viewfunction whitelistArray(uint256) view returns (address)
_addRewardsDistributor
nonpayablefunction _addRewardsDistributor(address distributor) returns (uint256)
_afterNonReentrant
nonpayablefunction _afterNonReentrant()
_becomeImplementation
nonpayablefunction _becomeImplementation()
_beforeNonReentrant
nonpayablefunction _beforeNonReentrant()
_deployMarket
nonpayablefunction _deployMarket(uint8 delegateType, bytes constructorData, bytes becomeImplData, uint256 collateralFactorMantissa) returns (uint256)
_setCloseFactor
nonpayablefunction _setCloseFactor(uint256 newCloseFactorMantissa) returns (uint256)
_setCollateralFactor
nonpayablefunction _setCollateralFactor(address cToken, uint256 newCollateralFactorMantissa) returns (uint256)
_setLiquidationIncentive
nonpayablefunction _setLiquidationIncentive(uint256 newLiquidationIncentiveMantissa) returns (uint256)
_setPriceOracle
nonpayablefunction _setPriceOracle(address newOracle) returns (uint256)
_setWhitelistEnforcement
nonpayablefunction _setWhitelistEnforcement(bool enforce) returns (uint256)
_setWhitelistStatuses
nonpayablefunction _setWhitelistStatuses(address[] suppliers, bool[] statuses) returns (uint256)
borrowAllowed
nonpayablefunction borrowAllowed(address cToken, address borrower, uint256 borrowAmount) returns (uint256)
borrowVerify
nonpayablefunction borrowVerify(address cToken, address borrower)
enterMarkets
nonpayablefunction enterMarkets(address[] cTokens) returns (uint256[])
exitMarket
nonpayablefunction exitMarket(address cTokenAddress) returns (uint256)
liquidateBorrowAllowed
nonpayablefunction liquidateBorrowAllowed(address cTokenBorrowed, address cTokenCollateral, address liquidator, address borrower, uint256 repayAmount) returns (uint256)
mintAllowed
nonpayablefunction mintAllowed(address cTokenAddress, address minter, uint256 mintAmount) returns (uint256)
mintVerify
nonpayablefunction mintVerify(address cToken, address minter, uint256 actualMintAmount, uint256 mintTokens)
redeemAllowed
nonpayablefunction redeemAllowed(address cToken, address redeemer, uint256 redeemTokens) returns (uint256)
redeemVerify
nonpayablefunction redeemVerify(address cToken, address redeemer, uint256 redeemAmount, uint256 redeemTokens)
repayBorrowAllowed
nonpayablefunction repayBorrowAllowed(address cToken, address payer, address borrower, uint256 repayAmount) returns (uint256)
repayBorrowVerify
nonpayablefunction repayBorrowVerify(address cToken, address payer, address borrower, uint256 repayAmount)
seizeAllowed
nonpayablefunction seizeAllowed(address cTokenCollateral, address cTokenBorrowed, address liquidator, address borrower, uint256 seizeTokens) returns (uint256)
seizeVerify
nonpayablefunction seizeVerify(address cTokenCollateral, address cTokenBorrowed, address liquidator, address borrower, uint256 seizeTokens)
transferAllowed
nonpayablefunction transferAllowed(address cToken, address src, address dst, uint256 transferTokens) returns (uint256)
transferVerify
nonpayablefunction transferVerify(address cToken, address src, address dst, uint256 transferTokens)
events
AddedRewardsDistributor
event AddedRewardsDistributor(address rewardsDistributor)
Failure
event Failure(uint256 error, uint256 info, uint256 detail)
MarketEntered
event MarketEntered(address cToken, address account)
MarketExited
event MarketExited(address cToken, address account)
MarketListed
event MarketListed(address cToken)
NewCloseFactor
event NewCloseFactor(uint256 oldCloseFactorMantissa, uint256 newCloseFactorMantissa)
NewCollateralFactor
event NewCollateralFactor(address cToken, uint256 oldCollateralFactorMantissa, uint256 newCollateralFactorMantissa)
NewLiquidationIncentive
event NewLiquidationIncentive(uint256 oldLiquidationIncentiveMantissa, uint256 newLiquidationIncentiveMantissa)
NewPriceOracle
event NewPriceOracle(address oldPriceOracle, address newPriceOracle)
WhitelistEnforcementChanged
event WhitelistEnforcementChanged(bool enforce)
errors
No errors.
creation bytecode
0x60806040526002805461ffff60a01b191661010160a01b17905534801561002557600080fd5b50615e0780620000366000396000f3fe608060405234801561001057600080fd5b50600436106104065760003560e01c80637e361b1111610220578063c299823811610130578063da3d454c116100b8578063e875544611610087578063e875544614610a25578063eabe7d9114610a2e578063ede4edd014610a41578063efcb03dd14610a54578063f851a44014610a6757600080fd5b8063da3d454c146109d8578063dce15449146109eb578063e4028eee146109fe578063e6653f3d14610a1157600080fd5b8063c90c20b1116100ff578063c90c20b114610983578063c91a424f1461098b578063cf6bfd2d1461099e578063d02f7351146109b2578063d251fefc146109c557600080fd5b8063c299823814610915578063c488847b14610935578063c6c5b0dd1461095d578063c8c9c9751461097057600080fd5b80639614b53b116101b3578063b095721011610182578063b0957210146108bc578063b1034882146108c9578063b452ef62146108dc578063b9b5b153146108ef578063bdcdc2581461090257600080fd5b80639614b53b146108525780639b19251a14610865578063abfceffc14610888578063ac0b0bb7146108a857600080fd5b8063929fe9a1116101ef578063929fe9a1146107c0578063940cd6f11461080157806394543c151461082c578063952adf5a1461083f57600080fd5b80637e361b111461074057806387f763031461075357806389f8132e146107675780638e8f294b1461077c57600080fd5b80634ef4c3e11161031b578063632e5142116102ae5780636d35bf911161027d5780636d35bf91146106d1578063731f0c2b146106e45780637515bafa14610707578063779b22941461071a5780637dc0d1d01461072d57600080fd5b8063632e5142146106805780636a56947e146106885780636bd02b8a1461069b5780636d154ea5146106ae57600080fd5b806355ee1fe1116102ea57806355ee1fe11461061f5780635d72de62146106325780635ec88c791461063a5780635fc7e71e1461066d57600080fd5b80634ef4c3e1146105d35780634fd42e17146105e657806351dff989146105f957806352d84d1e1461060c57600080fd5b806324a3d6221161039e57806331ff47fa1161036d57806331ff47fa146105585780633c94786f1461058157806341c728b9146105955780634a584432146105aa5780634ada90af146105ca57600080fd5b806324a3d6221461050c578063267822471461051f5780632ccf47a414610532578063317b0b771461054557600080fd5b80631976828e116103da5780631976828e1461048d5780631c819e43146104a057806321af4569146104ce57806324008a62146104f957600080fd5b80627e3dd21461040b57806302c3bcbb146104285780630a755ec21461045657806316dc15fe1461046a575b600080fd5b610413600181565b60405190151581526020015b60405180910390f35b61044861043636600461539c565b60186020526000908152604090205481565b60405190815260200161041f565b60025461041390600160a81b900460ff1681565b61041361047836600461539c565b600d6020526000908152604090205460ff1681565b61044861049b3660046153c7565b610a7a565b6104136104ae366004615412565b601d60209081526000928352604080842090915290825290205460ff1681565b6016546104e1906001600160a01b031681565b6040516001600160a01b03909116815260200161041f565b61044861050736600461544b565b610c6f565b6013546104e1906001600160a01b031681565b6002546104e1906001600160a01b031681565b61044861054036600461539c565b610cb1565b61044861055336600461549c565b610cc2565b6104e161056636600461539c565b600e602052600090815260409020546001600160a01b031681565b60135461041390600160a01b900460ff1681565b6105a86105a33660046154b5565b610d96565b005b6104486105b836600461539c565b60176020526000908152604090205481565b61044860055481565b6104486105e13660046154fb565b610dc9565b6104486105f436600461549c565b611015565b6105a86106073660046154b5565b6110d1565b6104e161061a36600461549c565b611167565b61044861062d36600461539c565b611191565b6105a8611211565b61064d61064836600461539c565b61126e565b60408051948552602085019390935291830152606082015260800161041f565b61044861067b36600461553c565b6112b2565b6105a8611476565b6105a861069636600461544b565b6114e4565b6104e16106a936600461549c565b6114ef565b6104136106bc36600461539c565b60156020526000908152604090205460ff1681565b6105a86106df36600461553c565b6114ff565b6104136106f236600461539c565b60146020526000908152604090205460ff1681565b6104e161071536600461549c565b611511565b6104486107283660046155a0565b611521565b6003546104e1906001600160a01b031681565b61064d61074e3660046155cc565b61167f565b60135461041390600160b01b900460ff1681565b61076f6116c9565b60405161041f919061561d565b6107a961078a36600461539c565b6008602052600090815260409020805460019091015460ff9091169082565b60408051921515835260208301919091520161041f565b6104136107ce366004615412565b6001600160a01b038082166000908152600860209081526040808320938616835260029093019052205460ff1692915050565b61044861080f366004615412565b601c60209081526000928352604080842090915290825290205481565b61041361083a36600461539c565b612069565b61044861084d36600461566b565b6121d3565b6105a8610860366004615412565b612252565b61041361087336600461539c565b60106020526000908152604090205460ff1681565b61089b61089636600461539c565b612260565b60405161041f9190615688565b60135461041390600160b81b900460ff1681565b600f546104139060ff1681565b6104486108d736600461539c565b6122d6565b6104486108ea36600461571a565b6122e1565b6104486108fd36600461539c565b6124bf565b61044861091036600461544b565b61269d565b6109286109233660046157ec565b612720565b60405161041f919061589e565b6109486109433660046154fb565b6128a0565b6040805192835260208301919091520161041f565b6104e161096b36600461549c565b612bcc565b61044861097e36600461591b565b612bdc565b6105a8612e79565b6000546104e1906001600160a01b031681565b60025461041390600160a01b900460ff1681565b6104486109c036600461553c565b612f23565b6104e16109d336600461549c565b6130aa565b6104486109e63660046154fb565b6130ba565b6104e16109f93660046155a0565b613538565b610448610a0c3660046155a0565b613570565b60135461041390600160a81b900460ff1681565b61044860045481565b610448610a3c3660046154fb565b6136fa565b610448610a4f36600461539c565b613717565b6105a8610a6236600461544b565b613c9a565b6001546104e1906001600160a01b031681565b604051633af9e66960e01b81526001600160a01b0384811660048301526000918491839190831690633af9e66990602401602060405180830381865afa158015610ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aec9190615987565b90506000806000610b0f8988610b03576000610b05565b895b6000806000613ca4565b929550935090915060009050836014811115610b2d57610b2d6159a0565b14610b6c5760405162461bcd60e51b815260206004820152600a602482015269216c697175696469747960b01b60448201526064015b60405180910390fd5b8015610b8057600095505050505050610c68565b600087158015610bba57506001600160a01b038087166000908152600860209081526040808320938e16835260029093019052205460ff16155b15610bc6575083610be8565b610bd1838a8a61411f565b905087158015610be057508085105b15610be85750835b6000896001600160a01b0316633b1d21a26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4c9190615987565b905080821115610c5c5780610c5e565b815b9750505050505050505b9392505050565b6001600160a01b03841660009081526008602052604081205460ff16610c995760085b9050610ca9565b610ca3858461423b565b60005b90505b949350505050565b6000610cbc826142dc565b92915050565b6000610ccc61454e565b610cdc57610cbc600160076145a2565b6040805160208082018352848252825190810190925266b1a2bc2ec50000808352815191929111610d1357610ca9600560086145a2565b6040805160208101909152670c7d713b49da000080825283511115610d4757610d3e600560086145a2565b95945050505050565b600480549086905560408051828152602081018890527f3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd991015b60405180910390a160005b9695505050505050565b6001600160a01b0383166000908152600d60205260409020805460ff19166001179055610dc3848461461b565b50505050565b6001600160a01b03831660009081526014602052604081205460ff1615610e215760405162461bcd60e51b815260206004820152600c60248201526b085b5a5b9d0e9c185d5cd95960a21b6044820152606401610b63565b6001600160a01b03841660009081526008602052604090205460ff16610e4b5760085b9050610c68565b600f5460ff168015610e7657506001600160a01b03831660009081526010602052604090205460ff16155b15610e82576011610e44565b6000610e8d85610cb1565b90508015801590610ebc57506001600160a01b03851660009081526020805260409020610eba90856146b7565b155b15611000576000856001600160a01b0316634aeb3d9a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f259190615987565b9050600030604051637db121fd60e11b81526001600160a01b038981166004830152919091169063fb6243fa90602401602060405180830381865afa158015610f72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f969190615987565b90506000828210610fa957506000610fb6565b610fb382846159cc565b90505b83610fc187836159df565b10610ffc5760405162461bcd60e51b815260206004820152600b60248201526a021737570706c79206361760ac1b6044820152606401610b63565b5050505b61100a85856146d9565b600095945050505050565b600061101f61454e565b61102f57610cbc6001600d6145a2565b60408051602080820183528482528251908101909252670de0b6b3a76400008083528151919291101561106857610ca96007600e6145a2565b60408051602081019091526714d1120d7b1600008082528351111561109357610d3e6007600e6145a2565b600580549086905560408051828152602081018890527faeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec13169101610d81565b3360009081526008602052604090205460ff1661111a5760405162461bcd60e51b8152602060048201526007602482015266085b585c9ad95d60ca1b6044820152606401610b63565b801580156111285750600082115b1561115d5760405162461bcd60e51b8152602060048201526005602482015264217a65726f60d81b6044820152606401610b63565b610dc3848461461b565b6009818154811061117757600080fd5b6000918252602090912001546001600160a01b0316905081565b600061119b61454e565b6111ab57610cbc600160126145a2565b600380546001600160a01b038481166001600160a01b031983168117909355604080519190921680825260208201939093527fd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22910160405180910390a160009392505050565b33301461124d5760405162461bcd60e51b815260206004820152600a602482015269085cd95b198818d85b1b60b21b6044820152606401610b63565b601a54610100900460ff1661126c57601a805461ffff19166101011790555b565b60008060008060008060008061128989600080600080613ca4565b93509350935093508360148111156112a3576112a36159a0565b99929850909650945092505050565b6001600160a01b03851660009081526008602052604081205460ff1615806112f357506001600160a01b03851660009081526008602052604090205460ff16155b156113025760085b9050610d3e565b6040516305eff7ef60e21b81526001600160a01b038481166004830152600091908816906317bfdfbc90602401602060405180830381865afa15801561134c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113709190615987565b905061137b87612069565b156113c557828110156113c05760405162461bcd60e51b815260206004820152600d60248201526c21626f72726f773e726570617960981b6044820152606401610b63565b611469565b6000806113d786600080600080613ca4565b935050509150600060148111156113f0576113f06159a0565b826014811115611402576114026159a0565b1461142357816014811115611419576114196159a0565b9350505050610d3e565b80600003611432576003611419565b600061144e604051806020016040528060045481525085614774565b905080861115611465576010945050505050610d3e565b5050505b5060009695505050505050565b3360009081526008602052604090205460ff166114d55760405162461bcd60e51b815260206004820152601f60248201527f21436f6d7074726f6c6c65723a5f61667465724e6f6e5265656e7472616e74006044820152606401610b63565b601a805460ff19166001179055565b610dc384848461478c565b601b818154811061117757600080fd5b61150a85838561478c565b5050505050565b600b818154811061117757600080fd5b600080546040805163fdb25fb160e01b8152905183926001600160a01b03169163fdb25fb19160048083019260209291908290030181865afa15801561156b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158f9190615987565b905080156116755760035460405163fc57d4df60e01b81526001600160a01b038681166004830152600092169063fc57d4df90602401602060405180830381865afa1580156115e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116069190615987565b90508060000361161b57600c92505050610cbc565b60008061163660405180602001604052808581525087614830565b9092509050600082600381111561164f5761164f6159a0565b1461166257600a5b945050505050610cbc565b83811015611671576012611657565b5050505b6000949350505050565b6000806000806000806000806116988d8d8d8d8d613ca4565b93509350935093508360148111156116b2576116b26159a0565b975091955093509150505b95509550955095915050565b6040805160248082526104a08201909252606091908160208201610480803683370190505091506394543c1560e01b82611702836159f2565b92508260ff168151811061171857611718615a0f565b6001600160e01b031990921660209283029190910190910152635a2977b160e11b82611743836159f2565b92508260ff168151811061175957611759615a0f565b6001600160e01b031990921660209283029190910190910152632aff3bff60e21b82611784836159f2565b92508260ff168151811061179a5761179a615a0f565b6001600160e01b03199092166020928302919091019091015263929fe9a160e01b826117c5836159f2565b92508260ff16815181106117db576117db615a0f565b6001600160e01b0319909216602092830291909101909101526355ee1fe160e01b82611806836159f2565b92508260ff168151811061181c5761181c615a0f565b6001600160e01b03199092166020928302919091019091015263317b0b7760e01b82611847836159f2565b92508260ff168151811061185d5761185d615a0f565b6001600160e01b031990921660209283029190910190910152637201477760e11b82611888836159f2565b92508260ff168151811061189e5761189e615a0f565b6001600160e01b031990921660209283029190910190910152634fd42e1760e01b826118c9836159f2565b92508260ff16815181106118df576118df615a0f565b6001600160e01b031990921660209283029190910190910152634a956fad60e11b8261190a836159f2565b92508260ff168151811061192057611920615a0f565b6001600160e01b03199092166020928302919091019091015263c8c9c97560e01b8261194b836159f2565b92508260ff168151811061196157611961615a0f565b6001600160e01b03199092166020928302919091019091015263b9b5b15360e01b8261198c836159f2565b92508260ff16815181106119a2576119a2615a0f565b6001600160e01b031990921660209283029190910190910152637e361b1160e01b826119cd836159f2565b92508260ff16815181106119e3576119e3615a0f565b6001600160e01b031990921660209283029190910190910152630cbb414760e11b82611a0e836159f2565b92508260ff1681518110611a2457611a24615a0f565b6001600160e01b031990921660209283029190910190910152631853304760e31b82611a4f836159f2565b92508260ff1681518110611a6557611a65615a0f565b6001600160e01b031990921660209283029190910190910152630ede4edd60e41b82611a90836159f2565b92508260ff1681518110611aa657611aa6615a0f565b6001600160e01b031990921660209283029190910190910152634ef4c3e160e01b82611ad1836159f2565b92508260ff1681518110611ae757611ae7615a0f565b6001600160e01b03199092166020928302919091019091015263eabe7d9160e01b82611b12836159f2565b92508260ff1681518110611b2857611b28615a0f565b6001600160e01b0319909216602092830291909101909101526351dff98960e01b82611b53836159f2565b92508260ff1681518110611b6957611b69615a0f565b6001600160e01b03199092166020928302919091019091015263368f515360e21b82611b94836159f2565b92508260ff1681518110611baa57611baa615a0f565b6001600160e01b031990921660209283029190910190910152631de6c8a560e21b82611bd5836159f2565b92508260ff1681518110611beb57611beb615a0f565b6001600160e01b031990921660209283029190910190910152631200453160e11b82611c16836159f2565b92508260ff1681518110611c2c57611c2c615a0f565b6001600160e01b031990921660209283029190910190910152632fe3f38f60e11b82611c57836159f2565b92508260ff1681518110611c6d57611c6d615a0f565b6001600160e01b03199092166020928302919091019091015263d02f735160e01b82611c98836159f2565b92508260ff1681518110611cae57611cae615a0f565b6001600160e01b0319909216602092830291909101909101526317b9b84b60e31b82611cd9836159f2565b92508260ff1681518110611cef57611cef615a0f565b6001600160e01b0319909216602092830291909101909101526341c728b960e01b82611d1a836159f2565b92508260ff1681518110611d3057611d30615a0f565b6001600160e01b031990921660209283029190910190910152635ec88c7960e01b82611d5b836159f2565b92508260ff1681518110611d7157611d71615a0f565b6001600160e01b03199092166020928302919091019091015263c488847b60e01b82611d9c836159f2565b92508260ff1681518110611db257611db2615a0f565b6001600160e01b03199092166020928302919091019091015263c90c20b160e01b82611ddd836159f2565b92508260ff1681518110611df357611df3615a0f565b6001600160e01b03199092166020928302919091019091015263319728a160e11b82611e1e836159f2565b92508260ff1681518110611e3457611e34615a0f565b6001600160e01b031990921660209283029190910190910152632eb96f3160e11b82611e5f836159f2565b92508260ff1681518110611e7557611e75615a0f565b6001600160e01b031990921660209283029190910190910152630b33d1e960e21b82611ea0836159f2565b92508260ff1681518110611eb657611eb6615a0f565b6001600160e01b031990921660209283029190910190910152635881a44160e11b82611ee1836159f2565b92508260ff1681518110611ef757611ef7615a0f565b6001600160e01b031990921660209283029190910190910152639614b53b60e01b82611f22836159f2565b92508260ff1681518110611f3857611f38615a0f565b6001600160e01b03199092166020928302919091019091015263efcb03dd60e01b82611f63836159f2565b92508260ff1681518110611f7957611f79615a0f565b6001600160e01b031990921660209283029190910190910152636d35bf9160e01b82611fa4836159f2565b92508260ff1681518110611fba57611fba615a0f565b6001600160e01b03199092166020928302919091019091015263352b4a3f60e11b82611fe5836159f2565b92508260ff1681518110611ffb57611ffb615a0f565b6001600160e01b03199092166020928302919091019091015260ff8116156120655760405162461bcd60e51b815260206004820152601c60248201527f7573652074686520636f7272656374206172726179206c656e677468000000006044820152606401610b63565b5090565b6001600160a01b0381166000908152600860205260408120600101541580156120af57506001600160a01b03821660009081526015602052604090205460ff1615156001145b8015610cbc57506121c3612185836001600160a01b031663173b99046040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211e9190615987565b846001600160a01b0316638d02d9a16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561215c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121809190615987565b614883565b836001600160a01b031663c3bf11cd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561215c573d6000803e3d6000fd5b670de0b6b3a76400001492915050565b60006121dd61454e565b6121ed57610cbc600160136145a2565b600f5482151560ff909116151503612206576000610cbc565b600f805460ff19168315159081179091556040519081527f84c7d948374a180eddab35d27d2f7a94167a1ff4e79467f1e89c061984190a1e906020015b60405180910390a16000610cbc565b61225c82826148b9565b5050565b6001600160a01b03811660009081526007602090815260408083208054825181850281018501909352808352606094938301828280156122c957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116122ab575b5093979650505050505050565b6000610cbc82614955565b60006122eb61454e565b612302576122fb600160166145a2565b9050610d8c565b60028054600160a01b60ff60a01b1982168117909255600080546040516328f816b560e11b81529390920460ff169290916001600160a01b0316906351f02d6a90612359908c908c908c908c908c90600401615a4e565b6020604051808303816000875af1158015612378573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239c9190615a7e565b6002805460ff60a01b1916600160a01b85151502179055905060006123c0826149f4565b905060008054906101000a90046001600160a01b03166001600160a01b0316638aac2f0c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612413573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124379190615a7e565b604051635a89ef5160e01b81523060048201526001600160a01b039190911690635a89ef5190602401600060405180830381600087803b15801561247a57600080fd5b505af115801561248e573d6000803e3d6000fd5b506000925061249b915050565b81146124a757806124b1565b6124b18286613570565b9a9950505050505050505050565b60006124c961454e565b6124fe5760405162461bcd60e51b815260206004820152600660248201526510b0b236b4b760d11b6044820152606401610b63565b816001600160a01b031663abc6d72d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561253e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125629190615a9b565b6125a65760405162461bcd60e51b815260206004820152601560248201527410b4b9a932bbb0b93239a234b9ba3934b13aba37b960591b6044820152606401610b63565b60005b60195481101561261e57601981815481106125c6576125c6615a0f565b6000918252602090912001546001600160a01b03908116908416036126165760405162461bcd60e51b815260206004820152600660248201526508585919195960d21b6044820152606401610b63565b6001016125a9565b50601980546001810182556000919091527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96950180546001600160a01b0319166001600160a01b0384169081179091556040519081527f98ef1187fb6fd2bc85f8996489877eb2b5428f9e9bdfc068c9ad6c2ea82eacc790602001612243565b601354600090600160b01b900460ff16156126ed5760405162461bcd60e51b815260206004820152601060248201526f085d1c985b9cd9995c8e9c185d5cd95960821b6044820152606401610b63565b60006126fa868685614c3b565b90508015612709579050610ca9565b612714868686614d03565b60009695505050505050565b60008054604051631beb2b9760e31b81526060926001600160a01b039092169163df595cb8916127659130913391839190356001600160e01b03191690600401615ab8565b602060405180830381865afa158015612782573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a69190615a9b565b6127e35760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd08185d5d1a1bdc9a5e995960921b6044820152606401610b63565b815160008167ffffffffffffffff811115612800576128006157a5565b604051908082528060200260200182016040528015612829578160200160208202803683370190505b50905060005b8281101561289657600085828151811061284b5761284b615a0f565b6020026020010151905061285f8133614da7565b6014811115612870576128706159a0565b83838151811061288257612882615a0f565b60209081029190910101525060010161282f565b509150505b919050565b60035460405163fc57d4df60e01b81526001600160a01b038581166004830152600092839283929091169063fc57d4df90602401602060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129159190615987565b60035460405163fc57d4df60e01b81526001600160a01b0388811660048301529293506000929091169063fc57d4df90602401602060405180830381865afa158015612965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129899190615987565b9050811580612996575080155b156129aa57600c6000935093505050612bc4565b60008690506000816001600160a01b031663bd6d894d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a139190615987565b90506000612a2d6040518060200160405280600081525090565b6040805160208101909152600081526040805160208101909152600081526000866001600160a01b0316636752e7026040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aaf9190615987565b90506000876001600160a01b031663be99f1196040518163ffffffff1660e01b8152600401602060405180830381865afa158015612af1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b159190615987565b90506000612b58612b446040518060200160405280600554815250604051806020016040528087815250614f41565b604051806020016040528085815250614f41565b9050612b728160405180602001604052808e815250614f76565b9550612b9a60405180602001604052808c81525060405180602001604052808b815250614f76565b9450612ba68686614fb5565b9350612bb2848f614774565b60009d509b5050505050505050505050505b935093915050565b6019818154811061117757600080fd5b6000612be661454e565b612bf657610c92600160146145a2565b60005b84811015612e71576000868683818110612c1557612c15615a0f565b9050602002016020810190612c2a919061539c565b9050848483818110612c3e57612c3e615a0f565b9050602002016020810190612c53919061566b565b15612d0b576001600160a01b03811660009081526010602052604090205460ff16612d06576001600160a01b0381166000818152601060205260408120805460ff19166001908117909155601180548083018255928190527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6890920180546001600160a01b03191690931790925554612cec91906159cc565b6001600160a01b0382166000908152601260205260409020555b612e68565b6001600160a01b03811660009081526010602052604090205460ff1615612e685760118054612d3c906001906159cc565b81548110612d4c57612d4c615a0f565b60009182526020808320909101546001600160a01b0384811684526012909252604090922054601180549290931692918110612d8a57612d8a615a0f565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506011805480612dc957612dc9615aeb565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b038316825260129081905260408220546011805491939184908110612e1d57612e1d615a0f565b60009182526020808320909101546001600160a01b039081168452838201949094526040928301822094909455918416825260128352808220829055601090925220805460ff191690555b50600101612bf9565b506000610ca6565b3360009081526008602052604090205460ff16612ed85760405162461bcd60e51b815260206004820181905260248201527f21436f6d7074726f6c6c65723a5f6265666f72654e6f6e5265656e7472616e746044820152606401610b63565b601a5460ff16612f175760405162461bcd60e51b815260206004820152600a602482015269085c99595b9d195c995960b21b6044820152606401610b63565b601a805460ff19169055565b601354600090600160b81b900460ff1615612f705760405162461bcd60e51b815260206004820152600d60248201526c085cd95a5e994e9c185d5cd959609a1b6044820152606401610b63565b6001600160a01b03861660009081526008602052604090205460ff161580612fb157506001600160a01b03851660009081526008602052604090205460ff16155b15612fbd5760086112fb565b846001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061301f9190615a7e565b6001600160a01b0316866001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308a9190615a7e565b6001600160a01b03161461309f5760026112fb565b612714868486614d03565b6011818154811061117757600080fd5b6001600160a01b03831660009081526015602052604081205460ff16156131145760405162461bcd60e51b815260206004820152600e60248201526d08589bdc9c9bddce9c185d5cd95960921b6044820152606401610b63565b6001600160a01b03841660009081526008602052604090205460ff1661313b576008610e44565b6001600160a01b038085166000908152600860209081526040808320938716835260029093019052205460ff1661322a57336001600160a01b038516146131ae5760405162461bcd60e51b815260206004820152600760248201526610b1ba37b5b2b760c91b6044820152606401610b63565b60006131ba3385614da7565b905060008160148111156131d0576131d06159a0565b146131ef578060148111156131e7576131e76159a0565b915050610c68565b6001600160a01b038086166000908152600860209081526040808320938816835260029093019052205460ff1661322857613228615b01565b505b60035460405163fc57d4df60e01b81526001600160a01b0386811660048301529091169063fc57d4df90602401602060405180830381865afa158015613274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132989190615987565b6000036132a657600c610e44565b600f5460ff1680156132d157506001600160a01b03831660009081526010602052604090205460ff16155b156132dd576011610e44565b60006132e8856122d6565b9050801580159061331857506001600160a01b038516600090815260216020526040902061331690856146b7565b155b1561345c576000856001600160a01b03166373acee986040518163ffffffff1660e01b8152600401602060405180830381865afa15801561335d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133819190615987565b9050600030604051631d3965af60e11b81526001600160a01b0389811660048301529190911690633a72cb5e90602401602060405180830381865afa1580156133ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133f29190615987565b9050600082821061340557506000613412565b61340f82846159cc565b90505b8361341d87836159df565b106134585760405162461bcd60e51b815260206004820152600b60248201526a021626f72726f773a6361760ac1b6044820152606401610b63565b5050505b613466858561423b565b604051637e361b1160e01b81526001600160a01b0380861660048301528616602482015260006044820181905260648201859052608482018190529081903090637e361b119060a401608060405180830381865afa1580156134cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134f09190615b17565b93505050915060006014811115613509576135096159a0565b821461351957509150610c689050565b801561352b5760049350505050610c68565b6000979650505050505050565b6007602052816000526040600020818154811061355457600080fd5b6000918252602090912001546001600160a01b03169150829050565b600061357a61454e565b6135915761358a600160096145a2565b9050610cbc565b6001600160a01b0383166000908152600860205260409020805460ff166135c6576135be6008600a6145a2565b915050610cbc565b60408051602080820183528582528251908101909252670c7d713b49da00008252906135f481835190511090565b1561360f576136056006600b6145a2565b9350505050610cbc565b8415801590613689575060035460405163fc57d4df60e01b81526001600160a01b0388811660048301529091169063fc57d4df90602401602060405180830381865afa158015613663573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136879190615987565b155b1561369957613605600c806145a2565b60018301805490869055604080516001600160a01b0389168152602081018390529081018790527f70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc59060600160405180910390a16000979650505050505050565b600080613708858585614c3b565b90508015611000579050610c68565b60008054604051631beb2b9760e31b81526001600160a01b039091169063df595cb890613759903090339082906001600160e01b031988351690600401615ab8565b602060405180830381865afa158015613776573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061379a9190615a9b565b6137d75760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd08185d5d1a1bdc9a5e995960921b6044820152606401610b63565b6001600160a01b03821660009081526008602052604090205460ff1661383f5760405162461bcd60e51b815260206004820152601760248201527f21436f6d7074726f6c6c65723a657869744d61726b65740000000000000000006044820152606401610b63565b6040516361bfb47160e11b81523360048201528290600090819081906001600160a01b0385169063c37f68e290602401608060405180830381865afa15801561388c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138b09190615b17565b50925092509250826000146138f55760405162461bcd60e51b815260206004820152600b60248201526a08595e1a5d13585c9ad95d60aa1b6044820152606401610b63565b801561390757610d8c600b60036145a2565b6000613914873385614c3b565b9050801561393457613929600d600483614fef565b979650505050505050565b6001600160a01b0387166000908152600860209081526040808320338452600281019092529091205460ff1661397257600098975050505050505050565b3360009081526002820160209081526040808320805460ff1916905560078252808320805482518185028101850190935280835291929091908301828280156139e457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116139c6575b5050835193945083925060009150505b82811015613a3e578b6001600160a01b0316848281518110613a1857613a18615a0f565b60200260200101516001600160a01b031603613a3657809150613a3e565b6001016139f4565b50818110613a4e57613a4e615b01565b33600090815260076020526040902080548190613a6d906001906159cc565b81548110613a7d57613a7d615a0f565b9060005260206000200160009054906101000a90046001600160a01b0316818381548110613aad57613aad615a0f565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080805480613aeb57613aeb615aeb565b600082815260208120820160001990810180546001600160a01b031916905590910190915581549003613c4757600b8054613b28906001906159cc565b81548110613b3857613b38615a0f565b6000918252602080832090910154338352600c909152604090912054600b80546001600160a01b03909316929091908110613b7557613b75615a0f565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600b805480613bb457613bb4615aeb565b60008281526020808220830160001990810180546001600160a01b0319169055909201909255338252600c908190526040822054600b805491939184908110613bff57613bff615a0f565b60009182526020808320909101546001600160a01b03168352828101939093526040918201812093909355338352600c8252808320839055600a9091529020805460ff191690555b604080516001600160a01b038e1681523360208201527fe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d910160405180910390a160009c9b505050505050505050505050565b610dc384836148b9565b600080600080613cb26152bc565b6001600160a01b03891615613d365760035460405163fc57d4df60e01b81526001600160a01b038b811660048301529091169063fc57d4df90602401602060405180830381865afa158015613d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d2f9190615987565b6101808201525b60005b6001600160a01b038b166000908152600760205260409020548110156140bb576001600160a01b038b166000908152600760205260409020805482908110613d8357613d83615a0f565b60009182526020822001546001600160a01b039081168085526040516361bfb47160e11b8152918e1660048301529063c37f68e290602401608060405180830381865afa158015613dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dfc9190615b17565b60a08701526080860152606085015290508015613e2a57600e600080600096509650965096505050506116bd565b50604080516020808201835284516001600160a01b0390811660009081526008835284902060010154835260e08601929092528251908101835260a085015181526101008501526003548451925163fc57d4df60e01b81529282166004840152169063fc57d4df90602401602060405180830381865afa158015613eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ed69190615987565b60c08301819052600003613efa57600c6000806000955095509550955050506116bd565b604080516020810190915260c0830151815261012083015260e0820151610100830151613f3591613f2a91614f76565b836101200151614f76565b610140830152308251604051633c1f884b60e11b81526001600160a01b0391821660048201528c821660248201528b151560448201528d8216606482015291169063783f109690608401602060405180830381865afa158015613f9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fc09190615987565b6101a08301526101408201516060830151600091613fdd91614774565b9050826101a00151811115613ff457506101a08201515b808360200181815161400691906159df565b9052505061012082015160808301516040840151614025929190615067565b604083015281516001600160a01b03808c169116036140b3576140528261014001518a8460400151615067565b6040830181905261012083015161406a918a90615067565b60408301526101208201516000906140829089614774565b90508260400151811061409b57600060408401526140b1565b80836040018181516140ad91906159cc565b9052505b505b600101613d39565b508060400151816020015111156140f45760208101516040820151600091906140e490826159cc565b60009450945094509450506116bd565b6000816020015160008360200151846040015161411191906159cc565b9450945094509450506116bd565b60008360000361413157506000610c68565b60035460405163fc57d4df60e01b81526001600160a01b038581166004830152600092169063fc57d4df90602401602060405180830381865afa15801561417c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141a09190615987565b9050600081116141dc5760405162461bcd60e51b8152602060048201526007602482015266216f7261636c6560c81b6044820152606401610b63565b8261421e576001600160a01b038416600090815260086020526040902060010154670de0b6b3a76400006142108383615b4d565b61421a9190615b64565b9150505b8061423186670de0b6b3a7640000615b4d565b610d3e9190615b64565b60005b6019548110156142d7576019818154811061425b5761425b615a0f565b600091825260209091200154604051631cdc2c5d60e31b81526001600160a01b03858116600483015284811660248301529091169063e6e162e890604401600060405180830381600087803b1580156142b357600080fd5b505af11580156142c7573d6000803e3d6000fd5b50506001909201915061423e9050565b505050565b604080516060810182526023546001600160a01b03811680835260ff600160a01b8304166020840152600160a81b909104600090810b938301939093521561452c576000836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561435e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143829190615a7e565b8251602084015160405163197c92ab60e31b81526001600160a01b03808516600483015260ff9092166024820152929350169063cbe4955890604401606060405180830381865afa1580156143db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143ff9190615b9e565b602090810151604080516004815260248101825292830180516001600160e01b031663313ce56760e01b1790525167ffffffffffffffff909116945060129160009182916001600160a01b038616916144589190615c39565b600060405180830381855afa9150503d8060008114614493576040519150601f19603f3d011682016040523d82523d6000602084013e614498565b606091505b50915091508180156144ab575080516020145b156144ca57808060200190518101906144c49190615c55565b60ff1692505b60408501516144dc9060000b84615c72565b925060008312614502576144f183600a615d76565b6144fb9087615b4d565b9550614523565b61450b83615d82565b61451690600a615d76565b6145209087615b64565b95505b50505050614548565b6001600160a01b03831660009081526018602052604090205491505b50919050565b6001546000906001600160a01b0316331480156145745750600254600160a81b900460ff165b8061459d57506000546001600160a01b03163314801561459d5750600254600160a01b900460ff165b905090565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa08360148111156145d7576145d76159a0565b83601a8111156145e9576145e96159a0565b60408051928352602083019190915260009082015260600160405180910390a1826014811115610c6857610c686159a0565b60005b6019548110156142d7576019818154811061463b5761463b615a0f565b600091825260209091200154604051630509462560e21b81526001600160a01b038581166004830152848116602483015290911690631425189490604401600060405180830381600087803b15801561469357600080fd5b505af11580156146a7573d6000803e3d6000fd5b50506001909201915061461e9050565b6001600160a01b03811660009081526001830160205260408120541515610c68565b60005b6019548110156142d757601981815481106146f9576146f9615a0f565b60009182526020909120015460405162e48b0f60e51b81526001600160a01b038581166004830152848116602483015290911690631c9161e090604401600060405180830381600087803b15801561475057600080fd5b505af1158015614764573d6000803e3d6000fd5b5050600190920191506146dc9050565b6000806147818484615088565b9050610ca9816150b0565b60005b601954811015610dc357601981815481106147ac576147ac615a0f565b600091825260209091200154604051632a29f11f60e21b81526001600160a01b038681166004830152858116602483015284811660448301529091169063a8a7c47c90606401600060405180830381600087803b15801561480c57600080fd5b505af1158015614820573d6000803e3d6000fd5b50506001909201915061478f9050565b60008060008061484086866150c8565b90925090506000826003811115614859576148596159a0565b1461486a575091506000905061487c565b6000614875826150b0565b9350935050505b9250929050565b6000610c688383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b815250615144565b60005b6019548110156142d757601981815481106148d9576148d9615a0f565b60009182526020909120015460405163d27c545360e01b81526001600160a01b03858116600483015284811660248301529091169063d27c545390604401600060405180830381600087803b15801561493157600080fd5b505af1158015614945573d6000803e3d6000fd5b5050600190920191506148bc9050565b604080516060810182526022546001600160a01b03811680835260ff600160a01b8304166020840152600160a81b909104600090810b93830193909352156149d7576000836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561435e573d6000803e3d6000fd5b50506001600160a01b031660009081526017602052604090205490565b60006149fe61454e565b614a0e57610cbc600160166145a2565b6001600160a01b03821660009081526008602052604090205460ff1615614a3b57610cbc600960156145a2565b306001600160a01b0316826001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015614a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614aa79190615a7e565b6001600160a01b031614614aec5760405162461bcd60e51b815260206004820152600c60248201526b10b1b7b6b83a3937b63632b960a11b6044820152606401610b63565b6000826001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015614b2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b509190615a7e565b6001600160a01b038082166000908152600e60205260409020549192501615614b7f57610c68600960156145a2565b6001600160a01b038381166000818152600860209081526040808320805460ff1916600190811782558082018590556009805491820190557f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b031990811687179091559587168452600e835292819020805490951684179094559251918252917fcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f910160405180910390a16000610ca9565b6001600160a01b03831660009081526008602052604081205460ff16614c62576008610e44565b6001600160a01b038085166000908152600860209081526040808320938716835260029093019052205460ff16614c9a576000610e44565b600080614cab858786600080613ca4565b93505050915060006014811115614cc457614cc46159a0565b826014811115614cd657614cd66159a0565b14614cf657816014811115614ced57614ced6159a0565b92505050610c68565b8015612714576004614ced565b60005b601954811015610dc35760198181548110614d2357614d23615a0f565b600091825260209091200154604051634e081c9560e01b81526001600160a01b0386811660048301528581166024830152848116604483015290911690634e081c9590606401600060405180830381600087803b158015614d8357600080fd5b505af1158015614d97573d6000803e3d6000fd5b505060019092019150614d069050565b6001600160a01b0382166000908152600860205260408120805460ff16614dd2576008915050610cbc565b6001600160a01b038316600090815260028201602052604090205460ff161515600103614e03576000915050610cbc565b6001600160a01b03838116600081815260028401602090815260408083208054600160ff199091168117909155600783528184208054918201815584528284200180546001600160a01b031916958a1695909517909455918152600a909152205460ff16614ef457600b8054600180820183557f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990910180546001600160a01b0319166001600160a01b0387169081179091556000908152600a60205260409020805460ff1916821790559054614eda91906159cc565b6001600160a01b0384166000908152600c60205260409020555b604080516001600160a01b038087168252851660208201527f3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5910160405180910390a15060009392505050565b6040805160208101909152600081526040518060200160405280614f6d85600001518560000151614883565b90529392505050565b6040805160208101909152600081526040518060200160405280670de0b6b3a7640000614fab8660000151866000015161517e565b614f6d9190615b64565b6040805160208101909152600081526040518060200160405280614f6d614fe88660000151670de0b6b3a764000061517e565b85516151c0565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0846014811115615024576150246159a0565b84601a811115615036576150366159a0565b604080519283526020830191909152810184905260600160405180910390a1836014811115610ca957610ca96159a0565b6000806150748585615088565b9050610d3e615082826150b0565b84614883565b6040805160208101909152600081526040518060200160405280614f6d85600001518561517e565b8051600090610cbc90670de0b6b3a764000090615b64565b60006150e06040518060200160405280600081525090565b6000806150f18660000151866151f3565b9092509050600082600381111561510a5761510a6159a0565b146151295750604080516020810190915260008152909250905061487c565b60408051602081019091529081526000969095509350505050565b60008061515184866159df565b905082858210156151755760405162461bcd60e51b8152600401610b639190615d9e565b50949350505050565b6000610c6883836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f7700000000000000000081525061523d565b6000610c6883836040518060400160405280600e81526020016d646976696465206279207a65726f60901b815250615290565b600080836000036152095750600090508061487c565b838302836152178683615b64565b1461522a5760026000925092505061487c565b60009250905061487c565b509250929050565b600083158061524a575082155b1561525757506000610c68565b60006152638486615b4d565b9050836152708683615b64565b1483906151755760405162461bcd60e51b8152600401610b639190615d9e565b600081836152b15760405162461bcd60e51b8152600401610b639190615d9e565b50610ca98385615b64565b604051806101c0016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016153186040518060200160405280600081525090565b81526020016153336040518060200160405280600081525090565b815260200161534e6040518060200160405280600081525090565b81526020016153696040518060200160405280600081525090565b81526020016000815260200160008152602001600081525090565b6001600160a01b038116811461539957600080fd5b50565b6000602082840312156153ae57600080fd5b8135610c6881615384565b801515811461539957600080fd5b6000806000606084860312156153dc57600080fd5b83356153e781615384565b925060208401356153f781615384565b91506040840135615407816153b9565b809150509250925092565b6000806040838503121561542557600080fd5b823561543081615384565b9150602083013561544081615384565b809150509250929050565b6000806000806080858703121561546157600080fd5b843561546c81615384565b9350602085013561547c81615384565b9250604085013561548c81615384565b9396929550929360600135925050565b6000602082840312156154ae57600080fd5b5035919050565b600080600080608085870312156154cb57600080fd5b84356154d681615384565b935060208501356154e681615384565b93969395505050506040820135916060013590565b60008060006060848603121561551057600080fd5b833561551b81615384565b9250602084013561552b81615384565b929592945050506040919091013590565b600080600080600060a0868803121561555457600080fd5b853561555f81615384565b9450602086013561556f81615384565b9350604086013561557f81615384565b9250606086013561558f81615384565b949793965091946080013592915050565b600080604083850312156155b357600080fd5b82356155be81615384565b946020939093013593505050565b600080600080600060a086880312156155e457600080fd5b85356155ef81615384565b945060208601356155ff81615384565b94979496505050506040830135926060810135926080909101359150565b6020808252825182820181905260009190848201906040850190845b8181101561565f5783516001600160e01b03191683529284019291840191600101615639565b50909695505050505050565b60006020828403121561567d57600080fd5b8135610c68816153b9565b6020808252825182820181905260009190848201906040850190845b8181101561565f5783516001600160a01b0316835292840192918401916001016156a4565b60ff8116811461539957600080fd5b60008083601f8401126156ea57600080fd5b50813567ffffffffffffffff81111561570257600080fd5b60208301915083602082850101111561487c57600080fd5b6000806000806000806080878903121561573357600080fd5b863561573e816156c9565b9550602087013567ffffffffffffffff8082111561575b57600080fd5b6157678a838b016156d8565b9097509550604089013591508082111561578057600080fd5b5061578d89828a016156d8565b979a9699509497949695606090950135949350505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156157e4576157e46157a5565b604052919050565b600060208083850312156157ff57600080fd5b823567ffffffffffffffff8082111561581757600080fd5b818501915085601f83011261582b57600080fd5b81358181111561583d5761583d6157a5565b8060051b915061584e8483016157bb565b818152918301840191848101908884111561586857600080fd5b938501935b83851015615892578435925061588283615384565b828252938501939085019061586d565b98975050505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561565f578351835292840192918401916001016158ba565b60008083601f8401126158e857600080fd5b50813567ffffffffffffffff81111561590057600080fd5b6020830191508360208260051b850101111561487c57600080fd5b6000806000806040858703121561593157600080fd5b843567ffffffffffffffff8082111561594957600080fd5b615955888389016158d6565b9096509450602087013591508082111561596e57600080fd5b5061597b878288016158d6565b95989497509550505050565b60006020828403121561599957600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610cbc57610cbc6159b6565b80820180821115610cbc57610cbc6159b6565b600060ff821680615a0557615a056159b6565b6000190192915050565b634e487b7160e01b600052603260045260246000fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60ff86168152606060208201526000615a6b606083018688615a25565b8281036040840152615892818587615a25565b600060208284031215615a9057600080fd5b8151610c6881615384565b600060208284031215615aad57600080fd5b8151610c68816153b9565b6001600160a01b0394851681529284166020840152921660408201526001600160e01b0319909116606082015260800190565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60008060008060808587031215615b2d57600080fd5b505082516020840151604085015160609095015191969095509092509050565b8082028115828204841417610cbc57610cbc6159b6565b600082615b8157634e487b7160e01b600052601260045260246000fd5b500490565b805167ffffffffffffffff8116811461289b57600080fd5b600060608284031215615bb057600080fd5b6040516060810181811067ffffffffffffffff82111715615bd357615bd36157a5565b604052615bdf83615b86565b8152615bed60208401615b86565b6020820152604083015163ffffffff81168114615c0957600080fd5b60408201529392505050565b60005b83811015615c30578181015183820152602001615c18565b50506000910152565b60008251615c4b818460208701615c15565b9190910192915050565b600060208284031215615c6757600080fd5b8151610c68816156c9565b8082018281126000831280158216821582161715615c9257615c926159b6565b505092915050565b600181815b80851115615235578160001904821115615cbb57615cbb6159b6565b80851615615cc857918102915b93841c9390800290615c9f565b600082615ce457506001610cbc565b81615cf157506000610cbc565b8160018114615d075760028114615d1157615d2d565b6001915050610cbc565b60ff841115615d2257615d226159b6565b50506001821b610cbc565b5060208310610133831016604e8410600b8410161715615d50575081810a610cbc565b615d5a8383615c9a565b8060001904821115615d6e57615d6e6159b6565b029392505050565b6000610c688383615cd5565b6000600160ff1b8201615d9757615d976159b6565b5060000390565b6020815260008251806020840152615dbd816040850160208701615c15565b601f01601f1916919091016040019291505056fea2646970667358221220d9f93c110e8cd1b5baaa4cd98b1209822d474748896ab5a95ec21b2e101cb0b364736f6c63430008160033