[ { "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" } ]
610160604081815234620004d65762002c2b8038038091620000228286620004db565b8439820190608083830312620004d65782516001600160401b0390818111620004d657836200005391860162000524565b916020938486015190838211620004d6576200007191870162000524565b946200008d6060620000858484016200057f565b92016200057f565b9082519383850185811082821117620003d157845260019485815287810195603160f81b87528751838111620003d15760038054918383811c93168015620004cb575b8c841014620004b5578b601f9384811162000468575b5050808c848211600114620003f357600091620003e7575b5060001982841b1c191690841b1781555b8b5191858311620003d15760049c8d548d8682811c9216908115620003c6575b821014620003b157808f8f92851062000364575b5050508d8d928511600114620002f15750938394918492600095620002e5575b50501b92600019911b1c19161789555b6200017e8762000594565b95610120968752620001908262000739565b97610140988952898151910120918260e0525190209861010099808b524660a0528651998a01927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452878b015260608a01524660808a01523060a08a015260a0895260c089019289841090841117620002d05750818552875190206080523060c0526001600160a01b03928316968715620002b9575050600b80546001600160a01b03198082168917909255935196909383167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a31690600c541617600c5561239a9384620008918539608051846113c0015260a0518461147b015260c0518461138a015260e0518461140f01525183611435015251826108df015251816109090152f35b631e4fbdf760e01b8252600060c490910152602490fd5b604190634e487b7160e01b6000525260246000fd5b01519350388062000163565b90848e949392601f1982169060005285600020956000905b898383106200034657505050106200032b575b50505050811b01895562000173565b01519060f884600019921b161c19169055388080806200031c565b90929350859783929686015181550196019301908f91879262000309565b60005283826000209181880160051c8301938810620003a7575b0160051c019086905b8281106200039a57508f8f925062000143565b6000815501869062000387565b925081926200037e565b60228f634e487b7160e01b6000525260246000fd5b91607f16916200012f565b634e487b7160e01b600052604160045260246000fd5b90508b015138620000fe565b8592508d908d601f198416908660005283600020936000915b838310620004455750505083116200042c575b5050811b0181556200010f565b8d015160001983861b60f8161c1916905538806200041f565b94848294959798929396015181550194019201908f918f9289969594936200040c565b8360005284826000209181850160051c8301938510620004ab575b0160051c019085905b8281106200049e57508d9150620000e6565b600081550185906200048c565b9250819262000483565b634e487b7160e01b600052602260045260246000fd5b92607f1692620000d0565b600080fd5b601f909101601f19168101906001600160401b03821190821017620003d157604052565b60005b838110620005135750506000910152565b818101518382015260200162000502565b81601f82011215620004d65780516001600160401b038111620003d157604051926200055b601f8301601f191660200185620004db565b81845260208284010111620004d6576200057c9160208085019101620004ff565b90565b51906001600160a01b0382168203620004d657565b8051602091908281101562000614575090601f825111620005d25780825192015190808310620005c357501790565b82600019910360031b1b161790565b604490620006069260405193849263305a27a960e01b845280600485015282519283918260248701528686019101620004ff565b601f01601f19168101030190fd5b6001600160401b038111620003d1576005928354926001938481811c911680156200072e575b83821014620004b557601f8111620006f7575b5081601f84116001146200068d575092829391839260009462000681575b50501b916000199060031b1c191617905560ff90565b0151925038806200066b565b919083601f1981168760005284600020946000905b88838310620006dc5750505010620006c2575b505050811b01905560ff90565b015160001960f88460031b161c19169055388080620006b5565b858701518855909601959485019487935090810190620006a2565b8560005284601f846000209201871c820191601f8601881c015b828110620007215750506200064d565b6000815501859062000711565b90607f16906200063a565b805160209081811015620007665750601f825111620005d25780825192015190808310620005c357501790565b906001600160401b038211620003d157600654926001938481811c9116801562000885575b83821014620004b557601f81116200084b575b5081601f8411600114620007df5750928293918392600094620007d3575b50501b916000199060031b1c19161760065560ff90565b015192503880620007bc565b919083601f198116600660005284600020946000905b8883831062000830575050501062000816575b505050811b0160065560ff90565b015160001960f88460031b161c1916905538808062000808565b858701518855909601959485019487935090810190620007f5565b600660005284601f84600020920160051c820191601f860160051c015b828110620008785750506200079e565b6000815501859062000868565b90607f16906200078b56fe6080604052600436101561001257600080fd5b60003560e01c806306fdde03146102175780630754617214610212578063095ea7b31461020d57806318160ddd1461020857806323b872dd14610203578063313ce567146101fe57806332cb6b0c146101f95780633644e515146101f45780633a46b1a8146101ef57806340c10f19146101ea57806342966c68146101e55780634bf5d7e9146101e0578063587cde1e146101db5780635c19a95c146101d65780636fcfff45146101d157806370a08231146101cc578063715018a6146101c757806379cc6790146101c25780637ecebe00146101bd57806384b0196e146101b85780638da5cb5b146101b35780638e539e8c146101ae57806391ddadf4146101a957806395d89b41146101a45780639ab24eb01461019f578063a9059cbb1461019a578063c3cda52014610195578063d505accf14610190578063dd62ed3e1461018b578063f1127ed814610186578063f2fde38b146101815763fca3b5aa1461017c57600080fd5b611000565b610f72565b610ebf565b610e67565b610d33565b610c6a565b610c24565b610bdb565b610b33565b610b07565b6109e8565b6109bf565b6108c4565b61088a565b61085a565b6107fc565b6107c3565b61075b565b610739565b6106fe565b61067b565b61065e565b61054b565b6104a0565b61047d565b610456565b61043a565b610402565b6103e4565b6103b3565b61035e565b610270565b919082519283825260005b848110610248575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201610227565b90602061026d92818152019061021c565b90565b34610359576000806003193601126103565760405190806003549061029482611088565b8085529160209160019182811690811561032957506001146102d1575b6102cd866102c18188038261114d565b6040519182918261025c565b0390f35b9350600384527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b838510610316575050505081016020016102c1826102cd386102b1565b80548686018401529382019381016102f9565b90508695506102cd969350602092506102c194915060ff191682840152151560051b8201019293386102b1565b80fd5b600080fd5b3461035957600036600319011261035957600c546040516001600160a01b039091168152602090f35b600435906001600160a01b038216820361035957565b602435906001600160a01b038216820361035957565b34610359576040366003190112610359576103d96103cf610387565b602435903361189b565b602060405160018152f35b34610359576000366003190112610359576020600254604051908152f35b34610359576060366003190112610359576103d961041e610387565b61042661039d565b60443591610435833383611197565b61128e565b3461035957600036600319011261035957602060405160128152f35b346103595760003660031901126103595760206040516b204fce5e3e250261100000008152f35b34610359576000366003190112610359576020610498611387565b604051908152f35b34610359576040366003190112610359576104b9610387565b6024356104c5426114a1565b9165ffffffffffff8316821015610520576001600160a01b031660009081526009602052604090206102cd92506001600160d01b039161050f9190610509906114a1565b90611513565b604051911681529081906020820190565b50604051637669fc0f60e11b8152600481019190915265ffffffffffff919091166024820152604490fd5b3461035957604036600319011261035957610564610387565b600c54602435906001600160a01b039081163303610646578216801561062d5761059861059383600254611506565b600255565b6001600160a01b038316600090815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a3600254916b204fce5e3e250261100000008311610602576106009250612004565b005b604051630e58ae9360e11b8152600481018490526b204fce5e3e250261100000006024820152604490fd5b60405163ec442f0560e01b815260006004820152602490fd5b604051632fdab94f60e11b8152336004820152602490fd5b3461035957602036600319011261035957610600600435336115f2565b3461035957600036600319011261035957610695426114a1565b65ffffffffffff806106a6426114a1565b169116036106ec576102cd6040516106bd816110d8565b600e81526d06d6f64653d74696d657374616d760941b602082015260405191829160208352602083019061021c565b6040516301bfc1c560e61b8152600490fd5b346103595760203660031901126103595760206001600160a01b0380610722610387565b166000526008825260406000205416604051908152f35b3461035957602036600319011261035957610600610755610387565b336116e5565b34610359576020366003190112610359576001600160a01b0361077c610387565b16600052600960205260406000205463ffffffff908181116107a45760209160405191168152f35b604490604051906306dfcc6560e41b8252602060048301526024820152fd5b346103595760203660031901126103595760206104986107e1610387565b6001600160a01b031660009081526020819052604090205490565b346103595760008060031936011261035657610816611768565b600b80546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b3461035957604036600319011261035957610600610876610387565b60243590610885823383611197565b6115f2565b34610359576020366003190112610359576001600160a01b036108ab610387565b1660005260076020526020604060002054604051908152f35b346103595760008060031936011261035657610962906109037f0000000000000000000000000000000000000000000000000000000000000000611c0c565b9061092d7f0000000000000000000000000000000000000000000000000000000000000000611d0d565b906040519161093b836110f9565b818352610970602091604051968796600f60f81b885260e0602089015260e088019061021c565b90868203604088015261021c565b904660608601523060808601528260a086015284820360c0860152602080855193848152019401925b8281106109a857505050500390f35b835185528695509381019392810192600101610999565b3461035957600036600319011261035957600b546040516001600160a01b039091168152602090f35b3461035957602036600319011261035957600435610a05426114a1565b9065ffffffffffff91828116821015610ae05750610a22906114a1565b600a54906000908260058111610a84575b50610a3e9350611a51565b80610a5b5750602060005b6040516001600160d01b039091168152f35b610a666020916114e9565b600a600052600080516020612345833981519152015460301c610a49565b9092610a8f82611926565b8203918211610adb57610a3e94600a600052808360008051602061234583398151915201541690851610600014610ac95750915b38610a33565b929150610ad5906114f8565b90610ac3565b6114d3565b604051637669fc0f60e11b8152600481019290925265ffffffffffff166024820152604490fd5b34610359576000366003190112610359576020610b23426114a1565b65ffffffffffff60405191168152f35b346103595760008060031936011261035657604051908060045490610b5782611088565b808552916020916001918281169081156103295750600114610b83576102cd866102c18188038261114d565b9350600484527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b838510610bc8575050505081016020016102c1826102cd386102b1565b8054868601840152938201938101610bab565b34610359576020366003190112610359576001600160a01b03610bfc610387565b166000526009602052602060018060d01b03610c1b60406000206117db565b16604051908152f35b34610359576040366003190112610359576103d9610c40610387565b602435903361128e565b6064359060ff8216820361035957565b6084359060ff8216820361035957565b346103595760c036600319011261035957610c83610387565b60443590602435610c92610c4a565b834211610d1a57610d0e61060094610d15926040519060208201927fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf845260018060a01b0388166040840152866060840152608083015260808252610cf682611115565b610d0960a4359360843593519020611807565b61182d565b9182611845565b6116e5565b604051632341d78760e11b815260048101859052602490fd5b346103595760e036600319011261035957610d4c610387565b610d5461039d565b60443590606435610d63610c5a565b814211610e4e576001600160a01b0385811660008181526007602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c99281019283529283019390935292861660608201526080810187905260a081019190915260c080820194909452928352610e07929091610df460e08361114d565b610d0960c4359360a43593519020611807565b6001600160a01b0384811690821603610e2457506106009261189b565b6040516325c0072360e11b81526001600160a01b0391821660048201529084166024820152604490fd5b60405163313c898160e11b815260048101839052602490fd5b34610359576040366003190112610359576020610eb6610e85610387565b610e8d61039d565b6001600160a01b0391821660009081526001855260408082209290931681526020919091522090565b54604051908152f35b3461035957604036600319011261035957610ed8610387565b6024359063ffffffff82168203610359576102cd91610f2891610ef961117e565b50610f0261117e565b506001600160a01b03166000908152600960205260409020610f2261117e565b50611f0a565b5060405190610f36826110d8565b5465ffffffffffff811680835260309190911c60209283019081526040805192835290516001600160d01b031692820192909252918291820190565b3461035957602036600319011261035957610f8b610387565b610f93611768565b6001600160a01b03908116908115610fe757600b54826bffffffffffffffffffffffff60a01b821617600b55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b604051631e4fbdf760e01b815260006004820152602490fd5b3461035957602036600319011261035957611019610387565b611021611768565b6001600160a01b03168015611076576020817f6adffd5c93085d835dac6f3b40adf7c242ca4b3284048d20c3d8a501748dc973926bffffffffffffffffffffffff60a01b600c541617600c55604051908152a1005b6040516304a208c760e01b8152600490fd5b90600182811c921680156110b8575b60208310146110a257565b634e487b7160e01b600052602260045260246000fd5b91607f1691611097565b634e487b7160e01b600052604160045260246000fd5b6040810190811067ffffffffffffffff8211176110f457604052565b6110c2565b6020810190811067ffffffffffffffff8211176110f457604052565b60a0810190811067ffffffffffffffff8211176110f457604052565b60c0810190811067ffffffffffffffff8211176110f457604052565b90601f8019910116810190811067ffffffffffffffff8211176110f457604052565b6040519061117c826110d8565b565b6040519061118b826110d8565b60006020838281520152565b6001600160a01b0381811660008181526001602081815260408084208887168552909152909120549395949392919083016111d5575b505050505050565b84831061125f57156112465782161561122d576112219261120a91039360018060a01b03166000526001602052604060002090565b9060018060a01b0316600052602052604060002090565b553880808080806111cd565b604051634a1406b160e11b815260006004820152602490fd5b60405163e602df0560e01b815260006004820152602490fd5b604051637dc7a0d960e11b81526001600160a01b03851660048201526024810184905260448101869052606490fd5b6001600160a01b038082169493929190851561136e578216801561062d576001600160a01b0382166000908152602081905260409020549584871061133f578461117c9697036112f08460018060a01b03166000526000602052604060002090565b556001600160a01b0384166000908152602081815260409182902080548801905590518681527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a361207d565b60405163391434e360e21b81526001600160a01b03841660048201526024810188905260448101869052606490fd5b604051634b637e8f60e11b815260006004820152602490fd5b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480611478575b156113e2577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261147281611131565b51902090565b507f000000000000000000000000000000000000000000000000000000000000000046146113b9565b65ffffffffffff908181116114b4571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b634e487b7160e01b600052601160045260246000fd5b600019810191908211610adb57565b9060018201809211610adb57565b91908201809211610adb57565b9081549060009180600581116115a6575b50915b8281106115565750508061153c575050600090565b611545906114e9565b906000526020600020015460301c90565b90918082169080831860011c8201809211610adb578460005265ffffffffffff80836020600020015416908516106000146115945750915b90611527565b9291506115a0906114f8565b9061158e565b906115b082611926565b8203918211610adb578460005265ffffffffffff80836020600020015416908416106000146115e157505b38611524565b92506115ec906114f8565b916115db565b91906001600160a01b03808416801561136e576001600160a01b038516600090815260208190526040902054948386106116b457906020929161164e8561117c9798039160018060a01b03166000526000602052604060002090565b558360025403600255604051848152817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6000958693a361169661169185611f38565b611fd2565b50508252600860205260408181842054169280805220541690611aba565b60405163391434e360e21b81526001600160a01b039190911660048201526024810186905260448101849052606490fd5b6001600160a01b03818116600081815260086020526040812080548685166001600160a01b03198216811790925561117c969416946117629390928691907f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9080a46001600160a01b031660009081526020819052604090205490565b91611aba565b600b546001600160a01b0316330361177c57565b60405163118cdaa760e01b8152336004820152602490fd5b600a54806117a25750600090565b80600019810111610adb57600a6000527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460301c90565b8054806117e9575050600090565b600019918183810111610adb57600052602060002001015460301c90565b604290611812611387565b906040519161190160f01b8352600283015260228201522090565b9161026d939161183c93611dcd565b90929192611e7d565b6001600160a01b03811660009081526007602052604090208054600181019091559091819003611873575050565b6040516301d4b62360e61b81526001600160a01b039092166004830152602482015260449150fd5b6001600160a01b03808216929190831561124657821693841561122d57806118fc7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259461120a60209560018060a01b03166000526001602052604060002090565b55604051908152a3565b8115611910570490565b634e487b7160e01b600052601260045260246000fd5b600181111561026d57600181600160801b811015611a3f575b6119e76119dd6119d36119c96119bf6119b56119f397600488600160401b6119ee9a1015611a32575b640100000000811015611a25575b62010000811015611a18575b610100811015611a0c575b6010811015611a00575b10156119f8575b60030260011c6119ae818b611906565b0160011c90565b6119ae818a611906565b6119ae8189611906565b6119ae8188611906565b6119ae8187611906565b6119ae8186611906565b8093611906565b821190565b900390565b60011b61199e565b811c9160021b91611997565b60081c91811b9161198d565b60101c9160081b91611982565b60201c9160101b91611976565b60401c9160201b91611968565b50600160401b9050608082901c61193f565b905b828110611a5f57505090565b90918082169080831860011c8201809211610adb57600a60005265ffffffffffff808360008051602061234583398151915201541690851610600014611aa85750915b90611a53565b929150611ab4906114f8565b90611aa2565b6001600160a01b03808316939291908116908185141580611c03575b611ae2575b5050505050565b81611b67575b505082611af7575b8080611adb565b6001600160a01b031660009081526009602052604090207fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72491611b4491611b3e9091611f38565b90611f6b565b604080516001600160d01b039384168152919092166020820152a2388080611af0565b6001600160a01b03166000908152600960205260409020611b8784611f38565b611b90426114a1565b6001600160d01b03918280611ba4866117db565b169116900392828411610adb577fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72493611bf992611be092612288565b6040805192851683529316602082015291829190820190565b0390a23880611ae8565b50831515611ad6565b60ff8114611c4a5760ff811690601f8211611c385760405191611c2e836110d8565b8252602082015290565b604051632cd44ac360e21b8152600490fd5b50604051600554816000611c5d83611088565b80835292602090600190818116908115611ce95750600114611c88575b505061026d9250038261114d565b91509260056000527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0936000925b828410611cd1575061026d9450505081016020013880611c7a565b85548785018301529485019486945092810192611cb6565b9150506020925061026d94915060ff191682840152151560051b8201013880611c7a565b60ff8114611d2f5760ff811690601f8211611c385760405191611c2e836110d8565b50604051600654816000611d4283611088565b80835292602090600190818116908115611ce95750600114611d6c57505061026d9250038261114d565b91509260066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f936000925b828410611db5575061026d9450505081016020013880611c7a565b85548785018301529485019486945092810192611d9a565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611e5157926020929160ff608095604051948552168484015260408301526060820152600092839182805260015afa15611e455780516001600160a01b03811615611e3c57918190565b50809160019190565b604051903d90823e3d90fd5b50505060009160039190565b60041115611e6757565b634e487b7160e01b600052602160045260246000fd5b611e8681611e5d565b80611e8f575050565b611e9881611e5d565b60018103611eb25760405163f645eedf60e01b8152600490fd5b611ebb81611e5d565b60028103611edc5760405163fce698f760e01b815260048101839052602490fd5b80611ee8600392611e5d565b14611ef05750565b6040516335e2f38360e21b81526004810191909152602490fd5b8054821015611f225760005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b6001600160d01b0390818111611f4c571690565b604490604051906306dfcc6560e41b825260d060048301526024820152fd5b90611f75426114a1565b6001600160d01b03918280611f89866117db565b16911601918211610adb57611f9d92612288565b9091565b611faa426114a1565b906001600160d01b03908180611fbe611794565b16911601908111610adb57611f9d9161219f565b611fdb426114a1565b906001600160d01b03908180611fef611794565b1691169003908111610adb57611f9d9161219f565b9061117c9161201a61201583611f38565b611fa1565b50506001600160a01b0390811690811561206a575b60086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c754600092835260409092205481169116611aba565b61207661169184611f38565b505061202f565b61117c92916001600160a01b039182169190819083156120d5575b169182156120c2575b60005260086020528060406000205416916000526040600020541690611aba565b6120ce61169185611f38565b50506120a1565b6120e161201586611f38565b5050612098565b600a5490600160401b8210156110f4576001820180600a55821015611f2257600a600052805160209091015160301b65ffffffffffff191665ffffffffffff919091161760008051602061234583398151915290910155565b8054600160401b8110156110f45761215e91600182018155611f0a565b61218957815160209092015160301b65ffffffffffff191665ffffffffffff92909216919091179055565b634e487b7160e01b600052600060045260246000fd5b600a54919291801561225e576121b76121cf916114e9565b600a6000526000805160206123458339815191520190565b9081549165ffffffffffff9081841691831680831161224c578692036122145761220d92509065ffffffffffff82549181199060301b169116179055565b60301c9190565b50506122479061223361222561116f565b65ffffffffffff9092168252565b6001600160d01b03851660208201526120e8565b61220d565b604051632520601d60e01b8152600490fd5b506122829061226e61222561116f565b6001600160d01b03841660208201526120e8565b60009190565b8054929392801561231f5761229f6122ac916114e9565b8260005260206000200190565b9182549265ffffffffffff9182851692811680841161224c578793036122eb575061220d92509065ffffffffffff82549181199060301b169116179055565b9150506122479161230b6122fd61116f565b65ffffffffffff9093168352565b6001600160d01b0386166020830152612141565b5090612282916123306122fd61116f565b6001600160d01b038516602083015261214156fec65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8a2646970667358221220dff07e0efdf6c5f952de5acb116d2c65a57b9c2bdb32c9281346dd2b70dfd5f564736f6c63430008170033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000063da6a0fcc76d73ecd3c7f3b1fbcd72c5a24005d00000000000000000000000063da6a0fcc76d73ecd3c7f3b1fbcd72c5a24005d0000000000000000000000000000000000000000000000000000000000000007313436544553540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043134365400000000000000000000000000000000000000000000000000000000