[ { "inputs": [], "name": "BurnTooManyAddresses", "type": "error" }, { "inputs": [], "name": "MintToManyAddresses", "type": "error" }, { "inputs": [], "name": "MismatchedInputLengths", "type": "error" }, { "inputs": [], "name": "NoTokenIDsProvided", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "previousAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "AdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "beacon", "type": "address" } ], "name": "BeaconUpgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UPGRADER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[][]", "name": "ids", "type": "uint256[][]" }, { "internalType": "uint256[][]", "name": "amounts", "type": "uint256[][]" } ], "name": "burnBadgesBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "wallet", "type": "address" }, { "internalType": "uint256", "name": "upToId", "type": "uint256" } ], "name": "getAllBadges", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "uri", "type": "string" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "mintBadges", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "recipients", "type": "address[]" }, { "internalType": "uint256[][]", "name": "ids", "type": "uint256[][]" } ], "name": "mintBadgesBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" } ], "name": "upgradeTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
60a06040523060805234801561001457600080fd5b5060805161321b61004c6000396000818161097b015281816109bb01528181610d2001528181610d600152610def015261321b6000f3fe6080604052600436106101c15760003560e01c806352d1902d116100f7578063a22cb46511610095578063f242432a11610064578063f242432a14610563578063f2fde38b14610583578063f62d1888146105a3578063f72c0d8b146105c357600080fd5b8063a22cb465146104b8578063d5391393146104d8578063d547741f146104fa578063e985e9c51461051a57600080fd5b80638da5cb5b116100d15780638da5cb5b1461042a57806391d148541461045357806395d89b4114610473578063a217fddf146104a357600080fd5b806352d1902d146103e0578063715018a6146103f557806382009ec01461040a57600080fd5b80632f2ff15d1161016457806336cb63bb1161013e57806336cb63bb146103605780634ca6f3f5146103805780634e1273f4146103a05780634f1ef286146103cd57600080fd5b80632f2ff15d1461030057806336568abe146103205780633659cfe61461034057600080fd5b80630e89341c116101a05780630e89341c1461026e578063248a9ca31461028e5780632906cb9e146102be5780632eb2c2d6146102e057600080fd5b8062fdd58e146101c657806301ffc9a7146101f957806306fdde0314610229575b600080fd5b3480156101d257600080fd5b506101e66101e13660046123e4565b6105f7565b6040519081526020015b60405180910390f35b34801561020557600080fd5b50610219610214366004612424565b610692565b60405190151581526020016101f0565b34801561023557600080fd5b506102616040518060400160405280600c81526020016b456e67656e2042616467657360a01b81525081565b6040516101f09190612491565b34801561027a57600080fd5b506102616102893660046124a4565b61069d565b34801561029a57600080fd5b506101e66102a93660046124a4565b60009081526097602052604090206001015490565b3480156102ca57600080fd5b506102de6102d9366004612694565b610731565b005b3480156102ec57600080fd5b506102de6102fb366004612798565b610884565b34801561030c57600080fd5b506102de61031b366004612841565b6108c9565b34801561032c57600080fd5b506102de61033b366004612841565b6108f3565b34801561034c57600080fd5b506102de61035b36600461286d565b610971565b34801561036c57600080fd5b506102de61037b366004612888565b610a50565b34801561038c57600080fd5b506102de61039b3660046128eb565b610b25565b3480156103ac57600080fd5b506103c06103bb36600461292e565b610bf5565b6040516101f091906129c3565b6102de6103db3660046129d6565b610d16565b3480156103ec57600080fd5b506101e6610de2565b34801561040157600080fd5b506102de610e96565b34801561041657600080fd5b506103c06104253660046123e4565b610eaa565b34801561043657600080fd5b5061012d546040516001600160a01b0390911681526020016101f0565b34801561045f57600080fd5b5061021961046e366004612841565b610f3f565b34801561047f57600080fd5b506102616040518060400160405280600481526020016322a723a160e11b81525081565b3480156104af57600080fd5b506101e6600081565b3480156104c457600080fd5b506102de6104d3366004612a19565b610f6a565b3480156104e457600080fd5b506101e66000805160206131c683398151915281565b34801561050657600080fd5b506102de610515366004612841565b610f75565b34801561052657600080fd5b50610219610535366004612a55565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205460ff1690565b34801561056f57600080fd5b506102de61057e366004612a7f565b610f9a565b34801561058f57600080fd5b506102de61059e36600461286d565b610fdf565b3480156105af57600080fd5b506102de6105be366004612ae3565b611055565b3480156105cf57600080fd5b506101e67f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e381565b60006001600160a01b0383166106675760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b5060008181526065602090815260408083206001600160a01b03861684529091529020545b92915050565b600061068c826111c4565b6060606780546106ac90612b2b565b80601f01602080910402602001604051908101604052809291908181526020018280546106d890612b2b565b80156107255780601f106106fa57610100808354040283529160200191610725565b820191906000526020600020905b81548152906001019060200180831161070857829003601f168201915b50505050509050919050565b6000805160206131c6833981519152610749816111e9565b8251845114158061075c57508151845114155b1561077a5760405163a0b1d72d60e01b815260040160405180910390fd5b60fa8451111561079d5760405163bbaefd2960e01b815260040160405180910390fd5b82516000036107bf5760405163ceb7371d60e01b815260040160405180910390fd5b60005b845181101561087d578281815181106107dd576107dd612b65565b6020026020010151518482815181106107f8576107f8612b65565b6020026020010151511461081f5760405163a0b1d72d60e01b815260040160405180910390fd5b61087585828151811061083457610834612b65565b602002602001015185838151811061084e5761084e612b65565b602002602001015185848151811061086857610868612b65565b60200260200101516111f3565b6001016107c2565b5050505050565b6001600160a01b0385163314806108a057506108a08533610535565b6108bc5760405162461bcd60e51b815260040161065e90612b7b565b61087d85858585856113ee565b6000828152609760205260409020600101546108e4816111e9565b6108ee8383611586565b505050565b6001600160a01b03811633146109635760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161065e565b61096d828261160c565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109b95760405162461bcd60e51b815260040161065e90612bc9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a0260008051602061317f833981519152546001600160a01b031690565b6001600160a01b031614610a285760405162461bcd60e51b815260040161065e90612c15565b610a3181611673565b60408051600080825260208201909252610a4d9183919061169d565b50565b6000805160206131c6833981519152610a68816111e9565b8151835114610a8a5760405163a0b1d72d60e01b815260040160405180910390fd5b60fa83511115610aad5760405163a13df50b60e01b815260040160405180910390fd5b8151600003610acf5760405163ceb7371d60e01b815260040160405180910390fd5b60005b8351811015610b1f57610b17848281518110610af057610af0612b65565b6020026020010151848381518110610b0a57610b0a612b65565b6020026020010151610b25565b600101610ad2565b50505050565b6000805160206131c6833981519152610b3d816111e9565b8151600003610b5f5760405163ceb7371d60e01b815260040160405180910390fd5b600082516001600160401b03811115610b7a57610b7a6124bd565b604051908082528060200260200182016040528015610ba3578160200160208202803683370190505b50905060005b8351811015610bd9576001828281518110610bc657610bc6612b65565b6020908102919091010152600101610ba9565b50610b1f84848360405180602001604052806000815250611808565b60608151835114610c5a5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b606482015260840161065e565b600083516001600160401b03811115610c7557610c756124bd565b604051908082528060200260200182016040528015610c9e578160200160208202803683370190505b50905060005b8451811015610d0e57610ce9858281518110610cc257610cc2612b65565b6020026020010151858381518110610cdc57610cdc612b65565b60200260200101516105f7565b828281518110610cfb57610cfb612b65565b6020908102919091010152600101610ca4565b509392505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610d5e5760405162461bcd60e51b815260040161065e90612bc9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610da760008051602061317f833981519152546001600160a01b031690565b6001600160a01b031614610dcd5760405162461bcd60e51b815260040161065e90612c15565b610dd682611673565b61096d8282600161169d565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e825760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161065e565b5060008051602061317f8339815191525b90565b610e9e611983565b610ea860006119de565b565b60606000610eb9836001612c77565b6001600160401b03811115610ed057610ed06124bd565b604051908082528060200260200182016040528015610ef9578160200160208202803683370190505b50905060005b838111610d0e57610f1085826105f7565b828281518110610f2257610f22612b65565b602090810291909101015280610f3781612c8a565b915050610eff565b60009182526097602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61096d338383611a31565b600082815260976020526040902060010154610f90816111e9565b6108ee838361160c565b6001600160a01b038516331480610fb65750610fb68533610535565b610fd25760405162461bcd60e51b815260040161065e90612b7b565b61087d8585858585611b11565b610fe7611983565b6001600160a01b03811661104c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161065e565b610a4d816119de565b600054610100900460ff16158080156110755750600054600160ff909116105b8061108f5750303b15801561108f575060005460ff166001145b6110f25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161065e565b6000805460ff191660011790558015611115576000805461ff0019166101001790555b61111e82611c3f565b611126611c6f565b61112e611c6f565b611139600033611586565b6111516000805160206131c683398151915233611586565b61117b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e333611586565b801561096d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60006001600160e01b03198216637965db0b60e01b148061068c575061068c82611c96565b610a4d8133611ce6565b6001600160a01b0383166112555760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b606482015260840161065e565b80518251146112765760405162461bcd60e51b815260040161065e90612ca3565b604080516020810190915260009081905233905b83518110156113815760008482815181106112a7576112a7612b65565b6020026020010151905060008483815181106112c5576112c5612b65565b60209081029190910181015160008481526065835260408082206001600160a01b038c1683529093529190912054909150818110156113525760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b606482015260840161065e565b60009283526065602090815260408085206001600160a01b038b1686529091529092209103905560010161128a565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516113d2929190612ceb565b60405180910390a4604080516020810190915260009052610b1f565b815183511461140f5760405162461bcd60e51b815260040161065e90612ca3565b6001600160a01b0384166114355760405162461bcd60e51b815260040161065e90612d19565b3360005b845181101561151857600085828151811061145657611456612b65565b60200260200101519050600085838151811061147457611474612b65565b60209081029190910181015160008481526065835260408082206001600160a01b038e1683529093529190912054909150818110156114c55760405162461bcd60e51b815260040161065e90612d5e565b60008381526065602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290611504908490612c77565b909155505060019093019250611439915050565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611568929190612ceb565b60405180910390a461157e818787878787611d3f565b505050505050565b6115908282610f3f565b61096d5760008281526097602090815260408083206001600160a01b03851684529091529020805460ff191660011790556115c83390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6116168282610f3f565b1561096d5760008281526097602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e361096d816111e9565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156116d0576108ee83611ea3565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561172a575060408051601f3d908101601f1916820190925261172791810190612da8565b60015b61178d5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161065e565b60008051602061317f83398151915281146117fc5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161065e565b506108ee838383611f3f565b6001600160a01b0384166118685760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b606482015260840161065e565b81518351146118895760405162461bcd60e51b815260040161065e90612ca3565b3360005b845181101561191b578381815181106118a8576118a8612b65565b6020026020010151606560008784815181106118c6576118c6612b65565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b03168152602001908152602001600020600082825461190e9190612c77565b909155505060010161188d565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161196c929190612ceb565b60405180910390a461087d81600087878787611d3f565b61012d546001600160a01b03163314610ea85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065e565b61012d80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611aa45760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b606482015260840161065e565b6001600160a01b03838116600081815260666020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038416611b375760405162461bcd60e51b815260040161065e90612d19565b336000611b4385611f64565b90506000611b5085611f64565b905060008681526065602090815260408083206001600160a01b038c16845290915290205485811015611b955760405162461bcd60e51b815260040161065e90612d5e565b60008781526065602090815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290611bd4908490612c77565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611c34848a8a8a8a8a611faf565b505050505050505050565b600054610100900460ff16611c665760405162461bcd60e51b815260040161065e90612dc1565b610a4d8161206a565b600054610100900460ff16610ea85760405162461bcd60e51b815260040161065e90612dc1565b60006001600160e01b03198216636cdb3d1360e11b1480611cc757506001600160e01b031982166303a24d0760e21b145b8061068c57506301ffc9a760e01b6001600160e01b031983161461068c565b611cf08282610f3f565b61096d57611cfd8161209a565b611d088360206120ac565b604051602001611d19929190612e0c565b60408051601f198184030181529082905262461bcd60e51b825261065e91600401612491565b6001600160a01b0384163b1561157e5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611d839089908990889088908890600401612e81565b6020604051808303816000875af1925050508015611dbe575060408051601f3d908101601f19168201909252611dbb91810190612edf565b60015b611e6a57611dca612efc565b806308c379a003611e035750611dde612f17565b80611de95750611e05565b8060405162461bcd60e51b815260040161065e9190612491565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606482015260840161065e565b6001600160e01b0319811663bc197c8160e01b14611e9a5760405162461bcd60e51b815260040161065e90612fa0565b50505050505050565b6001600160a01b0381163b611f105760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161065e565b60008051602061317f83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611f488361224e565b600082511180611f555750805b156108ee57610b1f838361228e565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611f9e57611f9e612b65565b602090810291909101015292915050565b6001600160a01b0384163b1561157e5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611ff39089908990889088908890600401612fe8565b6020604051808303816000875af192505050801561202e575060408051601f3d908101601f1916820190925261202b91810190612edf565b60015b61203a57611dca612efc565b6001600160e01b0319811663f23a6e6160e01b14611e9a5760405162461bcd60e51b815260040161065e90612fa0565b600054610100900460ff166120915760405162461bcd60e51b815260040161065e90612dc1565b610a4d816122b3565b606061068c6001600160a01b03831660145b606060006120bb83600261302d565b6120c6906002612c77565b6001600160401b038111156120dd576120dd6124bd565b6040519080825280601f01601f191660200182016040528015612107576020820181803683370190505b509050600360fc1b8160008151811061212257612122612b65565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061215157612151612b65565b60200101906001600160f81b031916908160001a905350600061217584600261302d565b612180906001612c77565b90505b60018111156121f8576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106121b4576121b4612b65565b1a60f81b8282815181106121ca576121ca612b65565b60200101906001600160f81b031916908160001a90535060049490941c936121f181613044565b9050612183565b5083156122475760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161065e565b9392505050565b61225781611ea3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060612247838360405180606001604052806027815260200161319f602791396122bf565b606761096d82826130a3565b6060600080856001600160a01b0316856040516122dc9190613162565b600060405180830381855af49150503d8060008114612317576040519150601f19603f3d011682016040523d82523d6000602084013e61231c565b606091505b509150915061232d86838387612337565b9695505050505050565b606083156123a657825160000361239f576001600160a01b0385163b61239f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161065e565b50816123b0565b6123b083836123b8565b949350505050565b815115611de95781518083602001fd5b80356001600160a01b03811681146123df57600080fd5b919050565b600080604083850312156123f757600080fd5b612400836123c8565b946020939093013593505050565b6001600160e01b031981168114610a4d57600080fd5b60006020828403121561243657600080fd5b81356122478161240e565b60005b8381101561245c578181015183820152602001612444565b50506000910152565b6000815180845261247d816020860160208601612441565b601f01601f19169290920160200192915050565b6020815260006122476020830184612465565b6000602082840312156124b657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b03811182821017156124f8576124f86124bd565b6040525050565b60006001600160401b03821115612518576125186124bd565b5060051b60200190565b600082601f83011261253357600080fd5b81356020612540826124ff565b60405161254d82826124d3565b80915083815260208101915060208460051b87010193508684111561257157600080fd5b602086015b8481101561259457612587816123c8565b8352918301918301612576565b509695505050505050565b600082601f8301126125b057600080fd5b813560206125bd826124ff565b6040516125ca82826124d3565b80915083815260208101915060208460051b8701019350868411156125ee57600080fd5b602086015b8481101561259457803583529183019183016125f3565b600082601f83011261261b57600080fd5b81356020612628826124ff565b60405161263582826124d3565b83815260059390931b850182019282810191508684111561265557600080fd5b8286015b848110156125945780356001600160401b038111156126785760008081fd5b6126868986838b010161259f565b845250918301918301612659565b6000806000606084860312156126a957600080fd5b83356001600160401b03808211156126c057600080fd5b6126cc87838801612522565b945060208601359150808211156126e257600080fd5b6126ee8783880161260a565b9350604086013591508082111561270457600080fd5b506127118682870161260a565b9150509250925092565b60006001600160401b03831115612734576127346124bd565b60405161274b601f8501601f1916602001826124d3565b80915083815284848401111561276057600080fd5b83836020830137600060208583010152509392505050565b600082601f83011261278957600080fd5b6122478383356020850161271b565b600080600080600060a086880312156127b057600080fd5b6127b9866123c8565b94506127c7602087016123c8565b935060408601356001600160401b03808211156127e357600080fd5b6127ef89838a0161259f565b9450606088013591508082111561280557600080fd5b61281189838a0161259f565b9350608088013591508082111561282757600080fd5b5061283488828901612778565b9150509295509295909350565b6000806040838503121561285457600080fd5b82359150612864602084016123c8565b90509250929050565b60006020828403121561287f57600080fd5b612247826123c8565b6000806040838503121561289b57600080fd5b82356001600160401b03808211156128b257600080fd5b6128be86838701612522565b935060208501359150808211156128d457600080fd5b506128e18582860161260a565b9150509250929050565b600080604083850312156128fe57600080fd5b612907836123c8565b915060208301356001600160401b0381111561292257600080fd5b6128e18582860161259f565b6000806040838503121561294157600080fd5b82356001600160401b038082111561295857600080fd5b61296486838701612522565b9350602085013591508082111561297a57600080fd5b506128e18582860161259f565b60008151808452602080850194506020840160005b838110156129b85781518752958201959082019060010161299c565b509495945050505050565b6020815260006122476020830184612987565b600080604083850312156129e957600080fd5b6129f2836123c8565b915060208301356001600160401b03811115612a0d57600080fd5b6128e185828601612778565b60008060408385031215612a2c57600080fd5b612a35836123c8565b915060208301358015158114612a4a57600080fd5b809150509250929050565b60008060408385031215612a6857600080fd5b612a71836123c8565b9150612864602084016123c8565b600080600080600060a08688031215612a9757600080fd5b612aa0866123c8565b9450612aae602087016123c8565b9350604086013592506060860135915060808601356001600160401b03811115612ad757600080fd5b61283488828901612778565b600060208284031215612af557600080fd5b81356001600160401b03811115612b0b57600080fd5b8201601f81018413612b1c57600080fd5b6123b08482356020840161271b565b600181811c90821680612b3f57607f821691505b602082108103612b5f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561068c5761068c612c61565b600060018201612c9c57612c9c612c61565b5060010190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b604081526000612cfe6040830185612987565b8281036020840152612d108185612987565b95945050505050565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b600060208284031215612dba57600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612e44816017850160208801612441565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612e75816028840160208801612441565b01602801949350505050565b6001600160a01b0386811682528516602082015260a060408201819052600090612ead90830186612987565b8281036060840152612ebf8186612987565b90508281036080840152612ed38185612465565b98975050505050505050565b600060208284031215612ef157600080fd5b81516122478161240e565b600060033d1115610e935760046000803e5060005160e01c90565b600060443d1015612f255790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715612f5457505050505090565b8285019150815181811115612f6c5750505050505090565b843d8701016020828501011115612f865750505050505090565b612f95602082860101876124d3565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061302290830184612465565b979650505050505050565b808202811582820484141761068c5761068c612c61565b60008161305357613053612c61565b506000190190565b601f8211156108ee576000816000526020600020601f850160051c810160208610156130845750805b601f850160051c820191505b8181101561157e57828155600101613090565b81516001600160401b038111156130bc576130bc6124bd565b6130d0816130ca8454612b2b565b8461305b565b602080601f83116001811461310557600084156130ed5750858301515b600019600386901b1c1916600185901b17855561157e565b600085815260208120601f198616915b8281101561313457888601518255948401946001909101908401613115565b50858210156131525787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251613174818460208701612441565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65649f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a26469706673582212206e7dcb53250fbacbfc88a8ba23ce46194530570e6cb666e6380e6ef50767c7e664736f6c63430008180033