0 txs
0 calls
constructor
No constructor.
functions
_APPROVE_PROXY
viewfunction _APPROVE_PROXY() view returns (address)
_WETH
viewfunction _WETH() view returns (address)
_WNATIVE_RELAY
viewfunction _WNATIVE_RELAY() view returns (address)
admin
viewfunction admin() view returns (address)
approveProxy
viewfunction approveProxy() view returns (address)
commissionRateLimit
viewfunction commissionRateLimit() view returns (uint256)
feeRateAndReceiver_UNUSED
viewfunction feeRateAndReceiver_UNUSED() view returns (uint256)
operator_UNUSED
viewfunction operator_UNUSED(address) view returns (address)
orderRemaining_UNUSED
viewfunction orderRemaining_UNUSED(bytes32) view returns (uint256)
owner
viewfunction owner() view returns (address)
priorityAddresses
viewfunction priorityAddresses(address) view returns (bool)
version
viewfunction version() view returns (string)
wNativeRelayer
viewfunction wNativeRelayer() view returns (address)
initialize
nonpayablefunction initialize()
renounceOwnership
nonpayablefunction renounceOwnership()
setPriorityAddress
nonpayablefunction setPriorityAddress(address _priorityAddress, bool valid)
setProtocolAdmin
nonpayablefunction setProtocolAdmin(address _newAdmin)
smartSwapByInvest
payablefunction smartSwapByInvest(tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData, address to) payable returns (uint256 returnAmount)
smartSwapByInvestWithRefund
payablefunction smartSwapByInvestWithRefund(tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData, address to, address refundTo) payable returns (uint256 returnAmount)
smartSwapByOrderId
payablefunction smartSwapByOrderId(uint256 orderId, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData) payable returns (uint256 returnAmount)
smartSwapByOrderIdByXBridge
payablefunction smartSwapByOrderIdByXBridge(uint256 orderId, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData) payable returns (uint256 returnAmount)
smartSwapTo
payablefunction smartSwapTo(uint256 orderId, address receiver, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData) payable returns (uint256 returnAmount)
swapWrap
payablefunction swapWrap(uint256 orderId, uint256 rawdata) payable
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes)
uniswapV3SwapTo
payablefunction uniswapV3SwapTo(uint256 receiver, uint256 amount, uint256 minReturn, uint256[] pools) payable returns (uint256 returnAmount)
uniswapV3SwapToByXBridge
payablefunction uniswapV3SwapToByXBridge(uint256 receiver, uint256 amount, uint256 minReturn, uint256[] pools) payable returns (uint256 returnAmount)
uniswapV3SwapToWithPermit
nonpayablefunction uniswapV3SwapToWithPermit(uint256 receiver, address srcToken, uint256 amount, uint256 minReturn, uint256[] pools, bytes permit) returns (uint256 returnAmount)
unxswapByOrderId
payablefunction unxswapByOrderId(uint256 srcToken, uint256 amount, uint256 minReturn, bytes32[] pools) payable returns (uint256 returnAmount)
unxswapByOrderIdByXBridge
payablefunction unxswapByOrderIdByXBridge(uint256 srcToken, uint256 amount, uint256 minReturn, bytes32[] pools) payable returns (uint256 returnAmount)
unxswapTo
payablefunction unxswapTo(uint256 srcToken, uint256 amount, uint256 minReturn, address receiver, bytes32[] pools) payable returns (uint256 returnAmount)
events
AdminChanged
event AdminChanged(address newAdmin)
CommissionFromTokenRecord
event CommissionFromTokenRecord(address fromTokenAddress, uint256 commissionAmount, address referrerAddress)
CommissionToTokenRecord
event CommissionToTokenRecord(address toTokenAddress, uint256 commissionAmount, address referrerAddress)
Initialized
event Initialized(uint8 version)
OrderRecord
event OrderRecord(address fromToken, address toToken, address sender, uint256 fromAmount, uint256 returnAmount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PriorityAddressChanged
event PriorityAddressChanged(address priorityAddress, bool valid)
SwapOrderId
event SwapOrderId(uint256 id)
errors
SafeTransferFailed
error SafeTransferFailed()
creation bytecode
0x608060405234801561001057600080fd5b50615462806100206000396000f3fe6080604052600436106101dc5760003560e01c80639871efa411610102578063e0af361611610095578063f3dced3c11610064578063f3dced3c1461057c578063f3e144b61461059c578063f851a440146105bc578063fa461e33146105dc57600080fd5b8063e0af361614610501578063e99bfa951461051c578063f1489b9f1461052f578063f2fde38b1461055c57600080fd5b8063d13a35e6116100d1578063d13a35e6146104a5578063d1b260d4146104c5578063d3507df5146104d8578063d8837daf146104ee57600080fd5b80639871efa4146104495780639a09b2851461045c578063b80c2f091461047c578063ca68d8f61461048f57600080fd5b80636aa476451161017a5780638129fc1c116101495780638129fc1c146103c35780638575654f146103d8578063869c6b4b146103eb5780638da5cb5b1461042b57600080fd5b80636aa476451461033e578063715018a61461036657806373679b6b1461037b578063779e45fc146103a357600080fd5b80630d5f0e3b116101b65780630d5f0e3b1461027f57806327f9fa1e1461029257806354fd4d50146102e0578063591b3d081461032b57600080fd5b806301617fab1461023357806303b87e5f1461024657806308298b5a1461026c57600080fd5b3661022e5732330361022c5760405162461bcd60e51b81526020600482015260146024820152731155120819195c1bdcda5d081c995a9958dd195960621b60448201526064015b60405180910390fd5b005b600080fd5b61022c610241366004614419565b6105fc565b6102596102543660046144c3565b610a32565b6040519081526020015b60405180910390f35b61025961027a36600461458f565b610af6565b61025961028d366004614601565b610b38565b34801561029e57600080fd5b506102c86102ad366004614661565b60b4602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610263565b3480156102ec57600080fd5b5061031e60405180604001604052806012815260200171076312e302e312d6265666f72655f73746f760741b81525081565b60405161026391906146ce565b610259610339366004614cb8565b610b78565b34801561034a57600080fd5b506102c873100f3f74125c8c724c7c0ee81e4dd5626830dd9a81565b34801561037257600080fd5b5061022c610df1565b34801561038757600080fd5b506102c87340aa958dd87fc8305b97f2ba922cddca374bcd7f81565b3480156103af57600080fd5b5061022c6103be366004614d7a565b610e05565b3480156103cf57600080fd5b5061022c610ebc565b6102596103e6366004614601565b610fd6565b3480156103f757600080fd5b5061041b610406366004614661565b60996020526000908152604090205460ff1681565b6040519015158152602001610263565b34801561043757600080fd5b506033546001600160a01b03166102c8565b610259610457366004614601565b6110d9565b34801561046857600080fd5b5061022c610477366004614661565b611110565b61025961048a366004614db3565b6111b2565b34801561049b57600080fd5b5061025961012c81565b3480156104b157600080fd5b506098546102c8906001600160a01b031681565b6102596104d3366004614db3565b611230565b3480156104e457600080fd5b5061025960b65481565b6102596104fc366004614601565b6113b7565b34801561050d57600080fd5b506102c86006602160991b0181565b61025961052a366004614e69565b6114b6565b34801561053b57600080fd5b5061025961054a366004614f19565b60b56020526000908152604090205481565b34801561056857600080fd5b5061022c610577366004614661565b6114c6565b34801561058857600080fd5b506097546102c8906001600160a01b031681565b3480156105a857600080fd5b506102596105b7366004614f73565b61153c565b3480156105c857600080fd5b5060ad546102c8906001600160a01b031681565b3480156105e857600080fd5b5061022c6105f7366004614ffd565b61158a565b600160ff1b81166001600160801b0382168061064f5760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b6044820152606401610223565b60006106596117d9565b905060008361067c5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee610685565b6006602160991b015b90506000806106a084843333896001600160801b0316611906565b91509150851561086b5760405163052f523360e11b81526006602160991b0160048201523360248201527340aa958dd87fc8305b97f2ba922cddca374bcd7f60448201526001600160801b038616606482015273100f3f74125c8c724c7c0ee81e4dd5626830dd9a90630a5ea46690608401600060405180830381600087803b15801561072c57600080fd5b505af1158015610740573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b81526001600160801b03881660048201527340aa958dd87fc8305b97f2ba922cddca374bcd7f9250632e1a7d4d9150602401600060405180830381600087803b15801561079957600080fd5b505af11580156107ad573d6000803e3d6000fd5b505050506001600160a01b0382163014610866576000826001600160a01b03164760405160006040518083038185875af1925050503d806000811461080e576040519150601f19603f3d011682016040523d82523d6000602084013e610813565b606091505b50509050806108645760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610223565b505b610952565b83516108c257846001600160801b031634146108c25760405162461bcd60e51b81526020600482015260166024820152751d985b1d59481b9bdd08195c5d585b08185b5bdd5b9d60521b6044820152606401610223565b6006602160991b016001600160a01b031663d0e30db0866001600160801b03166040518263ffffffff1660e01b81526004016000604051808303818588803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b505050506001600160a01b03831630149050610952576109526006602160991b0183876001600160801b0316611c4e565b600061095f853384611c7e565b905060008051602061540d8339815191528960405161098091815260200190565b60405180910390a16000805160206153ed833981519152876109b65773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6109bf565b6006602160991b015b886109d1576006602160991b016109e7565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee5b604080516001600160a01b03938416815292909116602083015232908201526001600160801b03881660608201819052608082015260a00160405180910390a1505050505050505050565b6000876080013542811015610a595760405162461bcd60e51b81526004016102239061504f565b610a6161200b565b6040518b815260008051602061540d8339815191529060200160405180910390a1610adc33808c610a97368e90038e018e615077565b8c8c80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610ad792508d91508e9050615093565b612064565b9150610ae86001606555565b509998505050505050505050565b60405160a087901c815260009060008051602061540d8339815191529060200160405180910390a1610b2d87878733888888612126565b979650505050505050565b60405160a086901c815260009060008051602061540d8339815191529060200160405180910390a1610b6e3387878787876121be565b9695505050505050565b6000866080015142811015610b9f5760405162461bcd60e51b81526004016102239061504f565b610ba761200b565b87516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed198101610c0d5760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b6044820152606401610223565b6001600160a01b038416610c5c5760405162461bcd60e51b8152602060048201526016602482015275726566756e64546f206973206164647265737328302960501b6044820152606401610223565b6001600160a01b038516610ca55760405162461bcd60e51b815260206004820152601060248201526f746f206973206164647265737328302960801b6044820152606401610223565b6000896040015111610cf05760405162461bcd60e51b8152602060048201526014602482015273066726f6d546f6b656e416d6f756e7420697320360641b6044820152606401610223565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610d37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5b91906150a0565b905060005b8951811015610dc2578a60400151828b8381518110610d8157610d816150b9565b6020026020010151610d9391906150e5565b610d9d91906150fc565b8a8281518110610daf57610daf6150b9565b6020908102919091010152600101610d60565b5060408a01819052610dd88a8a8a30898b612346565b93505050610de66001606555565b509695505050505050565b610df9612676565b610e0360006126d0565b565b60ad546001600160a01b0316331480610e2857506033546001600160a01b031633145b610e595760405162461bcd60e51b81526020600482015260026024820152616e6160f01b6044820152606401610223565b6001600160a01b038216600081815260996020908152604091829020805460ff19168515159081179091558251938452908301527fede97de789011d2becb9fba8441864c3b17f4a20f7ebf0a77e93f30adc30e207910160405180910390a15050565b600054610100900460ff1615808015610edc5750600054600160ff909116105b80610ef65750303b158015610ef6575060005460ff166001145b610f595760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610223565b6000805460ff191660011790558015610f7c576000805461ff0019166101001790555b610f84612722565b610f8c612751565b8015610fd3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b50565b3360009081526099602052604081205460ff16151560011461100a5760405162461bcd60e51b81526004016102239061511e565b60405160a087901c815260008051602061540d8339815191529060200160405180910390a1600080336001600160a01b031663534015b36040518163ffffffff1660e01b81526004016040805180830381865afa15801561106f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110939190615145565b90925090506001600160a01b0381166110be5760405162461bcd60e51b815260040161022390615174565b6110cd88888885858a8a612126565b98975050505050505050565b60405160a086901c815260009060008051602061540d8339815191529060200160405180910390a1610b6e86868633338888612126565b60ad546001600160a01b031633148061113357506033546001600160a01b031633145b6111645760405162461bcd60e51b81526020600482015260026024820152616e6160f01b6044820152606401610223565b60ad80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c90602001610fca565b60008760800135428110156111d95760405162461bcd60e51b81526004016102239061504f565b6111e161200b565b6040518a815260008051602061540d8339815191529060200160405180910390a1611217338080610a97368e90038e018e615077565b91506112236001606555565b5098975050505050505050565b60008760800135428110156112575760405162461bcd60e51b81526004016102239061504f565b61125f61200b565b3360009081526099602052604090205460ff1615156001146112935760405162461bcd60e51b81526004016102239061511e565b6040518a815260008051602061540d8339815191529060200160405180910390a1600080336001600160a01b031663534015b36040518163ffffffff1660e01b81526004016040805180830381865afa1580156112f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113189190615145565b90925090506001600160a01b0381166113435760405162461bcd60e51b815260040161022390615174565b6113a98283838e80360381019061135a9190615077565b8e8e80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508d8d90610ad79190615093565b935050506112236001606555565b3360009081526099602052604081205460ff1615156001146113eb5760405162461bcd60e51b81526004016102239061511e565b60405160a087901c815260008051602061540d8339815191529060200160405180910390a1600080336001600160a01b031663534015b36040518163ffffffff1660e01b81526004016040805180830381865afa158015611450573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114749190615145565b90925090506001600160a01b03811661149f5760405162461bcd60e51b815260040161022390615174565b6110cd82826001600160a01b0316898989896121be565b6000610b6e868686868687610b78565b6114ce612676565b6001600160a01b0381166115335760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610223565b610fd3816126d0565b60405160a089901c815260009060008051602061540d8339815191529060200160405180910390a161156f888484612780565b61157d338a898989896121be565b9998505050505050505050565b61162b565b3d6000803e3d6000fd5b67a9059cbb70a0823160c01b815230816008015260206000602483600401855afa6115c6576115c661158f565b60005180156115f15760a4356004830152602482018190526115f16020600060448582885af16115f6565b505050565b806116035761160361158f565b600160005114601f3d11163d15178061162757633c9fd93960e21b60005260046000fd5b5050565b604051601581017306ff0b40e9091053eee51fa1d482ce5d852f523360611b825260206000600484335afa6116625761166261158f565b6020806004808501335afa6116795761167961158f565b60206040600460088501335afa6116925761169261158f565b60008060008813600181146116ae5760205192508791506116b7565b60005192508891505b507fff1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000008452606060002083527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460208401526001600160a01b036055852016925033831461172f57635960139160e11b60005260046000fd5b60843592507306ff0b40e9091053eee51fa1d482ce5d852f523360611b8452308314600181146117a15782601486015283603486015233605486015281607486015261179c60206000608460108901600073100f3f74125c8c724c7c0ee81e4dd5626830dd9a5af16115f6565b6117ce565b3360108601528160308601526117c4602060006044600c89016000885af16115f6565b6117ce8386611599565b505050505050505050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915260405160e081016040525060203603356001600160d01b031981166522220afc2bbb60d01b8114651111057e155560d11b821417651111057e155560d11b8214651e51057e155560d11b83141784526522220afc2bbb60d01b8214653ca20afc2bbb60d01b831417846020015265ffffffffffff60a01b831660a01c84604001526001600160a01b03831684606001526001600160a01b03604036033516846080015260018114600181146118d45760008560a0015260008560c001526118ff565b6060360335935065ffffffffffff60a01b841660a01c8560a001526001600160a01b0384168560c001525b5050505090565b60008086602001511561192b57306119228860800151306128e6565b91509150611c44565b865161193c57508290506000611c44565b61195d565b62461bcd60e51b600052600160e51b6020528060405250806000fd5b604087015160a088015180820161012c81111561199c5761199c605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400611941565b60808a015189811473eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee82148b1516176119eb576119eb605b7c17746f6b656e20616e6420737263206e6f74206d617463680000000000611941565b60608b0151826127100385890204945073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee821460018114611a94576040516084810160405263052f523360e11b81528360048201528b6024820152826044820152866064820152600080608483600073100f3f74125c8c724c7c0ee81e4dd5626830dd9a5af1905080611a8e57611a8e60577304d8db185a5b481d1bdad95b9cc819985a5b1959604a1b611941565b50611acd565b60008060008089865af180611acb57611acb605f7c1b636f6d6d697373696f6e2077697468206574686572206572726f7200611941565b505b50604051606081016040528281528560208201528160408201527f0d3b1268ca3dbb6d3d8a0ea35f44f8f9d58cf578d732680b71b6904fb2733e0d606082a150508215611c385760c08b0151935081612710038388020473eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee821460018114611bbd576040516084810160405263052f523360e11b81528360048201528b6024820152866044820152826064820152600080608483600073100f3f74125c8c724c7c0ee81e4dd5626830dd9a5af1905080611bb757611bb760577304d8db185a5b481d1bdad95b9cc819985a5b1959604a1b611941565b50611bf6565b600080600080858a5af180611bf457611bf4605f7c1b636f6d6d697373696f6e2077697468206574686572206572726f7200611941565b505b50604051606081016040528281528160208201528560408201527f0d3b1268ca3dbb6d3d8a0ea35f44f8f9d58cf578d732680b71b6904fb2733e0d606082a150505b50505050836000915091505b9550959350505050565b611c618363a9059cbb60e01b848461296c565b6115f15760405163fb7f507960e01b815260040160405180910390fd5b60008360200151611c9157506000612004565b604084015160a085015161012c8183011115611ccf57611ccf605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400611941565b608086015160608701516040516060810160405273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee831460018114611ecb57604051604c81016040526fa9059cbba9059cbba9059cbb70a0823160801b8152306010820152602060006024600c8401885afa80611d5d57611d5d6058740519d95d0818985b185b98d953d98819985a5b195960421b611941565b6000518a811015611d8157611d81604d6a029cdd588819985a5b195960921b611941565b8a8103905061271089820204995085600c84015289602c84015260008060446008860160008b5af1915081611dd857611dd8605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00611941565b8685528960208601528560408601526000805160206153cd833981519152606086a18715611e7b5760c08d015161271089830204808c019b5081600886015280602886015260008060446004880160008d5af1935083611e5a57611e5a605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00611941565b888752602087015260408601526000805160206153cd833981519152606086a15b8b600484015289810360248401525060008060448460008a5af1905080611ec457611ec460607c1c7472616e7366657220746f6b656e207265636569766572206661696c611941565b5050611ffd565b87471015611eec57611eec604d6a029cdd588819985a5b195960921b611941565b8747036127108782020497506000806000808b885af180611f2f57611f2f605d7c197472616e73666572206574682072656665726572206661696c000000611941565b8584528860208501528460408501526000805160206153cd833981519152606085a18615611fbf5760c08c015161271083890204998a0199600080808084865af180611f9d57611f9d605d7c197472616e73666572206574682072656665726572206661696c000000611941565b50878652602086015260408501526000805160206153cd833981519152606085a15b6000806000808c86038f5af1905080611ffa57611ffa605e7c1a7472616e7366657220657468207265636569766572206661696c0000611941565b50505b5050505050505b9392505050565b60026065540361205d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610223565b6002606555565b60006001600160a01b0385166120aa5760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610223565b60006120b46117d9565b90506000806120dd836120d189600001516001600160a01b031690565b8c8b8b60400151611906565b90925090508960006120f3898989858f89612346565b90506000612102868c86611c7e565b905061210e818361519c565b9d9c50505050505050505050505050565b6001606555565b60006001600160a01b03841661216c5760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610223565b60006121766117d9565b9050600080612191836001600160a01b038d168a8a8e611906565b9150915060006121af6001600160a01b038d168c8c8a8a8e896129c0565b90506000612102858a85611c7e565b6000806121c96117d9565b9050600034156121ee575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee612313565b60006001600160a01b038686600081811061220b5761220b6150b9565b905060200201351690506000600160ff1b8787600081811061222f5761222f6150b9565b9050602002013516600014905080156122ab57816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a491906151af565b9250612310565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230d91906151af565b92505b50505b60008061232384848d8d8d611906565b9150915060006123378c848c8c8c8c6131d2565b90506000612102868d85611c7e565b604086015160009087906123a75760405162461bcd60e51b815260206004820152602260248201527f526f7574653a2066726f6d546f6b656e416d6f756e74206d757374206265203e604482015261020360f41b6064820152608401610223565b805160208201516001600160a01b03918216916123c59116856136e7565b92506123d08161377b565b15612438576006602160991b016001600160a01b031663d0e30db083604001516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561241b57600080fd5b505af115801561242f573d6000803e3d6000fd5b50505050503095505b6000805b895181101561247457898181518110612457576124576150b9565b60200260200101518261246a91906151cc565b915060010161243c565b5082604001518111156124e75760405162461bcd60e51b815260206004820152603560248201527f526f7574653a206e756d626572206f6620626174636865732073686f756c64206044820152741899480f0f48199c9bdb551bdad95b905b5bdd5b9d605a1b6064820152608401610223565b50865188511461252b5760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610223565b60005b87518110156125945761258c87878761255387602001516001600160a01b031661377b565b8d8681518110612565576125656150b9565b60200260200101518d878151811061257f5761257f6150b9565b602002602001015161379d565b60010161252e565b506125a3826020015185613915565b602082015183906125bd906001600160a01b0316866136e7565b6125c7919061519c565b925081606001518310156126165760405162461bcd60e51b8152602060048201526016602482015275135a5b881c995d1d5c9b881b9bdd081c995858da195960521b6044820152606401610223565b60208083015160408085015181516001600160a01b0380871682529093169383019390935232908201526060810191909152608081018490526000805160206153ed8339815191529060a00160405180910390a150509695505050505050565b6033546001600160a01b03163314610e035760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610223565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166127495760405162461bcd60e51b8152600401610223906151df565b610e03613bcf565b600054610100900460ff166127785760405162461bcd60e51b8152600401610223906151df565b610e03613bff565b80156115f1576000606060e0839003612821576040516001600160a01b038616906127ba9063d505accf60e01b908790879060200161522a565b60408051601f19818403018152908290526127d49161524e565b6000604051808303816000865af19150503d8060008114612811576040519150601f19603f3d011682016040523d82523d6000602084013e612816565b606091505b509092509050612890565b610100839003612852576040516001600160a01b038616906127ba906323f2ebc360e21b908790879060200161522a565b60405162461bcd60e51b81526020600482015260136024820152720aee4dedcce40e0cae4dad2e840d8cadccee8d606b1b6044820152606401610223565b816128df576128c6816040518060400160405280600f81526020016e02832b936b4ba103330b4b632b21d1608d1b815250613c26565b60405162461bcd60e51b815260040161022391906146ce565b5050505050565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee83146001811461296057604051602481016040526370a0823160e01b815283600482015260206000602483885afa905080612955576129556058740519d95d0818985b185b98d953d98819985a5b195960421b611941565b506000519150612965565b823191505b5092915050565b60006040518481528360048201528260248201526020600060448360008a5af191505080156129b8573d80156129ae57600160005114601f3d111691506129b6565b6000863b1191505b505b949350505050565b6000612bf0565b828152600060206000600484600401865afa6129fc576129fc6054700419d95d081d1bdad95b8819985a5b195960621b611941565b505060005192915050565b6770a082310dfe168160c01b815260008060206000600485600401875afa612a4a57612a4a605672049d1bdad95b8c0818d85b1b0819985a5b195960521b611941565b600051915083836004015260206000602485855afa612a8b57612a8b60597c1562616c616e63654f662063616c6c206661696c656400000000000000611941565b60005190509250929050565b6770a08231d21220a760c01b815260008060206000600485600401875afa612a4a57612a4a605672049d1bdad95b8c4818d85b1b0819985a5b195960521b611941565b668b0367c240bc6b60c21b8152600060406000600484600401875afa612b2257612b2260587c1472657365727665732063616c6c206661696c65640000000000000000611941565b600051602051868015612b4e578915612b4657612b3f8786612a97565b8390039650505b909190612b65565b8815612b6557612b5e8786612a07565b8490039650505b50668b0367c240bc6b60c21b8452898502633b9aca009290920282019102049050848015612b9f5781600484015260006024840152612bad565b600060048401528160248401525b50886044830152608060648301526000608483015260008060a4846000885af16110cd576110cd605470041cddd85c0818d85b1b0819985a5b195960621b611941565b846020850281018580612c1757612c17604e6b0b656d70747920706f6f6c7360901b611941565b5060405182358b1560018114612cc1573415612c4d57612c4d60557111696e76616c6964206d73672e76616c756560581b611941565b63052f523360e11b83528c60048401528760248401526001600160a01b03821660448401528b6064840152600080608485600073100f3f74125c8c724c7c0ee81e4dd5626830dd9a5af1612cbc57612cbc6056720498db185a5b481d1bdad95b8819985a5b195960521b611941565b612d80565b60018c341003612ceb57612ceb60557111696e76616c6964206d73672e76616c756560581b611941565b670a9059cbbd0e30db60c41b835260008060048086018f6006602160991b015af1612d3157612d316056720499195c1bdcda5d081155120819985a5b195960521b611941565b6001600160a01b03821683600401528b83602401526020600060448560006006602160991b015af1612d8057612d80605874051d1c985b9cd9995c8815d155120819985a5b195960421b611941565b508a9450602084015b83811015612ddf578035612dd36001600160a01b03821663ffffffff60a01b851660a01c600160fd1b8616600160fc1b8716600160ff1b88166001600160a01b0389168d8b612ada565b96509150602001612d89565b5060009350600160fe1b81168015612f265760009450612e2c3063ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a612ada565b9550672e1a7d4da9059cbb60c01b83527340aa958dd87fc8305b97f2ba922cddca374bcd7f60088401528560288401526020600060448560040160006006602160991b015af1612e9957612e99605874051d1c985b9cd9995c8815d155120819985a5b195960421b611941565b8560048401526020600060248560007340aa958dd87fc8305b97f2ba922cddca374bcd7f5af1612eeb57612eeb60577c13776974686472617720455448206661696c6564000000000000000000611941565b600080600080898b5af1612f2157612f2160577c137472616e7366657220455448206661696c6564000000000000000000611941565b613164565b60009350600160ff1b82168015612fd857600160fc1b831615612fd3576770a082310dfe168160c01b8452602060006004866004016001600160a01b0387165afa612f8c57612f8c605672049d1bdad95b8c0818d85b1b0819985a5b195960521b611941565b600051955087846004015260206000602486895afa612fcd57612fcd60567c15746f6b656e302062616c616e6365206661696c656400000000000000611941565b60005194505b613074565b600160fd1b831615613074576770a08231d21220a760c01b8452602060006004866004016001600160a01b0387165afa61302d5761302d605672049d1bdad95b8c4818d85b1b0819985a5b195960521b611941565b600051955087846004015260206000602486895afa61306e5761306e60597c15746f6b656e312062616c616e6365206661696c656400000000000000611941565b60005194505b506130ac8763ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a612ada565b9550846000106001811461311557600160ff1b831680156130ed576130e66770a082310dfe168160c01b6001600160a01b038616876129c7565b965061310f565b61310c6770a08231d21220a760c01b6001600160a01b038616876129c7565b96505b50613162565b6770a082310dfe168160c01b845287846004015260206000602486895afa61315a5761315a6058740519d95d0818985b185b98d953d98819985a5b195960421b611941565b846000510396505b505b50508884101561319657613196605a7c164d696e2072657475726e206e6f742072656163686564000000000000611941565b8a81528260208201523260408201528960608201528360808201526000805160206153ed83398151915260a082a1505050979650505050505050565b60006135e8565b6000856001600160ff1b0310156131fb57630b3f79fd60e41b60005260046000fd5b604051600160ff1b8616156001600160a01b038716816001811461328f57630251596160e31b845260048401868152600060208201528a604082015273fffd8963efd1fc6a506488495d951d5263988d25606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af1806132835760206000fd5b5060206000803e6132f2565b630251596160e31b845260048401868152600160208201528a60408201526401000276a4606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af1806132ea5760206000fd5b5060208060003e5b505050506000519050600160ff1b811015613318576322323ba760e21b60005260046000fd5b1960010195945050505050565b60018134100361334057631841b4e160e01b60005260046000fd5b600080600080846006602160991b015af1806116275761162760577c1357455448206465706f736974206661696c6564000000000000000000611941565b60405160048101672e1a7d4da9059cbb60c01b82527340aa958dd87fc8305b97f2ba922cddca374bcd7f600482015283602482015260008060448360006006602160991b015af19050806133f4576133f460587c147472616e736665722077657468206661696c65640000000000000000611941565b83600483015260008060248460007340aa958dd87fc8305b97f2ba922cddca374bcd7f5af19050806134485761344860587c1477697468647261772077657468206661696c65640000000000000000611941565b60008060008087875af190508061347957613479605571045cd95b9908195d1a195c8819985a5b1959605a1b611941565b50505050565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b8152600080600483865afa9050806134ce576134ce6055710459d95d081d1bdad95b8c0819985a5b1959605a1b611941565b5060206000803e505060005190565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b81526000806004808401865afa9050806134ce576134ce6054710459d95d081d1bdad95b8c4819985a5b1959605a1b611941565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee803461357a578235600160ff1b8116156001811461356b57613564826134dd565b9350613577565b6135748261347f565b93505b50505b8335600160fd1b166135b7578335600160ff1b811615600181146135a8576135a18261347f565b92506135b4565b6135b1826134dd565b92505b50505b604051826000528160205232604052856080526000805160206153ed83398151915260a06000a16040525050505050565b82601f1960208402820101838061360a576333f3e07b60e11b60005260046000fd5b50886000341180156136235761361f89613325565b309a505b5087606052825b8281101561364d57613640898235848e306131d9565b309b50985060200161362a565b506000600160fd1b83351611806001811461366d57801561368c5761369d565b61367b8a8535858f306131d9565b9550613687868c61337e565b61369d565b61369a8a8535858f8f6131d9565b95505b505050858310156136d0576136d0605a7c164d696e2072657475726e206e6f742072656163686564000000000000611941565b6136db83828461352e565b50509695505050505050565b60006136f28361377b565b1561370857506001600160a01b03811631613775565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa15801561374e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377291906150a0565b90505b92915050565b6001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1490565b60006137cd826000815181106137b5576137b56150b9565b6020026020010151608001516001600160a01b031690565b905060008060008451905060005b81811015613908578015613819576137fe8682815181106137b5576137b56150b9565b94506138136001600160a01b038616306136e7565b9650309a505b3061382560018461519c565b82148015613831575088155b1561383d5750886138d5565b61384860018461519c565b8210801561387e57508661385d8360016151cc565b8151811061386d5761386d6150b9565b602002602001015160200151516001145b156138d0578661388f8360016151cc565b8151811061389f5761389f6150b9565b6020026020010151602001516000815181106138bd576138bd6150b9565b60200260200101519050600194506138d5565b600094505b6138fc8c8c838b8b87815181106138ee576138ee6150b9565b602002602001015189613d89565b508392506001016137db565b5050505050505050505050565b613927826001600160a01b031661377b565b15613b41576040516370a0823160e01b81523060048201526000906006602160991b01906370a0823190602401602060405180830381865afa158015613971573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399591906150a0565b90508015613a875760405163a9059cbb60e01b81527340aa958dd87fc8305b97f2ba922cddca374bcd7f6004820152602481018290526006602160991b019063a9059cbb906044016020604051808303816000875af11580156139fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a20919061526a565b50604051632e1a7d4d60e01b8152600481018290527340aa958dd87fc8305b97f2ba922cddca374bcd7f90632e1a7d4d90602401600060405180830381600087803b158015613a6e57600080fd5b505af1158015613a82573d6000803e3d6000fd5b505050505b6001600160a01b03821630146115f157478015613479576000836001600160a01b03168260405160006040518083038185875af1925050503d8060008114613aeb576040519150601f19603f3d011682016040523d82523d6000602084013e613af0565b606091505b50509050806128df5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610223565b6001600160a01b0381163014611627576040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015613b98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bbc91906150a0565b905080156115f1576115f1838383611c4e565b600054610100900460ff16613bf65760405162461bcd60e51b8152600401610223906151df565b610e03336126d0565b600054610100900460ff1661211f5760405162461bcd60e51b8152600401610223906151df565b60606004835110613d575760208301516001600160e01b0319811662461bcd60e51b148015613c5757506044845110155b15613cf757602484810151808601820180519192909190613c799084906151cc565b613c8391906151cc565b86511015613ccb5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b2103932bb32b93a103932b0b9b7b760591b6044820152606401610223565b8481604051602001613cde929190615287565b6040516020818303038152906040529350505050613775565b6001600160e01b03198116634e487b7160e01b148015613d18575083516024145b15613d5557602484015183613d2c82613f40565b604051602001613d3d9291906152d6565b60405160208183030381529060405292505050613775565b505b81613d6184613f68565b604051602001613d7292919061530b565b604051602081830303815290604052905092915050565b6000805b835151811015613f3657600084604001518281518110613daf57613daf6150b9565b602002602001015160001b9050600080600080613dd689608001516001600160a01b031690565b6001600160a01b0386169450600160ff1b8616935061ffff60a087901c1692509050613e0282886151cc565b895151909750613e149060019061519c565b8603613e7b57612710871115613e7b5760405162461bcd60e51b815260206004820152602660248201527f746f74616c5765696768742063616e206e6f7420657863656564203130303030604482015265081b1a5b5a5d60d21b6064820152608401610223565b87613ed65760008261271014613ea757612710613e98848d6150e5565b613ea291906150fc565b613ea9565b8a5b9050613ed48e8b602001518981518110613ec557613ec56150b9565b6020026020010151848461414f565b505b5050613f208188600001518681518110613ef257613ef26150b9565b60200260200101518b858b606001518981518110613f1257613f126150b9565b60200260200101518f6141ef565b5050508080613f2e9061535c565b915050613d8d565b5050505050505050565b606061377582604051602001613f5891815260200190565b6040516020818303038152906040525b80516060906f181899199a1a9b1b9c1cb0b131b232b360811b90600090613f909060026150e5565b613f9b9060026151cc565b6001600160401b03811115613fb257613fb26146e1565b6040519080825280601f01601f191660200182016040528015613fdc576020820181803683370190505b509050600360fc1b81600081518110613ff757613ff76150b9565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110614026576140266150b9565b60200101906001600160f81b031916908160001a90535060005b84518110156141475782600486838151811061405e5761405e6150b9565b01602001516001600160f81b031916901c60f81c60108110614082576140826150b9565b1a60f81b826140928360026150e5565b61409d9060026151cc565b815181106140ad576140ad6150b9565b60200101906001600160f81b031916908160001a905350828582815181106140d7576140d76150b9565b60209101015160f81c600f16601081106140f3576140f36150b9565b1a60f81b826141038360026150e5565b61410e9060036151cc565b8151811061411e5761411e6150b9565b60200101906001600160f81b031916908160001a9053508061413f8161535c565b915050614040565b509392505050565b306001600160a01b0385160361416f5761416a828483611c4e565b613479565b60405163052f523360e11b81526001600160a01b0380841660048301528086166024830152841660448201526064810182905273100f3f74125c8c724c7c0ee81e4dd5626830dd9a90630a5ea46690608401600060405180830381600087803b1580156141db57600080fd5b505af1158015613f36573d6000803e3d6000fd5b851561430757600080866001600160a01b0316636f7929f260e01b87878760405160240161421f93929190615375565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261426d6001600160a01b038616650f2882bf0b3360d21b6151cc565b60405160200161427e9291906153aa565b60408051601f19818403018152908290526142989161524e565b6000604051808303816000865af19150503d80600081146142d5576040519150601f19603f3d011682016040523d82523d6000602084013e6142da565b606091505b50915091508181906142ff5760405162461bcd60e51b815260040161022391906146ce565b505050614411565b600080866001600160a01b03166330e6ae3160e01b87878760405160240161433193929190615375565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261437f6001600160a01b038616650f2882bf0b3360d21b6151cc565b6040516020016143909291906153aa565b60408051601f19818403018152908290526143aa9161524e565b6000604051808303816000865af19150503d80600081146143e7576040519150601f19603f3d011682016040523d82523d6000602084013e6143ec565b606091505b50915091508181906117ce5760405162461bcd60e51b815260040161022391906146ce565b505050505050565b6000806040838503121561442c57600080fd5b50508035926020909101359150565b6001600160a01b0381168114610fd357600080fd5b803561445b8161443b565b919050565b600060a0828403121561447257600080fd5b50919050565b60008083601f84011261448a57600080fd5b5081356001600160401b038111156144a157600080fd5b6020830191508360208260051b85010111156144bc57600080fd5b9250929050565b60008060008060008060008060006101408a8c0312156144e257600080fd5b8935985060208a01356144f48161443b565b97506145038b60408c01614460565b965060e08a01356001600160401b038082111561451f57600080fd5b61452b8d838e01614478565b90985096506101008c013591508082111561454557600080fd5b6145518d838e01614478565b90965094506101208c013591508082111561456b57600080fd5b506145788c828d01614478565b915080935050809150509295985092959850929598565b60008060008060008060a087890312156145a857600080fd5b86359550602087013594506040870135935060608701356145c88161443b565b925060808701356001600160401b038111156145e357600080fd5b6145ef89828a01614478565b979a9699509497509295939492505050565b60008060008060006080868803121561461957600080fd5b85359450602086013593506040860135925060608601356001600160401b0381111561464457600080fd5b61465088828901614478565b969995985093965092949392505050565b60006020828403121561467357600080fd5b81356120048161443b565b60005b83811015614699578181015183820152602001614681565b50506000910152565b600081518084526146ba81602086016020860161467e565b601f01601f19169290920160200192915050565b60208152600061200460208301846146a2565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715614719576147196146e1565b60405290565b60405161014081016001600160401b0381118282101715614719576147196146e1565b604051601f8201601f191681016001600160401b038111828210171561476a5761476a6146e1565b604052919050565b600060a0828403121561478457600080fd5b61478c6146f7565b90508135815260208201356147a08161443b565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b60006001600160401b038211156147e4576147e46146e1565b5060051b60200190565b600082601f8301126147ff57600080fd5b8135602061481461480f836147cb565b614742565b82815260059290921b8401810191818101908684111561483357600080fd5b8286015b84811015610de65780358352918301918301614837565b600082601f83011261485f57600080fd5b8135602061486f61480f836147cb565b82815260059290921b8401810191818101908684111561488e57600080fd5b8286015b84811015610de65780356148a58161443b565b8352918301918301614892565b600082601f8301126148c357600080fd5b81356001600160401b038111156148dc576148dc6146e1565b6148ef601f8201601f1916602001614742565b81815284602083860101111561490457600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261493257600080fd5b8135602061494261480f836147cb565b82815260059290921b8401810191818101908684111561496157600080fd5b8286015b84811015610de65780356001600160401b038111156149845760008081fd5b6149928986838b01016148b2565b845250918301918301614965565b60006149ae61480f846147cb565b838152905060208101600584901b83018510156149ca57600080fd5b825b8460051b8401811015614b3a576001600160401b0380823511156149ef57600080fd5b8135850187601f820112614a0257600080fd5b614a0f61480f82356147cb565b81358082526020808301929160051b8401018a811115614a2e57600080fd5b602084015b81811015614b23578581351115614a4957600080fd5b8035850160a0818e03601f19011215614a6157600080fd5b614a696146f7565b8760208301351115614a7a57600080fd5b614a8c8e60208085013585010161484e565b81528760408301351115614a9f57600080fd5b614ab28e6020604085013585010161484e565b60208201528760608301351115614ac857600080fd5b614adb8e602060608501358501016147ee565b60408201528760808301351115614af157600080fd5b614b048e60206080850135850101614921565b606082015260a091909101356080820152845260209384019301614a33565b5050855250506020928301929190910190506149cc565b50509392505050565b600082601f830112614b5457600080fd5b612004838335602085016149a0565b8015158114610fd357600080fd5b803561445b81614b63565b600082601f830112614b8d57600080fd5b81356020614b9d61480f836147cb565b82815260059290921b84018101918181019086841115614bbc57600080fd5b8286015b84811015610de65780356001600160401b0380821115614be05760008081fd5b90880190610140828b03601f1901811315614bfb5760008081fd5b614c0361471f565b8784013581526040614c16818601614450565b898301526060614c27818701614450565b8284015260809150614c3a828701614450565b818401525060a0808601358284015260c0915081860135818401525060e080860135828401526101009150818601358184015250610120614c7c818701614b71565b83830152928501359284841115614c9557600091508182fd5b614ca38e8b868901016148b2565b90830152508652505050918301918301614bc0565b6000806000806000806101408789031215614cd257600080fd5b614cdc8888614772565b955060a08701356001600160401b0380821115614cf857600080fd5b614d048a838b016147ee565b965060c0890135915080821115614d1a57600080fd5b614d268a838b01614b43565b955060e0890135915080821115614d3c57600080fd5b50614d4989828a01614b7c565b935050610100870135614d5b8161443b565b9150610120870135614d6c8161443b565b809150509295509295509295565b60008060408385031215614d8d57600080fd5b8235614d988161443b565b91506020830135614da881614b63565b809150509250929050565b600080600080600080600080610120898b031215614dd057600080fd5b88359750614de18a60208b01614460565b965060c08901356001600160401b0380821115614dfd57600080fd5b614e098c838d01614478565b909850965060e08b0135915080821115614e2257600080fd5b614e2e8c838d01614478565b90965094506101008b0135915080821115614e4857600080fd5b50614e558b828c01614478565b999c989b5096995094979396929594505050565b60008060008060006101208688031215614e8257600080fd5b614e8c8787614772565b945060a08601356001600160401b0380821115614ea857600080fd5b614eb489838a016147ee565b955060c0880135915080821115614eca57600080fd5b614ed689838a01614b43565b945060e0880135915080821115614eec57600080fd5b50614ef988828901614b7c565b925050610100860135614f0b8161443b565b809150509295509295909350565b600060208284031215614f2b57600080fd5b5035919050565b60008083601f840112614f4457600080fd5b5081356001600160401b03811115614f5b57600080fd5b6020830191508360208285010111156144bc57600080fd5b60008060008060008060008060c0898b031215614f8f57600080fd5b883597506020890135614fa18161443b565b9650604089013595506060890135945060808901356001600160401b0380821115614fcb57600080fd5b614fd78c838d01614478565b909650945060a08b0135915080821115614ff057600080fd5b50614e558b828c01614f32565b6000806000806060858703121561501357600080fd5b843593506020850135925060408501356001600160401b0381111561503757600080fd5b61504387828801614f32565b95989497509550505050565b6020808252600e908201526d149bdd5d194e88195e1c1a5c995960921b604082015260600190565b600060a0828403121561508957600080fd5b6120048383614772565b60006120043684846149a0565b6000602082840312156150b257600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417613775576137756150cf565b60008261511957634e487b7160e01b600052601260045260246000fd5b500490565b6020808252600d908201526c6f6e6c79207072696f7269747960981b604082015260600190565b6000806040838503121561515857600080fd5b82516151638161443b565b6020840151909250614da88161443b565b6020808252600e908201526d6e6f74206164647265737328302960901b604082015260600190565b81810381811115613775576137756150cf565b6000602082840312156151c157600080fd5b81516120048161443b565b80820180821115613775576137756150cf565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160e01b031984168152818360048301376000910160040190815292915050565b6000825161526081846020870161467e565b9190910192915050565b60006020828403121561527c57600080fd5b815161200481614b63565b6000835161529981846020880161467e565b6508ae4e4dee4560d31b90830190815283516152bc81600684016020880161467e565b602960f81b60069290910191820152600701949350505050565b600083516152e881846020880161467e565b650a0c2dcd2c6560d31b90830190815283516152bc81600684016020880161467e565b6000835161531d81846020880161467e565b670aadcd6dcdeeedc560c31b908301908152835161534281600884016020880161467e565b602960f81b60089290910191820152600901949350505050565b60006001820161536e5761536e6150cf565b5060010190565b6001600160a01b038481168252831660208201526060604082018190526000906153a1908301846146a2565b95945050505050565b600083516153bc81846020880161467e565b919091019182525060200191905056fef171268de859ec269c52bbfac94dcb7715e784de194342abb284bf34fd30b32d1bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576c7724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdba2646970667358221220cf4f96c5c1a2de288dd34909c48ace5d53d21b16a2f6c378a0ea6cdc26974b3d64736f6c63430008110033