@vechain/vebetterdao-contracts
Version:
Open-source repository that houses the smart contracts powering the decentralized VeBetterDAO on the VeChain Thor blockchain.
557 lines • 77.8 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "GovernorProposalLogic",
"sourceName": "contracts/governance/libraries/GovernorProposalLogic.sol",
"abi": [
{
"inputs": [],
"name": "CheckpointUnorderedInsertion",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "selector",
"type": "bytes"
}
],
"name": "GovernorFunctionInvalidSelector",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "targets",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "calldatas",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "values",
"type": "uint256"
}
],
"name": "GovernorInvalidProposalLength",
"type": "error"
},
{
"inputs": [
{
"internalType": "enum GovernorTypes.ProposalType",
"name": "proposalType",
"type": "uint8"
}
],
"name": "GovernorInvalidProposalType",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "proposer",
"type": "address"
},
{
"internalType": "uint256",
"name": "requiredWeight",
"type": "uint256"
}
],
"name": "GovernorInvalidProposer",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "roundId",
"type": "uint256"
}
],
"name": "GovernorInvalidStartRound",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "GovernorNonexistentProposal",
"type": "error"
},
{
"inputs": [],
"name": "GovernorQueueNotImplemented",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "functionSelector",
"type": "bytes4"
}
],
"name": "GovernorRestrictedFunction",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "enum GovernorTypes.ProposalType",
"name": "proposalType",
"type": "uint8"
}
],
"name": "GovernorRestrictedProposal",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "proposer",
"type": "address"
}
],
"name": "GovernorRestrictedProposer",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "enum GovernorTypes.ProposalState",
"name": "current",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "expectedStates",
"type": "bytes32"
}
],
"name": "GovernorUnexpectedProposalState",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "enum GovernorTypes.ProposalState",
"name": "current",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "expectedStates",
"type": "bytes32"
}
],
"name": "GovernorUnexpectedProposalState",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "PayoutAlreadyClaimed",
"type": "error"
},
{
"inputs": [],
"name": "QueueFull",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "bits",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "SafeCastOverflowedUintDowncast",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "UnauthorizedAccess",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "maxBudget",
"type": "uint256"
}
],
"name": "ProposalBudgetSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "ProposalCanceled",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "canceler",
"type": "address"
},
{
"indexed": false,
"internalType": "string",
"name": "reason",
"type": "string"
}
],
"name": "ProposalCanceledWithReason",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "ProposalCompleted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "proposer",
"type": "address"
},
{
"indexed": false,
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"indexed": false,
"internalType": "string[]",
"name": "signatures",
"type": "string[]"
},
{
"indexed": false,
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
},
{
"indexed": false,
"internalType": "string",
"name": "description",
"type": "string"
},
{
"indexed": true,
"internalType": "uint256",
"name": "roundIdVoteStart",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "depositThreshold",
"type": "uint256"
}
],
"name": "ProposalCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "enum GovernorTypes.ProposalType",
"name": "proposalType",
"type": "uint8"
}
],
"name": "ProposalCreatedWithType",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "depositor",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "ProposalDeposit",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "ProposalDevelopmentStateReset",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "ProposalExecuted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "ProposalInDevelopment",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "etaSeconds",
"type": "uint256"
}
],
"name": "ProposalQueued",
"type": "event"
},
{
"inputs": [],
"name": "canProposalStartInNextRound",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getActiveProposals",
"outputs": [
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "proposalDeadline",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "proposalNeedsQueuing",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "proposalSnapshot",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "proposalType",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x613f0b61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b95760003560e01c8063013b1088146100be57806301957cc7146100f15780632a09c772146101115780632d63f693146101365780635584c4f91461014957806381ab23531461015e578063a9a9529414610176578063badecd7614610189578063c01f9e37146101a9578063c0a6026c146101bc578063c429bd82146101de578063eab59fd2146101fe578063fcadd1f71461021e575b600080fd5b8180156100ca57600080fd5b506100de6100d93660046134a8565b61023e565b6040519081526020015b60405180910390f35b8180156100fd57600080fd5b506100de61010c36600461359d565b610311565b61012461011f36600461363d565b6103fd565b60405160ff90911681526020016100e8565b6100de61014436600461363d565b610437565b610151610448565b6040516100e89190613656565b610166610655565b60405190151581526020016100e8565b61016661018436600461363d565b610664565b81801561019557600080fd5b506100de6101a43660046136b3565b6106c0565b6100de6101b736600461363d565b6108ba565b8180156101c857600080fd5b506101dc6101d736600461363d565b6108c5565b005b8180156101ea57600080fd5b506101dc6101f936600461363d565b610980565b81801561020a57600080fd5b506100de61021936600461378a565b610aa0565b81801561022a57600080fd5b506100de61023936600461359d565b610afc565b600080610249610c95565b905060006102608b8b8b8b80519060200120610cb9565b905061027333888a8e8e8e876001610cf3565b81601a0160009054906101000a90046001600160a01b03166001600160a01b031663808860a5858333898e6040518663ffffffff1660e01b81526004016102be9594939291906138ec565b600060405180830381600087803b1580156102d857600080fd5b505af11580156102ec573d6000803e3d6000fd5b5050505061030233828d8d8d8d8d8d6001610f54565b9b9a5050505050505050505050565b60008061031c610c95565b9050600061032c87878787610cb9565b90506103418161033c6004611046565b611069565b50600061035289838a8a8a8a6110a8565b905065ffffffffffff8116156103d8576000828152600184016020908152604091829020600201805465ffffffffffff60381b1916600160381b65ffffffffffff8616908102919091179091558251858152918201527f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda2892910160405180910390a16103f1565b604051634844252360e11b815260040160405180910390fd5b50979650505050505050565b600080610408610c95565b600084815260158201602052604090205490915060ff1660018111156104305761043061393b565b9392505050565b600061044282611250565b92915050565b60606000610454610c95565b9050600081600a0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d19190613951565b6000818152602184016020526040812080549293509190816001600160401b038111156105005761050061324b565b604051908082528060200260200182016040528015610529578160200160208202803683370190505b5090506000805b838110156105ba57600085828154811061054c5761054c61396a565b600091825260209091200154905060016105658261163d565b60098111156105765761057661393b565b036105a7578084848151811061058e5761058e61396a565b6020908102919091010152826105a381613996565b9350505b50806105b281613996565b915050610530565b506000816001600160401b038111156105d5576105d561324b565b6040519080825280602002602001820160405280156105fe578160200160208202803683370190505b50905060005b828110156103f15783818151811061061e5761061e61396a565b60200260200101518282815181106106385761063861396a565b60209081029190910101528061064d81613996565b915050610604565b600061065f6119e4565b905090565b60008061066f610c95565b600084815260018083016020526040822090810154929350919003610698575060009392505050565b6002810154600160201b900460ff16156106b6575060019392505050565b5060009392505050565b6000806106cb610c95565b905060006106db88888888610cb9565b90506106e681611ba1565b6001600160a01b03168a6001600160a01b031614158015610705575088155b1561072e5789604051633733be5960e21b815260040161072591906139af565b60405180910390fd5b61079b8161073c6003611046565b6107466007611046565b6107506009611046565b61075a6008611046565b6107646006611046565b61076e6002611046565b600161077b6009826139c3565b610786906002613ac0565b6107909190613acf565b181818181818611069565b506107a581611ba1565b6001600160a01b03168a6001600160a01b0316036108265760006107c88261163d565b60098111156107d9576107d961393b565b146108265760405162461bcd60e51b815260206004820152601e60248201527f476f7665726e6f723a2070726f706f73616c206e6f742070656e64696e6700006044820152606401610725565b600081815260078301602052604090205480156108af57600683015460405163c4d252f560e01b8152600481018390526001600160a01b039091169063c4d252f590602401600060405180830381600087803b15801561088557600080fd5b505af1158015610899573d6000803e3d6000fd5b5050506000838152600785016020526040812055505b610302828c87611bca565b600061044282611c81565b60006108cf610c95565b600083815260158201602052604081205491925060ff909116908160018111156108fb576108fb61393b565b1461091d5782816040516344b7587b60e01b8152600401610725929190613af6565b61092b8361033c6008611046565b506000838152601e83016020908152604091829020805460ff1916600217905590518481527f71611adb0c8d2eea43359b2e41e5fdf96309ce734ed1eb78ceb763198c1b8967910160405180910390a1505050565b600061098a610c95565b90506109aa8261099a6009611046565b6109a46008611046565b17611069565b50600082815260288201602052604090205460ff16156109e0576040516331bfcd9f60e11b815260048101839052602401610725565b6000828152601e820160209081526040808320805460ff199081169091556027850183528184208054909116905560268401825280832080546001600160a01b0319169055602984019091528120610a37916131be565b6000828152602a820160205260408120610a50916131be565b6000828152602b820160205260408120610a69916131fb565b6040518281527f89e9abefcace5d0e37429f32023df3d73c9a310923f6383fa778ec40c629df0e9060200160405180910390a15050565b6000803390506000610abb8a8a8a8a80519060200120610cb9565b9050610ace8287898d8d8d876000610cf3565b6000610ae283838d8d8d8d8d8d6000610f54565b9050610aee8186611e04565b9a9950505050505050505050565b600080610b07610c95565b90506000610b1787878787610cb9565b9050610b3181610b276005611046565b6109a46004611046565b5060008181526001830160205260409020600201805460ff60281b1916600160281b1790556001600160a01b038816610b68611e71565b6001600160a01b031614610bfc5760005b8751811015610bfa57306001600160a01b0316888281518110610b9e57610b9e61396a565b60200260200101516001600160a01b031603610bea57610bea868281518110610bc957610bc961396a565b60200260200101518051906020012084600201611e8f90919063ffffffff16565b610bf381613996565b9050610b79565b505b610c0a888289898989611f00565b876001600160a01b0316610c1c611e71565b6001600160a01b031614158015610c4a575060028201546001600160801b03808216600160801b9092041614155b15610c5757600060028301555b6040518181527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9060200160405180910390a1979650505050505050565b7fd09a0aaf4ab3087bae7fa25ef74ddd4e5a4950980903ce417e66228cf7dc7b0090565b600084848484604051602001610cd29493929190613b7e565b60408051601f19818403018152919052805160209091012095945050505050565b6000610cfd610c95565b9050610d0882611f9c565b610d275781604051633e4bbe1960e11b81526004016107259190613bc9565b80600a0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da09190613951565b8811610dc257604051637a5d07d360e01b815260048101899052602401610725565b80600a0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3b9190613951565b610e46906001613bd7565b8803610e7457610e546119e4565b610e7457604051637a5d07d360e01b815260048101899052602401610725565b6000826001811115610e8857610e8861393b565b03610eb657610e978988611fd3565b610eb6578860405163d9b3955760e01b815260040161072591906139af565b84518651141580610ec957508351865114155b15610efe57855184518651604051630447b05d60e41b8152600481019390935260248301919091526044820152606401610725565b600083815260018083016020526040909120015415610f3f5782610f218461163d565b6040516331b75e4d60e01b8152610725929190600090600401613bea565b610f4986856120c4565b505050505050505050565b600080610f5f610c95565b90506000610f6c846121a9565b90506000610ff183600a0160009054906101000a90046001600160a01b03166001600160a01b03166302a251a36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fec9190613951565b612277565b8b5190915015156110028e876122a7565b6110128d8f848b858c898d61240b565b861561102357611023878f8f61251d565b6110348e8e8e8e8e8e8e8a8e6127b9565b509a9c9b505050505050505050505050565b600081600981111561105a5761105a61393b565b600160ff919091161b92915050565b6000806110758461163d565b905060008361108383611046565b1603610430578381846040516331b75e4d60e01b815260040161072593929190613bea565b6000806110b3610c95565b905060008160060160009054906101000a90046001600160a01b03166001600160a01b031663f27a0c926040518163ffffffff1660e01b8152600401602060405180830381865afa15801561110c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111309190613951565b9050600061113e858b612895565b600684015460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f4279061117a908b908b908b906000908890600401613c12565b602060405180830381865afa158015611197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bb9190613951565b60008a815260078501602052604080822092909255600685015491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb09161120a918c918c918c919088908a90600401613c60565b600060405180830381600087803b15801561122457600080fd5b505af1158015611238573d6000803e3d6000fd5b50505050610aee824261124b9190613bd7565b6128a6565b60008061125b610c95565b90508060010160008481526020019081526020016000206001015481600a0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ef9190613951565b1061138c5760006112fe610c95565b600a81015460008681526001808401602052604091829020015490516368377f6d60e11b815260048101919091529192506001600160a01b03169063d06efeda906024015b602060405180830381865afa158015611360573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113849190613951565b949350505050565b600a81015460408051639cbe5efd60e01b815290516000926001600160a01b031691639cbe5efd9160048083019260209291908290030181865afa1580156113d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fc9190613951565b600085815260018085016020526040909120015461141a9190613acf565b90506000611429600183613acf565b83600a0160009054906101000a90046001600160a01b03166001600160a01b03166302a251a36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561147e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a29190613951565b6114ac9190613cb8565b9050600083600a0160009054906101000a90046001600160a01b03166001600160a01b031663593728126040518163ffffffff1660e01b8152600401602060405180830381865afa158015611505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115299190613951565b905073__$3618b725599b71188fd71e0b940aaf7176$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af4158015611574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115989190613ccf565b65ffffffffffff16811161161e5773__$3618b725599b71188fd71e0b940aaf7176$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af41580156115ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116139190613ccf565b65ffffffffffff1690505b826116298383613bd7565b6116339190613bd7565b9695505050505050565b600080611648610c95565b6000848152600180830160209081526040808420601e8601909252909220546002830154939450919260ff92831692600160281b8204811692600160301b909204169083600281111561169d5761169d61393b565b036116af575060089695505050505050565b60028360028111156116c3576116c361393b565b036116d5575060099695505050505050565b81156116e8575060069695505050505050565b80156116fb575060029695505050505050565b836001015460000361172357604051636ad0607560e01b815260048101889052602401610725565b836001015485600a0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561177d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a19190613951565b10156117b4575060009695505050505050565b600073__$3618b725599b71188fd71e0b940aaf7176$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af41580156117ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118239190613ccf565b65ffffffffffff169050600061183889611c81565b9050611843896128d4565b6118565750600798975050505050505050565b81811061186c5750600198975050505050505050565b61187589612900565b158061188757506118858961295e565b155b1561189b5750600398975050505050505050565b6118a489612986565b6000036118ba5750600498975050505050505050565b6000898152600788016020526040908190205460068901549151632c258a9f60e11b81526004810182905290916001600160a01b03169063584b153e90602401602060405180830381865afa158015611917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193b9190613cf7565b15611950575060059998505050505050505050565b6006880154604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa15801561199b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bf9190613cf7565b156119d4575060069998505050505050505050565b5060029998505050505050505050565b6000806119ef610c95565b9050600081600a0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6c9190613951565b600a83015460405163d3a368bd60e01b8152600481018390529192506000916001600160a01b039091169063d3a368bd90602401602060405180830381865afa158015611abd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae19190613951565b9050600073__$3618b725599b71188fd71e0b940aaf7176$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af4158015611b2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b529190613ccf565b90508065ffffffffffff168211611b6e57600094505050505090565b611b8065ffffffffffff821683613acf565b84600401541115611b9657600094505050505090565b600194505050505090565b600080611bac610c95565b6000938452600101602052505060409020546001600160a01b031690565b600080611bd5610c95565b600086815260018201602052604090819020600201805460ff60301b1916600160301b179055519091507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c90611c2e9087815260200190565b60405180910390a1836001600160a01b0316857f93bcf40b1de68d22878e9394837dd4b08dae46ee73bc722cccffecdadbe4414585604051611c709190613d14565b60405180910390a350929392505050565b600080611c8c610c95565b90508060010160008481526020019081526020016000206001015481600a0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d209190613951565b10611d78576000611d2f610c95565b600a810154600086815260018084016020526040918290200154905163d3a368bd60e01b815260048101919091529192506001600160a01b03169063d3a368bd90602401611343565b80600a0160009054906101000a90046001600160a01b03166001600160a01b03166302a251a36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df19190613951565b611dfa84611250565b6104309190613bd7565b80600003611e10575050565b6000611e1a610c95565b6000848152602582016020526040908190208490555190915083907fcd8165bf95ab7c7ec457210098e726b4261032710b47126b883ca5247afdd83790611e649085815260200190565b60405180910390a2505050565b600080611e7c610c95565b600601546001600160a01b031692915050565b81546001600160801b03600160801b820481169181166001830190911603611eca57604051638acb5f2760e01b815260040160405180910390fd5b6001600160801b03808216600090815260018086016020526040909120939093558354919092018216600160801b029116179055565b6000611f0a610c95565b60068101549091506001600160a01b031663e38335e5348787876000611f30898f612895565b6040518763ffffffff1660e01b8152600401611f50959493929190613c12565b6000604051808303818588803b158015611f6957600080fd5b505af1158015611f7d573d6000803e3d6000fd5b5050506000978852505060070160205250506040832092909255505050565b600080826001811115611fb157611fb161393b565b148061044257506001826001811115611fcc57611fcc61393b565b1492915050565b80516000906034811015611feb576001915050610442565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b1461201e57600192505050610442565b60008061202c602885613acf565b90505b838110156120a35760008061206388848151811061204f5761204f61396a565b01602001516001600160f81b0319166129b8565b915091508161207b5760019650505050505050610442565b8060ff166004856001600160a01b0316901b17935050508061209c90613996565b905061202f565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006120ce610c95565b600981015490915060ff16156121a45760005b83518110156121a257600061210e8483815181106121015761210161396a565b6020026020010151612a4a565b90508260080160008684815181106121285761212861396a565b6020908102919091018101516001600160a01b0316825281810192909252604090810160009081206001600160e01b03198516825290925290205460ff1661218f5760405163294080f760e21b81526001600160e01b031982166004820152602401610725565b508061219a81613996565b9150506120e1565b505b505050565b6000806121b4610c95565b90506000606482600b0160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561220f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122339190613951565b61223c86612a79565b6122469190613cb8565b6122509190613d3d565b9050600061225d85612aeb565b90508082111561226f57949350505050565b509392505050565b600063ffffffff8211156122a3576020826040516306dfcc6560e41b8152600401610725929190613d5f565b5090565b60006122b1610c95565b9050600081601c0160008460018111156122cd576122cd61393b565b60018111156122de576122de61393b565b815260208101919091526040908101600090812054601b850154925163d206885d60e01b815290935090916001600160a01b031690636d5e303290829063d206885d9061232f908a906004016139af565b602060405180830381865afa15801561234c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123709190613951565b6040518263ffffffff1660e01b815260040161238e91815260200190565b602060405180830381865afa1580156123ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123cf9190613951565b905081811015612404576040516304b60e7960e31b81526001600160a01b038616600482015260248101839052604401610725565b5050505050565b6000612415610c95565b905060008160010160008b81526020019081526020016000209050888160000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550868160010181905550878160020160006101000a81548163ffffffff021916908363ffffffff160217905550858160020160046101000a81548160ff021916908315150217905550848160030181905550838160040181905550828260150160008c815260200190815260200160002060006101000a81548160ff021916908360018111156124ea576124ea61393b565b02179055505060009586526021016020908152604086208054600181018255908752952090940196909655505050505050565b6000612527610c95565b600c8101546040516323b872dd60e01b81526001600160a01b038681166004830152306024830152604482018890529293509116906323b872dd906064016020604051808303816000875af1158015612584573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a89190613cf7565b6125f45760405162461bcd60e51b815260206004820152601d60248201527f42335452476f7665726e6f723a207472616e73666572206661696c65640000006044820152606401610725565b6000828152600d8201602090815260408083206001600160a01b038716845290915281208054869290612628908490613bd7565b9250508190555060006126c173__$3618b725599b71188fd71e0b940aaf7176$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af415801561267d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a19190613ccf565b6001600160a01b0386166000908152601d85016020526040902090612b35565b905060006126ce86612beb565b6126d89083613d72565b905061276b73__$3618b725599b71188fd71e0b940aaf7176$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af4158015612726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274a9190613ccf565b6001600160a01b0387166000908152601d8601602052604090209083612c1a565b505083856001600160a01b03167f65c1df56bba34c409163f3295407ab399df5a4d9bf3dd0288416d6041cdc272c886040516127a991815260200190565b60405180910390a3505050505050565b82896001600160a01b0316897f9c2b0d68f5edfd1bf6158a1867aced894efcfcf77c7a7603cb571e18ce89ae768a8a8c516001600160401b038111156128015761280161324b565b60405190808252806020026020018201604052801561283457816020015b606081526020019060019003908161281f5790505b508b8b8a60405161284a96959493929190613d99565b60405180910390a4877f6d04097725b4d82fbe72e4fd0fd1798c60a7b1bbc328842680c83ac06b1b0ada826040516128829190613bc9565b60405180910390a2505050505050505050565b60601b6001600160601b0319161890565b600065ffffffffffff8211156122a3576030826040516306dfcc6560e41b8152600401610725929190613d5f565b6000806128df610c95565b60009384526001016020525050604090206004810154600390910154101590565b60008061290b610c95565b6000848152601582016020908152604080832054601185019092529091205491925060ff169061295461293d86611250565b83600181111561294f5761294f61393b565b612c35565b1115949350505050565b600080612969610c95565b6000938452600f0160205250506040902080546001909101541190565b600080612991610c95565b600093845260010160205250506040902060020154600160381b900465ffffffffffff1690565b60008060f883901c602f811180156129d35750603a8160ff16105b156129e857600194602f199091019350915050565b8060ff1660401080156129fe575060478160ff16105b15612a13576001946036199091019350915050565b8060ff166060108015612a29575060678160ff16105b15612a3e576001946056199091019350915050565b50600093849350915050565b6000600482511015612a7157816040516301a800fb60e41b81526004016107259190613d14565b506020015190565b600080612a84610c95565b9050612a8f83611f9c565b612aab5760405162461bcd60e51b815260040161072590613e50565b806016016000846001811115612ac357612ac361393b565b6001811115612ad457612ad461393b565b815260200190815260200160002054915050919050565b600080612af6610c95565b9050612b0183611f9c565b612b1d5760405162461bcd60e51b815260040161072590613e50565b806019016000846001811115612ac357612ac361393b565b815460009081816005811115612b94576000612b5084612cd1565b612b5a9085613acf565b60008881526020902090915081015465ffffffffffff9081169087161015612b8457809150612b92565b612b8f816001613bd7565b92505b505b6000612ba287878585612db9565b90508015612bdd57612bc787612bb9600184613acf565b600091825260209091200190565b54600160301b90046001600160d01b0316612be0565b60005b979650505050505050565b60006001600160d01b038211156122a35760d0826040516306dfcc6560e41b8152600401610725929190613d5f565b600080612c28858585612e13565b915091505b935093915050565b600080612c40610c95565b90506064612c4e8585612f8d565b600c830154604051632394e7a360e21b8152600481018890526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612c99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cbd9190613951565b612cc79190613cb8565b6113849190613d3d565b600081600003612ce357506000919050565b60006001612cf084612fad565b901c6001901b90506001818481612d0957612d09613d27565b048201901c90506001818481612d2157612d21613d27565b048201901c90506001818481612d3957612d39613d27565b048201901c90506001818481612d5157612d51613d27565b048201901c90506001818481612d6957612d69613d27565b048201901c90506001818481612d8157612d81613d27565b048201901c90506001818481612d9957612d99613d27565b048201901c905061043081828581612db357612db3613d27565b04613041565b60005b8183101561226f576000612dd08484613057565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff161115612dff57809250612e0d565b612e0a816001613bd7565b93505b50612dbc565b825460009081908015612f32576000612e3187612bb9600185613acf565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b031660208401529192509087161015612e8557604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff808816911603612ed15784612ea888612bb9600186613acf565b80546001600160d01b0392909216600160301b0265ffffffffffff909216919091179055612f22565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b602001519250839150612c2d9050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b029190931617920191909155905081612c2d565b6000610430838360ff166001811115612fa857612fa861393b565b613072565b600080608083901c15612fc257608092831c92015b604083901c15612fd457604092831c92015b602083901c15612fe657602092831c92015b601083901c15612ff857601092831c92015b600883901c1561300a57600892831c92015b600483901c1561301c57600492831c92015b600283901c1561302e57600292831c92015b600183901c156104425760010192915050565b60008183106130505781610430565b5090919050565b60006130666002848418613d3d565b61043090848416613bd7565b60008061307d610c95565b905060008160180160008560018111156130995761309961393b565b60018111156130aa576130aa61393b565b81526020810191909152604001600090812054915060188301818660018111156130d6576130d661393b565b60018111156130e7576130e761393b565b81526020810191909152604001600020613102600184613acf565b815481106131125761311261396a565b6000918252602090912001805490915065ffffffffffff811690600160301b90046001600160d01b0316878211613158576001600160d01b031694506104429350505050565b6131a9613164896128a6565b8660180160008a600181111561317c5761317c61393b565b600181111561318d5761318d61393b565b8152602001908152602001600020612b3590919063ffffffff16565b6001600160d01b031698975050505050505050565b5080546131ca90613e9b565b6000825580601f106131da575050565b601f0160209004906000526020600020908101906131f89190613219565b50565b50805460008255906000526020600020908101906131f8919061322e565b5b808211156122a3576000815560010161321a565b808211156122a357600061324282826131be565b5060010161322e565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156132895761328961324b565b604052919050565b60006001600160401b038211156132aa576132aa61324b565b5060051b60200190565b80356001600160a01b03811681146132cb57600080fd5b919050565b600082601f8301126132e157600080fd5b813560206132f66132f183613291565b613261565b82815260059290921b8401810191818101908684111561331557600080fd5b8286015b848110156133375761332a816132b4565b8352918301918301613319565b509695505050505050565b600082601f83011261335357600080fd5b813560206133636132f183613291565b82815260059290921b8401810191818101908684111561338257600080fd5b8286015b848110156133375780358352918301918301613386565b60006001600160401b038311156133b6576133b661324b565b6133c9601f8401601f1916602001613261565b90508281528383830111156133dd57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261340557600080fd5b813560206134156132f183613291565b82815260059290921b8401810191818101908684111561343457600080fd5b8286015b848110156133375780356001600160401b038111156134575760008081fd5b8701603f810189136134695760008081fd5b61347a89868301356040840161339d565b845250918301918301613438565b600082601f83011261349957600080fd5b6104308383356020850161339d565b600080600080600080600080610100898b0312156134c557600080fd5b88356001600160401b03808211156134dc57600080fd5b6134e88c838d016132d0565b995060208b01359150808211156134fe57600080fd5b61350a8c838d01613342565b985060408b013591508082111561352057600080fd5b61352c8c838d016133f4565b975060608b013591508082111561354257600080fd5b61354e8c838d01613488565b965060808b0135955060a08b0135945061356a60c08c016132b4565b935060e08b013591508082111561358057600080fd5b5061358d8b828c01613488565b9150509295985092959890939650565b600080600080600060a086880312156135b557600080fd5b6135be866132b4565b945060208601356001600160401b03808211156135da57600080fd5b6135e689838a016132d0565b955060408801359150808211156135fc57600080fd5b61360889838a01613342565b9450606088013591508082111561361e57600080fd5b5061362b888289016133f4565b95989497509295608001359392505050565b60006020828403121561364f57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b8181101561368e57835183529284019291840191600101613672565b50909695505050505050565b80151581146131f857600080fd5b80356132cb8161369a565b600080600080600080600060e0888a0312156136ce57600080fd5b6136d7886132b4565b96506136e5602089016136a8565b955060408801356001600160401b038082111561370157600080fd5b61370d8b838c016132d0565b965060608a013591508082111561372357600080fd5b61372f8b838c01613342565b955060808a013591508082111561374557600080fd5b6137518b838c016133f4565b945060a08a0135935060c08a013591508082111561376e57600080fd5b5061377b8a828b01613488565b91505092959891949750929550565b600080600080600080600060e0888a0312156137a557600080fd5b87356001600160401b03808211156137bc57600080fd5b6137c88b838c016132d0565b985060208a01359150808211156137de57600080fd5b6137ea8b838c01613342565b975060408a013591508082111561380057600080fd5b61380c8b838c016133f4565b965060608a013591508082111561382257600080fd5b5061382f8a828b01613488565b979a969950949760808101359660a0820135965060c090910135945092505050565b6000815180845260005b818110156138775760208185018101518683018201520161385b565b506000602082860101526020601f19601f83011685010191505092915050565b600081518084526020808501808196508360051b8101915082860160005b858110156138df5782840389526138cd848351613851565b988501989350908401906001016138b5565b5091979650505050505050565b60a0815260006138ff60a0830188613851565b602083018790526001600160a01b03868116604085015285166060840152828103608084015261392f8185613897565b98975050505050505050565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561396357600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016139a8576139a8613980565b5060010190565b6001600160a01b0391909116815260200190565b60ff818116838216019081111561044257610442613980565b600181815b80851115613a175781600019048211156139fd576139fd613980565b80851615613a0a57918102915b93841c93908002906139e1565b509250929050565b600082613a2e57506001610442565b81613a3b57506000610442565b8160018114613a515760028114613a5b57613a77565b6001915050610442565b60ff841115613a6c57613a6c613980565b50506001821b610442565b5060208310610133831016604e8410600b8410161715613a9a575081810a610442565b613aa483836139dc565b8060001904821115613ab857613ab8613980565b029392505050565b600061043060ff841683613a1f565b8181038181111561044257610442613980565b60028110613af257613af261393b565b9052565b828152604081016104306020830184613ae2565b600081518084526020808501945080840160005b83811015613b435781516001600160a01b031687529582019590820190600101613b1e565b509495945050505050565b600081518084526020808501945080840160005b83811015613b4357815187529582019590820190600101613b62565b608081526000613b916080830187613b0a565b8281036020840152613ba38187613b4e565b90508281036040840152613bb78186613897565b91505082606083015295945050505050565b602081016104428284613ae2565b8082018082111561044257610442613980565b83815260608101600a8410613c0157613c0161393b565b602082019390935260400152919050565b60a081526000613c2560a0830188613b0a565b8281036020840152613c378188613b4e565b90508281036040840152613c4b8187613897565b60608401959095525050608001529392505050565b60c081526000613c7360c0830189613b0a565b8281036020840152613c858189613b4e565b90508281036040840152613c998188613897565b60608401969096525050608081019290925260a0909101529392505050565b808202811582820484141761044257610442613980565b600060208284031215613ce157600080fd5b815165ffffffffffff8116811461043057600080fd5b600060208284031215613d0957600080fd5b81516104308161369a565b6020815260006104306020830184613851565b634e487b7160e01b600052601260045260246000fd5b600082613d5a57634e487b7160e01b600052601260045260246000fd5b500490565b60ff929092168252602082015260400190565b6001600160d01b03818116838216019080821115613d9257613d92613980565b5092915050565b60c081526000613dac60c0830189613b0a565b602083820381850152613dbf828a613b4e565b915083820360408501528188518084528284019150828160051b850101838b0160005b83811015613e1057601f19878403018552613dfe838351613851565b94860194925090850190600101613de2565b50508681036060880152613e24818b613897565b9450505050508281036080840152613e3c8186613851565b9150508260a0830152979650505050505050565b6020808252602b908201527f476f7665726e6f72436f6e666967757261746f723a20696e76616c696420707260408201526a6f706f73616c207479706560a81b606082015260800190565b600181811c90821680613eaf57607f821691505b602082108103613ecf57634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220eabddccf952d8e005c27d809cb766d9b377603e597f8fa6dec9a8600b4aa174c64736f6c63430008140033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100b95760003560e01c8063013b1088146100be57806301957cc7146100f15780632a09c772146101115780632d63f693146101365780635584c4f91461014957806381ab23531461015e578063a9a9529414610176578063badecd7614610189578063c01f9e37146101a9578063c0a6026c146101bc578063c429bd82146101de578063eab59fd2146101fe578063fcadd1f71461021e575b600080fd5b8180156100ca57600080fd5b506100de6100d93660046134a8565b61023e565b6040519081526020015b60405180910390f35b8180156100fd57600080fd5b506100de61010c36600461359d565b610311565b61012461011f36600461363d565b6103fd565b60405160ff90911681526020016100e8565b6100de61014436600461363d565b610437565b610151610448565b6040516100e89190613656565b610166610655565b60405190151581526020016100e8565b61016661018436600461363d565b610664565b81801561019557600080fd5b506100de6101a43660046136b3565b6106c0565b6100de6101b736600461363d565b6108ba565b8180156101c857600080fd5b506101dc6101d736600461363d565b6108c5565b005b8180156101ea57600080fd5b506101dc6101f936600461363d565b610980565b81801561020a57600080fd5b506100de61021936600461378a565b610aa0565b81801561022a57600080fd5b506100de61023936600461359d565b610afc565b600080610249610c95565b905060006102608b8b8b8b80519060200120610cb9565b905061027333888a8e8e8e876001610cf3565b81601a0160009054906101000a90046001600160a01b03166001600160a01b031663808860a5858333898e6040518663ffffffff1660e01b81526004016102be9594939291906138ec565b600060405180830381600087803b1580156102d857600080fd5b505af11580156102ec573d6000803e3d6000fd5b5050505061030233828d8d8d8d8d8d6001610f54565b9b9a5050505050505050505050565b60008061031c610c95565b9050600061032c87878787610cb9565b90506103418161033c6004611046565b611069565b50600061035289838a8a8a8a6110a8565b905065ffffffffffff8116156103d8576000828152600184016020908152604091829020600201805465ffffffffffff60381b1916600160381b65ffffffffffff8616908102919091179091558251858152918201527f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda2892910160405180910390a16103f1565b604051634844252360e11b815260040160405180910390fd5b50979650505050505050565b600080610408610c95565b600084815260158201602052604090205490915060ff1660018111156104305761043061393b565b9392505050565b600061044282611250565b92915050565b60606000610454610c95565b9050600081600a0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d19190613951565b6000818152602184016020526040812080549293509190816001600160401b038111156105005761050061324b565b604051908082528060200260200182016040528015610529578160200160208202803683370190505b5090506000805b838110156105ba57600085828154811061054c5761054c61396a565b600091825260209091200154905060016105658261163d565b60098111156105765761057661393b565b036105a7578084848151811061058e5761058e61396a565b6020908102919091010152826105a381613996565b9350505b50806105b281613996565b915050610530565b506000816001600160401b038111156105d5576105d561324b565b6040519080825280602002602001820160405280156105fe578160200160208202803683370190505b50905060005b828110156103f15783818151811061061e5761061e61396a565b60200260200101518282815181106106385761063861396a565b60209081029190910101528061064d81613996565b915050610604565b600061065f6119e4565b905090565b60008061066f610c95565b600084815260018083016020526040822090810154929350919003610698575060009392505050565b6002810154600160201b900460ff16156106b6575060019392505050565b5060009392505050565b6000806106cb610c95565b905060006106db88888888610cb9565b90506106e681611ba1565b6001600160a01b03168a6001600160a01b031614158015610705575088155b1561072e5789604051633733be5960e21b815260040161072591906139af565b60405180910390fd5b61079b8161073c6003611046565b6107466007611046565b6107506009611046565b61075a6008611046565b6107646006611046565b61076e6002611046565b600161077b6009826139c3565b610786906002613ac0565b6107909190613acf565b181818181818611069565b506107a581611ba1565b6001600160a01b03168a6001600160a01b0316036108265760006107c88261163d565b60098111156107d9576107d961393b565b146108265760405162461bcd60e51b815260206004820152601e60248201527f476f7665726e6f723a2070726f706f73616c206e6f742070656e64696e6700006044820152606401610725565b600081815260078301602052604090205480156108af57600683015460405163c4d252f560e01b8152600481018390526001600160a01b039091169063c4d252f590602401600060405180830381600087803b15801561088557600080fd5b505af1158015610899573d6000803e3d6000fd5b5050506000838152600785016020526040812055505b610302828c87611bca565b600061044282611c81565b60006108cf610c95565b600083815260158201602052604081205491925060ff909116908160018111156108fb576108fb61393b565b1461091d5782816040516344b7587b60e01b8152600401610725929190613af6565b61092b8361033c6008611046565b506000838152601e83016020908152604091829020805460ff1916600217905590518481527f71611adb0c8d2eea43359b2e41e5fdf96309ce734ed1eb78ceb763198c1b8967910160405180910390a1505050565b600061098a610c95565b90506109aa8261099a6009611046565b6109a46008611046565b17611069565b50600082815260288201602052604090205460ff16156109e0576040516331bfcd9f60e11b815260048101839052602401610725565b6000828152601e820160209081526040808320805460ff199081169091556027850183528184208054909116905560268401825280832080546001600160a01b0319169055602984019091528120610a37916131be565b6000828152602a820160205260408120610a50916131be565b6000828152602b820160205260408120610a69916131fb565b6040518281527f89e9abefcace5d0e37429f32023df3d73c9a310923f6383fa778ec40c629df0e9060200160405180910390a15050565b6000803390506000610abb8a8a8a8a80519060200120610cb9565b9050610ace8287898d8d8d876000610cf3565b6000610ae283838d8d8d8d8d8d6000610f54565b9050610aee8186611e04565b9a9950505050505050505050565b6