UNPKG

@perp/hottub-deployments

Version:

Perpetual Protocol Hot Tub contract artifacts (ABIs) and deployed addresses

750 lines 87.5 kB
{ "_format": "hh-sol-artifact-1", "contractName": "BaseVault", "sourceName": "contracts/BaseVault.sol", "abi": [ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "keeper", "type": "address" }, { "indexed": true, "internalType": "address", "name": "baseToken", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "reducedPositionSizeAbs", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "base", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "quote", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "soldSpotNotional", "type": "uint256" }, { "indexed": false, "internalType": "int256", "name": "pnl", "type": "int256" } ], "name": "Deleverage", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Redeem", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "address", "name": "tokenIn", "type": "address" }, { "indexed": false, "internalType": "address", "name": "tokenOut", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountIn", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amountOut", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "fee", "type": "uint256" } ], "name": "Swap", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldBaseUsdPriceFeed", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newBaseUsdPriceFeed", "type": "address" } ], "name": "UpdateBaseUsdPriceFeed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldQuoteUsdPriceFeed", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newQuoteUsdPriceFeed", "type": "address" } ], "name": "UpdateQuoteUsdPriceFeed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldRouter", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newRouter", "type": "address" } ], "name": "UpdateRouterAddress", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "showerRoom", "type": "address" } ], "name": "UpdateShowerRoom", "type": "event" }, { "inputs": [], "name": "candidate", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "reducedPositionSizeAbs", "type": "uint256" } ], "name": "deleverage", "outputs": [ { "internalType": "int256", "name": "pnl", "type": "int256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "deposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "depositFor", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getBaseToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBaseUsdPriceFeed", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getIndexPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPerpPositionManager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getQuoteToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getQuoteUsdPriceFeed", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRouter", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getVaultConfig", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "vaultTokenArg", "type": "address" }, { "internalType": "address", "name": "quoteTokenArg", "type": "address" }, { "internalType": "address", "name": "baseTokenArg", "type": "address" }, { "internalType": "address", "name": "vaultConfigArg", "type": "address" }, { "internalType": "address", "name": "perpPositionManagerArg", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "uint256", "name": "minRedeemedAmount", "type": "uint256" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "redeemed", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "baseUsdPriceFeedArg", "type": "address" } ], "name": "setBaseUsdPriceFeed", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "setOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "quoteUsdPriceFeedArg", "type": "address" } ], "name": "setQuoteUsdPriceFeed", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "routerArg", "type": "address" } ], "name": "setRouter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "showerRoomArg", "type": "address" } ], "name": "setShowerRoom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "tokenIn", "type": "address" }, { "internalType": "address", "name": "tokenOut", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, { "internalType": "uint256", "name": "amountOutMinimum", "type": "uint256" }, { "internalType": "uint160", "name": "sqrtPriceLimitX96OnPerp", "type": "uint160" } ], "internalType": "struct ICommonVaultStruct.SwapExactInputParams", "name": "params", "type": "tuple" } ], "name": "swapExactInput", "outputs": [ { "internalType": "uint256", "name": "amountOut", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "tokenIn", "type": "address" }, { "internalType": "address", "name": "tokenOut", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint256", "name": "amountOut", "type": "uint256" }, { "internalType": "uint256", "name": "amountInMaximum", "type": "uint256" }, { "internalType": "uint160", "name": "sqrtPriceLimitX96OnPerp", "type": "uint160" } ], "internalType": "struct ICommonVaultStruct.SwapExactOutputParams", "name": "params", "type": "tuple" } ], "name": "swapExactOutput", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "totalAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "updateOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x608060405234801561001057600080fd5b5061453e806100206000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063715018a6116100f9578063b0f479a111610097578063bc5920ba11610071578063bc5920ba1461031e578063c0d7865514610326578063c9ca257714610339578063f28402521461034c576101c4565b8063b0f479a1146102fb578063b2a2353e14610303578063b6b55f251461030b576101c4565b80638da5cb5b116100d35780638da5cb5b146102c557806398acd7a6146102cd5780639cf6c098146102d55780639fdabec2146102e8576101c4565b8063715018a6146102a25780637cbc2373146102aa5780638456cb59146102bd576101c4565b80633f4ba83a1161016657806358c0994a1161014057806358c0994a1461026a5780635c975abb146102725780636740170c146102875780636c8381f81461029a576101c4565b80633f4ba83a146102525780634a64d67d1461025a578063519d011f14610262576101c4565b806311e30b62116101a257806311e30b621461021157806313af4035146102195780631459457a1461022c5780632f4f21e21461023f576101c4565b806301e1d114146101c957806308a6a592146101e757806311c25c07146101fc575b600080fd5b6101d161035f565b6040516101de9190613feb565b60405180910390f35b6101fa6101f5366004613da2565b610568565b005b61020461065c565b6040516101de9190613f68565b61020461066c565b6101fa610227366004613da2565b61067c565b6101fa61023a366004613dda565b6107d7565b6101d161024d366004613e4a565b610a70565b6101fa610b20565b610204610b87565b610204610b96565b6101d1610ba6565b61027a610dee565b6040516101de9190613fe0565b6101fa610295366004613da2565b610df7565b610204610eab565b6101fa610eba565b6101d16102b8366004613f03565b610f6d565b6101fa611107565b61020461116c565b61020461117b565b6101d16102e3366004613ead565b61118a565b6101d16102f6366004613eeb565b6115c5565b610204611857565b610204611867565b6101d1610319366004613eeb565b611877565b6101fa61192d565b6101fa610334366004613da2565b611a2b565b6101d1610347366004613ead565b611d2d565b6101fa61035a366004613da2565b611ddf565b60ff546040516370a0823160e01b81526000916001600160a01b031690829082906370a0823190610394903090600401613f68565b60206040518083038186803b1580156103ac57600080fd5b505afa1580156103c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e49190613e95565b60fe546040516370a0823160e01b81529192506000916001600160a01b03909116906370a082319061041a903090600401613f68565b60206040518083038186803b15801561043257600080fd5b505afa158015610446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046a9190613e95565b905060006104fd61010160009054906101000a90046001600160a01b03166001600160a01b031663f457a99c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104c057600080fd5b505afa1580156104d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f89190613e95565b611ebe565b9050600061050b8383611f19565b905060006105276305f5e10061051f610ba6565b849190611f7c565b6101035490915060009061055090839060ff600160b81b8204811691600160c01b90041661202c565b905061055c8187611f19565b97505050505050505090565b61057061207c565b6001600160a01b031661058161116c565b6001600160a01b0316146105c5576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6105d7816001600160a01b031661208b565b6105fc5760405162461bcd60e51b81526004016105f39061403c565b60405180910390fd5b61010580546001600160a01b038381166001600160a01b03198316179092556040519116907f7458bdb707150d2e93c3e85291c62f15b6cb0fb3b503a44f3e8dd9af8180885c906106509083908590613f7c565b60405180910390a15050565b610106546001600160a01b031690565b610101546001600160a01b031690565b61068461207c565b6001600160a01b031661069561116c565b6001600160a01b0316146106d9576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03811661071d576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b0382811691161415610769576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b03828116911614156107b5576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff16806107f057506107f0612091565b806107fe575060005460ff16155b6108395760405162461bcd60e51b815260040180806020018281038252602e815260200180614444602e913960400191505060405180910390fd5b600054610100900460ff16158015610864576000805460ff1961ff0019909116610100171660011790555b61086c6120a2565b610874612154565b60fd80546001600160a01b038089166001600160a01b03199283161790925561010180548584169083168117909155610100805493871693909216929092179055604080516312803c7d60e01b815290516312803c7d91600480820192602092909190829003018186803b1580156108eb57600080fd5b505afa1580156108ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109239190613dbe565b6001600160a01b0316856001600160a01b0316146109535760405162461bcd60e51b81526004016105f3906142a3565b60fe80546001600160a01b0319166001600160a01b038716179055610977856121e9565b610103805460ff60b81b1916600160b81b60ff9384160217905580546001600160a01b0319166001600160a01b0386161790556109b3846121e9565b610103805460ff92909216600160c01b0260ff60c01b1990921691909117905560405163095ea7b360e01b81526001600160a01b0386169063095ea7b390610a0390859060001990600401613fc7565b602060405180830381600087803b158015610a1d57600080fd5b505af1158015610a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a559190613e75565b508015610a68576000805461ff00191690555b505050505050565b6000610a7a610dee565b15610abf576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600260cb541415610b05576040805162461bcd60e51b815260206004820152601f60248201526000805160206143dd833981519152604482015290519081900360640190fd5b600260cb55610b148383612292565b600160cb559392505050565b610b2861207c565b6001600160a01b0316610b3961116c565b6001600160a01b031614610b7d576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610b8561229e565b565b60fe546001600160a01b031690565b610105546001600160a01b031690565b61010554610106546040805163313ce56760e01b815290516000936001600160a01b039081169316918491849163313ce567916004808301926020929190829003018186803b158015610bf857600080fd5b505afa158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c309190613f47565b90506000826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610c6d57600080fd5b505afa158015610c81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca59190613f47565b905060ff82166008148015610cbf57508060ff168260ff16145b610cdb5760405162461bcd60e51b81526004016105f390614199565b604051630e75722360e41b81526000906001600160a01b0386169063e757223090610d0a908490600401613feb565b60206040518083038186803b158015610d2257600080fd5b505afa158015610d36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5a9190613e95565b90506000846001600160a01b031663e757223060006040518263ffffffff1660e01b8152600401610d8b9190613feb565b60206040518083038186803b158015610da357600080fd5b505afa158015610db7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddb9190613e95565b9050600061055c826305f5e10085611f7c565b60675460ff1690565b610dff61207c565b6001600160a01b0316610e1061116c565b6001600160a01b031614610e54576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b61010780546001600160a01b0319166001600160a01b0383161790556040517f8630c5d5b0083b1c40ab6a18f9c063e4c824d5c31f7d3e4fa394fafe9ae1ebb190610ea0908390613f68565b60405180910390a150565b6034546001600160a01b031690565b610ec261207c565b6001600160a01b0316610ed361116c565b6001600160a01b031614610f17576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319908116909155603480549091169055565b6000610f77610dee565b15610fbc576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600260cb541415611002576040805162461bcd60e51b815260206004820152601f60248201526000805160206143dd833981519152604482015290519081900360640190fd5b600260cb556110108361233e565b600061101a61207c565b9050600061102661235e565b60fd54604051632770a7eb60e21b81529192506001600160a01b031690639dc29fac906110599085908990600401613fc7565b600060405180830381600087803b15801561107357600080fd5b505af1158015611087573d6000803e3d6000fd5b5050505061109585826123db565b9250838310156110b75760405162461bcd60e51b81526004016105f39061421d565b816001600160a01b03167fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a92984876040516110f2929190614396565b60405180910390a25050600160cb5592915050565b61110f61207c565b6001600160a01b031661112061116c565b6001600160a01b031614611164576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610b85612465565b6033546001600160a01b031690565b60ff546001600160a01b031690565b6000611194610dee565b156111d9576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600260cb54141561121f576040805162461bcd60e51b815260206004820152601f60248201526000805160206143dd833981519152604482015290519081900360640190fd5b600260cb55600061122e61207c565b9050611239816124e8565b61125e6112496020850185613da2565b6112596040860160208701613da2565b612585565b6000611268612645565b60ff549091506000906001600160a01b03166112876020870187613da2565b6001600160a01b0316149050600082156112a9576000831282151514156112ac565b60005b9050806112bb576112bb6126f2565b6112d76112cb6020880188613da2565b85308960800135612807565b610100546040516363039faf60e11b815260009161136c916001600160a01b039091169063c6073f5e906113119089903090600401613f7c565b60206040518083038186803b15801561132957600080fd5b505afa15801561133d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113619190613ec8565b608089013590612867565b90506000806113d66040518060a00160405280871515815260200161139e868d6080013561287c90919063ffffffff16565b815260a08c013560208201526060808d01356040830152016113c660e08d0160c08e01613da2565b6001600160a01b031690526128d9565b915091508415611459576113e981612a48565b6101015460fe5460405163f3fef3a360e01b8152929a506001600160a01b039182169263f3fef3a3926114229216908c90600401613fc7565b600060405180830381600087803b15801561143c57600080fd5b505af1158015611450573d6000803e3d6000fd5b50505050611502565b61146282612a66565b60ff546040516370a0823160e01b81529199506001600160a01b0316906370a0823190611493903090600401613f68565b60206040518083038186803b1580156114ab57600080fd5b505afa1580156114bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e39190613e95565b8811156115025760405162461bcd60e51b81526004016105f390614118565b8361150f5761150f612a84565b61153861152260408b0160208c01613da2565b61153260608c0160408d01613da2565b8a612b99565b61154860608a0160408b01613da2565b6001600160a01b039081169088167f886b45a07c2ce3f9de6744b942d8023d325ac0b64972104e38bb5f30d1452fc361158460208d018d613da2565b61159460408e0160208f01613da2565b8d608001358d896040516115ac959493929190613f96565b60405180910390a350505050505050600160cb55919050565b60006115cf610dee565b15611614576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600260cb54141561165a576040805162461bcd60e51b815260206004820152601f60248201526000805160206143dd833981519152604482015290519081900360640190fd5b600260cb5561166f61166a61207c565b6124e8565b61010054604051630a750cd760e11b81526000916001600160a01b0316906314ea19ae906116a1903090600401613f68565b60206040518083038186803b1580156116b957600080fd5b505afa1580156116cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f19190613ec8565b6101015460405163ed7d320b60e01b81529192506001600160a01b03169063ed7d320b90611723908490600401614386565b60206040518083038186803b15801561173b57600080fd5b505afa15801561174f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117739190613e75565b156117905760405162461bcd60e51b81526004016105f3906141fc565b61010154604051631f711b7f60e21b81526000916001600160a01b031690637dc46dfc906117c2908590600401614386565b60206040518083038186803b1580156117da57600080fd5b505afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613e95565b9050808411156118345760405162461bcd60e51b81526004016105f390614138565b61184a84156118435784611845565b815b612bf0565b600160cb55949350505050565b610104546001600160a01b031690565b610100546001600160a01b031690565b6000611881610dee565b156118c6576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600260cb54141561190c576040805162461bcd60e51b815260206004820152601f60248201526000805160206143dd833981519152604482015290519081900360640190fd5b600260cb5561192261191c61207c565b83612292565b600160cb5592915050565b6034546001600160a01b0316611972576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b61197a61207c565b6034546001600160a01b039081169116146119c5576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b611a3361207c565b6001600160a01b0316611a4461116c565b6001600160a01b031614611a88576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610104546001600160a01b03168015611ba85760fe5460405163095ea7b360e01b81526001600160a01b039091169063095ea7b390611ace908490600090600401613fc7565b602060405180830381600087803b158015611ae857600080fd5b505af1158015611afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b209190613e75565b5060ff5460405163095ea7b360e01b81526001600160a01b039091169063095ea7b390611b54908490600090600401613fc7565b602060405180830381600087803b158015611b6e57600080fd5b505af1158015611b82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba69190613e75565b505b611bba826001600160a01b031661208b565b611bd65760405162461bcd60e51b81526004016105f390614283565b61010480546001600160a01b0319166001600160a01b038481169190911790915560fe5460405163095ea7b360e01b815291169063095ea7b390611c2290859060001990600401613fc7565b602060405180830381600087803b158015611c3c57600080fd5b505af1158015611c50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c749190613e75565b5060ff5460405163095ea7b360e01b81526001600160a01b039091169063095ea7b390611ca990859060001990600401613fc7565b602060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfb9190613e75565b507f3584ef0902ddc9b13de0bc6f744653e5c317e0aa94055d95c23e895e7560fa538183604051610650929190613f7c565b6000611d37610dee565b15611d7c576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600260cb541415611dc2576040805162461bcd60e51b815260206004820152601f60248201526000805160206143dd833981519152604482015290519081900360640190fd5b600260cb5560405162461bcd60e51b81526105f390600401613ff4565b611de761207c565b6001600160a01b0316611df861116c565b6001600160a01b031614611e3c576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b611e4e816001600160a01b031661208b565b611e6a5760405162461bcd60e51b81526004016105f390614241565b61010680546001600160a01b038381166001600160a01b03198316179092556040519116907f484cc3a9ca9831f306ac301564fae47c895482cb98f191fa281cb03b4946174a906106509083908590613f7c565b600080821215611f15576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b5090565b600082820183811015611f73576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000808060001985870986860292508281109083900303905080611fb25760008411611fa757600080fd5b508290049050612025565b808411611fbe57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60008160ff168360ff161415612043575082612025565b8160ff168360ff1610156120615782820360ff16600a0a8402612074565b81830360ff16600a0a848161207257fe5b045b949350505050565b6000612086612d23565b905090565b3b151590565b600061209c3061208b565b15905090565b600054610100900460ff16806120bb57506120bb612091565b806120c9575060005460ff16155b6121045760405162461bcd60e51b815260040180806020018281038252602e815260200180614444602e913960400191505060405180910390fd5b600054610100900460ff1615801561212f576000805460ff1961ff0019909116610100171660011790555b612137612d27565b61213f612e28565b8015612151576000805461ff00191690555b50565b600054610100900460ff168061216d575061216d612091565b8061217b575060005460ff16155b6121b65760405162461bcd60e51b815260040180806020018281038252602e815260200180614444602e913960400191505060405180910390fd5b600054610100900460ff161580156121e1576000805460ff1961ff0019909116610100171660011790555b61213f612ec5565b600080826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561222557600080fd5b505afa158015612239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225d9190613f47565b905060008160ff16118015612276575060128160ff1611155b611f765760405162461bcd60e51b81526004016105f39061401d565b6000611f738383612f6b565b6122a6610dee565b6122ee576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6067805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61232161207c565b604080516001600160a01b039092168252519081900360200190a1565b600081116121515760405162461bcd60e51b81526004016105f39061415a565b60fd54604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b1580156123a357600080fd5b505afa1580156123b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120869190613e95565b60008060006123ea8585613128565b9150915060006123fa86866131fb565b90506124068382611f19565b9250821561243e5760fe5460ff5460009161242e916001600160a01b039182169116866133c8565b905061243a8382611f19565b9250505b60ff5461245c906001600160a01b031661245661207c565b84612b99565b50949350505050565b61246d610dee565b156124b2576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6067805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861232161207c565b61010054604051630d3b67df60e21b81526001600160a01b03909116906334ed9f7c90612519908490600401613f68565b60206040518083038186803b15801561253157600080fd5b505afa158015612545573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125699190613e75565b6121515760405162461bcd60e51b81526004016105f39061405e565b60fe546001600160a01b03838116911614806125ae575060ff546001600160a01b038381169116145b6125ca5760405162461bcd60e51b81526004016105f390614263565b60fe546001600160a01b03828116911614806125f3575060ff546001600160a01b038281169116145b61260f5760405162461bcd60e51b81526004016105f3906141dc565b806001600160a01b0316826001600160a01b031614156126415760405162461bcd60e51b81526004016105f390614179565b5050565b60008061010160009054906101000a90046001600160a01b03166001600160a01b0316636d101c2a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561269757600080fd5b505afa1580156126ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126cf9190613e95565b905060008112156120865760405162461bcd60e51b81526004016105f3906140a0565b610101546101005460405163e79016e960e01b81526001600160a01b039283169263ed7d320b92169063e79016e99061272f903090600401613f68565b60206040518083038186803b15801561274757600080fd5b505afa15801561275b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277f9190613ec8565b6040518263ffffffff1660e01b815260040161279b9190614386565b60206040518083038186803b1580156127b357600080fd5b505afa1580156127c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127eb9190613e75565b610b855760405162461bcd60e51b81526004016105f3906141bb565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261286190859061347a565b50505050565b6000611f73838362ffffff16620f4240611f7c565b6000828211156128d3576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000806000806128f685602001518660400151876000015161352b565b6101015487519294509092506001600160a01b03169061297b5760fe5460208701516040516311f9fbc960e21b81526001600160a01b03848116936347e7ef2493612948939290911691600401613fc7565b600060405180830381600087803b15801561296257600080fd5b505af1158015612976573d6000803e3d6000fd5b505050505b6040805160c0810182528751151581526001602082015280820185905260608082018590528801516080808301919091528801516001600160a01b0390811660a08301529151635e4b217360e01b815291831691635e4b2173916129e1916004016142c6565b6040805180830381600087803b1580156129fa57600080fd5b505af1158015612a0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a329190613f24565b9095509350612a3f612645565b50505050915091565b6000611f7682601261010360179054906101000a900460ff1661202c565b6000611f7682601261010360189054906101000a900460ff1661202c565b6101015461010054604051630a750cd760e11b81526001600160a01b039283169263ed7d320b9216906314ea19ae90612ac1903090600401613f68565b60206040518083038186803b158015612ad957600080fd5b505afa158015612aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b119190613ec8565b6040518263ffffffff1660e01b8152600401612b2d9190614386565b60206040518083038186803b158015612b4557600080fd5b505afa158015612b59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7d9190613e75565b610b855760405162461bcd60e51b81526004016105f3906140c0565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612beb90849061347a565b505050565b600080612bfb61035f565b9050600080612c098561356e565b915091506000612c1761035f565b90506000612c36612c2786613615565b612c3084613615565b9061365d565b905061010160009054906101000a90046001600160a01b03166001600160a01b03166398acd7a66040518163ffffffff1660e01b815260040160206040518083038186803b158015612c8757600080fd5b505afa158015612c9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cbf9190613dbe565b6001600160a01b0316612cd061207c565b6001600160a01b03167fcfa405fd8c70f3488aa7b00baa1e5b0c582d6fe739cd4b36d1a323acc6b61f24898787600087604051612d119594939291906143a4565b60405180910390a39695505050505050565b3390565b600054610100900460ff1680612d405750612d40612091565b80612d4e575060005460ff16155b612d895760405162461bcd60e51b815260040180806020018281038252602e815260200180614444602e913960400191505060405180910390fd5b600054610100900460ff16158015612db4576000805460ff1961ff0019909116610100171660011790555b612dbc6136c2565b6000612dc661207c565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015612151576000805461ff001916905550565b600054610100900460ff1680612e415750612e41612091565b80612e4f575060005460ff16155b612e8a5760405162461bcd60e51b815260040180806020018281038252602e815260200180614444602e913960400191505060405180910390fd5b600054610100900460ff16158015612eb5576000805460ff1961ff0019909116610100171660011790555b612ebd613753565b61213f6137f3565b600054610100900460ff1680612ede5750612ede612091565b80612eec575060005460ff16155b612f275760405162461bcd60e51b815260040180806020018281038252602e815260200180614444602e913960400191505060405180910390fd5b600054610100900460ff16158015612f52576000805460ff1961ff0019909116610100171660011790555b600160cb558015612151576000805461ff001916905550565b6000612f768261233e565b6000612f8061207c565b61010754909150612f99906001600160a01b031661208b565b8015613029575061010760009054906101000a90046001600160a01b03166001600160a01b0316636ce431646040518163ffffffff1660e01b815260040160206040518083038186803b158015612fef57600080fd5b505afa158015613003573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130279190613e75565b155b1561305c57610107546001600160a01b0382811691161461305c5760405162461bcd60e51b81526004016105f39061407f565b6130658361389e565b915061307a61307261117b565b823086612807565b60fd546040516340c10f1960e01b81526001600160a01b03909116906340c10f19906130ac9087908690600401613fc7565b600060405180830381600087803b1580156130c657600080fd5b505af11580156130da573d6000803e3d6000fd5b50505050836001600160a01b03167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a158484604051613119929190614396565b60405180910390a25092915050565b60fe546040516370a0823160e01b815260009182916131ba91869186916001600160a01b0316906370a0823190613163903090600401613f68565b60206040518083038186803b15801561317b57600080fd5b505afa15801561318f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b39190613e95565b9190611f7c565b60ff546040516370a0823160e01b81526131f091879187916001600160a01b0316906370a0823190613163903090600401613f68565b915091509250929050565b600080613206612645565b9050600061321885856131b38561396a565b9050600061010160009054906101000a90046001600160a01b031690506000816001600160a01b031663f457a99c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561327057600080fd5b505afa158015613284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a89190613e95565b905060008315613335576132bb8461356e565b505061333282846001600160a01b031663f457a99c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156132fa57600080fd5b505afa15801561330e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c309190613e95565b90505b6133566104f8826133506133488c613615565b86908c61398e565b90613a32565b60fe5460405163f3fef3a360e01b81529197506001600160a01b038086169263f3fef3a39261338b9216908a90600401613fc7565b600060405180830381600087803b1580156133a557600080fd5b505af11580156133b9573d6000803e3d6000fd5b50505050505050505092915050565b610104546040805160c0810182526001600160a01b0386811682528581166020830152308284015242606083015260808201859052600060a08301819052925163acf4bc9d60e01b81529293169163acf4bc9d9161342891600401614337565b602060405180830381600087803b15801561344257600080fd5b505af1158015613456573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120749190613e95565b60006134cf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613a979092919063ffffffff16565b805190915015612beb578080602001905160208110156134ee57600080fd5b5051612beb5760405162461bcd60e51b815260040180806020018281038252602a8152602001806144df602a913960400191505060405180910390fd5b600080821561354f5761353d85613aa6565b915061354884613ac4565b9050613566565b61355885613ac4565b915061356384613aa6565b90505b935093915050565b610101546040805160608101825260018082526020820152808201849052905163fc013e6960e01b815260009283926001600160a01b039091169163fc013e69916135bb91600401614312565b6040805180830381600087803b1580156135d457600080fd5b505af11580156135e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061360c9190613f24565b91509150915091565b60006001600160ff1b03821115611f155760405162461bcd60e51b81526004018080602001828103825260288152602001806144936028913960400191505060405180910390fd5b60008183038183128015906136725750838113155b80613687575060008312801561368757508381135b611f735760405162461bcd60e51b81526004018080602001828103825260248152602001806144bb6024913960400191505060405180910390fd5b600054610100900460ff16806136db57506136db612091565b806136e9575060005460ff16155b6137245760405162461bcd60e51b815260040180806020018281038252602e815260200180614444602e913960400191505060405180910390fd5b600054610100900460ff1615801561374f576000805460ff1961ff0019909116610100171660011790555b61213f5b600054610100900460ff168061376c575061376c612091565b8061377a575060005460ff16155b6137b55760405162461bcd60e51b815260040180806020018281038252602e815260200180614444602e913960400191505060405180910390fd5b600054610100900460ff1615801561213f576000805460ff1961ff0019909116610100171660011790558015612151576000805461ff001916905550565b600054610100900460ff168061380c575061380c612091565b8061381a575060005460ff16155b6138555760405162461bcd60e51b815260040180806020018281038252602e815260200180614444602e913960400191505060405180910390fd5b600054610100900460ff16158015613880576000805460ff1961ff0019909116610100171660011790555b6067805460ff191690558015612151576000805461ff001916905550565b6000806138a961235e565b905080156138ca576138c5816138bd61035f565b859190611f7c565b612025565b6120256138d5613ae2565b60fd60009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561392357600080fd5b505afa158015613937573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061395b9190613f47565b859160ff910316600a0a613af3565b600080821215613985576139806104f883613b4c565b611f76565b611f7682611ebe565b6000806000851261399f57846139a8565b6139a885613b4c565b905060008085126139b957846139c2565b6139c285613b4c565b9050600080871280156139d55750600086135b806139eb57506000871380156139eb5750600086125b6139f65760006139f9565b60015b90506000613a08848488611f7c565b905081613a1d57613a1881613615565b613a26565b613a2681613b78565b98975050505050505050565b6000828201818312801590613a475750838112155b80613a5c5750600083128015613a5c57508381125b611f735760405162461bcd60e51b81526004018080602001828103825260218152602001806143fd6021913960400191505060405180910390fd5b60606120748484600085613b8c565b6000611f768261010360189054906101000a900460ff16601261202c565b6000611f768261010360179054906101000a900460ff16601261202c565b61010354600160c01b900460ff1690565b600082613b0257506000611f76565b82820282848281613b0f57fe5b0414611f735760405162461bcd60e51b81526004018080602001828103825260218152602001806144726021913960400191505060405180910390fd5b6000600160ff1b8213613b715760405162461bcd60e51b81526004016105f3906140e1565b5060000390565b6000613b8382613615565b60000392915050565b606082471015613bcd5760405162461bcd60e51b815260040180806020018281038252602681526020018061441e6026913960400191505060405180910390fd5b613bd68561208b565b613c27576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310613c655780518252601f199092019160209182019101613c46565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613cc7576040519150601f19603f3d011682016040523d82523d6000602084013e613ccc565b606091505b5091509150613cdc828286613ce7565b979650505050505050565b60608315613cf6575081612025565b825115613d065782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613d50578181015183820152602001613d38565b50505050905090810190601f168015613d7d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b600060e08284031215613d9c578081fd5b50919050565b600060208284031215613db3578081fd5b8135611f73816143c7565b600060208284031215613dcf578081fd5b8151611f73816143c7565b600080600080600060a08688031215613df1578081fd5b8535613dfc816143c7565b94506020860135613e0c816143c7565b93506040860135613e1c816143c7565b92506060860135613e2c816143c7565b91506080860135613e3c816143c7565b809150509295509295909350565b60008060408385031215613e5c578182fd5b8235613e67816143c7565b946020939093013593505050565b600060208284031215613e86578081fd5b81518015158114611f73578182fd5b600060208284031215613ea6578081fd5b5051919050565b600060e08284031215613ebe578081fd5b611f738383613d8b565b600060208284031215613ed9578081fd5b815162ffffff81168114611f73578182fd5b600060208284031215613efc578081fd5b5035919050565b60008060408385031215613f15578182fd5b50508035926020909101359150565b60008060408385031215613f36578182fd5b505080516020909101519092909150565b600060208284031215613f58578081fd5b815160ff81168114611f73578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03958616815293909416602084015260408301919091526060820152608081019190915260a00190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b6020808252600f908201526e139bdd08125b5c1b195b595b9d1959608a1b604082015260600190565b60208082526005908201526410d597d25160da1b604082015260600190565b60208082526008908201526743565f5155504e4360c01b604082015260600190565b60208082526007908201526621ab2fa4a0a92160c91b604082015260600190565b60208082526007908201526643565f53524e4560c81b604082015260600190565b60208082526006908201526542565f50535360d01b604082015260600190565b60208082526007908201526643565f4d49415360c81b604082015260600190565b6020808252601c908201527f506572704d6174683a20696e76657273696f6e206f766572666c6f7700000000604082015260600190565b60208082526006908201526521ab2fa4a62160d11b604082015260600190565b60208082526008908201526742565f525053544d60c01b604082015260600190565b60208082526005908201526443565f5a5560d81b604082015260600190565b602080825260069082