0 txs
5 calls
constructor
constructor()
functions
ADMIN_ROLE
viewfunction ADMIN_ROLE() view returns (bytes32)
AUCTION_LOCKER
viewfunction AUCTION_LOCKER() view returns (bytes32)
calculateMintableExposure
viewfunction calculateMintableExposure(address collateralToken, uint256 amountToLock) view returns (tuple)
collateralTokens
viewfunction collateralTokens(uint256) view returns (address)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
deMinimisMarginThreshold
viewfunction deMinimisMarginThreshold() view returns (uint256)
DEVOPS_ROLE
viewfunction DEVOPS_ROLE() view returns (bytes32)
encumberedCollateralRemaining
viewfunction encumberedCollateralRemaining() view returns (bool)
getCollateralBalance
viewfunction getCollateralBalance(address borrower, address collateralToken) view returns (uint256)
getCollateralBalances
viewfunction getCollateralBalances(address borrower) view returns (address[], uint256[])
getCollateralMarketValue
viewfunction getCollateralMarketValue(address borrower) view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
initialCollateralRatios
viewfunction initialCollateralRatios(address) view returns (uint256)
INITIALIZER_ROLE
viewfunction INITIALIZER_ROLE() view returns (bytes32)
isBorrowerInShortfall
viewfunction isBorrowerInShortfall(address borrower) view returns (bool)
liquidatedDamages
viewfunction liquidatedDamages(address) view returns (uint256)
liquidatedDamagesDueToProtocol
viewfunction liquidatedDamagesDueToProtocol() view returns (uint256)
liquidationsPaused
viewfunction liquidationsPaused() view returns (bool)
maintenanceCollateralRatios
viewfunction maintenanceCollateralRatios(address) view returns (uint256)
netExposureCapOnLiquidation
viewfunction netExposureCapOnLiquidation() view returns (uint256)
numOfAcceptedCollateralTokens
viewfunction numOfAcceptedCollateralTokens() view returns (uint8)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
purchaseToken
viewfunction purchaseToken() view returns (address)
ROLLOVER_MANAGER
viewfunction ROLLOVER_MANAGER() view returns (bytes32)
ROLLOVER_TARGET_AUCTIONEER_ROLE
viewfunction ROLLOVER_TARGET_AUCTIONEER_ROLE() view returns (bytes32)
SERVICER_ROLE
viewfunction SERVICER_ROLE() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
termRepoId
viewfunction termRepoId() view returns (bytes32)
termRepoLocker
viewfunction termRepoLocker() view returns (address)
version
viewfunction version() view returns (string)
acceptRolloverCollateral
nonpayablefunction acceptRolloverCollateral(address borrower, address collateralToken, uint256 amount)
approveRolloverAuction
nonpayablefunction approveRolloverAuction(address rolloverAuction)
auctionLockCollateral
nonpayablefunction auctionLockCollateral(address bidder, address collateralToken, uint256 amount)
auctionUnlockCollateral
nonpayablefunction auctionUnlockCollateral(address bidder, address collateralToken, uint256 amount)
batchDefault
nonpayablefunction batchDefault(address borrower, uint256[] closureAmounts)
batchLiquidation
nonpayablefunction batchLiquidation(address borrower, uint256[] closureAmounts)
batchLiquidationWithRepoToken
nonpayablefunction batchLiquidationWithRepoToken(address borrower, uint256[] closureRepoTokenAmounts)
externalLockCollateral
nonpayablefunction externalLockCollateral(address collateralToken, uint256 amount)
externalUnlockCollateral
nonpayablefunction externalUnlockCollateral(address collateralToken, uint256 amount)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(string termRepoId_, uint256 liquidatedDamagesDueToProtocol_, uint256 netExposureCapOnLiquidation_, uint256 deMinimisMarginThreshold_, address purchaseToken_, tuple[] collateralTokens_, address emitter_, address termInitializer_)
journalBidCollateralToCollateralManager
nonpayablefunction journalBidCollateralToCollateralManager(address borrower, address[] collateralTokenAddresses, uint256[] collateralTokenAmounts)
mintOpenExposureLockCollateral
nonpayablefunction mintOpenExposureLockCollateral(address borrower, address collateralToken, uint256 amount)
pairTermContracts
nonpayablefunction pairTermContracts(address termRepoLocker_, address termRepoServicer_, address termAuctionBidLocker_, address termAuction_, address termController_, address termPriceOracle_, address termRepoRolloverManager_, address devopsMultisig_, address adminWallet_)
pauseLiquidations
nonpayablefunction pauseLiquidations()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
reopenToNewAuction
nonpayablefunction reopenToNewAuction(tuple termAuctionGroup)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
transferRolloverCollateral
nonpayablefunction transferRolloverCollateral(address borrower, uint256 rolloverProportion, address rolloverTermRepoLocker) returns (address[], uint256[])
unlockCollateralOnRepurchase
nonpayablefunction unlockCollateralOnRepurchase(address borrower)
unpauseLiquidations
nonpayablefunction unpauseLiquidations()
updateEncumberedCollateral
nonpayablefunction updateEncumberedCollateral(address collateralToken, uint256 amount)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
Initialized
event Initialized(uint8 version)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Upgraded
event Upgraded(address indexed implementation)
errors
AlreadyTermContractPaired
error AlreadyTermContractPaired()
BorrowerNotInShortfall
error BorrowerNotInShortfall()
CallerNotBorrower
error CallerNotBorrower()
CollateralBelowMaintenanceRatios
error CollateralBelowMaintenanceRatios(address borrower, address token)
CollateralDepositClosed
error CollateralDepositClosed()
CollateralTokenNotAllowed
error CollateralTokenNotAllowed(address token)
CollateralWithdrawalClosed
error CollateralWithdrawalClosed()
DefaultsClosed
error DefaultsClosed()
ExceedsNetExposureCapOnLiquidation
error ExceedsNetExposureCapOnLiquidation()
InsufficientCollateralForLiquidationRepayment
error InsufficientCollateralForLiquidationRepayment(address collateralToken)
InsufficientCollateralForRedemption
error InsufficientCollateralForRedemption()
InvalidParameters
error InvalidParameters(string message)
LiquidationsPaused
error LiquidationsPaused()
RepaymentAmountLargerThanAllowed
error RepaymentAmountLargerThanAllowed()
SelfLiquidationNotPermitted
error SelfLiquidationNotPermitted()
ShortfallLiquidationsClosed
error ShortfallLiquidationsClosed()
TermRepurchaseWindowOpen
error TermRepurchaseWindowOpen()
TotalRepaymentGreaterThangetBorrowerRepurchaseObligation
error TotalRepaymentGreaterThangetBorrowerRepurchaseObligation()
UnlockAmountGreaterThanCollateralBalance
error UnlockAmountGreaterThanCollateralBalance()
ZeroAddressContractPaired
error ZeroAddressContractPaired()
ZeroBorrowerRepurchaseObligation
error ZeroBorrowerRepurchaseObligation()
ZeroCollateralBalance
error ZeroCollateralBalance()
ZeroLiquidationNotPermitted
error ZeroLiquidationNotPermitted()
creation bytecode
0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60805161589b6200011f60003960008181611294015281816112d401528181611958015281816119980152611a46015261589b6000f3fe6080604052600436106102a05760003560e01c806354fd4d5011610166578063a11d52f5116100c7578063a11d52f514610844578063a217fddf14610859578063a95c4d621461086e578063b7d5820b1461088f578063c066bc0e146108d6578063c180ead1146108eb578063c526c45c1461090b578063cc5b6e4a1461092b578063d547741f14610941578063de7f872e14610961578063e0623e1414610981578063e1cdd058146109a1578063fd5d357a146109b7578063fe05281a146109d757600080fd5b806354fd4d5014610679578063559e4fad146106ad57806356fdbdeb146106cd578063578db957146106e35780635c4b440e1461070357806367af01d0146107245780636a509f551461075357806375b238fc14610768578063790cb4911461078a57806382f049ab146107aa5780638f6d0f11146107ca57806391d14854146107e45780639210632f1461080457806394a7cfe81461082457600080fd5b80632b56d95e116102105780632b56d95e146104bd5780632f2ff15d146104dd57806336568abe146104fd5780633659cfe61461051d5780633718373f1461053d57806337843bc61461055f57806337cb26f51461057f5780633d0dda78146105955780634055008a146105c357806343551d0d146105e357806348717eb7146106115780634f1ef2861461063157806351b70c941461064457806352d1902d1461066457600080fd5b806301ffc9a7146102a557806302b65fb0146102da57806309a016081461030a57806312a900691461032c57806316febdd31461034e578063172c48c71461036e578063190e80121461039b578063201a6625146103cd57806320db25d5146103ef5780632391281c1461041d578063248a9ca31461043d57806327df3d3e1461046d5780632a1e8cdb1461048f575b600080fd5b3480156102b157600080fd5b506102c56102c0366004614b56565b6109f9565b60405190151581526020015b60405180910390f35b3480156102e657600080fd5b506102fc60008051602061582683398151915281565b6040519081526020016102d1565b34801561031657600080fd5b506102fc60008051602061573f83398151915281565b34801561033857600080fd5b5061034c610347366004614ba5565b610a30565b005b34801561035a57600080fd5b5061034c610369366004614bc2565b610acc565b34801561037a57600080fd5b5061038e610389366004614c7e565b610ea7565b6040516102d19190614c97565b3480156103a757600080fd5b5060fc546103bb9062010000900460ff1681565b60405160ff90911681526020016102d1565b3480156103d957600080fd5b506102fc60008051602061575f83398151915281565b3480156103fb57600080fd5b506102fc61040a366004614ba5565b6101086020526000908152604090205481565b34801561042957600080fd5b5061034c610438366004614cab565b610ed2565b34801561044957600080fd5b506102fc610458366004614c7e565b600090815260c9602052604090206001015490565b34801561047957600080fd5b506102fc60008051602061577f83398151915281565b34801561049b57600080fd5b506102fc6104aa366004614ba5565b6101096020526000908152604090205481565b3480156104c957600080fd5b5061034c6104d8366004614cec565b610f57565b3480156104e957600080fd5b5061034c6104f8366004614d18565b6111e7565b34801561050957600080fd5b5061034c610518366004614d18565b61120c565b34801561052957600080fd5b5061034c610538366004614ba5565b61128a565b34801561054957600080fd5b506102fc60008051602061580683398151915281565b34801561056b57600080fd5b5061034c61057a366004614d8c565b611352565b34801561058b57600080fd5b506102fc60fd5481565b3480156105a157600080fd5b506105b56105b0366004614de0565b61177f565b6040516102d1929190614e5d565b3480156105cf57600080fd5b5061034c6105de366004614eb3565b61180d565b3480156105ef57600080fd5b506102fc6105fe366004614ba5565b61010a6020526000908152604090205481565b34801561061d57600080fd5b5061034c61062c366004614cab565b611901565b61034c61063f366004614f11565b61194e565b34801561065057600080fd5b5061034c61065f366004614cec565b611a03565b34801561067057600080fd5b506102fc611a39565b34801561068557600080fd5b5060408051808201825260058152640302e392e360dc1b602082015290516102d19190614fdc565b3480156106b957600080fd5b5061034c6106c8366004614d8c565b611ae7565b3480156106d957600080fd5b506102fc60fe5481565b3480156106ef57600080fd5b5061034c6106fe36600461500f565b611cf3565b34801561070f57600080fd5b506101035461038e906001600160a01b031681565b34801561073057600080fd5b5061074461073f366004614cec565b611ee8565b604051905181526020016102d1565b34801561075f57600080fd5b5061034c612023565b34801561077457600080fd5b506102fc60008051602061584683398151915281565b34801561079657600080fd5b5061034c6107a5366004614cab565b6120a9565b3480156107b657600080fd5b5061034c6107c5366004614d8c565b612164565b3480156107d657600080fd5b5060fc546102c59060ff1681565b3480156107f057600080fd5b506102c56107ff366004614d18565b61243b565b34801561081057600080fd5b5061034c61081f366004614cab565b612466565b34801561083057600080fd5b506102c561083f366004614ba5565b61248f565b34801561085057600080fd5b506102c56126bd565b34801561086557600080fd5b506102fc600081565b34801561087a57600080fd5b506101015461038e906001600160a01b031681565b34801561089b57600080fd5b506102fc6108aa366004615091565b6001600160a01b03918216600090815261010b6020908152604080832093909416825291909152205490565b3480156108e257600080fd5b5061034c612732565b3480156108f757600080fd5b506102fc610906366004614ba5565b61278d565b34801561091757600080fd5b5061034c610926366004614cec565b6127af565b34801561093757600080fd5b506102fc60fb5481565b34801561094d57600080fd5b5061034c61095c366004614d18565b612903565b34801561096d57600080fd5b506105b561097c366004614ba5565b612928565b34801561098d57600080fd5b5061034c61099c366004615103565b612a8f565b3480156109ad57600080fd5b506102fc60ff5481565b3480156109c357600080fd5b5061034c6109d2366004614ba5565b612f33565b3480156109e357600080fd5b506102fc6000805160206157bf83398151915281565b60006001600160e01b03198216637965db0b60e01b1480610a2a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60008051602061573f833981519152610a4881612f63565b60005b61010654811015610ac75760006101068281548110610a6c57610a6c6151ed565b60009182526020808320909101546001600160a01b03878116845261010b83526040808520919092168085529252909120549091508015610ab457610ab48583836001612f6d565b505080610ac090615219565b9050610a4b565b505050565b60008051602061577f833981519152610ae481612f63565b60fc54610100900460ff1615610b0d57604051634ce377bb60e11b815260040160405180910390fd5b60fc805461ff00191661010090811790915561010380546001600160a01b03808e166001600160a01b03199283161790925582548c8316908216179092556101028054888316908416179055610104805491891691909216179055610b80600080516020615806833981519152896130c5565b610b98600080516020615806833981519152886130c5565b610bb06000805160206158068339815191528a6130c5565b610bc860008051602061573f8339815191528a6130c5565b610be0600080516020615826833981519152856130c5565b610bf860008051602061575f833981519152846130c5565b610c10600080516020615846833981519152836130c5565b610106546000906001600160401b03811115610c2e57610c2e614ecb565b604051908082528060200260200182016040528015610c57578160200160208202803683370190505b50610106549091506000906001600160401b03811115610c7957610c79614ecb565b604051908082528060200260200182016040528015610ca2578160200160208202803683370190505b50610106549091506000906001600160401b03811115610cc457610cc4614ecb565b604051908082528060200260200182016040528015610ced578160200160208202803683370190505b50905060005b61010654811015610e275761010860006101068381548110610d1757610d176151ed565b60009182526020808320909101546001600160a01b031683528201929092526040019020548451859083908110610d5057610d506151ed565b60200260200101818152505061010960006101068381548110610d7557610d756151ed565b60009182526020808320909101546001600160a01b031683528201929092526040019020548351849083908110610dae57610dae6151ed565b60200260200101818152505061010a60006101068381548110610dd357610dd36151ed565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610e0c57610e0c6151ed565b6020908102919091010152610e2081615219565b9050610cf3565b506101055460fb546040516329b35d4760e21b81526001600160a01b039092169163a6cd751c91610e669130906101069088908a908990600401615232565b600060405180830381600087803b158015610e8057600080fd5b505af1158015610e94573d6000803e3d6000fd5b5050505050505050505050505050505050565b6101068181548110610eb857600080fd5b6000918252602090912001546001600160a01b0316905081565b600080516020615806833981519152610eea81612f63565b6101035460405163049f2a5160e21b81526001600160a01b039091169063127ca94490610f1f908790879087906004016152d5565b600060405180830381600087803b158015610f3957600080fd5b505af1158015610f4d573d6000803e3d6000fd5b5050505050505050565b81610f618161314b565b610f895780604051634428dc3160e01b8152600401610f809190614c97565b60405180910390fd5b336000839003610fca5760405163dd23c3ad60e01b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b6044820152606401610f80565b6001600160a01b03808216600090815261010b602090815260408083209388168352929052908120549003611012576040516314605b7760e01b815260040160405180910390fd5b61010060009054906101000a90046001600160a01b03166001600160a01b0316631320834f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108a91906152f9565b421015801561110f575061010060009054906101000a90046001600160a01b03166001600160a01b0316631b2354376040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110c91906152f9565b42105b1561112d57604051633f5a890f60e01b815260040160405180910390fd5b61010054604051632762697d60e01b81526000916001600160a01b031690632762697d9061115f908590600401614c97565b602060405180830381865afa15801561117c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a091906152f9565b156111a9575060015b6111b582868684612f6d565b6111be8261248f565b156111e0578185604051632263ff6560e11b8152600401610f80929190615312565b5050505050565b600082815260c9602052604090206001015461120281612f63565b610ac783836130c5565b6001600160a01b038116331461127c5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610f80565b611286828261317b565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036112d25760405162461bcd60e51b8152600401610f809061532c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166113046131e2565b6001600160a01b03161461132a5760405162461bcd60e51b8152600401610f8090615378565b611333816131fe565b6040805160008082526020820190925261134f91839190613249565b50565b60fc5460ff161561137657604051637d8d0e2160e01b815260040160405180910390fd5b61010060009054906101000a90046001600160a01b03166001600160a01b0316631320834f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ee91906152f9565b421161140d57604051633daab04760e21b815260040160405180910390fd5b6001600160a01b03831633036114365760405163ae957a1d60e01b815260040160405180910390fd5b6101065481146114595760405163dd23c3ad60e01b8152600401610f80906153c4565b61010054604051632762697d60e01b815260009182916001600160a01b0390911690632762697d9061148f908890600401614c97565b602060405180830381865afa1580156114ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d091906152f9565b9050806000036114f35760405163baca79c960e01b815260040160405180910390fd5b60008060005b858110156116d257868682818110611513576115136151ed565b90506020020135600003156116c257600019878783818110611537576115376151ed565b905060200201350361155c5760405163dd23c3ad60e01b8152600401610f8090615421565b86868281811061156e5761156e6151ed565b90506020020135856115809190615462565b9450838511156115a357604051634fbeca4960e01b815260040160405180910390fd5b610100546001600160a01b031663ec9477e189338a8a868181106115c9576115c96151ed565b905060200201356040518463ffffffff1660e01b81526004016115ee939291906152d5565b600060405180830381600087803b15801561160857600080fd5b505af115801561161c573d6000803e3d6000fd5b5050505061166a878783818110611635576116356151ed565b905060200201356101068381548110611650576116506151ed565b6000918252602090912001546001600160a01b03166133b4565b80935081945050506116c28833610106848154811061168b5761168b6151ed565b6000918252602090912001546001600160a01b03168a8a868181106116b2576116b26151ed565b9050602002013587876001613677565b6116cb81615219565b90506114f9565b50836000036116f457604051630cabf09b60e01b815260040160405180910390fd5b61010054604051632762697d60e01b81526001600160a01b0390911690632762697d90611725908a90600401614c97565b602060405180830381865afa158015611742573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176691906152f9565b60000361177657611776876138fc565b50505050505050565b6060806000805160206157bf83398151915261179a81612f63565b6101066117a88787876139dd565b8154604080516020808402820181019092528281529184918301828280156117f957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116117db575b505050505091509250925050935093915050565b60008051602061577f83398151915261182581612f63565b61184c6000805160206158068339815191526118476040850160208601614ba5565b6130c5565b61186b6000805160206158068339815191526118476020850185614ba5565b6101055460fb546001600160a01b039091169063f3782f2190306118956040870160208801614ba5565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b0391821660248401521660448201526064015b600060405180830381600087803b1580156118e557600080fd5b505af11580156118f9573d6000803e3d6000fd5b505050505050565b60008051602061580683398151915261191981612f63565b6101035460405163109c8cf960e11b81526001600160a01b039091169063213919f290610f1f908790879087906004016152d5565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036119965760405162461bcd60e51b8152600401610f809061532c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166119c86131e2565b6001600160a01b0316146119ee5760405162461bcd60e51b8152600401610f8090615378565b6119f7826131fe565b61128682826001613249565b600080516020615846833981519152611a1b81612f63565b506001600160a01b0390911660009081526101076020526040902055565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611ad45760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610f80565b5060008051602061579f83398151915290565b60fc5460ff1615611b0b57604051637d8d0e2160e01b815260040160405180910390fd5b6000611b1984338585613da0565b90506000808060005b85811015611ca657868682818110611b3c57611b3c6151ed565b9050602002013560000315611c9657600019878783818110611b6057611b606151ed565b9050602002013503611b855760405163dd23c3ad60e01b8152600401610f8090615421565b868682818110611b9757611b976151ed565b9050602002013584611ba99190615462565b610100549094506001600160a01b031663ec9477e189338a8a86818110611bd257611bd26151ed565b905060200201356040518463ffffffff1660e01b8152600401611bf7939291906152d5565b600060405180830381600087803b158015611c1157600080fd5b505af1158015611c25573d6000803e3d6000fd5b50505050611c3e878783818110611635576116356151ed565b8093508194505050611c9688336101068481548110611c5f57611c5f6151ed565b6000918252602090912001546001600160a01b03168a8a86818110611c8657611c866151ed565b9050602002013587876000613677565b611c9f81615219565b9050611b22565b5082600003611cc857604051630cabf09b60e01b815260040160405180910390fd5b836116f457611cd687613fe3565b6116f4576040516316a0371d60e11b815260040160405180910390fd5b60008051602061573f833981519152611d0b81612f63565b60005b8481101561177657838382818110611d2857611d286151ed565b9050602002013561010b6000896001600160a01b03166001600160a01b031681526020019081526020016000206000888885818110611d6957611d696151ed565b9050602002016020810190611d7e9190614ba5565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254611dad9190615462565b909155508490508382818110611dc557611dc56151ed565b905060200201356101076000888885818110611de357611de36151ed565b9050602002016020810190611df89190614ba5565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254611e279190615462565b90915550506101055460fb546001600160a01b039091169063ee9e68bb9089898986818110611e5857611e586151ed565b9050602002016020810190611e6d9190614ba5565b888887818110611e7f57611e7f6151ed565b905060200201356040518563ffffffff1660e01b8152600401611ea59493929190615475565b600060405180830381600087803b158015611ebf57600080fd5b505af1158015611ed3573d6000803e3d6000fd5b5050505080611ee190615219565b9050611d0e565b60408051602081018252600081526101025491516303d3c9db60e21b8152909161201c91611f9d916001600160a01b031690630f4f276c90611f30908890889060040161549a565b602060405180830381865afa158015611f4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7191906154b3565b60408051602080820183526001600160a01b038916600090815261010990915291909120548152614269565b61010254610101546040516303d3c9db60e21b81526001600160a01b0392831692630f4f276c92611fd69291169060019060040161549a565b602060405180830381865afa158015611ff3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201791906154b3565b614269565b9392505050565b60008051602061584683398151915261203b81612f63565b60fc805460ff191690556101055460fb546040516302ddfefd60e51b81526001600160a01b0390921691635bbfdfa09161207b9160040190815260200190565b600060405180830381600087803b15801561209557600080fd5b505af11580156111e0573d6000803e3d6000fd5b6000805160206158068339815191526120c181612f63565b6001600160a01b03808516600090815261010b60209081526040808320938716835292905290812080548492906120f9908490615462565b90915550506001600160a01b0383166000908152610107602052604081208054849290612127908490615462565b90915550506101055460fb5460405163ee9e68bb60e01b81526001600160a01b039092169163ee9e68bb91610f1f91889088908890600401615475565b60fc5460ff161561218857604051637d8d0e2160e01b815260040160405180910390fd5b600061219684338585613da0565b90506000808080805b8681101561236c578787828181106121b9576121b96151ed565b905060200201356000031561235c576000198888838181106121dd576121dd6151ed565b90506020020135036122455760405163dd23c3ad60e01b815260206004820152602a60248201527f636c6f737572655265706f546f6b656e416d6f756e74732063616e6e6f7420626044820152690ca40ead2dce840dac2f60b31b6064820152608401610f80565b878782818110612257576122576151ed565b90506020020135856122699190615462565b610100549095506001600160a01b03166309aa80fc8a338b8b86818110612292576122926151ed565b905060200201356040518463ffffffff1660e01b81526004016122b7939291906152d5565b6020604051808303816000875af11580156122d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fa91906152f9565b9350612314846101068381548110611650576116506151ed565b809350819450505061235c89336101068481548110612335576123356151ed565b6000918252602090912001546001600160a01b03168b8b86818110611c8657611c866151ed565b61236581615219565b905061219f565b508360000361238e57604051630cabf09b60e01b815260040160405180910390fd5b846123b95761239c88613fe3565b6123b9576040516316a0371d60e11b815260040160405180910390fd5b61010054604051632762697d60e01b81526001600160a01b0390911690632762697d906123ea908b90600401614c97565b602060405180830381865afa158015612407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242b91906152f9565b600003610f4d57610f4d886138fc565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60008051602061573f83398151915261247e81612f63565b6124898484846142ac565b50505050565b610102546101015461010054604051632762697d60e01b815260009384936001600160a01b0391821693630f4f276c93918316921690632762697d906124d9908990600401614c97565b602060405180830381865afa1580156124f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251a91906152f9565b6040518363ffffffff1660e01b815260040161253792919061549a565b602060405180830381865afa158015612554573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257891906154b3565b60408051602081019091526000808252919250905b6101065481101561269e57600061010682815481106125ae576125ae6151ed565b6000918252602080832090910154610102546001600160a01b038a8116855261010b84526040808620938216808752939094528385205493516303d3c9db60e21b815292955061267d93911691630f4f276c916126109187919060040161549a565b602060405180830381865afa15801561262d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265191906154b3565b60408051602080820183526001600160a01b038716600090815261010890915291909120548152614269565b905061268981856143e4565b935050508061269790615219565b905061258d565b508151815110156126b3575060019392505050565b5060009392505050565b6000805b6101065481101561272a576000610107600061010684815481106126e7576126e76151ed565b60009182526020808320909101546001600160a01b03168352820192909252604001902054111561271a57600191505090565b61272381615219565b90506126c1565b506000905090565b60008051602061584683398151915261274a81612f63565b60fc805460ff191660011790556101055460fb5460405163c8df617960e01b81526001600160a01b039092169163c8df61799161207b9160040190815260200190565b6001600160a01b038116600090815261010b60205260408120610a2a90614410565b816127b98161314b565b6127d85780604051634428dc3160e01b8152600401610f809190614c97565b6101005460408051631320834f60e01b8152905133926001600160a01b031691631320834f9160048083019260209291908290030181865afa158015612822573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284691906152f9565b4211156128665760405163c5e2992f60e01b815260040160405180910390fd5b61010054604051632762697d60e01b81526001600160a01b0390911690632762697d90612897908490600401614c97565b602060405180830381865afa1580156128b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d891906152f9565b6000036128f85760405163baca79c960e01b815260040160405180910390fd5b6124898185856142ac565b600082815260c9602052604090206001015461291e81612f63565b610ac7838361317b565b6060806000610106805490506001600160401b0381111561294b5761294b614ecb565b604051908082528060200260200182016040528015612974578160200160208202803683370190505b50610106549091506000906001600160401b0381111561299657612996614ecb565b6040519080825280602002602001820160405280156129bf578160200160208202803683370190505b50905060005b61010654811015612a8457600061010682815481106129e6576129e66151ed565b60009182526020808320909101546001600160a01b038a8116845261010b83526040808520919092168085529252909120548551919250908290869085908110612a3257612a326151ed565b60200260200101906001600160a01b031690816001600160a01b03168152505080848481518110612a6557612a656151ed565b602002602001018181525050505080612a7d90615219565b90506129c5565b509094909350915050565b600054610100900460ff1615808015612aaf5750600054600160ff909116105b80612ad05750612abe3061453e565b158015612ad0575060005460ff166001145b612b335760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610f80565b6000805460ff191660011790558015612b56576000805461ff0019166101001790555b612b5e61454d565b612b6661454d565b8a8a604051602001612b799291906154f4565b60408051601f19818403018152919052805160209091012060fb5560fc805460ff1916905560fe89905560ff88905560fd8790556001600160a01b038616612c015760405162461bcd60e51b815260206004820152601b60248201527a2d32b9379030b2323932b9b990383ab931b430b9b2903a37b5b2b760291b6044820152606401610f80565b61010180546001600160a01b0319166001600160a01b03881617905560fc805462ff000019166201000060ff871602179055836001600160401b03811115612c4b57612c4b614ecb565b604051908082528060200260200182016040528015612c74578160200160208202803683370190505b508051612c8a9161010691602090910190614adc565b5060005b84811015612eab57858582818110612ca857612ca86151ed565b612cbe9260206080909202019081019150614ba5565b6101068281548110612cd257612cd26151ed565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858582818110612d1257612d126151ed565b905060800201604001356101086000888885818110612d3357612d336151ed565b612d499260206080909202019081019150614ba5565b6001600160a01b03168152602081019190915260400160002055858582818110612d7557612d756151ed565b905060800201602001356101096000888885818110612d9657612d966151ed565b612dac9260206080909202019081019150614ba5565b6001600160a01b03168152602081019190915260400160002055858582818110612dd857612dd86151ed565b90506080020160600135600003612e2d5760405162461bcd60e51b81526020600482015260196024820152784c6971756964617465642064616d616765206973207a65726f60381b6044820152606401610f80565b858582818110612e3f57612e3f6151ed565b9050608002016060013561010a6000888885818110612e6057612e606151ed565b612e769260206080909202019081019150614ba5565b6001600160a01b0316815260208101919091526040016000205560fc805461ff0019169055612ea481615219565b9050612c8e565b5061010580546001600160a01b0319166001600160a01b038516179055612ee060008051602061577f833981519152836130c5565b8015612f26576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b600080516020615826833981519152612f4b81612f63565b6112866000805160206157bf833981519152836130c5565b61134f81336145ba565b6001600160a01b03808516600090815261010b6020908152604080832093871683529290522054821115612fb45760405163380984fd60e21b815260040160405180910390fd5b6001600160a01b03808516600090815261010b6020908152604080832093871683529290529081208054849290612fec908490615504565b90915550508015613026576001600160a01b0383166000908152610107602052604081208054849290613020908490615504565b90915550505b6101035460405163109c8cf960e11b81526001600160a01b039091169063213919f29061305b908790879087906004016152d5565b600060405180830381600087803b15801561307557600080fd5b505af1158015613089573d6000803e3d6000fd5b50506101055460fb54604051633b8d409b60e01b81526001600160a01b039092169350633b8d409b9250610f1f91889088908890600401615475565b6130cf828261243b565b61128657600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff191660011790556131073390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6001600160a01b038116600090815261010a6020526040812054810361317357506000919050565b506001919050565b613185828261243b565b1561128657600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008051602061579f833981519152546001600160a01b031690565b60008051602061575f83398151915261321681612f63565b6101055460405163b3c2d50b60e01b81526001600160a01b039091169063b3c2d50b906118cb9030908690600401615312565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561327c57610ac783614613565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156132d6575060408051601f3d908101601f191682019092526132d3918101906152f9565b60015b6133395760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610f80565b60008051602061579f83398151915281146133a85760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610f80565b50610ac78383836146ad565b61010254610101546040516303d3c9db60e21b81526000928392859284926001600160a01b0390811692630f4f276c926133f692909116908a9060040161549a565b602060405180830381865afa158015613413573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061343791906154b3565b905060006134ef8261010260009054906101000a90046001600160a01b03166001600160a01b0316630f4f276c89876001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c79190615517565b6134d290600a61561e565b6040518363ffffffff1660e01b8152600401611fd692919061549a565b6040805160208082018352670de0b6b3a76400008252825180820184526001600160a01b038b16600090815261010a90925292812054835292935061353e918491613539916143e4565b6146d2565b9050600061355c83604051806020016040528060fe548152506146d2565b9050846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561359c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c09190615517565b6135cb90601261562d565b6135d690600a61561e565b82516135e29190615646565b856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613620573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136449190615517565b61364f90601261562d565b61365a90600a61561e565b82516136669190615646565b9650965050505050505b9250929050565b6001600160a01b03808816600090815261010b60209081526040808320938916835292905220548311156136c057846040516398de333560e01b8152600401610f809190614c97565b6001600160a01b03808816600090815261010b60209081526040808320938916835292905290812080548592906136f8908490615504565b90915550506001600160a01b0385166000908152610107602052604081208054859290613726908490615504565b909155505061010354610104546040805163012f8d2f60e11b815290516001600160a01b039384169363213919f293169163025f1a5e9160048083019260209291908290030181865afa158015613781573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137a59190615668565b87856040518463ffffffff1660e01b81526004016137c5939291906152d5565b600060405180830381600087803b1580156137df57600080fd5b505af11580156137f3573d6000803e3d6000fd5b5050610103546001600160a01b0316915063213919f2905087876138178688615504565b6040518463ffffffff1660e01b8152600401613835939291906152d5565b600060405180830381600087803b15801561384f57600080fd5b505af1158015613863573d6000803e3d6000fd5b50506101055460fb54604051639cc487d760e01b815260048101919091526001600160a01b038b811660248301528a8116604483015260648201899052898116608483015260a4820188905260c4820187905285151560e48301529091169250639cc487d7915061010401600060405180830381600087803b1580156138e857600080fd5b505af1158015612f26573d6000803e3d6000fd5b60005b61010654811015611286576001600160a01b038216600090815261010b6020526040812061010680549192918490811061393b5761393b6151ed565b9060005260206000200160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000205461010760006101068481548110613993576139936151ed565b60009182526020808320909101546001600160a01b03168352820192909252604001812080549091906139c7908490615504565b909155506139d6905081615219565b90506138ff565b610106546060906000906001600160401b038111156139fe576139fe614ecb565b604051908082528060200260200182016040528015613a27578160200160208202803683370190505b50905060005b61010654811015613d975760006101068281548110613a4e57613a4e6151ed565b60009182526020808320909101546001600160a01b038a8116845261010b83526040808520919092168085529252909120549091508015613d8457670de0b6b3a76400008703613bf9576001600160a01b03888116600090815261010b602090815260408083209386168352929052908120805491905584518190869086908110613adb57613adb6151ed565b602002602001018181525050806101076000856001600160a01b03166001600160a01b031681526020019081526020016000206000828254613b1d9190615504565b90915550506101035460405163109c8cf960e11b81526001600160a01b039091169063213919f290613b57908a90879086906004016152d5565b600060405180830381600087803b158015613b7157600080fd5b505af1158015613b85573d6000803e3d6000fd5b50506101055460fb54604051633b8d409b60e01b81526001600160a01b039092169350633b8d409b9250613bc1918d9088908790600401615475565b600060405180830381600087803b158015613bdb57600080fd5b505af1158015613bef573d6000803e3d6000fd5b5050505050613d84565b6000613c1360405180602001604052808a81525083614711565b6001600160a01b03808b16600090815261010b60209081526040808320938816835292905290812080549293508392909190613c50908490615504565b9250508190555080858581518110613c6a57613c6a6151ed565b602002602001018181525050806101076000856001600160a01b03166001600160a01b031681526020019081526020016000206000828254613cac9190615504565b90915550506101035460405163109c8cf960e11b81526001600160a01b039091169063213919f290613ce6908a90879086906004016152d5565b600060405180830381600087803b158015613d0057600080fd5b505af1158015613d14573d6000803e3d6000fd5b50506101055460fb54604051633b8d409b60e01b81526001600160a01b039092169350633b8d409b9250613d50918d9088908790600401615475565b600060405180830381600087803b158015613d6a57600080fd5b505af1158015613d7e573d6000803e3d6000fd5b50505050505b505080613d9090615219565b9050613a2d565b50949350505050565b6101005460408051631320834f60e01b815290516000926001600160a01b031691631320834f9160048083019260209291908290030181865afa158015613deb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e0f91906152f9565b421115613e2f576040516321f8431560e01b815260040160405180910390fd5b846001600160a01b0316846001600160a01b031603613e615760405163ae957a1d60e01b815260040160405180910390fd5b610106548214613e845760405163dd23c3ad60e01b8152600401610f80906153c4565b61010054604051632762697d60e01b81526000916001600160a01b031690632762697d90613eb6908990600401614c97565b602060405180830381865afa158015613ed3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ef791906152f9565b905080600003613f1a5760405163baca79c960e01b815260040160405180910390fd5b613f238661248f565b613f405760405163e94a979360e01b815260040160405180910390fd5b60fd5461010254610101546040516303d3c9db60e21b8152600093926001600160a01b0390811692630f4f276c92613f809290911690879060040161549a565b602060405180830381865afa158015613f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fc191906154b3565b51613fcc9190615462565b613fd58861278d565b10925050505b949350505050565b61010054604051632762697d60e01b815260009182916001600160a01b0390911690632762697d90614019908690600401614c97565b602060405180830381865afa158015614036573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061405a91906152f9565b90508060000361406d5750600092915050565b604080516020810190915260008082525b6101065481101561418f576000610106828154811061409f5761409f6151ed565b6000918252602080832090910154610102546001600160a01b038a8116855261010b84526040808620938216808752939094528385205493516303d3c9db60e21b815292955061416e93911691630f4f276c916141019187919060040161549a565b602060405180830381865afa15801561411e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061414291906154b3565b60408051602080820183526001600160a01b038716600090815261010990915291909120548152614269565b905061417a81856143e4565b935050508061418890615219565b905061407e565b5061010254610101546040516303d3c9db60e21b81526000926001600160a01b0390811692630f4f276c926141cc9290911690879060040161549a565b602060405180830381865afa1580156141e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061420d91906154b3565b905061421b82825190511090565b1561422b57506001949350505050565b60006142378383614729565b905061425f6142468284614269565b604051806020016040528060ff54815250519051111590565b9695505050505050565b60408051602081019091526000815260405180602001604052806142a361429c8660000151670de0b6b3a7640000614755565b8551614761565b90529392505050565b6001600160a01b03808416600090815261010b60209081526040808320938616835292905290812080548392906142e4908490615462565b90915550506001600160a01b0382166000908152610107602052604081208054839290614312908490615462565b90915550506101035460405163049f2a5160e21b81526001600160a01b039091169063127ca9449061434c908690869086906004016152d5565b600060405180830381600087803b15801561436657600080fd5b505af115801561437a573d6000803e3d6000fd5b50506101055460fb5460405163ee9e68bb60e01b81526001600160a01b03909216935063ee9e68bb92506143b691879087908790600401615475565b600060405180830381600087803b1580156143d057600080fd5b505af1158015611776573d6000803e3d6000fd5b60408051602081019091526000815260405180602001604052806142a38560000151856000015161476d565b6040805160208101909152600080825290815b61010654811015614536576101025461010680546145249285926001600160a01b0390911691630f4f276c919086908110614460576144606151ed565b9060005260206000200160009054906101000a90046001600160a01b03168860006101068881548110614495576144956151ed565b60009182526020808320909101546001600160a01b0316835282019290925260409081019091205490516001600160e01b031960e085901b1681526144de92919060040161549a565b602060405180830381865afa1580156144fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061451f91906154b3565b6143e4565b915061452f81615219565b9050614423565b505192915050565b6001600160a01b03163b151590565b600054610100900460ff166145b85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610f80565b565b6145c4828261243b565b611286576145d181614779565b6145dc83602061478b565b6040516020016145ed929190615685565b60408051601f198184030181529082905262461bcd60e51b8252610f8091600401614fdc565b61461c8161453e565b61467e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610f80565b60008051602061579f83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6146b683614926565b6000825111806146c35750805b15610ac7576124898383614966565b6040805160208101909152600081526040518060200160405280670de0b6b3a764000061470786600001518660000151614755565b6142a39190615646565b60008061471e848461498b565b9050613fdb816149b3565b60408051602081019091526000815260405180602001604052806142a3856000015185600001516149cb565b600061201c82846156f4565b600061201c8284615646565b600061201c8284615462565b6060610a2a6001600160a01b03831660145b6060600061479a8360026156f4565b6147a5906002615462565b6001600160401b038111156147bc576147bc614ecb565b6040519080825280601f01601f1916602001820160405280156147e6576020820181803683370190505b509050600360fc1b81600081518110614801576148016151ed565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110614830576148306151ed565b60200101906001600160f81b031916908160001a90535060006148548460026156f4565b61485f906001615462565b90505b60018111156148d7576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110614893576148936151ed565b1a60f81b8282815181106148a9576148a96151ed565b60200101906001600160f81b031916908160001a90535060049490941c936148d08161570b565b9050614862565b50831561201c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610f80565b61492f81614613565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061201c83836040518060600160405280602781526020016157df602791396149d7565b60408051602081019091526000815260405180602001604052806142a3856000015185614755565b8051600090610a2a90670de0b6b3a764000090615646565b600061201c8284615504565b6060600080856001600160a01b0316856040516149f49190615722565b600060405180830381855af49150503d8060008114614a2f576040519150601f19603f3d011682016040523d82523d6000602084013e614a34565b606091505b509150915061425f8683838760608315614aad578251600003614aa657614a5a8561453e565b614aa65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610f80565b5081613fdb565b613fdb8383815115614ac25781518083602001fd5b8060405162461bcd60e51b8152600401610f809190614fdc565b828054828255906000526020600020908101928215614b31579160200282015b82811115614b3157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614afc565b50614b3d929150614b41565b5090565b5b80821115614b3d5760008155600101614b42565b600060208284031215614b6857600080fd5b81356001600160e01b03198116811461201c57600080fd5b6001600160a01b038116811461134f57600080fd5b8035614ba081614b80565b919050565b600060208284031215614bb757600080fd5b813561201c81614b80565b60008060008060008060008060006101208a8c031215614be157600080fd5b8935614bec81614b80565b985060208a0135614bfc81614b80565b975060408a0135614c0c81614b80565b965060608a0135614c1c81614b80565b955060808a0135614c2c81614b80565b945060a08a0135614c3c81614b80565b935060c08a0135614c4c81614b80565b925060e08a0135614c5c81614b80565b91506101008a0135614c6d81614b80565b809150509295985092959850929598565b600060208284031215614c9057600080fd5b5035919050565b6001600160a01b0391909116815260200190565b600080600060608486031215614cc057600080fd5b8335614ccb81614b80565b92506020840135614cdb81614b80565b929592945050506040919091013590565b60008060408385031215614cff57600080fd5b8235614d0a81614b80565b946020939093013593505050565b60008060408385031215614d2b57600080fd5b823591506020830135614d3d81614b80565b809150509250929050565b60008083601f840112614d5a57600080fd5b5081356001600160401b03811115614d7157600080fd5b6020830191508360208260051b850101111561367057600080fd5b600080600060408486031215614da157600080fd5b8335614dac81614b80565b925060208401356001600160401b03811115614dc757600080fd5b614dd386828701614d48565b9497909650939450505050565b600080600060608486031215614df557600080fd5b8335614e0081614b80565b9250602084013591506040840135614e1781614b80565b809150509250925092565b600081518084526020808501945080840160005b83811015614e5257815187529582019590820190600101614e36565b509495945050505050565b604080825283519082018190526000906020906060840190828701845b82811015614e9f5781516001600160a01b031684529284019290840190600101614e7a565b5050508381038285015261425f8186614e22565b600060608284031215614ec557600080fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614f0957614f09614ecb565b604052919050565b60008060408385031215614f2457600080fd5b8235614f2f81614b80565b91506020838101356001600160401b0380821115614f4c57600080fd5b818601915086601f830112614f6057600080fd5b813581811115614f7257614f72614ecb565b614f84601f8201601f19168501614ee1565b91508082528784828501011115614f9a57600080fd5b80848401858401376000848284010152508093505050509250929050565b60005b83811015614fd3578181015183820152602001614fbb565b50506000910152565b6020815260008251806020840152614ffb816040850160208701614fb8565b601f01601f19169190910160400192915050565b60008060008060006060868803121561502757600080fd5b853561503281614b80565b945060208601356001600160401b038082111561504e57600080fd5b61505a89838a01614d48565b9096509450604088013591508082111561507357600080fd5b5061508088828901614d48565b969995985093965092949392505050565b600080604083850312156150a457600080fd5b82356150af81614b80565b91506020830135614d3d81614b80565b60008083601f8401126150d157600080fd5b5081356001600160401b038111156150e857600080fd5b6020830191508360208260071b850101111561367057600080fd5b6000806000806000806000806000806101008b8d03121561512357600080fd5b8a356001600160401b038082111561513a57600080fd5b818d0191508d601f83011261514e57600080fd5b81358181111561515d57600080fd5b8e602082850101111561516f57600080fd5b60208381019d50909b508d0135995060408d0135985060608d0135975061519860808e01614b95565b965060a08d01359150808211156151ae57600080fd5b506151bb8d828e016150bf565b90955093506151ce905060c08c01614b95565b91506151dc60e08c01614b95565b90509295989b9194979a5092959850565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161522b5761522b615203565b5060010190565b600060c08201888352602060018060a01b03808a168286015260c0604086015282895480855260e0870191508a60005283600020945060005b8181101561528957855484168352600195860195928501920161526b565b5050858103606087015261529d818a614e22565b935050505082810360808401526152b48186614e22565b905082810360a08401526152c88185614e22565b9998505050505050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60006020828403121561530b57600080fd5b5051919050565b6001600160a01b0392831681529116602082015260400190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252603f908201527f436c6f7375726520616d6f756e7473206172726179206e6f742073616d65206c60408201527f656e67746820617320636f6c6c61746572616c20746f6b656e73206c69737400606082015260800190565b60208082526021908201527f636c6f73757265416d6f756e74732063616e6e6f742062652075696e74206d616040820152600f60fb1b606082015260800190565b80820180821115610a2a57610a2a615203565b9384526001600160a01b03928316602085015291166040830152606082015260800190565b6001600160a01b03929092168252602082015260400190565b6000602082840312156154c557600080fd5b604051602081018181106001600160401b03821117156154e7576154e7614ecb565b6040529151825250919050565b8183823760009101908152919050565b81810381811115610a2a57610a2a615203565b60006020828403121561552957600080fd5b815160ff8116811461201c57600080fd5b600181815b8085111561557557816000190482111561555b5761555b615203565b8085161561556857918102915b93841c939080029061553f565b509250929050565b60008261558c57506001610a2a565b8161559957506000610a2a565b81600181146155af57600281146155b9576155d5565b6001915050610a2a565b60ff8411156155ca576155ca615203565b50506001821b610a2a565b5060208310610133831016604e8410600b84101617156155f8575081810a610a2a565b615602838361553a565b806000190482111561561657615616615203565b029392505050565b600061201c60ff84168361557d565b60ff8281168282160390811115610a2a57610a2a615203565b60008261566357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561567a57600080fd5b815161201c81614b80565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516156b7816017850160208801614fb8565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516156e8816028840160208801614fb8565b01602801949350505050565b8082028115828204841417610a2a57610a2a615203565b60008161571a5761571a615203565b506000190190565b60008251615734818460208701614fb8565b919091019291505056fe250b76734a070a69c7b3930477dd35007ad9c9d0952e97903fdafb2db6980537793a6c9b7e0a9549c74edc2f9ae0dc50903dfaa9a56fb0116b27a8c71de3e2c630d41a597cac127d8249d31298b50e481ee82c3f4a49ff93c76a22735aa9f3ad360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf4b6b486426e3c004413defb7013cd482f29189a98e074f1c202b2ac26536bb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65646e14a979b95b01beecd617807f3738f4e067938da99755b16afdcf7148d313b76e3cc031d23d7153f72e87cbfd113a0351c60d8ce52b8a31c944d543a384b7c9a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a264697066735822122033acebcde9e319cd9073655cbdfa452ee3b183c252e7262137e64634040a818264736f6c63430008120033