@aztec/contract-artifacts
Version:
Smart contract compilation artifacts for the latest version of AZTEC.
756 lines • 79.4 kB
JSON
{
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_aceAddress",
"type": "address"
},
{
"internalType": "address",
"name": "_linkedTokenAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "_scalingFactor",
"type": "uint256"
},
{
"internalType": "uint24",
"name": "_optionalMintProofId",
"type": "uint24"
},
{
"internalType": "bytes",
"name": "_optionalInitialisationMint",
"type": "bytes"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "ConvertTokens",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "noteHash",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "bytes",
"name": "metadata",
"type": "bytes"
}
],
"name": "CreateNote",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "noteRegistryId",
"type": "uint256"
}
],
"name": "CreateNoteRegistry",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "aceAddress",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "linkedTokenAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "scalingFactor",
"type": "uint256"
},
{
"indexed": true,
"internalType": "bool",
"name": "_canAdjustSupply",
"type": "bool"
},
{
"indexed": false,
"internalType": "bool",
"name": "_canConvert",
"type": "bool"
}
],
"name": "CreateZkAsset",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "noteHash",
"type": "bytes32"
}
],
"name": "DestroyNote",
"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": "address",
"name": "owner",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "RedeemTokens",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "noteHash",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "bytes",
"name": "metadata",
"type": "bytes"
}
],
"name": "UpdateNoteMetaData",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "noteHash",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "bytes",
"name": "metaData",
"type": "bytes"
}
],
"name": "UpdateTotalMinted",
"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": "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": [],
"name": "ace",
"outputs": [
{
"internalType": "contract IACE",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint24",
"name": "_proofId",
"type": "uint24"
},
{
"internalType": "bytes",
"name": "_proofOutputs",
"type": "bytes"
},
{
"internalType": "address",
"name": "_spender",
"type": "address"
},
{
"internalType": "bool",
"name": "_approval",
"type": "bool"
},
{
"internalType": "bytes",
"name": "_proofSignature",
"type": "bytes"
}
],
"name": "approveProof",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "bytes32",
"name": "_noteHash",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_spender",
"type": "address"
},
{
"internalType": "bool",
"name": "_spenderApproval",
"type": "bool"
},
{
"internalType": "bytes",
"name": "_signature",
"type": "bytes"
}
],
"name": "confidentialApprove",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "confidentialApproved",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint24",
"name": "_proof",
"type": "uint24"
},
{
"internalType": "bytes",
"name": "_proofData",
"type": "bytes"
}
],
"name": "confidentialMint",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint24",
"name": "_proofId",
"type": "uint24"
},
{
"internalType": "bytes",
"name": "_proofData",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "_signatures",
"type": "bytes"
}
],
"name": "confidentialTransfer",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "bytes",
"name": "_proofData",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "_signatures",
"type": "bytes"
}
],
"name": "confidentialTransfer",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint24",
"name": "_proofId",
"type": "uint24"
},
{
"internalType": "bytes",
"name": "_proofOutput",
"type": "bytes"
}
],
"name": "confidentialTransferFrom",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "isOwner",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "linkedToken",
"outputs": [
{
"internalType": "contract IERC20Mintable",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "metaDataTimeLog",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "noteAccess",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"name": "proofs",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint8",
"name": "_epoch",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "_proofs",
"type": "uint256"
}
],
"name": "setProofs",
"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": "uint24",
"name": "_proof",
"type": "uint24"
}
],
"name": "supportsProof",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "bytes32",
"name": "noteHash",
"type": "bytes32"
},
{
"internalType": "bytes",
"name": "metaData",
"type": "bytes"
}
],
"name": "updateNoteMetaData",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint24",
"name": "_factoryId",
"type": "uint24"
}
],
"name": "upgradeRegistryVersion",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60806040523480156200001157600080fd5b5060405162003fb638038062003fb6833981810160405260a08110156200003757600080fd5b81516020830151604080850151606086015160808701805193519597949692959194919392820192846401000000008211156200007357600080fd5b9083019060208201858111156200008957600080fd5b8251640100000000811182820188101715620000a457600080fd5b82525081516020918201929091019080838360005b83811015620000d3578181015183820152602001620000b9565b50505050905090810190601f168015620001015780820380516001836020036101000a031916815260200191505b5060408181527f454950373132446f6d61696e28000000000000000000000000000000000000006020808401919091527f737472696e67206e616d652c0000000000000000000000000000000000000000602d8401527f737472696e672076657273696f6e2c000000000000000000000000000000000060398401527f6164647265737320766572696679696e67436f6e74726163740000000000000060488401527f29000000000000000000000000000000000000000000000000000000000000006061840152815160428185030181526062840180845281519183019190912060a28501845260199091527f415a5445435f43525950544f4752415048595f454e47494e45000000000000006082909401939093528151808301835260018082527f3100000000000000000000000000000000000000000000000000000000000000918301919091528251808301949094527fc8066e2c715ce196630b273cd256d8959d5b9fefc55e9e6d999fb0f08bb7f75f8484015260008051602062003f168339815191526060850152306080808601919091528351808603909101815260a09094019092528251920191909120600090815589945088935087925084908490849084906001600160a01b03841615620002e1576001620002e4565b60005b604080517f454950373132446f6d61696e28000000000000000000000000000000000000006020808301919091527f737472696e67206e616d652c0000000000000000000000000000000000000000602d8301527f737472696e672076657273696f6e2c000000000000000000000000000000000060398301527f6164647265737320766572696679696e67436f6e74726163740000000000000060488301527f29000000000000000000000000000000000000000000000000000000000000006061830152825160428184030181526062830180855281519183019190912060a28401855260089091527f5a4b5f41535345540000000000000000000000000000000000000000000000006082909301929092528251808401845260018082527f3100000000000000000000000000000000000000000000000000000000000000918301919091528351808301939093527f34a1782c7b6da6ed013d1c63b38e9a7204574db51f6df9ff13aa1786590013fd8385015260008051602062003f168339815191526060840152306080808501919091528451808503909101815260a0840180865281519190930120600090815581546001600160a01b038c81166001600160a01b03199283161793849055600280548d83169316831790557fa5468ca20000000000000000000000000000000000000000000000000000000090945260a485015260c4840189905287151560e48501528515156101048501529351949550169263a5468ca2926101248084019391929182900301818387803b1580156200053057600080fd5b505af115801562000545573d6000803e3d6000fd5b5050604080518681528415156020820152815186151594506001600160a01b03808a1694508a16927fca576e79bcb5c4a0045d9d596a80c733c3997559f688f69e5c03bd737d885b86928290030190a450505050506000620005ac620006d060201b60201c565b600780546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601160086000600160009054906101000a90046001600160a01b03166001600160a01b0316639cb118bf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200064f57600080fd5b505afa15801562000664573d6000803e3d6000fd5b505050506040513d60208110156200067b57600080fd5b505160ff1681526020810191909152604001600020555050505062ffffff821615801590620006aa5750805115155b15620006c557620006c582826001600160e01b03620006d416565b505050505062000e3c565b3390565b620006e76001600160e01b0362000afb16565b6200075357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b8051620007c157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f70726f6f6620696e76616c696400000000000000000000000000000000000000604482015290519081900360640190fd5b6001546060906001600160a01b03166380037eeb8484620007ea6001600160e01b0362000b2c16565b6040518463ffffffff1660e01b8152600401808462ffffff1662ffffff16815260200180602001836001600160a01b03166001600160a01b03168152602001828103825284818151815260200191508051906020019080838360005b838110156200086057818101518382015260200162000846565b50505050905090810190601f1680156200088e5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015620008b057600080fd5b505af1158015620008c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015620008ef57600080fd5b81019080805160405193929190846401000000008211156200091057600080fd5b9083019060208201858111156200092657600080fd5b82516401000000008111828201881017156200094157600080fd5b82525081516020918201929091019080838360005b838110156200097057818101518382015260200162000956565b50505050905090810190601f1680156200099e5780820380516001836020036101000a031916815260200191505b5060405250505090506060620009d9620009c860008462000b3b60201b620020b71790919060201c565b62000bae60201b6200210e1760201c565b50509150506060620009ff620009c860018562000b3b60201b620020b71790919060201c565b50509150506000606062000a3862000a2760008662000b3b60201b620020b71790919060201c565b62000bd860201b620028401760201c565b925092505062000a4e8362000bf660201b60201c565b7f6bc2dccbfc40ed5201f2896c7bc80fa4529202979a6c4195e7c95548b7bdedcb82826040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101562000ab657818101518382015260200162000a9c565b50505050905090810190601f16801562000ae45780820380516001836020036101000a031916815260200191505b50935050505060405180910390a150505050505050565b6007546000906001600160a01b031662000b1d6001600160e01b03620006d016565b6001600160a01b031614905090565b6007546001600160a01b031690565b60208281015190820283016040015183019082108062000ba7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018062003f946022913960400191505060405180910390fd5b5092915050565b60208101516040820151606083015160808401519284019491909301926001600160a01b03169190565b604081015160608201516001600160a01b0390911692909160800190565b60005b62000c0f8262000d2160201b620028391760201c565b81101562000d1d57600080606062000c3a62000a27858762000b3b60201b620020b71790919060201c565b9194509250905062000c55826001600160e01b0362000d2816565b62000c6a81836001600160e01b0362000d3b16565b81836001600160a01b03167f5ffb3072e4515cf3bfae8b16be9dff6313cf7c313a0c26faafe6971d8c7585f1836040518080602001828103825283818151815260200191508051906020019080838360005b8381101562000cd657818101518382015260200162000cbc565b50505050905090810190601f16801562000d045780820380516001836020036101000a031916815260200191505b509250505060405180910390a350505060010162000bf9565b5050565b6020015190565b6000908152600460205260409020429055565b815160e1830151606182111562000dcb5760005b8181101562000dc957600062000d71868362000dd160201b62002d661760201c565b6040805160609290921b6001600160601b031916602080840191909152603480840189905282518085039091018152605490930182528251928101929092206000908152600590925290204290555060010162000d4f565b505b50505050565b602082810151908202830161010101519080831062000ba7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252605e81526020018062003f36605e913960600191505060405180910390fd5b6130ca8062000e4c6000396000f3fe608060405234801561001057600080fd5b50600436106101c35760003560e01c80637f08dede116100f9578063985cd3b711610097578063df92462511610071578063df92462514610985578063e306f7791461098d578063ea12489f14610995578063f2fde38b1461099d576101c3565b8063985cd3b7146108b0578063a5c8fa84146108cd578063cdfea90e146108d5576101c3565b80638da5cb5b116100d35780638da5cb5b146107535780638e526d9b146107775780638f32d59b1461077f5780639698849814610787576101c3565b80637f08dede1461070c57806384a26fc81461072e5780638500e1f81461074b576101c3565b80631f2ac16a1161016657806349518b281161014057806349518b28146106a4578063715018a6146106ac57806376448118146106b457806376ae6bee146106e6576101c3565b80631f2ac16a146105155780632140e0c5146105d75780632e3b9a3b146105f9576101c3565b806309146c7c116101a257806309146c7c146103275780630a60305a146103585780630f4a80fe146104395780631b50a07414610465576101c3565b80625bf732146101c857806302d1fdc9146101e857806308ae900a1461031f575b600080fd5b6101d06109c3565b6040805162ffffff9092168252519081900360200190f35b61031d600480360360608110156101fe57600080fd5b62ffffff8235169190810190604081016020820135600160201b81111561022457600080fd5b82018360208201111561023657600080fd5b803590602001918460018302840111600160201b8311171561025757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156102a957600080fd5b8201836020820111156102bb57600080fd5b803590602001918460018302840111600160201b831117156102dc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109ca945050505050565b005b6101d0610ce0565b6103446004803603602081101561033d57600080fd5b5035610ce7565b604080519115158252519081900360200190f35b61031d600480360360a081101561036e57600080fd5b62ffffff8235169190810190604081016020820135600160201b81111561039457600080fd5b8201836020820111156103a657600080fd5b803590602001918460018302840111600160201b831117156103c757600080fd5b919390926001600160a01b038335169260208101351515929190606081019060400135600160201b8111156103fb57600080fd5b82018360208201111561040d57600080fd5b803590602001918460018302840111600160201b8311171561042e57600080fd5b509092509050610cfc565b6103446004803603604081101561044f57600080fd5b50803590602001356001600160a01b0316611240565b61031d6004803603604081101561047b57600080fd5b62ffffff8235169190810190604081016020820135600160201b8111156104a157600080fd5b8201836020820111156104b357600080fd5b803590602001918460018302840111600160201b831117156104d457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611260945050505050565b61031d6004803603608081101561052b57600080fd5b8135916001600160a01b0360208201351691604082013515159190810190608081016060820135600160201b81111561056357600080fd5b82018360208201111561057557600080fd5b803590602001918460018302840111600160201b8311171561059657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506115cb945050505050565b61031d600480360360208110156105ed57600080fd5b503562ffffff1661189d565b61031d6004803603604081101561060f57600080fd5b81359190810190604081016020820135600160201b81111561063057600080fd5b82018360208201111561064257600080fd5b803590602001918460018302840111600160201b8311171561066357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611950945050505050565b6101d0611b4b565b61031d611b52565b6106d4600480360360208110156106ca57600080fd5b503560ff16611be3565b60408051918252519081900360200190f35b61031d600480360360408110156106fc57600080fd5b5060ff8135169060200135611bf5565b6103446004803603602081101561072257600080fd5b503562ffffff16611c52565b6106d46004803603602081101561074457600080fd5b5035611cee565b6101d0611d00565b61075b611d07565b604080516001600160a01b039092168252519081900360200190f35b6101d0611d16565b610344611d1d565b61031d6004803603604081101561079d57600080fd5b810190602081018135600160201b8111156107b757600080fd5b8201836020820111156107c957600080fd5b803590602001918460018302840111600160201b831117156107ea57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561083c57600080fd5b82018360208201111561084e57600080fd5b803590602001918460018302840111600160201b8311171561086f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611d43945050505050565b6106d4600480360360208110156108c657600080fd5b5035611d55565b61075b611d67565b61031d600480360360408110156108eb57600080fd5b62ffffff8235169190810190604081016020820135600160201b81111561091157600080fd5b82018360208201111561092357600080fd5b803590602001918460018302840111600160201b8311171561094457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611d76945050505050565b6101d061202e565b6106d4612035565b61075b61203b565b61031d600480360360208110156109b357600080fd5b50356001600160a01b031661204a565b6201010181565b60006109d584611c52565b9050600181151514610a2e576040805162461bcd60e51b815260206004820152601e60248201527f65787065637465642070726f6f6620746f20626520737570706f727465640000604482015290519081900360640190fd5b6000610a3e8562ffffff1661209d565b5091505060ff8116600114610a9a576040805162461bcd60e51b815260206004820152601c60248201527f74686973206973206e6f7420612062616c616e6365642070726f6f6600000000604482015290519081900360640190fd5b60015460405163a2866ea360e01b8152620101016004820181815233602484018190526060604485018181528a5160648701528a5191966001600160a01b03169563a2866ea395948c9390929160840190602085019080838360005b83811015610b0e578181015183820152602001610af6565b50505050905090810190601f168015610b3b5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610b5c57600080fd5b505af1158015610b70573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610b9957600080fd5b8101908080516040519392919084600160201b821115610bb857600080fd5b908301906020820185811115610bcd57600080fd5b8251600160201b811182820188101715610be657600080fd5b82525081516020918201929091019080838360005b83811015610c13578181015183820152602001610bfb565b50505050905090810190601f168015610c405780820380516001836020036101000a031916815260200191505b506040525050509050805160001415610c90576040805162461bcd60e51b815260206004820152600d60248201526c1c1c9bdbd9881a5b9d985b1a59609a1b604482015290519081900360640190fd5b6060610ca382600063ffffffff6120b716565b90506000610cb08261210e565b93505050506000811315610cc757610cc781612138565b610cd66201010184888a612389565b5050505050505050565b6201040381565b60066020526000908152604090205460ff1681565b600082826040518083838082843760408051939091018390039092206000818152600660205292909220549195505060ff161515600114159250610d8a915050576040805162461bcd60e51b815260206004820152601f60248201527f7369676e61747572652068617320616c7265616479206265656e207573656400604482015290519081900360640190fd5b6000818152600660209081526040808320805460ff1916600117905580516080810190915260428082529091612f2c908301396040516020018082805190602001908083835b60208310610def5780518252601f199092019160209182019101610dd0565b51815160001960209485036101000a0190811690199190911617905260408051601f1995909301838103959095018352848152825192820192909220671692d7d054d4d15560c21b85528251948590036008018520603160f81b8652835195869003600101862086840192909252858401526060850152306080808601919091528251808603909101815260a0850183528051908201206e0a0e4dedecca6d2cedcc2e8eae4ca5608b1b60c086015271189e5d195ccccc881c1c9bdbd992185cda0b60721b60cf8601526f1859191c995cdcc81cdc195b99195c8b60821b60e18601526c189bdbdb08185c1c1c9bdd985b609a1b60f1860152602960f81b60fe860152825160df81870301815260ff9095019283905284519490910193909320929550600094508593508c91508b908083838082843760408051939091018390038320602080850198909852838201526001600160a01b038f1660608401528d15156080808501919091528151808503909101815260a08401825280519088012061190160f01b60c085015260c284019890985260e280840198909852805180840390980188526101028301808252885198880198909820610122601f8e01899004909802840188019091528b88529750600096610fee968996509094508c93508b92839250018382808284376000920191909152506126e792505050565b905060005b6110328b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061283992505050565b811015611232576060611084828d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff6120b7169050565b905060606110918261210e565b5091925060009150505b6110a482612839565b8110156111f65760006110c56110c0848463ffffffff6120b716565b612840565b5060015460408051637f6f713360e11b81523060048201526024810184905290519294506000935083926001600160a01b039092169163fedee26691604480820192608092909190829003018186803b15801561112157600080fd5b505afa158015611135573d6000803e3d6000fd5b505050506040513d608081101561114b57600080fd5b5080516060909101519092509050600160ff83161461119b5760405162461bcd60e51b8152600401808060200182810382526022815260200180612e756022913960400191505060405180910390fd5b876001600160a01b0316816001600160a01b0316146111eb5760405162461bcd60e51b8152600401808060200182810382526026815260200180612ee56026913960400191505060405180910390fd5b50505060010161109b565b5050805160209182012060009081526003825260408082206001600160a01b038d16835290925220805460ff1916891515179055600101610ff3565b505050505050505050505050565b600360209081526000928352604080842090915290825290205460ff1681565b611268611d1d565b6112a7576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6e833981519152604482015290519081900360640190fd5b80516112ea576040805162461bcd60e51b815260206004820152600d60248201526c1c1c9bdbd9881a5b9d985b1a59609a1b604482015290519081900360640190fd5b6001546060906001600160a01b03166380037eeb8484611308611d07565b6040518463ffffffff1660e01b8152600401808462ffffff1662ffffff16815260200180602001836001600160a01b03166001600160a01b03168152602001828103825284818151815260200191508051906020019080838360005b8381101561137c578181015183820152602001611364565b50505050905090810190601f1680156113a95780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156113ca57600080fd5b505af11580156113de573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561140757600080fd5b8101908080516040519392919084600160201b82111561142657600080fd5b90830190602082018581111561143b57600080fd5b8251600160201b81118282018810171561145457600080fd5b82525081516020918201929091019080838360005b83811015611481578181015183820152602001611469565b50505050905090810190601f1680156114ae5780820380516001836020036101000a031916815260200191505b50604052505050905060606114d56114d06000846120b790919063ffffffff16565b61210e565b505091505060606114f36114d06001856120b790919063ffffffff16565b5050915050600060606115136110c06000866120b790919063ffffffff16565b92509250506115218361285e565b7f6bc2dccbfc40ed5201f2896c7bc80fa4529202979a6c4195e7c95548b7bdedcb82826040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561158757818101518382015260200161156f565b50505050905090810190601f1680156115b45780820380516001836020036101000a031916815260200191505b50935050505060405180910390a150505050505050565b60015460408051637f6f713360e11b81523060048201526024810187905290516000926001600160a01b03169163fedee266916044808301926080929190829003018186803b15801561161d57600080fd5b505afa158015611631573d6000803e3d6000fd5b505050506040513d608081101561164757600080fd5b50519050600160ff82161461168d5760405162461bcd60e51b8152600401808060200182810382526022815260200180612e756022913960400191505060405180910390fd5b6000826040516020018082805190602001908083835b602083106116c25780518252601f1990920191602091820191016116a3565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183528452815191810191909120600081815260069092529290205491945050600160ff90911615151415915061176a9050576040805162461bcd60e51b815260206004820152601f60248201527f7369676e61747572652068617320616c7265616479206265656e207573656400604482015290519081900360640190fd5b82511561178b576000818152600660205260409020805460ff191660011790555b604080516d09cdee8caa6d2cedcc2e8eae4ca560931b60208083019190915270189e5d195ccccc881b9bdd1952185cda0b607a1b602e8301526f1859191c995cdcc81cdc195b99195c8b60821b603f83015273189bdbdb081cdc195b99195c905c1c1c9bdd985b60621b604f830152602960f81b606383015282516044818403018152606483018452805190820120608483015260a482018990526001600160a01b03881660c483015286151560e480840191909152835180840390910181526101049092019092528051910120611864818886612951565b5050506000938452506003602090815260408085206001600160a01b039490941685529290529120805460ff1916911515919091179055565b6118a5611d1d565b6118e4576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6e833981519152604482015290519081900360640190fd5b6001546040805163216da75f60e21b815262ffffff8416600482015290516001600160a01b03909216916385b69d7c9160248082019260009290919082900301818387803b15801561193557600080fd5b505af1158015611949573d6000803e3d6000fd5b5050505050565b60015460408051637f6f713360e11b815230600482015260248101859052905160009283926001600160a01b039091169163fedee26691604480820192608092909190829003018186803b1580156119a757600080fd5b505afa1580156119bb573d6000803e3d6000fd5b505050506040513d60808110156119d157600080fd5b508051606091820151604080513390941b60208581019190915260348086018a90528251808703909101815260549095018252845194810194909420600089815260048652828120548282526005909652919091205492955090935091111580611a4357506001600160a01b03821633145b8015611a5257508260ff166001145b611a8d5760405162461bcd60e51b8152600401808060200182810382526032815260200180612f8e6032913960400191505060405180910390fd5b611a978486612a51565b611aa085612ada565b84826001600160a01b03167fda392cb8aa0843e7e474e7bacfae355313fc4202094b3e81d2a488b5c05207bf866040518080602001828103825283818151815260200191508051906020019080838360005b83811015611b0a578181015183820152602001611af2565b50505050905090810190601f168015611b375780820380516001836020036101000a031916815260200191505b509250505060405180910390a35050505050565b6201040281565b611b5a611d1d565b611b99576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6e833981519152604482015290519081900360640190fd5b6007546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600780546001600160a01b0319169055565b60086020526000908152604090205481565b611bfd611d1d565b611c3c576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6e833981519152604482015290519081900360640190fd5b60ff909116600090815260086020526040902055565b600080600080611c668562ffffff1661209d565b9194509250905060ff8216600114611caf5760405162461bcd60e51b8152600401808060200182810382526028815260200180612e4d6028913960400191505060405180910390fd5b6000611cc560ff8316600163ffffffff612aed16565b60ff94851660009081526008602052604090205494169390931c60019081161495945050505050565b60056020526000908152604090205481565b6201040181565b6007546001600160a01b031690565b6201020181565b6007546000906001600160a01b0316611d34612b3f565b6001600160a01b031614905090565b611d516201010183836109ca565b5050565b60046020526000908152604090205481565b6001546001600160a01b031681565b6000611d8183611c52565b9050600181151514611dda576040805162461bcd60e51b815260206004820152601e60248201527f65787065637465642070726f6f6620746f20626520737570706f727465640000604482015290519081900360640190fd5b606080600080611de98661210e565b93509350935093506000611dfc85612839565b905060005b81811015611e8a576000611e1e6110c0888463ffffffff6120b716565b50600081815260036020908152604080832033845290915290205490925060ff1615156001149050611e815760405162461bcd60e51b815260040180806020018281038252603181526020018061301e6031913960400191505060405180910390fd5b50600101611e01565b506000821315611e9d57611e9d82612138565b600154604051634bbbcb6960e11b815262ffffff8a166004820190815233604483018190526060602484019081528b5160648501528b516001600160a01b039095169463977796d2948e948e94939092909160840190602086019080838360005b83811015611f16578181015183820152602001611efe565b50505050905090810190601f168015611f435780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015611f6457600080fd5b505af1158015611f78573d6000803e3d6000fd5b50505050611f8585612b43565b611f8e8461285e565b6000821215611fdc57826001600160a01b03167ffed3b27b73d78d9d1f344bbbf25f7af35e0ac4d6cf8193604ce18082168e461a836000036040518082815260200191505060405180910390a25b6000821315610cd6576040805183815290516001600160a01b038516917f60213c45c34d8b94e495fd5871fdea7a7511f659e884ea25a0c8843b7f98bfad919081900360200190a25050505050505050565b6201030181565b60005481565b6002546001600160a01b031681565b612052611d1d565b612091576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6e833981519152604482015290519081900360640190fd5b61209a81612bb2565b50565b60ff62010000820481169261010083048216929190911690565b6020828101519082028301604001518301908210806121075760405162461bcd60e51b81526004018080602001828103825260228152602001806130746022913960400191505060405180910390fd5b5092915050565b60208101516040820151606083015160808401519284019491909301926001600160a01b03169190565b60015460408051633e5c75df60e21b8152306004820152905160009283926001600160a01b039091169163f971d77c9160248082019261010092909190829003018186803b15801561218957600080fd5b505afa15801561219d573d6000803e3d6000fd5b505050506040513d6101008110156121b457600080fd5b5060208101516080909101519092509050828110156123845760006121df848363ffffffff612c5316565b6002549091506001600160a01b03166340c10f1930612204848763ffffffff612c9c16565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561225357600080fd5b505af1158015612267573d6000803e3d6000fd5b505050506040513d602081101561227d57600080fd5b50506002546001546001600160a01b039182169163095ea7b391166122a8848763ffffffff612c9c16565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156122f757600080fd5b505af115801561230b573d6000803e3d6000fd5b505050506040513d602081101561232157600080fd5b505060015460408051630876a84160e31b81526004810184905290516001600160a01b03909216916343b542089160248082019260009290919082900301818387803b15801561237057600080fd5b505af1158015610cd6573d6000803e3d6000fd5b505050565b604081015160005b61239a85612839565b8110156126df5760606123b3868363ffffffff6120b716565b600154604051634bbbcb6960e11b815262ffffff8a166004820190815230604483018190526060602484019081528551606485015285519596506001600160a01b039094169463977796d2948d94889492608490910190602086019080838360005b8381101561242d578181015183820152602001612415565b50505050905090810190601f16801561245a5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561247b57600080fd5b505af115801561248f573d6000803e3d6000fd5b505050506060806000806124a28561210e565b935093509350935060006124b585612839565b11156126265760005b6124c785612839565b8110156126245760606124da8b83612cf5565b905060006124f16110c0888563ffffffff6120b716565b509150506000604051602001808072094ded2dca6e0d8d2e8a6d2cedcc2e8eae4ca5606b1b815250601301806c1d5a5b9d0c8d081c1c9bdbd98b609a1b815250600d018070189e5d195ccccc881b9bdd1952185cda0b607a1b81525060110180711d5a5b9d0c8d4d8818da185b1b195b99d94b60721b815250601201806d30b2323932b9b99039b2b73232b960911b815250600e0180602960f81b8152506001019050604051602081830303815290604052805190602001208f838d33604051602001808681526020018562ffffff1662ffffff168152602001848152602001838152602001826001600160a01b03166001600160a01b0316815260200195505050505050604051602081830303815290604052805190602001209050612619818385612951565b5050506001016124be565b505b61262f84612b43565b6126388361285e565b600081121561268657816001600160a01b03167ffed3b27b73d78d9d1f344bbbf25f7af35e0ac4d6cf8193604ce18082168e461a826000036040518082815260200191505060405180910390a25b60008113156126cf576040805182815290516001600160a01b038416917f60213c45c34d8b94e495fd5871fdea7a7511f659e884ea25a0c8843b7f98bfad919081900360200190a25b5050505050600181019050612391565b505050505050565b6000808251848452606084015160408501518160f81c9150604086015160608701526020860151604087015281602087015260208660808860015afa601c8314601b84141760418514167f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083101616935085518714600081146127695761276e565b865195505b505050835280801561278857506001600160a01b03821615155b612107576001600160a01b0382166127e7576040805162461bcd60e51b815260206004820152601a60248201527f7369676e657220616464726573732063616e6e6f742062652030000000000000604482015290519081900360640190fd5b80612107576040805162461bcd60e51b815260206004820152601960248201527f7369676e6174757265207265636f76657279206661696c656400000000000000604482015290519081900360640190fd5b6020015190565b604081015160608201516001600160a01b0390911692909160800190565b60005b61286a82612839565b811015611d515760008060606128896110c0868663ffffffff6120b716565b92509250925061289882612ada565b6128a28183612a51565b81836001600160a01b03167f5ffb3072e4515cf3bfae8b16be9dff6313cf7c313a0c26faafe6971d8c7585f1836040518080602001828103825283818151815260200191508051906020019080838360005b8381101561290c5781810151838201526020016128f4565b