{
  "_format": "hh-sol-artifact-1",
  "contractName": "WitnetOracleTrustableOvm2",
  "sourceName": "contracts/core/customs/WitnetOracleTrustableOvm2.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract WitnetRequestFactory",
          "name": "_factory",
          "type": "address"
        },
        {
          "internalType": "contract WitnetRequestBytecodes",
          "name": "_registry",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_upgradable",
          "type": "bool"
        },
        {
          "internalType": "bytes32",
          "name": "_versionTag",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_reportResultGasBase",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_reportResultWithCallbackGasBase",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_reportResultWithCallbackRevertGasBase",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_sstoreFromZeroGas",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "EmptyBuffer",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "range",
          "type": "uint256"
        }
      ],
      "name": "IndexOutOfBounds",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "length",
          "type": "uint256"
        }
      ],
      "name": "InvalidLengthEncoding",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotInitializing",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "OwnableInvalidOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "OwnableUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ReentrancyGuardReentrantCall",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "read",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expected",
          "type": "uint256"
        }
      ],
      "name": "UnexpectedMajorType",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "unexpected",
          "type": "uint256"
        }
      ],
      "name": "UnsupportedMajorType",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "reason",
          "type": "string"
        }
      ],
      "name": "BatchReportError",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "name": "Initialized",
      "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": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Received",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "reporters",
          "type": "address[]"
        }
      ],
      "name": "ReportersSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "reporters",
          "type": "address[]"
        }
      ],
      "name": "ReportersUnset",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "baseAddr",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "baseCodehash",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "versionTag",
          "type": "string"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmReward",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "committeeSize",
              "type": "uint8"
            },
            {
              "internalType": "uint64",
              "name": "witnessingFeeNanoWit",
              "type": "uint64"
            }
          ],
          "indexed": false,
          "internalType": "struct WitnetV2.RadonSLA",
          "name": "witnetSLA",
          "type": "tuple"
        }
      ],
      "name": "WitnetQuery",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        }
      ],
      "name": "WitnetQueryResponse",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmCallbackGas",
          "type": "uint256"
        }
      ],
      "name": "WitnetQueryResponseDelivered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "resultCborBytes",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmCallbackActualGas",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "evmCallbackRevertReason",
          "type": "string"
        }
      ],
      "name": "WitnetQueryResponseDeliveryFailed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmReward",
          "type": "uint256"
        }
      ],
      "name": "WitnetQueryRewardUpgraded",
      "type": "event"
    },
    {
      "stateMutability": "nonpayable",
      "type": "fallback"
    },
    {
      "inputs": [],
      "name": "acceptOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "base",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "channel",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "class",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "codehash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "_codehash",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "currency",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "deployer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_gasPrice",
          "type": "uint256"
        },
        {
          "internalType": "uint16",
          "name": "_resultMaxSize",
          "type": "uint16"
        }
      ],
      "name": "estimateBaseFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "gasPrice",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "radHash",
          "type": "bytes32"
        }
      ],
      "name": "estimateBaseFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_gasPrice",
          "type": "uint256"
        },
        {
          "internalType": "uint24",
          "name": "_callbackGasLimit",
          "type": "uint24"
        }
      ],
      "name": "estimateBaseFeeWithCallback",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "_witnetQueryIds",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "_reportTxMsgData",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "_reportTxGasPrice",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_nanoWitPrice",
          "type": "uint256"
        }
      ],
      "name": "estimateReportEarnings",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_revenues",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_expenses",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "_queryIds",
          "type": "uint256[]"
        }
      ],
      "name": "extractWitnetDataRequests",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "_bytecodes",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "internalType": "contract WitnetRequestFactory",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_witnetQueryId",
          "type": "uint256"
        }
      ],
      "name": "fetchQueryResponse",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "reporter",
              "type": "address"
            },
            {
              "internalType": "uint64",
              "name": "finality",
              "type": "uint64"
            },
            {
              "internalType": "uint32",
              "name": "resultTimestamp",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "resultTallyHash",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "resultCborBytes",
              "type": "bytes"
            }
          ],
          "internalType": "struct WitnetV2.Response",
          "name": "_response",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getNextQueryId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_witnetQueryId",
          "type": "uint256"
        }
      ],
      "name": "getQuery",
      "outputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "requester",
                  "type": "address"
                },
                {
                  "internalType": "uint24",
                  "name": "gasCallback",
                  "type": "uint24"
                },
                {
                  "internalType": "uint72",
                  "name": "evmReward",
                  "type": "uint72"
                },
                {
                  "internalType": "bytes",
                  "name": "witnetBytecode",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes32",
                  "name": "witnetRAD",
                  "type": "bytes32"
                },
                {
                  "components": [
                    {
                      "internalType": "uint8",
                      "name": "committeeSize",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint64",
                      "name": "witnessingFeeNanoWit",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct WitnetV2.RadonSLA",
                  "name": "witnetSLA",
                  "type": "tuple"
                }
              ],
              "internalType": "struct WitnetV2.Request",
              "name": "request",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "reporter",
                  "type": "address"
                },
                {
                  "internalType": "uint64",
                  "name": "finality",
                  "type": "uint64"
                },
                {
                  "internalType": "uint32",
                  "name": "resultTimestamp",
                  "type": "uint32"
                },
                {
                  "internalType": "bytes32",
                  "name": "resultTallyHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "resultCborBytes",
                  "type": "bytes"
                }
              ],
              "internalType": "struct WitnetV2.Response",
              "name": "response",
              "type": "tuple"
            }
          ],
          "internalType": "struct WitnetV2.Query",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_witnetQueryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryEvmReward",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_witnetQueryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryRequest",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "requester",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "gasCallback",
              "type": "uint24"
            },
            {
              "internalType": "uint72",
              "name": "evmReward",
              "type": "uint72"
            },
            {
              "internalType": "bytes",
              "name": "witnetBytecode",
              "type": "bytes"
            },
            {
              "internalType": "bytes32",
              "name": "witnetRAD",
              "type": "bytes32"
            },
            {
              "components": [
                {
                  "internalType": "uint8",
                  "name": "committeeSize",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "witnessingFeeNanoWit",
                  "type": "uint64"
                }
              ],
              "internalType": "struct WitnetV2.RadonSLA",
              "name": "witnetSLA",
              "type": "tuple"
            }
          ],
          "internalType": "struct WitnetV2.Request",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_witnetQueryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResponse",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "reporter",
              "type": "address"
            },
            {
              "internalType": "uint64",
              "name": "finality",
              "type": "uint64"
            },
            {
              "internalType": "uint32",
              "name": "resultTimestamp",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "resultTallyHash",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "resultCborBytes",
              "type": "bytes"
            }
          ],
          "internalType": "struct WitnetV2.Response",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_witnetQueryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResponseStatus",
      "outputs": [
        {
          "internalType": "enum WitnetV2.ResponseStatus",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_witnetQueryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResultCborBytes",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_witnetQueryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResultError",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum Witnet.ResultErrorCodes",
              "name": "code",
              "type": "uint8"
            },
            {
              "internalType": "string",
              "name": "reason",
              "type": "string"
            }
          ],
          "internalType": "struct Witnet.ResultError",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_witnetQueryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryStatus",
      "outputs": [
        {
          "internalType": "enum WitnetV2.QueryStatus",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "_witnetQueryIds",
          "type": "uint256[]"
        }
      ],
      "name": "getQueryStatusBatch",
      "outputs": [
        {
          "internalType": "enum WitnetV2.QueryStatus[]",
          "name": "_status",
          "type": "uint8[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_initData",
          "type": "bytes"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_reporter",
          "type": "address"
        }
      ],
      "name": "isReporter",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isUpgradable",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        }
      ],
      "name": "isUpgradableFrom",
      "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": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_queryRAD",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "committeeSize",
              "type": "uint8"
            },
            {
              "internalType": "uint64",
              "name": "witnessingFeeNanoWit",
              "type": "uint64"
            }
          ],
          "internalType": "struct WitnetV2.RadonSLA",
          "name": "_querySLA",
          "type": "tuple"
        }
      ],
      "name": "postRequest",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_witnetQueryId",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_queryUnverifiedBytecode",
          "type": "bytes"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "committeeSize",
              "type": "uint8"
            },
            {
              "internalType": "uint64",
              "name": "witnessingFeeNanoWit",
              "type": "uint64"
            }
          ],
          "internalType": "struct WitnetV2.RadonSLA",
          "name": "_querySLA",
          "type": "tuple"
        },
        {
          "internalType": "uint24",
          "name": "_queryCallbackGasLimit",
          "type": "uint24"
        }
      ],
      "name": "postRequestWithCallback",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_witnetQueryId",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_queryRAD",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "committeeSize",
              "type": "uint8"
            },
            {
              "internalType": "uint64",
              "name": "witnessingFeeNanoWit",
              "type": "uint64"
            }
          ],
          "internalType": "struct WitnetV2.RadonSLA",
          "name": "_querySLA",
          "type": "tuple"
        },
        {
          "internalType": "uint24",
          "name": "_queryCallbackGasLimit",
          "type": "uint24"
        }
      ],
      "name": "postRequestWithCallback",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_witnetQueryId",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "registry",
      "outputs": [
        {
          "internalType": "contract WitnetRequestBytecodes",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_witnetQueryId",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "_witnetQueryResultTallyHash",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "_witnetQueryResultCborBytes",
          "type": "bytes"
        }
      ],
      "name": "reportResult",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_witnetQueryId",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "_witnetQueryResultTimestamp",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "_witnetQueryResultTallyHash",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "_witnetQueryResultCborBytes",
          "type": "bytes"
        }
      ],
      "name": "reportResult",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "queryId",
              "type": "uint256"
            },
            {
              "internalType": "uint32",
              "name": "queryResultTimestamp",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "queryResultTallyHash",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "queryResultCborBytes",
              "type": "bytes"
            }
          ],
          "internalType": "struct IWitnetOracleReporter.BatchResult[]",
          "name": "_batchResults",
          "type": "tuple[]"
        }
      ],
      "name": "reportResultBatch",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_batchReward",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_reporters",
          "type": "address[]"
        }
      ],
      "name": "setReporters",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "specs",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_exReporters",
          "type": "address[]"
        }
      ],
      "name": "unsetReporters",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_witnetQueryId",
          "type": "uint256"
        }
      ],
      "name": "upgradeQueryEvmReward",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x610260604052336101005263baeca88b60e01b6101605234801561002257600080fd5b50604051616058380380616058833981016040819052610041916101cf565b87878787878787878787878760008083836040518060400160405280601981526020017f696f2e7769746e65742e70726f786961626c652e626f61726400000000000000815250823360006001600160a01b0316816001600160a01b0316036100c457604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100cd8161014e565b5030608052151560c052600160025560e091909152805160209091012061012052506001600160a01b03908116610140529485166101a05250505016610180526101c0939093526101e0919091526102005261022052505073420000000000000000000000000000000000000f610240525061025198505050505050505050565b600180546001600160a01b03191690556101678161016a565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461016757600080fd5b600080600080600080600080610100898b0312156101ec57600080fd5b88516101f7816101ba565b60208a0151909850610208816101ba565b60408a0151909750801515811461021e57600080fd5b60608a015160808b015160a08c015160c08d015160e0909d01519b9e9a9d50929b919a9099929850909650945092505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051610200516102205161024051615ce161037760003960008181611fd50152612bf0015260008181612b0a01526133a101526000612b36015260008181612b760152612bbe015260006133cb015260008181610903015281816116c801528181611710015281816117db01526118980152600081816106c50152818161186e01528181611a2601528181611eba015261208701526000610870015260006109a00152600061052e0152600061094e01526000611ab201526000818161055f0152611c71015260005050600081816104e401528181610839015281816115fd015281816116570152818161195e01526119800152615ce16000f3fe6080604052600436106102765760003560e01c80637b1039991161014f578063aeb2ffc1116100c1578063e30c39781161007a578063e30c397814610970578063e5a6b10f1461098e578063e900aa33146109c2578063ec5946db146109d5578063f2fde38b146109e8578063f61921b214610a08576102b3565b8063aeb2ffc114610892578063b207e730146108bf578063bff852fa146108df578063c45a0155146108f4578063c805dd0f14610927578063d5f394881461093c576102b3565b806393d5185c1161011357806393d5185c146107955780639cc56e67146107ca578063a3ff5b00146107ea578063a77fc1a4146107fd578063a9e954b91461082a578063adb7c3f71461085e576102b3565b80637b103999146106b35780637bbdb96e146106e75780637bd88218146107375780638d3d8b38146107575780638da5cb5b14610777576102b3565b80635001f3b5116101e85780636280bce8116101ac5780636280bce8146105d25780636b58960a146105f25780636f07abcc146106125780636fdaab7e1461063f578063715018a61461068957806379ba50971461069e576102b3565b80635001f3b5146104d557806352d1902d1461051c5780635479d9401461055057806354fd4d5014610583578063581f5094146105a5576102b3565b8063234fe6e31161023a578063234fe6e31461040857806328a78d9b146104355780633dc2b7a214610455578063439fab911461046857806345ea6c17146104885780634c9f72e3146104b5576102b3565b8063044ad7be1461032b57806305e742ef1461036057806306eb2c421461038e57806308b7e85e146103ae5780630aa4112a146103db576102b3565b366102b3576102b1604051806040016040528060158152602001741b9bc81d1c985b9cd9995c9cc81858d8d95c1d1959605a1b815250610a28565b005b3480156102bf57600080fd5b506102b16102d160003560f81c610a71565b6102e260ff60003560f01c16610a71565b6102f360ff60003560e81c16610a71565b61030460ff60003560e01c16610a71565b60405160200161031794939291906145bb565b604051602081830303815290604052610a28565b34801561033757600080fd5b5061034b61034636600461464f565b610b63565b60405190151581526020015b60405180910390f35b34801561036c57600080fd5b5061038061037b36600461467f565b610ba5565b604051908152602001610357565b34801561039a57600080fd5b506103806103a93660046146f6565b610bcc565b3480156103ba57600080fd5b506103ce6103c9366004614737565b610f36565b60405161035791906147d0565b3480156103e757600080fd5b506103fb6103f6366004614737565b6111cd565b6040516103579190614865565b34801561041457600080fd5b50610428610423366004614737565b611333565b60405161035791906148a2565b34801561044157600080fd5b506102b1610450366004614915565b61133e565b6103806104633660046149cb565b6113f7565b34801561047457600080fd5b506102b1610483366004614a16565b611501565b34801561049457600080fd5b506104a86104a33660046146f6565b6119f5565b6040516103579190614a9b565b3480156104c157600080fd5b506102b16104d0366004614915565b611a97565b3480156104e157600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610357565b34801561052857600080fd5b506103807f000000000000000000000000000000000000000000000000000000000000000081565b34801561055c57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061034b565b34801561058f57600080fd5b50610598611aab565b6040516103579190614aff565b3480156105b157600080fd5b506105c56105c03660046146f6565b611adb565b6040516103579190614b22565b3480156105de57600080fd5b506103806105ed366004614bae565b611b9d565b3480156105fe57600080fd5b5061034b61060d36600461464f565b611c6d565b34801561061e57600080fd5b5061063261062d366004614737565b611cc3565b6040516103579190614c00565b34801561064b57600080fd5b5061038061065a366004614737565b6000908152600080516020615c8c8339815191526020526040902054600160b81b90046001600160481b031690565b34801561069557600080fd5b506102b1611cce565b3480156106aa57600080fd5b506102b1611ce2565b3480156106bf57600080fd5b506105047f000000000000000000000000000000000000000000000000000000000000000081565b3480156106f357600080fd5b5060408051306020808301919091524682840152825180830384018152606090920190925280519101205b6040516001600160e01b03199091168152602001610357565b34801561074357600080fd5b50610380610752366004614c1e565b611d59565b34801561076357600080fd5b50610598610772366004614737565b611d6e565b34801561078357600080fd5b506000546001600160a01b0316610504565b3480156107a157600080fd5b506107b56107b0366004614c4e565b611e0c565b60408051928352602083019190915201610357565b3480156107d657600080fd5b506103806107e5366004614ccb565b612064565b6103806107f8366004614ced565b61213a565b34801561080957600080fd5b5061081d610818366004614737565b612294565b6040516103579190614d62565b34801561083657600080fd5b507f00000000000000000000000000000000000000000000000000000000000000003f610380565b34801561086a57600080fd5b5061071e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561089e57600080fd5b506108b26108ad366004614737565b61240d565b6040516103579190614d8e565b3480156108cb57600080fd5b506103806108da366004614ddb565b612643565b3480156108eb57600080fd5b5061059861275e565b34801561090057600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610504565b34801561093357600080fd5b50610380612795565b34801561094857600080fd5b506105047f000000000000000000000000000000000000000000000000000000000000000081565b34801561097c57600080fd5b506001546001600160a01b0316610504565b34801561099a57600080fd5b506105047f000000000000000000000000000000000000000000000000000000000000000081565b6103806109d0366004614e42565b6127b2565b6102b16109e3366004614737565b612871565b3480156109f457600080fd5b506102b1610a0336600461464f565b61296f565b348015610a1457600080fd5b506103ce610a23366004614737565b6129e0565b610a3061275e565b81604051602001610a42929190614e7f565b60408051601f198184030181529082905262461bcd60e51b8252610a6891600401614aff565b60405180910390fd5b604080516002808252818301909252606091600091906020820181803683370190505090506000610aa3601085614ee8565b610aae906030614f0a565b90506000610abd601086614f23565b610ac8906030614f0a565b905060398260ff161115610ae457610ae1600783614f0a565b91505b60398160ff161115610afe57610afb600782614f0a565b90505b8160f81b83600081518110610b1557610b15614f45565b60200101906001600160f81b031916908160001a9053508060f81b83600181518110610b4357610b43614f45565b60200101906001600160f81b031916908160001a90535091949350505050565b6001600160a01b03811660009081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e185602052604081205460ff165b92915050565b6000610bb18383612b02565b610bbb6020612bec565b610bc59190614f5b565b9392505050565b6000610c2e600080516020615c6c8339815191525b336000908152600291909101602090815260409182902054825180840190935260158352743ab730baba3437b934bd32b2103932b837b93a32b960591b9183019190915260ff1690612ca2565b60005b82811015610f25576001610c68858584818110610c5057610c50614f45565b9050602002810190610c629190614f6e565b35612cb4565b6003811115610c7957610c79614878565b14610d5e577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f848483818110610cb157610cb1614f45565b9050602002810190610cc39190614f6e565b6040516353e8875160e11b815290359073__$e6ff738751a05f257ae0de251e4d5c9673$__9063a7d10ea290610cfe90600190600401614c00565b600060405180830381865af4158015610d1b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d439190810190614fdd565b604051610d51929190615011565b60405180910390a1610f1d565b838382818110610d7057610d70614f45565b9050602002810190610d829190614f6e565b610d9390604081019060200161502a565b63ffffffff161580610dd65750838382818110610db257610db2614f45565b9050602002810190610dc49190614f6e565b610dd2906060810190615045565b1590505b15610e54577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f848483818110610e0e57610e0e614f45565b9050602002810190610e209190614f6e565b35610e2961275e565b604051602001610e39919061508b565b60408051601f1981840301815290829052610d519291615011565b610f10848483818110610e6957610e69614f45565b9050602002810190610e7b9190614f6e565b35858584818110610e8e57610e8e614f45565b9050602002810190610ea09190614f6e565b610eb190604081019060200161502a565b868685818110610ec357610ec3614f45565b9050602002810190610ed59190614f6e565b60400135878786818110610eeb57610eeb614f45565b9050602002810190610efd9190614f6e565b610f0b906060810190615045565b612d35565b610f1a9083614f5b565b91505b600101610c31565b508015610b9f57610b9f3382612f14565b6040805160a081018252600080825260208201819052918101829052606080820192909252608081019190915281600380610f7083612cb4565b6003811115610f8157610f81614878565b14611010576040516353e8875160e11b815261100b9073__$e6ff738751a05f257ae0de251e4d5c9673$__9063a7d10ea290610fc1908590600401614c00565b600060405180830381865af4158015610fde573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110069190810190614fdd565b610a28565b6111c6565b8361105961101d82612f4a565b546040805180820190915260118152703737ba103a3432903932b8bab2b9ba32b960791b60208201526001600160a01b03909116331490612ca2565b61106285612f4a565b6040805160a0810182526004830180546001600160a01b0381168352600160a01b81046001600160401b03166020840152600160e01b900463ffffffff169282019290925260058301546060820152600690920180546080840191906110c7906150c4565b80601f01602080910402602001604051908101604052809291908181526020018280546110f3906150c4565b80156111405780601f1061111557610100808354040283529160200191611140565b820191906000526020600020905b81548152906001019060200180831161112357829003601f168201915b5050505050815250509350611160600080516020615c6c83398151915290565b600086815260019182016020526040812081815591829082906111859083018261447f565b506000600282018190556003909101805468ffffffffffffffffff191690556004830181815560058401829055906111c0600685018261447f565b50505050505b5050919050565b6112116040805160c081018252600080825260208083018290528284018290526060808401526080830182905283518085019094528184528301529060a082015290565b61121a82612f4a565b6040805160c08101825282546001600160a01b0381168252600160a01b810462ffffff166020830152600160b81b90046001600160481b031691810191909152600182018054919291606084019190611272906150c4565b80601f016020809104026020016040519081016040528092919081815260200182805461129e906150c4565b80156112eb5780601f106112c0576101008083540402835291602001916112eb565b820191906000526020600020905b8154815290600101906020018083116112ce57829003601f168201915b5050509183525050600282015460208083019190915260408051808201825260039094015460ff8116855261010090046001600160401b031691840191909152015292915050565b6000610b9f82612f68565b611346613080565b60005b81518110156113bc57600082828151811061136657611366614f45565b602002602001015190506000611387600080516020615c6c83398151915290565b6001600160a01b0392909216600090815260029092016020526040909120805460ff1916911515919091179055600101611349565b507f646436560d9757cb3c0f01da0f62642c6040b00c9a80685f94ef1a7725cad5f1816040516113ec91906150f8565b60405180910390a150565b60006114033a84612064565b61143c81345b1015604051806040016040528060138152602001721a5b9cdd59999a58da595b9d081c995dd85c99606a1b815250612ca2565b61147a61144a82600a615139565b3411156040518060400160405280600f81526020016e1d1bdbc81b5d58da081c995dd85c99608a1b815250612ca2565b826114b0611487826130ad565b6040518060400160405280600b81526020016a696e76616c696420534c4160a81b815250612ca2565b6114bc85856000613106565b92507ffb94adf28ab7e538d2691d90927f622cbc1100eae6afec58052efdee6c98a6168334866040516114f193929190615174565b60405180910390a1505092915050565b6000546001600160a01b03166060816115545760608380602001905181019061152a91906151bb565b9093509050611538836131da565b8080602001905181019061154c919061520b565b9150506115ae565b611597826001600160a01b0316336001600160a01b0316146040518060400160405280600d81526020016c3737ba103a34329037bbb732b960991b815250612ca2565b828060200190518101906115ab919061520b565b90505b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe541580159061161f57507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe547f00000000000000000000000000000000000000000000000000000000000000003f145b15611655576116556040518060400160405280601081526020016f185b1c9958591e481d5c19dc9859195960821b815250610a28565b7f00000000000000000000000000000000000000000000000000000000000000003f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe55604080518082019091526012815271696e6578697374656e7420666163746f727960701b60208201526116f9907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b151590612ca2565b6117cc630db7c58b60e41b6001600160e01b0319167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663adb7c3f76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561176c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179091906152a4565b6001600160e01b0319161460405180604001604052806013815260200172756e636f6d706c69616e7420666163746f727960681b815250612ca2565b611953306001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166346d1d21a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185b91906152ce565b6001600160a01b031614801561192357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191891906152ce565b6001600160a01b0316145b60405180604001604052806012815260200171646973636f7264616e7420666163746f727960701b815250612ca2565b61195c816131f3565b7f00000000000000000000000000000000000000000000000000000000000000003f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03167fe73e754121f0bad1327816970101955bfffdf53d270ac509d777c25be070d7f66119db611aab565b6040516119e89190614aff565b60405180910390a4505050565b6040516251ca3160e21b815260609073__$e6ff738751a05f257ae0de251e4d5c9673$__9063014728c490611a52907f000000000000000000000000000000000000000000000000000000000000000090879087906004016152eb565b600060405180830381865af4158015611a6f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bc59190810190615335565b611a9f613080565b611aa8816131f3565b50565b6060611ad67f0000000000000000000000000000000000000000000000000000000000000000613299565b905090565b6060816001600160401b03811115611af557611af56148b0565b604051908082528060200260200182016040528015611b1e578160200160208202803683370190505b50905060005b82811015611b9657611b4d848483818110611b4157611b41614f45565b90506020020135612cb4565b828281518110611b5f57611b5f614f45565b60200260200101906003811115611b7857611b78614878565b90816003811115611b8b57611b8b614878565b905250600101611b24565b5092915050565b6000611bb6600080516020615c6c833981519152610be1565b84600180611bc383612cb4565b6003811115611bd457611bd4614878565b14611c19576040516353e8875160e11b8152611c149073__$e6ff738751a05f257ae0de251e4d5c9673$__9063a7d10ea290610fc1908590600401614c00565b611c63565b604080518082019091526016815275726573756c742063616e6e6f7420626520656d70747960501b6020820152611c539085151590612ca2565b611c60874288888861333d565b92505b5050949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000008015610b9f5750816001600160a01b0316611cb36000546001600160a01b031690565b6001600160a01b03161492915050565b6000610b9f82612cb4565b611cd6613080565b611ce060006131da565b565b60015433906001600160a01b03168114611d505760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610a68565b611aa8816131da565b6000611d658383613361565b610bbb83612bec565b6060611d79826133f9565b6002018054611d87906150c4565b80601f0160208091040260200160405190810160405280929190818152602001828054611db3906150c4565b8015611e005780601f10611dd557610100808354040283529160200191611e00565b820191906000526020600020905b815481529060010190602001808311611de357829003601f168201915b50505050509050919050565b60008060005b87811015611fbd576001611e318a8a84818110611b4157611b41614f45565b6003811115611e4257611e42614878565b03611fb5576000611e6a8a8a84818110611e5e57611e5e614f45565b90506020020135612f4a565b8054909150600160a01b900462ffffff1615611eaa578054611e99908790600160a01b900462ffffff16612b02565b611ea39084614f5b565b9250611f68565b600281015415611f5057611e99867f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166376b78a0684600201546040518263ffffffff1660e01b8152600401611f0a91815260200190565b602060405180830381865afa158015611f27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4b91906153f0565b613361565b611f5b866000613361565b611f659084614f5b565b92505b84611f758260030161341a565b6001600160401b0316611f889190615139565b611f929084614f5b565b8154909350611fb190600160b81b90046001600160481b031685614f5b565b9350505b600101611e12565b506040516324ca470760e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906349948e0e9061200c9089908990600401615436565b602060405180830381865afa158015612029573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204d919061544a565b6120579082614f5b565b9050965096945050505050565b604051633b5bc50360e11b81526004810182905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906376b78a0690602401602060405180830381865afa1580156120ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f291906153f0565b905061212860008261ffff16116040518060400160405280600b81526020016a1a5b9d985b1a590814905160aa1b815250612ca2565b6121328482611d59565b949350505050565b600033826121f4823b158015906121b557506040516323d0872b60e11b81523060048201526001600160a01b038416906347a10e56906024015b602060405180830381865afa158015612191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b59190615463565b80156121c6575060008262ffffff16115b6040518060400160405280601081526020016f696e76616c69642063616c6c6261636b60801b815250612ca2565b6121ff3a5b85610ba5565b6122098134611409565b61221761144a82600a615139565b85612224611487826130ad565b61223060008888613106565b9450888861223d87612f4a565b6001019161224c9190836154d5565b507ffb94adf28ab7e538d2691d90927f622cbc1100eae6afec58052efdee6c98a61685348960405161228093929190615174565b60405180910390a150505050949350505050565b60408051808201909152600081526060602082015260006122b483612f68565b905073__$ef6db950c2506c2808ebbf3a91851f2b43$__63a62b8462826122da866133f9565b6002016040518363ffffffff1660e01b81526004016122fa929190615595565b600060405180830381865af492505050801561233857506040513d6000823e601f3d908101601f191682016040526123359190810190615634565b60015b610bc5576123446156cd565b806308c379a0036123a057506123586156e9565b8061236357506123a2565b604080518082019091528060008152602001826040516020016123869190615772565b60408051601f198184030181529190529052949350505050565b505b3d8080156123cc576040519150601f19603f3d011682016040523d82523d6000602084013e6123d1565b606091505b50604080518082019091528060008152602001604051806060016040528060218152602001615c4b602191399052949350505050565b50919050565b6124156144b9565b6000828152600080516020615c8c83398151915260205260409081902081516101008101835281546001600160a01b038116938201938452600160a01b810462ffffff166060830152600160b81b90046001600160481b03166080820152600182018054919384929091849160a085019190612490906150c4565b80601f01602080910402602001604051908101604052809291908181526020018280546124bc906150c4565b80156125095780601f106124de57610100808354040283529160200191612509565b820191906000526020600020905b8154815290600101906020018083116124ec57829003601f168201915b5050509183525050600282015460208083019190915260408051808201825260039094015460ff8116855261010090046001600160401b039081168584015292810193909352928452815160a0810183526004860180546001600160a01b0381168352600160a01b810490931682860152600160e01b90920463ffffffff1692810192909252600585015460608301526006850180549490930193919290916080840191906125b7906150c4565b80601f01602080910402602001604051908101604052809291908181526020018280546125e3906150c4565b80156126305780601f1061260557610100808354040283529160200191612630565b820191906000526020600020905b81548152906001019060200180831161261357829003601f168201915b5050509190925250505090525092915050565b600061265c600080516020615c6c833981519152610be1565b8560018061266983612cb4565b600381111561267a5761267a614878565b146126bf576040516353e8875160e11b81526126ba9073__$e6ff738751a05f257ae0de251e4d5c9673$__9063a7d10ea290610fc1908590600401614c00565b612753565b61270960008863ffffffff161180156126de5750428863ffffffff1611155b6040518060400160405280600d81526020016c06261642074696d657374616d7609c1b815250612ca2565b604080518082019091526016815275726573756c742063616e6e6f7420626520656d70747960501b60208201526127439085151590612ca2565b612750888888888861333d565b92505b505095945050505050565b60408051808201909152601981527f5769746e65744f7261636c65547275737461626c654f766d3200000000000000602082015290565b6000600080516020615c6c83398151915254611ad6906001614f5b565b600033826127f0823b158015906121b557506040516323d0872b60e11b81523060048201526001600160a01b038416906347a10e5690602401612174565b6127f93a6121f9565b6128038134611409565b61281161144a82600a615139565b8561281e611487826130ad565b612829888888613106565b94507ffb94adf28ab7e538d2691d90927f622cbc1100eae6afec58052efdee6c98a61685348960405161285e93929190615174565b60405180910390a1505050509392505050565b8060018061287e83612cb4565b600381111561288f5761288f614878565b146128d4576040516353e8875160e11b81526128cf9073__$e6ff738751a05f257ae0de251e4d5c9673$__9063a7d10ea290610fc1908590600401614c00565b505050565b60006128df84612f4a565b90503481548290601790612904908490600160b81b90046001600160481b03166157ab565b82546101009290920a6001600160481b03818102199093169183160217909155825460408051888152600160b81b90920490921660208201527fdcced240139c3504c690fc16a776a5a4da3d5d1c139539e75037554ddc21e55b92500160405180910390a150505050565b612977613080565b600180546001600160a01b0383166001600160a01b031990911681179091556129a86000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6040805160a0810182526000808252602082018190529181018290526060808201929092526080810191909152612a16826133f9565b6040805160a08101825282546001600160a01b0381168252600160a01b81046001600160401b03166020830152600160e01b900463ffffffff169181019190915260018201546060820152600282018054919291608084019190612a79906150c4565b80601f0160208091040260200160405190810160405280929190818152602001828054612aa5906150c4565b8015612af25780601f10612ac757610100808354040283529160200191612af2565b820191906000526020600020905b815481529060010190602001808311612ad557829003601f168201915b5050505050815250509050919050565b600080612b307f00000000000000000000000000000000000000000000000000000000000000006003615139565b612b5a907f0000000000000000000000000000000000000000000000000000000000000000614f5b565b9050808362ffffff161080612b9c575080612b9a62ffffff85167f0000000000000000000000000000000000000000000000000000000000000000614f5b565b105b15612bb357612bab8185615139565b915050610b9f565b612be262ffffff84167f0000000000000000000000000000000000000000000000000000000000000000614f5b565b612bab9085615139565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166349948e0e612c268461344a565b604051602001612c3691906157cb565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401612c619190614aff565b602060405180830381865afa158015612c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9f919061544a565b81612cb057612cb081610a28565b5050565b6000818152600080516020615c8c833981519152602052604081206004810154600160e01b900463ffffffff1615612d13576004810154600160a01b90046001600160401b03164310612d0a5750600392915050565b50600292915050565b80546001600160a01b031615612d2c5750600192915050565b50600092915050565b600080612d4187612f4a565b80546001600160b81b038116808355600160b81b9091046001600160481b03169350909150600160a01b900462ffffff1615612e8d57805460009081908190612db0908b9063ffffffff8c16908b908b908b906001600160a01b03811690600160a01b900462ffffff16613506565b9250925092508115612e0057604080518b81523a602082015280820185905290517f37fc320f2d5c58a36c657d3b047384d42550bcc0d9781d13a7d97f8a97c2370c9181900360600190a1612e6a565b7f794f0625cb473a6fc2bbc46c87577b8e719f074c42f7fe02abdf08e7435b1d8d8a88883a876000875111612e4d57604051806060016040528060298152602001615c2260299139612e4f565b865b604051612e619695949392919061585b565b60405180910390a15b612e858a8a8a6040518060200160405280600081525061389c565b505050612f0a565b7f1fd7bc07c18ac1c4f6d3111c704cd1b4c29b9f7980b7c5a9a2fddeef29d6c277873a6040805192835260208301919091520160405180910390a1612f0a87878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061389c92505050565b5095945050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156128cf573d6000803e3d6000fd5b6000908152600080516020615c8c8339815191526020526040902090565b600080612f7483612cb4565b90506003816003811115612f8a57612f8a614878565b0361303c576000838152600080516020615c8c8339815191526020526040812060060180549091908290612fbd906150c4565b90501115613032578054601b60fb1b908290600090612fdb906150c4565b8110612fe957612fe9614f45565b8154600116156130085790600052602060002090602091828204019190065b9054901a600160f81b026001600160f81b03191614613028576002612132565b6003949350505050565b5060059392505050565b600181600381111561305057613050614878565b0361305e5750600192915050565b600281600381111561307257613072614878565b03612d2c5750600492915050565b6000546001600160a01b03163314611ce05760405163118cdaa760e01b8152336004820152602401610a68565b6000806130c060408401602085016158a0565b6001600160401b03161180156130e5575060006130e060208401846158bd565b60ff16115b8015610b9f5750607f6130fb60208401846158bd565b60ff16111592915050565b6000600080516020615c6c8339815191528054600090613125906158da565b91829055509050600061313782612f4a565b805460408051808201909152600e81526d185b1c9958591e481c1bdcdd195960921b6020820152919250613177916001600160a01b039091161590612ca2565b8054346001600160481b0316600160b81b026001600160b81b03199091163362ffffff60a01b191617600160a01b62ffffff861602176001600160b81b03161781556002810185905583600382016131cf82826158f3565b905050509392505050565b600180546001600160a01b0319169055611aa881613969565b60005b815181101561326957600082828151811061321357613213614f45565b602002602001015190506001613234600080516020615c6c83398151915290565b6001600160a01b0392909216600090815260029092016020526040909120805460ff19169115159190911790556001016131f6565b507f4d570ee36dec878006609360d34ac8d6a0b68d521871ae15a407b6340877ca01816040516113ec91906150f8565b606060006132a6836139b9565b6001600160401b038111156132bd576132bd6148b0565b6040519080825280601f01601f1916602001820160405280156132e7576020820181803683370190505b50905060005b8151811015611b965783816020811061330857613308614f45565b1a60f81b82828151811061331e5761331e614f45565b60200101906001600160f81b031916908160001a9053506001016132ed565b600061334c8686868686612d35565b90506133583382612f14565b95945050505050565b6000602061ffff83161561337f5761337a600184615943565b613382565b60005b61338c919061595e565b61339790600461597f565b6133c59061ffff167f0000000000000000000000000000000000000000000000000000000000000000615139565b6133ef907f0000000000000000000000000000000000000000000000000000000000000000614f5b565b610bc59084615139565b6000908152600080516020615c8c8339815191526020526040902060040190565b805460009061342d9060ff166003614f0a565b8254610b9f9160ff169061010090046001600160401b031661599a565b60606000602061ffff84160461ffff166001600160401b03811115613471576134716148b0565b60405190808252806020026020018201604052801561349a578160200160208202803683370190505b50905060005b81518110156134d1576000198282815181106134be576134be614f45565b60209081029190910101526001016134a0565b506040516134ef9082906000196001601f88161b01906020016159c5565b604051602081830303815290604052915050919050565b60008060605a9250601b60fb1b878760008161352457613524614f45565b9050013560f81c60f81b6001600160f81b0319160361377457600061358661358189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506139f792505050565b613a1c565b90506002815110156136ad57856001600160a01b03166363febc9c868d8d8d4360006040518060c00160405280604051806040016040528060405180602001604052806000815250815260200160008152508152602001600060ff168152602001600060ff168152602001600060ff16815260200160006001600160401b0316815260200160006001600160401b03168152506040518863ffffffff1660e01b815260040161363a96959493929190615a81565b600060405180830381600088803b15801561365457600080fd5b5087f193505050508015613666575060015b6136a4576136726156cd565b806308c379a00361369857506136866156e9565b80613691575061369a565b915061376e565b505b3d6000803e3d6000fd5b6001925061376e565b856001600160a01b03166363febc9c868d8d8d436136e4886000815181106136d7576136d7614f45565b6020026020010151613bcc565b60fe8111156136f5576136f5614878565b8860008151811061370857613708614f45565b60200260200101516040518863ffffffff1660e01b815260040161373196959493929190615a81565b600060405180830381600088803b15801561374b57600080fd5b5087f19350505050801561375d575060015b613769576136726156cd565b600192505b50613882565b846001600160a01b031663bcc6307b858c8c8c436137c78e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506139f792505050565b6040518763ffffffff1660e01b81526004016137e7959493929190615ace565b600060405180830381600088803b15801561380157600080fd5b5087f193505050508015613813575060015b61387d5761381f6156cd565b806308c379a00361384557506138336156e9565b8061383e5750613847565b9050613882565b505b3d808015613871576040519150601f19603f3d011682016040523d82523d6000602084013e613876565b606091505b5050613882565b600191505b5a61388d9084615b02565b92509750975097945050505050565b6040518060a00160405280336001600160a01b03168152602001436001600160401b031681526020018463ffffffff168152602001838152602001828152506138e485612f4a565b81516004820180546020850151604086015163ffffffff16600160e01b026001600160e01b036001600160401b03909216600160a01b026001600160e01b03199093166001600160a01b039095169490941791909117169190911781556060830151600583015560808301519091600601906139609082615b15565b50505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b60208110156139f2578181602081106139d7576139d7614f45565b1a60f81b6001600160f81b031916156139f2576001016139bc565b919050565b6139ff61453b565b6040805180820190915282815260006020820152610bc581613c2f565b60608160048060ff16826040015160ff1614613a5c57604080830151905161800560e51b815260ff91821660048201529082166024820152604401610a68565b6000613a7085600001518660600151613d4f565b9050613a7d816001615bd4565b6001600160401b03166001600160401b03811115613a9d57613a9d6148b0565b604051908082528060200260200182016040528015613ad657816020015b613ac361453b565b815260200190600190039081613abb5790505b50935060005b816001600160401b0316811015613b9c57613af686613e17565b9550613b0186613e3f565b858281518110613b1357613b13614f45565b6020026020010181905250600460ff16866040015160ff1603613b6c576000613b3b87613a1c565b90508060018251613b4c9190615b02565b81518110613b5c57613b5c614f45565b6020026020010151965050613b94565b600560ff16866040015160ff1603613b89576000613b3b87613ed7565b613b92866140c1565b505b600101613adc565b508484826001600160401b031681518110613bb957613bb9614f45565b6020026020010181905250505050919050565b60008160008060ff16826040015160ff1614613c0c57604080830151905161800560e51b815260ff91821660048201529082166024820152604401610a68565b613c1e84600001518560600151613d4f565b6001600160401b0316949350505050565b613c3761453b565b8151518290600003613c5c576040516309036d4760e21b815260040160405180910390fd5b600060ff816001600160401b038160015b8015613cdf57613c7c89614286565b955081613c88816158da565b6007600589901c169650601f881695509250506005198501613cd7576020890151613cb38a86613d4f565b9350808a60200151613cc59190615b02565b613ccf9084614f5b565b925050613c6d565b506000613c6d565b600760ff86161115613d095760405163bd2ac87960e01b815260ff86166004820152602401610a68565b506040805160c08101825298895260ff95861660208a015293851693880193909352921660608601526001600160401b0390811660808601521660a08401525090919050565b600060188260ff161015613d67575060ff8116610b9f565b8160ff16601803613d8557613d7b83614286565b60ff169050610b9f565b8160ff16601903613da457613d99836142e8565b61ffff169050610b9f565b8160ff16601a03613dc557613db883614354565b63ffffffff169050610b9f565b8160ff16601b03613de057613dd9836143b3565b9050610b9f565b8160ff16601f03613df957506001600160401b03610b9f565b604051636d785b1360e01b815260ff83166004820152602401610a68565b613e1f61453b565b81518051516020909101511015613e3b578151610b9f90613c2f565b5090565b613e4761453b565b6040805160c081018083528451610100830184526060909152600060e0830152825180840190935280518352602090810151908301529081908152602001836020015160ff168152602001836040015160ff168152602001836060015160ff16815260200183608001516001600160401b031681526020018360a001516001600160401b03168152509050919050565b60608160058060ff16826040015160ff1614613f1757604080830151905161800560e51b815260ff91821660048201529082166024820152604401610a68565b6000613f2b85600001518660600151613d4f565b613f3690600261599a565b9050613f43816001615bd4565b6001600160401b03166001600160401b03811115613f6357613f636148b0565b604051908082528060200260200182016040528015613f9c57816020015b613f8961453b565b815260200190600190039081613f815790505b50935060005b816001600160401b0316811015613b9c57613fbc86613e17565b9550613fc786613e3f565b858281518110613fd957613fd9614f45565b6020908102919091010152613fef600282615bf4565b1580156140045750604086015160ff16600314155b1561403257604080870151905161800560e51b815260ff909116600482015260036024820152604401610a68565b604086015160ff166004148061404f5750604086015160ff166005145b156140ae57604086015160009060ff166004146140745761406f87613ed7565b61407d565b61407d87613a1c565b9050806001825161408e9190615b02565b8151811061409e5761409e614f45565b60200260200101519650506140b9565b6140b7866140c1565b505b600101613fa2565b6140c961453b565b604082015160ff1615806140e45750604082015160ff166001145b8061411d5750604082015160ff16600714801561410957506019826060015160ff1610155b801561411d5750601b826060015160ff1611155b156141505761412b82614412565b6001600160401b031682600001516020018181516141499190614f5b565b9052505090565b604082015160ff166003148061416d5750604082015160ff166002145b156141b157600061418683600001518460600151613d4f565b9050806001600160401b031683600001516020018181516141a79190614f5b565b905250613e3b9050565b604082015160ff16600414806141ce5750604082015160ff166005145b156141f7576141e582600001518360600151613d4f565b6001600160401b031660808301525090565b604082015160ff1660071415806142295750816060015160ff166014141580156142295750816060015160ff16601514155b15613e3b5760405162461bcd60e51b815260206004820152602760248201527f5769746e657443424f522e736b69703a20756e737570706f72746564206d616a6044820152666f72207479706560c81b6064820152608401610a68565b60008160200151826000015151808211156142be576040516363a056dd60e01b81526004810183905260248101829052604401610a68565b83516020850180518083016001015195509081906142db826158da565b8152505050505050919050565b6000816020015160026142fb9190614f5b565b82515180821115614329576040516363a056dd60e01b81526004810183905260248101829052604401610a68565b83516020850180516002818401810151965090916143478284614f5b565b9052509395945050505050565b6000816020015160046143679190614f5b565b82515180821115614395576040516363a056dd60e01b81526004810183905260248101829052604401610a68565b83516020850180516004818401810151965090916143478284614f5b565b6000816020015160086143c69190614f5b565b825151808211156143f4576040516363a056dd60e01b81526004810183905260248101829052604401610a68565b83516020850180516008818401810151965090916143478284614f5b565b60006018826060015160ff16101561442c57506000919050565b601c826060015160ff16101561445b576018826060015161444d9190615c08565b60ff166001901b9050919050565b6060820151604051636d785b1360e01b815260ff9091166004820152602401610a68565b50805461448b906150c4565b6000825580601f1061449b575050565b601f016020900490600052602060002090810190611aa89190614582565b60405180604001604052806145086040805160c081018252600080825260208083018290528284018290526060808401526080830182905283518085019094528184528301529060a082015290565b81526040805160a08101825260008082526020828101829052928201819052606080830191909152608082015291015290565b604080516101008101909152606060c08201908152600060e08301528190815260006020820181905260408201819052606082018190526080820181905260a09091015290565b5b80821115613e3b5760008155600101614583565b60005b838110156145b257818101518382015260200161459a565b50506000910152565b720dcdee840d2dae0d8cadacadce8cac8744060f606b1b8152600085516145e9816013850160208a01614597565b855190830190614600816013840160208a01614597565b8551910190614616816013840160208901614597565b845191019061462c816013840160208801614597565b016013019695505050505050565b6001600160a01b0381168114611aa857600080fd5b60006020828403121561466157600080fd5b8135610bc58161463a565b803562ffffff811681146139f257600080fd5b6000806040838503121561469257600080fd5b823591506146a26020840161466c565b90509250929050565b60008083601f8401126146bd57600080fd5b5081356001600160401b038111156146d457600080fd5b6020830191508360208260051b85010111156146ef57600080fd5b9250929050565b6000806020838503121561470957600080fd5b82356001600160401b0381111561471f57600080fd5b61472b858286016146ab565b90969095509350505050565b60006020828403121561474957600080fd5b5035919050565b60008151808452614768816020860160208601614597565b601f01601f19169290920160200192915050565b60018060a01b0381511682526001600160401b03602082015116602083015263ffffffff6040820151166040830152606081015160608301526000608082015160a0608085015261213260a0850182614750565b602081526000610bc5602083018461477c565b60018060a01b03815116825262ffffff60208201511660208301526001600160481b0360408201511660408301526000606082015160e0606085015261482c60e0850182614750565b90506080830151608085015260a083015160ff81511660a08601526001600160401b0360208201511660c0860152508091505092915050565b602081526000610bc560208301846147e3565b634e487b7160e01b600052602160045260246000fd5b6006811061489e5761489e614878565b9052565b60208101610b9f828461488e565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b03811182821017156148eb576148eb6148b0565b6040525050565b60006001600160401b0382111561490b5761490b6148b0565b5060051b60200190565b6000602080838503121561492857600080fd5b82356001600160401b0381111561493e57600080fd5b8301601f8101851361494f57600080fd5b803561495a816148f2565b60405161496782826148c6565b82815260059290921b830184019184810191508783111561498757600080fd5b928401925b828410156149ae57833561499f8161463a565b8252928401929084019061498c565b979650505050505050565b60006040828403121561240757600080fd5b600080606083850312156149de57600080fd5b823591506146a284602085016149b9565b60006001600160401b03821115614a0857614a086148b0565b50601f01601f191660200190565b600060208284031215614a2857600080fd5b81356001600160401b03811115614a3e57600080fd5b8201601f81018413614a4f57600080fd5b8035614a5a816149ef565b604051614a6782826148c6565b828152866020848601011115614a7c57600080fd5b8260208501602083013760009281016020019290925250949350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015614af257603f19888603018452614ae0858351614750565b94509285019290850190600101614ac4565b5092979650505050505050565b602081526000610bc56020830184614750565b6004811061489e5761489e614878565b6020808252825182820181905260009190848201906040850190845b81811015614b6157614b51838551614b12565b9284019291840191600101614b3e565b50909695505050505050565b60008083601f840112614b7f57600080fd5b5081356001600160401b03811115614b9657600080fd5b6020830191508360208285010111156146ef57600080fd5b60008060008060608587031215614bc457600080fd5b843593506020850135925060408501356001600160401b03811115614be857600080fd5b614bf487828801614b6d565b95989497509550505050565b60208101610b9f8284614b12565b61ffff81168114611aa857600080fd5b60008060408385031215614c3157600080fd5b823591506020830135614c4381614c0e565b809150509250929050565b60008060008060008060808789031215614c6757600080fd5b86356001600160401b0380821115614c7e57600080fd5b614c8a8a838b016146ab565b90985096506020890135915080821115614ca357600080fd5b50614cb089828a01614b6d565b979a9699509760408101359660609091013595509350505050565b60008060408385031215614cde57600080fd5b50508035926020909101359150565b60008060008060808587031215614d0357600080fd5b84356001600160401b03811115614d1957600080fd5b614d2587828801614b6d565b9095509350614d39905086602087016149b9565b9150614d476060860161466c565b905092959194509250565b60ff811061489e5761489e614878565b60208152614d74602082018351614d52565b600060208301516040808401526121326060840182614750565b602081526000825160406020840152614daa60608401826147e3565b90506020840151601f19848303016040850152613358828261477c565b803563ffffffff811681146139f257600080fd5b600080600080600060808688031215614df357600080fd5b85359450614e0360208701614dc7565b93506040860135925060608601356001600160401b03811115614e2557600080fd5b614e3188828901614b6d565b969995985093965092949392505050565b600080600060808486031215614e5757600080fd5b83359250614e6885602086016149b9565b9150614e766060850161466c565b90509250925092565b60008351614e91818460208801614597565b6101d160f51b9083019081528351614eb0816002840160208801614597565b01600201949350505050565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060ff831680614efb57614efb614ebc565b8060ff84160491505092915050565b60ff8181168382160190811115610b9f57610b9f614ed2565b600060ff831680614f3657614f36614ebc565b8060ff84160691505092915050565b634e487b7160e01b600052603260045260246000fd5b80820180821115610b9f57610b9f614ed2565b60008235607e19833603018112614f8457600080fd5b9190910192915050565b600082601f830112614f9f57600080fd5b8151614faa816149ef565b604051614fb782826148c6565b828152856020848701011115614fcc57600080fd5b613358836020830160208801614597565b600060208284031215614fef57600080fd5b81516001600160401b0381111561500557600080fd5b61213284828501614f8e565b8281526040602082015260006121326040830184614750565b60006020828403121561503c57600080fd5b610bc582614dc7565b6000808335601e1984360301811261505c57600080fd5b8301803591506001600160401b0382111561507657600080fd5b6020019150368190038213156146ef57600080fd5b6000825161509d818460208701614597565b743a20696e76616c6964207265706f7274206461746160581b920191825250601501919050565b600181811c908216806150d857607f821691505b60208210810361240757634e487b7160e01b600052602260045260246000fd5b6020808252825182820181905260009190848201906040850190845b81811015614b615783516001600160a01b031683529284019291840191600101615114565b8082028115828204841417610b9f57610b9f614ed2565b60ff81168114611aa857600080fd5b6001600160401b0381168114611aa857600080fd5b8381526020810183905260808101823561518d81615150565b60ff16604083015260208301356151a38161515f565b6001600160401b038116606084015250949350505050565b600080604083850312156151ce57600080fd5b82516151d98161463a565b60208401519092506001600160401b038111156151f557600080fd5b61520185828601614f8e565b9150509250929050565b6000602080838503121561521e57600080fd5b82516001600160401b0381111561523457600080fd5b8301601f8101851361524557600080fd5b8051615250816148f2565b60405161525d82826148c6565b82815260059290921b830184019184810191508783111561527d57600080fd5b928401925b828410156149ae5783516152958161463a565b82529284019290840190615282565b6000602082840312156152b657600080fd5b81516001600160e01b031981168114610bc557600080fd5b6000602082840312156152e057600080fd5b8151610bc58161463a565b6001600160a01b0384168152604060208201819052810182905260006001600160fb1b0383111561531b57600080fd5b8260051b8085606085013791909101606001949350505050565b6000602080838503121561534857600080fd5b82516001600160401b038082111561535f57600080fd5b818501915085601f83011261537357600080fd5b815161537e816148f2565b60405161538b82826148c6565b82815260059290921b84018501918581019150888311156153ab57600080fd5b8585015b838110156153e3578051858111156153c75760008081fd5b6153d58b89838a0101614f8e565b8452509186019186016153af565b5098975050505050505050565b60006020828403121561540257600080fd5b8151610bc581614c0e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600061213260208301848661540d565b60006020828403121561545c57600080fd5b5051919050565b60006020828403121561547557600080fd5b81518015158114610bc557600080fd5b601f8211156128cf576000816000526020600020601f850160051c810160208610156154ae5750805b601f850160051c820191505b818110156154cd578281556001016154ba565b505050505050565b6001600160401b038311156154ec576154ec6148b0565b615500836154fa83546150c4565b83615485565b6000601f841160018114615534576000851561551c5750838201355b600019600387901b1c1916600186901b17835561558e565b600083815260209020601f19861690835b828110156155655786850135825560209485019460019092019101615545565b50868210156155825760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b61559f818461488e565b6000602060406020840152600084546155b7816150c4565b80604087015260606001808416600081146155d957600181146155f557615625565b60ff19851660608a0152606084151560051b8a01019550615625565b89600052602060002060005b8581101561561c5781548b8201860152908301908801615601565b8a016060019650505b50939998505050505050505050565b60006020828403121561564657600080fd5b81516001600160401b038082111561565d57600080fd5b908301906040828603121561567157600080fd5b60405160408101818110838211171561568c5761568c6148b0565b604052825160ff811061569e57600080fd5b81526020830151828111156156b257600080fd5b6156be87828601614f8e565b60208301525095945050505050565b600060033d11156156e65760046000803e5060005160e01c5b90565b600060443d10156156f75790565b6040516003193d81016004833e81513d6001600160401b03816024840111818411171561572657505050505090565b828501915081518181111561573e5750505050505090565b843d87010160208285010111156157585750505050505090565b615767602082860101876148c6565b509095945050505050565b7002bb4ba3732ba22b93937b939a634b11d1607d1b81526000825161579e816011850160208701614597565b9190910160110192915050565b6001600160481b03818116838216019080821115611b9657611b96614ed2565b630375962160e11b8152600160e51b602080830191909152600160e01b604083015260ff600160e51b0160608301526001600160e01b0319608083015260001960a08301526001600160d41b031960c0830152600160df1b60e083015260ff60d81b6101008301528251600091610105919061584e908290848701908801614597565b9290920190910192915050565b86815260a06020820152600061587560a08301878961540d565b85604084015284606084015282810360808401526158938185614750565b9998505050505050505050565b6000602082840312156158b257600080fd5b8135610bc58161515f565b6000602082840312156158cf57600080fd5b8135610bc581615150565b6000600182016158ec576158ec614ed2565b5060010190565b81356158fe81615150565b60ff8116905081548160ff198216178355602084013561591d8161515f565b68ffffffffffffffff008160081b16836001600160481b03198416171784555050505050565b61ffff828116828216039080821115611b9657611b96614ed2565b600061ffff8084168061597357615973614ebc565b92169190910492915050565b61ffff818116838216019080821115611b9657611b96614ed2565b6001600160401b038181168382160280821691908281146159bd576159bd614ed2565b505092915050565b825160009082906020808701845b838110156159ef578151855293820193908201906001016159d3565b505050938152602001949350505050565b6000815160c084528051604060c0860152615a1f610100860182614750565b9050602082015160e086015260ff602085015116602086015260ff604085015116604086015260ff6060850151166060860152608084015191506001600160401b0380831660808701528060a08601511660a087015250809250505092915050565b8681526001600160401b0386166020820152846040820152836060820152615aac6080820184614d52565b60c060a08201526000615ac260c0830184615a00565b98975050505050505050565b8581526001600160401b038516602082015283604082015282606082015260a0608082015260006149ae60a0830184615a00565b81810381811115610b9f57610b9f614ed2565b81516001600160401b03811115615b2e57615b2e6148b0565b615b4281615b3c84546150c4565b84615485565b602080601f831160018114615b775760008415615b5f5750858301515b600019600386901b1c1916600185901b1785556154cd565b600085815260208120601f198616915b82811015615ba657888601518255948401946001909101908401615b87565b5085821015615bc45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160401b03818116838216019080821115611b9657611b96614ed2565b600082615c0357615c03614ebc565b500690565b60ff8281168282160390811115610b9f57610b9f614ed256fe5769746e65744f7261636c653a2063616c6c6261636b20657863656564656420676173206c696d69745769746e65744572726f72734c69623a20617373657274696f6e206661696c6564f595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e183f595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e184a2646970667358221220890bb7d2162a76b565566d8e22bbe4112656f2f8c3f43378cde1043c4176e27a64736f6c63430008190033",
  "deployedBytecode": "0x6080604052600436106102765760003560e01c80637b1039991161014f578063aeb2ffc1116100c1578063e30c39781161007a578063e30c397814610970578063e5a6b10f1461098e578063e900aa33146109c2578063ec5946db146109d5578063f2fde38b146109e8578063f61921b214610a08576102b3565b8063aeb2ffc114610892578063b207e730146108bf578063bff852fa146108df578063c45a0155146108f4578063c805dd0f14610927578063d5f394881461093c576102b3565b806393d5185c1161011357806393d5185c146107955780639cc56e67146107ca578063a3ff5b00146107ea578063a77fc1a4146107fd578063a9e954b91461082a578063adb7c3f71461085e576102b3565b80637b103999146106b35780637bbdb96e146106e75780637bd88218146107375780638d3d8b38146107575780638da5cb5b14610777576102b3565b80635001f3b5116101e85780636280bce8116101ac5780636280bce8146105d25780636b58960a146105f25780636f07abcc146106125780636fdaab7e1461063f578063715018a61461068957806379ba50971461069e576102b3565b80635001f3b5146104d557806352d1902d1461051c5780635479d9401461055057806354fd4d5014610583578063581f5094146105a5576102b3565b8063234fe6e31161023a578063234fe6e31461040857806328a78d9b146104355780633dc2b7a214610455578063439fab911461046857806345ea6c17146104885780634c9f72e3146104b5576102b3565b8063044ad7be1461032b57806305e742ef1461036057806306eb2c421461038e57806308b7e85e146103ae5780630aa4112a146103db576102b3565b366102b3576102b1604051806040016040528060158152602001741b9bc81d1c985b9cd9995c9cc81858d8d95c1d1959605a1b815250610a28565b005b3480156102bf57600080fd5b506102b16102d160003560f81c610a71565b6102e260ff60003560f01c16610a71565b6102f360ff60003560e81c16610a71565b61030460ff60003560e01c16610a71565b60405160200161031794939291906145bb565b604051602081830303815290604052610a28565b34801561033757600080fd5b5061034b61034636600461464f565b610b63565b60405190151581526020015b60405180910390f35b34801561036c57600080fd5b5061038061037b36600461467f565b610ba5565b604051908152602001610357565b34801561039a57600080fd5b506103806103a93660046146f6565b610bcc565b3480156103ba57600080fd5b506103ce6103c9366004614737565b610f36565b60405161035791906147d0565b3480156103e757600080fd5b506103fb6103f6366004614737565b6111cd565b6040516103579190614865565b34801561041457600080fd5b50610428610423366004614737565b611333565b60405161035791906148a2565b34801561044157600080fd5b506102b1610450366004614915565b61133e565b6103806104633660046149cb565b6113f7565b34801561047457600080fd5b506102b1610483366004614a16565b611501565b34801561049457600080fd5b506104a86104a33660046146f6565b6119f5565b6040516103579190614a9b565b3480156104c157600080fd5b506102b16104d0366004614915565b611a97565b3480156104e157600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610357565b34801561052857600080fd5b506103807f000000000000000000000000000000000000000000000000000000000000000081565b34801561055c57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061034b565b34801561058f57600080fd5b50610598611aab565b6040516103579190614aff565b3480156105b157600080fd5b506105c56105c03660046146f6565b611adb565b6040516103579190614b22565b3480156105de57600080fd5b506103806105ed366004614bae565b611b9d565b3480156105fe57600080fd5b5061034b61060d36600461464f565b611c6d565b34801561061e57600080fd5b5061063261062d366004614737565b611cc3565b6040516103579190614c00565b34801561064b57600080fd5b5061038061065a366004614737565b6000908152600080516020615c8c8339815191526020526040902054600160b81b90046001600160481b031690565b34801561069557600080fd5b506102b1611cce565b3480156106aa57600080fd5b506102b1611ce2565b3480156106bf57600080fd5b506105047f000000000000000000000000000000000000000000000000000000000000000081565b3480156106f357600080fd5b5060408051306020808301919091524682840152825180830384018152606090920190925280519101205b6040516001600160e01b03199091168152602001610357565b34801561074357600080fd5b50610380610752366004614c1e565b611d59565b34801561076357600080fd5b50610598610772366004614737565b611d6e565b34801561078357600080fd5b506000546001600160a01b0316610504565b3480156107a157600080fd5b506107b56107b0366004614c4e565b611e0c565b60408051928352602083019190915201610357565b3480156107d657600080fd5b506103806107e5366004614ccb565b612064565b6103806107f8366004614ced565b61213a565b34801561080957600080fd5b5061081d610818366004614737565b612294565b6040516103579190614d62565b34801561083657600080fd5b507f00000000000000000000000000000000000000000000000000000000000000003f610380565b34801561086a57600080fd5b5061071e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561089e57600080fd5b506108b26108ad366004614737565b61240d565b6040516103579190614d8e565b3480156108cb57600080fd5b506103806108da366004614ddb565b612643565b3480156108eb57600080fd5b5061059861275e565b34801561090057600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610504565b34801561093357600080fd5b50610380612795565b34801561094857600080fd5b506105047f000000000000000000000000000000000000000000000000000000000000000081565b34801561097c57600080fd5b506001546001600160a01b0316610504565b34801561099a57600080fd5b506105047f000000000000000000000000000000000000000000000000000000000000000081565b6103806109d0366004614e42565b6127b2565b6102b16109e3366004614737565b612871565b3480156109f457600080fd5b506102b1610a0336600461464f565b61296f565b348015610a1457600080fd5b506103ce610a23366004614737565b6129e0565b610a3061275e565b81604051602001610a42929190614e7f565b60408051601f198184030181529082905262461bcd60e51b8252610a6891600401614aff565b60405180910390fd5b604080516002808252818301909252606091600091906020820181803683370190505090506000610aa3601085614ee8565b610aae906030614f0a565b90506000610abd601086614f23565b610ac8906030614f0a565b905060398260ff161115610ae457610ae1600783614f0a565b91505b60398160ff161115610afe57610afb600782614f0a565b90505b8160f81b83600081518110610b1557610b15614f45565b60200101906001600160f81b031916908160001a9053508060f81b83600181518110610b4357610b43614f45565b60200101906001600160f81b031916908160001a90535091949350505050565b6001600160a01b03811660009081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e185602052604081205460ff165b92915050565b6000610bb18383612b02565b610bbb6020612bec565b610bc59190614f5b565b9392505050565b6000610c2e600080516020615c6c8339815191525b336000908152600291909101602090815260409182902054825180840190935260158352743ab730baba3437b934bd32b2103932b837b93a32b960591b9183019190915260ff1690612ca2565b60005b82811015610f25576001610c68858584818110610c5057610c50614f45565b9050602002810190610c629190614f6e565b35612cb4565b6003811115610c7957610c79614878565b14610d5e577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f848483818110610cb157610cb1614f45565b9050602002810190610cc39190614f6e565b6040516353e8875160e11b815290359073__$e6ff738751a05f257ae0de251e4d5c9673$__9063a7d10ea290610cfe90600190600401614c00565b600060405180830381865af4158015610d1b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d439190810190614fdd565b604051610d51929190615011565b60405180910390a1610f1d565b838382818110610d7057610d70614f45565b9050602002810190610d829190614f6e565b610d9390604081019060200161502a565b63ffffffff161580610dd65750838382818110610db257610db2614f45565b9050602002810190610dc49190614f6e565b610dd2906060810190615045565b1590505b15610e54577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f848483818110610e0e57610e0e614f45565b9050602002810190610e209190614f6e565b35610e2961275e565b604051602001610e39919061508b565b60408051601f1981840301815290829052610d519291615011565b610f10848483818110610e6957610e69614f45565b9050602002810190610e7b9190614f6e565b35858584818110610e8e57610e8e614f45565b9050602002810190610ea09190614f6e565b610eb190604081019060200161502a565b868685818110610ec357610ec3614f45565b9050602002810190610ed59190614f6e565b60400135878786818110610eeb57610eeb614f45565b9050602002810190610efd9190614f6e565b610f0b906060810190615045565b612d35565b610f1a9083614f5b565b91505b600101610c31565b508015610b9f57610b9f3382612f14565b6040805160a081018252600080825260208201819052918101829052606080820192909252608081019190915281600380610f7083612cb4565b6003811115610f8157610f81614878565b14611010576040516353e8875160e11b815261100b9073__$e6ff738751a05f257ae0de251e4d5c9673$__9063a7d10ea290610fc1908590600401614c00565b600060405180830381865af4158015610fde573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110069190810190614fdd565b610a28565b6111c6565b8361105961101d82612f4a565b546040805180820190915260118152703737ba103a3432903932b8bab2b9ba32b960791b60208201526001600160a01b03909116331490612ca2565b61106285612f4a565b6040805160a0810182526004830180546001600160a01b0381168352600160a01b81046001600160401b03166020840152600160e01b900463ffffffff169282019290925260058301546060820152600690920180546080840191906110c7906150c4565b80601f01602080910402602001604051908101604052809291908181526020018280546110f3906150c4565b80156111405780601f1061111557610100808354040283529160200191611140565b820191906000526020600020905b81548152906001019060200180831161112357829003601f168201915b5050505050815250509350611160600080516020615c6c83398151915290565b600086815260019182016020526040812081815591829082906111859083018261447f565b506000600282018190556003909101805468ffffffffffffffffff191690556004830181815560058401829055906111c0600685018261447f565b50505050505b5050919050565b6112116040805160c081018252600080825260208083018290528284018290526060808401526080830182905283518085019094528184528301529060a082015290565b61121a82612f4a565b6040805160c08101825282546001600160a01b0381168252600160a01b810462ffffff166020830152600160b81b90046001600160481b031691810191909152600182018054919291606084019190611272906150c4565b80601f016020809104026020016040519081016040528092919081815260200182805461129e906150c4565b80156112eb5780601f106112c0576101008083540402835291602001916112eb565b820191906000526020600020905b8154815290600101906020018083116112ce57829003601f168201915b5050509183525050600282015460208083019190915260408051808201825260039094015460ff8116855261010090046001600160401b031691840191909152015292915050565b6000610b9f82612f68565b611346613080565b60005b81518110156113bc57600082828151811061136657611366614f45565b602002602001015190506000611387600080516020615c6c83398151915290565b6001600160a01b0392909216600090815260029092016020526040909120805460ff1916911515919091179055600101611349565b507f646436560d9757cb3c0f01da0f62642c6040b00c9a80685f94ef1a7725cad5f1816040516113ec91906150f8565b60405180910390a150565b60006114033a84612064565b61143c81345b1015604051806040016040528060138152602001721a5b9cdd59999a58da595b9d081c995dd85c99606a1b815250612ca2565b61147a61144a82600a615139565b3411156040518060400160405280600f81526020016e1d1bdbc81b5d58da081c995dd85c99608a1b815250612ca2565b826114b0611487826130ad565b6040518060400160405280600b81526020016a696e76616c696420534c4160a81b815250612ca2565b6114bc85856000613106565b92507ffb94adf28ab7e538d2691d90927f622cbc1100eae6afec58052efdee6c98a6168334866040516114f193929190615174565b60405180910390a1505092915050565b6000546001600160a01b03166060816115545760608380602001905181019061152a91906151bb565b9093509050611538836131da565b8080602001905181019061154c919061520b565b9150506115ae565b611597826001600160a01b0316336001600160a01b0316146040518060400160405280600d81526020016c3737ba103a34329037bbb732b960991b815250612ca2565b828060200190518101906115ab919061520b565b90505b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe541580159061161f57507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe547f00000000000000000000000000000000000000000000000000000000000000003f145b15611655576116556040518060400160405280601081526020016f185b1c9958591e481d5c19dc9859195960821b815250610a28565b7f00000000000000000000000000000000000000000000000000000000000000003f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe55604080518082019091526012815271696e6578697374656e7420666163746f727960701b60208201526116f9907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b151590612ca2565b6117cc630db7c58b60e41b6001600160e01b0319167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663adb7c3f76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561176c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179091906152a4565b6001600160e01b0319161460405180604001604052806013815260200172756e636f6d706c69616e7420666163746f727960681b815250612ca2565b611953306001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166346d1d21a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185b91906152ce565b6001600160a01b031614801561192357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191891906152ce565b6001600160a01b0316145b60405180604001604052806012815260200171646973636f7264616e7420666163746f727960701b815250612ca2565b61195c816131f3565b7f00000000000000000000000000000000000000000000000000000000000000003f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03167fe73e754121f0bad1327816970101955bfffdf53d270ac509d777c25be070d7f66119db611aab565b6040516119e89190614aff565b60405180910390a4505050565b6040516251ca3160e21b815260609073__$e6ff738751a05f257ae0de251e4d5c9673$__9063014728c490611a52907f000000000000000000000000000000000000000000000000000000000000000090879087906004016152eb565b600060405180830381865af4158015611a6f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bc59190810190615335565b611a9f613080565b611aa8816131f3565b50565b6060611ad67f0000000000000000000000000000000000000000000000000000000000000000613299565b905090565b6060816001600160401b03811115611af557611af56148b0565b604051908082528060200260200182016040528015611b1e578160200160208202803683370190505b50905060005b82811015611b9657611b4d848483818110611b4157611b41614f45565b90506020020135612cb4565b828281518110611b5f57611b5f614f45565b60200260200101906003811115611b7857611b78614878565b90816003811115611b8b57611b8b614878565b905250600101611b24565b5092915050565b6000611bb6600080516020615c6c833981519152610be1565b84600180611bc383612cb4565b6003811115611bd457611bd4614878565b14611c19576040516353e8875160e11b8152611c149073__$e6ff738751a05f257ae0de251e4d5c9673$__9063a7d10ea290610fc1908590600401614c00565b611c63565b604080518082019091526016815275726573756c742063616e6e6f7420626520656d70747960501b6020820152611c539085151590612ca2565b611c60874288888861333d565b92505b5050949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000008015610b9f5750816001600160a01b0316611cb36000546001600160a01b031690565b6001600160a01b03161492915050565b6000610b9f82612cb4565b611cd6613080565b611ce060006131da565b565b60015433906001600160a01b03168114611d505760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610a68565b611aa8816131da565b6000611d658383613361565b610bbb83612bec565b6060611d79826133f9565b6002018054611d87906150c4565b80601f0160208091040260200160405190810160405280929190818152602001828054611db3906150c4565b8015611e005780601f10611dd557610100808354040283529160200191611e00565b820191906000526020600020905b815481529060010190602001808311611de357829003601f168201915b50505050509050919050565b60008060005b87811015611fbd576001611e318a8a84818110611b4157611b41614f45565b6003811115611e4257611e42614878565b03611fb5576000611e6a8a8a84818110611e5e57611e5e614f45565b90506020020135612f4a565b8054909150600160a01b900462ffffff1615611eaa578054611e99908790600160a01b900462ffffff16612b02565b611ea39084614f5b565b9250611f68565b600281015415611f5057611e99867f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166376b78a0684600201546040518263ffffffff1660e01b8152600401611f0a91815260200190565b602060405180830381865afa158015611f27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4b91906153f0565b613361565b611f5b866000613361565b611f659084614f5b565b92505b84611f758260030161341a565b6001600160401b0316611f889190615139565b611f929084614f5b565b8154909350611fb190600160b81b90046001600160481b031685614f5b565b9350505b600101611e12565b506040516324ca470760e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906349948e0e9061200c9089908990600401615436565b602060405180830381865afa158015612029573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204d919061544a565b6120579082614f5b565b9050965096945050505050565b604051633b5bc50360e11b81526004810182905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906376b78a0690602401602060405180830381865afa1580156120ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f291906153f0565b905061212860008261ffff16116040518060400160405280600b81526020016a1a5b9d985b1a590814905160aa1b815250612ca2565b6121328482611d59565b949350505050565b600033826121f4823b158015906121b557506040516323d0872b60e11b81523060048201526001600160a01b038416906347a10e56906024015b602060405180830381865afa158015612191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b59190615463565b80156121c6575060008262ffffff16115b6040518060400160405280601081526020016f696e76616c69642063616c6c6261636b60801b815250612ca2565b6121ff3a5b85610ba5565b6122098134611409565b61221761144a82600a615139565b85612224611487826130ad565b61223060008888613106565b9450888861223d87612f4a565b6001019161224c9190836154d5565b507ffb94adf28ab7e538d2691d90927f622cbc1100eae6afec58052efdee6c98a61685348960405161228093929190615174565b60405180910390a150505050949350505050565b60408051808201909152600081526060602082015260006122b483612f68565b905073__$ef6db950c2506c2808ebbf3a91851f2b43$__63a62b8462826122da866133f9565b6002016040518363ffffffff1660e01b81526004016122fa929190615595565b600060405180830381865af492505050801561233857506040513d6000823e601f3d908101601f191682016040526123359190810190615634565b60015b610bc5576123446156cd565b806308c379a0036123a057506123586156e9565b8061236357506123a2565b604080518082019091528060008152602001826040516020016123869190615772565b60408051601f198184030181529190529052949350505050565b505b3d8080156123cc576040519150601f19603f3d011682016040523d82523d6000602084013e6123d1565b606091505b50604080518082019091528060008152602001604051806060016040528060218152602001615c4b602191399052949350505050565b50919050565b6124156144b9565b6000828152600080516020615c8c83398151915260205260409081902081516101008101835281546001600160a01b038116938201938452600160a01b810462ffffff166060830152600160b81b90046001600160481b03166080820152600182018054919384929091849160a085019190612490906150c4565b80601f01602080910402602001604051908101604052809291908181526020018280546124bc906150c4565b80156125095780601f106124de57610100808354040283529160200191612509565b820191906000526020600020905b8154815290600101906020018083116124ec57829003601f168201915b5050509183525050600282015460208083019190915260408051808201825260039094015460ff8116855261010090046001600160401b039081168584015292810193909352928452815160a0810183526004860180546001600160a01b0381168352600160a01b810490931682860152600160e01b90920463ffffffff1692810192909252600585015460608301526006850180549490930193919290916080840191906125b7906150c4565b80601f01602080910402602001604051908101604052809291908181526020018280546125e3906150c4565b80156126305780601f1061260557610100808354040283529160200191612630565b820191906000526020600020905b81548152906001019060200180831161261357829003601f168201915b5050509190925250505090525092915050565b600061265c600080516020615c6c833981519152610be1565b8560018061266983612cb4565b600381111561267a5761267a614878565b146126bf576040516353e8875160e11b81526126ba9073__$e6ff738751a05f257ae0de251e4d5c9673$__9063a7d10ea290610fc1908590600401614c00565b612753565b61270960008863ffffffff161180156126de5750428863ffffffff1611155b6040518060400160405280600d81526020016c06261642074696d657374616d7609c1b815250612ca2565b604080518082019091526016815275726573756c742063616e6e6f7420626520656d70747960501b60208201526127439085151590612ca2565b612750888888888861333d565b92505b505095945050505050565b60408051808201909152601981527f5769746e65744f7261636c65547275737461626c654f766d3200000000000000602082015290565b6000600080516020615c6c83398151915254611ad6906001614f5b565b600033826127f0823b158015906121b557506040516323d0872b60e11b81523060048201526001600160a01b038416906347a10e5690602401612174565b6127f93a6121f9565b6128038134611409565b61281161144a82600a615139565b8561281e611487826130ad565b612829888888613106565b94507ffb94adf28ab7e538d2691d90927f622cbc1100eae6afec58052efdee6c98a61685348960405161285e93929190615174565b60405180910390a1505050509392505050565b8060018061287e83612cb4565b600381111561288f5761288f614878565b146128d4576040516353e8875160e11b81526128cf9073__$e6ff738751a05f257ae0de251e4d5c9673$__9063a7d10ea290610fc1908590600401614c00565b505050565b60006128df84612f4a565b90503481548290601790612904908490600160b81b90046001600160481b03166157ab565b82546101009290920a6001600160481b03818102199093169183160217909155825460408051888152600160b81b90920490921660208201527fdcced240139c3504c690fc16a776a5a4da3d5d1c139539e75037554ddc21e55b92500160405180910390a150505050565b612977613080565b600180546001600160a01b0383166001600160a01b031990911681179091556129a86000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6040805160a0810182526000808252602082018190529181018290526060808201929092526080810191909152612a16826133f9565b6040805160a08101825282546001600160a01b0381168252600160a01b81046001600160401b03166020830152600160e01b900463ffffffff169181019190915260018201546060820152600282018054919291608084019190612a79906150c4565b80601f0160208091040260200160405190810160405280929190818152602001828054612aa5906150c4565b8015612af25780601f10612ac757610100808354040283529160200191612af2565b820191906000526020600020905b815481529060010190602001808311612ad557829003601f168201915b5050505050815250509050919050565b600080612b307f00000000000000000000000000000000000000000000000000000000000000006003615139565b612b5a907f0000000000000000000000000000000000000000000000000000000000000000614f5b565b9050808362ffffff161080612b9c575080612b9a62ffffff85167f0000000000000000000000000000000000000000000000000000000000000000614f5b565b105b15612bb357612bab8185615139565b915050610b9f565b612be262ffffff84167f0000000000000000000000000000000000000000000000000000000000000000614f5b565b612bab9085615139565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166349948e0e612c268461344a565b604051602001612c3691906157cb565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401612c619190614aff565b602060405180830381865afa158015612c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9f919061544a565b81612cb057612cb081610a28565b5050565b6000818152600080516020615c8c833981519152602052604081206004810154600160e01b900463ffffffff1615612d13576004810154600160a01b90046001600160401b03164310612d0a5750600392915050565b50600292915050565b80546001600160a01b031615612d2c5750600192915050565b50600092915050565b600080612d4187612f4a565b80546001600160b81b038116808355600160b81b9091046001600160481b03169350909150600160a01b900462ffffff1615612e8d57805460009081908190612db0908b9063ffffffff8c16908b908b908b906001600160a01b03811690600160a01b900462ffffff16613506565b9250925092508115612e0057604080518b81523a602082015280820185905290517f37fc320f2d5c58a36c657d3b047384d42550bcc0d9781d13a7d97f8a97c2370c9181900360600190a1612e6a565b7f794f0625cb473a6fc2bbc46c87577b8e719f074c42f7fe02abdf08e7435b1d8d8a88883a876000875111612e4d57604051806060016040528060298152602001615c2260299139612e4f565b865b604051612e619695949392919061585b565b60405180910390a15b612e858a8a8a6040518060200160405280600081525061389c565b505050612f0a565b7f1fd7bc07c18ac1c4f6d3111c704cd1b4c29b9f7980b7c5a9a2fddeef29d6c277873a6040805192835260208301919091520160405180910390a1612f0a87878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061389c92505050565b5095945050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156128cf573d6000803e3d6000fd5b6000908152600080516020615c8c8339815191526020526040902090565b600080612f7483612cb4565b90506003816003811115612f8a57612f8a614878565b0361303c576000838152600080516020615c8c8339815191526020526040812060060180549091908290612fbd906150c4565b90501115613032578054601b60fb1b908290600090612fdb906150c4565b8110612fe957612fe9614f45565b8154600116156130085790600052602060002090602091828204019190065b9054901a600160f81b026001600160f81b03191614613028576002612132565b6003949350505050565b5060059392505050565b600181600381111561305057613050614878565b0361305e5750600192915050565b600281600381111561307257613072614878565b03612d2c5750600492915050565b6000546001600160a01b03163314611ce05760405163118cdaa760e01b8152336004820152602401610a68565b6000806130c060408401602085016158a0565b6001600160401b03161180156130e5575060006130e060208401846158bd565b60ff16115b8015610b9f5750607f6130fb60208401846158bd565b60ff16111592915050565b6000600080516020615c6c8339815191528054600090613125906158da565b91829055509050600061313782612f4a565b805460408051808201909152600e81526d185b1c9958591e481c1bdcdd195960921b6020820152919250613177916001600160a01b039091161590612ca2565b8054346001600160481b0316600160b81b026001600160b81b03199091163362ffffff60a01b191617600160a01b62ffffff861602176001600160b81b03161781556002810185905583600382016131cf82826158f3565b905050509392505050565b600180546001600160a01b0319169055611aa881613969565b60005b815181101561326957600082828151811061321357613213614f45565b602002602001015190506001613234600080516020615c6c83398151915290565b6001600160a01b0392909216600090815260029092016020526040909120805460ff19169115159190911790556001016131f6565b507f4d570ee36dec878006609360d34ac8d6a0b68d521871ae15a407b6340877ca01816040516113ec91906150f8565b606060006132a6836139b9565b6001600160401b038111156132bd576132bd6148b0565b6040519080825280601f01601f1916602001820160405280156132e7576020820181803683370190505b50905060005b8151811015611b965783816020811061330857613308614f45565b1a60f81b82828151811061331e5761331e614f45565b60200101906001600160f81b031916908160001a9053506001016132ed565b600061334c8686868686612d35565b90506133583382612f14565b95945050505050565b6000602061ffff83161561337f5761337a600184615943565b613382565b60005b61338c919061595e565b61339790600461597f565b6133c59061ffff167f0000000000000000000000000000000000000000000000000000000000000000615139565b6133ef907f0000000000000000000000000000000000000000000000000000000000000000614f5b565b610bc59084615139565b6000908152600080516020615c8c8339815191526020526040902060040190565b805460009061342d9060ff166003614f0a565b8254610b9f9160ff169061010090046001600160401b031661599a565b60606000602061ffff84160461ffff166001600160401b03811115613471576134716148b0565b60405190808252806020026020018201604052801561349a578160200160208202803683370190505b50905060005b81518110156134d1576000198282815181106134be576134be614f45565b60209081029190910101526001016134a0565b506040516134ef9082906000196001601f88161b01906020016159c5565b604051602081830303815290604052915050919050565b60008060605a9250601b60fb1b878760008161352457613524614f45565b9050013560f81c60f81b6001600160f81b0319160361377457600061358661358189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506139f792505050565b613a1c565b90506002815110156136ad57856001600160a01b03166363febc9c868d8d8d4360006040518060c00160405280604051806040016040528060405180602001604052806000815250815260200160008152508152602001600060ff168152602001600060ff168152602001600060ff16815260200160006001600160401b0316815260200160006001600160401b03168152506040518863ffffffff1660e01b815260040161363a96959493929190615a81565b600060405180830381600088803b15801561365457600080fd5b5087f193505050508015613666575060015b6136a4576136726156cd565b806308c379a00361369857506136866156e9565b80613691575061369a565b915061376e565b505b3d6000803e3d6000fd5b6001925061376e565b856001600160a01b03166363febc9c868d8d8d436136e4886000815181106136d7576136d7614f45565b6020026020010151613bcc565b60fe8111156136f5576136f5614878565b8860008151811061370857613708614f45565b60200260200101516040518863ffffffff1660e01b815260040161373196959493929190615a81565b600060405180830381600088803b15801561374b57600080fd5b5087f19350505050801561375d575060015b613769576136726156cd565b600192505b50613882565b846001600160a01b031663bcc6307b858c8c8c436137c78e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506139f792505050565b6040518763ffffffff1660e01b81526004016137e7959493929190615ace565b600060405180830381600088803b15801561380157600080fd5b5087f193505050508015613813575060015b61387d5761381f6156cd565b806308c379a00361384557506138336156e9565b8061383e5750613847565b9050613882565b505b3d808015613871576040519150601f19603f3d011682016040523d82523d6000602084013e613876565b606091505b5050613882565b600191505b5a61388d9084615b02565b92509750975097945050505050565b6040518060a00160405280336001600160a01b03168152602001436001600160401b031681526020018463ffffffff168152602001838152602001828152506138e485612f4a565b81516004820180546020850151604086015163ffffffff16600160e01b026001600160e01b036001600160401b03909216600160a01b026001600160e01b03199093166001600160a01b039095169490941791909117169190911781556060830151600583015560808301519091600601906139609082615b15565b50505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b60208110156139f2578181602081106139d7576139d7614f45565b1a60f81b6001600160f81b031916156139f2576001016139bc565b919050565b6139ff61453b565b6040805180820190915282815260006020820152610bc581613c2f565b60608160048060ff16826040015160ff1614613a5c57604080830151905161800560e51b815260ff91821660048201529082166024820152604401610a68565b6000613a7085600001518660600151613d4f565b9050613a7d816001615bd4565b6001600160401b03166001600160401b03811115613a9d57613a9d6148b0565b604051908082528060200260200182016040528015613ad657816020015b613ac361453b565b815260200190600190039081613abb5790505b50935060005b816001600160401b0316811015613b9c57613af686613e17565b9550613b0186613e3f565b858281518110613b1357613b13614f45565b6020026020010181905250600460ff16866040015160ff1603613b6c576000613b3b87613a1c565b90508060018251613b4c9190615b02565b81518110613b5c57613b5c614f45565b6020026020010151965050613b94565b600560ff16866040015160ff1603613b89576000613b3b87613ed7565b613b92866140c1565b505b600101613adc565b508484826001600160401b031681518110613bb957613bb9614f45565b6020026020010181905250505050919050565b60008160008060ff16826040015160ff1614613c0c57604080830151905161800560e51b815260ff91821660048201529082166024820152604401610a68565b613c1e84600001518560600151613d4f565b6001600160401b0316949350505050565b613c3761453b565b8151518290600003613c5c576040516309036d4760e21b815260040160405180910390fd5b600060ff816001600160401b038160015b8015613cdf57613c7c89614286565b955081613c88816158da565b6007600589901c169650601f881695509250506005198501613cd7576020890151613cb38a86613d4f565b9350808a60200151613cc59190615b02565b613ccf9084614f5b565b925050613c6d565b506000613c6d565b600760ff86161115613d095760405163bd2ac87960e01b815260ff86166004820152602401610a68565b506040805160c08101825298895260ff95861660208a015293851693880193909352921660608601526001600160401b0390811660808601521660a08401525090919050565b600060188260ff161015613d67575060ff8116610b9f565b8160ff16601803613d8557613d7b83614286565b60ff169050610b9f565b8160ff16601903613da457613d99836142e8565b61ffff169050610b9f565b8160ff16601a03613dc557613db883614354565b63ffffffff169050610b9f565b8160ff16601b03613de057613dd9836143b3565b9050610b9f565b8160ff16601f03613df957506001600160401b03610b9f565b604051636d785b1360e01b815260ff83166004820152602401610a68565b613e1f61453b565b81518051516020909101511015613e3b578151610b9f90613c2f565b5090565b613e4761453b565b6040805160c081018083528451610100830184526060909152600060e0830152825180840190935280518352602090810151908301529081908152602001836020015160ff168152602001836040015160ff168152602001836060015160ff16815260200183608001516001600160401b031681526020018360a001516001600160401b03168152509050919050565b60608160058060ff16826040015160ff1614613f1757604080830151905161800560e51b815260ff91821660048201529082166024820152604401610a68565b6000613f2b85600001518660600151613d4f565b613f3690600261599a565b9050613f43816001615bd4565b6001600160401b03166001600160401b03811115613f6357613f636148b0565b604051908082528060200260200182016040528015613f9c57816020015b613f8961453b565b815260200190600190039081613f815790505b50935060005b816001600160401b0316811015613b9c57613fbc86613e17565b9550613fc786613e3f565b858281518110613fd957613fd9614f45565b6020908102919091010152613fef600282615bf4565b1580156140045750604086015160ff16600314155b1561403257604080870151905161800560e51b815260ff909116600482015260036024820152604401610a68565b604086015160ff166004148061404f5750604086015160ff166005145b156140ae57604086015160009060ff166004146140745761406f87613ed7565b61407d565b61407d87613a1c565b9050806001825161408e9190615b02565b8151811061409e5761409e614f45565b60200260200101519650506140b9565b6140b7866140c1565b505b600101613fa2565b6140c961453b565b604082015160ff1615806140e45750604082015160ff166001145b8061411d5750604082015160ff16600714801561410957506019826060015160ff1610155b801561411d5750601b826060015160ff1611155b156141505761412b82614412565b6001600160401b031682600001516020018181516141499190614f5b565b9052505090565b604082015160ff166003148061416d5750604082015160ff166002145b156141b157600061418683600001518460600151613d4f565b9050806001600160401b031683600001516020018181516141a79190614f5b565b905250613e3b9050565b604082015160ff16600414806141ce5750604082015160ff166005145b156141f7576141e582600001518360600151613d4f565b6001600160401b031660808301525090565b604082015160ff1660071415806142295750816060015160ff166014141580156142295750816060015160ff16601514155b15613e3b5760405162461bcd60e51b815260206004820152602760248201527f5769746e657443424f522e736b69703a20756e737570706f72746564206d616a6044820152666f72207479706560c81b6064820152608401610a68565b60008160200151826000015151808211156142be576040516363a056dd60e01b81526004810183905260248101829052604401610a68565b83516020850180518083016001015195509081906142db826158da565b8152505050505050919050565b6000816020015160026142fb9190614f5b565b82515180821115614329576040516363a056dd60e01b81526004810183905260248101829052604401610a68565b83516020850180516002818401810151965090916143478284614f5b565b9052509395945050505050565b6000816020015160046143679190614f5b565b82515180821115614395576040516363a056dd60e01b81526004810183905260248101829052604401610a68565b83516020850180516004818401810151965090916143478284614f5b565b6000816020015160086143c69190614f5b565b825151808211156143f4576040516363a056dd60e01b81526004810183905260248101829052604401610a68565b83516020850180516008818401810151965090916143478284614f5b565b60006018826060015160ff16101561442c57506000919050565b601c826060015160ff16101561445b576018826060015161444d9190615c08565b60ff166001901b9050919050565b6060820151604051636d785b1360e01b815260ff9091166004820152602401610a68565b50805461448b906150c4565b6000825580601f1061449b575050565b601f016020900490600052602060002090810190611aa89190614582565b60405180604001604052806145086040805160c081018252600080825260208083018290528284018290526060808401526080830182905283518085019094528184528301529060a082015290565b81526040805160a08101825260008082526020828101829052928201819052606080830191909152608082015291015290565b604080516101008101909152606060c08201908152600060e08301528190815260006020820181905260408201819052606082018190526080820181905260a09091015290565b5b80821115613e3b5760008155600101614583565b60005b838110156145b257818101518382015260200161459a565b50506000910152565b720dcdee840d2dae0d8cadacadce8cac8744060f606b1b8152600085516145e9816013850160208a01614597565b855190830190614600816013840160208a01614597565b8551910190614616816013840160208901614597565b845191019061462c816013840160208801614597565b016013019695505050505050565b6001600160a01b0381168114611aa857600080fd5b60006020828403121561466157600080fd5b8135610bc58161463a565b803562ffffff811681146139f257600080fd5b6000806040838503121561469257600080fd5b823591506146a26020840161466c565b90509250929050565b60008083601f8401126146bd57600080fd5b5081356001600160401b038111156146d457600080fd5b6020830191508360208260051b85010111156146ef57600080fd5b9250929050565b6000806020838503121561470957600080fd5b82356001600160401b0381111561471f57600080fd5b61472b858286016146ab565b90969095509350505050565b60006020828403121561474957600080fd5b5035919050565b60008151808452614768816020860160208601614597565b601f01601f19169290920160200192915050565b60018060a01b0381511682526001600160401b03602082015116602083015263ffffffff6040820151166040830152606081015160608301526000608082015160a0608085015261213260a0850182614750565b602081526000610bc5602083018461477c565b60018060a01b03815116825262ffffff60208201511660208301526001600160481b0360408201511660408301526000606082015160e0606085015261482c60e0850182614750565b90506080830151608085015260a083015160ff81511660a08601526001600160401b0360208201511660c0860152508091505092915050565b602081526000610bc560208301846147e3565b634e487b7160e01b600052602160045260246000fd5b6006811061489e5761489e614878565b9052565b60208101610b9f828461488e565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b03811182821017156148eb576148eb6148b0565b6040525050565b60006001600160401b0382111561490b5761490b6148b0565b5060051b60200190565b6000602080838503121561492857600080fd5b82356001600160401b0381111561493e57600080fd5b8301601f8101851361494f57600080fd5b803561495a816148f2565b60405161496782826148c6565b82815260059290921b830184019184810191508783111561498757600080fd5b928401925b828410156149ae57833561499f8161463a565b8252928401929084019061498c565b979650505050505050565b60006040828403121561240757600080fd5b600080606083850312156149de57600080fd5b823591506146a284602085016149b9565b60006001600160401b03821115614a0857614a086148b0565b50601f01601f191660200190565b600060208284031215614a2857600080fd5b81356001600160401b03811115614a3e57600080fd5b8201601f81018413614a4f57600080fd5b8035614a5a816149ef565b604051614a6782826148c6565b828152866020848601011115614a7c57600080fd5b8260208501602083013760009281016020019290925250949350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015614af257603f19888603018452614ae0858351614750565b94509285019290850190600101614ac4565b5092979650505050505050565b602081526000610bc56020830184614750565b6004811061489e5761489e614878565b6020808252825182820181905260009190848201906040850190845b81811015614b6157614b51838551614b12565b9284019291840191600101614b3e565b50909695505050505050565b60008083601f840112614b7f57600080fd5b5081356001600160401b03811115614b9657600080fd5b6020830191508360208285010111156146ef57600080fd5b60008060008060608587031215614bc457600080fd5b843593506020850135925060408501356001600160401b03811115614be857600080fd5b614bf487828801614b6d565b95989497509550505050565b60208101610b9f8284614b12565b61ffff81168114611aa857600080fd5b60008060408385031215614c3157600080fd5b823591506020830135614c4381614c0e565b809150509250929050565b60008060008060008060808789031215614c6757600080fd5b86356001600160401b0380821115614c7e57600080fd5b614c8a8a838b016146ab565b90985096506020890135915080821115614ca357600080fd5b50614cb089828a01614b6d565b979a9699509760408101359660609091013595509350505050565b60008060408385031215614cde57600080fd5b50508035926020909101359150565b60008060008060808587031215614d0357600080fd5b84356001600160401b03811115614d1957600080fd5b614d2587828801614b6d565b9095509350614d39905086602087016149b9565b9150614d476060860161466c565b905092959194509250565b60ff811061489e5761489e614878565b60208152614d74602082018351614d52565b600060208301516040808401526121326060840182614750565b602081526000825160406020840152614daa60608401826147e3565b90506020840151601f19848303016040850152613358828261477c565b803563ffffffff811681146139f257600080fd5b600080600080600060808688031215614df357600080fd5b85359450614e0360208701614dc7565b93506040860135925060608601356001600160401b03811115614e2557600080fd5b614e3188828901614b6d565b969995985093965092949392505050565b600080600060808486031215614e5757600080fd5b83359250614e6885602086016149b9565b9150614e766060850161466c565b90509250925092565b60008351614e91818460208801614597565b6101d160f51b9083019081528351614eb0816002840160208801614597565b01600201949350505050565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060ff831680614efb57614efb614ebc565b8060ff84160491505092915050565b60ff8181168382160190811115610b9f57610b9f614ed2565b600060ff831680614f3657614f36614ebc565b8060ff84160691505092915050565b634e487b7160e01b600052603260045260246000fd5b80820180821115610b9f57610b9f614ed2565b60008235607e19833603018112614f8457600080fd5b9190910192915050565b600082601f830112614f9f57600080fd5b8151614faa816149ef565b604051614fb782826148c6565b828152856020848701011115614fcc57600080fd5b613358836020830160208801614597565b600060208284031215614fef57600080fd5b81516001600160401b0381111561500557600080fd5b61213284828501614f8e565b8281526040602082015260006121326040830184614750565b60006020828403121561503c57600080fd5b610bc582614dc7565b6000808335601e1984360301811261505c57600080fd5b8301803591506001600160401b0382111561507657600080fd5b6020019150368190038213156146ef57600080fd5b6000825161509d818460208701614597565b743a20696e76616c6964207265706f7274206461746160581b920191825250601501919050565b600181811c908216806150d857607f821691505b60208210810361240757634e487b7160e01b600052602260045260246000fd5b6020808252825182820181905260009190848201906040850190845b81811015614b615783516001600160a01b031683529284019291840191600101615114565b8082028115828204841417610b9f57610b9f614ed2565b60ff81168114611aa857600080fd5b6001600160401b0381168114611aa857600080fd5b8381526020810183905260808101823561518d81615150565b60ff16604083015260208301356151a38161515f565b6001600160401b038116606084015250949350505050565b600080604083850312156151ce57600080fd5b82516151d98161463a565b60208401519092506001600160401b038111156151f557600080fd5b61520185828601614f8e565b9150509250929050565b6000602080838503121561521e57600080fd5b82516001600160401b0381111561523457600080fd5b8301601f8101851361524557600080fd5b8051615250816148f2565b60405161525d82826148c6565b82815260059290921b830184019184810191508783111561527d57600080fd5b928401925b828410156149ae5783516152958161463a565b82529284019290840190615282565b6000602082840312156152b657600080fd5b81516001600160e01b031981168114610bc557600080fd5b6000602082840312156152e057600080fd5b8151610bc58161463a565b6001600160a01b0384168152604060208201819052810182905260006001600160fb1b0383111561531b57600080fd5b8260051b8085606085013791909101606001949350505050565b6000602080838503121561534857600080fd5b82516001600160401b038082111561535f57600080fd5b818501915085601f83011261537357600080fd5b815161537e816148f2565b60405161538b82826148c6565b82815260059290921b84018501918581019150888311156153ab57600080fd5b8585015b838110156153e3578051858111156153c75760008081fd5b6153d58b89838a0101614f8e565b8452509186019186016153af565b5098975050505050505050565b60006020828403121561540257600080fd5b8151610bc581614c0e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600061213260208301848661540d565b60006020828403121561545c57600080fd5b5051919050565b60006020828403121561547557600080fd5b81518015158114610bc557600080fd5b601f8211156128cf576000816000526020600020601f850160051c810160208610156154ae5750805b601f850160051c820191505b818110156154cd578281556001016154ba565b505050505050565b6001600160401b038311156154ec576154ec6148b0565b615500836154fa83546150c4565b83615485565b6000601f841160018114615534576000851561551c5750838201355b600019600387901b1c1916600186901b17835561558e565b600083815260209020601f19861690835b828110156155655786850135825560209485019460019092019101615545565b50868210156155825760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b61559f818461488e565b6000602060406020840152600084546155b7816150c4565b80604087015260606001808416600081146155d957600181146155f557615625565b60ff19851660608a0152606084151560051b8a01019550615625565b89600052602060002060005b8581101561561c5781548b8201860152908301908801615601565b8a016060019650505b50939998505050505050505050565b60006020828403121561564657600080fd5b81516001600160401b038082111561565d57600080fd5b908301906040828603121561567157600080fd5b60405160408101818110838211171561568c5761568c6148b0565b604052825160ff811061569e57600080fd5b81526020830151828111156156b257600080fd5b6156be87828601614f8e565b60208301525095945050505050565b600060033d11156156e65760046000803e5060005160e01c5b90565b600060443d10156156f75790565b6040516003193d81016004833e81513d6001600160401b03816024840111818411171561572657505050505090565b828501915081518181111561573e5750505050505090565b843d87010160208285010111156157585750505050505090565b615767602082860101876148c6565b509095945050505050565b7002bb4ba3732ba22b93937b939a634b11d1607d1b81526000825161579e816011850160208701614597565b9190910160110192915050565b6001600160481b03818116838216019080821115611b9657611b96614ed2565b630375962160e11b8152600160e51b602080830191909152600160e01b604083015260ff600160e51b0160608301526001600160e01b0319608083015260001960a08301526001600160d41b031960c0830152600160df1b60e083015260ff60d81b6101008301528251600091610105919061584e908290848701908801614597565b9290920190910192915050565b86815260a06020820152600061587560a08301878961540d565b85604084015284606084015282810360808401526158938185614750565b9998505050505050505050565b6000602082840312156158b257600080fd5b8135610bc58161515f565b6000602082840312156158cf57600080fd5b8135610bc581615150565b6000600182016158ec576158ec614ed2565b5060010190565b81356158fe81615150565b60ff8116905081548160ff198216178355602084013561591d8161515f565b68ffffffffffffffff008160081b16836001600160481b03198416171784555050505050565b61ffff828116828216039080821115611b9657611b96614ed2565b600061ffff8084168061597357615973614ebc565b92169190910492915050565b61ffff818116838216019080821115611b9657611b96614ed2565b6001600160401b038181168382160280821691908281146159bd576159bd614ed2565b505092915050565b825160009082906020808701845b838110156159ef578151855293820193908201906001016159d3565b505050938152602001949350505050565b6000815160c084528051604060c0860152615a1f610100860182614750565b9050602082015160e086015260ff602085015116602086015260ff604085015116604086015260ff6060850151166060860152608084015191506001600160401b0380831660808701528060a08601511660a087015250809250505092915050565b8681526001600160401b0386166020820152846040820152836060820152615aac6080820184614d52565b60c060a08201526000615ac260c0830184615a00565b98975050505050505050565b8581526001600160401b038516602082015283604082015282606082015260a0608082015260006149ae60a0830184615a00565b81810381811115610b9f57610b9f614ed2565b81516001600160401b03811115615b2e57615b2e6148b0565b615b4281615b3c84546150c4565b84615485565b602080601f831160018114615b775760008415615b5f5750858301515b600019600386901b1c1916600185901b1785556154cd565b600085815260208120601f198616915b82811015615ba657888601518255948401946001909101908401615b87565b5085821015615bc45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160401b03818116838216019080821115611b9657611b96614ed2565b600082615c0357615c03614ebc565b500690565b60ff8281168282160390811115610b9f57610b9f614ed256fe5769746e65744f7261636c653a2063616c6c6261636b20657863656564656420676173206c696d69745769746e65744572726f72734c69623a20617373657274696f6e206661696c6564f595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e183f595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e184a2646970667358221220890bb7d2162a76b565566d8e22bbe4112656f2f8c3f43378cde1043c4176e27a64736f6c63430008190033",
  "linkReferences": {
    "contracts/data/WitnetOracleDataLib.sol": {
      "WitnetOracleDataLib": [
        {
          "length": 20,
          "start": 4172
        },
        {
          "length": 20,
          "start": 4880
        },
        {
          "length": 20,
          "start": 7549
        },
        {
          "length": 20,
          "start": 8035
        },
        {
          "length": 20,
          "start": 10761
        },
        {
          "length": 20,
          "start": 11294
        }
      ]
    },
    "contracts/libs/WitnetErrorsLib.sol": {
      "WitnetErrorsLib": [
        {
          "length": 20,
          "start": 9775
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "contracts/data/WitnetOracleDataLib.sol": {
      "WitnetOracleDataLib": [
        {
          "length": 20,
          "start": 3285
        },
        {
          "length": 20,
          "start": 3993
        },
        {
          "length": 20,
          "start": 6662
        },
        {
          "length": 20,
          "start": 7148
        },
        {
          "length": 20,
          "start": 9874
        },
        {
          "length": 20,
          "start": 10407
        }
      ]
    },
    "contracts/libs/WitnetErrorsLib.sol": {
      "WitnetErrorsLib": [
        {
          "length": 20,
          "start": 8888
        }
      ]
    }
  }
}
