1 tx
8.2k calls
constructor
constructor(address _owner, address _permit2)
functions
CALLDATA_EXECUTOR
viewfunction CALLDATA_EXECUTOR() view returns (address)
checkCapacity
viewfunction checkCapacity(address transmitter, address token) view returns (uint256)
EXPIRY_BUFFER
viewfunction EXPIRY_BUFFER() view returns (uint256)
FEE_COLLECTOR
viewfunction FEE_COLLECTOR() view returns (address)
getSingleOutputExtractedRequest
viewfunction getSingleOutputExtractedRequest(bytes32 requestHash) view returns (tuple)
getSingleOutputFulfilledRequest
viewfunction getSingleOutputFulfilledRequest(bytes32 requestHash) view returns (tuple)
getWhitelistedReceiver
viewfunction getWhitelistedReceiver(address router, uint256 destinationChainId) view returns (address)
isBungeeRouter
viewfunction isBungeeRouter(address router) view returns (bool)
isWhitelisted
viewfunction isWhitelisted(address router) view returns (bool whitelisted)
MOFA_SIGNER
viewfunction MOFA_SIGNER() view returns (address)
NATIVE_TOKEN_ADDRESS
viewfunction NATIVE_TOKEN_ADDRESS() view returns (address)
nominee
viewfunction nominee() view returns (address)
owner
viewfunction owner() view returns (address)
PERMIT2
viewfunction PERMIT2() view returns (address)
SINGLE_OUTPUT_IMPL_ID
viewfunction SINGLE_OUTPUT_IMPL_ID() view returns (uint8)
singleOutputExtractedRequests
viewfunction singleOutputExtractedRequests(bytes32 requestHash) view returns (uint256 expiry, address router, address sender, address delegate, uint32 switchboardId, address token, address transmitter, address beneficiary, uint256 amount, uint256 promisedAmount, uint256 promisedRefuelAmount, bytes affiliateFees)
singleOutputFulfilledRequests
viewfunction singleOutputFulfilledRequests(bytes32 requestHash) view returns (uint256 fulfilledAmount, uint256 fulfilledRefuelAmount, bool processed)
STAKE_VAULT
viewfunction STAKE_VAULT() view returns (address)
SWAP_EXECUTOR
viewfunction SWAP_EXECUTOR() view returns (address)
SWITCHBOARD_ROUTER
viewfunction SWITCHBOARD_ROUTER() view returns (address)
transmitterCapacity
viewfunction transmitterCapacity(address transmitter, address token) view returns (uint256 capacity)
withdrawnRequests
viewfunction withdrawnRequests(bytes32 requestHash) view returns (bool withdrawn)
claimOwner
nonpayablefunction claimOwner()
extractRequests
nonpayablefunction extractRequests(tuple[] extractExecs, bytes mofaSignature)
fulfilRequests
payablefunction fulfilRequests(tuple[] fulfillExecs) payable
nominateOwner
nonpayablefunction nominateOwner(address nominee_)
receiveMsg
payablefunction receiveMsg(bytes payload) payable
registerStakedRouter
nonpayablefunction registerStakedRouter(address stakedRouter)
registerTransmitterStake
payablefunction registerTransmitterStake(address token, uint256 capacity) payable
registerWhitelistedRouter
nonpayablefunction registerWhitelistedRouter(address whitelistedRouter)
rescue
nonpayablefunction rescue(address token, address to, uint256 amount)
setCalldataExecutor
nonpayablefunction setCalldataExecutor(address _calldataExecutor)
setExpiryBuffer
nonpayablefunction setExpiryBuffer(uint256 _expiryBuffer)
setFeeCollector
nonpayablefunction setFeeCollector(address _feeCollector)
setMofaSigner
nonpayablefunction setMofaSigner(address _mofaSigner)
setStakeVault
nonpayablefunction setStakeVault(address _stakeVault)
setSwapExecutor
nonpayablefunction setSwapExecutor(address _swapExecutor)
setSwitchboardRouter
nonpayablefunction setSwitchboardRouter(address _switchboardRouter)
settleRequests
payablefunction settleRequests(bytes32[] requestHashes, uint256 gasLimit, uint32 chainSlug, uint32 switchboardId) payable
setWhitelistedReceiver
nonpayablefunction setWhitelistedReceiver(address receiver, uint256 destinationChainId, address router)
withdrawRequestOnDestination
payablefunction withdrawRequestOnDestination(address router, tuple request, bytes withdrawRequestData) payable
withdrawRequestOnOrigin
nonpayablefunction withdrawRequestOnOrigin(bytes32 requestHash)
withdrawTransmitterStake
nonpayablefunction withdrawTransmitterStake(address token, uint256 capacity)
events
OwnerClaimed
event OwnerClaimed(address indexed claimer)
OwnerNominated
event OwnerNominated(address indexed nominee)
RequestExtracted
event RequestExtracted(bytes32 indexed requestHash, uint8 implId, address transmitter, bytes execution)
RequestFulfilled
event RequestFulfilled(bytes32 indexed requestHash, uint8 implId, address fulfiller, bytes execution)
RequestSettled
event RequestSettled(bytes32 indexed requestHash)
WithdrawOnDestination
event WithdrawOnDestination(bytes32 indexed requestHash, address token, uint256 amount, address to)
WithdrawOnOrigin
event WithdrawOnOrigin(bytes32 indexed requestHash, address token, uint256 amount, address to)
errors
FulfillmentDeadlineNotMet
error FulfillmentDeadlineNotMet()
InsufficientCapacity
error InsufficientCapacity()
InsufficientNativeAmount
error InsufficientNativeAmount()
InvalidMsg
error InvalidMsg()
InvalidRequest
error InvalidRequest()
InvalidStake
error InvalidStake()
InvalidSwitchboard
error InvalidSwitchboard()
MinOutputNotMet
error MinOutputNotMet()
MofaSignatureInvalid
error MofaSignatureInvalid()
NotDelegate
error NotDelegate()
OnlyNominee
error OnlyNominee()
OnlyOwner
error OnlyOwner()
PromisedAmountNotMet
error PromisedAmountNotMet()
RequestNotProcessed
error RequestNotProcessed()
RequestProcessed
error RequestProcessed()
RouterAlreadyRegistered
error RouterAlreadyRegistered()
RouterAlreadyWhitelisted
error RouterAlreadyWhitelisted()
RouterNotRegistered
error RouterNotRegistered()
SwapOutputInsufficient
error SwapOutputInsufficient()
TransferFailed
error TransferFailed()
WrongAffiliateFeeLength
error WrongAffiliateFeeLength()
creation bytecode
0x60a06040523480156200001157600080fd5b5060405162005610380380620056108339810160408190526200003491620000c9565b818181620000428162000059565b506001600160a01b03166080525062000101915050565b600080546001600160a01b0383166001600160a01b0319918216811783556001805490921690915560405190917ffbe19c9b601f5ee90b44c7390f3fa2319eba01762d34ee372aeafd59b25c7f8791a250565b80516001600160a01b0381168114620000c457600080fd5b919050565b60008060408385031215620000dd57600080fd5b620000e883620000ac565b9150620000f860208401620000ac565b90509250929050565b6080516154e56200012b60003960008181610516015281816121ee01526128bb01526154e56000f3fe60806040526004361061025c5760003560e01c80637373161f11610144578063b746078a116100b6578063ddea5f3a1161007a578063ddea5f3a146107bc578063df2ebdbb146107f4578063e1282c5c1461081c578063e9899ed214610860578063f36ba4d814610880578063f8281486146108a057600080fd5b8063b746078a14610707578063ba672c8b1461071a578063cc6dc63a14610776578063cf376c1d14610796578063d9e9a7be146107a957600080fd5b806380f7013e1161010857806380f7013e1461063b5780638da5cb5b14610673578063967aef08146106915780639ed0cb13146106b1578063a42dce80146106d1578063ae3100c0146106f157600080fd5b80637373161f1461057857806374f8d3fd1461059857806376479d1b146105db578063795d86b8146105fb5780637f660b011461061b57600080fd5b80633af32abf116101dd5780635b94db27116101a15780635b94db27146104945780636a0706db146104b45780636a7372da146104d45780636afdd8501461050457806370b5508914610538578063733957f81461055857600080fd5b80633af32abf146103e85780633bd1adec146104185780633cbc7eaa1461042d5780633cf3c2b6146104545780634c7a77321461046757600080fd5b806312f07c251161022457806312f07c251461032e5780631e789c361461034e57806320798eb71461039757806320f99c0a146103aa57806320ff430b146103c857600080fd5b8063091b8946146102615780630b345879146102835780630c0a0ccb146102c05780630cb352e0146102ee5780630e4bfd6e1461030e575b600080fd5b34801561026d57600080fd5b5061028161027c366004613b49565b6108c0565b005b34801561028f57600080fd5b506004546102a3906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102cc57600080fd5b506102e06102db366004613b7e565b610ccd565b6040519081526020016102b7565b3480156102fa57600080fd5b506005546102a3906001600160a01b031681565b34801561031a57600080fd5b506003546102a3906001600160a01b031681565b34801561033a57600080fd5b506002546102a3906001600160a01b031681565b34801561035a57600080fd5b50610387610369366004613bb1565b6001600160a01b03166000908152600c602052604090205460ff1690565b60405190151581526020016102b7565b6102816103a5366004613bd3565b610cfa565b3480156103b657600080fd5b506001546001600160a01b03166102a3565b3480156103d457600080fd5b506102816103e3366004613bfd565b610e2a565b3480156103f457600080fd5b50610387610403366004613bb1565b600d6020526000908152604090205460ff1681565b34801561042457600080fd5b50610281610e60565b34801561043957600080fd5b50610442600181565b60405160ff90911681526020016102b7565b610281610462366004613c98565b610e96565b34801561047357600080fd5b50610487610482366004613b49565b6110a2565b6040516102b79190613d55565b3480156104a057600080fd5b506102816104af366004613bb1565b61124c565b3480156104c057600080fd5b506102816104cf366004613bb1565b6112c1565b3480156104e057600080fd5b506103876104ef366004613b49565b600f6020526000908152604090205460ff1681565b34801561051057600080fd5b506102a37f000000000000000000000000000000000000000000000000000000000000000081565b34801561054457600080fd5b50610281610553366004613e81565b61130e565b34801561056457600080fd5b50610281610573366004613bb1565b6114f1565b34801561058457600080fd5b50610281610593366004613b49565b61153e565b3480156105a457600080fd5b506102a36105b3366004613bd3565b6001600160a01b039182166000908152600b6020908152604080832093835292905220541690565b3480156105e757600080fd5b506102816105f6366004613bb1565b61156e565b34801561060757600080fd5b50610281610616366004613bb1565b61163c565b34801561062757600080fd5b506006546102a3906001600160a01b031681565b34801561064757600080fd5b506102e0610656366004613b7e565b600e60209081526000928352604080842090915290825290205481565b34801561067f57600080fd5b506000546001600160a01b03166102a3565b34801561069d57600080fd5b506102816106ac366004613bd3565b6116aa565b3480156106bd57600080fd5b506102816106cc366004613eec565b611760565b3480156106dd57600080fd5b506102816106ec366004613bb1565b6117c8565b3480156106fd57600080fd5b506102e060085481565b610281610715366004613f28565b611815565b34801561072657600080fd5b50610759610735366004613b49565b60096020526000908152604090208054600182015460029092015490919060ff1683565b6040805193845260208401929092521515908201526060016102b7565b34801561078257600080fd5b50610281610791366004613bb1565b61184a565b6102816107a4366004613f69565b611897565b6102816107b7366004613f9e565b611afc565b3480156107c857600080fd5b506107dc6107d7366004613b49565b611c6a565b6040516102b79c9b9a99989796959493929190614004565b34801561080057600080fd5b506102a373eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b34801561082857600080fd5b5061083c610837366004613b49565b611d76565b604080518251815260208084015190820152918101511515908201526060016102b7565b34801561086c57600080fd5b5061028161087b366004613bb1565b611dda565b34801561088c57600080fd5b5061028161089b366004613bb1565b611e27565b3480156108ac57600080fd5b506007546102a3906001600160a01b031681565b6000818152600a602081815260408084208151610180810183528154815260018201546001600160a01b0390811694820194909452600282015484169281019290925260038101548084166060840152600160a01b900463ffffffff1660808301526004810154831660a08301526005810154831660c0830152600681015490921660e082015260078201546101008201526008820154610120820152600982015461014082015291810180546101608401919061097d9061408f565b80601f01602080910402602001604051908101604052809291908181526020018280546109a99061408f565b80156109f65780601f106109cb576101008083540402835291602001916109f6565b820191906000526020600020905b8154815290600101906020018083116109d957829003601f168201915b5050509190925250505060408101519091506001600160a01b0316610a2e576040516341abc80160e01b815260040160405180910390fd5b8051421015610a50576040516322d69b5360e11b815260040160405180910390fd5b6020808201516001600160a01b03166000908152600d909152604090205460ff1615610b6c576000610a8c826101000151836101600151611e74565b6006546040848101519051632ad7b7d360e11b8152600481018790526001600160a01b03918216602482015292935016906355af6fa690604401600060405180830381600087803b158015610ae057600080fd5b505af1158015610af4573d6000803e3d6000fd5b5050505081602001516001600160a01b03166362524dd78360a001518385604001516040518463ffffffff1660e01b8152600401610b34939291906140c9565b600060405180830381600087803b158015610b4e57600080fd5b505af1158015610b62573d6000803e3d6000fd5b5050505050610be1565b60075460a08201516101008301516040808501519051632385922d60e01b81526001600160a01b0390941693632385922d93610bae93909290916004016140c9565b600060405180830381600087803b158015610bc857600080fd5b505af1158015610bdc573d6000803e3d6000fd5b505050505b817f5785ffbb8ccb1fbfff4aaf0bf7419c43517c350880dabf3644dfd1d05f1186938260a001518361010001518460400151604051610c22939291906140c9565b60405180910390a26000828152600f60209081526040808320805460ff19166001908117909155600a9283905290832083815590810180546001600160a01b0319908116909155600282018054821690556003820180546001600160c01b0319169055600482018054821690556005820180548216905560068201805490911690556007810183905560088101839055600981018390559190610cc790830182613afb565b50505050565b6001600160a01b038083166000908152600e60209081526040808320938516835292905220545b92915050565b336000908152600e602090815260408083206001600160a01b0386168452909152902054610d29908290614102565b336000908152600e602090815260408083206001600160a01b03871680855292529091209190915573eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed1901610e0a57803414610d8c57604051634eba4d4960e11b815260040160405180910390fd5b6007546040516000916001600160a01b03169061138890849084818181858888f193505050503d8060008114610dde576040519150601f19603f3d011682016040523d82523d6000602084013e610de3565b606091505b5050905080610e05576040516312171d8360e31b815260040160405180910390fd5b505050565b600754610e26906001600160a01b038481169133911684611f0c565b5050565b6000546001600160a01b03163314610e5557604051635fc483c560e01b815260040160405180910390fd5b610e05838284611fa6565b6001546001600160a01b03163314610e8b57604051637c91ccdd60e01b815260040160405180910390fd5b610e9433612058565b565b6000846001600160401b03811115610eb057610eb0614115565b604051908082528060200260200182016040528015610ed9578160200160208202803683370190505b5090506000856001600160401b03811115610ef657610ef6614115565b604051908082528060200260200182016040528015610f1f578160200160208202803683370190505b50905060005b86811015610ff6576000600960008a8a85818110610f4557610f4561412b565b602090810292909201358352508181019290925260409081016000208151606081018352815481526001820154938101939093526002015460ff161515908201819052909150610fa85760405163a4d9007d60e01b815260040160405180910390fd5b8060000151848381518110610fbf57610fbf61412b565b6020026020010181815250508060200151838381518110610fe257610fe261412b565b602090810291909101015250600101610f25565b50600360009054906101000a90046001600160a01b03166001600160a01b0316635813c9c534868660018a8d8d8a8a604051602001611038949392919061417c565b6040516020818303038152906040526040518763ffffffff1660e01b81526004016110679594939291906141e1565b6000604051808303818588803b15801561108057600080fd5b505af1158015611094573d6000803e3d6000fd5b505050505050505050505050565b604080516101808101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082018390526101408201929092526101608101919091526000828152600a60208181526040928390208351610180810185528154815260018201546001600160a01b0390811693820193909352600282015483169481019490945260038101548083166060860152600160a01b900463ffffffff1660808501526004810154821660a08501526005810154821660c0850152600681015490911660e08401526007810154610100840152600881015461012084015260098101546101408401529081018054610160840191906111c39061408f565b80601f01602080910402602001604051908101604052809291908181526020018280546111ef9061408f565b801561123c5780601f106112115761010080835404028352916020019161123c565b820191906000526020600020905b81548152906001019060200180831161121f57829003601f168201915b5050505050815250509050919050565b6000546001600160a01b0316331461127757604051635fc483c560e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2290600090a250565b6000546001600160a01b031633146112ec57604051635fc483c560e01b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b61134f848484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120ab92505050565b60005b838110156114ea5784848281811061136c5761136c61412b565b905060200281019061137e9190614219565b611388908061423a565b610180013585858381811061139f5761139f61412b565b90506020028101906113b19190614219565b60400135108061141957508484828181106113ce576113ce61412b565b90506020028101906113e09190614219565b6113ea908061423a565b6101a001358585838181106114015761140161412b565b90506020028101906114139190614219565b60600135105b156114375760405163308657c360e21b815260040160405180910390fd5b600085858381811061144b5761144b61412b565b905060200281019061145d9190614219565b61146b9060a0810190614251565b905011156114ad576114a88585838181106114885761148861412b565b905060200281019061149a9190614219565b6114a390614619565b6120fe565b6114e2565b6114e28585838181106114c2576114c261412b565b90506020028101906114d49190614219565b6114dd90614619565b612846565b600101611352565b5050505050565b6000546001600160a01b0316331461151c57604051635fc483c560e01b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461156957604051635fc483c560e01b815260040160405180910390fd5b600855565b6000546001600160a01b0316331461159957604051635fc483c560e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d602052604090205460ff16156115d35760405163406c5bd360e01b815260040160405180910390fd5b6001600160a01b0381166000908152600c602052604090205460ff161561160d57604051633ba24ff960e11b815260040160405180910390fd5b6001600160a01b0381166000908152600d60205260409020805460ff1916600117905561163981612d9f565b50565b6000546001600160a01b0316331461166757604051635fc483c560e01b815260040160405180910390fd5b6001600160a01b0381166000908152600c602052604090205460ff16156116a157604051633ba24ff960e11b815260040160405180910390fd5b61163981612d9f565b336000908152600e602090815260408083206001600160a01b03861684529091529020546116d9908290614625565b336000818152600e602090815260408083206001600160a01b038881168552925291829020939093556007549051632385922d60e01b8152921691632385922d9161172a91869186916004016140c9565b600060405180830381600087803b15801561174457600080fd5b505af1158015611758573d6000803e3d6000fd5b505050505050565b6000546001600160a01b0316331461178b57604051635fc483c560e01b815260040160405180910390fd5b6001600160a01b039081166000908152600b60209081526040808320948352939052919091208054919092166001600160a01b0319909116179055565b6000546001600160a01b031633146117f357604051635fc483c560e01b815260040160405180910390fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b0316331461184057604051631bd147a760e01b815260040160405180910390fd5b610e268282612dc3565b6000546001600160a01b0316331461187557604051635fc483c560e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000805b82811015611ada5760008484838181106118b7576118b761412b565b90506020028101906118c99190614638565b6118d29061464e565b905060006118e38260000151612e6c565b60008181526009602052604090206002015490915060ff16156119195760405163234bc0ff60e21b815260040160405180910390fd5b61193f82602001516001600160a01b03166000908152600c602052604090205460ff1690565b61195c576040516315812c6160e11b815260040160405180910390fd5b81515161018001516040830151108061197f57508151516101a001516060830151105b1561199d5760405163308657c360e21b815260040160405180910390fd5b81602001516001600160a01b031663da2de3448360a001518385336040518563ffffffff1660e01b81526004016119d693929190614889565b6000604051808303818588803b1580156119ef57600080fd5b505af1158015611a03573d6000803e3d6000fd5b50505050508160a0015184611a189190614102565b6040805160608082018352858301518252850151602080830191825260018385018181526000888152600984528690209451855592518482015591516002909301805460ff191693151593909317909255915192965083927fd83e4fbd120e768f3bb813ecfa1a2b16c323fa7dfa07db1cd6434b3cbc97bc7592913391611aa1918891016148ba565b60408051601f1981840301815290829052611abd9392916148cd565b60405180910390a250508080611ad2906148fa565b91505061189b565b5080341015610e0557604051637bf261fb60e01b815260040160405180910390fd5b6000611b0f611b0a85614913565b612e6c565b9050611b2160e0850160c08601613bb1565b6001600160a01b0316336001600160a01b031614611b5257604051631db3b85960e01b815260040160405180910390fd5b60008181526009602052604090206002015460ff1615611b855760405163234bc0ff60e21b815260040160405180910390fd5b604080516060810182526000808252602080830182815260018486018181528785526009845286852095518655915190850155516002909301805460ff1916931515939093179092556001600160a01b0388168152600c909152205460ff16611c01576040516315812c6160e11b815260040160405180910390fd5b604051632757107160e11b81526001600160a01b03861690634eae20e290611c319087908790879060040161498d565b600060405180830381600087803b158015611c4b57600080fd5b505af1158015611c5f573d6000803e3d6000fd5b505050505050505050565b600a60208190526000918252604090912080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a01549a8a018054999b6001600160a01b03998a169b988a169a8a89169a600160a01b90990463ffffffff169997891698968716979690951695939492939092909190611cf39061408f565b80601f0160208091040260200160405190810160405280929190818152602001828054611d1f9061408f565b8015611d6c5780601f10611d4157610100808354040283529160200191611d6c565b820191906000526020600020905b815481529060010190602001808311611d4f57829003601f168201915b505050505090508c565b611d9c604051806060016040528060008152602001600081526020016000151581525090565b506000908152600960209081526040918290208251606081018452815481526001820154928101929092526002015460ff1615159181019190915290565b6000546001600160a01b03163314611e0557604051635fc483c560e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611e5257604051635fc483c560e01b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60008060008084511115611f035760008451601a14611ea657604051634115207f60e01b815260040160405180910390fd5b611eb1856014612f55565b9050611ebe856000612fb2565b925065ffffffffffff811615611f0157662386f26fc10000611ee865ffffffffffff831688614b4d565b611ef29190614b64565b9150611efe8287614625565b95505b505b50929392505050565b60006040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b03841660248201528260448201526020600060648360008a5af13d15601f3d11600160005114161716915050806114ea5760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b60448201526064015b60405180910390fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03841601612044576000816001600160a01b03168361138890604051600060405180830381858888f193505050503d806000811461201d576040519150601f19603f3d011682016040523d82523d6000602084013e612022565b606091505b5050905080610cc7576040516312171d8360e31b815260040160405180910390fd5b610e056001600160a01b0384168284613017565b600080546001600160a01b0383166001600160a01b0319918216811783556001805490921690915560405190917ffbe19c9b601f5ee90b44c7390f3fa2319eba01762d34ee372aeafd59b25c7f8791a250565b60006120bf6120ba8486614ba9565b613098565b905060006120cd8284613124565b6002549091506001600160a01b038083169116146114ea57604051633c6ae50160e11b815260040160405180910390fd5b600061210d8260000151613144565b8251602001519091506001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146000816121b7578351602090810151908501516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa15801561218e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b29190614c21565b6121c7565b83602001516001600160a01b0316315b84515161012081015161014082015160608301516040909301519394506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169363137c29fe936122209392916131b4565b8651516101400151600454604080518082018252600080825260209182015281518083019092526001600160a01b0390921681529081019190915287515160800151604051889061227390602001614c3a565b60405160208183030381529060405260405160200161229190614deb565b60408051601f19818403018152908290526122af9291602001614e9a565b60408051601f1981840301815260608301909152602e80835290919061548260208301396040516020016122e4929190614ec9565b6040516020818303038152906040528a60e001516040518763ffffffff1660e01b815260040161231996959493929190614f17565b600060405180830381600087803b15801561233357600080fd5b505af1158015612347573d6000803e3d6000fd5b5050600480548751516101208101516101409091015160c08a015160a08b015160405163017c1d7560e31b81526001600160a01b039095169750630be0eba8965061239a95939492939192909101614fba565b600060405180830381600087803b1580156123b457600080fd5b505af11580156123c8573d6000803e3d6000fd5b5050505060008261245c578451602090810151908601516040516370a0823160e01b81526001600160a01b039182166004820152849291909116906370a0823190602401602060405180830381865afa158015612429573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244d9190614c21565b6124579190614625565b612476565b8185602001516001600160a01b0316316124769190614625565b85516040015190915081101561249f57604051633453a1e760e01b815260040160405180910390fd5b6020808601516001600160a01b03166000908152600d909152604090205460ff166124d6576124d681866000015160200151613216565b6000600854426124e69190614102565b60208088015188518201516001600160a01b039182166000818152600b855260408082208d51518701518352909552849020546006549451633ed33c7f60e01b81529596509094633ed33c7f94612551948994938d938a939183169291909116908f906004016150c3565b600060405180830381600087803b15801561256b57600080fd5b505af115801561257f573d6000803e3d6000fd5b5050505060405180610180016040528082815260200187602001516001600160a01b03168152602001876000015160000151608001516001600160a01b0316815260200187600001516000015160c001516001600160a01b03168152602001876000015160000151610100015163ffffffff1681526020018760000151602001516001600160a01b03168152602001336001600160a01b031681526020018761010001516001600160a01b031681526020018381526020018760400151815260200187606001518152602001876000015160800151815250600a60008781526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060808201518160030160146101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160040160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060c08201518160050160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060e08201518160060160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061010082015181600701556101208201518160080155610140820151816009015561016082015181600a0190816127e09190615151565b50905050847f14a241d5b404d2061ceb9a847972acfd690983f1d8a0fef9779b8191aa1b7ef26001338960405160200161281a9190615210565b60408051601f19818403018152908290526128369392916148cd565b60405180910390a2505050505050565b6020808201516001600160a01b03166000908152600d909152604090205460ff1661288557805151610140810151610120909101516128859190613216565b60006128948260000151613144565b82515161012081015161014082015160608301516040909301519394506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169363137c29fe936128ed9392916131b4565b845151610140015160208087015160408051808201825260008082529084015280518082019091526001600160a01b0390911681529081019190915285515160800151604051869061294190602001614c3a565b60405160208183030381529060405260405160200161295f90614deb565b60408051601f198184030181529082905261297d9291602001614e9a565b60408051601f1981840301815260608301909152602e80835290919061548260208301396040516020016129b2929190614ec9565b6040516020818303038152906040528860e001516040518763ffffffff1660e01b81526004016129e796959493929190614f17565b600060405180830381600087803b158015612a0157600080fd5b505af1158015612a15573d6000803e3d6000fd5b50505050600060085442612a299190614102565b602080850151855151610140810151610120909101516001600160a01b039283166000818152600b865260408082208b51518801518352909652859020546006549551633ed33c7f60e01b81529697509095633ed33c7f95612a9b958a938a9390821692909116908c906004016150c3565b600060405180830381600087803b158015612ab557600080fd5b505af1158015612ac9573d6000803e3d6000fd5b5050505060405180610180016040528082815260200184602001516001600160a01b03168152602001846000015160000151608001516001600160a01b0316815260200184600001516000015160c001516001600160a01b03168152602001846000015160000151610100015163ffffffff16815260200184600001516000015161012001516001600160a01b03168152602001336001600160a01b031681526020018461010001516001600160a01b03168152602001846000015160000151610140015181526020018460400151815260200184606001518152602001846000015160800151815250600a60008481526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060808201518160030160146101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160040160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060c08201518160050160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060e08201518160060160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061010082015181600701556101208201518160080155610140820151816009015561016082015181600a019081612d3c9190615151565b50905050817f14a241d5b404d2061ceb9a847972acfd690983f1d8a0fef9779b8191aa1b7ef260013386604051602001612d769190615210565b60408051601f1981840301815290829052612d929392916148cd565b60405180910390a2505050565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b6000612dcf8284615223565b60e01c905060008080612de58560048189615253565b810190612df291906152e3565b92509250925060005b8351811015612e6357612e5b85858381518110612e1a57612e1a61412b565b6020026020010151858481518110612e3457612e3461412b565b6020026020010151858581518110612e4e57612e4e61412b565b602002602001015161324b565b600101612dfb565b50505050505050565b6000604051602001612e7d90614deb565b604051602081830303815290604052604051602001612e9b90614c3a565b60408051601f1981840301815290829052612eb99291602001614e9a565b60405160208183030381529060405280519060200120612edc836000015161360f565b836020015184604001518560600151866080015180519060200120604051602001612f389695949392919095865260208601949094526001600160a01b039290921660408501526060840152608083015260a082015260c00190565b604051602081830303815290604052805190602001209050919050565b6000612f62826006614102565b83511015612fa95760405162461bcd60e51b8152602060048201526014602482015273746f55696e7434385f6f75744f66426f756e647360601b6044820152606401611f9d565b50016006015190565b6000612fbf826014614102565b835110156130075760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606401611f9d565b500160200151600160601b900490565b600060405163a9059cbb60e01b81526001600160a01b0384166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610cc75760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401611f9d565b60007f0229eabb7e69af818c010d3333cd777014bff2c06ac717d3e0df036a6e9ff570815b835181101561311d57816130e98583815181106130dc576130dc61412b565b60200260200101516136b9565b60408051602081019390935282015260600160408051601f19818403018152919052805160209091012091506001016130bd565b5092915050565b600080613130846138ae565b905061313c81846138e9565b949350505050565b600060405160200161315590614deb565b60405160208183030381529060405260405160200161317390614c3a565b60408051601f19818403018152908290526131919291602001614e9a565b60405160208183030381529060405280519060200120612edc8360000151613968565b6040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a0810182526001600160a01b039590951660608601908152608086019490945292845260208401919091529082015290565b816132213383610ccd565b101561324057604051632e77ac1d60e11b815260040160405180910390fd5b610e263382846139f4565b6000838152600a602081815260408084208151610180810183528154815260018201546001600160a01b0390811694820194909452600282015484169281019290925260038101548084166060840152600160a01b900463ffffffff1660808301526004810154831660a08301526005810154831660c0830152600681015490921660e08201526007820154610100820152600882015461012082015260098201546101408201529181018054610160840191906133089061408f565b80601f01602080910402602001604051908101604052809291908181526020018280546133349061408f565b80156133815780601f1061335657610100808354040283529160200191613381565b820191906000526020600020905b81548152906001019060200180831161336457829003601f168201915b5050509190925250505060408101519091506001600160a01b03166133b9576040516341abc80160e01b815260040160405180910390fd5b8463ffffffff16816080015163ffffffff16146133e95760405163f63c9e4d60e01b815260040160405180910390fd5b828161012001511180613400575081816101400151115b1561341e576040516330be5d5d60e11b815260040160405180910390fd5b6000613434826101000151836101600151611e74565b6020808401516001600160a01b03166000908152600d909152604090205490915060ff161561353c578082610100015111156134c957600654604051630710376f60e11b8152600481018790526001600160a01b0390911690630e206ede90602401600060405180830381600087803b1580156134b057600080fd5b505af11580156134c4573d6000803e3d6000fd5b505050505b81602001516001600160a01b03166362524dd78360a00151838560e001516040518463ffffffff1660e01b8152600401613505939291906140c9565b600060405180830381600087803b15801561351f57600080fd5b505af1158015613533573d6000803e3d6000fd5b50505050613554565b6135548260c001518360a00151846101000151613a56565b6000858152600a6020819052604082208281556001810180546001600160a01b0319908116909155600282018054821690556003820180546001600160c01b03191690556004820180548216905560058201805482169055600682018054909116905560078101839055600881018390556009810183905591906135da90830182613afb565b505060405185907f7eea86cc10df3b8a859a99d48d6858b1128a479f035d0223cf9dd929f37c607990600090a2505050505050565b600060405160200161362090614c3a565b604051602081830303815290604052805190602001208260000151468460400151856060015186608001518760a001518860c001518960e001518a61010001518b61012001518c61014001518d61016001518e61018001518f6101a0015160405160200161369b9e9d9c9b9a999897969594939291906153bf565b60408051601f1981840301815290829052612f38929160200161545b565b6040516b08af0e8e4c2c6e88af0cac6560a31b60208201526f14995c5d595cdd081c995c5d595cdd0b60821b602c8201526e1859191c995cdcc81c9bdd5d195c8b608a1b603c8201527f75696e743235362070726f6d69736564416d6f756e742c000000000000000000604b82015270189e5d195cc81c9bdd5d195c91185d184b607a1b606282015271189e5d195cc81cddd85c14185e5b1bd8590b60721b6073820152721859191c995cdcc81cddd85c149bdd5d195c8b606a1b608582015273189e5d195cc81d5cd95c94da59db985d1d5c994b60621b609882015273616464726573732062656e65666963696172792960601b60ac82015260009060c0016040516020818303038152906040526040516020016137d790614deb565b60408051601f19818403018152908290526137f59291602001614e9a565b604051602081830303815290604052805190602001206138188360000151613144565b836020015184604001518560800151805190602001208660a00151805190602001208760c001518860e0015180519060200120896101000151604051602001612f389998979695949392919098895260208901979097526001600160a01b0395861660408901526060880194909452608087019290925260a0860152821660c085015260e0840152166101008201526101200190565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01612f38565b6000806000806138f885613a87565b6040805160008152602081018083528b905260ff8316918101919091526060810184905260808101839052929550909350915060019060a0016020604051602081039080840390855afa158015613953573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b600060405160200161397990614c3a565b604051602081830303815290604052805190602001204683602001518460400151856060015186608001518760a001518860c001518960e001518a61010001518b61012001518c61014001518d61016001518e61018001518f6101a0015160405160200161369b9e9d9c9b9a999897969594939291906153bf565b6001600160a01b038084166000908152600e6020908152604080832093861683529290522054613a25908290614625565b6001600160a01b039384166000908152600e6020908152604080832095909616825293909352929091209190915550565b6001600160a01b038084166000908152600e6020908152604080832093861683529290522054613a25908290614102565b60008060008351604114613add5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e67746800000000000000006044820152606401611f9d565b50505060208101516040820151606090920151909260009190911a90565b508054613b079061408f565b6000825580601f10613b17575050565b601f01602090049060005260206000209081019061163991905b80821115613b455760008155600101613b31565b5090565b600060208284031215613b5b57600080fd5b5035919050565b80356001600160a01b0381168114613b7957600080fd5b919050565b60008060408385031215613b9157600080fd5b613b9a83613b62565b9150613ba860208401613b62565b90509250929050565b600060208284031215613bc357600080fd5b613bcc82613b62565b9392505050565b60008060408385031215613be657600080fd5b613bef83613b62565b946020939093013593505050565b600080600060608486031215613c1257600080fd5b613c1b84613b62565b9250613c2960208501613b62565b9150604084013590509250925092565b60008083601f840112613c4b57600080fd5b5081356001600160401b03811115613c6257600080fd5b6020830191508360208260051b8501011115613c7d57600080fd5b9250929050565b803563ffffffff81168114613b7957600080fd5b600080600080600060808688031215613cb057600080fd5b85356001600160401b03811115613cc657600080fd5b613cd288828901613c39565b90965094505060208601359250613ceb60408701613c84565b9150613cf960608701613c84565b90509295509295909350565b60005b83811015613d20578181015183820152602001613d08565b50506000910152565b60008151808452613d41816020860160208601613d05565b601f01601f19169290920160200192915050565b602081528151602082015260006020830151613d7c60408401826001600160a01b03169052565b5060408301516001600160a01b03811660608401525060608301516001600160a01b038116608084015250608083015163ffffffff811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100613dff818501836001600160a01b03169052565b84015161012084810191909152840151610140808501919091528401516101608085019190915284015161018080850152905061313c6101a0840182613d29565b60008083601f840112613e5257600080fd5b5081356001600160401b03811115613e6957600080fd5b602083019150836020828501011115613c7d57600080fd5b60008060008060408587031215613e9757600080fd5b84356001600160401b0380821115613eae57600080fd5b613eba88838901613c39565b90965094506020870135915080821115613ed357600080fd5b50613ee087828801613e40565b95989497509550505050565b600080600060608486031215613f0157600080fd5b613f0a84613b62565b925060208401359150613f1f60408501613b62565b90509250925092565b60008060208385031215613f3b57600080fd5b82356001600160401b03811115613f5157600080fd5b613f5d85828601613e40565b90969095509350505050565b60008060208385031215613f7c57600080fd5b82356001600160401b03811115613f9257600080fd5b613f5d85828601613c39565b60008060008060608587031215613fb457600080fd5b613fbd85613b62565b935060208501356001600160401b0380821115613fd957600080fd5b908601906102408289031215613fee57600080fd5b90935060408601359080821115613ed357600080fd5b8c81526001600160a01b038c811660208301528b811660408301528a8116606083015263ffffffff8a16608083015288811660a083015287811660c0830152861660e0820152610100810185905261012081018490526101408101839052610180610160820181905260009061407c83820185613d29565b9f9e505050505050505050505050505050565b600181811c908216806140a357607f821691505b6020821081036140c357634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b0393841681526020810192909252909116604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610cf457610cf46140ec565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b8381101561417157815187529582019590820190600101614155565b509495945050505050565b6060808252810184905260006001600160fb1b0385111561419c57600080fd5b8460051b808760808501378201828103608090810160208501526141c290820186614141565b905082810360408401526141d68185614141565b979650505050505050565b600063ffffffff808816835280871660208401525060ff8516604083015283606083015260a060808301526141d660a0830184613d29565b6000823561011e1983360301811261423057600080fd5b9190910192915050565b6000823561023e1983360301811261423057600080fd5b6000808335601e1984360301811261426857600080fd5b8301803591506001600160401b0382111561428257600080fd5b602001915036819003821315613c7d57600080fd5b60405160a081016001600160401b03811182821017156142b9576142b9614115565b60405290565b6040516101c081016001600160401b03811182821017156142b9576142b9614115565b60405161012081016001600160401b03811182821017156142b9576142b9614115565b60405160c081016001600160401b03811182821017156142b9576142b9614115565b604051601f8201601f191681016001600160401b038111828210171561434f5761434f614115565b604052919050565b600082601f83011261436857600080fd5b81356001600160401b0381111561438157614381614115565b614394601f8201601f1916602001614327565b8181528460208386010111156143a957600080fd5b816020850160208301376000918101602001919091529392505050565b60008183036102408112156143da57600080fd5b6143e2614297565b91506101c0808212156143f457600080fd5b6143fc6142bf565b91508335825260208401356020830152604084013560408301526060840135606083015261442c60808501613b62565b608083015261443d60a08501613b62565b60a083015261444e60c08501613b62565b60c083015261445f60e08501613b62565b60e0830152610100614472818601613c84565b90830152610120614484858201613b62565b9083015261014084810135908301526101606144a1818601613b62565b9083015261018084810135908301526101a080850135908301528183526144c9818501613b62565b602084015250506101e0820135604082015261020082013560608201526102208201356001600160401b0381111561450057600080fd5b61450c84828501614357565b60808301525092915050565b6000610120828403121561452b57600080fd5b6145336142e2565b905081356001600160401b038082111561454c57600080fd5b614558858386016143c6565b835261456660208501613b62565b60208401526040840135604084015260608401356060840152608084013591508082111561459357600080fd5b61459f85838601614357565b608084015260a08401359150808211156145b857600080fd5b6145c485838601614357565b60a08401526145d560c08501613b62565b60c084015260e08401359150808211156145ee57600080fd5b506145fb84828501614357565b60e08301525061010061460f818401613b62565b9082015292915050565b6000610cf43683614518565b81810381811115610cf457610cf46140ec565b6000823560be1983360301811261423057600080fd5b600060c0823603121561466057600080fd5b614668614305565b82356001600160401b038082111561467f57600080fd5b61468b368387016143c6565b835261469960208601613b62565b6020840152604085013560408401526060850135606084015260808501359150808211156146c657600080fd5b506146d336828601614357565b60808301525060a092830135928101929092525090565b6000610240825180518552602081015160208601526040810151604086015260608101516060860152608081015161472d60808701826001600160a01b03169052565b5060a081015161474860a08701826001600160a01b03169052565b5060c081015161476360c08701826001600160a01b03169052565b5060e081015161477e60e08701826001600160a01b03169052565b506101008181015163ffffffff1690860152610120808201516001600160a01b039081169187019190915261014080830151908701526101608083015182169087015261018080830151908701526101a091820151918601919091526020840151166101c085015260408301516101e085015260608301516102008501526080830151610220850182905261481582860182613d29565b95945050505050565b6000815160c0845261483360c08501826146ea565b905060018060a01b0360208401511660208501526040830151604085015260608301516060850152608083015184820360808601526148728282613d29565b91505060a083015160a08501528091505092915050565b8381526060602082015260006148a2606083018561481e565b905060018060a01b0383166040830152949350505050565b602081526000613bcc602083018461481e565b60ff841681526001600160a01b038316602082015260606040820181905260009061481590830184613d29565b60006001820161490c5761490c6140ec565b5060010190565b6000610cf436836143c6565b6000808335601e1984360301811261493657600080fd5b83016020810192503590506001600160401b0381111561495557600080fd5b803603821315613c7d57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152833560408201526020840135606082015260408401356080820152606084013560a082015260006149c460808601613b62565b6001600160a01b031660c08301526149de60a08601613b62565b6001600160a01b031660e08301526149f860c08601613b62565b610100614a0f818501836001600160a01b03169052565b614a1b60e08801613b62565b9150610120614a34818601846001600160a01b03169052565b614a3f828901613c84565b92506101409150614a578286018463ffffffff169052565b614a62818901613b62565b925050610160614a7c818601846001600160a01b03169052565b61018092508188013583860152614a94818901613b62565b9150506101a0614aae818601836001600160a01b03169052565b6101c0915082880135828601526101e09250808801358386015250614ad4818801613b62565b9050610200614aed818601836001600160a01b03169052565b610220915082880135828601526102409250808801358386015250614b148188018861491f565b915082610260860152614b2c61028086018383614964565b925050508281036020840152614b43818587614964565b9695505050505050565b8082028115828204841417610cf457610cf46140ec565b600082614b8157634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160401b03821115614b9f57614b9f614115565b5060051b60200190565b6000614bbc614bb784614b86565b614327565b80848252602080830192508560051b850136811115614bda57600080fd5b855b81811015614c155780356001600160401b03811115614bfb5760008081fd5b614c0736828a01614518565b865250938201938201614bdc565b50919695505050505050565b600060208284031215614c3357600080fd5b5051919050565b6c084c2e6d2c6a4cae2eacae6e85609b1b8152751d5a5b9d0c8d4d881bdc9a59da5b90da185a5b92590b60521b600d8201527f75696e743235362064657374696e6174696f6e436861696e49642c00000000006023820152701d5a5b9d0c8d4d88191958591b1a5b994b607a1b603e8201526d1d5a5b9d0c8d4d881b9bdb98d94b60921b604f8201526e1859191c995cdcc81cd95b99195c8b608a1b605d820152701859191c995cdcc81c9958d95a5d995c8b607a1b606c820152701859191c995cdcc819195b1959d85d194b607a1b607d820152751859191c995cdcc8189d5b99d95951d85d195dd85e4b60521b608e820152741d5a5b9d0ccc881cddda5d18da189bd85c9912590b605a1b60a4820152721859191c995cdcc81a5b9c1d5d151bdad95b8b606a1b60b9820152731d5a5b9d0c8d4d881a5b9c1d5d105b5bdd5b9d0b60621b60cc820152731859191c995cdcc81bdd5d1c1d5d151bdad95b8b60621b60e08201527f75696e74323536206d696e4f7574707574416d6f756e742c75696e743235362060f48201526c72656675656c416d6f756e742960981b61011482015260006101218201610cf4565b670a4cae2eacae6e8560c31b81527510985cda58d4995c5d595cdd0818985cda58d4995c4b60521b60088201527f6164647265737320737761704f7574707574546f6b656e2c0000000000000000601e820152751d5a5b9d0c8d4d881b5a5b94ddd85c13dd5d1c1d5d0b60521b603682015270189e5d195ccccc881b595d1859185d184b607a1b604c82015273627974657320616666696c69617465466565732960601b605d82015260710190565b60008351614eac818460208801613d05565b835190830190614ec0818360208801613d05565b01949350505050565b6f52657175657374207769746e6573732960801b815260008351614ef4816010850160208801613d05565b835190830190614f0b816010840160208801613d05565b01601001949350505050565b6000610140614f3a838a5180516001600160a01b03168252602090810151910152565b6020890151604084015260408901516060840152614f6e608084018980516001600160a01b03168252602090810151910152565b6001600160a01b03871660c084015260e083018690526101008301819052614f9881840186613d29565b9050828103610120840152614fad8185613d29565b9998505050505050505050565b6001600160a01b0385811682526020820185905283166040820152608060608201819052600090614b4390830184613d29565b60006101208251818552615003828601826146ea565b915050602083015161502060208601826001600160a01b03169052565b5060408301516040850152606083015160608501526080830151848203608086015261504c8282613d29565b91505060a083015184820360a08601526150668282613d29565b91505060c083015161508360c08601826001600160a01b03169052565b5060e083015184820360e086015261509b8282613d29565b915050610100808401516150b9828701826001600160a01b03169052565b5090949350505050565b8781526001600160a01b03878116602083015260408201879052606082018690528481166080830152831660a082015260e060c08201819052600090614fad90830184614fed565b601f821115610e0557600081815260208120601f850160051c810160208610156151325750805b601f850160051c820191505b818110156117585782815560010161513e565b81516001600160401b0381111561516a5761516a614115565b61517e81615178845461408f565b8461510b565b602080601f8311600181146151b3576000841561519b5750858301515b600019600386901b1c1916600185901b178555611758565b600085815260208120601f198616915b828110156151e2578886015182559484019460019091019084016151c3565b50858210156152005787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526000613bcc6020830184614fed565b6001600160e01b0319813581811691600485101561524b5780818660040360031b1b83161692505b505092915050565b6000808585111561526357600080fd5b8386111561527057600080fd5b5050820193919092039150565b600082601f83011261528e57600080fd5b8135602061529e614bb783614b86565b82815260059290921b840181019181810190868411156152bd57600080fd5b8286015b848110156152d857803583529183019183016152c1565b509695505050505050565b6000806000606084860312156152f857600080fd5b83356001600160401b038082111561530f57600080fd5b818601915086601f83011261532357600080fd5b81356020615333614bb783614b86565b82815260059290921b8401810191818101908a84111561535257600080fd5b948201945b8386101561537057853582529482019490820190615357565b9750508701359250508082111561538657600080fd5b6153928783880161527d565b935060408601359150808211156153a857600080fd5b506153b58682870161527d565b9150509250925092565b8e8152602081018e9052604081018d9052606081018c90526001600160a01b038b811660808301528a811660a083015289811660c0830152881660e08201526101c0810163ffffffff88166101008301526001600160a01b0387166101208301528561014083015261543d6101608301866001600160a01b03169052565b6101808201939093526101a001529c9b505050505050505050505050565b82815260008251615473816020850160208701613d05565b91909101602001939250505056fe546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e7429a26469706673582212202a2c5de10417afac091e6f0089dc9be5ed9546de94d90595378738c1f138c94264736f6c63430008130033000000000000000000000000a5acba07788f16b4790fcbb09ca3b7fc8dd053a2000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3