Contract Overview
Balance:
0 METIS

METIS Value:
$0.00 (@ $48.42/METIS)
More Info
Tag:
Not Available. Update?

Contract Creator:
Contract Source Code Verified (Exact Match)
Contract Name:
ChainlinkDataFeedHandler

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 10000 runs

Created At:
Tue, 30 Jan 2024 20:56:20 GMT
ChainlinkDataFeedHandler.sol
contracts
handlers
ChainlinkDataFeedHandler.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_rainbowRoad",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_chainlinkDataFeedFactory",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "string",
        "name": "dataFeedName",
        "type": "string"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "version",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint8",
        "name": "decimals",
        "type": "uint8"
      },
      {
        "indexed": false,
        "internalType": "uint80",
        "name": "roundId",
        "type": "uint80"
      },
      {
        "indexed": false,
        "internalType": "int256",
        "name": "answer",
        "type": "int256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "startedAt",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "updatedAt",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint80",
        "name": "answeredInRound",
        "type": "uint80"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "ChainlinkDataFeedUpdateSent",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "string",
        "name": "dataFeedName",
        "type": "string"
      },
      {
        "indexed": false,
        "internalType": "uint80",
        "name": "roundId",
        "type": "uint80"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "ChainlinkDataFeedUpdatedSucccessfully",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "string",
        "name": "dataFeedName",
        "type": "string"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "dataFeedSourceAddress",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "DataFeedSourceWhitelisted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferStarted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "Paused",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "Unpaused",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "acceptOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "burnWhitelistingFee",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "chainlinkDataFeedFactory",
    "outputs": [
      {
        "internalType": "contract IChainlinkDataFeedFactory",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "name": "chainlinkDataFeeds",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "chargeWhitelistingFee",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "name": "dataFeedSources",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "disableOpenWhitelisting",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "disableWhitelistingFeeBurn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "disableWhitelistingFeeCharge",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "enableOpenWhitelisting",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "enableWhitelistingFeeBurn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "enableWhitelistingFeeCharge",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "dataFeedName",
        "type": "string"
      }
    ],
    "name": "encodePayload",
    "outputs": [
      {
        "internalType": "bytes",
        "name": "payload",
        "type": "bytes"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "target",
        "type": "address"
      },
      {
        "internalType": "bytes",
        "name": "payload",
        "type": "bytes"
      }
    ],
    "name": "handleReceive",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "target",
        "type": "address"
      },
      {
        "internalType": "bytes",
        "name": "payload",
        "type": "bytes"
      }
    ],
    "name": "handleSend",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "openWhitelisting",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pause",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "paused",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pendingOwner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "rainbowRoad",
    "outputs": [
      {
        "internalType": "contract IRainbowRoad",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "dataFeedName",
        "type": "string"
      },
      {
        "internalType": "address",
        "name": "chainlinkDataFeedAddress",
        "type": "address"
      }
    ],
    "name": "setChainlinkDataFeed",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_chainlinkDataFeedFactory",
        "type": "address"
      }
    ],
    "name": "setChainlinkDataFeedFactory",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "dataFeedName",
        "type": "string"
      },
      {
        "internalType": "address",
        "name": "dataFeedSourceAddress",
        "type": "address"
      }
    ],
    "name": "setDataFeedSource",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_rainbowRoad",
        "type": "address"
      }
    ],
    "name": "setRainbowRoad",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_fee",
        "type": "uint256"
      }
    ],
    "name": "setWhitelistingFee",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "unpause",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "dataFeedName",
        "type": "string"
      },
      {
        "internalType": "address",
        "name": "dataFeedSourceAddress",
        "type": "address"
      }
    ],
    "name": "whitelistDataFeedSource",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "whitelistingFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "beneficiary",
        "type": "address"
      }
    ],
    "name": "withdrawNative",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "beneficiary",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "token",
        "type": "address"
      }
    ],
    "name": "withdrawToken",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]


Contract Creation Code
60806040523480156200001157600080fd5b50604051620026eb380380620026eb833981016040819052620000349162000199565b8162000040336200010e565b6001805460ff60a01b191681556002556001600160a01b038116620000b75760405162461bcd60e51b815260206004820152602360248201527f5261696e626f7720526f61642063616e6e6f74206265207a65726f206164647260448201526265737360e81b606482015260840160405180910390fd5b600380546001600160a01b039283166001600160a01b031990911617905569021e19e0c9bab240000060045560058054929091166301000000026001600160b81b03199092169190911761010117905550620001d1565b600180546001600160a01b031916905562000129816200012c565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200019457600080fd5b919050565b60008060408385031215620001ad57600080fd5b620001b8836200017c565b9150620001c8602084016200017c565b90509250929050565b61250a80620001e16000396000f3fe608060405234801561001057600080fd5b506004361061020b5760003560e01c806379ba50971161012a578063b82f4218116100bd578063de3ccbfb1161008c578063e30c397811610071578063e30c39781461044b578063e9c276f91461045c578063f2fde38b1461049057600080fd5b8063de3ccbfb14610404578063e1f6f6631461043857600080fd5b8063b82f4218146103b9578063bfb5944a146103cb578063c18272fc146103de578063c5f175b4146103f157600080fd5b8063924aac67116100f9578063924aac671461036d5780639418b32e146103755780639769a38a1461038f578063a6dd9364146103a657600080fd5b806379ba50971461034457806382f6a3431461034c5780638456cb59146103545780638da5cb5b1461035c57600080fd5b80633ed0da7f116101a25780635c975abb116101715780635c975abb146102ce5780636a936817146102f1578063715018a61461031c5780637692b5ce1461032457600080fd5b80633ed0da7f146102985780633f4ba83a146102ab57806340efbaea146102b35780634bfac110146102bb57600080fd5b80633aeac4e1116101de5780633aeac4e1146102485780633b3360701461025b5780633cca7c061461026e5780633d12f0f21461027657600080fd5b80630fc2801d1461021057806322827f151461021a5780632f622e6b1461022d57806338eb0a1c14610240575b600080fd5b6102186104a3565b005b610218610228366004611dd5565b610552565b61021861023b366004611e2c565b610b8a565b610218610c3a565b610218610256366004611e50565b610ce9565b610218610269366004611e2c565b610e0b565b610218610ed0565b6005546102839060ff1681565b60405190151581526020015b60405180910390f35b6102186102a6366004611e89565b610f5e565b6102186110e0565b6102186110f2565b6102186102c9366004611dd5565b61117c565b60015474010000000000000000000000000000000000000000900460ff16610283565b600354610304906001600160a01b031681565b6040516001600160a01b03909116815260200161028f565b6102186111e3565b610337610332366004611ede565b6111f5565b60405161028f9190611f8e565b6102186113fa565b610218611488565b610218611536565b6000546001600160a01b0316610304565b610218611546565b60055461030490630100000090046001600160a01b031681565b61039860045481565b60405190815260200161028f565b6102186103b4366004611fa1565b6115d6565b60055461028390610100900460ff1681565b6102186103d9366004611e2c565b611633565b6102186103ec366004611e89565b6116f1565b6102186103ff366004611dd5565b611a2c565b610304610412366004612094565b80516020818301810180516007825292820191909301209152546001600160a01b031681565b6005546102839062010000900460ff1681565b6001546001600160a01b0316610304565b61030461046a366004612094565b80516020818301810180516006825292820191909301209152546001600160a01b031681565b61021861049e366004611e2c565b611a47565b6104ab611ad0565b60055460ff166105285760405162461bcd60e51b815260206004820152602360248201527f4368617267652077686974656c697374696e672066656520697320646973616260448201527f6c6564000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60055462010000900460ff166105aa5760405162461bcd60e51b815260206004820152601d60248201527f4f70656e2077686974656c697374696e672069732064697361626c6564000000604482015260640161051f565b6001600160a01b0381166106265760405162461bcd60e51b815260206004820152602f60248201527f44617461204665656420736f7572636520616464726573732063616e6e6f742060448201527f6265207a65726f20616464726573730000000000000000000000000000000000606482015260840161051f565b60006001600160a01b0316600684846040516106439291906120d1565b908152604051908190036020019020546001600160a01b0316146106cf5760405162461bcd60e51b815260206004820152602160248201527f446174612046656564206e616d6520697320616c726561647920656e61626c6560448201527f6400000000000000000000000000000000000000000000000000000000000000606482015260840161051f565b60055460ff1615610aef57600360009054906101000a90046001600160a01b03166001600160a01b0316634b1c6a406040518163ffffffff1660e01b8152600401602060405180830381865afa15801561072d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075191906120e1565b600480546040517f23b872dd000000000000000000000000000000000000000000000000000000008152339281019290925230602483015260448201526001600160a01b0391909116906323b872dd90606401600060405180830381600087803b1580156107be57600080fd5b505af11580156107d2573d6000803e3d6000fd5b5050505060006103e8600454600360009054906101000a90046001600160a01b03166001600160a01b03166378ef7f026040518163ffffffff1660e01b8152600401602060405180830381865afa158015610831573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085591906120fe565b61085f9190612146565b610869919061215d565b9050600360009054906101000a90046001600160a01b03166001600160a01b0316634b1c6a406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e291906120e1565b6001600160a01b031663a9059cbb600360009054906101000a90046001600160a01b03166001600160a01b03166385f2aef26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610943573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096791906120e1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af11580156109cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f09190612198565b6109f957600080fd5b600554610100900460ff1615610aed57600360009054906101000a90046001600160a01b03166001600160a01b0316634b1c6a406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8091906120e1565b6001600160a01b03166342966c6882600454610a9c91906121ba565b6040518263ffffffff1660e01b8152600401610aba91815260200190565b600060405180830381600087803b158015610ad457600080fd5b505af1158015610ae8573d6000803e3d6000fd5b505050505b505b8060068484604051610b029291906120d1565b90815260405190819003602001812080546001600160a01b03939093167fffffffffffffffffffffffff0000000000000000000000000000000000000000909316929092179091557f6966e465a7010bdb7a933c49f75f8c9529d724315851c890872fb90cd338bad190610b7d908590859085904290612216565b60405180910390a1505050565b610b92611ad0565b60405147906000906001600160a01b0384169083908381818185875af1925050503d8060008114610bdf576040519150601f19603f3d011682016040523d82523d6000602084013e610be4565b606091505b5050905080610c355760405162461bcd60e51b815260206004820152601260248201527f556e61626c6520746f2077697468647261770000000000000000000000000000604482015260640161051f565b505050565b610c42611ad0565b600554610100900460ff16610cbf5760405162461bcd60e51b815260206004820152602160248201527f4275726e2077686974656c697374696e67206665652069732064697361626c6560448201527f6400000000000000000000000000000000000000000000000000000000000000606482015260840161051f565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b610cf1611ad0565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610d51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7591906120fe565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018390529192509083169063a9059cbb906044016020604051808303816000875af1158015610de1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e059190612198565b50505050565b610e13611ad0565b6001600160a01b038116610e8f5760405162461bcd60e51b815260206004820152603260248201527f436861696e6c696e6b2044617461204665656420466163746f72792063616e6e60448201527f6f74206265207a65726f20616464726573730000000000000000000000000000606482015260840161051f565b600580546001600160a01b039092166301000000027fffffffffffffffffff0000000000000000000000000000000000000000ffffff909216919091179055565b610ed8611ad0565b600554610100900460ff1615610f305760405162461bcd60e51b815260206004820181905260248201527f4275726e2077686974656c697374696e672066656520697320656e61626c6564604482015260640161051f565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b6003546001600160a01b03163314610fb85760405162461bcd60e51b815260206004820152601e60248201527f4d7573742062652063616c6c6564206279205261696e626f7720526f61640000604482015260640161051f565b610fc0611b2a565b6001600160a01b0383166110165760405162461bcd60e51b815260206004820152601d60248201527f5461726765742063616e6e6f74206265207a65726f2061646472657373000000604482015260640161051f565b60008190036110675760405162461bcd60e51b815260206004820152600f60248201527f496e76616c6964207061796c6f61640000000000000000000000000000000000604482015260640161051f565b60008080808080808061107c898b018b61226d565b975097509750975097509750975097507f067bdcfa8baccbc95374c82acd418ef26fffd194ae12887d4e4fd5cebf329b4c8888888888888888426040516110cb9998979695949392919061230b565b60405180910390a15050505050505050505050565b6110e8611ad0565b6110f0611b95565b565b6110fa611ad0565b60055462010000900460ff166111525760405162461bcd60e51b815260206004820152601d60248201527f4f70656e2077686974656c697374696e672069732064697361626c6564000000604482015260640161051f565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff169055565b611184611ad0565b80600684846040516111979291906120d1565b90815260405190819003602001902080546001600160a01b03929092167fffffffffffffffffffffffff0000000000000000000000000000000000000000909216919091179055505050565b6111eb611ad0565b6110f06000611c05565b606060006006848460405161120b9291906120d1565b908152604051908190036020019020546001600160a01b03169050806112735760405162461bcd60e51b815260206004820152601a60248201527f44617461204665656420736f75726365206e6f7420666f756e64000000000000604482015260640161051f565b60008190506000806000806000856001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156112be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e29190612370565b945094509450945094506000866001600160a01b03166354fd4d506040518163ffffffff1660e01b8152600401602060405180830381865afa15801561132c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135091906120fe565b90506000876001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611392573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b691906123c8565b90508b8b83838a8a8a8a8a6040516020016113d9999897969594939291906123e5565b60405160208183030381529060405299505050505050505050505b92915050565b60015433906001600160a01b0316811461147c5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e65720000000000000000000000000000000000000000000000606482015260840161051f565b61148581611c05565b50565b611490611ad0565b60055460ff16156115095760405162461bcd60e51b815260206004820152602260248201527f4368617267652077686974656c697374696e672066656520697320656e61626c60448201527f6564000000000000000000000000000000000000000000000000000000000000606482015260840161051f565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b61153e611ad0565b6110f0611c36565b61154e611ad0565b60055462010000900460ff16156115a75760405162461bcd60e51b815260206004820152601c60248201527f4f70656e2077686974656c697374696e6720697320656e61626c656400000000604482015260640161051f565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000179055565b6115de611ad0565b6000811161162e5760405162461bcd60e51b815260206004820152601d60248201527f466565206d7573742062652067726561746572207468616e207a65726f000000604482015260640161051f565b600455565b61163b611ad0565b6001600160a01b0381166116b75760405162461bcd60e51b815260206004820152602360248201527f5261696e626f7720526f61642063616e6e6f74206265207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161051f565b600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6003546001600160a01b0316331461174b5760405162461bcd60e51b815260206004820152601e60248201527f4d7573742062652063616c6c6564206279205261696e626f7720526f61640000604482015260640161051f565b611753611b2a565b6001600160a01b0383166117a95760405162461bcd60e51b815260206004820152601d60248201527f5461726765742063616e6e6f74206265207a65726f2061646472657373000000604482015260640161051f565b60008190036117fa5760405162461bcd60e51b815260206004820152600f60248201527f496e76616c6964207061796c6f61640000000000000000000000000000000000604482015260640161051f565b60008080808080808061180f898b018b61226d565b9750975097509750975097509750975060006001600160a01b031660078960405161183a9190612444565b908152604051908190036020019020546001600160a01b031603611942576005546001600160a01b03630100000090910416631a27913e6118836000546001600160a01b031690565b308b8a8c6040518663ffffffff1660e01b81526004016118a7959493929190612460565b6020604051808303816000875af11580156118c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ea91906120e1565b6007896040516118fa9190612444565b90815260405190819003602001902080546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790555b6007886040516119529190612444565b908152604051908190036020018120547facfc72a400000000000000000000000000000000000000000000000000000000825269ffffffffffffffffffff8781166004840152602483018790526044830186905260648301859052831660848301526001600160a01b03169063acfc72a49060a401600060405180830381600087803b1580156119e157600080fd5b505af11580156119f5573d6000803e3d6000fd5b505050507f62d67ee98a95229b67a734f9dab66ebc2eee83f005b605c45d7a9fa40d1f2aee8886426040516110cb939291906124a3565b611a34611ad0565b80600784846040516111979291906120d1565b611a4f611ad0565b600180546001600160a01b0383167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155611a986000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000546001600160a01b031633146110f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161051f565b60015474010000000000000000000000000000000000000000900460ff16156110f05760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161051f565b611b9d611ca5565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905561148581611d0f565b611c3e611b2a565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611be83390565b60015474010000000000000000000000000000000000000000900460ff166110f05760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161051f565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f840112611d8957600080fd5b50813567ffffffffffffffff811115611da157600080fd5b602083019150836020828501011115611db957600080fd5b9250929050565b6001600160a01b038116811461148557600080fd5b600080600060408486031215611dea57600080fd5b833567ffffffffffffffff811115611e0157600080fd5b611e0d86828701611d77565b9094509250506020840135611e2181611dc0565b809150509250925092565b600060208284031215611e3e57600080fd5b8135611e4981611dc0565b9392505050565b60008060408385031215611e6357600080fd5b8235611e6e81611dc0565b91506020830135611e7e81611dc0565b809150509250929050565b600080600060408486031215611e9e57600080fd5b8335611ea981611dc0565b9250602084013567ffffffffffffffff811115611ec557600080fd5b611ed186828701611d77565b9497909650939450505050565b60008060208385031215611ef157600080fd5b823567ffffffffffffffff811115611f0857600080fd5b611f1485828601611d77565b90969095509350505050565b60005b83811015611f3b578181015183820152602001611f23565b50506000910152565b60008151808452611f5c816020860160208601611f20565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611e496020830184611f44565b600060208284031215611fb357600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611ffa57600080fd5b813567ffffffffffffffff8082111561201557612015611fba565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561205b5761205b611fba565b8160405283815286602085880101111561207457600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000602082840312156120a657600080fd5b813567ffffffffffffffff8111156120bd57600080fd5b6120c984828501611fe9565b949350505050565b8183823760009101908152919050565b6000602082840312156120f357600080fd5b8151611e4981611dc0565b60006020828403121561211057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176113f4576113f4612117565b600082612193577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000602082840312156121aa57600080fd5b81518015158114611e4957600080fd5b818103818111156113f4576113f4612117565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60608152600061222a6060830186886121cd565b6001600160a01b03949094166020830152506040015292915050565b60ff8116811461148557600080fd5b69ffffffffffffffffffff8116811461148557600080fd5b600080600080600080600080610100898b03121561228a57600080fd5b883567ffffffffffffffff8111156122a157600080fd5b6122ad8b828c01611fe9565b9850506020890135965060408901356122c581612246565b955060608901356122d581612255565b94506080890135935060a0890135925060c0890135915060e08901356122fa81612255565b809150509295985092959890939650565b600061012080835261231f8184018d611f44565b602084019b909b52505060ff97909716604088015269ffffffffffffffffffff9586166060880152608087019490945260a086019290925260c085015290911660e083015261010090910152919050565b600080600080600060a0868803121561238857600080fd5b855161239381612255565b8095505060208601519350604086015192506060860151915060808601516123ba81612255565b809150509295509295909350565b6000602082840312156123da57600080fd5b8151611e4981612246565b60006101008083526123fa8184018c8e6121cd565b602084019a909a52505060ff96909616604087015269ffffffffffffffffffff9485166060870152608086019390935260a085019190915260c08401521660e09091015292915050565b60008251612456818460208701611f20565b9190910192915050565b60006001600160a01b03808816835280871660208401525060a0604083015261248c60a0830186611f44565b60ff94909416606083015250608001529392505050565b6060815260006124b66060830186611f44565b69ffffffffffffffffffff949094166020830152506040015291905056fea26469706673582212203ac94b42b1b38c5459a9c144e02cdbe5816eb163af4d64704eb7433abd9644c564736f6c634300081300330000000000000000000000009412316dc6c882ffc4fa1a01413b0c701b147b9e0000000000000000000000009d1a576ef61e734cd0272a8652fad5a18fb1337f