[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "address", "name": "_minter", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" } ], "name": "CallerNotMinter", "type": "error" }, { "inputs": [], "name": "CheckpointUnorderedInsertion", "type": "error" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "increasedSupply", "type": "uint256" }, { "internalType": "uint256", "name": "cap", "type": "uint256" } ], "name": "ERC20ExceededSafeSupply", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "timepoint", "type": "uint256" }, { "internalType": "uint48", "name": "clock", "type": "uint48" } ], "name": "ERC5805FutureLookup", "type": "error" }, { "inputs": [], "name": "ERC6372InconsistentClock", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidMinterZeroAddress", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "uint8", "name": "bits", "type": "uint8" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "SafeCastOverflowedUintDowncast", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "expiry", "type": "uint256" } ], "name": "VotesExpiredSignature", "type": "error" }, { "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": "previousVotes", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newVotes", "type": "uint256" } ], "name": "DelegateVotesChanged", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "newMinter", "type": "address" } ], "name": "NewMinter", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": 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": "CLOCK_MODE", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "value", "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": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint32", "name": "pos", "type": "uint32" } ], "name": "checkpoints", "outputs": [ { "components": [ { "internalType": "uint48", "name": "_key", "type": "uint48" }, { "internalType": "uint208", "name": "_value", "type": "uint208" } ], "internalType": "struct Checkpoints.Checkpoint208", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "clock", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "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": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "timepoint", "type": "uint256" } ], "name": "getPastTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "timepoint", "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": "_account", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "minter", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newMinter", "type": "address" } ], "name": "setMinter", "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": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "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": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
610160604081815234620004ba5762002b838038038091620000228286620004be565b8439820190608083830312620004ba5782516001600160401b0390818111620004ba57836200005391860162000505565b916020938486015190838211620004ba576200007191870162000505565b946200008d60606200008584840162000560565b920162000560565b9082519383850185811082821117620003c057845260019485815287810195603160f81b87528751838111620003c05760038054918383811c93168015620004af575b8c8410146200049b578b601f9384811162000451575b5050808c848211600114620003e0575f91620003d4575b505f1982841b1c191690841b1781555b8b5191858311620003c05760049c8d548d8682811c9216908115620003b5575b821014620003a257808f8f92851062000358575b5050508d8d928511600114620002e957509383949184925f95620002dd575b50501b925f19911b1c19161789555b6200017a8762000575565b956101209687526200018c8262000710565b97610140988952898151910120918260e0525190209861010099808b524660a0528651998a01927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452878b015260608a01524660808a01523060a08a015260a0895260c089019289841090841117620002ca5750818552875190206080523060c0526001600160a01b03928316968715620002b4575050600b80546001600160a01b03198082168917909255935196909383167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a31690600c541617600c5561232493846200085f853960805184611374015260a0518461142f015260c0518461133e015260e051846113c3015251836113e9015251826108ba015251816108e30152f35b631e4fbdf760e01b82525f60c490910152602490fd5b604190634e487b7160e01b5f525260245ffd5b015193505f8062000160565b90848e949392601f198216905f52855f20955f905b898383106200033a575050501062000320575b50505050811b0189556200016f565b01519060f8845f19921b161c191690555f80808062000311565b90929350859783929686015181550196019301908f918792620002fe565b5f5283825f209181880160051c830193881062000398575b0160051c019086905b8281106200038c57508f8f925062000141565b5f815501869062000379565b9250819262000370565b60228f634e487b7160e01b5f525260245ffd5b91607f16916200012d565b634e487b7160e01b5f52604160045260245ffd5b90508b01515f620000fd565b8592508d908d601f19841690865f52835f20935f915b8383106200042e57505050831162000416575b5050811b0181556200010d565b8d01515f1983861b60f8161c191690555f8062000409565b94848294959798929396015181550194019201908f918f928996959493620003f6565b835f5284825f209181850160051c830193851062000491575b0160051c019085905b8281106200048557508d9150620000e6565b5f815501859062000473565b925081926200046a565b634e487b7160e01b5f52602260045260245ffd5b92607f1692620000d0565b5f80fd5b601f909101601f19168101906001600160401b03821190821017620003c057604052565b5f5b838110620004f45750505f910152565b8181015183820152602001620004e4565b81601f82011215620004ba5780516001600160401b038111620003c057604051926200053c601f8301601f191660200185620004be565b81845260208284010111620004ba576200055d9160208085019101620004e2565b90565b51906001600160a01b0382168203620004ba57565b80516020919082811015620005f4575090601f825111620005b25780825192015190808310620005a457501790565b825f19910360031b1b161790565b604490620005e69260405193849263305a27a960e01b845280600485015282519283918260248701528686019101620004e2565b601f01601f19168101030190fd5b6001600160401b038111620003c0576005928354926001938481811c9116801562000705575b838210146200049b57601f8111620006d1575b5081601f84116001146200066b57509282939183925f946200065f575b50501b915f199060031b1c191617905560ff90565b015192505f806200064a565b919083601f198116875f52845f20945f905b88838310620006b657505050106200069d575b505050811b01905560ff90565b01515f1960f88460031b161c191690555f808062000690565b8587015188559096019594850194879350908101906200067d565b855f5284601f845f209201871c820191601f8601881c015b828110620006f95750506200062d565b5f8155018590620006e9565b90607f16906200061a565b8051602090818110156200073d5750601f825111620005b25780825192015190808310620005a457501790565b906001600160401b038211620003c057600654926001938481811c9116801562000853575b838210146200049b57601f81116200081c575b5081601f8411600114620007b457509282939183925f94620007a8575b50501b915f199060031b1c19161760065560ff90565b015192505f8062000792565b919083601f19811660065f52845f20945f905b88838310620008015750505010620007e8575b505050811b0160065560ff90565b01515f1960f88460031b161c191690555f8080620007da565b858701518855909601959485019487935090810190620007c7565b60065f5284601f845f20920160051c820191601f860160051c015b8281106200084757505062000775565b5f815501859062000837565b90607f16906200076256fe60806040526004361015610011575f80fd5b5f3560e01c806306fdde0314610214578063075461721461020f578063095ea7b31461020a57806318160ddd1461020557806323b872dd14610200578063313ce567146101fb57806332cb6b0c146101f65780633644e515146101f15780633a46b1a8146101ec57806340c10f19146101e757806342966c68146101e25780634bf5d7e9146101dd578063587cde1e146101d85780635c19a95c146101d35780636fcfff45146101ce57806370a08231146101c9578063715018a6146101c457806379cc6790146101bf5780637ecebe00146101ba57806384b0196e146101b55780638da5cb5b146101b05780638e539e8c146101ab57806391ddadf4146101a657806395d89b41146101a15780639ab24eb01461019c578063a9059cbb14610197578063c3cda52014610192578063d505accf1461018d578063dd62ed3e14610188578063f1127ed814610183578063f2fde38b1461017e5763fca3b5aa14610179575f80fd5b610fc6565b610f3a565b610e88565b610e31565b610cfe565b610c35565b610bef565b610ba8565b610b03565b610ad8565b6109c0565b610998565b6108a2565b61086a565b61083a565b6107df565b6107a7565b610741565b61071f565b6106e6565b610664565b610647565b610536565b61048c565b61046a565b610444565b610429565b6103f1565b6103d4565b6103a3565b61034f565b61026b565b91908251928382525f5b848110610243575050825f602080949584010152601f8019910116010190565b602081830181015184830182015201610223565b906020610268928181520190610219565b90565b3461034b575f36600319011261034b576040515f60035461028b8161104e565b8084529060209060019081811690811561032157506001146102c8575b6102c4856102b88187038261110f565b60405191829182610257565b0390f35b60035f90815293507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b83851061030e575050505081016020016102b8826102c46102a8565b80548686018401529382019381016102f2565b8695506102c4969350602092506102b894915060ff191682840152151560051b82010192936102a8565b5f80fd5b3461034b575f36600319011261034b57600c546040516001600160a01b039091168152602090f35b600435906001600160a01b038216820361034b57565b602435906001600160a01b038216820361034b57565b3461034b57604036600319011261034b576103c96103bf610377565b602435903361184d565b602060405160018152f35b3461034b575f36600319011261034b576020600254604051908152f35b3461034b57606036600319011261034b576103c961040d610377565b61041561038d565b60443591610424833383611158565b611248565b3461034b575f36600319011261034b57602060405160128152f35b3461034b575f36600319011261034b5760206040516b204fce5e3e250261100000008152f35b3461034b575f36600319011261034b57602061048461133b565b604051908152f35b3461034b57604036600319011261034b576104a5610377565b6024356104b142611455565b9165ffffffffffff831682101561050b576001600160a01b03165f9081526009602052604090206102c492506001600160d01b03916104fa91906104f490611455565b906114c4565b604051911681529081906020820190565b50604051637669fc0f60e11b8152600481019190915265ffffffffffff919091166024820152604490fd5b3461034b57604036600319011261034b5761054f610377565b600c54602435906001600160a01b03908116330361062f57821680156106175761058361057e836002546114b7565b600255565b6001600160a01b0383165f90815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a3600254916b204fce5e3e2502611000000083116105ec576105ea9250611f9d565b005b604051630e58ae9360e11b8152600481018490526b204fce5e3e250261100000006024820152604490fd5b60405163ec442f0560e01b81525f6004820152602490fd5b604051632fdab94f60e11b8152336004820152602490fd5b3461034b57602036600319011261034b576105ea60043533611599565b3461034b575f36600319011261034b5761067d42611455565b65ffffffffffff8061068e42611455565b169116036106d4576102c46040516106a58161109a565b600e81526d06d6f64653d74696d657374616d760941b6020820152604051918291602083526020830190610219565b6040516301bfc1c560e61b8152600490fd5b3461034b57602036600319011261034b5760206001600160a01b038061070a610377565b165f526008825260405f205416604051908152f35b3461034b57602036600319011261034b576105ea61073b610377565b336116a1565b3461034b57602036600319011261034b576001600160a01b03610762610377565b165f52600960205260405f205463ffffffff908181116107885760209160405191168152f35b604490604051906306dfcc6560e41b8252602060048301526024820152fd5b3461034b57602036600319011261034b5760206104846107c5610377565b6001600160a01b03165f9081526020819052604090205490565b3461034b575f36600319011261034b576107f7611722565b600b80546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461034b57604036600319011261034b576105ea610856610377565b60243590610865823383611158565b611599565b3461034b57602036600319011261034b576001600160a01b0361088b610377565b165f526007602052602060405f2054604051908152f35b3461034b575f36600319011261034b5761093b6108de7f0000000000000000000000000000000000000000000000000000000000000000611bb5565b6109077f0000000000000000000000000000000000000000000000000000000000000000611cb3565b60405190610914826110bb565b5f8252610949602091604051958695600f60f81b875260e0602088015260e0870190610219565b908582036040870152610219565b4660608501523060808501525f60a085015283810360c0850152602080845192838152019301915f5b82811061098157505050500390f35b835185528695509381019392810192600101610972565b3461034b575f36600319011261034b57600b546040516001600160a01b039091168152602090f35b3461034b57602036600319011261034b576004356109dd42611455565b9065ffffffffffff91828116821015610ab157506109fa90611455565b600a54905f908260058111610a58575b50610a1593506119ff565b80610a31575060205f5b6040516001600160d01b039091168152f35b610a3c60209161149b565b600a5f525f805160206122cf833981519152015460301c610a1f565b9092610a63826118d4565b8203918211610aac57610a1594600a5f5280835f805160206122cf833981519152015416908516105f14610a9a5750915b5f610a0a565b929150610aa6906114a9565b90610a94565b611487565b604051637669fc0f60e11b8152600481019290925265ffffffffffff166024820152604490fd5b3461034b575f36600319011261034b576020610af342611455565b65ffffffffffff60405191168152f35b3461034b575f36600319011261034b576040515f600454610b238161104e565b808452906020906001908181169081156103215750600114610b4f576102c4856102b88187038261110f565b60045f90815293507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b838510610b95575050505081016020016102b8826102c46102a8565b8054868601840152938201938101610b79565b3461034b57602036600319011261034b576001600160a01b03610bc9610377565b165f526009602052602060018060d01b03610be660405f20611792565b16604051908152f35b3461034b57604036600319011261034b576103c9610c0b610377565b6024359033611248565b6064359060ff8216820361034b57565b6084359060ff8216820361034b57565b3461034b5760c036600319011261034b57610c4e610377565b60443590602435610c5d610c15565b834211610ce557610cd96105ea94610ce0926040519060208201927fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf845260018060a01b0388166040840152866060840152608083015260808252610cc1826110d7565b610cd460a43593608435935190206117ba565b6117e0565b91826117f8565b6116a1565b604051632341d78760e11b815260048101859052602490fd5b3461034b5760e036600319011261034b57610d17610377565b610d1f61038d565b60443590606435610d2e610c25565b814211610e18576001600160a01b038581165f8181526007602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c99281019283529283019390935292861660608201526080810187905260a081019190915260c080820194909452928352610dd1929091610dbe60e08361110f565b610cd460c4359360a435935190206117ba565b6001600160a01b0384811690821603610dee57506105ea9261184d565b6040516325c0072360e11b81526001600160a01b0391821660048201529084166024820152604490fd5b60405163313c898160e11b815260048101839052602490fd5b3461034b57604036600319011261034b576020610e7f610e4f610377565b610e5761038d565b6001600160a01b039182165f9081526001855260408082209290931681526020919091522090565b54604051908152f35b3461034b57604036600319011261034b57610ea1610377565b6024359063ffffffff8216820361034b576102c491610ef091610ec2611140565b50610ecb611140565b506001600160a01b03165f908152600960205260409020610eea611140565b50611ea8565b5060405190610efe8261109a565b5465ffffffffffff811680835260309190911c60209283019081526040805192835290516001600160d01b031692820192909252918291820190565b3461034b57602036600319011261034b57610f53610377565b610f5b611722565b6001600160a01b03908116908115610fae57600b54826bffffffffffffffffffffffff60a01b821617600b55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b604051631e4fbdf760e01b81525f6004820152602490fd5b3461034b57602036600319011261034b57610fdf610377565b610fe7611722565b6001600160a01b0316801561103c576020817f6adffd5c93085d835dac6f3b40adf7c242ca4b3284048d20c3d8a501748dc973926bffffffffffffffffffffffff60a01b600c541617600c55604051908152a1005b6040516304a208c760e01b8152600490fd5b90600182811c9216801561107c575b602083101461106857565b634e487b7160e01b5f52602260045260245ffd5b91607f169161105d565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff8211176110b657604052565b611086565b6020810190811067ffffffffffffffff8211176110b657604052565b60a0810190811067ffffffffffffffff8211176110b657604052565b60c0810190811067ffffffffffffffff8211176110b657604052565b90601f8019910116810190811067ffffffffffffffff8211176110b657604052565b6040519061113e8261109a565b565b6040519061114d8261109a565b5f6020838281520152565b6001600160a01b038181165f818152600160208181526040808420888716855290915290912054939594939291908301611195575b505050505050565b8483106112195715611201578216156111e9576111dd926111c891039360018060a01b03165f52600160205260405f2090565b9060018060a01b03165f5260205260405f2090565b555f808080808061118d565b604051634a1406b160e11b81525f6004820152602490fd5b60405163e602df0560e01b81525f6004820152602490fd5b604051637dc7a0d960e11b81526001600160a01b03851660048201526024810184905260448101869052606490fd5b6001600160a01b03808216949392919085156113235782168015610617576001600160a01b0382165f90815260208190526040902054958487106112f4578461113e9697036112a68460018060a01b03165f525f60205260405f2090565b556001600160a01b0384165f908152602081815260409182902080548801905590518681527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a3612015565b60405163391434e360e21b81526001600160a01b03841660048201526024810188905260448101869052606490fd5b604051634b637e8f60e11b81525f6004820152602490fd5b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061142c575b15611396577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152611426816110f3565b51902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461136d565b65ffffffffffff90818111611468571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b634e487b7160e01b5f52601160045260245ffd5b5f19810191908211610aac57565b9060018201809211610aac57565b91908201809211610aac57565b908154905f918060058111611550575b50915b828110611503575050806114eb5750505f90565b6114f49061149b565b905f5260205f20015460301c90565b90918082169080831860011c8201809211610aac57845f5265ffffffffffff808360205f20015416908516105f1461153e5750915b906114d7565b92915061154a906114a9565b90611538565b9061155a826118d4565b8203918211610aac57845f5265ffffffffffff808360205f20015416908416105f1461158857505b5f6114d4565b9250611593906114a9565b91611582565b91906001600160a01b038084168015611323576001600160a01b0385165f9081526020819052604090205494838610611670576115ec8461113e9697039160018060a01b03165f525f60205260405f2090565b5582600254036002555f817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020604051878152a361163261162d84611ed1565b611f6b565b50505f908152600860205260408120549080527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c75482169116611a65565b60405163391434e360e21b81526001600160a01b039190911660048201526024810186905260448101849052606490fd5b6001600160a01b038181165f81815260086020526040812080548685166001600160a01b03198216811790925561113e9694169461171c9390928691907f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9080a46001600160a01b03165f9081526020819052604090205490565b91611a65565b600b546001600160a01b0316330361173657565b60405163118cdaa760e01b8152336004820152602490fd5b600a548061175b57505f90565b805f19810111610aac57600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460301c90565b80548061179f5750505f90565b5f19918183810111610aac575f5260205f2001015460301c90565b6042906117c561133b565b906040519161190160f01b8352600283015260228201522090565b9161026893916117ef93611d70565b90929192611e1b565b6001600160a01b0381165f9081526007602052604090208054600181019091559091819003611825575050565b6040516301d4b62360e61b81526001600160a01b039092166004830152602482015260449150fd5b6001600160a01b0380821692919083156112015782169384156111e957806118ac7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925946111c860209560018060a01b03165f52600160205260405f2090565b55604051908152a3565b81156118c0570490565b634e487b7160e01b5f52601260045260245ffd5b600181111561026857600181600160801b8110156119ed575b61199561198b61198161197761196d6119636119a197600488600160401b61199c9a10156119e0575b6401000000008110156119d3575b620100008110156119c6575b6101008110156119ba575b60108110156119ae575b10156119a6575b60030260011c61195c818b6118b6565b0160011c90565b61195c818a6118b6565b61195c81896118b6565b61195c81886118b6565b61195c81876118b6565b61195c81866118b6565b80936118b6565b821190565b900390565b60011b61194c565b811c9160021b91611945565b60081c91811b9161193b565b60101c9160081b91611930565b60201c9160101b91611924565b60401c9160201b91611916565b50600160401b9050608082901c6118ed565b905b828110611a0d57505090565b90918082169080831860011c8201809211610aac57600a5f5265ffffffffffff80835f805160206122cf833981519152015416908516105f14611a535750915b90611a01565b929150611a5f906114a9565b90611a4d565b6001600160a01b03808316939291908116908185141580611bac575b611a8d575b5050505050565b81611b11575b505082611aa2575b8080611a86565b6001600160a01b03165f9081526009602052604090207fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72491611aee91611ae89091611ed1565b90611f04565b604080516001600160d01b039384168152919092166020820152a25f8080611a9b565b6001600160a01b03165f908152600960205260409020611b3084611ed1565b611b3942611455565b6001600160d01b03918280611b4d86611792565b169116900392828411610aac577fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72493611ba292611b8992612214565b6040805192851683529316602082015291829190820190565b0390a25f80611a93565b50831515611a81565b60ff8114611bf35760ff811690601f8211611be15760405191611bd78361109a565b8252602082015290565b604051632cd44ac360e21b8152600490fd5b50604051600554815f611c058361104e565b80835292602090600190818116908115611c8f5750600114611c30575b50506102689250038261110f565b91509260055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0935f925b828410611c7757506102689450505081016020015f80611c22565b85548785018301529485019486945092810192611c5c565b9150506020925061026894915060ff191682840152151560051b8201015f80611c22565b60ff8114611cd55760ff811690601f8211611be15760405191611bd78361109a565b50604051600654815f611ce78361104e565b80835292602090600190818116908115611c8f5750600114611d115750506102689250038261110f565b91509260065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f935f925b828410611d5857506102689450505081016020015f80611c22565b85548785018301529485019486945092810192611d3d565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611df2579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15611de7575f516001600160a01b03811615611ddd57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b60041115611e0757565b634e487b7160e01b5f52602160045260245ffd5b611e2481611dfd565b80611e2d575050565b611e3681611dfd565b60018103611e505760405163f645eedf60e01b8152600490fd5b611e5981611dfd565b60028103611e7a5760405163fce698f760e01b815260048101839052602490fd5b80611e86600392611dfd565b14611e8e5750565b6040516335e2f38360e21b81526004810191909152602490fd5b8054821015611ebd575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b6001600160d01b0390818111611ee5571690565b604490604051906306dfcc6560e41b825260d060048301526024820152fd5b90611f0e42611455565b6001600160d01b03918280611f2286611792565b16911601918211610aac57611f3692612214565b9091565b611f4342611455565b906001600160d01b03908180611f5761174e565b16911601908111610aac57611f369161212e565b611f7442611455565b906001600160d01b03908180611f8861174e565b1691169003908111610aac57611f369161212e565b9061113e91611fb3611fae83611ed1565b611f3a565b50506001600160a01b03908116908115612002575b60086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c7545f92835260409092205481169116611a65565b61200e61162d84611ed1565b5050611fc8565b61113e92916001600160a01b03918216919081908315612069575b16918215612056575b5f5260086020528060405f205416915f5260405f20541690611a65565b61206261162d85611ed1565b5050612039565b612075611fae86611ed1565b5050612030565b600a5490600160401b8210156110b6576001820180600a55821015611ebd57600a5f52805160209091015160301b65ffffffffffff191665ffffffffffff91909116175f805160206122cf83398151915290910155565b8054600160401b8110156110b6576120f091600182018155611ea8565b61211b57815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b5f525f60045260245ffd5b600a5491929180156121eb5761214661215c9161149b565b600a5f525f805160206122cf8339815191520190565b9081549165ffffffffffff908184169183168083116121d9578692036121a15761219a92509065ffffffffffff82549181199060301b169116179055565b60301c9190565b50506121d4906121c06121b2611131565b65ffffffffffff9092168252565b6001600160d01b038516602082015261207c565b61219a565b604051632520601d60e01b8152600490fd5b5061220f906121fb6121b2611131565b6001600160d01b038416602082015261207c565b5f9190565b805492939280156122a95761222b6122369161149b565b825f5260205f200190565b9182549265ffffffffffff918285169281168084116121d957879303612275575061219a92509065ffffffffffff82549181199060301b169116179055565b9150506121d491612295612287611131565b65ffffffffffff9093168352565b6001600160d01b03861660208301526120d3565b509061220f916122ba612287611131565b6001600160d01b03851660208301526120d356fec65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8a2646970667358221220a1e756cd1daa98bfd29d4e121567986eb79903647cb2c69d9184064119cdecc564736f6c63430008160033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000001cfd07cd9bba92d7ba4f149344845fe251f8dfdc0000000000000000000000001cfd07cd9bba92d7ba4f149344845fe251f8dfdc0000000000000000000000000000000000000000000000000000000000000005746f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000