[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "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": "previousBalance", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newBalance", "type": "uint256" } ], "name": "DelegateVotesChanged", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "Snapshot", "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": [ { "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": "uint256", "name": "snapshotId", "type": "uint256" } ], "name": "balanceOfAt", "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 ERC20Votes.Checkpoint", "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": "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": [], "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": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": [], "name": "operator", "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": [ { "internalType": "address", "name": "newOperator", "type": "address" } ], "name": "setOperator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "snapshot", "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": "uint256", "name": "snapshotId", "type": "uint256" } ], "name": "totalSupplyAt", "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" } ]
610160604052346200021e576200001562000290565b6200001f62000290565b906200002a62000266565b91602092622324a360e91b84820152620000436200027b565b603160f81b858201908152835190939192916001600160401b03821162000218576200007c8262000076600354620002cf565b6200030c565b8690601f831160011462000188579180620000b592620000be95946000926200017c575b50508160011b916000199060031b1c19161790565b60035562000478565b620000c98362000566565b92610120938452620000db8262000676565b94610140958652815191012060e052519020916101009283524660a0526200010262000783565b6080523060c052600780546001600160a01b0319163317905560075462000132906001600160a01b031662000855565b6040519161261093846200124d8539608051846116aa015260a05184611765015260c05184611674015260e051846116f90152518361171f015251826108a2015251816108cc0152f35b015190503880620000a0565b6003600052601f19831691907fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9260005b8a82821062000201575050916001939185620000be97969410620001e7575b505050811b0160035562000478565b015160001960f88460031b161c19169055388080620001d8565b6001859682939686015181550195019301620001b9565b62000223565b600080fd5b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176200021857604052565b60405190620002648262000239565b565b60405190620002758262000239565b60038252565b604051906200028a8262000239565b60018252565b604051906200029f8262000239565b600b82526a46726f6720496e20466f6760a81b6020830152565b634e487b7160e01b600052601160045260246000fd5b90600182811c9216801562000301575b6020831014620002eb57565b634e487b7160e01b600052602260045260246000fd5b91607f1691620002df565b601f811162000319575050565b60009060036000526020600020906020601f850160051c830194106200035c575b601f0160051c01915b8281106200035057505050565b81815560010162000343565b90925082906200033a565b601f811162000374575050565b60009060046000526020600020906020601f850160051c83019410620003b7575b601f0160051c01915b828110620003ab57505050565b8181556001016200039e565b909250829062000395565b601f8111620003cf575050565b60009060056000526020600020906020601f850160051c8301941062000412575b601f0160051c01915b8281106200040657505050565b818155600101620003f9565b9092508290620003f0565b601f81116200042a575050565b60009060066000526020600020906020601f850160051c830194106200046d575b601f0160051c01915b8281106200046157505050565b81815560010162000454565b90925082906200044b565b80519091906001600160401b0381116200021857620004a4816200049e600454620002cf565b62000367565b602080601f8311600114620004de57508190620004d993946000926200017c5750508160011b916000199060031b1c19161790565b600455565b6004600052601f198316949091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b926000905b8782106200054d57505083600195961062000533575b505050811b01600455565b015160001960f88460031b161c1916905538808062000528565b8060018596829496860151815501950193019062000512565b90815160208082106000146200058757505090620005849062000a6a565b90565b6001600160401b0382116200021857620005ae82620005a8600554620002cf565b620003c2565b602090601f8311600114620005eb57508190620005e393946000926200017c5750508160011b916000199060031b1c19161790565b60055560ff90565b6005600052601f198316949091907f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0926000905b8782106200065d57505083600195961062000643575b505050811b0160055560ff90565b015160001960f88460031b161c1916905538808062000635565b806001859682949686015181550195019301906200061f565b90815160208082106000146200069457505090620005849062000a6a565b6001600160401b0382116200021857620006bb82620006b5600654620002cf565b6200041d565b602090601f8311600114620006f857508190620006f093946000926200017c5750508160011b916000199060031b1c19161790565b60065560ff90565b6006600052601f198316949091907ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f926000905b8782106200076a57505083600195961062000750575b505050811b0160065560ff90565b015160001960f88460031b161c1916905538808062000742565b806001859682949686015181550195019301906200072c565b60e051610100516040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815260c0810181811060018060401b03821117620002185760405251902090565b15620007f757565b60405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b6064820152608490fd5b6001600160a01b03811690811562000a015781600052600a60205260406000206000602052604060002054600d54806200088f84620011f1565b10620009de575b50505060025491600d5480620008ab620011c0565b106200096a575b50620009449250620008cf620008ca60025462000ae7565b600255565b6001600160a01b03821660009081526020819052604090206b033b2e3c9fd0803ce8000000815401905560007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef604051806200093b81906b033b2e3c9fd0803ce8000000602083019252565b0390a362001033565b6002546200095c906001600160e01b031015620007ef565b6200096662000c74565b5050565b600b54680100000000000000009182821015620002185762000997826001620009b09401600b5562000b3c565b90919082549060031b91821b91600019901b1916179055565b600c54908110156200021857620009449362000997826001620009d79401600c5562000b6e565b38620008b2565b82620009f1600192620009f89562001194565b0162001194565b38808062000896565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b60208151910151906020811062000a5b575090565b6000199060200360031b1b1690565b601f81511162000a855762000a7f8162000a46565b90511790565b6040519063305a27a960e01b82528160208060048301528251908160248401526000935b82851062000acd575050604492506000838284010152601f80199101168101030190fd5b848101820151868601604401529381019385935062000aa9565b906b033b2e3c9fd0803ce8000000820180921162000b0157565b620002b9565b604080519192919081016001600160401b038111828210176200021857604052602081935463ffffffff81168352811c910152565b600b5481101562000b5857600b60005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b600c5481101562000b5857600c60005260206000200190600090565b805482101562000b585760005260206000200190600090565b60105490680100000000000000008210156200021857600182018060105582101562000b58576010600052805160209182015190911b63ffffffff191663ffffffff91909116177f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67290910155565b805468010000000000000000811015620002185762000c369160018201815562000b8a565b62000c5e57815160209283015190921b63ffffffff191663ffffffff92909216919091179055565b634e487b7160e01b600052600060045260246000fd5b60105490811590811562000daa5762000c8c62000255565b6000815260006020820152925b602084015162000cb9906001600160e01b03165b6001600160e01b031690565b9362000cc58562001218565b9315908162000d83575b501562000d1b57620002649062000d0462000cea8562000fc9565b6010600052916000805160206200385d8339815191520190565b9063ffffffff82549181199060201b169116179055565b506200026462000d4462000d3e62000d33436200112c565b65ffffffffffff1690565b62000f63565b62000d7d62000d538562000fc9565b62000d6d62000d6162000255565b63ffffffff9094168452565b6001600160e01b03166020830152565b62000ba3565b5163ffffffff16905063ffffffff62000da062000d33436200112c565b9116143862000ccf565b601060005262000dd16000805160206200385d833981519152840162000b07565b62000b07565b9262000c99565b805491821591821562000ed85762000def62000255565b6000815260006020820152935b602085015162000e15906001600160e01b031662000cad565b9462000e218662001232565b9415908162000eb1575b501562000e585762000d04620002649262000e468662000fc9565b92600019019060005260206000200190565b50620002649062000e7162000d3e62000d33436200112c565b9062000eab62000e818662000fc9565b62000e9b62000e8f62000255565b63ffffffff9095168552565b6001600160e01b03166020840152565b62000c11565b5163ffffffff16905063ffffffff62000ece62000d33436200112c565b9116143862000e2b565b62000ef262000dcb60001986018360005260206000200190565b9362000dfc565b805491821591821562000f425762000f1062000255565b6000815260006020820152935b602085015162000f36906001600160e01b031662000cad565b9462000e218662001218565b62000f5c62000dcb60001986018360005260206000200190565b9362000f1d565b63ffffffff9081811162000f75571690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608490fd5b6001600160e01b039081811162000fde571690565b60405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608490fd5b600e6020527fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881c546001600160a01b039182166000908152604081205483169290911690818314158062001123575b6200108b57505050565b81620010e4575b5050806200109d5750565b6001600160a01b0381166000908152600f602052604090206000805160206200387d83398151915290620010d19062000ef9565b60408051928352602083019190915290a2565b6200110a604082846000805160206200387d8339815191529452600f6020522062000dd8565b60408051928352602083019190915290a2388062001092565b50600162001081565b65ffffffffffff9081811162001140571690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608490fd5b908154916801000000000000000083101562000218578262000997916001620002649501815562000b8a565b600b5480620011cf5750600090565b600019810190811162000b0157620011e79062000b3c565b90549060031b1c90565b80548062001200575050600090565b600019810190811162000b0157620011e79162000b8a565b6b033b2e3c9fd0803ce8000000810180911162000b015790565b6b033b2e3c9fd0803ce8000000810390811162000b01579056fe6080604052600436101561001257600080fd5b60003560e01c806306fdde03146101f7578063095ea7b3146101f257806318160ddd146101ed57806323b872dd146101e8578063313ce567146101e35780633644e515146101de57806339509351146101d95780633a46b1a8146101d45780634bf5d7e9146101cf5780634ee2cd7e146101ca578063570ca735146101c5578063587cde1e146101c05780635c19a95c146101bb5780636fcfff45146101b657806370a08231146101b15780637ecebe00146101ac57806384b0196e146101a75780638e539e8c146101a257806391ddadf41461019d57806395d89b41146101985780639711715a14610193578063981b24d01461018e5780639ab24eb014610189578063a457c2d714610184578063a9059cbb1461017f578063b3ab15fb1461017a578063c3cda52014610175578063d505accf14610170578063dd62ed3e1461016b5763f1127ed81461016657600080fd5b611031565b610fe5565b610ea0565b610d8e565b610d27565b610d01565b610c65565b610c03565b610bcb565b610b6f565b610ae3565b610ab7565b610982565b610887565b61084d565b610813565b6107cb565b6107a7565b61076c565b610743565b6106e6565b610634565b6104e3565b610497565b610474565b610458565b610392565b610374565b610343565b610250565b919082519283825260005b848110610228575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201610207565b90602061024d9281815201906101fc565b90565b346103125760008060031936011261030f5760405181600354610272816110f8565b908184526020926001916001811690816000146102ed57506001146102b2575b6102ae856102a28189038261119e565b6040519182918261023c565b0390f35b929450600383528483205b8284106102da57505050816102ae936102a2928201019338610292565b80548585018701529285019281016102bd565b60ff191686860152505050151560051b82010191506102a2816102ae38610292565b80fd5b600080fd5b600435906001600160a01b038216820361031257565b602435906001600160a01b038216820361031257565b346103125760403660031901126103125761036961035f610317565b60243590336113bb565b602060405160018152f35b34610312576000366003190112610312576020600254604051908152f35b34610312576060366003190112610312576103ab610317565b6103b361032d565b6044359060018060a01b03831660005260016020526103d6336040600020611223565b5492600184016103f7575b6103eb935061158c565b60405160018152602090f35b8284106104135761040e836103eb950333836113bb565b6103e1565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b3461031257600036600319011261031257602060405160128152f35b3461031257600036600319011261031257602061048f611671565b604051908152f35b34610312576040366003190112610312576104b0610317565b3360005260016020526104c7816040600020611223565b5460243581018091116104de5761036991336113bb565b6110b8565b34610312576040366003190112610312576104fc610317565b6024359061051b65ffffffffffff61051343611aed565b1683106111c1565b6001600160a01b03166000908152600f60205260408120805492909183600581116105e3575b50905b8382106105925750508161056b575050602060005b6040516001600160e01b039091168152f35b61058661058d91602093600019019060005260206000200190565b5460201c90565b610559565b909261059e8185611d14565b908263ffffffff6105c36105b9858860005260206000200190565b5463ffffffff1690565b1611156105d35750925b90610544565b93506105de906110ce565b6105cd565b806105f36105f992969396611bd4565b906110eb565b908263ffffffff6106146105b9858860005260206000200190565b1611156106245750925b38610541565b935061062f906110ce565b61061e565b34610312576000366003190112610312574365ffffffffffff61065643611aed565b16036106a1576102ae60405161066b81611148565b601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c7400000060208201526040519182918261023c565b60405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f64650000006044820152606490fd5b346103125760403660031901126103125760206001600160a01b03610709610317565b166000818152600a83526107226040822060243561185b565b929015610733575050604051908152f35b604092508152808352205461048f565b34610312576000366003190112610312576007546040516001600160a01b039091168152602090f35b346103125760203660031901126103125760206001600160a01b0380610790610317565b16600052600e825260406000205416604051908152f35b34610312576020366003190112610312576107c96107c3610317565b33611897565b005b34610312576020366003190112610312576001600160a01b036107ec610317565b16600052600f602052602061080560406000205461190b565b63ffffffff60405191168152f35b34610312576020366003190112610312576001600160a01b03610834610317565b1660005260006020526020604060002054604051908152f35b34610312576020366003190112610312576001600160a01b0361086e610317565b1660005260086020526020604060002054604051908152f35b346103125760008060031936011261030f57610925906108c67f0000000000000000000000000000000000000000000000000000000000000000611970565b906108f07f0000000000000000000000000000000000000000000000000000000000000000611a4d565b90604051916108fe83611168565b818352610933602091604051968796600f60f81b885260e0602089015260e08801906101fc565b9086820360408801526101fc565b904660608601523060808601528260a086015284820360c0860152602080855193848152019401925b82811061096b57505050500390f35b83518552869550938101939281019260010161095c565b34610312576020366003190112610312576004356109b165ffffffffffff6109a943611aed565b1682106111c1565b6010549060008260058111610a62575b50905b828210610a115782806109de575060405160008152602090f35b601060005260209061058d907f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67101610586565b9091610a1d8184611d14565b6010600052908263ffffffff610a4260008051602061259b83398151915285016105b9565b161115610a525750915b906109c4565b9250610a5d906110ce565b610a4c565b806105f3610a7292959395611bd4565b6010600052908263ffffffff610a9760008051602061259b83398151915285016105b9565b161115610aa75750915b386109c1565b9250610ab2906110ce565b610aa1565b34610312576000366003190112610312576020610ad343611aed565b65ffffffffffff60405191168152f35b346103125760008060031936011261030f5760405181600454610b05816110f8565b908184526020926001916001811690816000146102ed5750600114610b34576102ae856102a28189038261119e565b929450600483528483205b828410610b5c57505050816102ae936102a2928201019338610292565b8054858501870152928501928101610b3f565b3461031257600036600319011261031257610b9560018060a01b03600754163314611249565b7f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb6760206001600d540180600d55604051908152a1005b3461031257602036600319011261031257610be76004356117d7565b9015610bf857602090604051908152f35b50602060025461048f565b34610312576020366003190112610312576001600160a01b03610c24610317565b16600052600f602052604060002080548015600014610c4b57505060405160008152602090f35b602091610c5c9160001901906112ed565b5054811c610559565b3461031257604036600319011261031257610c7e610317565b60243590336000526001602052610c99816040600020611223565b5491808310610cae576103eb920390336113bb565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b3461031257604036600319011261031257610369610d1d610317565b602435903361158c565b3461031257602036600319011261031257610d40610317565b600754906001600160a01b0390610d5a3383851614611249565b6001600160a01b0319909216911617600755005b6064359060ff8216820361031257565b6084359060ff8216820361031257565b346103125760c036600319011261031257610da7610317565b60443590602435610db6610d6e565b92804211610e5b57610e46610e56916107c99560405190610e2e82610e206020820195898b8860609194939260808201957fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf835260018060a01b0316602083015260408201520152565b03601f19810184528361119e565b610e4160a4359360843593519020611b54565b611b7a565b91610e5083611b91565b14611305565b611897565b60405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e617475726520657870697265640000006044820152606490fd5b346103125760e036600319011261031257610eb9610317565b610ec161032d565b6044359060643592610ed1610d7e565b844211610fa0576107c994610e20610f6992610f56610eef86611b91565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9602082019081526001600160a01b03808b1693830193909352918a166060820152608081018b905260a081019290925260c082019590955292839060e0820190565b610e4160c4359360a43593519020611b54565b6001600160a01b038281169116148015610f8c575b610f879061134d565b6113bb565b506007546001600160a01b03163314610f7e565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b34610312576040366003190112610312576020611028611003610317565b61100b61032d565b6001600160a01b0390911660009081526001845260409020611223565b54604051908152f35b346103125760403660031901126103125761104a610317565b63ffffffff60243581811681036103125761109461109a9160409460006020875161107481611148565b82815201526001600160a01b03166000908152600f6020528590206112ed565b50611399565b8251815190921682526020908101516001600160e01b031690820152f35b634e487b7160e01b600052601160045260246000fd5b90600182018092116104de57565b6000198101919082116104de57565b919082039182116104de57565b90600182811c92168015611128575b602083101461111257565b634e487b7160e01b600052602260045260246000fd5b91607f1691611107565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761116357604052565b611132565b602081019081106001600160401b0382111761116357604052565b60c081019081106001600160401b0382111761116357604052565b601f909101601f19168101906001600160401b0382119082101761116357604052565b156111c857565b60405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b6044820152606490fd5b6001600160a01b0316600090815260208190526040902090565b9060018060a01b0316600052602052604060002090565b6040519061124782611148565b565b1561125057565b60405162461bcd60e51b8152602060048201526024808201527f4f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e636044820152633a34b7b760e11b6064820152608490fd5b600c548110156112bc57600c60005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b600b548110156112bc57600b60005260206000200190600090565b80548210156112bc5760005260206000200190600090565b1561130c57565b60405162461bcd60e51b81526020600482015260196024820152784552433230566f7465733a20696e76616c6964206e6f6e636560381b6044820152606490fd5b1561135457565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b906040516113a681611148565b602081935463ffffffff81168352811c910152565b6001600160a01b03808216929190831561148857821693841561143857806114227f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259461141d6114339560018060a01b03166000526001602052604060002090565b611223565b556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b156114e057565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b1561153857565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b6001600160a01b03929190838116801561161e57611247948316906115b28215156114d9565b6115bc848461220d565b846115c684611209565b546115d382821015611531565b036115dd84611209565b556115e784611209565b8054860190556040518581527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602090a3612251565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480611762575b156116cc577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261175c81611183565b51902090565b507f000000000000000000000000000000000000000000000000000000000000000046146116a3565b1561179257565b60405162461bcd60e51b815260206004820152601d60248201527f4552433230536e617073686f743a206e6f6e6578697374656e742069640000006044820152606490fd5b801561181d576117f4906117ef600d5482111561178b565b611d29565b600b5481036118065750600090600090565b61180f906112a1565b90549060031b1c9060019190565b60405162461bcd60e51b815260206004820152601660248201527504552433230536e617073686f743a20696420697320360541b6044820152606490fd5b801561181d5761187990611873600d5482111561178b565b82611ddd565b8154810361188b575050600090600090565b600161180f92016112ed565b6001600160a01b039081166000818152600e60208181526040808420805485845291852054939092528686166001600160a01b0319821681179092556112479692959294921692909183917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9080a4611e68565b63ffffffff9081811161191c571690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608490fd5b60ff81146119ae5760ff811690601f821161199c576040519161199283611148565b8252602082015290565b604051632cd44ac360e21b8152600490fd5b506040516005548160006119c1836110f8565b808352602093600190818116908115611a2d57506001146119eb575b505061024d9250038261119e565b90939150600560005281600020936000915b818310611a1557505061024d935082010138806119dd565b855487840185015294850194869450918301916119fd565b91505061024d94925060ff191682840152151560051b82010138806119dd565b60ff8114611a6f5760ff811690601f821161199c576040519161199283611148565b50604051600654816000611a82836110f8565b808352602093600190818116908115611a2d5750600114611aab57505061024d9250038261119e565b90939150600660005281600020936000915b818310611ad557505061024d935082010138806119dd565b85548784018501529485019486945091830191611abd565b65ffffffffffff90818111611b00571690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608490fd5b604290611b5f611671565b906040519161190160f01b8352600283015260228201522090565b9161024d9391611b899361204e565b9190916120f2565b6001600160a01b0316600090815260086020526040902080546001810190915590565b8115611bbe570490565b634e487b7160e01b600052601260045260246000fd5b8015611d0e5780611ca7611ca0611c96611c8c611c82611c78611c6e611c64600161024d9a6000908b60801c80611d02575b508060401c80611cf5575b508060201c80611ce8575b508060101c80611cdb575b508060081c80611cce575b508060041c80611cc1575b508060021c80611cb4575b50821c611cad575b811c1b611c5d818b611bb4565b0160011c90565b611c5d818a611bb4565b611c5d8189611bb4565b611c5d8188611bb4565b611c5d8187611bb4565b611c5d8186611bb4565b611c5d8185611bb4565b8092611bb4565b90612283565b8101611c50565b6002915091019038611c48565b6004915091019038611c3d565b6008915091019038611c32565b6010915091019038611c27565b6020915091019038611c1c565b6040915091019038611c11565b91505060809038611c06565b50600090565b90808216911860011c81018091116104de5790565b600b90600b54918215611dd5576000906000935b808510611da0575050508115159081611d60575b501561024d5761024d906110dc565b9050611d98611d6e836110dc565b600b6000527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90190565b541438611d51565b611daa8186611d14565b90828452848260208620015411600014611dc45750611d3d565b9450611dcf906110ce565b93611d3d565b505050600090565b8054918215611dd557600080935b808510611e335750508215159182611e0e575b50501561024d5761024d906110dc565b611e2a919250611e1d846110dc565b9060005260206000200190565b54143880611dfe565b611e3d8186611d14565b90848352838260208520015411600014611e575750611deb565b9450611e62906110ce565b93611deb565b6001600160a01b03808316939291168084141580612045575b611e8c575b50505050565b80611ee8575b5082611e9f575b80611e86565b6001600160a01b03166000908152600f602052604090206000805160206125bb83398151915291611ecf9161230e565b60408051928352602083019190915290a2388080611e99565b80600052600f6020526000805160206125bb833981519152604060002080548015918260001461202257611f1a61123a565b6000815260006020820152915b6020830151611f46906001600160e01b03165b6001600160e01b031690565b92611f518985612580565b94159081611fff575b5015611f9d57611f82611f8792611f7086612492565b92600019019060005260206000200190565b612295565b604080519182526020820192909252a238611e92565b50611ffa90611fc1611fbc611fb143611aed565b65ffffffffffff1690565b61190b565b90611ff5611fce86612492565b611fe5611fd961123a565b63ffffffff9095168552565b6001600160e01b03166020840152565b6122ac565b611f87565b5163ffffffff16905063ffffffff612019611fb143611aed565b91161438611f5a565b61203f61203a60001984018360005260206000200190565b611399565b91611f27565b50821515611e81565b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116120c65791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156120b95781516001600160a01b038116156120b4579190565b508190565b50604051903d90823e3d90fd5b50505050600090600390565b600511156120dc57565b634e487b7160e01b600052602160045260246000fd5b6120fb816120d2565b806121035750565b61210c816120d2565b600181036121545760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b61215d816120d2565b600281036121aa5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806121b66003926120d2565b146121bd57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b906001600160a01b03808316612230575061222891506123c7565b611247612414565b81166122405750612228906123c7565b61224c611247926123c7565b6123c7565b6001600160a01b039081166000908152600e602052604080822054938316825290205461124793929082169116611e68565b9080821015612290575090565b905090565b9063ffffffff82549181199060201b169116179055565b8054600160401b811015611163576122c9916001820181556112ed565b6122f8578163ffffffff61124793511663ffffffff19835416178255602060018060e01b039101511690612295565b634e487b7160e01b600052600060045260246000fd5b9091815491821592836000146123aa5761232661123a565b60008152600060208201525b60208101516123549061234d906001600160e01b0316611f3a565b968761258d565b94159081612387575b501561237357611f8261124792611f7086612492565b5061124790611fc1611fbc611fb143611aed565b5163ffffffff16905063ffffffff6123a1611fb143611aed565b9116143861235d565b6123c261203a60001983018460005260206000200190565b612332565b60018060a01b0316600052600a60205260406000206000602052604060002054600d54806123f48461255d565b106123fe57505050565b8261240e600192611247956124fb565b016124fb565b600254600d549081612424612530565b1061242d575050565b600b54600160401b90818110156111635780600161244e9201600b556112d2565b81549060031b906000198096831b921b1916179055600c54908110156111635780600161247e9201600c556112a1565b909283549160031b92831b921b1916179055565b6001600160e01b03908181116124a6571690565b60405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608490fd5b8054600160401b81101561116357612518916001820181556112ed565b819291549060031b91821b91600019901b1916179055565b600b548061253e5750600090565b60001981019081116104de57612553906112d2565b90549060031b1c90565b80548061256b575050600090565b60001981019081116104de57612553916112ed565b9081039081116104de5790565b9081018091116104de579056fe1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724a264697066735822122020a2ba176e4b20ebe7059b556afaa4a55c716397265cfe1a7755fc0fd50bb19f64736f6c634300081800331b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae671dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724