[ { "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": "uint256", "name": "index", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "seed", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "address[]", "name": "recipients", "type": "address[]" }, { "indexed": false, "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "BatchTransfer", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "permitId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "PermitTransfer", "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": "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": "BURNER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "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": [ { "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": [ { "components": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "seed", "type": "uint256" }, { "internalType": "uint256", "name": "totalAmount", "type": "uint256" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "address[]", "name": "recipients", "type": "address[]" } ], "internalType": "struct Lapis.BatchInfo", "name": "batchInfo", "type": "tuple" } ], "name": "batchTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "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": [], "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": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getUsedBatchId", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getUsedPermitId", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "permitId", "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": "permitTransfer", "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": "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": [], "name": "totalSupply", "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" } ]
6101a06040527f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610160527f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848610180523480156200005c57600080fd5b50604051806040016040528060058152602001644c6170697360d81b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060058152602001644c6170697360d81b8152506040518060400160405280600381526020016204c41560ec1b8152508160039081620000e19190620003ad565b506004620000f08282620003ad565b506200010291508390506005620001de565b6101205262000113816006620001de565b61014052815160208084019190912060e052815190820120610100524660a052620001a160e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c05250620001b860003362000217565b61016051620001c8903362000217565b61018051620001d8903362000217565b620004ee565b6000602083511015620001fe57620001f683620002bc565b905062000211565b816200020b8482620003ad565b5060ff90505b92915050565b60008281526009602090815260408083206001600160a01b038516845290915290205460ff16620002b85760008281526009602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620002773390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600080829050601f81511115620002f3578260405163305a27a960e01b8152600401620002ea919062000479565b60405180910390fd5b80516200030082620004c9565b179392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200033357607f821691505b6020821081036200035457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003a857600081815260208120601f850160051c81016020861015620003835750805b601f850160051c820191505b81811015620003a4578281556001016200038f565b5050505b505050565b81516001600160401b03811115620003c957620003c962000308565b620003e181620003da84546200031e565b846200035a565b602080601f831160018114620004195760008415620004005750858301515b600019600386901b1c1916600185901b178555620003a4565b600085815260208120601f198616915b828110156200044a5788860151825594840194600190910190840162000429565b5085821015620004695787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208083528351808285015260005b81811015620004a8578581018301518582016040015282016200048a565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620003545760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516124846200057b600039600081816102660152610a5d015260008181610414015281816106f4015281816107e40152610b3b015260006107760152600061074b0152600061119e01526000611176015260006110d1015260006110fb0152600061112501526124846000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80637aba3270116100f9578063a457c2d711610097578063cb7ad31911610071578063cb7ad319146103ec578063d53913931461040f578063d547741f14610436578063dd62ed3e1461044957600080fd5b8063a457c2d7146103b3578063a65930d8146103c6578063a9059cbb146103d957600080fd5b806391d14854116100d357806391d148541461035757806395d89b41146103905780639dc29fac14610398578063a217fddf146103ab57600080fd5b80637aba32701461031657806384b0196e146103295780638bd5a78a1461034457600080fd5b80632f2ff15d1161016657806336568abe1161014057806336568abe146102b457806339509351146102c757806340c10f19146102da57806370a08231146102ed57600080fd5b80632f2ff15d14610288578063313ce5671461029d5780633644e515146102ac57600080fd5b806318160ddd116101a257806318160ddd1461021957806323b872dd1461022b578063248a9ca31461023e578063282c51f31461026157600080fd5b806301ffc9a7146101c957806306fdde03146101f1578063095ea7b314610206575b600080fd5b6101dc6101d7366004611d96565b610482565b60405190151581526020015b60405180910390f35b6101f961051b565b6040516101e89190611e28565b6101dc610214366004611e57565b6105ad565b6002545b6040519081526020016101e8565b6101dc610239366004611e81565b6105c5565b61021d61024c366004611ebd565b60009081526009602052604090206001015490565b61021d7f000000000000000000000000000000000000000000000000000000000000000081565b61029b610296366004611ed6565b6105e9565b005b604051601281526020016101e8565b61021d610613565b61029b6102c2366004611ed6565b610622565b6101dc6102d5366004611e57565b6106b3565b61029b6102e8366004611e57565b6106f2565b61021d6102fb366004611f02565b6001600160a01b031660009081526020819052604090205490565b6101dc610324366004611ebd565b610726565b61033161073d565b6040516101e89796959493929190611f58565b61029b6103523660046120e8565b6107e2565b6101dc610365366004611ed6565b60009182526009602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6101f9610a4c565b61029b6103a6366004611e57565b610a5b565b61021d600081565b6101dc6103c1366004611e57565b610a8f565b61029b6103d43660046121ea565b610b39565b6101dc6103e7366004611e57565b610c0b565b6101dc6103fa366004611ebd565b6000908152600a602052604090205460ff1690565b61021d7f000000000000000000000000000000000000000000000000000000000000000081565b61029b610444366004611ed6565b610c19565b61021d610457366004612266565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061051557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606003805461052a90612290565b80601f016020809104026020016040519081016040528092919081815260200182805461055690612290565b80156105a35780601f10610578576101008083540402835291602001916105a3565b820191906000526020600020905b81548152906001019060200180831161058657829003601f168201915b5050505050905090565b6000336105bb818585610c3e565b5060019392505050565b6000336105d3858285610d96565b6105de858585610e28565b506001949350505050565b60008281526009602052604090206001015461060481611015565b61060e8383611022565b505050565b600061061d6110c4565b905090565b6001600160a01b03811633146106a55760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6106af82826111ef565b5050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906105bb90829086906106ed9087906122e0565b610c3e565b7f000000000000000000000000000000000000000000000000000000000000000061071c81611015565b61060e8383611272565b60008181526007602052604081205460ff16610515565b6000606080828080836107717f00000000000000000000000000000000000000000000000000000000000000006005611331565b61079c7f00000000000000000000000000000000000000000000000000000000000000006006611331565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b7f000000000000000000000000000000000000000000000000000000000000000061080c81611015565b81516000908152600a602052604090205460ff161561086d5760405162461bcd60e51b815260206004820152601c60248201527f45524332303a20426174636820696420616c7265616479207573656400000000604482015260640161069c565b81604001516000036108e75760405162461bcd60e51b815260206004820152602160248201527f45524332303a20546f74616c20616d6f756e742063616e2774206265207a657260448201527f6f00000000000000000000000000000000000000000000000000000000000000606482015260840161069c565b816060015151826080015151146109665760405162461bcd60e51b815260206004820152603760248201527f45524332303a20526563697069656e747320616e6420616d6f756e7473206d7560448201527f73742068617665207468652073616d65206c656e677468000000000000000000606482015260840161069c565b81516000908152600a60205260409020805460ff1916600117905561099561098b3390565b8360400151611272565b60005b8260800151518110156109fc576109ea33846080015183815181106109bf576109bf6122f3565b6020026020010151856060015184815181106109dd576109dd6122f3565b6020026020010151610e28565b806109f481612309565b915050610998565b5081516020830151608084015160608501516040517f131e7b22a6c5a2d92153bfef663727fcacbbe404d1dc93c9bb2156024916d68493610a409390923392612322565b60405180910390a25050565b60606004805461052a90612290565b7f0000000000000000000000000000000000000000000000000000000000000000610a8581611015565b61060e83836113dc565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610b2c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161069c565b6105de8286868403610c3e565b7f000000000000000000000000000000000000000000000000000000000000000060009081526009602090815260408083206001600160a01b038c16845290915290205460ff16610bf15760405162461bcd60e51b8152602060048201526024808201527f4c617069733a204f776e65722073686f756c642068617665206d696e7465722060448201527f726f6c6500000000000000000000000000000000000000000000000000000000606482015260840161069c565b610c018888888888888888611545565b5050505050505050565b6000336105bb818585610e28565b600082815260096020526040902060010154610c3481611015565b61060e83836111ef565b6001600160a01b038316610cb95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161069c565b6001600160a01b038216610d355760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161069c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610e225781811015610e155760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161069c565b610e228484848403610c3e565b50505050565b6001600160a01b038316610ea45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161069c565b6001600160a01b038216610f205760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161069c565b6001600160a01b03831660009081526020819052604090205481811015610faf5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161069c565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610e22565b61101f81336115ce565b50565b60008281526009602090815260408083206001600160a01b038516845290915290205460ff166106af5760008281526009602090815260408083206001600160a01b03851684529091529020805460ff191660011790556110803390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561111d57507f000000000000000000000000000000000000000000000000000000000000000046145b1561114757507f000000000000000000000000000000000000000000000000000000000000000090565b61061d604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60008281526009602090815260408083206001600160a01b038516845290915290205460ff16156106af5760008281526009602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b0382166112c85760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161069c565b80600260008282546112da91906122e0565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b606060ff831461134b5761134483611643565b9050610515565b81805461135790612290565b80601f016020809104026020016040519081016040528092919081815260200182805461138390612290565b80156113d05780601f106113a5576101008083540402835291602001916113d0565b820191906000526020600020905b8154815290600101906020018083116113b357829003601f168201915b50505050509050610515565b6001600160a01b0382166114585760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161069c565b6001600160a01b038216600090815260208190526040902054818110156114e75760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161069c565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b61154f8887611272565b61155f8888888888888888611682565b61156a8888886105c5565b50604080516001600160a01b03808b1682528916602082015290810187905260608101869052608081018590527f012af3847f16ef7fffe5d72379992ae1341c5f83c3d2b6ef1c7ede62ecc03e3f9060a00160405180910390a15050505050505050565b60008281526009602090815260408083206001600160a01b038516845290915290205460ff166106af57611601816118c2565b61160c8360206118d4565b60405160200161161d929190612389565b60408051601f198184030181529082905262461bcd60e51b825261069c91600401611e28565b6060600061165083611abc565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b834211156116d25760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161069c565b60008581526007602052604090205460ff16156117575760405162461bcd60e51b815260206004820152602360248201527f45524332305065726d69743a205065726d697420696420616c7265616479207560448201527f7365640000000000000000000000000000000000000000000000000000000000606482015260840161069c565b856000036117a75760405162461bcd60e51b815260206004820181905260248201527f45524332305065726d69743a2056616c75652063616e2774206265207a65726f604482015260640161069c565b6000858152600760209081526040808320805460ff1916600117905580517f1094e0595ecdd8e160a1242b30ea22880a3facf564176a535f30a5989ce38e0f818401526001600160a01b038c8116828401528b166060820152608081018a905260a0810189905260c08082018990528251808303909101815260e090910190915280519101209061183782611afd565b9050600061184782878787611b45565b90508a6001600160a01b0316816001600160a01b0316146118aa5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161069c565b6118b58b8b8b610c3e565b5050505050505050505050565b60606105156001600160a01b03831660145b606060006118e383600261240a565b6118ee9060026122e0565b67ffffffffffffffff81111561190657611906611fe2565b6040519080825280601f01601f191660200182016040528015611930576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611967576119676122f3565b60200101906001600160f81b031916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106119b2576119b26122f3565b60200101906001600160f81b031916908160001a90535060006119d684600261240a565b6119e19060016122e0565b90505b6001811115611a66577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110611a2257611a226122f3565b1a60f81b828281518110611a3857611a386122f3565b60200101906001600160f81b031916908160001a90535060049490941c93611a5f81612421565b90506119e4565b508315611ab55760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161069c565b9392505050565b600060ff8216601f811115610515576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610515611b0a6110c4565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6000806000611b5687878787611b6d565b91509150611b6381611c31565b5095945050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611ba45750600090506003611c28565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611bf8573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611c2157600060019250925050611c28565b9150600090505b94509492505050565b6000816004811115611c4557611c45612438565b03611c4d5750565b6001816004811115611c6157611c61612438565b03611cae5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161069c565b6002816004811115611cc257611cc2612438565b03611d0f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161069c565b6003816004811115611d2357611d23612438565b0361101f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161069c565b600060208284031215611da857600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611ab557600080fd5b60005b83811015611df3578181015183820152602001611ddb565b50506000910152565b60008151808452611e14816020860160208601611dd8565b601f01601f19169290920160200192915050565b602081526000611ab56020830184611dfc565b80356001600160a01b0381168114611e5257600080fd5b919050565b60008060408385031215611e6a57600080fd5b611e7383611e3b565b946020939093013593505050565b600080600060608486031215611e9657600080fd5b611e9f84611e3b565b9250611ead60208501611e3b565b9150604084013590509250925092565b600060208284031215611ecf57600080fd5b5035919050565b60008060408385031215611ee957600080fd5b82359150611ef960208401611e3b565b90509250929050565b600060208284031215611f1457600080fd5b611ab582611e3b565b600081518084526020808501945080840160005b83811015611f4d57815187529582019590820190600101611f31565b509495945050505050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201526000611f9360e0830189611dfc565b8281036040840152611fa58189611dfc565b90508660608401526001600160a01b03861660808401528460a084015282810360c0840152611fd48185611f1d565b9a9950505050505050505050565b634e487b7160e01b600052604160045260246000fd5b60405160a0810167ffffffffffffffff8111828210171561201b5761201b611fe2565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561204a5761204a611fe2565b604052919050565b600067ffffffffffffffff82111561206c5761206c611fe2565b5060051b60200190565b600082601f83011261208757600080fd5b8135602061209c61209783612052565b612021565b82815260059290921b840181019181810190868411156120bb57600080fd5b8286015b848110156120dd576120d081611e3b565b83529183019183016120bf565b509695505050505050565b600060208083850312156120fb57600080fd5b823567ffffffffffffffff8082111561211357600080fd5b9084019060a0828703121561212757600080fd5b61212f611ff8565b8235815283830135848201526040830135604082015260608301358281111561215757600080fd5b8301601f8101881361216857600080fd5b803561217661209782612052565b81815260059190911b8201860190868101908a83111561219557600080fd5b928701925b828410156121b35783358252928701929087019061219a565b606085015250505060808301359350818411156121cf57600080fd5b6121db87858501612076565b60808201529695505050505050565b600080600080600080600080610100898b03121561220757600080fd5b61221089611e3b565b975061221e60208a01611e3b565b965060408901359550606089013594506080890135935060a089013560ff8116811461224957600080fd5b979a969950949793969295929450505060c08201359160e0013590565b6000806040838503121561227957600080fd5b61228283611e3b565b9150611ef960208401611e3b565b600181811c908216806122a457607f821691505b6020821081036122c457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610515576105156122ca565b634e487b7160e01b600052603260045260246000fd5b60006001820161231b5761231b6122ca565b5060010190565b60006080820186835260206001600160a01b03808816828601526080604086015282875180855260a087019150838901945060005b81811015612375578551841683529484019491840191600101612357565b50508581036060870152611fd48188611f1d565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516123c1816017850160208801611dd8565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516123fe816028840160208801611dd8565b01602801949350505050565b8082028115828204841417610515576105156122ca565b600081612430576124306122ca565b506000190190565b634e487b7160e01b600052602160045260246000fdfea264697066735822122043b2bf3c1d5fd27ba3ddd9fcb097e1e84360dd6acd91b98dc76934606d1f8ee364736f6c63430008130033