witnet-solidity-bridge
Version:
Witnet Solidity Bridge contracts for EVM-compatible chains
217 lines • 2.97 MB
JSON
{
"contractName": "WitPriceFeedsDataLib",
"abi": [
{
"inputs": [],
"name": "PriceFeedNotFound",
"type": "error"
},
{
"inputs": [],
"name": "StalePrice",
"type": "error"
},
{
"inputs": [
{
"internalType": "IWitPriceFeedsTypes.ID4",
"name": "id4",
"type": "bytes4"
}
],
"name": "getPrice",
"outputs": [
{
"components": [
{
"internalType": "int8",
"name": "exponent",
"type": "int8"
},
{
"internalType": "uint64",
"name": "price",
"type": "uint64"
},
{
"internalType": "int56",
"name": "deltaPrice",
"type": "int56"
},
{
"internalType": "Witnet.Timestamp",
"name": "timestamp",
"type": "uint64"
},
{
"internalType": "Witnet.TransactionHash",
"name": "trail",
"type": "bytes32"
}
],
"internalType": "struct IWitPriceFeedsTypes.Price",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "IWitPriceFeedsTypes.ID4",
"name": "id4",
"type": "bytes4"
},
{
"internalType": "uint24",
"name": "age",
"type": "uint24"
}
],
"name": "getPriceNotOlderThan",
"outputs": [
{
"components": [
{
"internalType": "int8",
"name": "exponent",
"type": "int8"
},
{
"internalType": "uint64",
"name": "price",
"type": "uint64"
},
{
"internalType": "int56",
"name": "deltaPrice",
"type": "int56"
},
{
"internalType": "Witnet.Timestamp",
"name": "timestamp",
"type": "uint64"
},
{
"internalType": "Witnet.TransactionHash",
"name": "trail",
"type": "bytes32"
}
],
"internalType": "struct IWitPriceFeedsTypes.Price",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "IWitPriceFeedsTypes.ID4",
"name": "id4",
"type": "bytes4"
}
],
"name": "getPriceUnsafe",
"outputs": [
{
"components": [
{
"internalType": "int8",
"name": "exponent",
"type": "int8"
},
{
"internalType": "uint64",
"name": "price",
"type": "uint64"
},
{
"internalType": "int56",
"name": "deltaPrice",
"type": "int56"
},
{
"internalType": "Witnet.Timestamp",
"name": "timestamp",
"type": "uint64"
},
{
"internalType": "Witnet.TransactionHash",
"name": "trail",
"type": "bytes32"
}
],
"internalType": "struct IWitPriceFeedsTypes.Price",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "enum IWitPriceFeedsTypes.Oracles",
"name": "oracle",
"type": "IWitPriceFeedsTypes.Oracles"
}
],
"name": "toString",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "enum IWitPriceFeedsTypes.Mappers",
"name": "mapper",
"type": "IWitPriceFeedsTypes.Mappers"
}
],
"name": "toString",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "enum IWitPriceFeedsTypes.Oracles",
"name": "oracle",
"type": "IWitPriceFeedsTypes.Oracles"
}
],
"name": "toERC165Id",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"PriceFeedNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StalePrice\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"IWitPriceFeedsTypes.ID4\",\"name\":\"id4\",\"type\":\"bytes4\"}],\"name\":\"getPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"int8\",\"name\":\"exponent\",\"type\":\"int8\"},{\"internalType\":\"uint64\",\"name\":\"price\",\"type\":\"uint64\"},{\"internalType\":\"int56\",\"name\":\"deltaPrice\",\"type\":\"int56\"},{\"internalType\":\"Witnet.Timestamp\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"Witnet.TransactionHash\",\"name\":\"trail\",\"type\":\"bytes32\"}],\"internalType\":\"struct IWitPriceFeedsTypes.Price\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"IWitPriceFeedsTypes.ID4\",\"name\":\"id4\",\"type\":\"bytes4\"},{\"internalType\":\"uint24\",\"name\":\"age\",\"type\":\"uint24\"}],\"name\":\"getPriceNotOlderThan\",\"outputs\":[{\"components\":[{\"internalType\":\"int8\",\"name\":\"exponent\",\"type\":\"int8\"},{\"internalType\":\"uint64\",\"name\":\"price\",\"type\":\"uint64\"},{\"internalType\":\"int56\",\"name\":\"deltaPrice\",\"type\":\"int56\"},{\"internalType\":\"Witnet.Timestamp\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"Witnet.TransactionHash\",\"name\":\"trail\",\"type\":\"bytes32\"}],\"internalType\":\"struct IWitPriceFeedsTypes.Price\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"IWitPriceFeedsTypes.ID4\",\"name\":\"id4\",\"type\":\"bytes4\"}],\"name\":\"getPriceUnsafe\",\"outputs\":[{\"components\":[{\"internalType\":\"int8\",\"name\":\"exponent\",\"type\":\"int8\"},{\"internalType\":\"uint64\",\"name\":\"price\",\"type\":\"uint64\"},{\"internalType\":\"int56\",\"name\":\"deltaPrice\",\"type\":\"int56\"},{\"internalType\":\"Witnet.Timestamp\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"Witnet.TransactionHash\",\"name\":\"trail\",\"type\":\"bytes32\"}],\"internalType\":\"struct IWitPriceFeedsTypes.Price\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IWitPriceFeedsTypes.Oracles\",\"name\":\"oracle\",\"type\":\"IWitPriceFeedsTypes.Oracles\"}],\"name\":\"toERC165Id\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IWitPriceFeedsTypes.Oracles\",\"name\":\"oracle\",\"type\":\"IWitPriceFeedsTypes.Oracles\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IWitPriceFeedsTypes.Mappers\",\"name\":\"mapper\",\"type\":\"IWitPriceFeedsTypes.Mappers\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"The Witnet Foundation.\",\"errors\":{\"PriceFeedNotFound()\":[{\"details\":\"Signature: 0x14aebe68\"}],\"StalePrice()\":[{\"details\":\"Signature: 0x19abf40e\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"WitPriceFeeds data model.\",\"version\":1},\"userdoc\":{\"errors\":{\"PriceFeedNotFound()\":[{\"notice\":\"Price feed not found or it is not pushed on-chain yet.\"}],\"StalePrice()\":[{\"notice\":\"Requested price is stale.\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/data/WitPriceFeedsDataLib.sol\":\"WitPriceFeedsDataLib\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"ado-contracts/contracts/interfaces/IERC2362.sol\":{\"keccak256\":\"0x4df66aa83b94d7c3d52aba3522b6eeafc19f2c45299b7c871ef46eb199ee4f6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0af92023c38ab97a95fb7e2a196a697cfc1d90bb1b8bfe73e0ba69cbb7a8f5ab\",\"dweb:/ipfs/QmVSBWxe2QCZvAxiuTfEwprK9MbDtFNptoWeMBbmUcwQnx\"]},\"project:/contracts/WitOracle.sol\":{\"keccak256\":\"0x7f20eab15140df459753dfa8e406b826918b56ebe2c46456f9d04345c02629d1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0573ce3d48200c71d8235a1a8c055b706420b2037bd21336f3c61713c3b8349\",\"dweb:/ipfs/QmY7BnVaNXFtJs1BFdeaa7dQfvUVoZyfwtv9HuToCxUUHU\"]},\"project:/contracts/data/WitPriceFeedsDataLib.sol\":{\"keccak256\":\"0x6c018724f4a5fdde4c0581bf7e9c25518925fc76f86c8efee9a188da64eaf39a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://143dd8e0cde80a88b4ff2c84f2d2a2b3207fc0201bc7a982689dfc6b90d8a357\",\"dweb:/ipfs/QmcF36BXaHTZ41bJfuukEQ74dksg37XWQ2FhvTd4iVQmNt\"]},\"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/IWitOracleQueriable.sol\":{\"keccak256\":\"0xdb0da1e377a35a7d620f43cb583a876750a52d91da2b888f48042483ad9c4910\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://edfcdf3e96ec3c5de7438f82e3d5a1dc9af9eb29080044213dccb26ff978354c\",\"dweb:/ipfs/Qmap2FzSysh2fug88eortbsTM7itFygRzKc9HfV43ePMik\"]},\"project:/contracts/interfaces/IWitOracleQueriableEvents.sol\":{\"keccak256\":\"0x47c283e931006d35bd2599524f86724e45eae6fad2fdd9cdecd1c85a90ff3f8c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ad0520f99ec9298536ae9434f58caeb470c10dd3eaab1e4c7ed4cae9a97e2a2\",\"dweb:/ipfs/QmSuYCsSPweZfQc5Fbf9jYDdx4u7gwYCUdjhpcrrxmWZy6\"]},\"project:/contracts/interfaces/IWitOracleRadonRegistry.sol\":{\"keccak256\":\"0x437bbb89129311bd1cc8f6becd333df46109ec53b24d3159be942b225614071f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef9bcdf4a73cb126885478c994821b7fe2b87d9221b767b4c9342b89b0d6550a\",\"dweb:/ipfs/QmXzZXPMxjSiFpcEnhg6CjLFNxGCpDZt22xpUh7VHxNTGd\"]},\"project:/contracts/interfaces/IWitPriceFeeds.sol\":{\"keccak256\":\"0xb29abe8819699e37e91b41c4cb63273fbb0ab8c482a09c31da6c91d7338cc405\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9325f3cbd3b396216268ec83d583abd86f44a5d656c375485296e256b3c2f2a\",\"dweb:/ipfs/Qme8pjdacDLa8HLKF7Sm3XZa9uUQn1EL7gANLnAbak8y4f\"]},\"project:/contracts/interfaces/IWitPriceFeedsAdmin.sol\":{\"keccak256\":\"0xd05b103840eeb8a4770e140dbe91bd40dd33d92959d226c57a2ae45a5e615355\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29e6104b0b62c676bb797ce8d01512550058f5b6de210b2467ba9bb0dfe8c00f\",\"dweb:/ipfs/QmUAgsVJYHqiRFrrnWCYo5vGJRaN4VsZvcBXJWYJUF5QyV\"]},\"project:/contracts/interfaces/IWitPriceFeedsConsumer.sol\":{\"keccak256\":\"0x2c12c7f4502a2953f352b67688cd8841a1198c9b8e8f9f87ab3fc0163b7533e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d82ec627ac4c38a7336b03541c118d606e107128ba109097857a26d376e92f33\",\"dweb:/ipfs/QmQBmvL5ziD7fY2vDBNpbDbbhnwi8Cwh4XVthUjTd9ZyCF\"]},\"project:/contracts/interfaces/IWitPriceFeedsEvents.sol\":{\"keccak256\":\"0xf8b1a2ca8dd8dc8a5b8debf18f4c32df404709a4b03353c939e57a92a4e41b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f755b639781013ae0bae92f063b1f5b440c187bbc9a7f938b6982e579114acfe\",\"dweb:/ipfs/QmZafsjeELGnVdbXvsiXeQ82vR7DBFCrwDLGqeopgxBgyC\"]},\"project:/contracts/interfaces/IWitPriceFeedsTypes.sol\":{\"keccak256\":\"0x68e2189e863f50e8d0aad8394a526df00c1e626886c23aa24c915427e5285e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5ff40355d4144e7c08f033b55e9ef1b5994bbd83bbfbd7a41129b141f164194\",\"dweb:/ipfs/QmXMhM7GXaVXnCQ1VFB4kPhbhbfktuNFKqMGXMtWLgUk3d\"]},\"project:/contracts/interfaces/legacy/IChainlinkAggregatorV3.sol\":{\"keccak256\":\"0x09750da5b74e684e13093320b00c8e95d648ddf58bfdb29b8bc3b90e6853c263\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b08da33fc3e7cbf1f60965f82efdea926f2f62312298be29188eca9d109189ac\",\"dweb:/ipfs/QmR2sJ4dddcDW5q14usqiEeB7pamqHDfqkMDd9hghVMhiJ\"]},\"project:/contracts/interfaces/legacy/IWitPyth.sol\":{\"keccak256\":\"0xa06a34a5e553beae7dbe09a5d1049557190511e696a1b855ab5e1196a06048a2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2c814b7be5539147c0ba1b55f6cddcad382d5e5e9f9de545d2d428c1989c7de\",\"dweb:/ipfs/QmY8KSV3PW2FBQVzXidLQ21KvDJ1v6y8WHaV8uxsqThJCC\"]},\"project:/contracts/interfaces/legacy/IWitPythErrors.sol\":{\"keccak256\":\"0x7d10dfd625a4914e4017cde140397f9f236f726ea82b4feed1d889f852866c1d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bbf8dc2bbac36cf0a141f7062b6ed8143cffaee7969a1afc3cf0d1971e8cf18\",\"dweb:/ipfs/QmbLiZwggZwhiTLJurBkAu492xAZZ9MXWiknsuGnLYNXhP\"]},\"project:/contracts/interfaces/legacy/IWitPythEvents.sol\":{\"keccak256\":\"0xacca21f4bb4d740de63f4f2e469e8313b1d8f9a7d2340efcc17981c3510c2800\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da8b0493082593838fbc4df2431c1983a82165ae1f17215e988951c0c1ef3882\",\"dweb:/ipfs/QmNUX9K3UqxiR9igT87iLja8h3u7htp83ZhAGZ6UgD3BZP\"]},\"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/Slices.sol\":{\"keccak256\":\"0x9d046fa558be922c9625a1fdc470f6e68b3c9b5745b6185cb4a4fc59181fa006\",\"license\":\"APACHE-2.0\",\"urls\":[\"bzz-raw://ab19ba09faf83aaa92947f0a0907f6522be89279a9a1b0e53d5393a23085947d\",\"dweb:/ipfs/QmeE9MwhpSFNTwyqDFpMFjftrJKR1edBhLjV3bdKQQHUVm\"]},\"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\"]}},\"version\":1}",
"bytecode": "0x61325c610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100d6575f3560e01c80639744540911610093578063d9ea438f1161006e578063d9ea438f146102b9578063ef0bf0a0146102cc578063fce897db146102eb578063ff0e1724146102ff575f5ffd5b80639744540914610228578063c66f4c0a14610293578063cab8a78e146102a6575f5ffd5b806301d63b7f146100da5780630873d81d1461011757806310b999a3146101565780631752c19f146101765780635e34a7bb146101f45780637d18e02014610207575b5f5ffd5b8180156100e5575f5ffd5b506100f96100f436600461274e565b61031e565b6040516001600160e01b031990911681526020015b60405180910390f35b818015610122575f5ffd5b50610136610131366004612822565b610570565b604080516001600160e01b0319909316835260208301919091520161010e565b6101696101643660046128c2565b610668565b60405161010e9190612909565b610189610184366004612944565b6107a9565b60405161010e91905f60c0820190506001600160401b0383511682526001600160401b036020840151166020830152604083015160060b604083015260608301515f0b60608301526001600160401b03608084015116608083015260a083015160a083015292915050565b61016961020236600461297d565b610e2d565b818015610212575f5ffd5b506102266102213660046129a3565b610f1c565b005b61023b6102363660046129d8565b61128f565b60405161010e91905f60a08201905082515f0b82526001600160401b036020840151166020830152604083015160060b60408301526001600160401b0360608401511660608301526080830151608083015292915050565b61023b6102a13660046129d8565b611348565b6100f96102b43660046128c2565b611495565b61023b6102c73660046129f1565b61153c565b8180156102d7575f5ffd5b506100f96102e6366004612a22565b611661565b8180156102f6575f5ffd5b506100f961178e565b81801561030a575f5ffd5b506100f9610319366004612a90565b6117c3565b5f8084600481111561033257610332612b0d565b60ff1611801561035657506004848181111561035057610350612b0d565b60ff1611155b6103985760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21036b0b83832b960911b60448201526064015b60405180910390fd5b5f6103a388886118f1565b90505f6103af82611a98565b90506103ba81611ac2565b156103d75760405162461bcd60e51b815260040161038f90612b21565b5f5f5b85811015610543575f6104438888848181106103f8576103f8612b4a565b905060200281019061040a9190612b5e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611b1792505050565b90505f61044f82611a98565b905061045a81611ac2565b89898581811061046c5761046c612b4a565b905060200281019061047e9190612b5e565b60405160200161048f929190612ba0565b604051602081830303815290604052906104bc5760405162461bcd60e51b815260040161038f9190612909565b506104c8836020612bec565b826001600160e01b031916901c841793506104e1611b46565b6001600160e01b0319929092165f9081526002909201602090815260408320805460018082018355918552919093206008820401805463ffffffff60079093166004026101000a928302191660e089901c9290920291909117905550016103da565b5061055082898984611b6a565b6105598361128f565b5061056261178e565b9a9950505050505050505050565b5f5f5f61057d89896118f1565b90505f61058982611a98565b90506001600160a01b0385166105d55760405162461bcd60e51b81526020600482015260116024820152706e6f207261646f6e20726567697374727960781b604482015260640161038f565b604051630502487d60e51b81526001600160a01b0386169063a0490fa090610603908b908b90600401612c2b565b602060405180830381865afa15801561061e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106429190612c46565b925061065181875f3087611bf2565b61065961178e565b93505050965096945050505050565b60605f82600381111561067d5761067d612b0d565b036106a857505060408051808201909152600a8152695769742f4f7261636c6560b01b602082015290565b60018260038111156106bc576106bc612b0d565b036106e857505060408051808201909152600b81526a20a22797a2a92199199b1960a91b602082015290565b60028260038111156106fc576106fc612b0d565b03610732575050604080518082019091526015815274436861696e6c696e6b41676772656761746f72563360581b602082015290565b600382600381111561074657610746612b0d565b0361076c575050604080518082019091526005815264092a0f2e8d60db1b602082015290565b60405162461bcd60e51b8152602060048201526012602482015271756e737570706f72746564206f7261636c6560701b604482015260640161038f565b6107b161262d565b6001840154600160501b900460ff165f8160048111156107d3576107d3612b0d565b03610d11576001850154600160581b900460ff165f8160038111156107fa576107fa612b0d565b036109f3576001860154600160601b90046001600160a01b0316158061083357506001860154600160601b90046001600160a01b031630145b156108a85750506040805160c08101825260058601546001600160401b03808216835268010000000000000000820481166020840152600160801b8204600690810b94840194909452600160b81b82045f0b6060840152600160c01b9091041660808201529085015460a08201529050610e26565b60048601546301000000900460ff16610955576001860154600287015460405163d9ea438f60e01b81526001600160e01b0319909116600482015262ffffff8616602482015261095091600160601b90046001600160a01b03169063d9ea438f9060440160a060405180830381865afa158015610927573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094b9190612c85565b611ca9565b6109ea565b6001860154600287015460405163d9ea438f60e01b81526001600160e01b0319909116600482015262ffffff861660248201526109ea91600160601b90046001600160a01b03169063d9ea438f9060440160a060405180830381865afa1580156109c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e59190612c85565b611d18565b92505050610e26565b6001816003811115610a0757610a07612b0d565b03610aba576001860154600287015460405163f78eea8360e01b815260048101919091525f918291600160601b9091046001600160a01b03169063f78eea8390602401606060405180830381865afa158015610a65573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a899190612d1b565b506001600160401b03918216602088015216608086015250506001860154600160201b90045f0b6060840152610d0b565b6002816003811115610ace57610ace612b0d565b03610b81575f5f87600101600c9054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610b28573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4c9190612d5f565b506001600160401b0392831660208a01529091166080880152505050506001860154600160201b90045f0b6060840152610d0b565b6003816003811115610b9557610b95612b0d565b0361076c57604080516080810182525f80825260208201819052918101829052606081019190915260048701546301000000900460ff1615610c5e5760018701546002880154604051639474f45b60e01b81526004810191909152600160601b9091046001600160a01b031690639474f45b90602401608060405180830381865afa158015610c26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4a9190612dad565b80516001600160401b031685529050610cea565b600187015460028801546040516396834ad360e01b81526004810191909152600160601b9091046001600160a01b0316906396834ad390602401608060405180830381865afa158015610cb3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd79190612dad565b80516001600160401b0316602086015290505b6060808201516001600160401b031660808601526040909101515f0b908401525b50610e24565b6003816004811115610d2557610d25612b0d565b1480610d4257506004816004811115610d4057610d40612b0d565b145b15610d7f576001850154610d779085908590600160201b90045f0b6004856004811115610d7157610d71612b0d565b14611d87565b915050610e26565b6002816004811115610d9357610d93612b0d565b03610db3576001850154610d779085908590600160201b90045f0b612073565b6001816004811115610dc757610dc7612b0d565b03610de7576001850154610d779085908590600160201b90045f0b6121ba565b60405162461bcd60e51b81526020600482015260126024820152713ab739bab83837b93a32b21036b0b83832b960711b604482015260640161038f565b505b9392505050565b60605f826004811115610e4257610e42612b0d565b03610e675750506040805180820190915260048152634e6f6e6560e01b602082015290565b6003826004811115610e7b57610e7b612b0d565b03610ea3575050604080518082019091526007815266141c9bd91d58dd60ca1b602082015290565b6001826004811115610eb757610eb7612b0d565b03610ee057505060408051808201909152600881526746616c6c6261636b60c01b602082015290565b6002826004811115610ef457610ef4612b0d565b03610de7575050604080518082019091526007815266121bdd1d195cdd60ca1b602082015290565b5f610f2683611a98565b9050610f3181611ac2565b1561128a575f610f3f611b46565b6001600160e01b031985165f908152600291909101602090815260409182902080548351818402810184019094528084529091830182828015610fcb57602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610f8d5790505b505050505090508280610fdd57508051155b6110355760405162461bcd60e51b815260206004820152602360248201527f63616e6e6f742072656d6f7665206966206d61707065642066726f6d206f746860448201526265727360e81b606482015260840161038f565b5f5b815181101561106b5761106382828151811061105557611055612b4a565b602002602001015185610f1c565b600101611037565b50611074611b46565b6001600160e01b031985165f9081526002919091016020526040812061109991612661565b5f60016110a4611b46565b546110af9190612e36565b600184015490915063ffffffff1681111561114b575f6110cd611b46565b8054839081106110df576110df612b4a565b5f91825260208220015491506110f482611a98565b600180870154908201805463ffffffff191663ffffffff90921691909117905590508161111f611b46565b6001870154815463ffffffff90911690811061113d5761113d612b4a565b5f9182526020909120015550505b611153611b46565b80548061116257611162612e49565b5f8281526020812082015f1990810191909155019055600283015480156111eb576111b661118e611b46565b5f838152600391909101602052604090205460e01b6001600160e01b03199081169088161490565b156111eb575f6111c4611b46565b5f83815260039190910160205260409020805463ffffffff191660e09290921c9190911790555b6111f3611b46565b6001600160e01b031987165f908152600191909101602052604081206005810182905560060155611222611b46565b6001600160e01b031987165f90815260019190910160205260408120906112498282612686565b505f6001820181905560028201819055600382018190556004820180546dffffffffffffffffffffffffffff19169055600582018190556006909101555050505b505050565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101829052906112c283611a98565b90505f6112d082855f6107a9565b90506040518060a0016040528082606001515f0b81526020015f835f01516001600160401b031611611306578260200151611309565b82515b6001600160401b03168152602001826040015160060b815260200182608001516001600160401b031681526020018260a0015181525092505050919050565b6040805160a0810182525f8082526020820181905291810182905260608101829052608081018290529061137b83611a98565b90505f61138a82600401612241565b90505f61139c838684606001516107a9565b60808101519091506001600160401b03166113ca57604051630295d7cd60e31b815260040160405180910390fd5b606082015162ffffff1615806114015750816060015162ffffff1681608001516113f49190612e5d565b6001600160401b03164211155b61141e57604051630cd5fa0760e11b815260040160405180910390fd5b6040518060a0016040528082606001515f0b81526020015f835f01516001600160401b031611611452578260200151611455565b82515b6001600160401b03168152602001826040015160060b815260200182608001516001600160401b031681526020018260a001518152509350505050919050565b5f808260038111156114a9576114a9612b0d565b036114bc5750636d11bc5160e11b919050565b60018260038111156114d0576114d0612b0d565b036114e3575063f78eea8360e01b919050565b60028260038111156114f7576114f7612b0d565b0361150a5750630e70a24b60e31b919050565b600382600381111561151e5761151e612b0d565b0361153057506242596b60e61b919050565b505f919050565b919050565b6040805160a0810182525f8082526020820181905291810182905260608101829052608081018290529061156f84611a98565b90505f61157d8286866107a9565b60808101519091506001600160401b03166115ab57604051630295d7cd60e31b815260040160405180910390fd5b8362ffffff1681608001516115c09190612e5d565b6001600160401b03164211156115e957604051630cd5fa0760e11b815260040160405180910390fd5b6040518060a0016040528082606001515f0b81526020015f835f01516001600160401b03161161161d578260200151611620565b82515b6001600160401b03168152602001826040015160060b815260200182608001516001600160401b031681526020018260a00151815250925050505b92915050565b5f5f61166d87876118f1565b90505f61167982611a98565b90506001600160a01b0384166116c55760405162461bcd60e51b81526020600482015260116024820152706e6f207261646f6e20726567697374727960781b604482015260640161038f565b604051631a3b01e960e21b8152600481018790526001600160a01b038516906368ec07a490602401602060405180830381865afa158015611708573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061172c9190612e7c565b61176d5760405162461bcd60e51b8152602060048201526012602482015271756e766572696669656420736f757263657360701b604482015260640161038f565b61177a81865f308a611bf2565b61178261178e565b98975050505050505050565b5f6117976123e4565b9050806117a2611b46565b60050160146101000a81548163ffffffff021916908360e01c021790555090565b5f808460038111156117d7576117d7612b0d565b60ff16101580156117fc5750600384818111156117f6576117f6612b0d565b60ff1611155b6118395760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206f7261636c6560901b604482015260640161038f565b5f61184488886118f1565b90505f61185082611a98565b905061185b81611ac2565b156118785760405162461bcd60e51b815260040161038f90612b21565b5f856001600160a01b03163b116118c55760405162461bcd60e51b8152602060048201526011602482015270696e6578697374656e74206f7261636c6560781b604482015260640161038f565b6118d28188888888611bf2565b6118db8261128f565b506118e461178e565b9998505050505050505050565b5f5f61193184848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611b1792505050565b90508091505f61194083611a98565b604051909150611954908290602001612ec9565b60405160208183030381529060405280519060200120858560405160200161197d929190612c2b565b6040516020818303038152906040528051906020012014611a65576119a0611b46565b6001600160e01b031984165f908152600291909101602052604090205415611a265760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f74207265666163746f72206578697369746e672073796d626f6c206044820152726966206d6170706564206279206f746865727360681b606482015260840161038f565b80611a32858783612f9b565b50611a3b611b46565b5460018201805463ffffffff191663ffffffff9092169190911790555f6005820181905560068201555b611a6e81611ac2565b611a9057611a7a611b46565b80546001810182555f9182526020909120018290555b505092915050565b5f611aa1611b46565b6001600160e01b03199092165f908152600192909201602052506040902090565b60028101545f90151580611af757506001820154600160501b900460ff166004811115611af157611af1612b0d565b60ff1615155b8061165b57505060010154600160601b90046001600160a01b0316151590565b5f81604051602001611b299190612909565b604051602081830303815290604052805190602001209050919050565b7fc5354469a5d32189a18f5e79f9508d828fa089087c317bc89792b1c8dba5390090565b611b7384611ac2565b15611b905760405162461bcd60e51b815260040161038f90612b21565b60018401805464ff00000000198116600160201b60ff87160290811783558492916aff0000000000ff00000000191660ff60501b1990911617600160501b836004811115611be057611be0612b0d565b02179055506003909301929092555050565b611bfb85611ac2565b15611c185760405162461bcd60e51b815260040161038f90612b21565b60018501805464ff00000000198116600160201b60ff88160290811783558592916bff000000000000ff00000000191660ff60581b1990911617600160581b836003811115611c6957611c69612b0d565b02179055506001850180546001600160a01b03909316600160601b026bffffffffffffffffffffffff909316929092179091556002909301929092555050565b611cb161262d565b6040518060c001604052805f6001600160401b0316815260200183602001516001600160401b03168152602001836040015160060b8152602001835f01515f0b815260200183606001516001600160401b0316815260200183608001518152509050919050565b611d2061262d565b6040518060c0016040528083602001516001600160401b031681526020015f6001600160401b03168152602001836040015160060b8152602001835f01515f0b815260200183606001516001600160401b0316815260200183608001518152509050919050565b611d8f61262d565b5f611d9986612465565b9050611da36126bd565b5f5b8251811015611ef5575f611df4611dd4858481518110611dc757611dc7612b4a565b6020026020010151611a98565b858481518110611de657611de6612b4a565b60200260200101518a6107a9565b9050815f03611e495780516001600160401b031615611e1c57805160070b6020840152611e27565b602081015160070b83525b6080808201516001600160401b03169086015260a08082015190860152611ec5565b60208301515f1215611e6d57805160070b8360016020020180519091029052611e7e565b6020810151835160079190910b0283525b611ea2816080015186608001516001600160401b031661251b90919063ffffffff16565b15611ec5576080808201516001600160401b03169086015260a080820151908601525b85611ed65780606001515f03611edc565b80606001515b5f0b836002602002018051909101905250600101611da5565b505f85900b81600260200201818151611f0e9190613054565b90525060408101515f12611fff578315611fa25760408101515f90611f3290613073565b611f3d90600a613170565b90505f82600160200201511315611f6d576020820151611f5d908261318f565b6001600160401b03168452611f9c565b81515f1215611f95578151611f82908261318f565b6001600160401b03166020850152611f9c565b5f60208501525b50612060565b60408101515f90611fb290613073565b611fbd90600a613170565b90505f82600160200201511315611fde576020820151611f5d90829061318f565b8151611feb90829061318f565b6001600160401b0316602085015250612060565b60408101515f9061201190600a613170565b90505f82600160200201511315612042576020820151612032908290612bec565b6001600160401b0316845261205e565b815161204f908290612bec565b6001600160401b031660208501525b505b50505f9290920b60608301525092915050565b61207b61262d565b5f61208585612465565b90505f5b815181101561210b575f6120cb6120ab848481518110611dc757611dc7612b4a565b8484815181106120bd576120bd612b4a565b6020026020010151886107a9565b90508115806120f957506120f9846080015182608001516001600160401b031661251b90919063ffffffff16565b15612102578093505b50600101612089565b5081606001515f0b835f0b12156121625782826060015161212c91906131a2565b61213790600a6131c2565b8260200181815161214891906131d0565b6001600160401b03169052505f83900b6060830152610e24565b81606001515f0b835f0b1315610e2457606082015161218190846131a2565b61218c90600a6131c2565b8260200181815161219d91906131f9565b6001600160401b03169052505f83900b6060830152509392505050565b6121c261262d565b5f6121cc85612465565b90505f5b815181101561210b575f6121f26120ab848481518110611dc757611dc7612b4a565b905062ffffff86161580612229575061221062ffffff871642612e36565b6001600160401b031681608001516001600160401b0316115b15612238579250610e26915050565b506001016121d0565b6040805160c0810182525f80825260208201819052918101829052606081018290526080810182905260a081018290529061227a611b46565b6040805160c081019091528454600492909201925090819062ffffff16156122a857845462ffffff166122b0565b825462ffffff165b62ffffff16815284546020909101906301000000900460ff16806122dc575082546301000000900460ff165b151581528454602090910190600160201b900462ffffff161561230c578454600160201b900462ffffff1661231b565b8254600160201b900462ffffff165b62ffffff90811682528554602090920191600160381b9004161561234c578454600160381b900462ffffff1661235b565b8254600160381b900462ffffff165b62ffffff1681528454602090910190600160501b900461ffff161561238c578454600160501b900461ffff1661239a565b8254600160501b900461ffff165b61ffff90811682528554602090920191600160601b900416156123c9578454600160601b900461ffff166123d7565b8254600160601b900461ffff165b61ffff1690529392505050565b5f5f6123ee611b46565b549050801561246157612426612421612405611b46565b80545f9061241557612415612b4a565b905f5260205f20015490565b61252c565b915060015b8181101561245f57612453612421612441611b46565b80548490811061241557612415612b4a565b9092189160010161242b565b505b5090565b60605f612470611b46565b6001600160e01b031984165f90815260019190910160205260409081902060030154815160088082526101208201909352909250908160200160208202803683370190505091505f5b600881101561251357816001600160e01b031981165f036124da5750612513565b808483815181106124ed576124ed612b4a565b6001600160e01b03199092166020928302919091018201529290921b91506001016124b9565b825250919050565b6001600160401b0390811691161190565b5f5f61253783611a98565b60028101549091506125ff575f6001820154600160501b900460ff16600481111561256457612564612b0d565b036125be5760018101546040516001600160e01b031985166020820152600160601b90910460601b6bffffffffffffffffffffffff1916602482015260380160405160208183030381529060405280519060200120610e26565b60038101546040516001600160e01b03198516602082015260248101919091526044015b604051602081830303815290604052805190602001209392505050565b60028101546040516001600160e01b03198516602082015260248101919091526044016125e2565b50919050565b6040805160c0810182525f80825260208201819052918101829052606081018290526080810182905260a081019190915290565b5080545f825560070160089004905f5260205f209081019061268391906126db565b50565b50805461269290612e97565b5f825580601f106126a1575050565b601f0160209004905f5260205f209081019061268391906126db565b60405180606001604052806003906020820280368337509192915050565b5b80821115612461575f81556001016126dc565b5f5f83601f8401126126ff575f5ffd5b5081356001600160401b03811115612715575f5ffd5b60208301915083602082850101111561272c575f5ffd5b9250929050565b805f0b8114612683575f5ffd5b803560058110611537575f5ffd5b5f5f5f5f5f5f60808789031215612763575f5ffd5b86356001600160401b03811115612778575f5ffd5b61278489828a016126ef565b909750955050602087013561279881612733565b93506127a660408801612740565b925060608701356001600160401b038111156127c0575f5ffd5b8701601f810189136127d0575f5ffd5b80356001600160401b038111156127e5575f5ffd5b8960208260051b84010111156127f9575f5ffd5b60208201935080925050509295509295509295565b6001600160a01b0381168114612683575f5ffd5b5f5f5f5f5f5f60808789031215612837575f5ffd5b86356001600160401b0381111561284c575f5ffd5b61285889828a016126ef565b90975095505060208701356001600160401b03811115612876575f5ffd5b61288289828a016126ef565b909550935050604087013561289681612733565b915060608701356128a68161280e565b809150509295509295509295565b803560048110611537575f5ffd5b5f602082840312156128d2575f5ffd5b610e26826128b4565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e2660208301846128db565b80356001600160e01b031981168114611537575f5ffd5b803562ffffff81168114611537575f5ffd5b5f5f5f60608486031215612956575f5ffd5b833592506129666020850161291b565b915061297460408501612932565b90509250925092565b5f6020828403121561298d575f5ffd5b610e2682612740565b8015158114612683575f5ffd5b5f5f604083850312156129b4575f5ffd5b6129bd8361291b565b915060208301356129cd81612996565b809150509250929050565b5f602082840312156129e8575f5ffd5b610e268261291b565b5f5f60408385031215612a02575f5ffd5b612a0b8361291b565b9150612a1960208401612932565b90509250929050565b5f5f5f5f5f60808688031215612a36575f5ffd5b85356001600160401b03811115612a4b575f5ffd5b612a57888289016126ef565b909650945050602086013592506040860135612a7281612733565b91506060860135612a828161280e565b809150509295509295909350565b5f5f5f5f5f5f60a08789031215612aa5575f5ffd5b86356001600160401b03811115612aba575f5ffd5b612ac689828a016126ef565b9097509550506020870135612ada81612733565b9350612ae8604088016128b4565b92506060870135612af88161280e565b95989497509295919493608090920135925050565b634e487b7160e01b5f52602160045260245ffd5b6020808252600f908201526e185b1c9958591e481cd95d1d1b1959608a1b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f5f8335601e19843603018112612b73575f5ffd5b8301803591506001600160401b03821115612b8c575f5ffd5b60200191503681900382131561272c575f5ffd5b7f756e737570706f7274656420646570656e64656e63793a2000000000000000008152818360188301375f9101601801908152919050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761165b5761165b612bd8565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f612c3e602083018486612c03565b949350505050565b5f60208284031215612c56575f5ffd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b0381168114612683575f5ffd5b5f60a0828403128015612c96575f5ffd5b5060405160a081016001600160401b0381118282101715612cb957612cb9612c5d565b6040528251612cc781612733565b81526020830151612cd781612c71565b60208201526040830151600681900b8114612cf0575f5ffd5b60408201526060830151612d0381612c71565b60608201526080928301519281019290925250919050565b5f5f5f60608486031215612d2d575f5ffd5b5050815160208301516040909301519094929350919050565b805169ffffffffffffffffffff81168114611537575f5ffd5b5f5f5f5f5f60a08688031215612d73575f5ffd5b612d7c86612d46565b60208701516040880151606089015192975090955093509150612da160808701612d46565b90509295509295909350565b5f6080828403128015612dbe575f5ffd5b50604051608081016001600160401b0381118282101715612de157612de1612c5d565b6040528251600781900b8114612df5575f5ffd5b81526020830151612e0581612c71565b60208201526040830151600381900b8114612e1e575f5ffd5b60408201526060928301519281019290925250919050565b8181038181111561165b5761165b612bd8565b634e487b7160e01b5f52603160045260245ffd5b6001600160401b03818116838216019081111561165b5761165b612bd8565b5f60208284031215612e8c575f5ffd5b8151610e2681612996565b600181811c90821680612eab57607f821691505b60208210810361262757634e487b7160e01b5f52602260045260245ffd5b602081525f5f8354612eda81612e97565b806020860152600182165f8114612ef85760018114612f1457612f45565b60ff1983166040870152604082151560051b8701019350612f45565b865f5260205f205f5b83811015612f3c57815488820160400152600190910190602001612f1d565b87016040019450505b509195945050505050565b601f82111561128a57805f5260205f20601f840160051c81016020851015612f755750805b601f840160051c820191505b81811015612f94575f8155600101612f81565b5050505050565b6001600160401b03831115612fb257612fb2612c5d565b612fc683612fc08354612e97565b83612f50565b5f601f841160018114612ff7575f8515612fe05750838201355b5f19600387901b1c1916600186901b178355612f94565b5f83815260208120601f198716915b828110156130265786850135825560209485019460019092019101613006565b5086821015613042575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8082018281125f831280158216821582161715611a9057611a90612bd8565b5f600160ff1b820161308757613087612bd8565b505f0390565b6001815b60018411156130c8578085048111156130ac576130ac612bd8565b60018416156130ba57908102905b60019390931c928002613091565b935093915050565b5f826130de5750600161165b565b816130ea57505f61165b565b8160018114613100576002811461310a57613126565b600191505061165b565b60ff84111561311b5761311b612bd8565b50506001821b61165b565b5060208310610133831016604e8410600b8410161715613149575081810a61165b565b6131555f19848461308d565b805f190482111561316857613168612bd8565b029392505050565b5f610e2683836130d0565b634e487b7160e01b5f52601260045260245ffd5b5f8261319d5761319d61317b565b500490565b5f82810b9082900b03607f198112607f8213171561165b5761165b612bd8565b5f610e2660ff8416836130d0565b6001600160401b0381811683821602908116908181146131f2576131f2612bd8565b5092915050565b5f6001600160401b038316806132115761321161317b565b806001600160401b038416049150509291505056fea2646970667358221220313ed896bd4777215a9258b0fa9a0d5553f6dad6d9d6f4bc18dc9337d4a40c0064736f6c634300081e0033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100d6575f3560e01c80639744540911610093578063d9ea438f1161006e578063d9ea438f146102b9578063ef0bf0a0146102cc578063fce897db146102eb578063ff0e1724146102ff575f5ffd5b80639744540914610228578063c66f4c0a14610293578063cab8a78e146102a6575f5ffd5b806301d63b7f146100da5780630873d81d1461011757806310b999a3146101565780631752c19f146101765780635e34a7bb146101f45780637d18e02014610207575b5f5ffd5b8180156100e5575f5ffd5b506100f96100f436600461274e565b61031e565b6040516001600160e01b031990911681526020015b60405180910390f35b818015610122575f5ffd5b50610136610131366004612822565b610570565b604080516001600160e01b0319909316835260208301919091520161010e565b6101696101643660046128c2565b610668565b60405161010e9190612909565b610189610184366004612944565b6107a9565b60405161010e91905f60c0820190506001600160401b0383511682526001600160401b036020840151166020830152604083015160060b604083015260608301515f0b60608301526001600160401b03608084015116608083015260a083015160a083015292915050565b61016961020236600461297d565b610e2d565b818015610212575f5ffd5b506102266102213660046129a3565b610f1c565b005b61023b6102363660046129d8565b61128f565b60405161010e91905f60a08201905082515f0b82526001600160401b036020840151166020830152604083015160060b60408301526001600160401b0360608401511660608301526080830151608083015292915050565b61023b6102a13660046129d8565b611348565b6100f96102b43660046128c2565b611495565b61023b6102c73660046129f1565b61153c565b8180156102d7575f5ffd5b506100f96102e6366004612a22565b611661565b8180156102f6575f5ffd5b506100f961178e565b81801561030a575f5ffd5b506100f9610319366004612a90565b6117c3565b5f8084600481111561033257610332612b0d565b60ff1611801561035657506004848181111561035057610350612b0d565b60ff1611155b6103985760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21036b0b83832b960911b60448201526064015b60405180910390fd5b5f6103a388886118f1565b90505f6103af82611a98565b90506103ba81611ac2565b156103d75760405162461bcd60e51b815260040161038f90612b21565b5f5f5b85811015610543575f6104438888848181106103f8576103f8612b4a565b905060200281019061040a9190612b5e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611b1792505050565b90505f61044f82611a98565b905061045a81611ac2565b89898581811061046c5761046c612b4a565b905060200281019061047e9190612b5e565b60405160200161048f929190612ba0565b604051602081830303815290604052906104bc5760405162461bcd60e51b815260040161038f9190612909565b506104c8836020612bec565b826001600160e01b031916901c841793506104e1611b46565b6001600160e01b0319929092165f9081526002909201602090815260408320805460018082018355918552919093206008820401805463ffffffff60079093166004026101000a928302191660e089901c9290920291909117905550016103da565b5061055082898984611b6a565b6105598361128f565b5061056261178e565b9a9950505050505050505050565b5f5f5f61057d89896118f1565b90505f61058982611a98565b90506001600160a01b0385166105d55760405162461bcd60e51b81526020600482015260116024820152706e6f207261646f6e20726567697374727960781b604482015260640161038f565b604051630502487d60e51b81526001600160a01b0386169063a0490fa090610603908b908b90600401612c2b565b602060405180830381865afa15801561061e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106429190612c46565b925061065181875f3087611bf2565b61065961178e565b93505050965096945050505050565b60605f82600381111561067d5761067d612b0d565b036106a857505060408051808201909152600a8152695769742f4f7261636c6560b01b602082015290565b60018260038111156106bc576106bc612b0d565b036106e857505060408051808201909152600b81526a20a22797a2a92199199b1960a91b602082015290565b60028260038111156106fc576106fc612b0d565b03610732575050604080518082019091526015815274436861696e6c696e6b41676772656761746f72563360581b602082015290565b600382600381111561074657610746612b0d565b0361076c575050604080518082019091526005815264092a0f2e8d60db1b602082015290565b60405162461bcd60e51b8152602060048201526012602482015271756e737570706f72746564206f7261636c6560701b604482015260640161038f565b6107b161262d565b6001840154600160501b900460ff165f8160048111156107d3576107d3612b0d565b03610d11576001850154600160581b900460ff165f8160038111156107fa576107fa612b0d565b036109f3576001860154600160601b90046001600160a01b0316158061083357506001860154600160601b90046001600160a01b031630145b156108a85750506040805160c08101825260058601546001600160401b03808216835268010000000000000000820481166020840152600160801b8204600690810b94840194909452600160b81b82045f0b6060840152600160c01b9091041660808201529085015460a08201529050610e26565b60048601546301000000900460ff16610955576001860154600287015460405163d9ea438f60e01b81526001600160e01b0319909116600482015262ffffff8616602482015261095091600160601b90046001600160a01b03169063d9ea438f9060440160a060405180830381865afa158015610927573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094b9190612c85565b611ca9565b6109ea565b6001860154600287015460405163d9ea438f60e01b81526001600160e01b0319909116600482015262ffffff861660248201526109ea91600160601b90046001600160a01b03169063d9ea438f9060440160a060405180830381865afa1580156109c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e59190612c85565b611d18565b92505050610e26565b6001816003811115610a0757610a07612b0d565b03610aba576001860154600287015460405163f78eea8360e01b815260048101919091525f918291600160601b9091046001600160a01b03169063f78eea8390602401606060405180830381865afa158015610a65573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a899190612d1b565b506001600160401b03918216602088015216608086015250506001860154600160201b90045f0b6060840152610d0b565b6002816003811115610ace57610ace612b0d565b03610b81575f5f87600101600c9054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610b28573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4c9190612d5f565b506001600160401b0392831660208a01529091166080880152505050506001860154600160201b90045f0b6060840152610d0b565b6003816003811115610b9557610b95612b0d565b0361076c57604080516080810182525f80825260208201819052918101829052606081019190915260048701546301000000900460ff1615610c5e5760018701546002880154604051639474f45b60e01b81526004810191909152600160601b9091046001600160a01b031690639474f45b90602401608060405180830381865afa158015610c26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4a9190612dad565b80516001600160401b031685529050610cea565b600187015460028801546040516396834ad360e01b81526004810191909152600160601b9091046001600160a01b0316906396834ad390602401608060405180830381865afa158015610cb3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd79190612dad565b80516001600160401b0316602086015290505b6060808201516001600160401b031660808601526040909101515f0b908401525b50610e24565b6003816004811115610d2557610d25612b0d565b1480610d4257506004816004811115610d4057610d40612b0d565b145b15610d7f576001850154610d779085908590600160201b90045f0b6004856004811115610d7157610d71612b0d565b14611d87565b915050610e26565b6002816004811115610d9357610d93612b0d565b03610db3576001850154610d779085908590600160201b90045f0b612073565b6001816004811115610dc757610dc7612b0d565b03610de7576001850154610d779085908590600160201b90045f0b6121ba565b60405162461bcd60e51b81526020600482015260126024820152713ab739bab83837b93a32b21036b0b83832b960711b604482015260640161038f565b505b9392505050565b60605f826004811115610e4257610e42612b0d565b03610e675750506040805180820190915260048152634e6f6e6560e01b602082015290565b6003826004811115610e7b57610e7b612b0d565b03610ea3575050604080518082019091526007815266141c9bd91d58dd60ca1b602082015290565b6001826004811115610eb757610eb7612b0d565b03610ee05750506040805180820190915260088152674