1 tx
61.5k calls
constructor
No constructor.
functions
baseGas
viewfunction baseGas() view returns (uint256)
checkHashStatus
viewfunction checkHashStatus(address tokenAddress, uint256 amount, address receiver, bytes depositHash) view returns (bytes32 hashSendTransaction, bool status)
gasFeeAccumulated
viewfunction gasFeeAccumulated(address, address) view returns (uint256)
gasFeeAccumulatedByToken
viewfunction gasFeeAccumulatedByToken(address) view returns (uint256)
getCurrentLiquidity
viewfunction getCurrentLiquidity(address tokenAddress) view returns (uint256 currentLiquidity)
getExecutorManager
viewfunction getExecutorManager() view returns (address)
getRewardAmount
viewfunction getRewardAmount(uint256 amount, address tokenAddress) view returns (uint256 rewardAmount)
getTransferFee
viewfunction getTransferFee(address tokenAddress, uint256 amount) view returns (uint256)
incentivePool
viewfunction incentivePool(address) view returns (uint256)
isPauser
viewfunction isPauser(address pauser) view returns (bool)
isTrustedForwarder
viewfunction isTrustedForwarder(address forwarder) view returns (bool)
liquidityProviders
viewfunction liquidityProviders() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
processedHash
viewfunction processedHash(bytes32) view returns (bool)
swapAdaptorMap
viewfunction swapAdaptorMap(string) view returns (address)
tokenManager
viewfunction tokenManager() view returns (address)
changePauser
nonpayablefunction changePauser(address newPauser)
depositAndSwapErc20
nonpayablefunction depositAndSwapErc20(address tokenAddress, address receiver, uint256 toChainId, uint256 amount, string tag, tuple[] swapRequest)
depositErc20
nonpayablefunction depositErc20(uint256 toChainId, address tokenAddress, address receiver, uint256 amount, string tag)
depositNative
payablefunction depositNative(address receiver, uint256 toChainId, string tag) payable
depositNativeAndSwap
payablefunction depositNativeAndSwap(address receiver, uint256 toChainId, string tag, tuple[] swapRequest) payable
initialize
nonpayablefunction initialize(address _executorManagerAddress, address _pauser, address _trustedForwarder, address _tokenManager, address _liquidityProviders)
pause
nonpayablefunction pause()
permitAndDepositErc20
nonpayablefunction permitAndDepositErc20(address tokenAddress, address receiver, uint256 amount, uint256 toChainId, tuple permitOptions, string tag)
permitEIP2612AndDepositErc20
nonpayablefunction permitEIP2612AndDepositErc20(address tokenAddress, address receiver, uint256 amount, uint256 toChainId, tuple permitOptions, string tag)
renounceOwnership
nonpayablefunction renounceOwnership()
renouncePauser
nonpayablefunction renouncePauser()
sendFundsToUser
nonpayablefunction sendFundsToUser(address tokenAddress, uint256 amount, address receiver, bytes depositHash, uint256 tokenGasPrice, uint256 fromChainId)
sendFundsToUserV2
nonpayablefunction sendFundsToUserV2(address tokenAddress, uint256 amount, address receiver, bytes depositHash, uint256 nativeTokenPriceInTransferredToken, uint256 fromChainId, uint256 tokenGasBaseFee)
setBaseGas
nonpayablefunction setBaseGas(uint128 gas)
setCurrentLiquidity
nonpayablefunction setCurrentLiquidity(address tokenAddress)
setExecutorManager
nonpayablefunction setExecutorManager(address _executorManagerAddress)
setLiquidityProviders
nonpayablefunction setLiquidityProviders(address _liquidityProviders)
setSwapAdaptor
nonpayablefunction setSwapAdaptor(string name, address _swapAdaptor)
setTokenManager
nonpayablefunction setTokenManager(address _tokenManager)
setTrustedForwarder
nonpayablefunction setTrustedForwarder(address trustedForwarder)
swapAndSendFundsToUser
nonpayablefunction swapAndSendFundsToUser(address tokenAddress, uint256 amount, address receiver, bytes depositHash, uint256 nativeTokenPriceInTransferredToken, uint256 tokenGasBaseFee, uint256 fromChainId, uint256 swapGasOverhead, tuple[] swapRequests, string swapAdaptor)
transfer
nonpayablefunction transfer(address _tokenAddress, address receiver, uint256 _tokenAmount)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
withdrawErc20GasFee
nonpayablefunction withdrawErc20GasFee(address tokenAddress)
withdrawNativeGasFee
nonpayablefunction withdrawNativeGasFee()
events
AssetSent
event AssetSent(address indexed asset, uint256 indexed amount, uint256 indexed transferredAmount, address target, bytes depositHash, uint256 fromChainId, uint256 lpFee, uint256 transferFee, uint256 gasFee)
BaseGasUpdated
event BaseGasUpdated(uint256 indexed baseGas)
Deposit
event Deposit(address indexed from, address indexed tokenAddress, address indexed receiver, uint256 toChainId, uint256 amount, uint256 reward, string tag)
DepositAndSwap
event DepositAndSwap(address indexed from, address indexed tokenAddress, address indexed receiver, uint256 toChainId, uint256 amount, uint256 reward, string tag, (address tokenAddress, uint256 percentage, uint256 amount, uint8 operation, bytes path)[] swapRequests)
EthReceived
event EthReceived(address, uint256)
GasFeeCalculated
event GasFeeCalculated(uint256 indexed gasUsed, uint256 indexed gasPrice, uint256 indexed nativeTokenPriceInTransferredToken, uint256 tokenGasBaseFee, uint256 gasFeeInTransferredToken)
GasFeeWithdraw
event GasFeeWithdraw(address indexed tokenAddress, address indexed owner, uint256 indexed amount)
LiquidityProvidersChanged
event LiquidityProvidersChanged(address indexed liquidityProvidersAddress)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PauserChanged
event PauserChanged(address indexed previousPauser, address indexed newPauser)
Received
event Received(address indexed from, uint256 indexed amount)
SwapAdaptorChanged
event SwapAdaptorChanged(string indexed name, address indexed liquidityProvidersAddress)
TokenManagerChanged
event TokenManagerChanged(address indexed tokenManagerAddress)
TrustedForwarderChanged
event TrustedForwarderChanged(address indexed _tf)
Unpaused
event Unpaused(address account)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b50615f4a80620000216000396000f3fe6080604052600436106102605760003560e01c806383f75fa311610144578063ca2ba943116100b6578063ea3684211161007a578063ea36842114610706578063ee58591c14610719578063ef0d457214610739578063f16c2c2514610759578063f2fde38b14610779578063fc42b58f14610799576102a7565b8063ca2ba94314610671578063ccb844e114610691578063da6f6794146106b1578063da742228146106c6578063e06179fe146106e6576102a7565b8063a4479b4811610108578063a4479b48146105bc578063ab1635b7146105dc578063bcc1f5ad146105f1578063beabacc814610611578063bf33e81214610631578063c87e4e2514610651576102a7565b806383f75fa31461052f5780638456cb591461054f57806385a25597146105645780638da5cb5b14610592578063a2419a6b146105a7576102a7565b8063583bbc40116101dd5780636e8ae0a3116101a15780636e8ae0a3146104925780636ef8d66d146104b2578063715018a6146104c7578063760d098a146104dc57806376d2cbb4146104fc5780637cb2b79c1461050f576102a7565b8063583bbc40146103fb57806359ca6c011461041d5780635c975abb1461043d5780636583de671461045257806367924a5614610472576102a7565b8063316182a311610224578063316182a3146103595780633f4ba83a1461037957806346fbf68e1461038e57806355d73595146103bb578063572b6c05146103db576102a7565b80631459457a146102ac5780631dbb76b3146102ce5780631ef6626b146102ee5780632a709b141461030e5780632cd271e714610339576102a7565b366102a7577f85177f287940f2f05425a4029951af0e047a7f9c4eaa9a6e6917bcd869f8669561028e6107b9565b3460405161029d92919061531a565b60405180910390a1005b600080fd5b3480156102b857600080fd5b506102cc6102c73660046148aa565b6107c9565b005b3480156102da57600080fd5b506102cc6102e9366004614c36565b610923565b3480156102fa57600080fd5b506102cc610309366004614b30565b610e0a565b34801561031a57600080fd5b506103236111d4565b60405161033091906151f3565b60405180910390f35b34801561034557600080fd5b506102cc610354366004614856565b6111e3565b34801561036557600080fd5b506102cc610374366004614baf565b611239565b34801561038557600080fd5b506102cc611459565b34801561039a57600080fd5b506103ae6103a9366004614856565b611488565b6040516103309190615391565b3480156103c757600080fd5b506102cc6103d6366004614fda565b61149f565b3480156103e757600080fd5b506103ae6103f6366004614856565b611629565b34801561040757600080fd5b5061041061163d565b6040516103309190615ce2565b34801561042957600080fd5b506102cc610438366004614856565b611643565b34801561044957600080fd5b506103ae6116f2565b34801561045e57600080fd5b506102cc61046d366004614856565b6116fb565b34801561047e57600080fd5b506102cc61048d3660046149fe565b611844565b34801561049e57600080fd5b506104106104ad366004614fb6565b6118f9565b3480156104be57600080fd5b506102cc611a28565b3480156104d357600080fd5b506102cc611abc565b3480156104e857600080fd5b506103ae6104f7366004614e42565b611b05565b6102cc61050a366004614d82565b611b1b565b34801561051b57600080fd5b506102cc61052a366004614856565b611c7c565b34801561053b57600080fd5b506102cc61054a366004614e5a565b611d2b565b34801561055b57600080fd5b506102cc611def565b34801561057057600080fd5b5061058461057f366004614ac0565b611e1c565b60405161033092919061539c565b34801561059e57600080fd5b50610323611e82565b3480156105b357600080fd5b50610323611e91565b3480156105c857600080fd5b506104106105d7366004614856565b611ea0565b3480156105e857600080fd5b50610323611eb3565b3480156105fd57600080fd5b506102cc61060c36600461495a565b611ec2565b34801561061d57600080fd5b506102cc61062c36600461491a565b6120ba565b34801561063d57600080fd5b506102cc61064c3660046149fe565b6122dc565b34801561065d57600080fd5b506102cc61066c366004614856565b612336565b34801561067d57600080fd5b5061041061068c366004614856565b6125ec565b34801561069d57600080fd5b506102cc6106ac366004614f77565b61273e565b3480156106bd57600080fd5b506102cc6127b8565b3480156106d257600080fd5b506102cc6106e1366004614856565b612b3a565b3480156106f257600080fd5b50610410610701366004614856565b612b82565b6102cc610714366004614d29565b612b95565b34801561072557600080fd5b50610323610734366004614eae565b612c6d565b34801561074557600080fd5b506102cc610754366004614856565b612c94565b34801561076557600080fd5b50610410610774366004614872565b612d1b565b34801561078557600080fd5b506102cc610794366004614856565b612d39565b3480156107a557600080fd5b506104106107b4366004614a95565b612da7565b60006107c3612e37565b90505b90565b600054610100900460ff16806107e2575060005460ff16155b6108075760405162461bcd60e51b81526004016107fe90615785565b60405180910390fd5b600054610100900460ff16158015610832576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0386166108585760405162461bcd60e51b81526004016107fe90615ab6565b6001600160a01b03841661087e5760405162461bcd60e51b81526004016107fe9061596b565b6001600160a01b0382166108a45760405162461bcd60e51b81526004016107fe90615cad565b6108ad84612e65565b6108b5612eec565b6108bd612f68565b6108c685612fd8565b60fd80546001600160a01b038089166001600160a01b03199283161790925560fe805486841690831617905560ff80549285169290911691909117905561520860fc55801561091b576000805461ff00191690555b505050505050565b600260015414156109465760405162461bcd60e51b81526004016107fe90615b6e565b600260015560fd546001600160a01b0316630768d65c6109646107b9565b6040518263ffffffff1660e01b815260040161098091906151f3565b60206040518083038186803b15801561099857600080fd5b505afa1580156109ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d09190614e26565b6109ec5760405162461bcd60e51b81526004016107fe906153df565b6109f46116f2565b15610a115760405162461bcd60e51b81526004016107fe90615719565b81610a2e5760405162461bcd60e51b81526004016107fe90615a24565b60006001600160a01b031661010482604051610a4a91906151d7565b908152604051908190036020019020546001600160a01b03161415610a815760405162461bcd60e51b81526004016107fe906155ed565b6000610a928d8d8d8d8d8d8d613096565b90506001600160a01b038d16600080516020615ef58339815191521415610c0857600061010483604051610ac691906151d7565b908152604051908190036020019020546001600160a01b03168260006020020151604051610af3906107c6565b60006040518083038185875af1925050503d8060008114610b30576040519150601f19603f3d011682016040523d82523d6000602084013e610b35565b606091505b5050905080610b565760405162461bcd60e51b81526004016107fe906155ac565b61010483604051610b6791906151d7565b908152604051908190036020019020546001600160a01b03166355a4aafb83600060200201518e88886040518563ffffffff1660e01b8152600401610baf9493929190615d02565b602060405180830381600087803b158015610bc957600080fd5b505af1158015610bdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c019190614f9e565b5050610d8c565b60005a9050610c428e61010485604051610c2291906151d7565b908152604051908190036020019020546001600160a01b03166000613258565b610c7d8e61010485604051610c5791906151d7565b908152604051908190036020019020546001600160a01b03168460006020020151613258565b5a610c889082615e62565b610c929087615e0b565b9550506000610cac8e8a886000610ca76107b9565b613357565b825190915081908390610cc0908390615e62565b9052508082600360200201818151610cd89190615e0b565b9052505060405161010490610cee9084906151d7565b908152604051908190036020019020546001600160a01b0316632180777e8e83600060200201518e88886040518663ffffffff1660e01b8152600401610d38959493929190615333565b602060405180830381600087803b158015610d5257600080fd5b505af1158015610d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8a9190614f9e565b505b80600060200201518c6001600160a01b038f167f6bfd5ee5792d66b151a3fab9f56ee828a0f1c3216d4b752e267cd5590326b15c8e8e8e8c886001602002015189600260200201518a60036020020151604051610def9796959493929190615207565b60405180910390a45050600180555050505050505050505050565b60026001541415610e2d5760405162461bcd60e51b81526004016107fe90615b6e565b600260015560fd546001600160a01b0316630768d65c610e4b6107b9565b6040518263ffffffff1660e01b8152600401610e6791906151f3565b60206040518083038186803b158015610e7f57600080fd5b505afa158015610e93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb79190614e26565b610ed35760405162461bcd60e51b81526004016107fe906153df565b610edb6116f2565b15610ef85760405162461bcd60e51b81526004016107fe90615719565b60005a60fe546040516302502c3560e31b81529192506000916001600160a01b039091169063128161a890610f31908c906004016151f3565b604080518083038186803b158015610f4857600080fd5b505afa158015610f5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f809190614ee0565b905087816000015111158015610f9a575087816020015110155b610fb65760405162461bcd60e51b81526004016107fe906154b2565b6001600160a01b038716610fdc5760405162461bcd60e51b81526004016107fe906157d3565b600080610fec8b8b8b8b8b611e1c565b91509150801561100e5760405162461bcd60e51b81526004016107fe90615ba5565b600082815261010060205260408120805460ff19166001179055611034858d8d8a613445565b60ff549091506001600160a01b031663dd8b99238d83600060200201516040518363ffffffff1660e01b815260040161106e92919061531a565b600060405180830381600087803b15801561108857600080fd5b505af115801561109c573d6000803e3d6000fd5b505050506001600160a01b038c16600080516020615ef583398151915214156111445780516040516000916001600160a01b038d16916110db906107c6565b60006040518083038185875af1925050503d8060008114611118576040519150601f19603f3d011682016040523d82523d6000602084013e61111d565b606091505b505090508061113e5760405162461bcd60e51b81526004016107fe90615a4f565b50611157565b6111578c8b8360005b6020020151613704565b80600060200201518b6001600160a01b038e167f6bfd5ee5792d66b151a3fab9f56ee828a0f1c3216d4b752e267cd5590326b15c8d8d8d8c886001602002015189600260200201518a600360200201516040516111ba9796959493929190615207565b60405180910390a450506001805550505050505050505050565b60fe546001600160a01b031681565b6111ec33611488565b6112085760405162461bcd60e51b81526004016107fe90615c5d565b6112106116f2565b1561122d5760405162461bcd60e51b81526004016107fe90615719565b61123681613723565b50565b6002600154141561125c5760405162461bcd60e51b81526004016107fe90615b6e565b600260015560fd546001600160a01b0316630768d65c61127a6107b9565b6040518263ffffffff1660e01b815260040161129691906151f3565b60206040518083038186803b1580156112ae57600080fd5b505afa1580156112c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e69190614e26565b6113025760405162461bcd60e51b81526004016107fe906153df565b61130a6116f2565b156113275760405162461bcd60e51b81526004016107fe90615719565b600061133889898989898988613096565b90506001600160a01b038916600080516020615ef583398151915214156113de5780516040516000916001600160a01b038a1691611375906107c6565b60006040518083038185875af1925050503d80600081146113b2576040519150601f19603f3d011682016040523d82523d6000602084013e6113b7565b606091505b50509050806113d85760405162461bcd60e51b81526004016107fe90615a4f565b506113eb565b6113eb898883600061114d565b80516020820151604080840151606085015191518c936001600160a01b038f16937f6bfd5ee5792d66b151a3fab9f56ee828a0f1c3216d4b752e267cd5590326b15c93611442938f938f938f938e93909190615207565b60405180910390a450506001805550505050505050565b61146233611488565b61147e5760405162461bcd60e51b81526004016107fe90615c5d565b611486613792565b565b6097546001600160a01b038281169116145b919050565b60fe54604051635d46df5160e11b815286916000916001600160a01b039091169063ba8dbea2906114d49085906004016151f3565b60c06040518083038186803b1580156114ec57600080fd5b505afa158015611500573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115249190615041565b505050915050806115475760405162461bcd60e51b81526004016107fe9061593e565b61154f6116f2565b1561156c5760405162461bcd60e51b81526004016107fe90615719565b6002600154141561158f5760405162461bcd60e51b81526004016107fe90615b6e565b6002600155600061159e6107b9565b905060006115af828b8b8b8b613800565b9050876001600160a01b0316896001600160a01b0316836001600160a01b03167f522e11fa05593b306c8df10d2b0b8e01eec48f9d0a9427a7a93f21ff90d66fb18d858c6115fd9190615e0b565b868c8c604051611611959493929190615d45565b60405180910390a45050600180555050505050505050565b60ca546001600160a01b0390811691161490565b60fc5481565b61164b6107b9565b6001600160a01b031661165c611e82565b6001600160a01b0316146116825760405162461bcd60e51b81526004016107fe906158a6565b6001600160a01b0381166116a85760405162461bcd60e51b81526004016107fe9061547b565b60ff80546001600160a01b0319166001600160a01b0383169081179091556040517f0988d9952b4295aedfb755253e8d1dcebd105e8a5cf7507e419b544da764706690600090a250565b60655460ff1690565b6117036107b9565b6001600160a01b0316611714611e82565b6001600160a01b03161461173a5760405162461bcd60e51b81526004016107fe906158a6565b60006001600160a01b038216600080516020615ef583398151915214156117625750476117e4565b6040516370a0823160e01b815282906001600160a01b038216906370a08231906117909030906004016151f3565b60206040518083038186803b1580156117a857600080fd5b505afa1580156117bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e09190614f9e565b9150505b60ff546040516332550d6960e11b81526001600160a01b03909116906364aa1ad290611816908590859060040161531a565b600060405180830381600087803b15801561183057600080fd5b505af115801561091b573d6000803e3d6000fd5b866001600160a01b0316638fcbaf0c61185b6107b9565b308635602088013561187360608a0160408b01614e0a565b61188360808b0160608c01615094565b8a608001358b60a001356040518963ffffffff1660e01b81526004016118b0989796959493929190615290565b600060405180830381600087803b1580156118ca57600080fd5b505af11580156118de573d6000803e3d6000fd5b505050506118f084888888868661149f565b50505050505050565b600080611905836125ec565b60ff54604051630b3524e360e41b81529192506000916001600160a01b039091169063b3524e309061193b9087906004016151f3565b60206040518083038186803b15801561195357600080fd5b505afa158015611967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198b9190614f9e565b905080821015611a205760006119a18383615e62565b90508086106119cb576001600160a01b038516600090815261010360205260409020549350611a1e565b6001600160a01b0385166000908152610103602052604090205481906119f19088615e43565b611a00906402540be400615e43565b611a0a9190615e23565b9350611a1b6402540be40085615e23565b93505b505b505092915050565b611a3133611488565b611a4d5760405162461bcd60e51b81526004016107fe90615c5d565b611a556116f2565b15611a725760405162461bcd60e51b81526004016107fe90615719565b6097546040516000916001600160a01b0316907f95bb211a5a393c4d30c3edc9a745825fba4e6ad3e3bb949e6bf8ccdfe431a811908390a3609780546001600160a01b0319169055565b611ac46107b9565b6001600160a01b0316611ad5611e82565b6001600160a01b031614611afb5760405162461bcd60e51b81526004016107fe906158a6565b6114866000613a23565b6101006020526000908152604090205460ff1681565b611b236116f2565b15611b405760405162461bcd60e51b81526004016107fe90615719565b60026001541415611b635760405162461bcd60e51b81526004016107fe90615b6e565b6002600155600081815b81811015611bb857848482818110611b9557634e487b7160e01b600052603260045260246000fd5b9050602002810190611ba79190615db2565b602001359290920191600101611b6d565b50611bcb90506402540be4006064615e43565b811115611bea5760405162461bcd60e51b81526004016107fe906159a2565b6000611bf68888613a75565b90506001600160a01b038816600080516020615ef5833981519152611c196107b9565b6001600160a01b03167fe0c1647854700a22165488c301138e1e29036e60ec14c1e78653b1e0c918f8748a611c4e8634615e0b565b868c8c8c8c604051611c669796959493929190615d6b565b60405180910390a4505060018055505050505050565b611c846107b9565b6001600160a01b0316611c95611e82565b6001600160a01b031614611cbb5760405162461bcd60e51b81526004016107fe906158a6565b6001600160a01b038116611ce15760405162461bcd60e51b81526004016107fe90615bd0565b60fe80546001600160a01b0319166001600160a01b0383169081179091556040517f331ea0c3b6547bb3d7c5798698a5f25c7b9f5484af90723a847eba9e885a3d7f90600090a250565b611d336107b9565b6001600160a01b0316611d44611e82565b6001600160a01b031614611d6a5760405162461bcd60e51b81526004016107fe906158a6565b806101048484604051611d7e9291906151c7565b90815260405190819003602001812080546001600160a01b039384166001600160a01b031990911617905590821690611dba90859085906151c7565b604051908190038120907f32987e7b04c960bad9e4a93936f2b82bd108cf13934d9eef41bc48453664e7ea90600090a3505050565b611df833611488565b611e145760405162461bcd60e51b81526004016107fe90615c5d565b611486613d41565b6000808686868686604051611e329291906151c7565b604051908190038120611e4a94939291602001615367565b60408051601f1981840301815291815281516020928301206000818152610100909352912054909860ff909116975095505050505050565b6098546001600160a01b031690565b60ff546001600160a01b031681565b6101036020526000908152604090205481565b60fd546001600160a01b031690565b60fe54604051635d46df5160e11b815289916000916001600160a01b039091169063ba8dbea290611ef79085906004016151f3565b60c06040518083038186803b158015611f0f57600080fd5b505afa158015611f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f479190615041565b50505091505080611f6a5760405162461bcd60e51b81526004016107fe9061593e565b611f726116f2565b15611f8f5760405162461bcd60e51b81526004016107fe90615719565b60026001541415611fb25760405162461bcd60e51b81526004016107fe90615b6e565b6002600155600083815b8181101561200757868682818110611fe457634e487b7160e01b600052603260045260246000fd5b9050602002810190611ff69190615db2565b602001359290920191600101611fbc565b5061201a90506402540be4006064615e43565b8111156120395760405162461bcd60e51b81526004016107fe906159a2565b60006120436107b9565b90506000612054828c8f8f8e613800565b90508b6001600160a01b03168d6001600160a01b0316836001600160a01b03167fe0c1647854700a22165488c301138e1e29036e60ec14c1e78653b1e0c918f8748e858f6120a29190615e0b565b868f8f8f8f604051610def9796959493929190615d6b565b6120c26116f2565b156120df5760405162461bcd60e51b81526004016107fe90615719565b60ff546001600160a01b03166120f36107b9565b6001600160a01b0316146121195760405162461bcd60e51b81526004016107fe90615743565b6002600154141561213c5760405162461bcd60e51b81526004016107fe90615b6e565b60026001556001600160a01b0382166121675760405162461bcd60e51b81526004016107fe906156ef565b6001600160a01b038316600080516020615ef5833981519152141561222857804710156121a65760405162461bcd60e51b81526004016107fe90615aed565b6000826001600160a01b0316826040516121bf906107c6565b60006040518083038185875af1925050503d80600081146121fc576040519150601f19603f3d011682016040523d82523d6000602084013e612201565b606091505b50509050806122225760405162461bcd60e51b81526004016107fe906154e7565b506122d3565b6040516370a0823160e01b8152839082906001600160a01b038316906370a08231906122589030906004016151f3565b60206040518083038186803b15801561227057600080fd5b505afa158015612284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a89190614f9e565b10156122c65760405162461bcd60e51b81526004016107fe90615aed565b6122d1818484613704565b505b50506001805550565b866001600160a01b031663d505accf6122f36107b9565b3088602088013561230a60808a0160608b01615094565b89608001358a60a001356040518863ffffffff1660e01b81526004016118b097969594939291906152d9565b60fd546001600160a01b0316630768d65c61234f6107b9565b6040518263ffffffff1660e01b815260040161236b91906151f3565b60206040518083038186803b15801561238357600080fd5b505afa158015612397573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123bb9190614e26565b6123d75760405162461bcd60e51b81526004016107fe906153df565b6123df6116f2565b156123fc5760405162461bcd60e51b81526004016107fe90615719565b6002600154141561241f5760405162461bcd60e51b81526004016107fe90615b6e565b60026001556001600160a01b038116600080516020615ef5833981519152141561245b5760405162461bcd60e51b81526004016107fe90615801565b6001600160a01b0381166000908152610102602052604081208161247d6107b9565b6001600160a01b031681526020810191909152604001600020549050806124b65760405162461bcd60e51b81526004016107fe9061561d565b6001600160a01b038216600090815261010160205260409020546124db908290615e62565b6001600160a01b0383166000908152610101602090815260408083209390935561010290529081208161250c6107b9565b6001600160a01b03168152602081019190915260400160002055612538826125326107b9565b83613704565b60ff5460405163dd8b992360e01b81526001600160a01b039091169063dd8b99239061256a908590859060040161531a565b600060405180830381600087803b15801561258457600080fd5b505af1158015612598573d6000803e3d6000fd5b50505050806125a56107b9565b6001600160a01b0316836001600160a01b03167fc129cf8730ce23dfea8953a499f9b276ad5777855ff41fafe198ebc2a0d2324360405160405180910390a4505060018055565b60ff5460405163ca2ba94360e01b815260009182916001600160a01b039091169063ca2ba943906126219086906004016151f3565b60206040518083038186803b15801561263957600080fd5b505afa15801561264d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126719190614f9e565b6001600160a01b0380851660009081526101036020908152604080832054610101909252918290205460ff5492516368da78c960e11b815294955090939092919091169063d1b4f192906126c99088906004016151f3565b60206040518083038186803b1580156126e157600080fd5b505afa1580156126f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127199190614f9e565b6127239084615e62565b61272d9190615e62565b6127379190615e62565b9392505050565b6127466107b9565b6001600160a01b0316612757611e82565b6001600160a01b03161461277d5760405162461bcd60e51b81526004016107fe906158a6565b6001600160801b03811660fc8190556040517f1f7e24d1f8ac9b596a34502db87778da821b5ac198a6738cfb24ab379b969bfe90600090a250565b60fd546001600160a01b0316630768d65c6127d16107b9565b6040518263ffffffff1660e01b81526004016127ed91906151f3565b60206040518083038186803b15801561280557600080fd5b505afa158015612819573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283d9190614e26565b6128595760405162461bcd60e51b81526004016107fe906153df565b6128616116f2565b1561287e5760405162461bcd60e51b81526004016107fe90615719565b600260015414156128a15760405162461bcd60e51b81526004016107fe90615b6e565b6002600155600080516020615ef583398151915260009081526101026020527f8c843e863d6980427013005c2fd6c559f82753ab35a5ed8f9caaa5df7d58739d816128ea6107b9565b6001600160a01b031681526020810191909152604001600020549050806129235760405162461bcd60e51b81526004016107fe9061561d565b600080516020615ef58339815191526000526101016020527ffc69fe689a10849a4c810115708945edcdce02b4ce0b8911d1cf85d0b30251d554612968908290615e62565b600080516020615ef583398151915260009081527ffc69fe689a10849a4c810115708945edcdce02b4ce0b8911d1cf85d0b30251d5919091556101026020527f8c843e863d6980427013005c2fd6c559f82753ab35a5ed8f9caaa5df7d58739d816129d16107b9565b6001600160a01b03166001600160a01b031681526020019081526020016000208190555060006129ff6107b9565b6001600160a01b031682604051612a15906107c6565b60006040518083038185875af1925050503d8060008114612a52576040519150601f19603f3d011682016040523d82523d6000602084013e612a57565b606091505b5050905080612a785760405162461bcd60e51b81526004016107fe90615a4f565b60ff5460405163dd8b992360e01b81526001600160a01b039091169063dd8b992390612ab890600080516020615ef583398151915290869060040161531a565b600060405180830381600087803b158015612ad257600080fd5b505af1158015612ae6573d6000803e3d6000fd5b5050505081612af36107b9565b6001600160a01b0316306001600160a01b03167fc129cf8730ce23dfea8953a499f9b276ad5777855ff41fafe198ebc2a0d2324360405160405180910390a4505060018055565b612b426107b9565b6001600160a01b0316612b53611e82565b6001600160a01b031614612b795760405162461bcd60e51b81526004016107fe906158a6565b61123681613d9c565b6101016020526000908152604090205481565b612b9d6116f2565b15612bba5760405162461bcd60e51b81526004016107fe90615719565b60026001541415612bdd5760405162461bcd60e51b81526004016107fe90615b6e565b60026001556000612bee8585613a75565b90506001600160a01b038516600080516020615ef5833981519152612c116107b9565b6001600160a01b03167f522e11fa05593b306c8df10d2b0b8e01eec48f9d0a9427a7a93f21ff90d66fb187612c468634615e0b565b868989604051612c5a959493929190615d45565b60405180910390a4505060018055505050565b8051602081830181018051610104825292820191909301209152546001600160a01b031681565b612c9c6107b9565b6001600160a01b0316612cad611e82565b6001600160a01b031614612cd35760405162461bcd60e51b81526004016107fe906158a6565b6001600160a01b038116612cf95760405162461bcd60e51b81526004016107fe90615416565b60fd80546001600160a01b0319166001600160a01b0392909216919091179055565b61010260209081526000928352604080842090915290825290205481565b612d416107b9565b6001600160a01b0316612d52611e82565b6001600160a01b031614612d785760405162461bcd60e51b81526004016107fe906158a6565b6001600160a01b038116612d9e5760405162461bcd60e51b81526004016107fe90615566565b61123681613a23565b60fe54604051633e978aaf60e21b815260009161273791859185916001600160a01b039091169063fa5e2abc90612de29085906004016151f3565b60c06040518083038186803b158015612dfa57600080fd5b505afa158015612e0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e329190614efb565b613e0c565b6000612e4233611629565b15612e56575060131936013560601c6107c6565b612e5e613fea565b90506107c6565b600054610100900460ff1680612e7e575060005460ff16155b612e9a5760405162461bcd60e51b81526004016107fe90615785565b600054610100900460ff16158015612ec5576000805460ff1961ff0019909116610100171660011790555b612ecd613fee565b612ed682614061565b8015612ee8576000805461ff00191690555b5050565b600054610100900460ff1680612f05575060005460ff16155b612f215760405162461bcd60e51b81526004016107fe90615785565b600054610100900460ff16158015612f4c576000805460ff1961ff0019909116610100171660011790555b612f546140f1565b8015611236576000805461ff001916905550565b600054610100900460ff1680612f81575060005460ff16155b612f9d5760405162461bcd60e51b81526004016107fe90615785565b600054610100900460ff16158015612fc8576000805460ff1961ff0019909116610100171660011790555b612fd0613fee565b612f54614169565b600054610100900460ff1680612ff1575060005460ff16155b61300d5760405162461bcd60e51b81526004016107fe90615785565b600054610100900460ff16158015613038576000805460ff1961ff0019909116610100171660011790555b6001600160a01b03821661305e5760405162461bcd60e51b81526004016107fe906158db565b6130666141d9565b609780546001600160a01b0319166001600160a01b0384161790558015612ee8576000805461ff00191690555050565b61309e6146d9565b60005a60fe546040516302502c3560e31b81529192506000916001600160a01b039091169063128161a8906130d7908d906004016151f3565b604080518083038186803b1580156130ee57600080fd5b505afa158015613102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131269190614ee0565b905088816000015111158015613140575088816020015110155b61315c5760405162461bcd60e51b81526004016107fe906154b2565b6001600160a01b0388166131825760405162461bcd60e51b81526004016107fe906157d3565b6000806131928c8c8c8c8c611e1c565b9150915080156131b45760405162461bcd60e51b81526004016107fe90615ba5565b600082815261010060205260408120805460ff191660011790556131db858e8e8b8b614249565b60ff549091506001600160a01b031663dd8b99238e83600060200201516040518363ffffffff1660e01b815260040161321592919061531a565b600060405180830381600087803b15801561322f57600080fd5b505af1158015613243573d6000803e3d6000fd5b50929f9e505050505050505050505050505050565b8015806132e05750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e9061328e9030908690600401615252565b60206040518083038186803b1580156132a657600080fd5b505afa1580156132ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132de9190614f9e565b155b6132fc5760405162461bcd60e51b81526004016107fe90615c07565b6133528363095ea7b360e01b848460405160240161331b92919061531a565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261449a565b505050565b600080836b204fce5e3e250261100000003a6133738989615e43565b61337d9190615e43565b6133879190615e23565b6133919190615e0b565b9050853a867f9b36696d0f99bcef3d9db526d18d2e13abee9741727d7d21128c6079d985c2e187856040516133c7929190615d37565b60405180910390a46001600160a01b03871660009081526101016020526040812080548392906133f8908490615e0b565b90915550506001600160a01b0380881660009081526101026020908152604080832093871683529290529081208054839290613435908490615e0b565b9091555090979650505050505050565b61344d6146d9565b60fe54604051633e978aaf60e21b81526000916001600160a01b03169063fa5e2abc9061347e9088906004016151f3565b60c06040518083038186803b15801561349657600080fd5b505afa1580156134aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134ce9190614efb565b905060006134dd868684613e0c565b905060008260400151821115613562576402540be4008360400151876135039190615e43565b61350d9190615e23565b90506402540be4008360400151830387028161353957634e487b7160e01b600052601260045260246000fd5b6001600160a01b038916600090815261010360205260409020805492909104909101905561357f565b6402540be4006135728388615e43565b61357c9190615e23565b90505b60006402540be4006135918489615e43565b61359b9190615e23565b60ff54604051634993584560e11b81529192506001600160a01b031690639326b08a906135ce908b90869060040161531a565b600060405180830381600087803b1580156135e857600080fd5b505af11580156135fc573d6000803e3d6000fd5b5050505060005a60fc548651613612908d615e0b565b61361c9190615e0b565b6136269190615e62565b905060006136348883615e43565b6001600160a01b038b1660009081526101016020526040812080549293508392909190613662908490615e0b565b90915550506001600160a01b038a16600090815261010260205260408120829161368a6107b9565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546136b99190615e0b565b90915550600090506136cb8285615e0b565b6136d5908b615e62565b604080516080810182529182526020820196909652948501939093526060840152509098975050505050505050565b6133528363a9059cbb60e01b848460405160240161331b92919061531a565b6001600160a01b03811661373657600080fd5b6097546040516001600160a01b038084169216907f95bb211a5a393c4d30c3edc9a745825fba4e6ad3e3bb949e6bf8ccdfe431a81190600090a3609780546001600160a01b0319166001600160a01b0392909216919091179055565b61379a6116f2565b6137b65760405162461bcd60e51b81526004016107fe9061544d565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6137e96107b9565b6040516137f691906151f3565b60405180910390a1565b6000468514156138225760405162461bcd60e51b81526004016107fe906159d7565b6001600160a01b038416600080516020615ef583398151915214156138595760405162461bcd60e51b81526004016107fe906156c7565b60fe5460405163c0e4d62760e01b81526000916001600160a01b03169063c0e4d6279061388c9089908990600401615ceb565b604080518083038186803b1580156138a357600080fd5b505afa1580156138b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138db9190614ee0565b9050828160000151111580156138f5575082816020015110155b6139115760405162461bcd60e51b81526004016107fe9061586f565b6001600160a01b0384166139375760405162461bcd60e51b81526004016107fe90615838565b826139545760405162461bcd60e51b81526004016107fe90615912565b600061396084876118f9565b905080156139a8576001600160a01b0386166000908152610103602052604090205461398d908290615e62565b6001600160a01b038716600090815261010360205260409020555b60ff546040516353403fb560e01b81526001600160a01b03909116906353403fb5906139da908990889060040161531a565b600060405180830381600087803b1580156139f457600080fd5b505af1158015613a08573d6000803e3d6000fd5b50505050613a1886893087614529565b979650505050505050565b609880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600046821415613a975760405162461bcd60e51b81526004016107fe906159d7565b60fe5460405163c0e4d62760e01b815234916001600160a01b03169063c0e4d62790613ad7908690600080516020615ef583398151915290600401615ceb565b604080518083038186803b158015613aee57600080fd5b505afa158015613b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b269190614ee0565b5111801590613bc6575060fe5460405163c0e4d62760e01b815234916001600160a01b03169063c0e4d62790613b70908690600080516020615ef583398151915290600401615ceb565b604080518083038186803b158015613b8757600080fd5b505afa158015613b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bbf9190614ee0565b6020015110155b613be25760405162461bcd60e51b81526004016107fe9061586f565b6001600160a01b038316613c085760405162461bcd60e51b81526004016107fe90615838565b34613c255760405162461bcd60e51b81526004016107fe90615912565b6000613c3f34600080516020615ef58339815191526118f9565b90508015613cc757600080516020615ef58339815191526000526101036020527f56826d040b5c8f3e11711a6f0a85f75994bf6271dc9e6c62c9d3cf2fa418e86054613c8c908290615e62565b600080516020615ef58339815191526000526101036020527f56826d040b5c8f3e11711a6f0a85f75994bf6271dc9e6c62c9d3cf2fa418e860555b60ff546040516353403fb560e01b81526001600160a01b03909116906353403fb590613d0790600080516020615ef583398151915290349060040161531a565b600060405180830381600087803b158015613d2157600080fd5b505af1158015613d35573d6000803e3d6000fd5b50929695505050505050565b613d496116f2565b15613d665760405162461bcd60e51b81526004016107fe90615719565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586137e96107b9565b6001600160a01b038116613dc25760405162461bcd60e51b81526004016107fe9061564a565b60ca80546001600160a01b0319166001600160a01b0383169081179091556040517f871264f4293af7d2865ae7eae628b228f4991c57cb45b39c99f0b774ebe2901890600090a250565b600080613e18856125ec565b60ff54604051630b3524e360e41b81529192506000916001600160a01b039091169063b3524e3090613e4e9089906004016151f3565b60206040518083038186803b158015613e6657600080fd5b505afa158015613e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e9e9190614f9e565b90506000613eac8684615e62565b905081811115613f405760fe54604051630af7c68d60e31b81526001600160a01b03909116906357be346890613ee6908a906004016151f3565b60206040518083038186803b158015613efe57600080fd5b505afa158015613f12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f369190614f9e565b9350505050612737565b6000856060015186604001518485613f589190615e43565b613f629190615e43565b613f6c9190615e43565b90506000828388604001518960600151613f869190615e62565b613f909190615e43565b613f9a9190615e43565b84858960400151613fab9190615e43565b613fb59190615e43565b613fbf9190615e0b565b9050600081613fd057506000613fdd565b613fda8284615e23565b90505b9998505050505050505050565b3390565b600054610100900460ff1680614007575060005460ff16155b6140235760405162461bcd60e51b81526004016107fe90615785565b600054610100900460ff16158015612f54576000805460ff1961ff0019909116610100171660011790558015611236576000805461ff001916905550565b600054610100900460ff168061407a575060005460ff16155b6140965760405162461bcd60e51b81526004016107fe90615785565b600054610100900460ff161580156140c1576000805460ff1961ff0019909116610100171660011790555b60ca80546001600160a01b0319166001600160a01b0384161790558015612ee8576000805461ff00191690555050565b600054610100900460ff168061410a575060005460ff16155b6141265760405162461bcd60e51b81526004016107fe90615785565b600054610100900460ff16158015614151576000805460ff1961ff0019909116610100171660011790555b600180558015611236576000805461ff001916905550565b600054610100900460ff1680614182575060005460ff16155b61419e5760405162461bcd60e51b81526004016107fe90615785565b600054610100900460ff161580156141c9576000805460ff1961ff0019909116610100171660011790555b612f546141d46107b9565b613a23565b600054610100900460ff16806141f2575060005460ff16155b61420e5760405162461bcd60e51b81526004016107fe90615785565b600054610100900460ff16158015614239576000805460ff1961ff0019909116610100171660011790555b614241613fee565b612f54614550565b6142516146d9565b60fe54604051633e978aaf60e21b81526000916001600160a01b03169063fa5e2abc906142829089906004016151f3565b60c06040518083038186803b15801561429a57600080fd5b505afa1580156142ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142d29190614efb565b905060006142e1878784613e0c565b905060008260400151821115614366576402540be4008360400151886143079190615e43565b6143119190615e23565b90506402540be4008360400151830388028161433d57634e487b7160e01b600052601260045260246000fd5b6001600160a01b038a166000908152610103602052604090208054929091049091019055614383565b6402540be4006143768389615e43565b6143809190615e23565b90505b60006402540be400614395848a615e43565b61439f9190615e23565b60ff54604051634993584560e11b81529192506001600160a01b031690639326b08a906143d2908c90869060040161531a565b600060405180830381600087803b1580156143ec57600080fd5b505af1158015614400573d6000803e3d6000fd5b5050505060005a60fc548651614416908e615e0b565b6144209190615e0b565b61442a9190615e62565b9050600061443d8b8a848b610ca76107b9565b90508961444a8285615e0b565b11156144685760405162461bcd60e51b81526004016107fe9061551e565b604080516080810182528483018c03815260208101959095528401929092525060608201529250505095945050505050565b60006144ef826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166145ce9092919063ffffffff16565b805190915015613352578080602001905181019061450d9190614e26565b6133525760405162461bcd60e51b81526004016107fe90615b24565b61454a846323b872dd60e01b85858560405160240161331b9392919061526c565b50505050565b600054610100900460ff1680614569575060005460ff16155b6145855760405162461bcd60e51b81526004016107fe90615785565b600054610100900460ff161580156145b0576000805460ff1961ff0019909116610100171660011790555b6065805460ff191690558015611236576000805461ff001916905550565b60606145dd84846000856145e5565b949350505050565b6060824710156146075760405162461bcd60e51b81526004016107fe90615681565b6146108561469a565b61462c5760405162461bcd60e51b81526004016107fe90615a7f565b600080866001600160a01b0316858760405161464891906151d7565b60006040518083038185875af1925050503d8060008114614685576040519150601f19603f3d011682016040523d82523d6000602084013e61468a565b606091505b5091509150613a188282866146a0565b3b151590565b606083156146af575081612737565b8251156146bf5782518084602001fd5b8160405162461bcd60e51b81526004016107fe91906153ac565b60405180608001604052806004906020820280368337509192915050565b803561149a81615ed1565b60008083601f840112614713578081fd5b5081356001600160401b03811115614729578182fd5b602083019150836020808302850101111561474357600080fd5b9250929050565b60008083601f84011261475b578182fd5b5081356001600160401b03811115614771578182fd5b60208301915083602082850101111561474357600080fd5b600082601f830112614799578081fd5b81356001600160401b03808211156147b3576147b3615ebb565b604051601f8301601f1916810160200182811182821017156147d7576147d7615ebb565b6040528281528483016020018610156147ee578384fd5b82602086016020830137918201602001929092529392505050565b60006040828403121561481a578081fd5b604051604081018181106001600160401b038211171561483c5761483c615ebb565b604052825181526020928301519281019290925250919050565b600060208284031215614867578081fd5b813561273781615ed1565b60008060408385031215614884578081fd5b823561488f81615ed1565b9150602083013561489f81615ed1565b809150509250929050565b600080600080600060a086880312156148c1578081fd5b85356148cc81615ed1565b945060208601356148dc81615ed1565b935060408601356148ec81615ed1565b925060608601356148fc81615ed1565b9150608086013561490c81615ed1565b809150509295509295909350565b60008060006060848603121561492e578283fd5b833561493981615ed1565b9250602084013561494981615ed1565b929592945050506040919091013590565b60008060008060008060008060c0898b031215614975578283fd5b883561498081615ed1565b9750602089013561499081615ed1565b9650604089013595506060890135945060808901356001600160401b03808211156149b9578485fd5b6149c58c838d0161474a565b909650945060a08b01359150808211156149dd578384fd5b506149ea8b828c01614702565b999c989b5096995094979396929594505050565b6000806000806000806000878903610160811215614a1a578182fd5b8835614a2581615ed1565b97506020890135614a3581615ed1565b9650604089013595506060890135945060c0607f1982011215614a56578182fd5b506080880192506101408801356001600160401b03811115614a76578182fd5b614a828a828b0161474a565b989b979a50959850939692959293505050565b60008060408385031215614aa7578182fd5b8235614ab281615ed1565b946020939093013593505050565b600080600080600060808688031215614ad7578283fd5b8535614ae281615ed1565b9450602086013593506040860135614af981615ed1565b925060608601356001600160401b03811115614b13578182fd5b614b1f8882890161474a565b969995985093965092949392505050565b600080600080600080600060c0888a031215614b4a578081fd5b8735614b5581615ed1565b9650602088013595506040880135614b6c81615ed1565b945060608801356001600160401b03811115614b86578182fd5b614b928a828b0161474a565b989b979a50959895979660808701359660a0013595509350505050565b60008060008060008060008060e0898b031215614bca578182fd5b8835614bd581615ed1565b9750602089013596506040890135614bec81615ed1565b955060608901356001600160401b03811115614c06578283fd5b614c128b828c0161474a565b999c989b50969996989760808801359760a0810135975060c0013595509350505050565b6000806000806000806000806000806000806101408d8f031215614c58578586fd5b614c618d6146f7565b9b5060208d01359a50614c7660408e016146f7565b99506001600160401b0360608e01351115614c8f578586fd5b614c9f8e60608f01358f0161474a565b909950975060808d0135965060a08d0135955060c08d0135945060e08d013593506001600160401b036101008e01351115614cd8578283fd5b614ce98e6101008f01358f01614702565b90935091506001600160401b036101208e01351115614d06578081fd5b614d178e6101208f01358f01614789565b90509295989b509295989b509295989b565b60008060008060608587031215614d3e578182fd5b8435614d4981615ed1565b93506020850135925060408501356001600160401b03811115614d6a578283fd5b614d768782880161474a565b95989497509550505050565b60008060008060008060808789031215614d9a578384fd5b8635614da581615ed1565b95506020870135945060408701356001600160401b0380821115614dc7578586fd5b614dd38a838b0161474a565b90965094506060890135915080821115614deb578384fd5b50614df889828a01614702565b979a9699509497509295939492505050565b600060208284031215614e1b578081fd5b813561273781615ee6565b600060208284031215614e37578081fd5b815161273781615ee6565b600060208284031215614e53578081fd5b5035919050565b600080600060408486031215614e6e578081fd5b83356001600160401b03811115614e83578182fd5b614e8f8682870161474a565b9094509250506020840135614ea381615ed1565b809150509250925092565b600060208284031215614ebf578081fd5b81356001600160401b03811115614ed4578182fd5b6145dd84828501614789565b600060408284031215614ef1578081fd5b6127378383614809565b600060c08284031215614f0c578081fd5b60405160a081018181106001600160401b0382111715614f2e57614f2e615ebb565b604052825181526020830151614f4381615ee6565b806020830152506040830151604082015260608301516060820152614f6b8460808501614809565b60808201529392505050565b600060208284031215614f88578081fd5b81356001600160801b0381168114612737578182fd5b600060208284031215614faf578081fd5b5051919050565b60008060408385031215614fc8578182fd5b82359150602083013561489f81615ed1565b60008060008060008060a08789031215614ff2578384fd5b86359550602087013561500481615ed1565b9450604087013561501481615ed1565b93506060870135925060808701356001600160401b03811115615035578283fd5b614df889828a0161474a565b600080600080600060c08688031215615058578283fd5b85519450602086015161506a81615ee6565b60408701516060880151919550935091506150888760808801614809565b90509295509295909350565b6000602082840312156150a5578081fd5b813560ff81168114612737578182fd5b60008284526020808501945084818502860184845b8781101561516e5783830389528135609e198836030181126150ea578687fd5b870160a081356150f981615ed1565b6001600160a01b031685528187013587860152604080830135908601526060808301356002811061512857898afd5b615134828801826151a5565b5050608061514481840184615dc7565b93508282880152615158838801858361517b565b9c89019c965050509286019250506001016150ca565b5090979650505050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600281106151c357634e487b7160e01b600052602160045260246000fd5b9052565b6000828483379101908152919050565b600082516151e9818460208701615e79565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b038816815260c06020820181905260009061522c908301888a61517b565b90508560408301528460608301528360808301528260a083015298975050505050505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b039889168152969097166020870152604086019490945260608501929092521515608084015260ff1660a083015260c082015260e08101919091526101000190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0386811682526020820186905284166040820152608060608201819052600090613a1890830184866150b5565b6001600160a01b039485168152602081019390935292166040820152606081019190915260800190565b901515815260200190565b9182521515602082015260400190565b60006020825282518060208401526153cb816040850160208701615e79565b601f01601f19169190910160400192915050565b60208082526018908201527f4f6e6c79206578656375746f7220697320616c6c6f7765640000000000000000604082015260600190565b6020808252601c908201527f4578656375746f72204d616e616765722063616e6e6f74206265203000000000604082015260600190565b60208082526014908201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604082015260600190565b6020808252601d908201527f4c697175696469747950726f7669646572732063616e27742062652030000000604082015260600190565b6020808252818101527f576974686472617720616d6f756e74206e6f7420696e20436170206c696d6974604082015260600190565b6020808252601b908201527f4552525f5f4e41544956455f5452414e534645525f4641494c45440000000000604082015260600190565b60208082526028908201527f496e73756666696369656e742066756e647320746f20636f766572207472616e604082015267736665722066656560c01b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526021908201527f4e6174697665205472616e7366657220746f2041646170746f72204661696c656040820152601960fa1b606082015260800190565b60208082526016908201527514ddd85c081859185c1d1bdc881b9bdd08199bdd5b9960521b604082015260600190565b602080825260139082015272047617320466565206561726e6564206973203606c1b604082015260600190565b6020808252601b908201527f54727573746564466f727761726465722063616e277420626520300000000000604082015260600190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b6020808252600e908201526d3bb937b73390333ab731ba34b7b760911b604082015260600190565b60208082526010908201526f24b73b30b634b2103932b1b2b4bb32b960811b604082015260600190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b60208082526022908201527f4f6e6c79206c697175696469747950726f76696465727320697320616c6c6f77604082015261195960f21b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b602080825260149082015273426164207265636569766572206164647265737360601b604082015260600190565b6020808252601f908201527f43616e2774207769746864726177206e617469766520746f6b656e2066656500604082015260600190565b6020808252601c908201527f526563656976657220616464726573732063616e6e6f74206265203000000000604082015260600190565b6020808252601f908201527f4465706f73697420616d6f756e74206e6f7420696e20436170206c696d697400604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601a908201527f50617573657220416464726573732063616e6e6f742062652030000000000000604082015260600190565b6020808252601290820152710416d6f756e742063616e6e6f7420626520360741b604082015260600190565b602080825260139082015272151bdad95b881b9bdd081cdd5c1c1bdc9d1959606a1b604082015260600190565b6020808252601e908201527f54727573746564466f727761726465722063616e6e6f74206265203078300000604082015260600190565b6020808252818101527f546f74616c2070657263656e746167652063616e6e6f74206265203e20313030604082015260600190565b6020808252602d908201527f546f20636861696e206d75737420626520646966666572656e74207468616e2060408201526c31bab93932b73a1031b430b4b760991b606082015260800190565b60208082526011908201527015dc9bdb99c81b595d1a1bd90818d85b1b607a1b604082015260600190565b60208082526016908201527513985d1a5d9948151c985b9cd9995c8811985a5b195960521b604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252601d908201527f4578656375746f724d616e616765722063616e6e6f7420626520307830000000604082015260600190565b60208082526019908201527f4552525f5f494e53554646494349454e545f42414c414e434500000000000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b602080825260119082015270105b1c9958591e48141c9bd8d95cdcd959607a1b604082015260600190565b60208082526017908201527f546f6b656e4d616e616765722063616e27742062652030000000000000000000604082015260600190565b60208082526036908201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60408201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606082015260800190565b60208082526030908201527f4f6e6c792070617573657220697320616c6c6f77656420746f20706572666f7260408201526f36903a3434b99037b832b930ba34b7b760811b606082015260800190565b6020808252818101527f4c697175696469747950726f7669646572732063616e6e6f7420626520307830604082015260600190565b90815260200190565b9182526001600160a01b0316602082015260400190565b8481526001600160a01b0384166020820152606060408201819052600090615d2d90830184866150b5565b9695505050505050565b918252602082015260400190565b600086825285602083015284604083015260806060830152613a1860808301848661517b565b600088825287602083015286604083015260a06060830152615d9160a08301868861517b565b8281036080840152615da48185876150b5565b9a9950505050505050505050565b60008235609e198336030181126151e9578182fd5b6000808335601e19843603018112615ddd578283fd5b83016020810192503590506001600160401b03811115615dfc57600080fd5b80360383131561474357600080fd5b60008219821115615e1e57615e1e615ea5565b500190565b600082615e3e57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615615e5d57615e5d615ea5565b500290565b600082821015615e7457615e74615ea5565b500390565b60005b83811015615e94578181015183820152602001615e7c565b8381111561454a5750506000910152565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461123657600080fd5b801515811461123657600080fdfe000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea2646970667358221220e4f8e94dd13db1bfa1cdccfeb5ab67b6ae9b3730e048602f2fb40ed48fa4992c64736f6c63430008000033