witnet-solidity-bridge
Version:
Witnet Solidity Bridge contracts for EVM-compatible chains
400 lines • 1.12 MB
JSON
{
"contractName": "WitOracleRadonRequestFactoryTemplatesDefault",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_witOracle",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "by",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "master",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "clone",
"type": "address"
}
],
"name": "Cloned",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event"
},
{
"inputs": [],
"name": "base",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32[]",
"name": "_dataRetrieveHashes",
"type": "bytes32[]"
},
{
"internalType": "bytes15",
"name": "_dataSourcesAggregatorHash",
"type": "bytes15"
},
{
"internalType": "bytes15",
"name": "_crowdAttestationTallyHash",
"type": "bytes15"
}
],
"name": "buildRadonRequestTemplate",
"outputs": [
{
"internalType": "contract IWitOracleRadonRequestTemplate",
"name": "",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "cloned",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32[]",
"name": "_dataRetrieveHashes",
"type": "bytes32[]"
},
{
"internalType": "bytes15",
"name": "_dataSourcesAggregatorHash",
"type": "bytes15"
},
{
"internalType": "bytes15",
"name": "_crowdAttestationTallyHash",
"type": "bytes15"
}
],
"name": "determineAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getArgsCount",
"outputs": [
{
"internalType": "uint8[]",
"name": "",
"type": "uint8[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCrowdAttestationTally",
"outputs": [
{
"components": [
{
"internalType": "enum Witnet.RadonReduceOpcodes",
"name": "opcode",
"type": "uint8"
},
{
"components": [
{
"internalType": "enum Witnet.RadonFilterOpcodes",
"name": "opcode",
"type": "uint8"
},
{
"internalType": "bytes",
"name": "cborArgs",
"type": "bytes"
}
],
"internalType": "struct Witnet.RadonFilter[]",
"name": "filters",
"type": "tuple[]"
}
],
"internalType": "struct Witnet.RadonReducer",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getDataResultType",
"outputs": [
{
"internalType": "enum Witnet.RadonDataTypes",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getDataSources",
"outputs": [
{
"components": [
{
"internalType": "uint8",
"name": "argsCount",
"type": "uint8"
},
{
"internalType": "enum Witnet.RadonRetrievalMethods",
"name": "method",
"type": "uint8"
},
{
"internalType": "enum Witnet.RadonDataTypes",
"name": "dataType",
"type": "uint8"
},
{
"internalType": "string",
"name": "url",
"type": "string"
},
{
"internalType": "string",
"name": "body",
"type": "string"
},
{
"internalType": "string[2][]",
"name": "headers",
"type": "string[2][]"
},
{
"internalType": "bytes",
"name": "radonScript",
"type": "bytes"
}
],
"internalType": "struct Witnet.RadonRetrieval[]",
"name": "_dataSources",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getDataSourcesAggregator",
"outputs": [
{
"components": [
{
"internalType": "enum Witnet.RadonReduceOpcodes",
"name": "opcode",
"type": "uint8"
},
{
"components": [
{
"internalType": "enum Witnet.RadonFilterOpcodes",
"name": "opcode",
"type": "uint8"
},
{
"internalType": "bytes",
"name": "cborArgs",
"type": "bytes"
}
],
"internalType": "struct Witnet.RadonFilter[]",
"name": "filters",
"type": "tuple[]"
}
],
"internalType": "struct Witnet.RadonReducer",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32[]",
"name": "_dataRetrieveHashes",
"type": "bytes32[]"
},
{
"internalType": "bytes15",
"name": "_dataSourcesAggregatorHash",
"type": "bytes15"
},
{
"internalType": "bytes15",
"name": "_crowdAttestationTallyHash",
"type": "bytes15"
}
],
"name": "initialize",
"outputs": [
{
"internalType": "contract IWitOracleRadonRequestTemplate",
"name": "",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "initialized",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "specs",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string[][]",
"name": "args",
"type": "string[][]"
}
],
"name": "verifyRadonRequest",
"outputs": [
{
"internalType": "Witnet.RadonHash",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "witOracle",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "class",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_witOracle\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"by\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"master\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"clone\",\"type\":\"address\"}],\"name\":\"Cloned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"base\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_dataRetrieveHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes15\",\"name\":\"_dataSourcesAggregatorHash\",\"type\":\"bytes15\"},{\"internalType\":\"bytes15\",\"name\":\"_crowdAttestationTallyHash\",\"type\":\"bytes15\"}],\"name\":\"buildRadonRequestTemplate\",\"outputs\":[{\"internalType\":\"contract IWitOracleRadonRequestTemplate\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"class\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cloned\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_dataRetrieveHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes15\",\"name\":\"_dataSourcesAggregatorHash\",\"type\":\"bytes15\"},{\"internalType\":\"bytes15\",\"name\":\"_crowdAttestationTallyHash\",\"type\":\"bytes15\"}],\"name\":\"determineAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getArgsCount\",\"outputs\":[{\"internalType\":\"uint8[]\",\"name\":\"\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCrowdAttestationTally\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Witnet.RadonReduceOpcodes\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"enum Witnet.RadonFilterOpcodes\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"cborArgs\",\"type\":\"bytes\"}],\"internalType\":\"struct Witnet.RadonFilter[]\",\"name\":\"filters\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Witnet.RadonReducer\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDataResultType\",\"outputs\":[{\"internalType\":\"enum Witnet.RadonDataTypes\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDataSources\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"argsCount\",\"type\":\"uint8\"},{\"internalType\":\"enum Witnet.RadonRetrievalMethods\",\"name\":\"method\",\"type\":\"uint8\"},{\"internalType\":\"enum Witnet.RadonDataTypes\",\"name\":\"dataType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"body\",\"type\":\"string\"},{\"internalType\":\"string[2][]\",\"name\":\"headers\",\"type\":\"string[2][]\"},{\"internalType\":\"bytes\",\"name\":\"radonScript\",\"type\":\"bytes\"}],\"internalType\":\"struct Witnet.RadonRetrieval[]\",\"name\":\"_dataSources\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDataSourcesAggregator\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Witnet.RadonReduceOpcodes\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"enum Witnet.RadonFilterOpcodes\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"cborArgs\",\"type\":\"bytes\"}],\"internalType\":\"struct Witnet.RadonFilter[]\",\"name\":\"filters\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Witnet.RadonReducer\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_dataRetrieveHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes15\",\"name\":\"_dataSourcesAggregatorHash\",\"type\":\"bytes15\"},{\"internalType\":\"bytes15\",\"name\":\"_crowdAttestationTallyHash\",\"type\":\"bytes15\"}],\"name\":\"initialize\",\"outputs\":[{\"internalType\":\"contract IWitOracleRadonRequestTemplate\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"specs\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[][]\",\"name\":\"args\",\"type\":\"string[][]\"}],\"name\":\"verifyRadonRequest\",\"outputs\":[{\"internalType\":\"Witnet.RadonHash\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"witOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"The Witnet Foundation\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"verifyRadonRequest(string[][])\":{\"details\":\"This method requires less gas than buildWitOracleRequest(string[][]), and it's usually preferred when data requests built out of this templateare intended to be used just once in lifetime. \"}},\"title\":\"Factory contract for building IWitOracleRadonRequestTemplate contracts as light-weight proxies.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"class()\":{\"notice\":\"Returns the name of the actual contract implementing the logic of this Witnet appliance.\"},\"cloned()\":{\"notice\":\"Tells whether this contract is a clone of `self()`\"},\"getArgsCount()\":{\"notice\":\"=============================================================================================================== --- IWitOracleRadonRequestTemplate -------------------------------------------------------------------------------\"},\"initialized()\":{\"notice\":\"Tells whether a WitOracleRequest or a WitOracleRequestTemplate has been properly initialized.\"},\"specs()\":{\"notice\":\"Returns the ERC-165 id of the minimal functionality expected for this appliance.\"},\"verifyRadonRequest(string[][])\":{\"notice\":\"Verifies into the bounded WitOracle's registry the actual bytecode and RAD hash of the Witnet-compliant Radon Request that gets provably made out of the data sources, aggregate and tally Radon Reducers that compose this WitOracleRequestTemplate. While no WitOracleRequest instance is actually constructed, the returned value will be accepted as a valid RAD hash on the witOracle() contract from now on. Reverts if: - the ranks of passed array don't match either the number of this template's data sources, or the number of required parameters by each one of those.\"},\"witOracle()\":{\"notice\":\"Reference to the Witnet Request Board that all templates built out from this factory will refer to.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/core/trustless/WitOracleRadonRequestFactoryTemplatesDefault.sol\":\"WitOracleRadonRequestFactoryTemplatesDefault\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"project:/contracts/core/base/WitOracleRadonRequestFactoryTemplates.sol\":{\"keccak256\":\"0xdfc8a2e736235013ed360e647654ddba7727e0ba8bfb9ab9e15290b1caedadb1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bfc613a66d495a183134f587ccc3bdf8f99bd6ea35d5ba9dbcb407946d04ee7\",\"dweb:/ipfs/QmV1STny9ttBdQXkXyyZq8uYwUgDDpKzAxddjSbjX4zBS9\"]},\"project:/contracts/core/trustless/WitOracleRadonRequestFactoryTemplatesDefault.sol\":{\"keccak256\":\"0x3a0716fde4bf9166a6488afa94bc5f944106f6e35ce2323c61b9a4fab4e82d14\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb88a60674b6c5dbca649df977587024979f422c5f9e3e3863cc344143f03ee8\",\"dweb:/ipfs/Qmb8EiDCyrAcRFfh516GYmgngcZ8EeniBv3tSRy2f1wJmD\"]},\"project:/contracts/interfaces/IWitAppliance.sol\":{\"keccak256\":\"0xd207ca54a1049445a3d99eea497d9b34c6dbdd44d771eee825e4c031bd2f447e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f81de32d868ff2881ed6fe97cc897e40b4b11d23cbe53a0e23cf3e68f9c0f0a3\",\"dweb:/ipfs/QmeeXmzmK5MAzt7Hf5DB2L81efKtTzZg9VbQ8sUiTqEk5c\"]},\"project:/contracts/interfaces/IWitOracle.sol\":{\"keccak256\":\"0x26cbe2074c0b3f545a46d95fad5e2280b67edcd958e4ae0b88f3a018aa11b805\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5324bac61f65e3edb01c88b9b75ca17affd593be88da5753a93b3f5304d3f479\",\"dweb:/ipfs/QmcVmNV6smbFiPaxvuN8ShkqbDZsT1wfjnF7f3qs6ke7QG\"]},\"project:/contracts/interfaces/IWitOracleAppliance.sol\":{\"keccak256\":\"0xcd8e57eca7f8042c85a83264e2ff6d1cd7a9f1521831736d7f57bcc7800642e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c639668e9439d60770b5df77436088ae7bd0aeb1d1be446552a98b6c29138f0\",\"dweb:/ipfs/QmbN3f5YuKMSd2j9tjay3VEkiYibGWpbfbwRNyrxA8k4o4\"]},\"project:/contracts/interfaces/IWitOracleRadonRegistry.sol\":{\"keccak256\":\"0x437bbb89129311bd1cc8f6becd333df46109ec53b24d3159be942b225614071f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef9bcdf4a73cb126885478c994821b7fe2b87d9221b767b4c9342b89b0d6550a\",\"dweb:/ipfs/QmXzZXPMxjSiFpcEnhg6CjLFNxGCpDZt22xpUh7VHxNTGd\"]},\"project:/contracts/interfaces/IWitOracleRadonRequestTemplate.sol\":{\"keccak256\":\"0xb3f8ec0cbd9cde19348cfd5f51480fb1a0ffe479bf38043ec385f9b4ef1a53f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90fa841ff07d95c96d2c0d0423845a49280fbbf287d3b00b56dfda8c7c8ea15c\",\"dweb:/ipfs/QmfD7cP4V4kuFjeNdXC8tDyrEJCbTAHCenJ7sC7f6cfxvP\"]},\"project:/contracts/libs/Bech32.sol\":{\"keccak256\":\"0x14618323a0efe7586c20906a2e9cee7ad63baa976ff231c57f7f2d7d3707fb8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a19f05fe84047a7a6d3d6fc39972b432e6e536aa70472386a9d7a6d9aab64a64\",\"dweb:/ipfs/QmcHwUY66yjiotRH4Q3kbRvSzcHyLQ1yHL3KbtQKiMhtZE\"]},\"project:/contracts/libs/Secp256k1.sol\":{\"keccak256\":\"0xbe686002da5004ff39dd70709f3820eba2afe9323ae9cb894009c161e4b1a666\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18fab91775216de0707cea9ad285b10be09127461a13432fea358bf9cb2a0c2e\",\"dweb:/ipfs/QmeRUGsgstnM4hxM9hpkBf3L6cE5btirEaowcMxmuw3utj\"]},\"project:/contracts/libs/Witnet.sol\":{\"keccak256\":\"0x1d446c3e534e40e676d1763bfb2897fadfac8afed904ab757843d7d6770b0a6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://338fb1073f17d64e8d31bfe492d9475ce906788ee08e6489ce30413f91dc1328\",\"dweb:/ipfs/QmPe5QX2AGTnQFjse1Xttq4ZYWwYAiXoySb5VUui3PqPhk\"]},\"project:/contracts/libs/WitnetBuffer.sol\":{\"keccak256\":\"0x8e07aebe2954ab3e6f2d8eceedb12db7cf915c1f3e8630f4fa9999cecb1c78ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed6c54cc901183d61546e8fd15bd5ea8ef238ebc915642946071d435dd7481ea\",\"dweb:/ipfs/Qmcaqta7YjUSBbBUGqoh44bsCS6UqqoyHjBuz4qnKBShXM\"]},\"project:/contracts/libs/WitnetCBOR.sol\":{\"keccak256\":\"0xd99308373575cc10fb7f2ceb0f6a8625f3911275c1fa27811fae498d98d03d97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4909a999d7b660a2dc54ca957b6eccfa523e2765fc4d6a2574dee7d5cd67b43\",\"dweb:/ipfs/QmWGQT4KDcfSFe1hcHVoWx6E4PhYMaod5iLpJCWBEeShzh\"]},\"project:/contracts/patterns/Clonable.sol\":{\"keccak256\":\"0x9a2dbc814306f60263fe736b88aeabc44fc241d3bed132e8dd76a3684dd825f7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e665de5be06c9227c49f9466d24f798d4bed1a2db66d4d1368dcd9fc663c1b3a\",\"dweb:/ipfs/QmRjY2CHTGp1eyi9XPeTKr4WnPCzXbtk2285kdy2bJVCYA\"]},\"project:/contracts/patterns/Initializable.sol\":{\"keccak256\":\"0xaac470e87f361cf15d68d1618d6eb7d4913885d33ccc39c797841a9591d44296\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef3760b2039feda8715d4bd9f8de8e3885f25573d12ba92f52d626ba880a08bf\",\"dweb:/ipfs/QmP2mfHPBKkjTAKft95sPDb4PBsjfmAwc47Kdcv3xYSf3g\"]}},\"version\":1}",
"bytecode": "0x60e060405230608052348015610013575f5ffd5b506040516121a03803806121a0833981016040819052610032916101e9565b806100906001600160a01b0382161580159061005757505f826001600160a01b03163b115b60408051808201909152601581527f696e6578697374656e74205769742f4f7261636c6500000000000000000000006020820152610110565b6001600160a01b03811660a081905260408051637b10399960e01b81529051637b103999916004808201926020929091908290030181865afa1580156100d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100fc91906101e9565b6001600160a01b031660c052506102809050565b8161011e5761011e81610122565b5050565b61012a61016b565b8160405160200161013c929190610222565b60408051601f198184030181529082905262461bcd60e51b82526101629160040161024b565b60405180910390fd5b6060610178600254151590565b61019a5760405180606001604052602c815280602001612174602c9139905090565b5060408051808201909152601e81527f495769744f7261636c655261646f6e5265717565737454656d706c6174650000602082015290565b6001600160a01b03811681146101e6575f5ffd5b50565b5f602082840312156101f9575f5ffd5b8151610204816101d2565b9392505050565b5f81518060208401855e5f93019283525090919050565b5f61022d828561020b565b6101d160f51b8152610242600282018561020b565b95945050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b60805160a05160c051611e6f6103055f395f81816102e101528181610412015281816104a3015281816105240152818161062f015281816106db0152818161092b01528181610c6e0152610d8001525f61011701525f818161019901528181610a6501528181610b6101528181610fab0152818161104b01526110f90152611e6f5ff3fe608060405234801561000f575f5ffd5b50600436106100f0575f3560e01c80635613166e11610093578063bc04eba811610063578063bc04eba81461020e578063bf7a0bd314610223578063bff852fa14610244578063dccf450a14610259575f5ffd5b80635613166e146101bd5780637f2b1d77146101d0578063a04daef0146101e5578063adb7c3f7146101ed575f5ffd5b806313152e89116100ce57806313152e891461016457806313620d8f1461016c578063158ef93e146101815780635001f3b514610197575f5ffd5b80630f0adf5b146100f45780631014d3751461011257806311f46c7614610151575b5f5ffd5b6100fc61026c565b60405161010991906111f3565b60405180910390f35b6101397f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610109565b61013961015f366004611308565b610352565b6100fc6108d9565b610174610972565b6040516101099190611368565b60025415155b6040519015158152602001610109565b7f0000000000000000000000000000000000000000000000000000000000000000610139565b6101396101cb366004611308565b610a06565b6101d8610b28565b60405161010991906113c1565b610187610b56565b6101f5610b86565b6040516001600160e01b03199091168152602001610109565b610216610bae565b6040516101099190611468565b61023661023136600461154d565b610d41565b604051908152602001610109565b61024c610e13565b604051610109919061158b565b610139610267366004611308565b610e7a565b604080518082019091525f815260606020820152610288610b56565b6102ad5760405162461bcd60e51b81526004016102a49061159d565b60405180910390fd5b600354604051630d9e7e1960e21b8152600160801b90910460801b6001600160801b03191660048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633679f864906024015b5f60405180830381865afa158015610326573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261034d91908101906116f5565b905090565b5f5f61035c610f2e565b805490915060ff600160401b82041615906001600160401b03165f811580156103825750825b90505f826001600160401b0316600114801561039d5750303b155b9050811580156103ab575080155b156103c95760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156103f357845460ff60401b1916600160401b1785555b604051631114f43760e11b81526001600160881b0319891660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632229e86e90602401602060405180830381865afa15801561045f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104839190611849565b50604051631114f43760e11b81526001600160881b0319881660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632229e86e90602401602060405180830381865afa1580156104f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105149190611849565b505f80805b8b8110156107e5575f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b4ab01a58f8f858181106105635761056361186f565b905060200201356040518263ffffffff1660e01b815260040161058891815260200190565b602060405180830381865afa1580156105a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c79190611893565b6001805480820182555f91909152602081047fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601805460ff808516601f9094166101000a84810291021990911617905590915061062490856118ac565b9350815f036106d9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0e553368f8f5f81811061066e5761066e61186f565b905060200201356040518263ffffffff1660e01b815260040161069391815260200190565b602060405180830381865afa1580156106ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d291906118d9565b92506107dc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0e553368f8f8581811061071a5761071a61186f565b905060200201356040518263ffffffff1660e01b815260040161073f91815260200190565b602060405180830381865afa15801561075a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077e91906118d9565b601381111561078f5761078f6111b1565b8360138111156107a1576107a16111b1565b146107dc576107dc604051806040016040528060158152602001746d69737479706564206461746120736f757263657360581b815250610f56565b50600101610519565b5061082960018310156040518060400160405280601c81526020017f756e706172616d65746572697a6564206461746120736f757263657300000000815250610f96565b61083560028d8d61115d565b50608089811c6fffffffffffffffffffffffffffffff00908116600160801b02918c901c16176003555f805482919060ff1916600183601381111561087c5761087c6111b1565b0217905550309750505083156108cc57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050949350505050565b604080518082019091525f8152606060208201526108f5610b56565b6109115760405162461bcd60e51b81526004016102a49061159d565b600354604051630d9e7e1960e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633679f8649161030c9160801b906004016001600160801b031991909116815260200190565b606061097c610b56565b6109985760405162461bcd60e51b81526004016102a49061159d565b60018054604080516020808402820181019092528281529291908301828280156109fc57602002820191905f5260205f20905f905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116109cd5790505b5050505050905090565b5f610a0f610b56565b15610a2c5760405162461bcd60e51b81526004016102a4906118f2565b6001600160f81b031930610a4287878787610fa8565b60408051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b60208201527f000000000000000000000000000000000000000000000000000000000000000060601b6001600160601b03191660348201526e5af43d82803e903d91602b57fd5bf360881b60488201528151808203603701815260579091019091528051602091820120604051610b0795949392016001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051601f19818403018152919052805160209091012095945050505050565b5f610b31610b56565b610b4d5760405162461bcd60e51b81526004016102a49061159d565b505f5460ff1690565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141590565b5f610b92600254151590565b610ba257506322b714d960e21b90565b506318cf348960e21b90565b6060610bb8610b56565b610bd45760405162461bcd60e51b81526004016102a49061159d565b6002546001600160401b03811115610bee57610bee6115d4565b604051908082528060200260200182016040528015610c5e57816020015b610c4b6040805160e081019091525f808252602082019081526020015f8152602001606081526020016060815260200160608152602001606081525090565b815260200190600190039081610c0c5790505b5090505f5b8151811015610d3d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639dd487575f6002018381548110610cb057610cb061186f565b905f5260205f2001546040518263ffffffff1660e01b8152600401610cd791815260200190565b5f60405180830381865afa158015610cf1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d189190810190611a1c565b828281518110610d2a57610d2a61186f565b6020908102919091010152600101610c63565b5090565b5f610d4a610b56565b610d665760405162461bcd60e51b81526004016102a49061159d565b60035460405163dbc218ef60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163dbc218ef91610dca9160029188918891608082811b92600160801b9004901b90600401611be7565b6020604051808303815f875af1158015610de6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e0a9190611cf3565b90505b92915050565b6060610e20600254151590565b610e425760405180606001604052602c815280602001611e0e602c9139905090565b5060408051808201909152601e81527f495769744f7261636c655261646f6e5265717565737454656d706c6174650000602082015290565b5f610e83610b56565b15610ea05760405162461bcd60e51b81526004016102a4906118f2565b610eb4610eaf86868686610fa8565b611002565b6001600160a01b03166311f46c76868686866040518563ffffffff1660e01b8152600401610ee59493929190611d0a565b6020604051808303815f875af1158015610f01573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f259190611d58565b95945050505050565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610e0d565b610f5e610e13565b81604051602001610f70929190611d95565b60408051601f198184030181529082905262461bcd60e51b82526102a49160040161158b565b81610fa457610fa481610f56565b5050565b5f7f000000000000000000000000000000000000000000000000000000000000000085858585604051602001610fe2959493929190611db5565b604051602081830303815290604052805190602001209050949350505050565b5f61100b610b56565b156110285760405162461bcd60e51b81526004016102a4906118f2565b5f61108d604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81527f000000000000000000000000000000000000000000000000000000000000000060601b60148201526e5af43d82803e903d91602b57fd5bf360881b602882015290565b9050826037825ff591506001600160a01b0382166110ed5760405162461bcd60e51b815260206004820152601860248201527f436c6f6e61626c653a2043524541544532206661696c6564000000000000000060448201526064016102a4565b6001600160a01b0382167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316336001600160a01b03167ff376596be5039d6b2fb36fead4c8a370eae426e790a869be8db074ab608cc24860405160405180910390a450919050565b828054828255905f5260205f20908101928215611196579160200282015b8281111561119657823582559160200191906001019061117b565b50610d3d9291505b80821115610d3d575f815560010161119e565b634e487b7160e01b5f52602160045260245ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f606082018351600c811061120e5761120e6111b1565b80602085015250602084015160408085015281815180845260808601915060808160051b87010193506020830192505f5b8181101561129957868503607f1901835283518051600a8110611264576112646111b1565b80875250602081015190506040602087015261128360408701826111c5565b955050602093840193929092019160010161123f565b50929695505050505050565b5f5f83601f8401126112b5575f5ffd5b5081356001600160401b038111156112cb575f5ffd5b6020830191508360208260051b85010111156112e5575f5ffd5b9250929050565b80356001600160881b031981168114611303575f5ffd5b919050565b5f5f5f5f6060858703121561131b575f5ffd5b84356001600160401b03811115611330575f5ffd5b61133c878288016112a5565b909550935061134f9050602086016112ec565b915061135d604086016112ec565b905092959194509250565b602080825282518282018190525f918401906040840190835b818110156113a257835160ff16835260209384019390920191600101611381565b509095945050505050565b601481106113bd576113bd6111b1565b9052565b60208101610e0d82846113ad565b600581106113bd576113bd6111b1565b5f82825180855260208501945060208160051b830101602085015f5b8381101561145c57848303601f19018852815183604081015f5b600281101561144357868203835261142e8285516111c5565b60209485019493909301929150600101611415565b5060209a8b019a909550939093019250506001016113fb565b50909695505050505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561129957603f19878603018452815160ff815116865260208101516114ba60208801826113cf565b5060408101516114cd60408801826113ad565b50606081015160e060608801526114e760e08801826111c5565b90506080820151878203608089015261150082826111c5565b91505060a082015187820360a089015261151a82826113df565b91505060c0820151915086810360c088015261153681836111c5565b96505050602093840193919091019060010161148e565b5f5f6020838503121561155e575f5ffd5b82356001600160401b03811115611573575f5ffd5b61157f858286016112a5565b90969095509350505050565b602081525f610e0a60208301846111c5565b60208082526018908201527f436c6f6e61626c653a206f6e6c79206f6e20636c6f6e65730000000000000000604082015260600190565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b038111828210171561160a5761160a6115d4565b60405290565b60405160e081016001600160401b038111828210171561160a5761160a6115d4565b604051601f8201601f191681016001600160401b038111828210171561165a5761165a6115d4565b604052919050565b5f6001600160401b0382111561167a5761167a6115d4565b5060051b60200190565b5f82601f830112611693575f5ffd5b8151602083015f5f6001600160401b038411156116b2576116b26115d4565b50601f8301601f19166020016116c781611632565b9150508281528583830111156116db575f5ffd5b8282602083015e5f92810160200192909252509392505050565b5f60208284031215611705575f5ffd5b81516001600160401b0381111561171a575f5ffd5b82016040818503121561172b575f5ffd5b6117336115e8565b8151600c8110611741575f5ffd5b815260208201516001600160401b0381111561175b575f5ffd5b80830192505084601f83011261176f575f5ffd5b815161178261177d82611662565b611632565b8082825260208201915060208360051b8601019250878311156117a3575f5ffd5b602085015b838110156118385780516001600160401b038111156117c5575f5ffd5b86016040818b03601f190112156117da575f5ffd5b6117e26115e8565b6020820151600a81106117f3575f5ffd5b815260408201516001600160401b0381111561180d575f5ffd5b61181c8c602083860101611684565b60208301525080855250506020830192506020810190506117a8565b506020840152509095945050505050565b5f60208284031215611859575f5ffd5b81518015158114611868575f5ffd5b9392505050565b634e487b7160e01b5f52603260045260245ffd5b805160ff81168114611303575f5ffd5b5f602082840312156118a3575f5ffd5b610e0a82611883565b80820180821115610e0d57634e487b7160e01b5f52601160045260245ffd5b805160148110611303575f5ffd5b5f602082840312156118e9575f5ffd5b610e0a826118cb565b60208082526017908201527f436c6f6e61626c653a206e6f74206f6e20636c6f6e6573000000000000000000604082015260600190565b805160058110611303575f5ffd5b5f82601f830112611946575f5ffd5b815161195461177d82611662565b8082825260208201915060208360051b860101925085831115611975575f5ffd5b602085015b83811015611a125780516001600160401b03811115611997575f5ffd5b8601603f810188136119a7575f5ffd5b6119af6115e8565b80606083018a8111156119c0575f5ffd5b602084015b81811015611a005780516001600160401b038111156119e2575f5ffd5b6119f18d602083890101611684565b855250602093840193016119c5565b5050855250506020928301920161197a565b5095945050505050565b5f60208284031215611a2c575f5ffd5b81516001600160401b03811115611a41575f5ffd5b820160e08185031215611a52575f5ffd5b611a5a611610565b611a6382611883565b8152611a7160208301611929565b6020820152611a82604083016118cb565b604082015260608201516001600160401b03811115611a9f575f5ffd5b611aab86828501611684565b60608301525060808201516001600160401b03811115611ac9575f5ffd5b611ad586828501611684565b60808301525060a08201516001600160401b03811115611af3575f5ffd5b611aff86828501611937565b60a08301525060c08201516001600160401b03811115611b1d575f5ffd5b611b2986828501611684565b60c083015250949350505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208501945060208460051b820101835f5b8681101561145c57838303601f19018852813536879003601e19018112611b9b575f5ffd5b86016020810190356001600160401b03811115611bb6575f5ffd5b803603821315611bc4575f5ffd5b611bcf858284611b37565b60209a8b019a90955093909301925050600101611b76565b608080825286549082018190525f87815260208120909160a0840190835b81811015611c23578354835260019384019360209093019201611c05565b5050838103602085015280915086815260208101915060208760051b820101885f601e198b3603015b8a821015611cbc57848403601f190186528235818112611c6a575f5ffd5b8c016020810190356001600160401b03811115611c85575f5ffd5b8060051b3603821315611c96575f5ffd5b611ca1868284611b5f565b95505050602083019250602086019550600182019150611c4c565b5050506001600160801b0319871660408601529250611cd9915050565b6001600160801b0319831660608301529695505050505050565b5f60208284031215611d03575f5ffd5b5051919050565b606080825281018490525f6001600160fb1b03851115611d28575f5ffd5b8460051b808760808501376001600160881b03199485166020840152929093166040820152016080019392505050565b5f60208284031215611d68575f5ffd5b81516001600160a01b0381168114611868575f5ffd5b5f81518060208401855e5f93019283525090919050565b5f611da08285611d7e565b6101d160f51b8152610f256002820185611d7e565b606086901b6001600160601b03191681525f6001600160fb1b03851115611dda575f5ffd5b8460051b808760148501376001600160881b0319948516601493909101928301525091166023820152603201939250505056fe5769744f7261636c655261646f6e52657175657374466163746f727954656d706c6174657344656661756c74a26469706673582212204af7fdf84f8a64ad86a3575a0dd27900dc0c2f340feb826d0a3496c52cc95ff764736f6c634300081e00335769744f7261636c655261646f6e52657175657374466163746f727954656d706c6174657344656661756c74",
"deployedBytecode": "0x608060405234801561000f575f5ffd5b50600436106100f0575f3560e01c80635613166e11610093578063bc04eba811610063578063bc04eba81461020e578063bf7a0bd314610223578063bff852fa14610244578063dccf450a14610259575f5ffd5b80635613166e146101bd5780637f2b1d77146101d0578063a04daef0146101e5578063adb7c3f7146101ed575f5ffd5b806313152e89116100ce57806313152e891461016457806313620d8f1461016c578063158ef93e146101815780635001f3b514610197575f5ffd5b80630f0adf5b146100f45780631014d3751461011257806311f46c7614610151575b5f5ffd5b6100fc61026c565b60405161010991906111f3565b60405180910390f35b6101397f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610109565b61013961015f366004611308565b610352565b6100fc6108d9565b610174610972565b6040516101099190611368565b60025415155b6040519015158152602001610109565b7f0000000000000000000000000000000000000000000000000000000000000000610139565b6101396101cb366004611308565b610a06565b6101d8610b28565b60405161010991906113c1565b610187610b56565b6101f5610b86565b6040516001600160e01b03199091168152602001610109565b610216610bae565b6040516101099190611468565b61023661023136600461154d565b610d41565b604051908152602001610109565b61024c610e13565b604051610109919061158b565b610139610267366004611308565b610e7a565b604080518082019091525f815260606020820152610288610b56565b6102ad5760405162461bcd60e51b81526004016102a49061159d565b60405180910390fd5b600354604051630d9e7e1960e21b8152600160801b90910460801b6001600160801b03191660048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633679f864906024015b5f60405180830381865afa158015610326573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261034d91908101906116f5565b905090565b5f5f61035c610f2e565b805490915060ff600160401b82041615906001600160401b03165f811580156103825750825b90505f826001600160401b0316600114801561039d5750303b155b9050811580156103ab575080155b156103c95760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156103f357845460ff60401b1916600160401b1785555b604051631114f43760e11b81526001600160881b0319891660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632229e86e90602401602060405180830381865afa15801561045f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104839190611849565b50604051631114f43760e11b81526001600160881b0319881660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632229e86e90602401602060405180830381865afa1580156104f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105149190611849565b505f80805b8b8110156107e5575f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b4ab01a58f8f858181106105635761056361186f565b905060200201356040518263ffffffff1660e01b815260040161058891815260200190565b602060405180830381865afa1580156105a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c79190611893565b6001805480820182555f91909152602081047fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601805460ff808516601f9094166101000a84810291021990911617905590915061062490856118ac565b9350815f036106d9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0e553368f8f5f81811061066e5761066e61186f565b905060200201356040518263ffffffff1660e01b815260040161069391815260200190565b602060405180830381865afa1580156106ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d291906118d9565b92506107dc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0e553368f8f8581811061071a5761071a61186f565b905060200201356040518263ffffffff1660e01b815260040161073f91815260200190565b602060405180830381865afa15801561075a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077e91906118d9565b601381111561078f5761078f6111b1565b8360138111156107a1576107a16111b1565b146107dc576107dc604051806040016040528060158152602001746d69737479706564206461746120736f757263657360581b815250610f56565b50600101610519565b5061082960018310156040518060400160405280601c81526020017f756e706172616d65746572697a6564206461746120736f757263657300000000815250610f96565b61083560028d8d61115d565b50608089811c6fffffffffffffffffffffffffffffff00908116600160801b02918c901c16176003555f805482919060ff1916600183601381111561087c5761087c6111b1565b0217905550309750505083156108cc57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050949350505050565b604080518082019091525f8152606060208201526108f5610b56565b6109115760405162461bcd60e51b81526004016102a49061159d565b600354604051630d9e7e1960e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633679f8649161030c9160801b906004016001600160801b031991909116815260200190565b606061097c610b56565b6109985760405162461bcd60e51b81526004016102a49061159d565b60018054604080516020808402820181019092528281529291908301828280156109fc57602002820191905f5260205f20905f905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116109cd5790505b5050505050905090565b5f610a0f610b56565b15610a2c5760405162461bcd60e51b81526004016102a4906118f2565b6001600160f81b031930610a4287878787610fa8565b60408051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b60208201527f000000000000000000000000000000000000000000000000000000000000000060601b6001600160601b03191660348201526e5af43d82803e903d91602b57fd5bf360881b60488201528151808203603701815260579091019091528051602091820120604051610b0795949392016001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051601f19818403018152919052805160209091012095945050505050565b5f610b31610b56565b610b4d5760405162461bcd60e51b81526004016102a49061159d565b505f5460ff1690565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141590565b5f610b92600254151590565b610ba257506322b714d960e21b90565b506318cf348960e21b90565b6060610bb8610b56565b610bd45760405162461bcd60e51b81526004016102a49061159d565b6002546001600160401b03811115610bee57610bee6115d4565b604051908082528060200260200182016040528015610c5e57816020015b610c4b6040805160e081019091525f808252602082019081526020015f8152602001606081526020016060815260200160608152602001606081525090565b815260200190600190039081610c0c5790505b5090505f5b8151811015610d3d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639dd487575f6002018381548110610cb057610cb061186f565b905f5260205f2001546040518263ffffffff1660e01b8152600401610cd791815260200190565b5f60405180830381865afa158015610cf1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d189190810190611a1c565b828281518110610d2a57610d2a61186f565b6020908102919091010152600101610c63565b5090565b5f610d4a610b56565b610d665760405162461bcd60e51b81526004016102a49061159d565b60035460405163dbc218ef60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163dbc218ef91610dca9160029188918891608082811b92600160801b9004901b90600401611be7565b6020604051808303815f875af1158015610de6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e0a9190611cf3565b90505b92915050565b6060610e20600254151590565b610e425760405180606001604052602c815280602001611e0e602c9139905090565b5060408051808201909152601e81527f495769744f7261636c655261646f6e5265717565737454656d706c6174650000602082015290565b5f610e83610b56565b15610ea05760405162461bcd60e51b81526004016102a4906118f2565b610eb4610eaf86868686610fa8565b611002565b6001600160a01b03166311f46c76868686866040518563ffffffff1660e01b8152600401610ee59493929190611d0a565b6020604051808303815f875af1158015610f01573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f259190611d58565b95945050505050565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610e0d565b610f5e610e13565b81604051602001610f70929190611d95565b60408051601f198184030181529082905262461bcd60e51b82526102a49160040161158b565b81610fa457610fa481610f56565b5050565b5f7f000000000000000000000000000000000000000000000000000000000000000085858585604051602001610fe2959493929190611db5565b604051602081830303815290604052805190602001209050949350505050565b5f61100b610b56565b156110285760405162461bcd60e51b81526004016102a4906118f2565b5f61108d604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81527f000000000000000000000000000000000000000000000000000000000000000060601b60148201526e5af43d82803e903d91602b57fd5bf360881b602882015290565b9050826037825ff591506001600160a01b0382166110ed5760405162461bcd60e51b815260206004820152601860248201527f436c6f6e61626c653a2043524541544532206661696c6564000000000000000060448201526064016102a4565b6001600160a01b0382167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316336001600160a01b03167ff376596be5039d6b2fb36fead4c8a370eae426e790a869be8db074ab608cc24860405160405180910390a450919050565b828054828255905f5260205f20908101928215611196579160200282015b8281111561119657823582559160200191906001019061117b565b50610d3d9291505b80821115610d3d575f815560010161119e565b634e487b7160e01b5f52602160045260245ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f606082018351600c811061120e5761120e6111b1565b80602085015250602084015160408085015281815180845260808601915060808160051b87010193506020830192505f5b8181101561129957868503607f1901835283518051600a8110611264576112646111b1565b80875250602081015190506040602087015261128360408701826111c5565b955050602093840193929092019160010161123f565b50929695505050505050565b5f5f83601f8401126112b5575f5ffd5b5081356001600160401b038111156112cb575f5ffd5b6020830191508360208260051b85010111156112e5575f5ffd5b9250929050565b80356001600160881b031981168114611303575f5ffd5b919050565b5f5f5f5f6060858703121561131b575f5ffd5b84356001600160401b03811115611330575f5ffd5b61133c878288016112a5565b909550935061134f9050602086016112ec565b915061135d604086016112ec565b905092959194509250565b602080825282518282018190525f918401906040840190835b818110156113a257835160ff16835260209384019390920191600101611381565b509095945050505050565b601481106113bd576113bd6111b1565b9052565b60208101610e0d82846113ad565b600581106113bd576113bd6111b1565b5f82825180855260208501945060208160051b830101602085015f5b8381101561145c57848303601f19018852815183604081015f5b600281101561144357868203835261142e8285516111c5565b60209485019493909301929150600101611415565b5060209a8b019a909550939093019