[ { "inputs": [ { "internalType": "contract IERC20Upgradeable", "name": "_token", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" } ], "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": "delegator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "fromDelegate", "type": "address" }, { "indexed": true, "internalType": "address", "name": "toDelegate", "type": "address" } ], "name": "DelegateChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "delegate", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "previousBalance", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newBalance", "type": "uint256" } ], "name": "DelegateVotesChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "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": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "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": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint32", "name": "pos", "type": "uint32" } ], "name": "checkpoints", "outputs": [ { "components": [ { "internalType": "uint32", "name": "fromBlock", "type": "uint32" }, { "internalType": "uint224", "name": "votes", "type": "uint224" } ], "internalType": "struct ERC20VotesUpgradeable.Checkpoint", "name": "", "type": "tuple" } ], "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": [ { "internalType": "address", "name": "delegatee", "type": "address" } ], "name": "delegate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "delegateBySig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "delegates", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "depositFor", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "getPastTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "getPastVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [ { "internalType": "contract IERC20Upgradeable", "name": "_token", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" } ], "name": "initialize", "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": "account", "type": "address" } ], "name": "numCheckpoints", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "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": "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": [], "name": "underlying", "outputs": [ { "internalType": "contract IERC20Upgradeable", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdrawTo", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b50604051620034723803806200347283398101604081905262000034916200053b565b620000418383836200004a565b5050506200071f565b600054610100900460ff16158080156200006b5750600054600160ff909116105b806200009b575062000088306200019760201b62000dd61760201c565b1580156200009b575060005460ff166001145b620001045760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000128576000805461ff0019166101001790555b620001348383620001a6565b6200013f8362000212565b6200014a846200029c565b801562000191576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6001600160a01b03163b151590565b600054610100900460ff16620002025760405162461bcd60e51b815260206004820152602b60248201526000805160206200345283398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000fb565b6200020e828262000303565b5050565b600054610100900460ff166200026e5760405162461bcd60e51b815260206004820152602b60248201526000805160206200345283398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000fb565b6200029981604051806040016040528060018152602001603160f81b8152506200038160201b60201c565b50565b600054610100900460ff16620002f85760405162461bcd60e51b815260206004820152602b60248201526000805160206200345283398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000fb565b6200029981620003f7565b600054610100900460ff166200035f5760405162461bcd60e51b815260206004820152602b60248201526000805160206200345283398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000fb565b60686200036d838262000653565b5060696200037c828262000653565b505050565b600054610100900460ff16620003dd5760405162461bcd60e51b815260206004820152602b60248201526000805160206200345283398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000fb565b815160209283012081519190920120609791909155609855565b600054610100900460ff16620004535760405162461bcd60e51b815260206004820152602b60248201526000805160206200345283398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000fb565b61013080546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200049e57600080fd5b81516001600160401b0380821115620004bb57620004bb62000476565b604051601f8301601f19908116603f01168101908282118183101715620004e657620004e662000476565b816040528381526020925086838588010111156200050357600080fd5b600091505b8382101562000527578582018301518183018401529082019062000508565b600093810190920192909252949350505050565b6000806000606084860312156200055157600080fd5b83516001600160a01b03811681146200056957600080fd5b60208501519093506001600160401b03808211156200058757600080fd5b62000595878388016200048c565b93506040860151915080821115620005ac57600080fd5b50620005bb868287016200048c565b9150509250925092565b600181811c90821680620005da57607f821691505b602082108103620005fb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200037c57600081815260208120601f850160051c810160208610156200062a5750805b601f850160051c820191505b818110156200064b5782815560010162000636565b505050505050565b81516001600160401b038111156200066f576200066f62000476565b6200068781620006808454620005c5565b8462000601565b602080601f831160018114620006bf5760008415620006a65750858301515b600019600386901b1c1916600185901b1785556200064b565b600085815260208120601f198616915b82811015620006f057888601518255948401946001909101908401620006cf565b50858210156200070f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d23806200072f6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636f307dc3116100f95780639ab24eb011610097578063c3cda52011610071578063c3cda520146103d9578063d505accf146103ec578063dd62ed3e146103ff578063f1127ed81461043857600080fd5b80639ab24eb0146103a0578063a457c2d7146103b3578063a9059cbb146103c657600080fd5b80637ecebe00116100d35780637ecebe001461035f5780638e539e8c14610372578063906571471461038557806395d89b411461039857600080fd5b80636f307dc3146102fa5780636fcfff451461030e57806370a082311461033657600080fd5b80632f4f21e2116101665780633950935111610140578063395093511461027b5780633a46b1a81461028e578063587cde1e146102a15780635c19a95c146102e557600080fd5b80632f4f21e214610246578063313ce567146102595780633644e5151461027357600080fd5b806318160ddd1161019757806318160ddd1461020e578063205c28781461022057806323b872dd1461023357600080fd5b806301ffc9a7146101be57806306fdde03146101e6578063095ea7b3146101fb575b600080fd5b6101d16101cc366004612712565b610475565b60405190151581526020015b60405180910390f35b6101ee6105ae565b6040516101dd9190612760565b6101d16102093660046127a8565b610640565b6067545b6040519081526020016101dd565b6101d161022e3660046127a8565b610658565b6101d16102413660046127d4565b61066b565b6101d16102543660046127a8565b61068f565b61026161069b565b60405160ff90911681526020016101dd565b6102126106aa565b6101d16102893660046127a8565b6106b4565b61021261029c3660046127a8565b6106f3565b6102cd6102af366004612815565b6001600160a01b03908116600090815260fe60205260409020541690565b6040516001600160a01b0390911681526020016101dd565b6102f86102f3366004612815565b61076b565b005b610130546102cd906001600160a01b031681565b61032161031c366004612815565b610778565b60405163ffffffff90911681526020016101dd565b610212610344366004612815565b6001600160a01b031660009081526065602052604090205490565b61021261036d366004612815565b61079a565b610212610380366004612832565b6107b8565b6102f86103933660046128ee565b610815565b6101ee61096a565b6102126103ae366004612815565b610979565b6101d16103c13660046127a8565b610a00565b6101d16103d43660046127a8565b610aaa565b6102f86103e7366004612973565b610ab8565b6102f86103fa3660046129cf565b610bee565b61021261040d366004612a40565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b61044b610446366004612a79565b610d52565b60408051825163ffffffff1681526020928301516001600160e01b031692810192909252016101dd565b60006001600160e01b031982167f0f13099a0000000000000000000000000000000000000000000000000000000014806104d857506001600160e01b031982167f36372b0700000000000000000000000000000000000000000000000000000000145b8061050c57506001600160e01b031982167f9d8ff7da00000000000000000000000000000000000000000000000000000000145b8061054057506001600160e01b031982167fa219a02500000000000000000000000000000000000000000000000000000000145b8061057457506001600160e01b031982167fe90fb3f600000000000000000000000000000000000000000000000000000000145b806105a857507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b6060606880546105bd90612ab0565b80601f01602080910402602001604051908101604052809291908181526020018280546105e990612ab0565b80156106365780601f1061060b57610100808354040283529160200191610636565b820191906000526020600020905b81548152906001019060200180831161061957829003601f168201915b5050505050905090565b60003361064e818585610de5565b5060019392505050565b60006106648383610f3d565b9392505050565b600033610679858285610f6a565b610684858585610ff6565b506001949350505050565b600061066483836111f0565b60006106a5611216565b905090565b60006106a56112a5565b3360008181526066602090815260408083206001600160a01b038716845290915281205490919061064e90829086906106ee908790612afa565b610de5565b60004382106107495760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e65640060448201526064015b60405180910390fd5b6001600160a01b038316600090815260ff602052604090206106649083611320565b6107753382611417565b50565b6001600160a01b038116600090815260ff60205260408120546105a8906114a9565b6001600160a01b038116600090815260cb60205260408120546105a8565b60004382106108095760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e6564006044820152606401610740565b6105a861010083611320565b600054610100900460ff16158080156108355750600054600160ff909116105b8061084f5750303b15801561084f575060005460ff166001145b6108c15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610740565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610902576000805461ff0019166101001790555b61090c8383611529565b610915836115a2565b61091e8461164c565b8015610964576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6060606980546105bd90612ab0565b6001600160a01b038116600090815260ff602052604081205480156109ed576001600160a01b038316600090815260ff602052604090206109bb600183612b0d565b815481106109cb576109cb612b20565b60009182526020909120015464010000000090046001600160e01b03166109f0565b60005b6001600160e01b03169392505050565b3360008181526066602090815260408083206001600160a01b038716845290915281205490919083811015610a9d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610740565b6106848286868403610de5565b60003361064e818585610ff6565b83421115610b085760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e617475726520657870697265640000006044820152606401610740565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610b8290610b7a9060a001604051602081830303815290604052805190602001206116c0565b858585611729565b9050610b8d81611753565b8614610bdb5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000006044820152606401610740565b610be58188611417565b50505050505050565b83421115610c3e5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610740565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610c6d8c611753565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610cc8826116c0565b90506000610cd882878787611729565b9050896001600160a01b0316816001600160a01b031614610d3b5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610740565b610d468a8a8a610de5565b50505050505050505050565b60408051808201909152600080825260208201526001600160a01b038316600090815260ff60205260409020805463ffffffff8416908110610d9657610d96612b20565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b6001600160a01b03163b151590565b6001600160a01b038316610e605760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610740565b6001600160a01b038216610edc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610740565b6001600160a01b0383811660008181526066602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610f49338361177b565b61013054610f61906001600160a01b03168484611785565b50600192915050565b6001600160a01b0383811660009081526066602090815260408083209386168352929052205460001981146109645781811015610fe95760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610740565b6109648484848403610de5565b6001600160a01b0383166110725760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610740565b6001600160a01b0382166110ee5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610740565b6001600160a01b0383166000908152606560205260409020548181101561117d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610740565b6001600160a01b0380851660008181526065602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111dd9086815260200190565b60405180910390a3610964848484611806565b6101305460009061120c906001600160a01b0316333085611868565b610f6183836118b9565b61013054604080517f313ce56700000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa925050508015611296575060408051601f3d908101601f1916820190925261129391810190612b36565b60015b6112a05750601290565b919050565b60006106a57f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6112d460975490565b6098546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b81546000908181600581111561137a57600061133b846118c3565b6113459085612b0d565b600088815260209020909150869082015463ffffffff16111561136a57809150611378565b611375816001612afa565b92505b505b808210156113c757600061138e83836119ab565b600088815260209020909150869082015463ffffffff1611156113b3578091506113c1565b6113be816001612afa565b92505b5061137a565b8015611401576113ea866113dc600184612b0d565b600091825260209091200190565b5464010000000090046001600160e01b0316611404565b60005b6001600160e01b03169695505050505050565b6001600160a01b03828116600081815260fe6020818152604080842080546065845282862054949093528787167fffffffffffffffffffffffff00000000000000000000000000000000000000008416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46109648284836119c6565b600063ffffffff8211156115255760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610740565b5090565b600054610100900460ff166115945760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610740565b61159e8282611b03565b5050565b600054610100900460ff1661160d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610740565b610775816040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250611b87565b600054610100900460ff166116b75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610740565b61077581611c0c565b60006105a86116cd6112a5565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600080600061173a87878787611cb2565b9150915061174781611d76565b5090505b949350505050565b6001600160a01b038116600090815260cb602052604090208054600181018255905b50919050565b61159e8282611edb565b6040516001600160a01b0383166024820152604481018290526118019084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611ef4565b505050565b611811838383611fd9565b6001600160a01b03821615801590611835575061182d82610778565b63ffffffff16155b801561185957506001600160a01b03828116600090815260fe602052604090205416155b15611801576118018283611417565b6040516001600160a01b03808516602483015283166044820152606481018290526109649085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016117ca565b61159e828261200b565b6000816000036118d557506000919050565b600060016118e2846120a3565b901c6001901b905060018184816118fb576118fb612b53565b048201901c9050600181848161191357611913612b53565b048201901c9050600181848161192b5761192b612b53565b048201901c9050600181848161194357611943612b53565b048201901c9050600181848161195b5761195b612b53565b048201901c9050600181848161197357611973612b53565b048201901c9050600181848161198b5761198b612b53565b048201901c9050610664818285816119a5576119a5612b53565b04612137565b60006119ba6002848418612b69565b61066490848416612afa565b816001600160a01b0316836001600160a01b0316141580156119e85750600081115b15611801576001600160a01b03831615611a76576001600160a01b038316600090815260ff602052604081208190611a239061214d85612159565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611a6b929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615611801576001600160a01b038216600090815260ff602052604081208190611aac906122ad85612159565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611af4929190918252602082015260400190565b60405180910390a25050505050565b600054610100900460ff16611b6e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610740565b6068611b7a8382612bd9565b5060696118018282612bd9565b600054610100900460ff16611bf25760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610740565b815160209283012081519190920120609791909155609855565b600054610100900460ff16611c775760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610740565b61013080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611ce95750600090506003611d6d565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611d3d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611d6657600060019250925050611d6d565b9150600090505b94509492505050565b6000816004811115611d8a57611d8a612c99565b03611d925750565b6001816004811115611da657611da6612c99565b03611df35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610740565b6002816004811115611e0757611e07612c99565b03611e545760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610740565b6003816004811115611e6857611e68612c99565b036107755760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610740565b611ee582826122b9565b61096461010061214d83612159565b6000611f49826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661242b9092919063ffffffff16565b8051909150156118015780806020019051810190611f679190612caf565b6118015760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610740565b6001600160a01b03838116600090815260fe6020526040808220548584168352912054611801929182169116836119c6565b612015828261243a565b6067546001600160e01b0310156120945760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201527f766572666c6f77696e6720766f746573000000000000000000000000000000006064820152608401610740565b6109646101006122ad83612159565b600080608083901c156120b857608092831c92015b604083901c156120ca57604092831c92015b602083901c156120dc57602092831c92015b601083901c156120ee57601092831c92015b600883901c1561210057600892831c92015b600483901c1561211257600492831c92015b600283901c1561212457600292831c92015b600183901c156105a85760010192915050565b60008183106121465781610664565b5090919050565b60006106648284612b0d565b825460009081908181156121a657612176876113dc600185612b0d565b60408051808201909152905463ffffffff8116825264010000000090046001600160e01b031660208201526121bb565b60408051808201909152600080825260208201525b905080602001516001600160e01b031693506121db84868863ffffffff16565b92506000821180156121f35750805163ffffffff1643145b156122385761220183612503565b612210886113dc600186612b0d565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790556122a3565b86604051806040016040528061224d436114a9565b63ffffffff16815260200161226186612503565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b60006106648284612afa565b6001600160a01b0382166123355760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610740565b6001600160a01b038216600090815260656020526040902054818110156123c45760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610740565b6001600160a01b03831660008181526065602090815260408083208686039055606780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361180183600084611806565b606061174b8484600085612582565b6001600160a01b0382166124905760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610740565b80606760008282546124a29190612afa565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361159e60008383611806565b60006001600160e01b038211156115255760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610740565b6060824710156125fa5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610740565b600080866001600160a01b031685876040516126169190612cd1565b60006040518083038185875af1925050503d8060008114612653576040519150601f19603f3d011682016040523d82523d6000602084013e612658565b606091505b509150915061266987838387612674565b979650505050505050565b606083156126e35782516000036126dc576001600160a01b0385163b6126dc5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610740565b508161174b565b61174b83838151156126f85781518083602001fd5b8060405162461bcd60e51b81526004016107409190612760565b60006020828403121561272457600080fd5b81356001600160e01b03198116811461066457600080fd5b60005b8381101561275757818101518382015260200161273f565b50506000910152565b602081526000825180602084015261277f81604085016020870161273c565b601f01601f19169190910160400192915050565b6001600160a01b038116811461077557600080fd5b600080604083850312156127bb57600080fd5b82356127c681612793565b946020939093013593505050565b6000806000606084860312156127e957600080fd5b83356127f481612793565b9250602084013561280481612793565b929592945050506040919091013590565b60006020828403121561282757600080fd5b813561066481612793565b60006020828403121561284457600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261287257600080fd5b813567ffffffffffffffff8082111561288d5761288d61284b565b604051601f8301601f19908116603f011681019082821181831017156128b5576128b561284b565b816040528381528660208588010111156128ce57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561290357600080fd5b833561290e81612793565b9250602084013567ffffffffffffffff8082111561292b57600080fd5b61293787838801612861565b9350604086013591508082111561294d57600080fd5b5061295a86828701612861565b9150509250925092565b60ff8116811461077557600080fd5b60008060008060008060c0878903121561298c57600080fd5b863561299781612793565b9550602087013594506040870135935060608701356129b581612964565b9598949750929560808101359460a0909101359350915050565b600080600080600080600060e0888a0312156129ea57600080fd5b87356129f581612793565b96506020880135612a0581612793565b955060408801359450606088013593506080880135612a2381612964565b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215612a5357600080fd5b8235612a5e81612793565b91506020830135612a6e81612793565b809150509250929050565b60008060408385031215612a8c57600080fd5b8235612a9781612793565b9150602083013563ffffffff81168114612a6e57600080fd5b600181811c90821680612ac457607f821691505b60208210810361177557634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156105a8576105a8612ae4565b818103818111156105a8576105a8612ae4565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612b4857600080fd5b815161066481612964565b634e487b7160e01b600052601260045260246000fd5b600082612b8657634e487b7160e01b600052601260045260246000fd5b500490565b601f82111561180157600081815260208120601f850160051c81016020861015612bb25750805b601f850160051c820191505b81811015612bd157828155600101612bbe565b505050505050565b815167ffffffffffffffff811115612bf357612bf361284b565b612c0781612c018454612ab0565b84612b8b565b602080601f831160018114612c3c5760008415612c245750858301515b600019600386901b1c1916600185901b178555612bd1565b600085815260208120601f198616915b82811015612c6b57888601518255948401946001909101908401612c4c565b5085821015612c895787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b600060208284031215612cc157600080fd5b8151801515811461066457600080fd5b60008251612ce381846020870161273c565b919091019291505056fea26469706673582212204c5906ebcb45b715033693901873f3ecb56ed6a7eecf921f5dcdb12b1b8c8dc964736f6c63430008110033496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000