[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "address", "name": "_depositToken", "type": "address" }, { "internalType": "address", "name": "_rewardToken", "type": "address" }, { "internalType": "address", "name": "_stakingContract", "type": "address" }, { "internalType": "address", "name": "_conversionContract", "type": "address" }, { "internalType": "address", "name": "_timelock", "type": "address" }, { "internalType": "uint256", "name": "_pid", "type": "uint256" }, { "internalType": "uint256", "name": "_minTokensToReinvest", "type": "uint256" }, { "internalType": "uint256", "name": "_adminFeeBips", "type": "uint256" }, { "internalType": "uint256", "name": "_devFeeBips", "type": "uint256" }, { "internalType": "uint256", "name": "_reinvestRewardBips", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "AllowDepositor", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "newValue", "type": "bool" } ], "name": "DepositsEnabled", "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": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Recovered", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newTotalDeposits", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newTotalSupply", "type": "uint256" } ], "name": "Reinvest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "RemoveDepositor", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateAdminFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldValue", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newValue", "type": "address" } ], "name": "UpdateDevAddr", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateDevFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateMaxTokensToDepositWithoutReinvest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateMinTokensToReinvest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateReinvestReward", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "inputs": [], "name": "ADMIN_FEE_BIPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEPOSITS_ENABLED", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEV_FEE_BIPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_TOKENS_TO_DEPOSIT_WITHOUT_REINVEST", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MIN_TOKENS_TO_REINVEST", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMIT_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PID", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "REINVEST_REWARD_BIPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "VERSION_HASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "depositor", "type": "address" } ], "name": "allowDepositor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "allowedDepositors", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "checkReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "conversionContract", "outputs": [ { "internalType": "contract IBambooBar", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "deposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "depositFor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "depositSBamboo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "depositSBambooFor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "depositSBambooWithPermit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "depositToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "depositWithPermit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "devAddr", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "estimateDeployedBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "estimateReinvestReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "getDepositTokensForShares", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDomainSeparator", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "getSharesForDepositTokens", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "numberOfAllowedDepositors", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "recoverAVAX", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "recoverERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "reinvest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "depositor", "type": "address" } ], "name": "removeDepositor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "minReturnAmountAccepted", "type": "uint256" }, { "internalType": "bool", "name": "disableDeposits", "type": "bool" } ], "name": "rescueDeployedFunds", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "revokeAllowance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rewardToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "router", "outputs": [ { "internalType": "contract IRouter", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sBamboo", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "setAllowances", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stakingContract", "outputs": [ { "internalType": "contract IBambooChef", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalDeposits", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "dst", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "src", "type": "address" }, { "internalType": "address", "name": "dst", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateAdminFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "newValue", "type": "bool" } ], "name": "updateDepositsEnabled", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newValue", "type": "address" } ], "name": "updateDevAddr", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateDevFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateMaxTokensToDepositWithoutReinvest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateMinTokensToReinvest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateReinvestReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60c060405260096080819052685969656c642059616b60b81b60a09081526200002c916000919062000ac4565b506040805180820190915260038082526216549560ea1b6020909201918252620000599160019162000ac4565b503480156200006757600080fd5b50604051620047e2380380620047e283398181016040526101808110156200008e57600080fd5b8101908080516040519392919084640100000000821115620000af57600080fd5b908301906020820185811115620000c557600080fd5b8251640100000000811182820188101715620000e057600080fd5b82525081516020918201929091019080838360005b838110156200010f578181015183820152602001620000f5565b50505050905090810190601f1680156200013d5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200016157600080fd5b9083019060208201858111156200017757600080fd5b82516401000000008111828201881017156200019257600080fd5b82525081516020918201929091019080838360005b83811015620001c1578181015183820152602001620001a7565b50505050905090810190601f168015620001ef5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c086015160e087015161010088015161012089015161014090990151979a509598509396929591949093929091600062000247620003c1565b600680546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020620047c2833981519152908290a3508b51620002999060009060208f019062000ac4565b508a51620002af9060019060208e019062000ac4565b50600a80546001600160a01b03808d166001600160a01b031992831617909255600b80548c8416908316179055601480548b841690831617905560158054928a16928216831790556016805482169092179091556017869055600c805490911673d15e8b816f040fb0d7495eba36c16cf0f33c049c17905562000331620003c5565b6200033c8462000541565b6200034783620005eb565b6200035282620006db565b6200035d81620007b7565b62000369600162000893565b620003748662000959565b604080516000808252602082015281517fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234929181900390910190a150505050505050505050505062000b60565b3390565b620003cf620003c1565b6001600160a01b0316620003e262000a53565b6001600160a01b0316146200042d576040805162461bcd60e51b81526020600482018190526024820152600080516020620047a2833981519152604482015290519081900360640190fd5b600a546015546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156200048857600080fd5b505af11580156200049d573d6000803e3d6000fd5b505050506040513d6020811015620004b457600080fd5b50506016546014546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156200051157600080fd5b505af115801562000526573d6000803e3d6000fd5b505050506040513d60208110156200053d57600080fd5b5050565b6200054b620003c1565b6001600160a01b03166200055e62000a53565b6001600160a01b031614620005a9576040805162461bcd60e51b81526020600482018190526024820152600080516020620047a2833981519152604482015290519081900360640190fd5b600d54604080519182526020820183905280517f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef8499011009281900390910190a1600d55565b620005f5620003c1565b6001600160a01b03166200060862000a53565b6001600160a01b03161462000653576040805162461bcd60e51b81526020600482018190526024820152600080516020620047a2833981519152604482015290519081900360640190fd5b6127106200068d601054620006796012548562000a6260201b620026f21790919060201c565b62000a6260201b620026f21790919060201c565b11156200069957600080fd5b601154604080519182526020820183905280517f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a9281900390910190a1601155565b620006e5620003c1565b6001600160a01b0316620006f862000a53565b6001600160a01b03161462000743576040805162461bcd60e51b81526020600482018190526024820152600080516020620047a2833981519152604482015290519081900360640190fd5b61271062000769601054620006796011548562000a6260201b620026f21790919060201c565b11156200077557600080fd5b601254604080519182526020820183905280517f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d6517261319281900390910190a1601255565b620007c1620003c1565b6001600160a01b0316620007d462000a53565b6001600160a01b0316146200081f576040805162461bcd60e51b81526020600482018190526024820152600080516020620047a2833981519152604482015290519081900360640190fd5b61271062000845601254620006796011548562000a6260201b620026f21790919060201c565b11156200085157600080fd5b601054604080519182526020820183905280517fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f29281900390910190a1601055565b6200089d620003c1565b6001600160a01b0316620008b062000a53565b6001600160a01b031614620008fb576040805162461bcd60e51b81526020600482018190526024820152600080516020620047a2833981519152604482015290519081900360640190fd5b600f5460ff16151581151514156200091257600080fd5b600f805482151560ff19909116811790915560408051918252517f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859181900360200190a150565b62000963620003c1565b6001600160a01b03166200097662000a53565b6001600160a01b031614620009c1576040805162461bcd60e51b81526020600482018190526024820152600080516020620047a2833981519152604482015290519081900360640190fd5b6001600160a01b03811662000a085760405162461bcd60e51b81526004018080602001828103825260268152602001806200477c6026913960400191505060405180910390fd5b6006546040516001600160a01b03808416921690600080516020620047c283398151915290600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031690565b60008282018381101562000abd576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000b0757805160ff191683800117855562000b37565b8280016001018555821562000b37579182015b8281111562000b3757825182559160200191906001019062000b1a565b5062000b4592915062000b49565b5090565b5b8082111562000b45576000815560010162000b4a565b613c0c8062000b706000396000f3fe608060405234801561001057600080fd5b50600436106103ba5760003560e01c80638b73e606116101f4578063c4b24a461161011a578063e21ac825116100ad578063f2fde38b1161007c578063f2fde38b14610a04578063f7c618c114610a2a578063f887ea4014610a32578063fdb5a03e14610a3a576103ba565b8063e21ac825146109ba578063eab89a5a146109d7578063ed24911d146109f4578063ee99205c146109fc576103ba565b8063da09c72c116100e9578063da09c72c1461095f578063dbd9a4d414610967578063dd62ed3e1461096f578063dd8ce4d61461099d576103ba565b8063c4b24a46146108e1578063c89039c5146108e9578063cff1b6ef146108f1578063d505accf1461090e576103ba565b8063a9059cbb11610192578063b6b55f2511610161578063b6b55f25146108ac578063b9e57b80146108c9578063bd079f55146108d1578063bdd4f715146108d9576103ba565b8063a9059cbb1461081b578063ac0d31ff14610847578063b21932161461086c578063b52a321f146108a4576103ba565b806395d89b41116101ce57806395d89b41146107d157806399729ec1146107d95780639e4e7318146107f6578063a8ae2b7c146107fe576103ba565b80638b73e6061461077d5780638da5cb5b146107a35780639291d563146107ab576103ba565b80634a970be7116102e4578063715018a6116102775780637ecebe00116102465780637ecebe0014610706578063818372301461072c5780638980f11f146107495780638aff733d14610775576103ba565b8063715018a6146106c0578063789139bc146106c85780637ae26773146106d05780637d882097146106fe576103ba565b80634f8406dc116102b35780634f8406dc146106665780635ea682ea1461068a5780635eaec0e41461069257806370a082311461069a576103ba565b80634a970be7146105cc5780634bebd1e7146106045780634e77ace51461062a5780634ebb791614610649576103ba565b806320606b701161035c57806330adf81f1161032b57806330adf81f14610578578063313ce567146105805780633bdc6e721461059e578063483c2ef0146105a6576103ba565b806320606b70146104f157806323b872dd146104f95780632e1a7d4d1461052f5780632f4f21e21461054c576103ba565b80630f23475d116103985780630f23475d146104965780631414d9991461049e57806318160ddd146104cc5780631972feaa146104d4576103ba565b806306fdde03146103bf578063076771111461043c578063095ea7b314610456575b600080fd5b6103c7610a42565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104015781810151838201526020016103e9565b50505050905090810190601f16801561042e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610444610ad0565b60408051918252519081900360200190f35b6104826004803603604081101561046c57600080fd5b506001600160a01b038135169060200135610ad6565b604080519115158252519081900360200190f35b610444610aed565b6104ca600480360360408110156104b457600080fd5b506001600160a01b038135169060200135610b80565b005b610444610b9b565b6104ca600480360360208110156104ea57600080fd5b5035610ba1565b610444610bbb565b6104826004803603606081101561050f57600080fd5b506001600160a01b03813581169160208101359091169060400135610bdf565b6104ca6004803603602081101561054557600080fd5b5035610cc1565b6104ca6004803603604081101561056257600080fd5b506001600160a01b038135169060200135610e02565b610444610e19565b610588610e3d565b6040805160ff9092168252519081900360200190f35b610444610e42565b610482600480360360208110156105bc57600080fd5b50356001600160a01b0316610e48565b6104ca600480360360a08110156105e257600080fd5b5080359060208101359060ff6040820135169060608101359060800135610e5d565b6104ca6004803603602081101561061a57600080fd5b50356001600160a01b0316610f0b565b6104ca6004803603602081101561064057600080fd5b50351515611047565b6104ca6004803603602081101561065f57600080fd5b5035611106565b61066e6111e2565b604080516001600160a01b039092168252519081900360200190f35b6104446111f1565b6104446111f7565b610444600480360360208110156106b057600080fd5b50356001600160a01b03166111fd565b6104ca61121c565b6104446112c8565b6104ca600480360360408110156106e657600080fd5b506001600160a01b03813581169160200135166112ce565b6104446113bd565b6104446004803603602081101561071c57600080fd5b50356001600160a01b03166113c3565b6104ca6004803603602081101561074257600080fd5b50356113d5565b6104ca6004803603604081101561075f57600080fd5b506001600160a01b038135169060200135611479565b6104446115b4565b6104ca6004803603602081101561079357600080fd5b50356001600160a01b03166115ba565b61066e611721565b6104ca600480360360208110156107c157600080fd5b50356001600160a01b0316611730565b6103c76117b1565b6104ca600480360360208110156107ef57600080fd5b503561180b565b6104446118de565b6104ca6004803603602081101561081457600080fd5b5035611902565b6104826004803603604081101561083157600080fd5b506001600160a01b0381351690602001356119cf565b6104ca6004803603604081101561085d57600080fd5b508035906020013515156119dc565b6104ca600480360360a081101561088257600080fd5b5080359060208101359060ff6040820135169060608101359060800135611d2e565b610482611dd5565b6104ca600480360360208110156108c257600080fd5b5035611dde565b610444611df5565b610444611e3c565b61066e611e42565b610444611e51565b61066e611f67565b6104ca6004803603602081101561090757600080fd5b5035611f76565b6104ca600480360360e081101561092457600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135612043565b61066e612135565b6104ca612144565b6104446004803603604081101561098557600080fd5b506001600160a01b03813581169160200135166122b0565b610444600480360360208110156109b357600080fd5b50356122db565b6104ca600480360360208110156109d057600080fd5b503561231a565b610444600480360360208110156109ed57600080fd5b50356123be565b6104446123fe565b61066e61250b565b6104ca60048036036020811015610a1a57600080fd5b50356001600160a01b031661251a565b61066e61261d565b61066e61262c565b6104ca61263b565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610ac85780601f10610a9d57610100808354040283529160200191610ac8565b820191906000526020600020905b815481529060010190602001808311610aab57829003601f168201915b505050505081565b60115481565b6000610ae3338484612753565b5060015b92915050565b601454601754604080516393f1a40b60e01b81526004810192909252306024830152805160009384936001600160a01b03909116926393f1a40b92604480840193829003018186803b158015610b4257600080fd5b505afa158015610b56573d6000803e3d6000fd5b505050506040513d6040811015610b6c57600080fd5b50519050610b798161286b565b9150505b90565b601654610b97906001600160a01b03168383612990565b5050565b60025481565b601654610bb8906001600160a01b03163383612990565b50565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6001600160a01b038316600081815260036020908152604080832033808552925282205491929091908214801590610c1957506000198114155b15610caa576000610c45856040518060600160405280602f8152602001613b07602f9139849190612c51565b6001600160a01b0380891660008181526003602090815260408083209489168084529482529182902085905581518581529151949550929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92592918290030190a3505b610cb5868686612ce8565b50600195945050505050565b6000610ccc826123be565b90508015610b9757610cdd81612df5565b600a546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015610d3157600080fd5b505af1158015610d45573d6000803e3d6000fd5b505050506040513d6020811015610d5b57600080fd5b5051610dae576040805162461bcd60e51b815260206004820152601b60248201527f436f6d706f756e64696e6742616d626f6f3a3a77697468647261770000000000604482015290519081900360640190fd5b610db83383612f1a565b600954610dc59082612fef565b60095560408051828152905133917f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364919081900360200190a25050565b600a54610b97906001600160a01b03168383612990565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60075481565b60086020526000908152604090205460ff1681565b600a546040805163d505accf60e01b8152336004820152306024820152604481018890526064810187905260ff8616608482015260a4810185905260c4810184905290516001600160a01b039092169163d505accf9160e48082019260009290919082900301818387803b158015610ed457600080fd5b505af1158015610ee8573d6000803e3d6000fd5b5050600a54610f0492506001600160a01b031690503387612990565b5050505050565b610f13613031565b6001600160a01b0316610f24611721565b6001600160a01b031614610f6d576040805162461bcd60e51b81526020600482018190526024820152600080516020613a8d833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff1615610fdb576040805162461bcd60e51b815260206004820152601c60248201527f5065726d697373696f6e65643a3a616c6c6f774465706f7369746f7200000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600860205260409020805460ff1916600190811790915560075461100d916126f2565b6007556040516001600160a01b038216907fc0a1035c16faf8d1304056d92c00edf028f87e62b8235a938f00af9e3c0312c590600090a250565b61104f613031565b6001600160a01b0316611060611721565b6001600160a01b0316146110a9576040805162461bcd60e51b81526020600482018190526024820152600080516020613a8d833981519152604482015290519081900360640190fd5b600f5460ff16151581151514156110bf57600080fd5b600f805482151560ff19909116811790915560408051918252517f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859181900360200190a150565b61110e613031565b6001600160a01b031661111f611721565b6001600160a01b031614611168576040805162461bcd60e51b81526020600482018190526024820152600080516020613a8d833981519152604482015290519081900360640190fd5b6000811161117557600080fd5b604051339082156108fc029083906000818181858888f193505050501580156111a2573d6000803e3d6000fd5b5060408051600081526020810183905281517f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28929181900390910190a150565b6015546001600160a01b031681565b60125481565b60175481565b6001600160a01b0381166000908152600460205260409020545b919050565b611224613031565b6001600160a01b0316611235611721565b6001600160a01b03161461127e576040805162461bcd60e51b81526020600482018190526024820152600080516020613a8d833981519152604482015290519081900360640190fd5b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680546001600160a01b0319169055565b600e5481565b6112d6613031565b6001600160a01b03166112e7611721565b6001600160a01b031614611330576040805162461bcd60e51b81526020600482018190526024820152600080516020613a8d833981519152604482015290519081900360640190fd5b816001600160a01b031663095ea7b38260006040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561138857600080fd5b505af115801561139c573d6000803e3d6000fd5b505050506040513d60208110156113b257600080fd5b5051610b9757600080fd5b60095481565b60056020526000908152604090205481565b6113dd613031565b6001600160a01b03166113ee611721565b6001600160a01b031614611437576040805162461bcd60e51b81526020600482018190526024820152600080516020613a8d833981519152604482015290519081900360640190fd5b600d54604080519182526020820183905280517f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef8499011009281900390910190a1600d55565b611481613031565b6001600160a01b0316611492611721565b6001600160a01b0316146114db576040805162461bcd60e51b81526020600482018190526024820152600080516020613a8d833981519152604482015290519081900360640190fd5b600081116114e857600080fd5b6040805163a9059cbb60e01b81523360048201526024810183905290516001600160a01b0384169163a9059cbb9160448083019260209291908290030181600087803b15801561153757600080fd5b505af115801561154b573d6000803e3d6000fd5b505050506040513d602081101561156157600080fd5b505161156c57600080fd5b604080516001600160a01b03841681526020810183905281517f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28929181900390910190a15050565b60105481565b6115c2613031565b6001600160a01b03166115d3611721565b6001600160a01b03161461161c576040805162461bcd60e51b81526020600482018190526024820152600080516020613a8d833981519152604482015290519081900360640190fd5b60006007541161165d5760405162461bcd60e51b81526004018080602001828103825260348152602001806139546034913960400191505060405180910390fd5b6001600160a01b03811660009081526008602052604090205460ff1615156001146116b95760405162461bcd60e51b815260040180806020018281038252602a8152602001806139fa602a913960400191505060405180910390fd5b6001600160a01b0381166000908152600860205260409020805460ff191690556007546116e7906001612fef565b6007556040516001600160a01b038216907f0e86f6608b536e5339a25b65ff531f5ea91e1313d056ecd4752b35cbd16137d490600090a250565b6006546001600160a01b031690565b600c546001600160a01b0316331461174757600080fd5b600c54604080516001600160a01b039283168152918316602083015280517fa8e91499ed37682f43cffb045fcc7d379a91e8c9a14e6321877ee34dee564c009281900390910190a1600c80546001600160a01b0319166001600160a01b0392909216919091179055565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610ac85780601f10610a9d57610100808354040283529160200191610ac8565b611813613031565b6001600160a01b0316611824611721565b6001600160a01b03161461186d576040805162461bcd60e51b81526020600482018190526024820152600080516020613a8d833981519152604482015290519081900360640190fd5b61271061189160105461188b601154856126f290919063ffffffff16565b906126f2565b111561189c57600080fd5b601254604080519182526020820183905280517f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d6517261319281900390910190a1601255565b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc681565b61190a613031565b6001600160a01b031661191b611721565b6001600160a01b031614611964576040805162461bcd60e51b81526020600482018190526024820152600080516020613a8d833981519152604482015290519081900360640190fd5b61271061198260125461188b601154856126f290919063ffffffff16565b111561198d57600080fd5b601054604080519182526020820183905280517fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f29281900390910190a1601055565b6000610ae3338484612ce8565b6119e4613031565b6001600160a01b03166119f5611721565b6001600160a01b031614611a3e576040805162461bcd60e51b81526020600482018190526024820152600080516020613a8d833981519152604482015290519081900360640190fd5b600a54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015611a8957600080fd5b505afa158015611a9d573d6000803e3d6000fd5b505050506040513d6020811015611ab357600080fd5b505160145460175460408051632989754760e11b81526004810192909252519293506001600160a01b0390911691635312ea8e9160248082019260009290919082900301818387803b158015611b0857600080fd5b505af1158015611b1c573d6000803e3d6000fd5b5050601554601654604080516370a0823160e01b815230600482015290516001600160a01b0393841695506367dfd4c9945091909216916370a08231916024808301926020929190829003018186803b158015611b7857600080fd5b505afa158015611b8c573d6000803e3d6000fd5b505050506040513d6020811015611ba257600080fd5b5051604080516001600160e01b031960e085901b168152600481019290925251602480830192600092919082900301818387803b158015611be257600080fd5b505af1158015611bf6573d6000803e3d6000fd5b5050600a54604080516370a0823160e01b81523060048201529051600094506001600160a01b0390921692506370a08231916024808301926020929190829003018186803b158015611c4757600080fd5b505afa158015611c5b573d6000803e3d6000fd5b505050506040513d6020811015611c7157600080fd5b5051905083611c808284612fef565b1015611cbd5760405162461bcd60e51b8152600401808060200182810382526026815260200180613ae16026913960400191505060405180910390fd5b600981905560025460408051838152602081019290925280517fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef2349281900390910190a1600f5460ff1615156001148015611d1957506001831515145b15611d2857611d286000611047565b50505050565b6016546040805163d505accf60e01b8152336004820152306024820152604481018890526064810187905260ff8616608482015260a4810185905260c4810184905290516001600160a01b039092169163d505accf9160e48082019260009290919082900301818387803b158015611da557600080fd5b505af1158015611db9573d6000803e3d6000fd5b5050601654610f0492506001600160a01b031690503387612990565b600f5460ff1681565b600a54610bb8906001600160a01b03163383612990565b600080611e00611e51565b9050600d548110611e3457611e2c612710611e266010548461303590919063ffffffff16565b9061308e565b915050610b7d565b600091505090565b600d5481565b6016546001600160a01b031681565b6014546017546040805163de86b67760e01b815260048101929092523060248301525160009283926001600160a01b039091169163de86b67791604480820192602092909190829003018186803b158015611eab57600080fd5b505afa158015611ebf573d6000803e3d6000fd5b505050506040513d6020811015611ed557600080fd5b5051600b54604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611f2857600080fd5b505afa158015611f3c573d6000803e3d6000fd5b505050506040513d6020811015611f5257600080fd5b50519050611f6082826126f2565b9250505090565b600a546001600160a01b031681565b611f7e613031565b6001600160a01b0316611f8f611721565b6001600160a01b031614611fd8576040805162461bcd60e51b81526020600482018190526024820152600080516020613a8d833981519152604482015290519081900360640190fd5b612710611ff660105461188b601254856126f290919063ffffffff16565b111561200157600080fd5b601154604080519182526020820183905280517f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a9281900390910190a1601155565b4284101561208a576040805162461bcd60e51b815260206004820152600f60248201526e1c195c9b5a5d0e8e995e1c1a5c9959608a1b604482015290519081900360640190fd5b6001600160a01b0380881660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938a1660608401526080830189905260a083019390935260c08083018890528151808403909101815260e09092019052805191012061212088828686866130d0565b61212b888888612753565b5050505050505050565b600c546001600160a01b031681565b61214c613031565b6001600160a01b031661215d611721565b6001600160a01b0316146121a6576040805162461bcd60e51b81526020600482018190526024820152600080516020613a8d833981519152604482015290519081900360640190fd5b600a546015546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561220057600080fd5b505af1158015612214573d6000803e3d6000fd5b505050506040513d602081101561222a57600080fd5b50506016546014546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561228657600080fd5b505af115801561229a573d6000803e3d6000fd5b505050506040513d6020811015610b9757600080fd5b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b60006122f460095460025461303590919063ffffffff16565b6122ff575080611217565b610ae7600954611e266002548561303590919063ffffffff16565b612322613031565b6001600160a01b0316612333611721565b6001600160a01b03161461237c576040805162461bcd60e51b81526020600482018190526024820152600080516020613a8d833981519152604482015290519081900360640190fd5b600e54604080519182526020820183905280517fa5dae50539d56dfe1fb5273d883b0c39bc76750a25d036fc5fbd09ad8fd5f57f9281900390910190a1600e55565b60006123d760095460025461303590919063ffffffff16565b6123e357506000611217565b610ae7600254611e266009548561303590919063ffffffff16565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60001b600060405180828054600181600116156101000203166002900480156124815780601f1061245f576101008083540402835291820191612481565b820191906000526020600020905b81548152906001019060200180831161246d575b505091505060405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660001b6124ba6131ed565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b6014546001600160a01b031681565b612522613031565b6001600160a01b0316612533611721565b6001600160a01b03161461257c576040805162461bcd60e51b81526020600482018190526024820152600080516020613a8d833981519152604482015290519081900360640190fd5b6001600160a01b0381166125c15760405162461bcd60e51b815260040180806020018281038252602681526020018061392e6026913960400191505060405180910390fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b600b546001600160a01b031681565b6013546001600160a01b031681565b323314612686576040805162461bcd60e51b815260206004820152601460248201527359616b53747261746567793a3a6f6e6c79454f4160601b604482015290519081900360640190fd5b6000612690611e51565b9050600d548110156126e9576040805162461bcd60e51b815260206004820152601b60248201527f436f6d706f756e64696e6742616d626f6f3a3a7265696e766573740000000000604482015290519081900360640190fd5b610bb8816131f1565b60008282018381101561274c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0383166127ae576040805162461bcd60e51b815260206004820152601c60248201527f5f617070726f76653a3a6f776e6572207a65726f206164647265737300000000604482015290519081900360640190fd5b6001600160a01b038216612809576040805162461bcd60e51b815260206004820152601e60248201527f5f617070726f76653a3a7370656e646572207a65726f20616464726573730000604482015290519081900360640190fd5b6001600160a01b03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600a54601554604080516370a0823160e01b81526001600160a01b0392831660048201529051600093849316916370a08231916024808301926020929190829003018186803b1580156128bd57600080fd5b505afa1580156128d1573d6000803e3d6000fd5b505050506040513d60208110156128e757600080fd5b5051601654604080516318160ddd60e01b815290519293506000926001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b15801561293457600080fd5b505afa158015612948573d6000803e3d6000fd5b505050506040513d602081101561295e57600080fd5b5051905061296c8282613035565b61297a578392505050611217565b61298881611e268685613035565b949350505050565b600f5460ff1615156001146129ec576040805162461bcd60e51b815260206004820152601b60248201527f436f6d706f756e64696e6742616d626f6f3a3a5f6465706f7369740000000000604482015290519081900360640190fd5b600a546001600160a01b0384811691161480612a1557506016546001600160a01b038481169116145b612a505760405162461bcd60e51b815260040180806020018281038252602f8152602001806138ff602f913960400191505060405180910390fd5b600e5415612a79576000612a62611e51565b9050600e54811115612a7757612a77816131f1565b505b600a546000906001600160a01b0385811691161415612b3157600a54604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015612aec57600080fd5b505af1158015612b00573d6000803e3d6000fd5b505050506040513d6020811015612b1657600080fd5b5051612b2157600080fd5b5080612b2c8161358a565b612bea565b6016546001600160a01b0385811691161415612bea57601654604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015612ba157600080fd5b505af1158015612bb5573d6000803e3d6000fd5b505050506040513d6020811015612bcb57600080fd5b5051612bd657600080fd5b612bdf8261286b565b9050612bea826135a5565b612bfc83612bf7836122db565b613665565b600954612c0990826126f2565b6009556040805182815290516001600160a01b038516917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a250505050565b60008184841115612ce05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612ca5578181015183820152602001612c8d565b50505050905090810190601f168015612cd25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b038216612d2d5760405162461bcd60e51b8152600401808060200182810382526034815260200180613aad6034913960400191505060405180910390fd5b612d6a816040518060600160405280602e8152602001613b80602e91396001600160a01b0386166000908152600460205260409020549190612c51565b6001600160a01b038085166000908152600460205260408082209390935590841681522054612d9990826126f2565b6001600160a01b0380841660008181526004602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008111612e345760405162461bcd60e51b8152600401808060200182810382526029815260200180613bae6029913960400191505060405180910390fd5b6000612e3f826136f0565b60145460175460408051630441a3e760e41b8152600481019290925260248201849052519293506001600160a01b039091169163441a3e709160448082019260009290919082900301818387803b158015612e9957600080fd5b505af1158015612ead573d6000803e3d6000fd5b5050601554604080516367dfd4c960e01b81526004810186905290516001600160a01b0390921693506367dfd4c9925060248082019260009290919082900301818387803b158015612efe57600080fd5b505af1158015612f12573d6000803e3d6000fd5b505050505050565b612f5781604051806060016040528060278152602001613b59602791396001600160a01b0385166000908152600460205260409020549190612c51565b60046000846001600160a01b03166001600160a01b0316815260200190815260200160002081905550612fa781604051806060016040528060278152602001613a24602791396002549190612c51565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600061274c83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250612c51565b3390565b60008261304457506000610ae7565b8282028284828161305157fe5b041461274c5760405162461bcd60e51b8152600401808060200182810382526021815260200180613a4b6021913960400191505060405180910390fd5b600061274c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061380d565b60006130da6123fe565b85604051602001808061190160f01b81525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613173573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906131a95750866001600160a01b0316816001600160a01b0316145b6131e45760405162461bcd60e51b81526004018080602001828103825260248152602001806139886024913960400191505060405180910390fd5b50505050505050565b4690565b60145460175460408051631c57762b60e31b8152600481019290925260006024830181905290516001600160a01b039093169263e2bbb15892604480820193929182900301818387803b15801561324757600080fd5b505af115801561325b573d6000803e3d6000fd5b50505050600061327c612710611e266012548561303590919063ffffffff16565b9050801561334457600b54600c546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b1580156132dd57600080fd5b505af11580156132f1573d6000803e3d6000fd5b505050506040513d602081101561330757600080fd5b50516133445760405162461bcd60e51b8152600401808060200182810382526021815260200180613a6c6021913960400191505060405180910390fd5b6000613361612710611e266011548661303590919063ffffffff16565b9050801561343057600b546001600160a01b031663a9059cbb613382611721565b836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156133c957600080fd5b505af11580156133dd573d6000803e3d6000fd5b505050506040513d60208110156133f357600080fd5b50516134305760405162461bcd60e51b8152600401808060200182810382526023815260200180613b366023913960400191505060405180910390fd5b600061344d612710611e266010548761303590919063ffffffff16565b9050801561351057600b546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b1580156134a957600080fd5b505af11580156134bd573d6000803e3d6000fd5b505050506040513d60208110156134d357600080fd5b50516135105760405162461bcd60e51b81526004018080602001828103825260248152602001806139d66024913960400191505060405180910390fd5b60006135288261352285818989612fef565b90612fef565b90506135338161358a565b60095461354090826126f2565b600981905560025460408051928352602083019190915280517fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef2349281900390910190a15050505050565b6000613595826136f0565b90506135a082613872565b610b97815b600081116135fa576040805162461bcd60e51b815260206004820181905260248201527f436f6d706f756e64696e6742616d626f6f3a3a5f7374616b655342616d626f6f604482015290519081900360640190fd5b60145460175460408051631c57762b60e31b8152600481019290925260248201849052516001600160a01b039092169163e2bbb1589160448082019260009290919082900301818387803b15801561365157600080fd5b505af1158015610f04573d6000803e3d6000fd5b60025461367290826126f2565b6002556001600160a01b03821660009081526004602052604090205461369890826126f2565b6001600160a01b03831660008181526004602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600a54601554604080516370a0823160e01b81526001600160a01b0392831660048201529051600093849316916370a08231916024808301926020929190829003018186803b15801561374257600080fd5b505afa158015613756573d6000803e3d6000fd5b505050506040513d602081101561376c57600080fd5b5051601654604080516318160ddd60e01b815290519293506000926001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b1580156137b957600080fd5b505afa1580156137cd573d6000803e3d6000fd5b505050506040513d60208110156137e357600080fd5b505190506137f18282613035565b6137ff578392505050611217565b61298882611e268684613035565b6000818361385c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612ca5578181015183820152602001612c8d565b50600083858161386857fe5b0495945050505050565b600081116138b15760405162461bcd60e51b815260040180806020018281038252602a8152602001806139ac602a913960400191505060405180910390fd5b60155460408051632967cf8360e21b81526004810184905290516001600160a01b039092169163a59f3e0c9160248082019260009290919082900301818387803b15801561365157600080fdfe436f6d706f756e64696e6742616d626f6f3a3a5f6465706f7369742c20746f6b656e206e6f742061636365707465644f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e6f20616c6c6f776564206465706f7369746f7273417263683a3a76616c69646174655369673a20696e76616c6964207369676e6174757265436f6d706f756e64696e6742616d626f6f3a3a5f636f6e7665727442616d626f6f546f5342616d626f6f436f6d706f756e64696e6742616d626f6f3a3a5f7265696e766573742c207265776172645065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e6f7420616c6c6f7765645f6275726e3a206275726e20616d6f756e74206578636565647320746f74616c20737570706c79536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6d706f756e64696e6742616d626f6f3a3a5f7265696e766573742c206465764f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f2061646472657373436f6d706f756e64696e6742616d626f6f3a3a7265736375654465706c6f79656446756e64737472616e7366657246726f6d3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f6d706f756e64696e6742616d626f6f3a3a5f7265696e766573742c2061646d696e5f6275726e3a206275726e20616d6f756e7420657863656564732066726f6d2062616c616e63655f7472616e73666572546f6b656e733a207472616e7366657220657863656564732066726f6d2062616c616e6365436f6d706f756e64696e6742616d626f6f3a3a5f77697468647261774465706f736974546f6b656e73a2646970667358221220f156d2cd606c6991089cc8f4fa9d6f32e0c3dbf2a2d4a99af33785d01590783064736f6c634300070300334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000009a928d7dcd8d7e5cb6860b7768ec2d87b89342670000000000000000000000009a928d7dcd8d7e5cb6860b7768ec2d87b8934267000000000000000000000000124737ce6a43a98caaf095accb9a9d6fccbb0e730000000000000000000000001f7e9bb6ea1da3c4a2647ddac02ce63a21b5691e0000000000000000000000008d36c5c6947adccd25ef49ea1aac2ceacfff0bd700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008ac7230489e8000000000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000000012436f6d706f756e64696e672042616d626f6f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000076342414d424f4f00000000000000000000000000000000000000000000000000
0x4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000009a928d7dcd8d7e5cb6860b7768ec2d87b89342670000000000000000000000009a928d7dcd8d7e5cb6860b7768ec2d87b8934267000000000000000000000000124737ce6a43a98caaf095accb9a9d6fccbb0e730000000000000000000000001f7e9bb6ea1da3c4a2647ddac02ce63a21b5691e0000000000000000000000008d36c5c6947adccd25ef49ea1aac2ceacfff0bd700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008ac7230489e8000000000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000000012436f6d706f756e64696e672042616d626f6f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000076342414d424f4f00000000000000000000000000000000000000000000000000