[ { "inputs": [ { "internalType": "contract IPool", "name": "pool", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "BalanceTransfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "target", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "balanceIncrease", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "Burn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "underlyingAsset", "type": "address" }, { "indexed": true, "internalType": "address", "name": "pool", "type": "address" }, { "indexed": false, "internalType": "address", "name": "treasury", "type": "address" }, { "indexed": false, "internalType": "address", "name": "incentivesController", "type": "address" }, { "indexed": false, "internalType": "uint8", "name": "aTokenDecimals", "type": "uint8" }, { "indexed": false, "internalType": "string", "name": "aTokenName", "type": "string" }, { "indexed": false, "internalType": "string", "name": "aTokenSymbol", "type": "string" }, { "indexed": false, "internalType": "bytes", "name": "params", "type": "bytes" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": true, "internalType": "address", "name": "onBehalfOf", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "balanceIncrease", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "Mint", "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" }, { "inputs": [], "name": "ATOKEN_REVISION", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "EIP712_REVISION", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMIT_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "POOL", "outputs": [ { "internalType": "contract IPool", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "RESERVE_TREASURY_ADDRESS", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UNDERLYING_ASSET_ADDRESS", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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": "user", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "receiverOfUnderlying", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "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": "getIncentivesController", "outputs": [ { "internalType": "contract IAaveIncentivesController", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "getPreviousIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "getScaledUserBalanceAndSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "address", "name": "onBehalfOf", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "handleRepayment", "outputs": [], "stateMutability": "nonpayable", "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": [ { "internalType": "contract IPool", "name": "initializingPool", "type": "address" }, { "internalType": "address", "name": "treasury", "type": "address" }, { "internalType": "address", "name": "underlyingAsset", "type": "address" }, { "internalType": "contract IAaveIncentivesController", "name": "incentivesController", "type": "address" }, { "internalType": "uint8", "name": "aTokenDecimals", "type": "uint8" }, { "internalType": "string", "name": "aTokenName", "type": "string" }, { "internalType": "string", "name": "aTokenSymbol", "type": "string" }, { "internalType": "bytes", "name": "params", "type": "bytes" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" }, { "internalType": "address", "name": "onBehalfOf", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "mint", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "mintToTreasury", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "address", "name": "token", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "rescueTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "scaledBalanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "scaledTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract IAaveIncentivesController", "name": "controller", "type": "address" } ], "name": "setIncentivesController", "outputs": [], "stateMutability": "nonpayable", "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": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "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": "value", "type": "uint256" } ], "name": "transferOnLiquidation", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferUnderlyingTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60e0604052600080553480156200001557600080fd5b5060405162002b5a38038062002b5a83398101604081905262000038916200021d565b806040518060400160405280600b81526020016a105513d2d15397d253541360aa1b8152506040518060400160405280600b81526020016a105513d2d15397d253541360aa1b81525060008383838383838383836001600160a01b0316630542975c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f091906200021d565b6001600160a01b03166080528251620001119060379060208601906200015e565b508151620001279060389060208501906200015e565b506039805460ff191660ff9290921691909117905550506001600160a01b031660a05250504660c052506200028195505050505050565b8280546200016c9062000244565b90600052602060002090601f016020900481019282620001905760008555620001db565b82601f10620001ab57805160ff1916838001178555620001db565b82800160010185558215620001db579182015b82811115620001db578251825591602001919060010190620001be565b50620001e9929150620001ed565b5090565b5b80821115620001e95760008155600101620001ee565b6001600160a01b03811681146200021a57600080fd5b50565b6000602082840312156200023057600080fd5b81516200023d8162000204565b9392505050565b600181811c908216806200025957607f821691505b602082108114156200027b57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c0516128476200031360003960006115770152600081816103620152818161063501528181610755015281816108ab01528181610a2101528181610a9f01528181610b1401528181610bac01528181610c0501528181610ceb0152818161111d0152818161130401528181611a0d0152611af4015260008181610d4b015261119b01526128476000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c8063781603761161011a578063b1bf962d116100ad578063d7020d0a1161007c578063d7020d0a14610489578063dd62ed3e1461049c578063e0753986146104d5578063e655dbd81461050e578063f866c3191461052157600080fd5b8063b1bf962d14610448578063b3f1c93d14610450578063cea9d26f14610463578063d505accf1461047657600080fd5b8063a457c2d7116100e9578063a457c2d714610400578063a9059cbb14610413578063ae16733514610426578063b16a19de1461043757600080fd5b806378160376146103b25780637df5bd3b146103d25780637ecebe00146103e557806395d89b41146103f857600080fd5b806330adf81f1161019d5780634efecaa51161016c5780634efecaa5146103245780636fd976761461033757806370a082311461034a5780637535d2461461035d57806375d264131461039c57600080fd5b806330adf81f146102cd578063313ce567146102f45780633644e51514610309578063395093511461031157600080fd5b806318160ddd116101d957806318160ddd1461028a578063183fb413146102925780631da24f3e146102a757806323b872dd146102ba57600080fd5b806306fdde031461020b578063095ea7b3146102295780630afbcdc91461024c5780630bd7ad3b14610274575b600080fd5b610213610534565b60405161022091906122c2565b60405180910390f35b61023c610237366004612304565b6105c6565b6040519015158152602001610220565b61025f61025a366004612330565b6105dc565b60408051928352602083019190915201610220565b61027c600281565b604051908152602001610220565b61027c6105f4565b6102a56102a03660046123a7565b6106ad565b005b61027c6102b5366004612330565b610944565b61023c6102c836600461249b565b610955565b61027c7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460405160ff9091168152602001610220565b61027c6109bf565b61023c61031f366004612304565b6109ce565b6102a5610332366004612304565b610a05565b6102a561034536600461249b565b610a83565b61027c610358366004612330565b610aeb565b6103847f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610220565b60395461010090046001600160a01b0316610384565b610213604051806040016040528060018152602001603160f81b81525081565b6102a56103e03660046124dc565b610b90565b61027c6103f3366004612330565b610c3a565b610213610c58565b61023c61040e366004612304565b610c67565b61023c610421366004612304565b610c9e565b603c546001600160a01b0316610384565b603d546001600160a01b0316610384565b61027c610cc1565b61023c61045e3660046124fe565b610ccc565b6102a561047136600461249b565b610d47565b6102a5610484366004612544565b610ecd565b6102a56104973660046124fe565b611101565b61027c6104aa3660046125b2565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b61027c6104e3366004612330565b6001600160a01b0316600090815260346020526040902054600160801b90046001600160801b031690565b6102a561051c366004612330565b611197565b6102a561052f36600461249b565b6112e8565b606060378054610543906125eb565b80601f016020809104026020016040519081016040528092919081815260200182805461056f906125eb565b80156105bc5780601f10610591576101008083540402835291602001916105bc565b820191906000526020600020905b81548152906001019060200180831161059f57829003601f168201915b5050505050905090565b60006105d3338484611358565b50600192915050565b6000806105e8836113b9565b60365491509150915091565b60008061060060365490565b90508061060f57600091505090565b603d5460405163d15e005360e01b81526001600160a01b0391821660048201526106a7917f0000000000000000000000000000000000000000000000000000000000000000169063d15e005390602401602060405180830381865afa15801561067c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a09190612620565b82906113dd565b91505090565b60015460029060ff16806106c05750303b155b806106cc575060005481115b6107345760405162461bcd60e51b815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201526d195b881a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b60015460ff16158015610753576001805460ff19168117905560008290555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168d6001600160a01b03161460405180604001604052806002815260200161383760f01b815250906107c15760405162461bcd60e51b815260040161072b91906122c2565b5061080188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061142192505050565b61084086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061143492505050565b6039805460ff191660ff8b16179055603c80546001600160a01b03808f166001600160a01b031992831617909255603d80548e8416921691909117905560398054918c1661010002610100600160a81b03199092169190911790556108a3611447565b603b819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168b6001600160a01b03167fb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b8e8d8d8d8d8d8d8d8d60405161091c99989796959493929190612662565b60405180910390a38015610935576001805460ff191690555b50505050505050505050505050565b600061094f826113b9565b92915050565b600080610961836114f0565b6001600160a01b0386166000908152603560209081526040808320338085529252909120549192506109a9918791906109a4906001600160801b038616906126e6565b611358565b6109b485858361155d565b506001949350505050565b60006109c9611573565b905090565b3360008181526035602090815260408083206001600160a01b038716845290915281205490916105d39185906109a49086906126fd565b604080518082019091526002815261323360f01b6020820152337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610a675760405162461bcd60e51b815260040161072b91906122c2565b50603d54610a7f906001600160a01b031683836115ac565b5050565b604080518082019091526002815261323360f01b6020820152337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610ae55760405162461bcd60e51b815260040161072b91906122c2565b50505050565b603d5460405163d15e005360e01b81526001600160a01b03918216600482015260009161094f917f00000000000000000000000000000000000000000000000000000000000000009091169063d15e005390602401602060405180830381865afa158015610b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b819190612620565b610b8a846113b9565b906113dd565b604080518082019091526002815261323360f01b6020820152337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610bf25760405162461bcd60e51b815260040161072b91906122c2565b5081610bfc575050565b603c54610c35907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03168484611637565b505050565b6001600160a01b0381166000908152603a602052604081205461094f565b606060388054610543906125eb565b3360008181526035602090815260408083206001600160a01b038716845290915281205490916105d39185906109a49086906126e6565b600080610caa836114f0565b9050610cb733858361155d565b5060019392505050565b60006109c960365490565b604080518082019091526002815261323360f01b6020820152600090337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610d315760405162461bcd60e51b815260040161072b91906122c2565b50610d3e85858585611637565b95945050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663707cd7166040518163ffffffff1660e01b8152600401602060405180830381865afa158015610da7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcb9190612715565b604051637be53ca160e01b81523360048201529091506001600160a01b03821690637be53ca190602401602060405180830381865afa158015610e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e369190612732565b604051806040016040528060018152602001603160f81b81525090610e6e5760405162461bcd60e51b815260040161072b91906122c2565b50603d54604080518082019091526002815261383560f01b6020820152906001600160a01b0386811691161415610eb85760405162461bcd60e51b815260040161072b91906122c2565b50610ae56001600160a01b03851684846115ac565b604080518082019091526002815261373760f01b60208201526001600160a01b038816610f0d5760405162461bcd60e51b815260040161072b91906122c2565b50834211156040518060400160405280600281526020016106e760f31b81525090610f4b5760405162461bcd60e51b815260040161072b91906122c2565b506001600160a01b0387166000908152603a602052604081205490610f6e6109bf565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960208201526001600160a01b03808d1692820192909252908a1660608201526080810189905260a0810184905260c0810188905260e0016040516020818303038152906040528051906020012060405160200161100792919061190160f01b81526002810192909252602282015260420190565b60408051601f1981840301815282825280516020918201206000845290830180835281905260ff8816918301919091526060820186905260808201859052915060019060a0016020604051602081039080840390855afa15801561106f573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b03161460405180604001604052806002815260200161373960f01b815250906110c65760405162461bcd60e51b815260040161072b91906122c2565b506110d28260016126fd565b6001600160a01b038a166000908152603a60205260409020556110f6898989611358565b505050505050505050565b604080518082019091526002815261323360f01b6020820152337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146111635760405162461bcd60e51b815260040161072b91906122c2565b50611170848484846117bc565b6001600160a01b0383163014610ae557603d54610ae5906001600160a01b031684846115ac565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663707cd7166040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121b9190612715565b604051637be53ca160e01b81523360048201529091506001600160a01b03821690637be53ca190602401602060405180830381865afa158015611262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112869190612732565b604051806040016040528060018152602001603160f81b815250906112be5760405162461bcd60e51b815260040161072b91906122c2565b5050603980546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b604080518082019091526002815261323360f01b6020820152337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461134a5760405162461bcd60e51b815260040161072b91906122c2565b50610c3583838360006119e5565b6001600160a01b0383811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03166000908152603460205260409020546001600160801b031690565b600081156b019d971e4fe8401e7400000019839004841115176113ff57600080fd5b506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b8051610a7f9060379060208401906121e5565b8051610a7f9060389060208401906121e5565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611472611b9e565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60006001600160801b038211156115595760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b606482015260840161072b565b5090565b610c358383836001600160801b031660016119e5565b60007f00000000000000000000000000000000000000000000000000000000000000004614156115a45750603b5490565b6109c9611447565b60405163a9059cbb60e01b8082526001600160a01b0384166004830152602482018390529060008060448382895af16115e9573d6000803e3d6000fd5b506115f384611ba8565b610ae55760405162461bcd60e51b815260206004820152601560248201527423a83b191d103330b4b632b2103a3930b739b332b960591b604482015260640161072b565b6000806116448484611c51565b6040805180820190915260028152610c8d60f21b60208201529091508161167e5760405162461bcd60e51b815260040161072b91906122c2565b50600061168a866113b9565b6001600160a01b038716600090815260346020526040812054919250906116c2908390600160801b90046001600160801b03166113dd565b6116cc83876113dd565b6116d691906126e6565b90506116e1856114f0565b6001600160a01b038816600090815260346020526040902080546001600160801b03928316600160801b02921691909117905561172687611721856114f0565b611c90565b600061173282886126fd565b9050876001600160a01b031660006001600160a01b03166000805160206127f28339815191528360405161176891815260200190565b60405180910390a360408051828152602081018490529081018790526001600160a01b03808a1691908b16906000805160206127d28339815191529060600160405180910390a35050159695505050505050565b60006117c88383611c51565b604080518082019091526002815261323560f01b6020820152909150816118025760405162461bcd60e51b815260040161072b91906122c2565b50600061180e866113b9565b6001600160a01b03871660009081526034602052604081205491925090611846908390600160801b90046001600160801b03166113dd565b61185083866113dd565b61185a91906126e6565b9050611865846114f0565b6001600160a01b038816600090815260346020526040902080546001600160801b03928316600160801b0292169190911790556118aa876118a5856114f0565b611d81565b8481111561193e5760006118be86836126e6565b9050876001600160a01b031660006001600160a01b03166000805160206127f2833981519152836040516118f491815260200190565b60405180910390a360408051828152602081018490529081018690526001600160a01b0389169081906000805160206127d28339815191529060600160405180910390a3506119dc565b600061194a82876126e6565b905060006001600160a01b0316886001600160a01b03166000805160206127f28339815191528360405161198091815260200190565b60405180910390a360408051828152602081018490529081018690526001600160a01b0380891691908a16907f4cf25bc1d991c17529c25213d3cc0cda295eeaad5f13f361969b12ea48015f90906060015b60405180910390a3505b50505050505050565b603d5460405163d15e005360e01b81526001600160a01b0391821660048201819052916000917f00000000000000000000000000000000000000000000000000000000000000009091169063d15e005390602401602060405180830381865afa158015611a56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7a9190612620565b90506000611a8b82610b8a896113b9565b90506000611a9c83610b8a896113b9565b9050611aaa88888886611dc6565b8415611b515760405163d5ed393360e01b81526001600160a01b03858116600483015289811660248301528881166044830152606482018890526084820184905260a482018390527f0000000000000000000000000000000000000000000000000000000000000000169063d5ed39339060c401600060405180830381600087803b158015611b3857600080fd5b505af1158015611b4c573d6000803e3d6000fd5b505050505b6001600160a01b038088169089167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda8666611b8a8987611c51565b6040805191825260208201889052016119d2565b60606109c9610534565b6000611bce565b62461bcd60e51b60005260206004528060245250806044525060646000fd5b3d8015611c0d5760208114611c3e57611c087f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f611baf565b611c4b565b823b611c3557611c357311d41d8c8e881b9bdd08184818dbdb9d1c9858dd60621b6014611baf565b60019150611c4b565b3d6000803e600051151591505b50919050565b600081156b033b2e3c9fd0803ce800000060028404190484111715611c7557600080fd5b506b033b2e3c9fd0803ce80000009190910260028204010490565b603654611ca66001600160801b038316826126fd565b6036556001600160a01b0383166000908152603460205260409020546001600160801b0316611cd58382612754565b6001600160a01b03858116600090815260346020526040902080546001600160801b0319166001600160801b0393909316929092179091556039546101009004168015611d7a576040516318c39f1760e11b81526001600160a01b038216906331873e2e90611d4c9088908790879060040161277f565b600060405180830381600087803b158015611d6657600080fd5b505af11580156110f6573d6000803e3d6000fd5b5050505050565b603654611d976001600160801b038316826126e6565b6036556001600160a01b0383166000908152603460205260409020546001600160801b0316611cd583826127a9565b6000611dd1856113b9565b6001600160a01b03861660009081526034602052604081205491925090611e09908390600160801b90046001600160801b03166113dd565b611e1383856113dd565b611e1d91906126e6565b90506000611e2a866113b9565b6001600160a01b03871660009081526034602052604081205491925090611e62908390600160801b90046001600160801b03166113dd565b611e6c83876113dd565b611e7691906126e6565b9050611e81856114f0565b6001600160a01b038916600090815260346020526040902080546001600160801b03928316600160801b029216919091179055611ebd856114f0565b6001600160a01b038816600090815260346020526040902080546001600160801b03928316600160801b029216919091179055611f0c8888611f07611f028a8a611c51565b6114f0565b612042565b8215611f7d576040518381526001600160a01b038916906000906000805160206127f28339815191529060200160405180910390a3604080518481526020810185905280820187905290516001600160a01b038a169133916000805160206127d28339815191529181900360600190a35b866001600160a01b0316886001600160a01b031614158015611f9f5750600081115b1561200f576040518181526001600160a01b038816906000906000805160206127f28339815191529060200160405180910390a3604080518281526020810183905280820187905290516001600160a01b0389169133916000805160206127d28339815191529181900360600190a35b866001600160a01b0316886001600160a01b03166000805160206127f2833981519152886040516119d291815260200190565b6001600160a01b0383166000908152603460205260409020546001600160801b031661206e82826127a9565b6001600160a01b0385811660009081526034602052604080822080546001600160801b0319166001600160801b0395861617905591861681522054166120b48382612754565b6001600160a01b03858116600090815260346020526040902080546001600160801b0319166001600160801b03939093169290921790915560395461010090041680156121dd576036546040516318c39f1760e11b81526001600160a01b038316906331873e2e9061212e908a908590899060040161277f565b600060405180830381600087803b15801561214857600080fd5b505af115801561215c573d6000803e3d6000fd5b50505050856001600160a01b0316876001600160a01b0316146119dc576040516318c39f1760e11b81526001600160a01b038316906331873e2e906121a99089908590889060040161277f565b600060405180830381600087803b1580156121c357600080fd5b505af11580156121d7573d6000803e3d6000fd5b50505050505b505050505050565b8280546121f1906125eb565b90600052602060002090601f0160209004810192826122135760008555612259565b82601f1061222c57805160ff1916838001178555612259565b82800160010185558215612259579182015b8281111561225957825182559160200191906001019061223e565b506115599291505b808211156115595760008155600101612261565b6000815180845260005b8181101561229b5760208185018101518683018201520161227f565b818111156122ad576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006122d56020830184612275565b9392505050565b6001600160a01b03811681146122f157600080fd5b50565b80356122ff816122dc565b919050565b6000806040838503121561231757600080fd5b8235612322816122dc565b946020939093013593505050565b60006020828403121561234257600080fd5b81356122d5816122dc565b803560ff811681146122ff57600080fd5b60008083601f84011261237057600080fd5b50813567ffffffffffffffff81111561238857600080fd5b6020830191508360208285010111156123a057600080fd5b9250929050565b60008060008060008060008060008060006101008c8e0312156123c957600080fd5b6123d28c6122f4565b9a506123e060208d016122f4565b99506123ee60408d016122f4565b98506123fc60608d016122f4565b975061240a60808d0161234d565b965067ffffffffffffffff8060a08e0135111561242657600080fd5b6124368e60a08f01358f0161235e565b909750955060c08d013581101561244c57600080fd5b61245c8e60c08f01358f0161235e565b909550935060e08d013581101561247257600080fd5b506124838d60e08e01358e0161235e565b81935080925050509295989b509295989b9093969950565b6000806000606084860312156124b057600080fd5b83356124bb816122dc565b925060208401356124cb816122dc565b929592945050506040919091013590565b600080604083850312156124ef57600080fd5b50508035926020909101359150565b6000806000806080858703121561251457600080fd5b843561251f816122dc565b9350602085013561252f816122dc565b93969395505050506040820135916060013590565b600080600080600080600060e0888a03121561255f57600080fd5b873561256a816122dc565b9650602088013561257a816122dc565b955060408801359450606088013593506125966080890161234d565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156125c557600080fd5b82356125d0816122dc565b915060208301356125e0816122dc565b809150509250929050565b600181811c908216806125ff57607f821691505b60208210811415611c4b57634e487b7160e01b600052602260045260246000fd5b60006020828403121561263257600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038a811682528916602082015260ff8816604082015260c060608201819052600090612698908301888a612639565b82810360808401526126ab818789612639565b905082810360a08401526126c0818587612639565b9c9b505050505050505050505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156126f8576126f86126d0565b500390565b60008219821115612710576127106126d0565b500190565b60006020828403121561272757600080fd5b81516122d5816122dc565b60006020828403121561274457600080fd5b815180151581146122d557600080fd5b60006001600160801b03808316818516808303821115612776576127766126d0565b01949350505050565b6001600160a01b0393909316835260208301919091526001600160801b0316604082015260600190565b60006001600160801b03838116908316818110156127c9576127c96126d0565b03939250505056fe458f5fa412d0f69b08dd84872b0215675cc67bc1d5b6fd93300a1c3878b86196ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212207ebc4ea3bbba5f5824ec60beae76f1740b786fb3c7e89c96d9ee834b5fc654d164736f6c634300080a00330000000000000000000000005757b15f60331ef3edb11b16ab0ae72ae678ed51