@aztec/contract-artifacts
Version:
Smart contract compilation artifacts for the latest version of AZTEC.
714 lines • 68.7 kB
JSON
{
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "accountAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "signerAddress",
"type": "address"
}
],
"name": "Addresses",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "signatureHash",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bool",
"name": "success",
"type": "bool"
},
{
"indexed": false,
"internalType": "uint256",
"name": "actualCharge",
"type": "uint256"
}
],
"name": "GSNTransactionProcessed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": false,
"internalType": "bytes",
"name": "linkedPublicKey",
"type": "bytes"
},
{
"indexed": false,
"internalType": "bytes",
"name": "spendingPublicKey",
"type": "bytes"
}
],
"name": "RegisterExtension",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "oldRelayHub",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newRelayHub",
"type": "address"
}
],
"name": "RelayHubChanged",
"type": "event"
},
{
"constant": true,
"inputs": [],
"name": "BURN_PROOF",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "DIVIDEND_PROOF",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "EIP712_DOMAIN_HASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "GSNSigner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "JOIN_SPLIT_PROOF",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "MINT_PROOF",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "PRIVATE_RANGE_PROOF",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "PUBLIC_RANGE_PROOF",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "relay",
"type": "address"
},
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "bytes",
"name": "encodedFunction",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "transactionFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "gasPrice",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "gasLimit",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "approvalData",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "acceptRelayedCall",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "context",
"type": "bytes"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "accountMapping",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint24",
"name": "_proofId",
"type": "uint24"
},
{
"internalType": "address",
"name": "_registryOwner",
"type": "address"
},
{
"internalType": "bytes",
"name": "_proofData",
"type": "bytes"
},
{
"internalType": "address",
"name": "_spender",
"type": "address"
},
{
"internalType": "bytes",
"name": "_proofSignature",
"type": "bytes"
}
],
"name": "confidentialTransferFrom",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "epoch",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getHubAddr",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_aceAddress",
"type": "address"
},
{
"internalType": "address",
"name": "_trustedGSNSignerAddress",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "initialize",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "bytes",
"name": "context",
"type": "bytes"
},
{
"internalType": "bool",
"name": "success",
"type": "bool"
},
{
"internalType": "uint256",
"name": "actualCharge",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "preRetVal",
"type": "bytes32"
}
],
"name": "postRelayedCall",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "bytes",
"name": "context",
"type": "bytes"
}
],
"name": "preRelayedCall",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_registryOwner",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_proofHash",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "publicApprove",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_account",
"type": "address"
},
{
"internalType": "address",
"name": "_AZTECaddress",
"type": "address"
},
{
"internalType": "bytes",
"name": "_linkedPublicKey",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "_spendingPublicKey",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "_signature",
"type": "bytes"
}
],
"name": "registerAZTECExtension",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "relayHubVersion",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "setDefaultRelayHub",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "setGSNSigner",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "signatureLog",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "userToAZTECAccountMapping",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_registryOwner",
"type": "address"
},
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_proofHash",
"type": "bytes32"
},
{
"internalType": "bytes",
"name": "_proofData",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "deposit",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_registryOwner",
"type": "address"
},
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_proofHash",
"type": "bytes32"
},
{
"internalType": "bytes",
"name": "_proofData",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "signature",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "expiry",
"type": "uint256"
}
],
"name": "deposit",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "linkedTokenAddress",
"type": "address"
},
{
"internalType": "address",
"name": "holder",
"type": "address"
},
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"internalType": "bool",
"name": "allowed",
"type": "bool"
},
{
"internalType": "uint256",
"name": "expiry",
"type": "uint256"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "bytes",
"name": "signature",
"type": "bytes"
}
],
"name": "permit",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x6301343aaa6036556301343b0f603b556301343b1c603d557f454950373132446f6d61696e280000000000000000000000000000000000000060a09081527f737472696e67206e616d652c000000000000000000000000000000000000000060ad527f737472696e672076657273696f6e2c000000000000000000000000000000000060b9527f6164647265737320766572696679696e67436f6e74726163740000000000000060c8527f290000000000000000000000000000000000000000000000000000000000000060e152604260808181529120601960e2527f415a5445435f43525950544f4752415048595f454e47494e4500000000000000610102526001610122527f3100000000000000000000000000000000000000000000000000000000000000610142526101829081527fc8066e2c715ce196630b273cd256d8959d5b9fefc55e9e6d999fb0f08bb7f75f6101a2527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66101c252306101e25261016282905261020260405220603555612de68061019f6000396000f3fe608060405234801561001057600080fd5b50600436106101a85760003560e01c806383947ea0116100f9578063d0da38ab11610097578063e0b28d2211610071578063e0b28d2214610bb7578063e306f77914610bdd578063e308d6ff14610be5578063f6cf6ab314610c17576101a8565b8063d0da38ab146109dc578063df92462514610b33578063e06e0e2214610b3b576101a8565b8063900cf0cf116100d3578063900cf0cf146106ca578063ad61ccd5146106d2578063bb2fa91b1461074f578063c52b2ff314610916576101a8565b806383947ea01461054d5780638500e1f8146106ba5780638e526d9b146106c2576101a8565b80633d7d098811610166578063733276a911610140578063733276a9146104b557806374e861d6146104bd57806380274db7146104c55780638129fc1c14610545576101a8565b80633d7d0988146103a6578063485cc9551461047f57806349518b28146104ad576101a8565b80625bf732146101ad57806308ae900a146101cd57806309146c7c146101d55780631220e2ff1461020657806318cb65e6146102105780633d6bb32c14610364575b600080fd5b6101b5610c1f565b6040805162ffffff9092168252519081900360200190f35b6101b5610c26565b6101f2600480360360208110156101eb57600080fd5b5035610c2d565b604080519115158252519081900360200190f35b61020e610c42565b005b61020e600480360360a081101561022657600080fd5b62ffffff823516916001600160a01b0360208201351691810190606081016040820135600160201b81111561025a57600080fd5b82018360208201111561026c57600080fd5b803590602001918460018302840111600160201b8311171561028d57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160a01b03853516959094909350604081019250602001359050600160201b8111156102f057600080fd5b82018360208201111561030257600080fd5b803590602001918460018302840111600160201b8311171561032357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c61945050505050565b61038a6004803603602081101561037a57600080fd5b50356001600160a01b0316611056565b604080516001600160a01b039092168252519081900360200190f35b61020e600480360360e08110156103bc57600080fd5b6001600160a01b0382358116926020810135821692604082013592606083013515159260808101359260a08201359092169181019060e0810160c0820135600160201b81111561040b57600080fd5b82018360208201111561041d57600080fd5b803590602001918460018302840111600160201b8311171561043e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611071945050505050565b61020e6004803603604081101561049557600080fd5b506001600160a01b0381358116916020013516611128565b6101b56111f0565b61020e6111f7565b61038a61121f565b610533600480360360208110156104db57600080fd5b810190602081018135600160201b8111156104f557600080fd5b82018360208201111561050757600080fd5b803590602001918460018302840111600160201b8311171561052857600080fd5b50909250905061122f565b60408051918252519081900360200190f35b61020e6112d0565b61063b600480360361012081101561056457600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561059757600080fd5b8201836020820111156105a957600080fd5b803590602001918460018302840111600160201b831117156105ca57600080fd5b9193909282359260208101359260408201359260608301359260a081019060800135600160201b8111156105fd57600080fd5b82018360208201111561060f57600080fd5b803590602001918460018302840111600160201b8311171561063057600080fd5b91935091503561138a565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561067e578181015183820152602001610666565b50505050905090810190601f1680156106ab5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6101b5611606565b6101b561160d565b610533611614565b6106da61161a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156107145781810151838201526020016106fc565b50505050905090810190601f1680156107415780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020e600480360360a081101561076557600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561079857600080fd5b8201836020820111156107aa57600080fd5b803590602001918460018302840111600160201b831117156107cb57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561081d57600080fd5b82018360208201111561082f57600080fd5b803590602001918460018302840111600160201b8311171561085057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156108a257600080fd5b8201836020820111156108b457600080fd5b803590602001918460018302840111600160201b831117156108d557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611639945050505050565b61020e600480360360a081101561092c57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561096657600080fd5b82018360208201111561097857600080fd5b803590602001918460018302840111600160201b8311171561099957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506119c8915050565b61020e60048036036101008110156109f357600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b811115610a2d57600080fd5b820183602082011115610a3f57600080fd5b803590602001918460018302840111600160201b83111715610a6057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b811115610aba57600080fd5b820183602082011115610acc57600080fd5b803590602001918460018302840111600160201b83111715610aed57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135611f95565b6101b5612042565b61020e60048036036080811015610b5157600080fd5b810190602081018135600160201b811115610b6b57600080fd5b820183602082011115610b7d57600080fd5b803590602001918460018302840111600160201b83111715610b9e57600080fd5b9193509150803515159060208101359060400135612049565b6106da60048036036020811015610bcd57600080fd5b50356001600160a01b03166120eb565b610533612186565b61020e60048036036060811015610bfb57600080fd5b506001600160a01b03813516906020810135906040013561218c565b61038a612205565b6201010181565b6201040381565b60396020526000908152604090205460ff1681565b610c5f73d216153c06e857cd7f72665e0af1d7d82172f494612214565b565b603a5460405163a2866ea360e01b815262ffffff871660048201908152306024830181905260606044840181815288516064860152885191956001600160a01b03169463a2866ea3948c94938b93919260840190602085019080838360005b83811015610cd8578181015183820152602001610cc0565b50505050905090810190601f168015610d055780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610d2657600080fd5b505af1158015610d3a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610d6357600080fd5b8101908080516040519392919084600160201b821115610d8257600080fd5b908301906020820185811115610d9757600080fd5b8251600160201b811182820188101715610db057600080fd5b82525081516020918201929091019080838360005b83811015610ddd578181015183820152602001610dc5565b50505050905090810190601f168015610e0a5780820380516001836020036101000a031916815260200191505b5060405250505090508151600014610f6c57604051630530182d60e11b815262ffffff8716600482019081526001600160a01b03858116604484015260016064840181905260a060248501908152855160a48601528551928a1694630a60305a948c9488948b9490938b9392608482019160c40190602089019080838360005b83811015610ea2578181015183820152602001610e8a565b50505050905090810190601f168015610ecf5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610f02578181015183820152602001610eea565b50505050905090810190601f168015610f2f5780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b158015610f5357600080fd5b505af1158015610f67573d6000803e3d6000fd5b505050505b6001600160a01b03851663cdfea90e87610f8d84600063ffffffff61231416565b604080516001600160e01b031960e086901b16815262ffffff8416600482019081526024820192835283516044830152835190929160640190602085019080838360005b83811015610fe9578181015183820152602001610fd1565b50505050905090810190601f1680156110165780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561103657600080fd5b505af115801561104a573d6000803e3d6000fd5b50505050505050505050565b6038602052600090815260409020546001600160a01b031681565b6020810151604080830151604184015182516323f2ebc360e21b81526001600160a01b038b811660048301528781166024830152604482018b905260648201899052891515608483015260ff831660a483015260c4820186905260e48201849052935192939192918c1691638fcbaf0c916101048082019260009290919082900301818387803b15801561110457600080fd5b505af1158015611118573d6000803e3d6000fd5b5050505050505050505050505050565b600054610100900460ff1680611141575061114161236b565b8061114f575060005460ff16155b61118a5760405162461bcd60e51b815260040180806020018281038252602e815260200180612c6f602e913960400191505060405180910390fd5b600054610100900460ff161580156111b5576000805460ff1961ff0019909116610100171660011790555b603a80546001600160a01b0319166001600160a01b0385161790556111d982612371565b80156111eb576000805461ff00191690555b505050565b6201040281565b603c80546001600160a01b031916735323b6bbd3421983323b3f4f0b11c2d6d3bce1d8179055565b6033546001600160a01b03165b90565b600061123961121f565b6001600160a01b0316336001600160a01b0316146112885760405162461bcd60e51b8152600401808060200182810382526024815260200180612d246024913960400191505060405180910390fd5b6112c783838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061247c92505050565b90505b92915050565b600054610100900460ff16806112e957506112e961236b565b806112f7575060005460ff16155b6113325760405162461bcd60e51b815260040180806020018281038252602e815260200180612c6f602e913960400191505060405180910390fd5b600054610100900460ff1615801561135d576000805460ff1961ff0019909116610100171660011790555b6033546001600160a01b031661137557611375610c42565b8015611387576000805461ff00191690555b50565b6000606060006060868660408110156113a257600080fd5b81359190810190604081016020820135600160201b8111156113c357600080fd5b8201836020820111156113d557600080fd5b803590602001918460018302840111600160201b831117156113f657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050509150915060608f8f8f8f8f8f8f8f61145961121f565b308c604051602001808c6001600160a01b03166001600160a01b031660601b81526014018b6001600160a01b03166001600160a01b031660601b81526014018a8a808284379190910198895250506020808801969096526040808801959095526060808801949094526bffffffffffffffffffffffff1992841b83166080880152921b16609485015260a8808501919091528151808503909101815260c8840190915260e88301828152895161010885015289519198508997509550859450610128909201925085019080838360005b83811015611541578181015183820152602001611529565b50505050905090810190601f16801561156e5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152919052603c54855160208701209198506001600160a01b031693506115b492508591506115a890612482565b9063ffffffff6124d316565b6001600160a01b031614156115ec57824211156115e3576115d760015b856125b7565b945094505050506115f6565b6115d7846125c0565b6115d760006115d1565b9b509b9950505050505050505050565b6201040181565b6201020181565b603d5481565b6040805180820190915260058152640312e302e360dc1b602082015290565b6000816040516020018082805190602001908083835b6020831061166e5780518252601f19909201916020918201910161164f565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183528452815191810191909120600081815260399092529290205491945050600160ff9091161515141591506117169050576040805162461bcd60e51b815260206004820152601f60248201527f7369676e61747572652068617320616c7265616479206265656e207573656400604482015290519081900360640190fd5b6000818152603960209081526040808320805460ff1916600117905580516060810182526001600160a01b03808b1682529281018890529188169082015261176790611761906125c5565b846127c9565b845160208601209091506001600160a01b038881169116146117ba5760405162461bcd60e51b8152600401808060200182810382526021815260200180612d036021913960400191505060405180910390fd5b806001600160a01b0316876001600160a01b031614611820576040805162461bcd60e51b815260206004820152601a60248201527f7369676e6572206d75737420626520746865206163636f756e74000000000000604482015290519081900360640190fd5b6001600160a01b0387166000908152603760209081526040909120865161184992880190612ae8565b506001600160a01b0387811660008181526038602090815260409182902080546001600160a01b0319168b861617905581519283529284169282019290925281517f95a39d922be29576604d782638b30fccbff80d85c69a650415d8b560270ec9a0929181900390910190a1866001600160a01b03167f6943ea2c7fa944e0014e912e815bb331b63af36341f53622fce2f97d26a928e28686604051808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561192357818101518382015260200161190b565b50505050905090810190601f1680156119505780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561198357818101518382015260200161196b565b50505050905090810190601f1680156119b05780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a250505050505050565b603a5460405163a2866ea360e01b81526201010160048201818152306024840181905260606044850181815288516064870152885191966001600160a01b03169563a2866ea395948a9390929160840190602085019080838360005b83811015611a3c578181015183820152602001611a24565b50505050905090810190601f168015611a695780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015611a8a57600080fd5b505af1158015611a9e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611ac757600080fd5b8101908080516040519392919084600160201b821115611ae657600080fd5b908301906020820185811115611afb57600080fd5b8251600160201b811182820188101715611b1457600080fd5b82525081516020918201929091019080838360005b83811015611b41578181015183820152602001611b29565b50505050905090810190601f168015611b6e5780820380516001836020036101000a031916815260200191505b506040525050509050611b7f612911565b6001600160a01b0316856001600160a01b031614611cac57611b9f612911565b6001600160a01b038681166000908152603860205260409020548116911614611bf95760405162461bcd60e51b8152600401808060200182810382526036815260200180612b816036913960400191505060405180910390fd5b6060611c14611c0f83600063ffffffff61231416565b61293c565b50509150506000611c2482612966565b905060005b81811015611ca8576000611c4b611c46858463ffffffff61231416565b61296d565b50509050886001600160a01b0316816001600160a01b031614611c9f5760405162461bcd60e51b8152600401808060200182810382526048815260200180612bb76048913960600191505060405180910390fd5b50600101611c29565b5050505b603a5460408051633e5c75df60e21b81526001600160a01b0389811660048301529151600093929092169163f971d77c9160248082019261010092909190829003018186803b158015611cfe57600080fd5b505afa158015611d12573d6000803e3d6000fd5b505050506040513d610100811015611d2957600080fd5b5051604080516323b872dd60e01b81526001600160a01b0389811660048301523060248301526044820187905291519293508392918316916323b872dd916064808201926020929091908290030181600087803b158015611d8957600080fd5b505af1158015611d9d573d6000803e3d6000fd5b505050506040513d6020811015611db357600080fd5b5050603a546040805163095ea7b360e01b81526001600160a01b0392831660048201526024810187905290519183169163095ea7b3916044808201926020929091908290030181600087803b158015611e0b57600080fd5b505af1158015611e1f573d6000803e3d6000fd5b505050506040513d6020811015611e3557600080fd5b5050603a546040805163e308d6ff60e01b81526001600160a01b038b81166004830152602482018a9052604482018890529151919092169163e308d6ff91606480830192600092919082900301818387803b158015611e9357600080fd5b505af1158015611ea7573d6000803e3d6000fd5b5050506001600160a01b038916905063cdfea90e62010101611eca866000612314565b604080516001600160e01b031960e086901b16815262ffffff8416600482019081526024820192835283516044830152835190929160640190602085019080838360005b83811015611f26578181015183820152602001611f0e565b50505050905090810190601f168015611f535780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015611f7357600080fd5b505af1158015611f87573d6000803e3d6000fd5b505050505050505050505050565b603a5460408051633e5c75df60e21b81526001600160a01b038b811660048301529151600093929092169163f971d77c9160248082019261010092909190829003018186803b158015611fe757600080fd5b505afa158015611ffb573d6000803e3d6000fd5b505050506040513d61010081101561201257600080fd5b50519050600130612028838b878588868c611071565b6120358b8b8b8b8b6119c8565b5050505050505050505050565b6201030181565b61205161121f565b6001600160a01b0316336001600160a01b0316146120a05760405162461bcd60e51b8152600401808060200182810382526024815260200180612d246024913960400191505060405180910390fd5b6120e485858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525087925086915085905061298b565b5050505050565b60376020908152600091825260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452909183018282801561217e5780601f106121535761010080835404028352916020019161217e565b820191906000526020600020905b81548152906001019060200180831161216157829003601f168201915b505050505081565b60355481565b603a546040805163e308d6ff60e01b81526001600160a01b03868116600483015260248201869052604482018590529151919092169163e308d6ff91606480830192600092919082900301818387803b1580156121e857600080fd5b505af11580156121fc573d6000803e3d6000fd5b50505050505050565b603c546001600160a01b031681565b6033546001600160a01b039081169082166122605760405162461bcd60e51b815260040180806020018281038252602e815260200180612bff602e913960400191505060405180910390fd5b806001600160a01b0316826001600160a01b031614156122b15760405162461bcd60e51b815260040180806020018281038252602d815260200180612c9d602d913960400191505060405180910390fd5b816001600160a01b0316816001600160a01b03167fb9f84b8e65164b14439ae3620df0a4d8786d896996c0282b683f9d8c08f046e860405160405180910390a350603380546001600160a01b0319166001600160a01b0392909216919091179055565b6020828101519082028301604001518301908210806123645760405162461bcd60e51b8152600401808060200182810382526022815260200180612d906022913960400191505060405180910390fd5b5092915050565b303b1590565b600054610100900460ff168061238a575061238a61236b565b80612398575060005460ff16155b6123d35760405162461bcd60e51b815260040180806020018281038252602e815260200180612c6f602e913960400191505060405180910390fd5b600054610100900460ff161580156123fe576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382166124435760405162461bcd60e51b8152600401808060200182810382526039815260200180612cca6039913960400191505060405180910390fd5b603480546001600160a01b0319166001600160a01b0384161790556124666112d0565b8015612478576000805461ff00191690555b5050565b50600090565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b600081516041146124e6575060006112ca565b60208201516040830151606084015160001a6fa2a8918ca85bafe22016d0b997e4df60600160ff1b0382111561252257600093505050506112ca565b8060ff16601b1415801561253a57508060ff16601c14155b1561254b57600093505050506112ca565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa1580156125a2573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b600b9190910191565b600091565b600080604051806080016040528060428152602001612c2d604291396040516020018082805190602001908083835b602083106126135780518252601f1990920191602091820191016125f4565b51815160001960209485036101000a0190811690199190911617905260408051601f19959093018381039590950183528481528251928201929092206e4163636f756e74526567697374727960881b8552825194859003600f018520601960f91b8652835195869003600101862086840192909252858401526060850152306080808601919091528251808603909101815260a085018084528151919092012061012085019092526048808252919650869550935091612d48915060c001396040516020018082805190602001908083835b602083106127045780518252601f1990920191602091820191016126e5565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183528085528251928201929092208a518b8301518051908401209b860151848401929092526001600160a01b0390811684870152606084019b909b52999099166080808301919091528351808303909101815260a0820184528051908a012061190160f01b60c083015260c282019690965260e28082019690965282518082039096018652610102019091525050815191909401209392505050565b6000808251848452606084015160408501518160f81c9150604086015160608701526020860151604087015281602087015260208660808860015afa601c8314601b84141760418514166fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831016169350855187146000811461284157612846565b865195505b505050835280801561286057506001600160a01b03821615155b612364576001600160a01b0382166128bf576040805162461bcd60e51b815260206004820152601a60248201527f7369676e657220616464726573732063616e6e6f742062652030000000000000604482015290519081900360640190fd5b80612364576040805162461bcd60e51b815260206004820152601960248201527f7369676e6174757265207265636f76657279206661696c656400000000000000604482015290519081900360640190fd5b6033546000906001600160a01b0316331461292d57503361122c565b612935612a9b565b905061122c565b60208101516040820151606083015160808401519284019491909301926001600160a01b03169190565b6020015190565b604081015160608201516001600160a01b0390911692909160800190565b60608480602001905160208110156129a257600080fd5b8101908080516040519392919084600160201b8211156129c157600080fd5b9083019060208201858111156129d657600080fd5b8251600160201b8111828201881017156129ef57600080fd5b82525081516020918201929091019080838360005b83811015612a1c578181015183820152602001612a04565b50505050905090810190601f168015612a495780820380516001836020036101000a031916815260200191505b50604052505050905083151581805190602001207f2f708c980c8415108d54566eeeb78f5c2ddf6e1fab619607c30c001b127be075856040518082815260200191505060405180910390a35050505050565b600060606000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b031692915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612b2957805160ff1916838001178555612b56565b82800160010185558215612b56579182015b82811115612b56578251825591602001919060010190612b3b565b50612b62929150612b66565b5090565b61122c91905b80821115612b625760008155600101612b6c56fe53656e64657220686173206e6f207065726d697373696f6e20746f206465706f736974206f6e206f776e6572277320626568616c662e43616e6e6f74206465706f736974206e6f746520746f206f74686572206163636f756e742069662073656e646572206973206e6f74207468652073616d65206173206f776e65722e47534e526563697069656e743a206e65772052656c617948756220697320746865207a65726f2061646472657373454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c6164647265737320766572696679696e67436f6e747261637429436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656447534e526563697069656e743a206e65772052656c6179487562206973207468652063757272656e74206f6e6547534e526563697069656e745369676e61747572653a2074727573746564207369676e657220697320746865207a65726f20616464726573736164647265737320646f6573206e6f74206d61746368207075626c6963206b657947534e526563697069656e743a2063616c6c6572206973206e6f742052656c6179487562415a5445434163636f756e742861646472657373206163636f756e742c6279746573206c696e6b65645075626c69634b65792c6164647265737320415a5445436164647265737329415a54454320617272617920696e646578206973206f7574206f6620626f756e6473a265627a7a723158207e1590c665f7fce32da24589acc14e4031b7d51acc7e021155e6f13dac4b71e864736f6c63430005110032",
"compiler": {
"name": "solc",
"version": "0.5.17+commit.d19bba13.Emscripten.clang"
},
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101a85760003560e01c806383947ea0116100f9578063d0da38ab11610097578063e0b28d2211610071578063e0b28d2214610bb7578063e306f77914610bdd578063e308d6ff14610be5578063f6cf6ab314610c17576101a8565b8063d0da38ab146109dc578063df92462514610b33578063e06e0e2214610b3b576101a8565b8063900cf0cf116100d3578063900cf0cf146106ca578063ad61ccd5146106d2578063bb2fa91b1461074f578063c52b2ff314610916576101a8565b806383947ea01461054d5780638500e1f8146106ba5780638e526d9b146106c2576101a8565b80633d7d098811610166578063733276a911610140578063733276a9146104b557806374e861d6146104bd57806380274db7146104c55780638129fc1c14610545576101a8565b80633d7d0988146103a6578063485cc9551461047f57806349518b28146104ad576101a8565b80625bf732146101ad57806308ae900a146101cd57806309146c7c146101d55780631220e2ff1461020657806318cb65e6146102105780633d6bb32c14610364575b600080fd5b6101b5610c1f565b6040805162ffffff9092168252519081900360200190f35b6101b5610c26565b6101f2600480360360208110156101eb57600080fd5b5035610c2d565b604080519115158252519081900360200190f35b61020e610c42565b005b61020e600480360360a081101561022657600080fd5b62ffffff823516916001600160a01b0360208201351691810190606081016040820135600160201b81111561025a57600080fd5b82018360208201111561026c57600080fd5b803590602001918460018302840111600160201b8311171561028d57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160a01b03853516959094909350604081019250602001359050600160201b8111156102f057600080fd5b82018360208201111561030257600080fd5b803590602001918460018302840111600160201b8311171561032357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c61945050505050565b61038a6004803603602081101561037a57600080fd5b50356001600160a01b0316611056565b604080516001600160a01b039092168252519081900360200190f35b61020e600480360360e08110156103bc57600080fd5b6001600160a01b0382358116926020810135821692604082013592606083013515159260808101359260a08201359092169181019060e0810160c0820135600160201b81111561040b57600080fd5b82018360208201111561041d57600080fd5b803590602001918460018302840111600160201b8311171561043e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611071945050505050565b61020e6004803603604081101561049557600080fd5b506001600160a01b0381358116916020013516611128565b6101b56111f0565b61020e6111f7565b61038a61121f565b610533600480360360208110156104db57600080fd5b810190602081018135600160201b8111156104f557600080fd5b82018360208201111561050757600080fd5b803590602001918460018302840111600160201b8311171561052857600080fd5b50909250905061122f565b60408051918252519081900360200190f35b61020e6112d0565b61063b600480360361012081101561056457600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561059757600080fd5b8201836020820111156105a957600080fd5b803590602001918460018302840111600160201b831117156105ca57600080fd5b9193909282359260208101359260408201359260608301359260a081019060800135600160201b8111156105fd57600080fd5b82018360208201111561060f57600080fd5b803590602001918460018302840111600160201b8311171561063057600080fd5b91935091503561138a565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561067e578181015183820152602001610666565b50505050905090810190601f1680156106ab5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6101b5611606565b6101b561160d565b610533611614565b6106da61161a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156107145781810151838201526020016106fc565b50505050905090810190601f1680156107415780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020e600480360360a081101561076557600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561079857600080fd5b8201836020820111156107aa57600080fd5b803590602001918460018302840111600160201b831117156107cb57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561081d57600080fd5b82018360208201111561082f57600080fd5b803590602001918460018302840111600160201b8311171561085057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156108a257600080fd5b8201836020820111156108b457600080fd5b803590602001918460018302840111600160201b831117156108d557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611639945050505050565b61020e600480360360a081101561092c57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561096657600080fd5b82018360208201111561097857600080fd5b803590602001918460