[ { "inputs": [ { "internalType": "address", "name": "_admin", "type": "address" }, { "internalType": "uint256", "name": "_initialSupply", "type": "uint256" }, { "internalType": "uint256", "name": "_buyFee", "type": "uint256" }, { "internalType": "uint256", "name": "_sellFee", "type": "uint256" }, { "internalType": "address", "name": "_feeCollector", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "string", "name": "err", "type": "string" } ], "name": "AccessIsDenied", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "err", "type": "string" } ], "name": "ExistsAddress", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "err", "type": "string" } ], "name": "ExistsValue", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "err", "type": "string" } ], "name": "HighValue", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "err", "type": "string" } ], "name": "IsNotContract", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "err", "type": "string" } ], "name": "NotFoundAddress", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "err", "type": "string" } ], "name": "ZeroAddress", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "err", "type": "string" } ], "name": "ZeroAmount", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "addressPair", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "enabled", "type": "bool" }, { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "AddPair", "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": "bool", "name": "enabled", "type": "bool" }, { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "DisableFees", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bool", "name": "enabled", "type": "bool" }, { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "EnableFees", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "addressPair", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "disable", "type": "bool" }, { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "RemovePair", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "buyFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "sellFee", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "SetFees", "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": "buyFee", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "UpdateBuyFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "feeCollector", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "UpdateFeeCollector", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "buyFee", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "UpdateSellFee", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FEE_DISTRIBUTION_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addressPair", "type": "address" } ], "name": "addPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "buyFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "disableFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "enableFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "feeCollector", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "isEnabledFees", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "pairs", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addressPair", "type": "address" } ], "name": "removePair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sellFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_buyFee", "type": "uint256" } ], "name": "updateBuyFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newFeeCollector", "type": "address" } ], "name": "updateFeeCollector", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_buyFee", "type": "uint256" }, { "internalType": "uint256", "name": "_sellFee", "type": "uint256" } ], "name": "updateFeesPercents", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_sellFee", "type": "uint256" } ], "name": "updateSellFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b506040516200206b3803806200206b833981016040819052620000349162000423565b60405180604001604052806008815260200167496e51756265746160c01b815250604051806040016040528060048152602001635155424560e01b81525081600390816200008391906200051c565b5060046200009282826200051c565b505050828261271082101580620000ab57506127108110155b15620000ff5760405163c55530a760e01b815260206004820152601f60248201527f496e5175626574613a204665652076616c756520697320746f6f20686967680060448201526064015b60405180910390fd5b6001600160a01b03831615806200011d57506001600160a01b038716155b156200016d5760405163eac0d38960e01b815260206004820152601660248201527f496e5175626574613a205a65726f2061646472657373000000000000000000006044820152606401620000f6565b6001600160a01b0383163b620001d9576040516357a4a13960e01b815260206004820152602960248201527f496e5175626574613a2046656520636f6c6c6563746f72206973206e6f7420616044820152680818dbdb9d1c9858dd60ba1b6064820152608401620000f6565b620001e5878762000264565b600680546001600160a01b0319166001600160a01b0385161790556200020d6000886200034a565b620002286000805160206200204b833981519152886200034a565b620002436000805160206200204b833981519152846200034a565b50505060079190915560085550506009805460ff191660011790556200060a565b6001600160a01b038216620002bc5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620000f6565b8060026000828254620002d09190620005e8565b90915550506001600160a01b03821660009081526020819052604081208054839290620002ff908490620005e8565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b5050565b620003568282620003d9565b620003465760008281526005602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620003903390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b505050565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff165b92915050565b80516001600160a01b03811681146200041e57600080fd5b919050565b600080600080600060a086880312156200043c57600080fd5b620004478662000406565b94506020860151935060408601519250606086015191506200046c6080870162000406565b90509295509295909350565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004a357607f821691505b602082108103620004c457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003d457600081815260208120601f850160051c81016020861015620004f35750805b601f850160051c820191505b818110156200051457828155600101620004ff565b505050505050565b81516001600160401b0381111562000538576200053862000478565b62000550816200054984546200048e565b84620004ca565b602080601f8311600181146200058857600084156200056f5750858301515b600019600386901b1c1916600185901b17855562000514565b600085815260208120601f198616915b82811015620005b95788860151825594840194600190910190840162000598565b5085821015620005d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200040057634e487b7160e01b600052601160045260246000fd5b611a31806200061a6000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c806370a082311161011a578063c2b7bbb6116100ad578063d2c35ce81161007c578063d2c35ce81461043e578063d547741f14610451578063dd62ed3e14610464578063edd508d814610477578063fe33b3021461048c57600080fd5b8063c2b7bbb6146103e5578063c415b95c146103f8578063ce404b2314610423578063d007db8a1461042b57600080fd5b8063a217fddf116100e9578063a217fddf146103a4578063a457c2d7146103ac578063a9059cbb146103bf578063af6c9c1d146103d257600080fd5b806370a082311461034d57806379cc67901461037657806391d148541461038957806395d89b411461039c57600080fd5b80632f2ff15d1161019d578063395093511161016c57806339509351146102fe57806342966c6814610311578063467abe0a146103245780634706240214610337578063552b37881461034057600080fd5b80632f2ff15d146102c1578063313ce567146102d457806336568abe146102e3578063368f5bd5146102f657600080fd5b80631d933a4a116101d95780631d933a4a1461026d57806323b872dd14610282578063248a9ca3146102955780632b14ca56146102b857600080fd5b806301ffc9a71461020b57806306fdde0314610233578063095ea7b31461024857806318160ddd1461025b575b600080fd5b61021e61021936600461165e565b6104af565b60405190151581526020015b60405180910390f35b61023b6104e6565b60405161022a91906116ac565b61021e6102563660046116fb565b610578565b6002545b60405190815260200161022a565b61028061027b366004611725565b610590565b005b61021e61029036600461173e565b610605565b61025f6102a3366004611725565b60009081526005602052604090206001015490565b61025f60085481565b6102806102cf36600461177a565b610625565b6040516012815260200161022a565b6102806102f136600461177a565b61064f565b6102806106cd565b61021e61030c3660046116fb565b610724565b61028061031f366004611725565b610746565b610280610332366004611725565b610753565b61025f60075481565b60095461021e9060ff1681565b61025f61035b3660046117a6565b6001600160a01b031660009081526020819052604090205490565b6102806103843660046116fb565b6107b7565b61021e61039736600461177a565b6107cc565b61023b6107f7565b61025f600081565b61021e6103ba3660046116fb565b610806565b61021e6103cd3660046116fb565b61088c565b6102806103e03660046117a6565b6108a0565b6102806103f33660046117a6565b61092c565b60065461040b906001600160a01b031681565b6040516001600160a01b03909116815260200161022a565b610280610a22565b6102806104393660046117c1565b610a74565b61028061044c3660046117a6565b610afe565b61028061045f36600461177a565b610c96565b61025f6104723660046117e3565b610cbb565b61025f6000805160206119dc83398151915281565b61021e61049a3660046117a6565b600a6020526000908152604090205460ff1681565b60006001600160e01b03198216637965db0b60e01b14806104e057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600380546104f59061180d565b80601f01602080910402602001604051908101604052809291908181526020018280546105219061180d565b801561056e5780601f106105435761010080835404028352916020019161056e565b820191906000526020600020905b81548152906001019060200180831161055157829003601f168201915b5050505050905090565b600033610586818585610ce6565b5060019392505050565b600061059b81610e0a565b61271082106105c65760405163c55530a760e01b81526004016105bd90611847565b60405180910390fd5b600882905560405182815242907fde4022aab72c416fa5c54f5b02a3d8ce50d8a9418a85c790d51cf759ebb4697d906020015b60405180910390a25050565b6000610612843384610e14565b61061d848484610e8e565b949350505050565b60008281526005602052604090206001015461064081610e0a565b61064a8383611055565b505050565b6001600160a01b03811633146106bf5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105bd565b6106c982826110db565b5050565b6000805160206119dc8339815191526106e581610e0a565b6009805460ff191660019081179091556040514291907f45d3d04798348aacd1da05f8d95eaada62ac3be2dd76963d14a07be993aa92b390600090a350565b6000336105868185856107378383610cbb565b6107419190611894565b610ce6565b6107503382611142565b50565b600061075e81610e0a565b61271082106107805760405163c55530a760e01b81526004016105bd90611847565b600782905560405182815242907fc66f11a4e1af275a2ecb111e96ff29a572358bd3abd0d8851f439ca0f4aa40ac906020016105f9565b6107c2823383610e14565b6106c98282611142565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600480546104f59061180d565b600033816108148286610cbb565b9050838110156108745760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105bd565b6108818286868403610ce6565b506001949350505050565b6000610899338484610e8e565b9392505050565b60006108ab81610e0a565b6001600160a01b0382166108d25760405163eac0d38960e01b81526004016105bd906118a7565b6001600160a01b0382166000818152600a60209081526040808320805460ff19169055519182524292917fd108346601a5498fb2ea1df88bcbf18b017bdff6996ebd27f3c544832810db7891015b60405180910390a35050565b600061093781610e0a565b6001600160a01b03821661095e5760405163eac0d38960e01b81526004016105bd906118a7565b6001600160a01b0382166000908152600a602052604090205460ff16156109c85760405163dfd4246160e01b815260206004820181905260248201527f496e5175626574613a204164647265737320616c72656164792065786973747360448201526064016105bd565b6001600160a01b0382166000818152600a6020908152604091829020805460ff1916600190811790915591519182524292917f577f9843a7881187d256e1ac26a17ed75a342a460135625e44f9136939cf2a349101610920565b6000805160206119dc833981519152610a3a81610e0a565b6009805460ff1916905560405142906000907fd1095bab2961add9cd6fcc56b95597100f510c20e90abae35cf12ad1aa83b7b0908290a350565b6000610a7f81610e0a565b828261271082101580610a9457506127108110155b15610ab25760405163c55530a760e01b81526004016105bd90611847565b60078590556008849055604080518681526020810186905242917f37322890d66d781059d797be5e2f27dc160a34d8bc0a8e09116cb9a773ce88ef910160405180910390a25050505050565b6000610b0981610e0a565b6001600160a01b038216610b305760405163eac0d38960e01b81526004016105bd906118a7565b6006546001600160a01b0390811690831603610b9a5760405163dfd4246160e01b815260206004820152602260248201527f496e5175626574613a204e6f206e657720616464726573732073706563696669604482015261195960f21b60648201526084016105bd565b6001600160a01b0382163b610c04576040516357a4a13960e01b815260206004820152602960248201527f496e5175626574613a2046656520636f6c6c6563746f72206973206e6f7420616044820152680818dbdb9d1c9858dd60ba1b60648201526084016105bd565b600654610c29906000805160206119dc833981519152906001600160a01b0316610c96565b600680546001600160a01b0319166001600160a01b038416179055610c5c6000805160206119dc83398151915283610625565b60405142906001600160a01b038416907f508c75403cc8fb7a6325dded13c32b3f556a49653f5bbc55ac7ef2937ea53d4890600090a35050565b600082815260056020526040902060010154610cb181610e0a565b61064a83836110db565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b038316610d485760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105bd565b6001600160a01b038216610da95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105bd565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6107508133611290565b6000610e208484610cbb565b90506000198114610e885781811015610e7b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105bd565b610e888484848403610ce6565b50505050565b60095460009060ff161561104a576001600160a01b0383166000908152600a602052604090205460ff1615610f7357600061271060085484610ed091906118d7565b610eda91906118ee565b90506000610ee88285611910565b600654909150610f039087906001600160a01b0316846112f4565b610f0e8686836112f4565b60065460405163cde38c9760e01b8152600481018490526001600160a01b039091169063cde38c9790602401600060405180830381600087803b158015610f5457600080fd5b505af1158015610f68573d6000803e3d6000fd5b505050505050610586565b6001600160a01b0384166000908152600a602052604090205460ff161561103a57600061271060075484610fa791906118d7565b610fb191906118ee565b9050610fbe8585856112f4565b600654610fd69085906001600160a01b0316836112f4565b60065460405163151f8b7b60e21b8152600481018390526001600160a01b039091169063547e2dec90602401600060405180830381600087803b15801561101c57600080fd5b505af1158015611030573d6000803e3d6000fd5b5050505050610586565b6110458484846112f4565b610586565b6105868484846112f4565b61105f82826107cc565b6106c95760008281526005602090815260408083206001600160a01b03851684529091529020805460ff191660011790556110973390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6110e582826107cc565b156106c95760008281526005602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b0382166111a25760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105bd565b6001600160a01b038216600090815260208190526040902054818110156112165760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105bd565b6001600160a01b0383166000908152602081905260408120838303905560028054849290611245908490611910565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b61129a82826107cc565b6106c9576112b2816001600160a01b031660146114c2565b6112bd8360206114c2565b6040516020016112ce929190611923565b60408051601f198184030181529082905262461bcd60e51b82526105bd916004016116ac565b6001600160a01b0383166113585760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105bd565b6001600160a01b0382166113ba5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105bd565b6001600160a01b038316600090815260208190526040902054818110156114325760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105bd565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611469908490611894565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114b591815260200190565b60405180910390a3610e88565b606060006114d18360026118d7565b6114dc906002611894565b67ffffffffffffffff8111156114f4576114f4611998565b6040519080825280601f01601f19166020018201604052801561151e576020820181803683370190505b509050600360fc1b81600081518110611539576115396119ae565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611568576115686119ae565b60200101906001600160f81b031916908160001a905350600061158c8460026118d7565b611597906001611894565b90505b600181111561160f576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106115cb576115cb6119ae565b1a60f81b8282815181106115e1576115e16119ae565b60200101906001600160f81b031916908160001a90535060049490941c93611608816119c4565b905061159a565b5083156108995760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105bd565b60006020828403121561167057600080fd5b81356001600160e01b03198116811461089957600080fd5b60005b838110156116a357818101518382015260200161168b565b50506000910152565b60208152600082518060208401526116cb816040850160208701611688565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146116f657600080fd5b919050565b6000806040838503121561170e57600080fd5b611717836116df565b946020939093013593505050565b60006020828403121561173757600080fd5b5035919050565b60008060006060848603121561175357600080fd5b61175c846116df565b925061176a602085016116df565b9150604084013590509250925092565b6000806040838503121561178d57600080fd5b8235915061179d602084016116df565b90509250929050565b6000602082840312156117b857600080fd5b610899826116df565b600080604083850312156117d457600080fd5b50508035926020909101359150565b600080604083850312156117f657600080fd5b6117ff836116df565b915061179d602084016116df565b600181811c9082168061182157607f821691505b60208210810361184157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601f908201527f496e5175626574613a204665652076616c756520697320746f6f206869676800604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156104e0576104e061187e565b602080825260169082015275496e5175626574613a205a65726f206164647265737360501b604082015260600190565b80820281158282048414176104e0576104e061187e565b60008261190b57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156104e0576104e061187e565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161195b816017850160208801611688565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161198c816028840160208801611688565b01602801949350505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000816119d3576119d361187e565b50600019019056fea56be0bb4dc7e0954b8ccc78ba1e1a046d82357f58efb06203f0030483436deda2646970667358221220f564af54824ee07c033d4c6750b0aeb718963e15301ca4ead3d510d2271322ab64736f6c63430008130033a56be0bb4dc7e0954b8ccc78ba1e1a046d82357f58efb06203f0030483436ded0000000000000000000000007ae3469486198aed92fb82410e27b82fa6c389cc000000000000000000000000000000000000000004d8c55aefb8c05b5c00000000000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000003e8000000000000000000000000c9e6c3b7b7c256be5eeae0987cba7a9cc57a68da