0 txs
0 calls
constructor
constructor(address _delegation, address _delegationSlasher)
functions
calculateWithdrawalRoot
purefunction calculateWithdrawalRoot(tuple queuedWithdrawal) pure returns (bytes32)
canCompleteQueuedWithdrawal
viewfunction canCompleteQueuedWithdrawal(tuple queuedWithdrawal) view returns (bool)
delegation
viewfunction delegation() view returns (address)
delegationSlasher
viewfunction delegationSlasher() view returns (address)
DEPOSIT_TYPEHASH
viewfunction DEPOSIT_TYPEHASH() view returns (bytes32)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
DOMAIN_TYPEHASH
viewfunction DOMAIN_TYPEHASH() view returns (bytes32)
getDelegationShares
viewfunction getDelegationShares(address staker, address delegationShare) view returns (uint256)
getDeposits
viewfunction getDeposits(address depositor) view returns (address[], uint256[])
getWithdrawNonce
viewfunction getWithdrawNonce(address staker) view returns (uint256)
investorDelegationLength
viewfunction investorDelegationLength(address staker) view returns (uint256)
investorDelegations
viewfunction investorDelegations(address, uint256) view returns (address)
investorDelegationShares
viewfunction investorDelegationShares(address, address) view returns (uint256)
minStakeAmount
viewfunction minStakeAmount() view returns (uint256)
nonces
viewfunction nonces(address) view returns (uint256)
numWithdrawalsQueued
viewfunction numWithdrawalsQueued(address) view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
queuedWithdrawals
viewfunction queuedWithdrawals(bytes32) view returns (uint32 initTimestamp, uint32 unlockTimestamp, address withdrawer)
REASONABLE_STAKES_UPDATE_PERIOD
viewfunction REASONABLE_STAKES_UPDATE_PERIOD() view returns (uint256)
stakingSlash
viewfunction stakingSlash() view returns (address)
tssGroupManager
viewfunction tssGroupManager() view returns (address)
whitelist
viewfunction whitelist(address) view returns (bool)
WITHDRAWAL_WAITING_PERIOD
viewfunction WITHDRAWAL_WAITING_PERIOD() view returns (uint32)
addToWhitelist
nonpayablefunction addToWhitelist(address[] toAddAddresses)
completeQueuedWithdrawal
nonpayablefunction completeQueuedWithdrawal(tuple queuedWithdrawal, bool receiveAsTokens)
completeQueuedWithdrawal
nonpayablefunction completeQueuedWithdrawal(address sender, tuple queuedWithdrawal, bool receiveAsTokens)
depositInto
nonpayablefunction depositInto(address delegationShare, address token, uint256 amount, address sender) returns (uint256 shares)
depositInto
nonpayablefunction depositInto(address delegationShare, address token, uint256 amount) returns (uint256 shares)
initialize
nonpayablefunction initialize(address initialOwner)
initializeT
nonpayablefunction initializeT(address _stakingSlashing, address _tssGroupManager, uint256 _minStakeAmount, address initialOwner)
isCanOperator
nonpayablefunction isCanOperator(address _addr, address delegationShare) returns (bool)
queueWithdrawal
nonpayablefunction queueWithdrawal(address sender, uint256[] delegationIndexes, address[] delegationShares, address[] tokens, uint256[] shares, tuple withdrawerAndNonce) returns (bytes32)
queueWithdrawal
nonpayablefunction queueWithdrawal(uint256[] delegationIndexes, address[] delegationShares, address[] tokens, uint256[] shares, tuple withdrawerAndNonce, bool undelegateIfPossible) returns (bytes32)
removeFromWhitelist
nonpayablefunction removeFromWhitelist(address[] toRemoveAddresses)
renounceOwnership
nonpayablefunction renounceOwnership()
setMinStakeAmount
nonpayablefunction setMinStakeAmount(uint256 _amount)
setStakingSlash
nonpayablefunction setStakingSlash(address _address)
setTssGroupManager
nonpayablefunction setTssGroupManager(address _addr)
slashQueuedWithdrawal
nonpayablefunction slashQueuedWithdrawal(address recipient, tuple queuedWithdrawal)
slashShares
nonpayablefunction slashShares(address slashedAddress, address recipient, address[] delegationShares, address[] tokens, uint256[] delegationIndexes, uint256[] shareAmounts)
startQueuedWithdrawalWaitingPeriod
nonpayablefunction startQueuedWithdrawalWaitingPeriod(bytes32 withdrawalRoot, address sender, uint32 stakeInactiveAfter)
startQueuedWithdrawalWaitingPeriod
nonpayablefunction startQueuedWithdrawalWaitingPeriod(bytes32 withdrawalRoot, uint32 stakeInactiveAfter)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
undelegate
nonpayablefunction undelegate()
events
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Unpaused
event Unpaused(address account)
WithdrawalCompleted
event WithdrawalCompleted(address indexed depositor, address indexed withdrawer, bytes32 withdrawalRoot)
WithdrawalQueued
event WithdrawalQueued(address indexed depositor, address indexed withdrawer, address indexed delegatedAddress, bytes32 withdrawalRoot)
errors
No errors.
creation bytecode
0x60c06040523480156200001157600080fd5b50604051620054cf380380620054cf833981016040819052620000349162000143565b6001600160a01b03808316608052811660a05281816200005362000068565b5062000060905062000068565b505062000182565b600054610100900460ff1615620000d55760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000128576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014057600080fd5b50565b600080604083850312156200015757600080fd5b825162000164816200012a565b602084015190925062000177816200012a565b809150509250929050565b60805160a0516152a96200022660003960008181610632015281816109be01528181610d44015281816114a10152818161194a01528181611f870152818161251201528181612a070152612e410152600081816106920152818161091801528181610fa70152818161107001528181612fda015281816130850152818161367c0152818161371a0152818161392201528181613beb0152613e9801526152a96000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c806388fdccf91161015c578063a49b5234116100ce578063d6495d5f11610087578063d6495d5f1461067a578063df5cf7231461068d578063eb4af045146106b4578063f1887684146106c7578063f2fde38b146106d0578063fd3eb81f146106e357600080fd5b8063a49b5234146105f4578063a7c373bc14610607578063b0eeb55e1461061a578063bb5807741461062d578063c4d66de814610654578063cf4c8a7b1461066757600080fd5b806394f649dd1161012057806394f649dd146104f05780639887bd231461051157806399f5371b146105195780639b19251a146105895780639cb600ba146105ac578063a319af61146105d757600080fd5b806388fdccf91461049e5780638941086c146104b15780638da5cb5b146104c457806390530863146104d557806392ab89bb146104e857600080fd5b80635350262e116101f5578063715018a6116101b9578063715018a614610414578063785112021461041c5780637ecebe001461042f5780637f6497831461044f578063863111ac146104625780638885a1ec1461047557600080fd5b80635350262e146103a0578063548db174146103c357806356631028146103d65780635c975abb146103f657806363f1dcce1461040157600080fd5b80633644e515116102475780633644e5151461030c5780633fd228f514610315578063423b3cf81461034057806348825e9414610353578063520381c01461037a578063529075a51461038d57600080fd5b806305579ccc1461028457806306f1f684146102aa5780631abeb0d9146102bf57806320606b70146102d2578063231c7f0d146102f9575b600080fd5b6102976102923660046143b4565b6106f6565b6040519081526020015b60405180910390f35b6102bd6102b8366004614438565b61075a565b005b6102976102cd36600461451f565b61099a565b6102977f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61029761030736600461480f565b610b20565b61029760c95481565b60d154610328906001600160a01b031681565b6040516001600160a01b0390911681526020016102a1565b61032861034e366004614843565b610b6d565b6102977f0a564d4cfe5cb0d4ee082aab2ca54b8c48e129485a8f7c77766ab5ef0c3566f181565b6102bd61038836600461451f565b610ba5565b61029761039b366004614887565b610d19565b6103b36103ae36600461497e565b6113e6565b60405190151581526020016102a1565b6102bd6103d13660046149b2565b6115a9565b6102976103e43660046149f3565b60ce6020526000908152604090205481565b60655460ff166103b3565b6102bd61040f366004614a24565b61161f565b6102bd6118ff565b6102bd61042a366004614a7b565b611913565b61029761043d3660046149f3565b60ca6020526000908152604090205481565b6102bd61045d3660046149b2565b611ed6565b6102bd610470366004614ac1565b611f50565b6102976104833660046149f3565b6001600160a01b0316600090815260cc602052604090205490565b6102976104ac366004614b24565b6124f0565b6102bd6104bf366004614b65565b612649565b6033546001600160a01b0316610328565b6102bd6104e3366004614b91565b6128f5565b6102bd612c97565b6105036104fe3660046149f3565b612ca0565b6040516102a1929190614c54565b610297601e81565b61055d610527366004614c82565b60cd6020526000908152604090205463ffffffff80821691600160201b810490911690600160401b90046001600160a01b031683565b6040805163ffffffff94851681529390921660208401526001600160a01b0316908201526060016102a1565b6103b36105973660046149f3565b60cf6020526000908152604090205460ff1681565b6102976105ba3660046143b4565b60cb60209081526000928352604080842090915290825290205481565b6105df600a81565b60405163ffffffff90911681526020016102a1565b610297610602366004614c9b565b612e1f565b6102976106153660046149f3565b612f6b565b6103b36106283660046143b4565b612fb8565b6103287f000000000000000000000000000000000000000000000000000000000000000081565b6102bd6106623660046149f3565b6131a4565b60d054610328906001600160a01b031681565b6102bd6106883660046149f3565b6132e0565b6103287f000000000000000000000000000000000000000000000000000000000000000081565b6102bd6106c2366004614c82565b61330a565b61029760d25481565b6102bd6106de3660046149f3565b613317565b6102bd6106f13660046149f3565b613390565b60d0546000906001600160a01b0316331461072c5760405162461bcd60e51b815260040161072390614d6f565b60405180910390fd5b506001600160a01b03808316600090815260cb60209081526040808320938516835292905220545b92915050565b6107626133ba565b60d0546001600160a01b0316331461078c5760405162461bcd60e51b815260040161072390614d6f565b600260975414156107af5760405162461bcd60e51b815260040161072390614db4565b6002609755600087815b81811015610900576108238d8888868181106107d7576107d7614deb565b905060200201358d8d858181106107f0576107f0614deb565b905060200201602081019061080591906149f3565b88888681811061081757610817614deb565b90506020020135613400565b1561082f578260010192505b8a8a8281811061084157610841614deb565b905060200201602081019061085691906149f3565b6001600160a01b031663d9caed128d8b8b8581811061087757610877614deb565b905060200201602081019061088c91906149f3565b88888681811061089e5761089e614deb565b905060200201356040518463ffffffff1660e01b81526004016108c393929190614e01565b600060405180830381600087803b1580156108dd57600080fd5b505af11580156108f1573d6000803e3d6000fd5b505050508060010190506107b9565b50604051631608124760e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635820491c90610955908f908e908e908a908a90600401614e25565b600060405180830381600087803b15801561096f57600080fd5b505af1158015610983573d6000803e3d6000fd5b505060016097555050505050505050505050505050565b6040516372c1cc1b60e11b81526001600160a01b03808316600483015260009183917f0000000000000000000000000000000000000000000000000000000000000000169063e58398369060240160206040518083038186803b158015610a0057600080fd5b505afa158015610a14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a389190614eb4565b15610a555760405162461bcd60e51b815260040161072390614ed1565b60026097541415610a785760405162461bcd60e51b815260040161072390614db4565b60026097556001600160a01b038616600090815260cf6020526040902054869060ff16610ada5760405162461bcd60e51b815260206004820152601060248201526f1393d517d25397d5d2125511531254d560821b6044820152606401610723565b60d0546001600160a01b03163314610b045760405162461bcd60e51b815260040161072390614d6f565b610b1084888888613562565b6001609755979650505050505050565b80516020808301516040808501516060860151608087015160a08801519351600097610b50979096959101614f4d565b604051602081830303815290604052805190602001209050919050565b60cc6020528160005260406000208181548110610b8957600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff1615808015610bc55750600054600160ff909116105b80610bdf5750303b158015610bdf575060005460ff166001145b610bfb5760405162461bcd60e51b815260040161072390615004565b6000805460ff191660011790558015610c1e576000805461ff0019166101001790555b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866604051806040016040528060068152602001654d616e746c6560d01b8152504630604051602001610c7394939291906150aa565b60408051601f19818403018152919052805160209091012060c955610c9782613608565b60d080546001600160a01b038088166001600160a01b03199283161790925560d180549287169290911691909117905560d28390558015610d12576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000610d236133ba565b6040516372c1cc1b60e11b81526001600160a01b03808d1660048301528c917f00000000000000000000000000000000000000000000000000000000000000009091169063e58398369060240160206040518083038186803b158015610d8857600080fd5b505afa158015610d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc09190614eb4565b15610ddd5760405162461bcd60e51b815260040161072390614ed1565b60d0546001600160a01b03163314610e075760405162461bcd60e51b815260040161072390614d6f565b60026097541415610e2a5760405162461bcd60e51b815260040161072390614db4565b60026097556001600160a01b038c16600090815260ce60209081526040918290205491610e5c919086019086016150e4565b6001600160601b031614610ed85760405162461bcd60e51b815260206004820152603b60248201527f496e766573746d656e744d616e616765722e717565756557697468647261776160448201527f6c3a2070726f7669646564206e6f6e636520696e636f727265637400000000006064820152608401610723565b60018814610f245760405162461bcd60e51b81526020600482015260196024820152786f6e6c79207473732064656c65676174696f6e20736861726560381b6044820152606401610723565b60018414610f705760405162461bcd60e51b81526020600482015260196024820152786f6e6c79207473732064656c65676174696f6e20736861726560381b6044820152606401610723565b6001600160a01b03808d16600081815260ce60205260408082208054600101905551631976849960e21b81526004810192909252917f000000000000000000000000000000000000000000000000000000000000000016906365da12649060240160206040518083038186803b158015610fe957600080fd5b505afa158015610ffd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102191906150ff565b905061106e8d8b8b600081811061103a5761103a614deb565b905060200201602081019061104f91906149f3565b8888600081811061106257611062614deb565b9050602002013561365a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635820491c8e8c8c8a8a6040518663ffffffff1660e01b81526004016110c2959493929190614e25565b600060405180830381600087803b1580156110dc57600080fd5b505af11580156110f0573d6000803e3d6000fd5b5050505061114d8d8d8d600081811061110b5761110b614deb565b905060200201358c8c600081811061112557611125614deb565b905060200201602081019061113a91906149f3565b8989600081811061081757610817614deb565b506040805160e060208c02808301820190935260c082018c815260009383928f918f918291908601908490808284376000920191909152505050908252506040805160208c810282810182019093528c82529283019290918d918d9182918501908490808284376000920191909152505050908252506040805160208a810282810182019093528a82529283019290918b918b918291850190849080828437600081840152601f19601f8201169050808301925050505050505081526020018f6001600160a01b031681526020018680360381019061122c919061511c565b8152602001836001600160a01b03168152509050600061124b82610b20565b90506040518060600160405280601e42611265919061514e565b63ffffffff16815260200163ffffffff8016815260200187600001602081019061128f91906149f3565b6001600160a01b031681525060cd600083815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160086101000a8154816001600160a01b0302191690836001600160a01b0316021790555090505060008f905060cc6000826001600160a01b03166001600160a01b03168152602001908152602001600020805490506000141561136b5761136b81613b40565b6001600160a01b03841661138260208901896149f3565b6001600160a01b0316826001600160a01b03167f4d91ce160b707b07397f4ad8150b1535d0c2c34d7376c0fe7a227fc088ad6214856040516113c691815260200190565b60405180910390a45060016097559e9d5050505050505050505050505050565b6000806113f561030784615166565b600081815260cd6020526040902054909150600160201b900463ffffffff166114975760405162461bcd60e51b815260206004820152604860248201527f44656c65676174696f6e4d616e616765722e63616e436f6d706c65746551756560448201527f7565645769746864726177616c3a207769746864726177616c20646f6573206e6064820152671bdd08195e1a5cdd60c21b608482015260a401610723565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e58398366114d660e0860160c087016149f3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b15801561151557600080fd5b505afa158015611529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154d9190614eb4565b1561155b5750600092915050565b600081815260cd602052604090205463ffffffff600160201b9091048116429091161015806115a25750600061159760e0850160c086016149f3565b6001600160a01b0316145b9392505050565b6115b1613c43565b60005b8181101561161a5760cf60008484848181106115d2576115d2614deb565b90506020020160208101906115e791906149f3565b6001600160a01b031681526020810191909152604001600020805460ff191690558061161281615172565b9150506115b4565b505050565b60d0546001600160a01b031633146116495760405162461bcd60e51b815260040161072390614d6f565b600083815260cd6020526040902054600160201b900463ffffffff908116146117145760405162461bcd60e51b815260206004820152606b60248201527f496e766573746d656e744d616e616765722e737461727451756575656457697460448201527f6864726177616c57616974696e67506572696f643a205769746864726177616c60648201527f207374616b6520696e61637469766520636c61696d2068617320616c7265616460848201526a79206265656e206d61646560a81b60a482015260c401610723565b600083815260cd60205260409020546001600160a01b03838116600160401b90920416146117c55760405162461bcd60e51b815260206004820152605260248201527f496e766573746d656e744d616e616765722e737461727451756575656457697460448201527f6864726177616c57616974696e67506572696f643a2053656e646572206973206064820152713737ba103a3432903bb4ba34323930bbb2b960711b608482015260a401610723565b600083815260cd602052604090205463ffffffff1642116118b35760405162461bcd60e51b815260206004820152609060248201527f496e766573746d656e744d616e616765722e737461727451756575656457697460448201527f6864726177616c57616974696e67506572696f643a205374616b65206d61792060648201527f7374696c6c206265207375626a65637420746f20736c617368696e672062617360848201527f6564206f6e206e6577207461736b732e205761697420746f207365742073746160a48201526f35b2a4b730b1ba34bb32a0b33a32b91760811b60c482015260e401610723565b6118c76118c1600a4261518d565b82613c9d565b600093845260cd6020526040909320805463ffffffff94909416600160201b0267ffffffff0000000019909416939093179092555050565b611907613c43565b6119116000613608565b565b61191b6133ba565b61192b60e0830160c084016149f3565b6040516372c1cc1b60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063e58398369060240160206040518083038186803b15801561198c57600080fd5b505afa1580156119a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c49190614eb4565b156119e15760405162461bcd60e51b815260040161072390614ed1565b60026097541415611a045760405162461bcd60e51b815260040161072390614db4565b60026097556000611a1761030785615166565b600081815260cd60209081526040918290208251606081018452905463ffffffff8082168352600160201b820416928201839052600160401b90046001600160a01b03169281019290925291925090611ae65760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e636f6d706c65746551756575656460448201527f5769746864726177616c3a207769746864726177616c20646f6573206e6f7420606482015264195e1a5cdd60da1b608482015260a401610723565b806020015163ffffffff164263ffffffff16101580611b1d57506000611b1260e0870160c088016149f3565b6001600160a01b0316145b611bf25760405162461bcd60e51b815260206004820152608e60248201527f44656c65676174696f6e4d616e616765722e636f6d706c65746551756575656460448201527f5769746864726177616c3a207769746864726177616c2077616974696e67207060648201527f6572696f6420686173206e6f74207965742070617373656420616e642064657060848201527f6f7369746f72207761732064656c656761746564207768656e2077697468647260a48201526d185dd85b081a5b9a5d1a585d195960921b60c482015260e401610723565b611c0260a08601608087016149f3565b6001600160a01b0316336001600160a01b031614611cbd5760405162461bcd60e51b815260206004820152606660248201527f44656c65676174696f6e4d616e616765722e636f6d706c65746551756575656460448201527f5769746864726177616c3a206f6e6c792073706563696669656420776974686460648201527f72617765722063616e20636f6d706c6574652061207175657565642077697468608482015265191c985dd85b60d21b60a482015260c401610723565b600082815260cd6020526040812080546001600160e01b0319169055611ce386806151b5565b9150508415611df35760005b81811015611ded57611d0187806151b5565b82818110611d1157611d11614deb565b9050602002016020810190611d2691906149f3565b6001600160a01b031663d9caed128460400151898060200190611d4991906151b5565b85818110611d5957611d59614deb565b9050602002016020810190611d6e91906149f3565b611d7b60408c018c6151b5565b86818110611d8b57611d8b614deb565b905060200201356040518463ffffffff1660e01b8152600401611db093929190614e01565b600060405180830381600087803b158015611dca57600080fd5b505af1158015611dde573d6000803e3d6000fd5b50505050806001019050611cef565b50611e69565b60005b81811015611e67576040830151611e5f90611e1189806151b5565b84818110611e2157611e21614deb565b9050602002016020810190611e3691906149f3565b611e4360408b018b6151b5565b85818110611e5357611e53614deb565b90506020020135613cbf565b600101611df6565b505b60408201516001600160a01b0316611e8760808801606089016149f3565b6001600160a01b03167f68c822b7070b88d8b19e597c8468af2178f99568172a673cff038bd572932d9f85604051611ec191815260200190565b60405180910390a35050600160975550505050565b611ede613c43565b60005b8181101561161a57600160cf6000858585818110611f0157611f01614deb565b9050602002016020810190611f1691906149f3565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611f4881615172565b915050611ee1565b611f586133ba565b611f6860e0830160c084016149f3565b6040516372c1cc1b60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063e58398369060240160206040518083038186803b158015611fc957600080fd5b505afa158015611fdd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120019190614eb4565b1561201e5760405162461bcd60e51b815260040161072390614ed1565b600260975414156120415760405162461bcd60e51b815260040161072390614db4565b600260975560d0546001600160a01b031633146120705760405162461bcd60e51b815260040161072390614d6f565b600061207e61030785615166565b600081815260cd60209081526040918290208251606081018452905463ffffffff8082168352600160201b820416928201839052600160401b90046001600160a01b0316928101929092529192509061214d5760405162461bcd60e51b815260206004820152604560248201527f496e766573746d656e744d616e616765722e636f6d706c65746551756575656460448201527f5769746864726177616c3a207769746864726177616c20646f6573206e6f7420606482015264195e1a5cdd60da1b608482015260a401610723565b806020015163ffffffff164263ffffffff161015806121845750600061217960e0870160c088016149f3565b6001600160a01b0316145b6122595760405162461bcd60e51b815260206004820152608e60248201527f496e766573746d656e744d616e616765722e636f6d706c65746551756575656460448201527f5769746864726177616c3a207769746864726177616c2077616974696e67207060648201527f6572696f6420686173206e6f74207965742070617373656420616e642064657060848201527f6f7369746f72207761732064656c656761746564207768656e2077697468647260a48201526d185dd85b081a5b9a5d1a585d195960921b60c482015260e401610723565b61226960a08601608087016149f3565b6001600160a01b0316866001600160a01b0316146123245760405162461bcd60e51b815260206004820152606660248201527f496e766573746d656e744d616e616765722e636f6d706c65746551756575656460448201527f5769746864726177616c3a206f6e6c792073706563696669656420776974686460648201527f72617765722063616e20636f6d706c6574652061207175657565642077697468608482015265191c985dd85b60d21b60a482015260c401610723565b600082815260cd6020526040812080546001600160e01b031916905561234a86806151b5565b915050841561245a5760005b818110156124545761236887806151b5565b8281811061237857612378614deb565b905060200201602081019061238d91906149f3565b6001600160a01b031663d9caed1284604001518980602001906123b091906151b5565b858181106123c0576123c0614deb565b90506020020160208101906123d591906149f3565b6123e260408c018c6151b5565b868181106123f2576123f2614deb565b905060200201356040518463ffffffff1660e01b815260040161241793929190614e01565b600060405180830381600087803b15801561243157600080fd5b505af1158015612445573d6000803e3d6000fd5b50505050806001019050612356565b50612482565b60005b8181101561248057604083015161247890611e1189806151b5565b60010161245d565b505b60408201516001600160a01b03166124a060808801606089016149f3565b6001600160a01b03167f68c822b7070b88d8b19e597c8468af2178f99568172a673cff038bd572932d9f856040516124da91815260200190565b60405180910390a3505060016097555050505050565b6040516372c1cc1b60e11b815233600482018190526000916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e58398369060240160206040518083038186803b15801561255457600080fd5b505afa158015612568573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258c9190614eb4565b156125a95760405162461bcd60e51b815260040161072390614ed1565b600260975414156125cc5760405162461bcd60e51b815260040161072390614db4565b60026097556001600160a01b038516600090815260cf6020526040902054859060ff1661262e5760405162461bcd60e51b815260206004820152601060248201526f1393d517d25397d5d2125511531254d560821b6044820152606401610723565b61263a33878787613562565b60016097559695505050505050565b600082815260cd6020526040902054600160201b900463ffffffff908116146127145760405162461bcd60e51b815260206004820152606b60248201527f44656c65676174696f6e4d616e616765722e737461727451756575656457697460448201527f6864726177616c57616974696e67506572696f643a205769746864726177616c60648201527f207374616b6520696e61637469766520636c61696d2068617320616c7265616460848201526a79206265656e206d61646560a81b60a482015260c401610723565b600082815260cd6020526040902054600160401b90046001600160a01b031633146127c25760405162461bcd60e51b815260206004820152605260248201527f44656c65676174696f6e4d616e616765722e737461727451756575656457697460448201527f6864726177616c57616974696e67506572696f643a2053656e646572206973206064820152713737ba103a3432903bb4ba34323930bbb2b960711b608482015260a401610723565b600082815260cd602052604090205463ffffffff1642116128b05760405162461bcd60e51b815260206004820152609060248201527f44656c65676174696f6e4d616e616765722e737461727451756575656457697460448201527f6864726177616c57616974696e67506572696f643a205374616b65206d61792060648201527f7374696c6c206265207375626a65637420746f20736c617368696e672062617360848201527f6564206f6e206e6577207461736b732e205761697420746f207365742073746160a48201526f35b2a4b730b1ba34bb32a0b33a32b91760811b60c482015260e401610723565b6128be6118c1600a4261518d565b600092835260cd6020526040909220805463ffffffff93909316600160201b0267ffffffff00000000199093169290921790915550565b6128fd6133ba565b612905613c43565b600260975414156129285760405162461bcd60e51b815260040161072390614db4565b6002609755600061293b61030783615166565b600081815260cd6020526040902054909150600160201b900463ffffffff166129d75760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e736c61736851756575656457697460448201527f6864726177616c3a207769746864726177616c20646f6573206e6f74206578696064820152611cdd60f21b608482015260a401610723565b600081815260cd6020526040902054600160401b90046001600160a01b03161580612ab357506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e5839836612a3c60808501606086016149f3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b158015612a7b57600080fd5b505afa158015612a8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab39190614eb4565b612b675760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e736c61736851756575656457697460448201527f6864726177616c3a207769746864726177616c20686173206e6f74206265656e60648201527f207375636365737366756c6c79206368616c6c656e676564206f72206465706f60848201527239b4ba37b91034b9903737ba10333937bd32b760691b60a482015260c401610723565b600081815260cd6020526040812080546001600160e01b0319169055612b8d83806151b5565b9050905060005b81811015612c8b57612ba684806151b5565b82818110612bb657612bb6614deb565b9050602002016020810190612bcb91906149f3565b6001600160a01b031663d9caed1286612be760208801886151b5565b85818110612bf757612bf7614deb565b9050602002016020810190612c0c91906149f3565b612c1960408901896151b5565b86818110612c2957612c29614deb565b905060200201356040518463ffffffff1660e01b8152600401612c4e93929190614e01565b600060405180830381600087803b158015612c6857600080fd5b505af1158015612c7c573d6000803e3d6000fd5b50505050806001019050612b94565b50506001609755505050565b61191133613b40565b6001600160a01b038116600090815260cc6020526040812054606091829190816001600160401b03811115612cd757612cd7614572565b604051908082528060200260200182016040528015612d00578160200160208202803683370190505b50905060005b82811015612d91576001600160a01b038616600090815260cb6020908152604080832060cc9092528220805491929184908110612d4557612d45614deb565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110612d7e57612d7e614deb565b6020908102919091010152600101612d06565b5060cc6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015612e0d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612def575b50505050509150935093505050915091565b6000612e296133ba565b6040516372c1cc1b60e11b81523360048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e58398369060240160206040518083038186803b158015612e8b57600080fd5b505afa158015612e9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec39190614eb4565b15612ee05760405162461bcd60e51b815260040161072390614ed1565b60026097541415612f035760405162461bcd60e51b815260040161072390614db4565b600260975560405162461bcd60e51b815260206004820152603260248201527f54737344656c65676174696f6e4d616e616765723a207175657565576974686460448201527103930bbb0b61034b9903234b9b0b13632b2160751b6064820152608401610723565b60d0546000906001600160a01b03163314612f985760405162461bcd60e51b815260040161072390614d6f565b506001600160a01b038116600090815260ce60205260409020545b919050565b6040516336b87bd760e11b81526001600160a01b0383811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636d70f7ae9060240160206040518083038186803b15801561301e57600080fd5b505afa158015613032573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130569190614eb4565b1561319b5760405163778e55f360e01b81526001600160a01b03848116600483015283811660248301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063778e55f39060440160206040518083038186803b1580156130c957600080fd5b505afa1580156130dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310191906151fe565b60405163f3e7387560e01b8152600481018290529091506000906001600160a01b0385169063f3e7387590602401602060405180830381600087803b15801561314957600080fd5b505af115801561315d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061318191906151fe565b905060d25481111561319857600192505050610754565b50505b50600092915050565b600054610100900460ff16158080156131c45750600054600160ff909116105b806131de5750303b1580156131de575060005460ff166001145b6131fa5760405162461bcd60e51b815260040161072390615004565b6000805460ff19166001179055801561321d576000805461ff0019166101001790555b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866604051806040016040528060068152602001654d616e746c6560d01b815250463060405160200161327294939291906150aa565b60408051601f19818403018152919052805160209091012060c95561329682613608565b80156132dc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6132e8613c43565b60d180546001600160a01b0319166001600160a01b0392909216919091179055565b613312613c43565b60d255565b61331f613c43565b6001600160a01b0381166133845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610723565b61338d81613608565b50565b613398613c43565b60d080546001600160a01b0319166001600160a01b0392909216919091179055565b60655460ff16156119115760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610723565b600081613477576040805162461bcd60e51b81526020600482015260248101919091527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265733a60448201527f207368617265416d6f756e742073686f756c64206e6f74206265207a65726f216064820152608401610723565b6001600160a01b03808616600090815260cb60209081526040808320938716835292905220548083111561350b5760405162461bcd60e51b815260206004820152603560248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265733a604482015274040e6d0c2e4ca82dadeeadce840e8dede40d0d2ced605b1b6064820152608401610723565b6001600160a01b03808716600090815260cb6020908152604080832093881683529290522083820390819055908314156135545761354a868686613f08565b600191505061355a565b60009150505b949350505050565b60006135796001600160a01b038416868685614164565b604051638340f54960e01b81526001600160a01b03851690638340f549906135a990889087908790600401614e01565b602060405180830381600087803b1580156135c357600080fd5b505af11580156135d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135fb91906151fe565b905061355a858583613cbf565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604051631976849960e21b81526001600160a01b0384811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906365da12649060240160206040518083038186803b1580156136c057600080fd5b505afa1580156136d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136f891906150ff565b604051633e28391d60e01b81526001600160a01b0386811660048301529192507f000000000000000000000000000000000000000000000000000000000000000090911690633e28391d9060240160206040518083038186803b15801561375e57600080fd5b505afa158015613772573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137969190614eb4565b15613b3a5760d15460405163b57388d360e01b81526001600160a01b0383811660048301529091169063b57388d390602401602060405180830381600087803b1580156137e257600080fd5b505af11580156137f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381a9190614eb4565b15613b3a5760d0546040516314bfb52760e01b81526001600160a01b038381166004830152909116906314bfb52790602401602060405180830381600087803b15801561386657600080fd5b505af115801561387a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061389e9190614eb4565b156138f65760405162461bcd60e51b815260206004820152602260248201527f746865206f70657261746f72206973206e6f7420696e206a61696c2073746174604482015261757360f01b6064820152608401610723565b60405163778e55f360e01b81526001600160a01b038281166004830152848116602483015260009184917f0000000000000000000000000000000000000000000000000000000000000000169063778e55f39060440160206040518083038186803b15801561396457600080fd5b505afa158015613978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399c91906151fe565b6139a69190615217565b60405163f3e7387560e01b8152600481018290529091506000906001600160a01b0386169063f3e7387590602401602060405180830381600087803b1580156139ee57600080fd5b505af1158015613a02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a2691906151fe565b60d1546040516368fe7d2360e01b81526001600160a01b0386811660048301529293509116906368fe7d2390602401602060405180830381600087803b158015613a6f57600080fd5b505af1158015613a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aa79190614eb4565b15613b375760d2548111613b375760405162461bcd60e51b815260206004820152604b60248201527f756e61626c652077697468647261772064756520746f206f70657261746f722760448201527f7320726573742073686172657320736d616c6c6572207468616e206d696e692060648201526a1c995c5d5a5c995b595b9d60aa1b608482015260a401610723565b50505b50505050565b6001600160a01b038116600090815260cc602052604090205415613bcc5760405162461bcd60e51b815260206004820152603c60248201527f496e766573746d656e744d616e616765722e5f756e64656c65676174653a206460448201527f65706f7369746f722068617320616374697665206465706f73697473000000006064820152608401610723565b6040516336a2fa1960e21b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063da8be86490602401600060405180830381600087803b158015613c2f57600080fd5b505af1158015610d12573d6000803e3d6000fd5b6033546001600160a01b031633146119115760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610723565b60008163ffffffff168363ffffffff1611613cb857816115a2565b5090919050565b80613d325760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e5f6164645368617265733a20736860448201527f617265732073686f756c64206e6f74206265207a65726f2100000000000000006064820152608401610723565b6001600160a01b03808416600090815260cb6020908152604080832093861683529290522054613e45576001600160a01b038316600090815260cc60209081526040909120541115613e065760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e5f6164645368617265733a20646560448201527f706f73697420776f756c6420657863656564204d41585f494e564553544f525f6064820152700888a988a8e82a8929e9cbe988a9c8ea89607b1b608482015260a401610723565b6001600160a01b03838116600090815260cc602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808416600090815260cb6020908152604080832093861683529290529081208054839290613e7c90849061514e565b9091555050604051631452b9d760e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90613ed190869086908690600401614e01565b600060405180830381600087803b158015613eeb57600080fd5b505af1158015613eff573d6000803e3d6000fd5b50505050505050565b6001600160a01b03838116600090815260cc6020526040902080549183169184908110613f3757613f37614deb565b6000918252602090912001546001600160a01b03161415613ff8576001600160a01b038316600090815260cc602052604090208054613f7890600190615217565b81548110613f8857613f88614deb565b60009182526020808320909101546001600160a01b03868116845260cc9092526040909220805491909216919084908110613fc557613fc5614deb565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550614116565b6001600160a01b038316600090815260cc6020526040812054905b81811015614113576001600160a01b03858116600090815260cc602052604090208054918516918390811061404a5761404a614deb565b6000918252602090912001546001600160a01b0316141561410b576001600160a01b038516600090815260cc60205260409020805461408b90600190615217565b8154811061409b5761409b614deb565b60009182526020808320909101546001600160a01b03888116845260cc90925260409092208054919092169190839081106140d8576140d8614deb565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550614113565b600101614013565b50505b6001600160a01b038316600090815260cc6020526040902080548061413d5761413d61522e565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b613b3a846323b872dd60e01b85858560405160240161418593929190614e01565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152600061420c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166142899092919063ffffffff16565b80519091501561161a578080602001905181019061422a9190614eb4565b61161a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610723565b606061355a848460008585843b6142e25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610723565b600080866001600160a01b031685876040516142fe9190615244565b60006040518083038185875af1925050503d806000811461433b576040519150601f19603f3d011682016040523d82523d6000602084013e614340565b606091505b509150915061435082828661435b565b979650505050505050565b6060831561436a5750816115a2565b82511561437a5782518084602001fd5b8160405162461bcd60e51b81526004016107239190615260565b6001600160a01b038116811461338d57600080fd5b8035612fb381614394565b600080604083850312156143c757600080fd5b82356143d281614394565b915060208301356143e281614394565b809150509250929050565b60008083601f8401126143ff57600080fd5b5081356001600160401b0381111561441657600080fd5b6020830191508360208260051b850101111561443157600080fd5b9250929050565b60008060008060008060008060008060c08b8d03121561445757600080fd5b6144608b6143a9565b995061446e60208c016143a9565b985060408b01356001600160401b038082111561448a57600080fd5b6144968e838f016143ed565b909a50985060608d01359150808211156144af57600080fd5b6144bb8e838f016143ed565b909850965060808d01359150808211156144d457600080fd5b6144e08e838f016143ed565b909650945060a08d01359150808211156144f957600080fd5b506145068d828e016143ed565b915080935050809150509295989b9194979a5092959850565b6000806000806080858703121561453557600080fd5b843561454081614394565b9350602085013561455081614394565b925060408501359150606085013561456781614394565b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b03811182821017156145aa576145aa614572565b60405290565b604051601f8201601f191681016001600160401b03811182821017156145d8576145d8614572565b604052919050565b60006001600160401b038211156145f9576145f9614572565b5060051b60200190565b600082601f83011261461457600080fd5b81356020614629614624836145e0565b6145b0565b82815260059290921b8401810191818101908684111561464857600080fd5b8286015b8481101561466c57803561465f81614394565b835291830191830161464c565b509695505050505050565b600082601f83011261468857600080fd5b81356020614698614624836145e0565b82815260059290921b840181019181810190868411156146b757600080fd5b8286015b8481101561466c57803583529183019183016146bb565b80356001600160601b0381168114612fb357600080fd5b6000604082840312156146fb57600080fd5b604051604081018181106001600160401b038211171561471d5761471d614572565b604052905080823561472e81614394565b815261473c602084016146d2565b60208201525092915050565b600060e0828403121561475a57600080fd5b614762614588565b905081356001600160401b038082111561477b57600080fd5b61478785838601614603565b8352602084013591508082111561479d57600080fd5b6147a985838601614603565b602084015260408401359150808211156147c257600080fd5b506147cf84828501614677565b6040830152506147e1606083016143a9565b60608201526147f383608084016146e9565b608082015261480460c083016143a9565b60a082015292915050565b60006020828403121561482157600080fd5b81356001600160401b0381111561483757600080fd5b61355a84828501614748565b6000806040838503121561485657600080fd5b823561486181614394565b946020939093013593505050565b60006040828403121561488157600080fd5b50919050565b60008060008060008060008060008060e08b8d0312156148a657600080fd5b6148af8b6143a9565b995060208b01356001600160401b03808211156148cb57600080fd5b6148d78e838f016143ed565b909b50995060408d01359150808211156148f057600080fd5b6148fc8e838f016143ed565b909950975060608d013591508082111561491557600080fd5b6149218e838f016143ed565b909750955060808d013591508082111561493a57600080fd5b506149478d828e016143ed565b909450925061495b90508c60a08d0161486f565b90509295989b9194979a5092959850565b600060e0828403121561488157600080fd5b60006020828403121561499057600080fd5b81356001600160401b038111156149a657600080fd5b61355a8482850161496c565b600080602083850312156149c557600080fd5b82356001600160401b038111156149db57600080fd5b6149e7858286016143ed565b90969095509350505050565b600060208284031215614a0557600080fd5b81356115a281614394565b803563ffffffff81168114612fb357600080fd5b600080600060608486031215614a3957600080fd5b833592506020840135614a4b81614394565b9150614a5960408501614a10565b90509250925092565b801515811461338d57600080fd5b8035612fb381614a62565b60008060408385031215614a8e57600080fd5b82356001600160401b03811115614aa457600080fd5b614ab08582860161496c565b92505060208301356143e281614a62565b600080600060608486031215614ad657600080fd5b8335614ae181614394565b925060208401356001600160401b03811115614afc57600080fd5b614b088682870161496c565b9250506040840135614b1981614a62565b809150509250925092565b600080600060608486031215614b3957600080fd5b8335614b4481614394565b92506020840135614b5481614394565b929592945050506040919091013590565b60008060408385031215614b7857600080fd5b82359150614b8860208401614a10565b90509250929050565b60008060408385031215614ba457600080fd5b8235614baf81614394565b915060208301356001600160401b03811115614bca57600080fd5b614bd68582860161496c565b9150509250929050565b600081518084526020808501945080840160005b83811015614c195781516001600160a01b031687529582019590820190600101614bf4565b509495945050505050565b600081518084526020808501945080840160005b83811015614c1957815187529582019590820190600101614c38565b604081526000614c676040830185614be0565b8281036020840152614c798185614c24565b95945050505050565b600060208284031215614c9457600080fd5b5035919050565b60008060008060008060008060008060e08b8d031215614cba57600080fd5b8a356001600160401b0380821115614cd157600080fd5b614cdd8e838f016143ed565b909c509a5060208d0135915080821115614cf657600080fd5b614d028e838f016143ed565b909a50985060408d0135915080821115614d1b57600080fd5b614d278e838f016143ed565b909850965060608d0135915080821115614d4057600080fd5b50614d4d8d828e016143ed565b9095509350614d6190508c60808d0161486f565b915061495b60c08c01614a70565b60208082526025908201527f636f6e74726163742063616c6c206973206e6f74207374616b696e6720736c616040820152647368696e6760d81b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03868116825260606020808401829052908301869052600091879160808501845b89811015614e74578435614e6081614394565b841682529382019390820190600101614e4d565b5085810360408701528681526001600160fb1b03871115614e9457600080fd5b8660051b9350838883830137600093010191825250979650505050505050565b600060208284031215614ec657600080fd5b81516115a281614a62565b60208082526056908201527f44656c65676174696f6e4d616e616765722e6f6e6c794e6f7446726f7a656e3a60408201527f207374616b657220686173206265656e2066726f7a656e20616e64206d6179206060820152756265207375626a65637420746f20736c617368696e6760501b608082015260a00190565b60e081526000614f6060e0830189614be0565b82810360208481019190915288518083528982019282019060005b81811015614fa05784516001600160a01b031683529383019391830191600101614f7b565b50508481036040860152614fb4818a614c24565b6001600160a01b038981166060880152885116608087015260208801516001600160601b031660a08701529350614fea92505050565b6001600160a01b03831660c0830152979650505050505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60005b8381101561506d578181015183820152602001615055565b83811115613b3a5750506000910152565b60008151808452615096816020860160208601615052565b601f01601f19169290920160200192915050565b8481526080602082015260006150c3608083018661507e565b6040830194909452506001600160a01b039190911660609091015292915050565b6000602082840312156150f657600080fd5b6115a2826146d2565b60006020828403121561511157600080fd5b81516115a281614394565b60006040828403121561512e57600080fd5b6115a283836146e9565b634e487b7160e01b600052601160045260246000fd5b6000821982111561516157615161615138565b500190565b60006107543683614748565b600060001982141561518657615186615138565b5060010190565b600063ffffffff8083168185168083038211156151ac576151ac615138565b01949350505050565b6000808335601e198436030181126151cc57600080fd5b8301803591506001600160401b038211156151e657600080fd5b6020019150600581901b360382131561443157600080fd5b60006020828403121561521057600080fd5b5051919050565b60008282101561522957615229615138565b500390565b634e487b7160e01b600052603160045260246000fd5b60008251615256818460208701615052565b9190910192915050565b6020815260006115a2602083018461507e56fea26469706673582212207d043b3077860df08ded94427dadef7a4be411ceb67510ac6b3db349dc761ad764736f6c63430008090033000000000000000000000000d4b5e3d46d202c3523c3ad89dfe74ec272bfc96a000000000000000000000000910265c29c099eac87ef6d374b6f3be45b516eb7