{
  "_format": "hh-sol-artifact-1",
  "contractName": "WitnetOracleTrustableDefault",
  "sourceName": "contracts/core/defaults/WitnetOracleTrustableDefault.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": "",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "_txGasPrice",
          "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": "0x610240604052336101005263baeca88b60e01b6101605234801561002257600080fd5b50604051615c3d380380615c3d833981016040819052610041916101a6565b8787878760008083836040518060400160405280601981526020017f696f2e7769746e65742e70726f786961626c652e626f61726400000000000000815250823360006001600160a01b0316816001600160a01b0316036100bc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100c581610125565b5030608052151560c052600160025560e091909152805160209091012061012052506001600160a01b03908116610140529485166101a05250505016610180526101c0939093526101e09190915261020052610220525061022892505050565b600180546001600160a01b031916905561013e81610141565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461013e57600080fd5b600080600080600080600080610100898b0312156101c357600080fd5b88516101ce81610191565b60208a01519098506101df81610191565b60408a015190975080151581146101f557600080fd5b60608a015160808b015160a08c015160c08d015160e0909d01519b9e9a9d50929b919a9099929850909650945092505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051610200516102205161590861033560003960008181610bad0152611e6301526000610bd9015260008181610c190152610c6101526000611e8d01526000818161090301528181611792015281816117da015281816118a501526119620152600081816106c50152818161193801528181611af001526120ab01526000610870015260006109a00152600061052e0152600061094e01526000611b8301526000818161055f0152611d3b015260005050600081816104e401528181610839015281816116c70152818161172101528181611a280152611a4a01526159086000f3fe6080604052600436106102765760003560e01c80637b1039991161014f578063aeb2ffc1116100c1578063e30c39781161007a578063e30c397814610970578063e5a6b10f1461098e578063e900aa33146109c2578063ec5946db146109d5578063f2fde38b146109e8578063f61921b214610a08576102b3565b8063aeb2ffc114610892578063b207e730146108bf578063bff852fa146108df578063c45a0155146108f4578063c805dd0f14610927578063d5f394881461093c576102b3565b806393d5185c1161011357806393d5185c146107955780639cc56e67146107ca578063a3ff5b00146107ea578063a77fc1a4146107fd578063a9e954b91461082a578063adb7c3f71461085e576102b3565b80637b103999146106b35780637bbdb96e146106e75780637bd88218146107375780638d3d8b38146107575780638da5cb5b14610777576102b3565b80635001f3b5116101e85780636280bce8116101ac5780636280bce8146105d25780636b58960a146105f25780636f07abcc146106125780636fdaab7e1461063f578063715018a61461068957806379ba50971461069e576102b3565b80635001f3b5146104d557806352d1902d1461051c5780635479d9401461055057806354fd4d5014610583578063581f5094146105a5576102b3565b8063234fe6e31161023a578063234fe6e31461040857806328a78d9b146104355780633dc2b7a214610455578063439fab911461046857806345ea6c17146104885780634c9f72e3146104b5576102b3565b8063044ad7be1461032b57806305e742ef1461036057806306eb2c421461038e57806308b7e85e146103ae5780630aa4112a146103db576102b3565b366102b3576102b1604051806040016040528060158152602001741b9bc81d1c985b9cd9995c9cc81858d8d95c1d1959605a1b815250610a28565b005b3480156102bf57600080fd5b506102b16102d160003560f81c610a71565b6102e260ff60003560f01c16610a71565b6102f360ff60003560e81c16610a71565b61030460ff60003560e01c16610a71565b60405160200161031794939291906142eb565b604051602081830303815290604052610a28565b34801561033757600080fd5b5061034b61034636600461437f565b610b63565b60405190151581526020015b60405180910390f35b34801561036c57600080fd5b5061038061037b3660046143af565b610ba5565b604051908152602001610357565b34801561039a57600080fd5b506103806103a9366004614426565b610c96565b3480156103ba57600080fd5b506103ce6103c9366004614467565b611000565b6040516103579190614500565b3480156103e757600080fd5b506103fb6103f6366004614467565b611297565b6040516103579190614595565b34801561041457600080fd5b50610428610423366004614467565b6113fd565b60405161035791906145d2565b34801561044157600080fd5b506102b1610450366004614645565b611408565b6103806104633660046146fb565b6114c1565b34801561047457600080fd5b506102b1610483366004614746565b6115cb565b34801561049457600080fd5b506104a86104a3366004614426565b611abf565b60405161035791906147cb565b3480156104c157600080fd5b506102b16104d0366004614645565b611b68565b3480156104e157600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610357565b34801561052857600080fd5b506103807f000000000000000000000000000000000000000000000000000000000000000081565b34801561055c57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061034b565b34801561058f57600080fd5b50610598611b7c565b604051610357919061482f565b3480156105b157600080fd5b506105c56105c0366004614426565b611bac565b6040516103579190614852565b3480156105de57600080fd5b506103806105ed3660046148de565b611c67565b3480156105fe57600080fd5b5061034b61060d36600461437f565b611d37565b34801561061e57600080fd5b5061063261062d366004614467565b611d8d565b6040516103579190614930565b34801561064b57600080fd5b5061038061065a366004614467565b60009081526000805160206158b38339815191526020526040902054600160b81b90046001600160481b031690565b34801561069557600080fd5b506102b1611d98565b3480156106aa57600080fd5b506102b1611dac565b3480156106bf57600080fd5b506105047f000000000000000000000000000000000000000000000000000000000000000081565b3480156106f357600080fd5b5060408051306020808301919091524682840152825180830384018152606090920190925280519101205b6040516001600160e01b03199091168152602001610357565b34801561074357600080fd5b5061038061075236600461494e565b611e23565b34801561076357600080fd5b50610598610772366004614467565b611ebb565b34801561078357600080fd5b506000546001600160a01b0316610504565b3480156107a157600080fd5b506107b56107b036600461497e565b611f59565b60408051928352602083019190915201610357565b3480156107d657600080fd5b506103806107e53660046149fb565b612088565b6103806107f8366004614a1d565b61215e565b34801561080957600080fd5b5061081d610818366004614467565b6122b8565b6040516103579190614a92565b34801561083657600080fd5b507f00000000000000000000000000000000000000000000000000000000000000003f610380565b34801561086a57600080fd5b5061071e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561089e57600080fd5b506108b26108ad366004614467565b612431565b6040516103579190614abe565b3480156108cb57600080fd5b506103806108da366004614b0b565b612667565b3480156108eb57600080fd5b50610598612782565b34801561090057600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610504565b34801561093357600080fd5b506103806127b9565b34801561094857600080fd5b506105047f000000000000000000000000000000000000000000000000000000000000000081565b34801561097c57600080fd5b506001546001600160a01b0316610504565b34801561099a57600080fd5b506105047f000000000000000000000000000000000000000000000000000000000000000081565b6103806109d0366004614b72565b6127d6565b6102b16109e3366004614467565b612895565b3480156109f457600080fd5b506102b1610a0336600461437f565b612993565b348015610a1457600080fd5b506103ce610a23366004614467565b612a04565b610a30612782565b81604051602001610a42929190614baf565b60408051601f198184030181529082905262461bcd60e51b8252610a689160040161482f565b60405180910390fd5b604080516002808252818301909252606091600091906020820181803683370190505090506000610aa3601085614c18565b610aae906030614c3a565b90506000610abd601086614c53565b610ac8906030614c3a565b905060398260ff161115610ae457610ae1600783614c3a565b91505b60398160ff161115610afe57610afb600782614c3a565b90505b8160f81b83600081518110610b1557610b15614c75565b60200101906001600160f81b031916908160001a9053508060f81b83600181518110610b4357610b43614c75565b60200101906001600160f81b031916908160001a90535091949350505050565b6001600160a01b03811660009081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e185602052604081205460ff165b92915050565b600080610bd37f00000000000000000000000000000000000000000000000000000000000000006003614c8b565b610bfd907f0000000000000000000000000000000000000000000000000000000000000000614ca2565b9050808362ffffff161080610c3f575080610c3d62ffffff85167f0000000000000000000000000000000000000000000000000000000000000000614ca2565b105b15610c5657610c4e8185614c8b565b915050610b9f565b610c8562ffffff84167f0000000000000000000000000000000000000000000000000000000000000000614ca2565b610c4e9085614c8b565b5092915050565b6000610cf86000805160206158938339815191525b336000908152600291909101602090815260409182902054825180840190935260158352743ab730baba3437b934bd32b2103932b837b93a32b960591b9183019190915260ff1690612b26565b60005b82811015610fef576001610d32858584818110610d1a57610d1a614c75565b9050602002810190610d2c9190614cb5565b35612b38565b6003811115610d4357610d436145a8565b14610e28577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f848483818110610d7b57610d7b614c75565b9050602002810190610d8d9190614cb5565b6040516353e8875160e11b815290359073__$e6ff738751a05f257ae0de251e4d5c9673$__9063a7d10ea290610dc890600190600401614930565b600060405180830381865af4158015610de5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e0d9190810190614d24565b604051610e1b929190614d58565b60405180910390a1610fe7565b838382818110610e3a57610e3a614c75565b9050602002810190610e4c9190614cb5565b610e5d906040810190602001614d71565b63ffffffff161580610ea05750838382818110610e7c57610e7c614c75565b9050602002810190610e8e9190614cb5565b610e9c906060810190614d8c565b1590505b15610f1e577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f848483818110610ed857610ed8614c75565b9050602002810190610eea9190614cb5565b35610ef3612782565b604051602001610f039190614dd2565b60408051601f1981840301815290829052610e1b9291614d58565b610fda848483818110610f3357610f33614c75565b9050602002810190610f459190614cb5565b35858584818110610f5857610f58614c75565b9050602002810190610f6a9190614cb5565b610f7b906040810190602001614d71565b868685818110610f8d57610f8d614c75565b9050602002810190610f9f9190614cb5565b60400135878786818110610fb557610fb5614c75565b9050602002810190610fc79190614cb5565b610fd5906060810190614d8c565b612bb9565b610fe49083614ca2565b91505b600101610cfb565b508015610b9f57610b9f3382612d98565b6040805160a08101825260008082526020820181905291810182905260608082019290925260808101919091528160038061103a83612b38565b600381111561104b5761104b6145a8565b146110da576040516353e8875160e11b81526110d59073__$e6ff738751a05f257ae0de251e4d5c9673$__9063a7d10ea29061108b908590600401614930565b600060405180830381865af41580156110a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110d09190810190614d24565b610a28565b611290565b836111236110e782612dce565b546040805180820190915260118152703737ba103a3432903932b8bab2b9ba32b960791b60208201526001600160a01b03909116331490612b26565b61112c85612dce565b6040805160a0810182526004830180546001600160a01b0381168352600160a01b81046001600160401b03166020840152600160e01b900463ffffffff1692820192909252600583015460608201526006909201805460808401919061119190614e0b565b80601f01602080910402602001604051908101604052809291908181526020018280546111bd90614e0b565b801561120a5780601f106111df5761010080835404028352916020019161120a565b820191906000526020600020905b8154815290600101906020018083116111ed57829003601f168201915b505050505081525050935061122a60008051602061589383398151915290565b6000868152600191820160205260408120818155918290829061124f908301826141af565b506000600282018190556003909101805468ffffffffffffffffff1916905560048301818155600584018290559061128a60068501826141af565b50505050505b5050919050565b6112db6040805160c081018252600080825260208083018290528284018290526060808401526080830182905283518085019094528184528301529060a082015290565b6112e482612dce565b6040805160c08101825282546001600160a01b0381168252600160a01b810462ffffff166020830152600160b81b90046001600160481b03169181019190915260018201805491929160608401919061133c90614e0b565b80601f016020809104026020016040519081016040528092919081815260200182805461136890614e0b565b80156113b55780601f1061138a576101008083540402835291602001916113b5565b820191906000526020600020905b81548152906001019060200180831161139857829003601f168201915b5050509183525050600282015460208083019190915260408051808201825260039094015460ff8116855261010090046001600160401b031691840191909152015292915050565b6000610b9f82612dec565b611410612f04565b60005b815181101561148657600082828151811061143057611430614c75565b60200260200101519050600061145160008051602061589383398151915290565b6001600160a01b0392909216600090815260029092016020526040909120805460ff1916911515919091179055600101611413565b507f646436560d9757cb3c0f01da0f62642c6040b00c9a80685f94ef1a7725cad5f1816040516114b69190614e3f565b60405180910390a150565b60006114cd3a84612088565b61150681345b1015604051806040016040528060138152602001721a5b9cdd59999a58da595b9d081c995dd85c99606a1b815250612b26565b61154461151482600a614c8b565b3411156040518060400160405280600f81526020016e1d1bdbc81b5d58da081c995dd85c99608a1b815250612b26565b8261157a61155182612f31565b6040518060400160405280600b81526020016a696e76616c696420534c4160a81b815250612b26565b61158685856000612f8a565b92507ffb94adf28ab7e538d2691d90927f622cbc1100eae6afec58052efdee6c98a6168334866040516115bb93929190614ea4565b60405180910390a1505092915050565b6000546001600160a01b031660608161161e576060838060200190518101906115f49190614eeb565b90935090506116028361305e565b808060200190518101906116169190614f3b565b915050611678565b611661826001600160a01b0316336001600160a01b0316146040518060400160405280600d81526020016c3737ba103a34329037bbb732b960991b815250612b26565b828060200190518101906116759190614f3b565b90505b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe54158015906116e957507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe547f00000000000000000000000000000000000000000000000000000000000000003f145b1561171f5761171f6040518060400160405280601081526020016f185b1c9958591e481d5c19dc9859195960821b815250610a28565b7f00000000000000000000000000000000000000000000000000000000000000003f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe55604080518082019091526012815271696e6578697374656e7420666163746f727960701b60208201526117c3907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b151590612b26565b611896630db7c58b60e41b6001600160e01b0319167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663adb7c3f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185a9190614fd4565b6001600160e01b0319161460405180604001604052806013815260200172756e636f6d706c69616e7420666163746f727960681b815250612b26565b611a1d306001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166346d1d21a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611901573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119259190614ffe565b6001600160a01b03161480156119ed57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e29190614ffe565b6001600160a01b0316145b60405180604001604052806012815260200171646973636f7264616e7420666163746f727960701b815250612b26565b611a2681613077565b7f00000000000000000000000000000000000000000000000000000000000000003f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03167fe73e754121f0bad1327816970101955bfffdf53d270ac509d777c25be070d7f6611aa5611b7c565b604051611ab2919061482f565b60405180910390a4505050565b6040516251ca3160e21b815260609073__$e6ff738751a05f257ae0de251e4d5c9673$__9063014728c490611b1c907f0000000000000000000000000000000000000000000000000000000000000000908790879060040161501b565b600060405180830381865af4158015611b39573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b619190810190615065565b9392505050565b611b70612f04565b611b7981613077565b50565b6060611ba77f000000000000000000000000000000000000000000000000000000000000000061311d565b905090565b6060816001600160401b03811115611bc657611bc66145e0565b604051908082528060200260200182016040528015611bef578160200160208202803683370190505b50905060005b82811015610c8f57611c1e848483818110611c1257611c12614c75565b90506020020135612b38565b828281518110611c3057611c30614c75565b60200260200101906003811115611c4957611c496145a8565b90816003811115611c5c57611c5c6145a8565b905250600101611bf5565b6000611c80600080516020615893833981519152610cab565b84600180611c8d83612b38565b6003811115611c9e57611c9e6145a8565b14611ce3576040516353e8875160e11b8152611cde9073__$e6ff738751a05f257ae0de251e4d5c9673$__9063a7d10ea29061108b908590600401614930565b611d2d565b604080518082019091526016815275726573756c742063616e6e6f7420626520656d70747960501b6020820152611d1d9085151590612b26565b611d2a87428888886131c1565b92505b5050949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000008015610b9f5750816001600160a01b0316611d7d6000546001600160a01b031690565b6001600160a01b03161492915050565b6000610b9f82612b38565b611da0612f04565b611daa600061305e565b565b60015433906001600160a01b03168114611e1a5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610a68565b611b798161305e565b6000602061ffff831615611e4157611e3c600184615120565b611e44565b60005b611e4e919061513b565b611e5990600461515c565b611e879061ffff167f0000000000000000000000000000000000000000000000000000000000000000614c8b565b611eb1907f0000000000000000000000000000000000000000000000000000000000000000614ca2565b611b619084614c8b565b6060611ec6826131e5565b6002018054611ed490614e0b565b80601f0160208091040260200160405190810160405280929190818152602001828054611f0090614e0b565b8015611f4d5780601f10611f2257610100808354040283529160200191611f4d565b820191906000526020600020905b815481529060010190602001808311611f3057829003601f168201915b50505050509050919050565b60008060005b8781101561207c576001611f7e8a8a84818110611c1257611c12614c75565b6003811115611f8f57611f8f6145a8565b03612074576000611fb78a8a84818110611fab57611fab614c75565b90506020020135612dce565b8054909150611fd690600160b81b90046001600160481b031685614ca2565b8154909450600160a01b900462ffffff1615612016578054612005908790600160a01b900462ffffff16610ba5565b61200f9084614ca2565b9250612046565b60028101541561202e57612005868260020154612088565b612039866000611e23565b6120439084614ca2565b92505b8461205382600301613206565b6001600160401b03166120669190614c8b565b6120709084614ca2565b9250505b600101611f5f565b50965096945050505050565b604051633b5bc50360e11b81526004810182905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906376b78a0690602401602060405180830381865afa1580156120f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121169190615177565b905061214c60008261ffff16116040518060400160405280600b81526020016a1a5b9d985b1a590814905160aa1b815250612b26565b6121568482611e23565b949350505050565b60003382612218823b158015906121d957506040516323d0872b60e11b81523060048201526001600160a01b038416906347a10e56906024015b602060405180830381865afa1580156121b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d99190615194565b80156121ea575060008262ffffff16115b6040518060400160405280601081526020016f696e76616c69642063616c6c6261636b60801b815250612b26565b6122233a5b85610ba5565b61222d81346114d3565b61223b61151482600a614c8b565b8561224861155182612f31565b61225460008888612f8a565b9450888861226187612dce565b60010191612270919083615206565b507ffb94adf28ab7e538d2691d90927f622cbc1100eae6afec58052efdee6c98a6168534896040516122a493929190614ea4565b60405180910390a150505050949350505050565b60408051808201909152600081526060602082015260006122d883612dec565b905073__$ef6db950c2506c2808ebbf3a91851f2b43$__63a62b8462826122fe866131e5565b6002016040518363ffffffff1660e01b815260040161231e9291906152c6565b600060405180830381865af492505050801561235c57506040513d6000823e601f3d908101601f191682016040526123599190810190615365565b60015b611b61576123686153fe565b806308c379a0036123c4575061237c61541a565b8061238757506123c6565b604080518082019091528060008152602001826040516020016123aa91906154a3565b60408051601f198184030181529190529052949350505050565b505b3d8080156123f0576040519150601f19603f3d011682016040523d82523d6000602084013e6123f5565b606091505b50604080518082019091528060008152602001604051806060016040528060218152602001615872602191399052949350505050565b50919050565b6124396141e9565b60008281526000805160206158b383398151915260205260409081902081516101008101835281546001600160a01b038116938201938452600160a01b810462ffffff166060830152600160b81b90046001600160481b03166080820152600182018054919384929091849160a0850191906124b490614e0b565b80601f01602080910402602001604051908101604052809291908181526020018280546124e090614e0b565b801561252d5780601f106125025761010080835404028352916020019161252d565b820191906000526020600020905b81548152906001019060200180831161251057829003601f168201915b5050509183525050600282015460208083019190915260408051808201825260039094015460ff8116855261010090046001600160401b039081168584015292810193909352928452815160a0810183526004860180546001600160a01b0381168352600160a01b810490931682860152600160e01b90920463ffffffff1692810192909252600585015460608301526006850180549490930193919290916080840191906125db90614e0b565b80601f016020809104026020016040519081016040528092919081815260200182805461260790614e0b565b80156126545780601f1061262957610100808354040283529160200191612654565b820191906000526020600020905b81548152906001019060200180831161263757829003601f168201915b5050509190925250505090525092915050565b6000612680600080516020615893833981519152610cab565b8560018061268d83612b38565b600381111561269e5761269e6145a8565b146126e3576040516353e8875160e11b81526126de9073__$e6ff738751a05f257ae0de251e4d5c9673$__9063a7d10ea29061108b908590600401614930565b612777565b61272d60008863ffffffff161180156127025750428863ffffffff1611155b6040518060400160405280600d81526020016c06261642074696d657374616d7609c1b815250612b26565b604080518082019091526016815275726573756c742063616e6e6f7420626520656d70747960501b60208201526127679085151590612b26565b61277488888888886131c1565b92505b505095945050505050565b60408051808201909152601c81527f5769746e65744f7261636c65547275737461626c6544656661756c7400000000602082015290565b600060008051602061589383398151915254611ba7906001614ca2565b60003382612814823b158015906121d957506040516323d0872b60e11b81523060048201526001600160a01b038416906347a10e5690602401612198565b61281d3a61221d565b61282781346114d3565b61283561151482600a614c8b565b8561284261155182612f31565b61284d888888612f8a565b94507ffb94adf28ab7e538d2691d90927f622cbc1100eae6afec58052efdee6c98a61685348960405161288293929190614ea4565b60405180910390a1505050509392505050565b806001806128a283612b38565b60038111156128b3576128b36145a8565b146128f8576040516353e8875160e11b81526128f39073__$e6ff738751a05f257ae0de251e4d5c9673$__9063a7d10ea29061108b908590600401614930565b505050565b600061290384612dce565b90503481548290601790612928908490600160b81b90046001600160481b03166154dc565b82546101009290920a6001600160481b03818102199093169183160217909155825460408051888152600160b81b90920490921660208201527fdcced240139c3504c690fc16a776a5a4da3d5d1c139539e75037554ddc21e55b92500160405180910390a150505050565b61299b612f04565b600180546001600160a01b0383166001600160a01b031990911681179091556129cc6000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6040805160a0810182526000808252602082018190529181018290526060808201929092526080810191909152612a3a826131e5565b6040805160a08101825282546001600160a01b0381168252600160a01b81046001600160401b03166020830152600160e01b900463ffffffff169181019190915260018201546060820152600282018054919291608084019190612a9d90614e0b565b80601f0160208091040260200160405190810160405280929190818152602001828054612ac990614e0b565b8015612b165780601f10612aeb57610100808354040283529160200191612b16565b820191906000526020600020905b815481529060010190602001808311612af957829003601f168201915b5050505050815250509050919050565b81612b3457612b3481610a28565b5050565b60008181526000805160206158b3833981519152602052604081206004810154600160e01b900463ffffffff1615612b97576004810154600160a01b90046001600160401b03164310612b8e5750600392915050565b50600292915050565b80546001600160a01b031615612bb05750600192915050565b50600092915050565b600080612bc587612dce565b80546001600160b81b038116808355600160b81b9091046001600160481b03169350909150600160a01b900462ffffff1615612d1157805460009081908190612c34908b9063ffffffff8c16908b908b908b906001600160a01b03811690600160a01b900462ffffff16613236565b9250925092508115612c8457604080518b81523a602082015280820185905290517f37fc320f2d5c58a36c657d3b047384d42550bcc0d9781d13a7d97f8a97c2370c9181900360600190a1612cee565b7f794f0625cb473a6fc2bbc46c87577b8e719f074c42f7fe02abdf08e7435b1d8d8a88883a876000875111612cd15760405180606001604052806029815260200161584960299139612cd3565b865b604051612ce5969594939291906154fc565b60405180910390a15b612d098a8a8a604051806020016040528060008152506135cc565b505050612d8e565b7f1fd7bc07c18ac1c4f6d3111c704cd1b4c29b9f7980b7c5a9a2fddeef29d6c277873a6040805192835260208301919091520160405180910390a1612d8e87878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506135cc92505050565b5095945050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156128f3573d6000803e3d6000fd5b60009081526000805160206158b38339815191526020526040902090565b600080612df883612b38565b90506003816003811115612e0e57612e0e6145a8565b03612ec05760008381526000805160206158b38339815191526020526040812060060180549091908290612e4190614e0b565b90501115612eb6578054601b60fb1b908290600090612e5f90614e0b565b8110612e6d57612e6d614c75565b815460011615612e8c5790600052602060002090602091828204019190065b9054901a600160f81b026001600160f81b03191614612eac576002612156565b6003949350505050565b5060059392505050565b6001816003811115612ed457612ed46145a8565b03612ee25750600192915050565b6002816003811115612ef657612ef66145a8565b03612bb05750600492915050565b6000546001600160a01b03163314611daa5760405163118cdaa760e01b8152336004820152602401610a68565b600080612f446040840160208501615559565b6001600160401b0316118015612f6957506000612f646020840184615576565b60ff16115b8015610b9f5750607f612f7f6020840184615576565b60ff16111592915050565b60006000805160206158938339815191528054600090612fa990615593565b918290555090506000612fbb82612dce565b805460408051808201909152600e81526d185b1c9958591e481c1bdcdd195960921b6020820152919250612ffb916001600160a01b039091161590612b26565b8054346001600160481b0316600160b81b026001600160b81b03199091163362ffffff60a01b191617600160a01b62ffffff861602176001600160b81b031617815560028101859055836003820161305382826155ac565b905050509392505050565b600180546001600160a01b0319169055611b7981613699565b60005b81518110156130ed57600082828151811061309757613097614c75565b6020026020010151905060016130b860008051602061589383398151915290565b6001600160a01b0392909216600090815260029092016020526040909120805460ff191691151591909117905560010161307a565b507f4d570ee36dec878006609360d34ac8d6a0b68d521871ae15a407b6340877ca01816040516114b69190614e3f565b6060600061312a836136e9565b6001600160401b03811115613141576131416145e0565b6040519080825280601f01601f19166020018201604052801561316b576020820181803683370190505b50905060005b8151811015610c8f5783816020811061318c5761318c614c75565b1a60f81b8282815181106131a2576131a2614c75565b60200101906001600160f81b031916908160001a905350600101613171565b60006131d08686868686612bb9565b90506131dc3382612d98565b95945050505050565b60009081526000805160206158b38339815191526020526040902060040190565b80546000906132199060ff166003614c3a565b8254610b9f9160ff169061010090046001600160401b03166155fc565b60008060605a9250601b60fb1b878760008161325457613254614c75565b9050013560f81c60f81b6001600160f81b031916036134a45760006132b66132b189898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061372792505050565b61374c565b90506002815110156133dd57856001600160a01b03166363febc9c868d8d8d4360006040518060c00160405280604051806040016040528060405180602001604052806000815250815260200160008152508152602001600060ff168152602001600060ff168152602001600060ff16815260200160006001600160401b0316815260200160006001600160401b03168152506040518863ffffffff1660e01b815260040161336a969594939291906156a8565b600060405180830381600088803b15801561338457600080fd5b5087f193505050508015613396575060015b6133d4576133a26153fe565b806308c379a0036133c857506133b661541a565b806133c157506133ca565b915061349e565b505b3d6000803e3d6000fd5b6001925061349e565b856001600160a01b03166363febc9c868d8d8d436134148860008151811061340757613407614c75565b60200260200101516138fc565b60fe811115613425576134256145a8565b8860008151811061343857613438614c75565b60200260200101516040518863ffffffff1660e01b8152600401613461969594939291906156a8565b600060405180830381600088803b15801561347b57600080fd5b5087f19350505050801561348d575060015b613499576133a26153fe565b600192505b506135b2565b846001600160a01b031663bcc6307b858c8c8c436134f78e8e8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061372792505050565b6040518763ffffffff1660e01b81526004016135179594939291906156f5565b600060405180830381600088803b15801561353157600080fd5b5087f193505050508015613543575060015b6135ad5761354f6153fe565b806308c379a003613575575061356361541a565b8061356e5750613577565b90506135b2565b505b3d8080156135a1576040519150601f19603f3d011682016040523d82523d6000602084013e6135a6565b606091505b50506135b2565b600191505b5a6135bd9084615729565b92509750975097945050505050565b6040518060a00160405280336001600160a01b03168152602001436001600160401b031681526020018463ffffffff1681526020018381526020018281525061361485612dce565b81516004820180546020850151604086015163ffffffff16600160e01b026001600160e01b036001600160401b03909216600160a01b026001600160e01b03199093166001600160a01b03909516949094179190911716919091178155606083015160058301556080830151909160060190613690908261573c565b50505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b60208110156137225781816020811061370757613707614c75565b1a60f81b6001600160f81b03191615613722576001016136ec565b919050565b61372f61426b565b6040805180820190915282815260006020820152611b618161395f565b60608160048060ff16826040015160ff161461378c57604080830151905161800560e51b815260ff91821660048201529082166024820152604401610a68565b60006137a085600001518660600151613a7f565b90506137ad8160016157fb565b6001600160401b03166001600160401b038111156137cd576137cd6145e0565b60405190808252806020026020018201604052801561380657816020015b6137f361426b565b8152602001906001900390816137eb5790505b50935060005b816001600160401b03168110156138cc5761382686613b47565b955061383186613b6f565b85828151811061384357613843614c75565b6020026020010181905250600460ff16866040015160ff160361389c57600061386b8761374c565b9050806001825161387c9190615729565b8151811061388c5761388c614c75565b60200260200101519650506138c4565b600560ff16866040015160ff16036138b957600061386b87613c07565b6138c286613df1565b505b60010161380c565b508484826001600160401b0316815181106138e9576138e9614c75565b6020026020010181905250505050919050565b60008160008060ff16826040015160ff161461393c57604080830151905161800560e51b815260ff91821660048201529082166024820152604401610a68565b61394e84600001518560600151613a7f565b6001600160401b0316949350505050565b61396761426b565b815151829060000361398c576040516309036d4760e21b815260040160405180910390fd5b600060ff816001600160401b038160015b8015613a0f576139ac89613fb6565b9550816139b881615593565b6007600589901c169650601f881695509250506005198501613a075760208901516139e38a86613a7f565b9350808a602001516139f59190615729565b6139ff9084614ca2565b92505061399d565b50600061399d565b600760ff86161115613a395760405163bd2ac87960e01b815260ff86166004820152602401610a68565b506040805160c08101825298895260ff95861660208a015293851693880193909352921660608601526001600160401b0390811660808601521660a08401525090919050565b600060188260ff161015613a97575060ff8116610b9f565b8160ff16601803613ab557613aab83613fb6565b60ff169050610b9f565b8160ff16601903613ad457613ac983614018565b61ffff169050610b9f565b8160ff16601a03613af557613ae883614084565b63ffffffff169050610b9f565b8160ff16601b03613b1057613b09836140e3565b9050610b9f565b8160ff16601f03613b2957506001600160401b03610b9f565b604051636d785b1360e01b815260ff83166004820152602401610a68565b613b4f61426b565b81518051516020909101511015613b6b578151610b9f9061395f565b5090565b613b7761426b565b6040805160c081018083528451610100830184526060909152600060e0830152825180840190935280518352602090810151908301529081908152602001836020015160ff168152602001836040015160ff168152602001836060015160ff16815260200183608001516001600160401b031681526020018360a001516001600160401b03168152509050919050565b60608160058060ff16826040015160ff1614613c4757604080830151905161800560e51b815260ff91821660048201529082166024820152604401610a68565b6000613c5b85600001518660600151613a7f565b613c669060026155fc565b9050613c738160016157fb565b6001600160401b03166001600160401b03811115613c9357613c936145e0565b604051908082528060200260200182016040528015613ccc57816020015b613cb961426b565b815260200190600190039081613cb15790505b50935060005b816001600160401b03168110156138cc57613cec86613b47565b9550613cf786613b6f565b858281518110613d0957613d09614c75565b6020908102919091010152613d1f60028261581b565b158015613d345750604086015160ff16600314155b15613d6257604080870151905161800560e51b815260ff909116600482015260036024820152604401610a68565b604086015160ff1660041480613d7f5750604086015160ff166005145b15613dde57604086015160009060ff16600414613da457613d9f87613c07565b613dad565b613dad8761374c565b90508060018251613dbe9190615729565b81518110613dce57613dce614c75565b6020026020010151965050613de9565b613de786613df1565b505b600101613cd2565b613df961426b565b604082015160ff161580613e145750604082015160ff166001145b80613e4d5750604082015160ff166007148015613e3957506019826060015160ff1610155b8015613e4d5750601b826060015160ff1611155b15613e8057613e5b82614142565b6001600160401b03168260000151602001818151613e799190614ca2565b9052505090565b604082015160ff1660031480613e9d5750604082015160ff166002145b15613ee1576000613eb683600001518460600151613a7f565b9050806001600160401b03168360000151602001818151613ed79190614ca2565b905250613b6b9050565b604082015160ff1660041480613efe5750604082015160ff166005145b15613f2757613f1582600001518360600151613a7f565b6001600160401b031660808301525090565b604082015160ff166007141580613f595750816060015160ff16601414158015613f595750816060015160ff16601514155b15613b6b5760405162461bcd60e51b815260206004820152602760248201527f5769746e657443424f522e736b69703a20756e737570706f72746564206d616a6044820152666f72207479706560c81b6064820152608401610a68565b6000816020015182600001515180821115613fee576040516363a056dd60e01b81526004810183905260248101829052604401610a68565b835160208501805180830160010151955090819061400b82615593565b8152505050505050919050565b60008160200151600261402b9190614ca2565b82515180821115614059576040516363a056dd60e01b81526004810183905260248101829052604401610a68565b83516020850180516002818401810151965090916140778284614ca2565b9052509395945050505050565b6000816020015160046140979190614ca2565b825151808211156140c5576040516363a056dd60e01b81526004810183905260248101829052604401610a68565b83516020850180516004818401810151965090916140778284614ca2565b6000816020015160086140f69190614ca2565b82515180821115614124576040516363a056dd60e01b81526004810183905260248101829052604401610a68565b83516020850180516008818401810151965090916140778284614ca2565b60006018826060015160ff16101561415c57506000919050565b601c826060015160ff16101561418b576018826060015161417d919061582f565b60ff166001901b9050919050565b6060820151604051636d785b1360e01b815260ff9091166004820152602401610a68565b5080546141bb90614e0b565b6000825580601f106141cb575050565b601f016020900490600052602060002090810190611b7991906142b2565b60405180604001604052806142386040805160c081018252600080825260208083018290528284018290526060808401526080830182905283518085019094528184528301529060a082015290565b81526040805160a08101825260008082526020828101829052928201819052606080830191909152608082015291015290565b604080516101008101909152606060c08201908152600060e08301528190815260006020820181905260408201819052606082018190526080820181905260a09091015290565b5b80821115613b6b57600081556001016142b3565b60005b838110156142e25781810151838201526020016142ca565b50506000910152565b720dcdee840d2dae0d8cadacadce8cac8744060f606b1b815260008551614319816013850160208a016142c7565b855190830190614330816013840160208a016142c7565b85519101906143468160138401602089016142c7565b845191019061435c8160138401602088016142c7565b016013019695505050505050565b6001600160a01b0381168114611b7957600080fd5b60006020828403121561439157600080fd5b8135611b618161436a565b803562ffffff8116811461372257600080fd5b600080604083850312156143c257600080fd5b823591506143d26020840161439c565b90509250929050565b60008083601f8401126143ed57600080fd5b5081356001600160401b0381111561440457600080fd5b6020830191508360208260051b850101111561441f57600080fd5b9250929050565b6000806020838503121561443957600080fd5b82356001600160401b0381111561444f57600080fd5b61445b858286016143db565b90969095509350505050565b60006020828403121561447957600080fd5b5035919050565b600081518084526144988160208601602086016142c7565b601f01601f19169290920160200192915050565b60018060a01b0381511682526001600160401b03602082015116602083015263ffffffff6040820151166040830152606081015160608301526000608082015160a0608085015261215660a0850182614480565b602081526000611b6160208301846144ac565b60018060a01b03815116825262ffffff60208201511660208301526001600160481b0360408201511660408301526000606082015160e0606085015261455c60e0850182614480565b90506080830151608085015260a083015160ff81511660a08601526001600160401b0360208201511660c0860152508091505092915050565b602081526000611b616020830184614513565b634e487b7160e01b600052602160045260246000fd5b600681106145ce576145ce6145a8565b9052565b60208101610b9f82846145be565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b038111828210171561461b5761461b6145e0565b6040525050565b60006001600160401b0382111561463b5761463b6145e0565b5060051b60200190565b6000602080838503121561465857600080fd5b82356001600160401b0381111561466e57600080fd5b8301601f8101851361467f57600080fd5b803561468a81614622565b60405161469782826145f6565b82815260059290921b83018401918481019150878311156146b757600080fd5b928401925b828410156146de5783356146cf8161436a565b825292840192908401906146bc565b979650505050505050565b60006040828403121561242b57600080fd5b6000806060838503121561470e57600080fd5b823591506143d284602085016146e9565b60006001600160401b03821115614738576147386145e0565b50601f01601f191660200190565b60006020828403121561475857600080fd5b81356001600160401b0381111561476e57600080fd5b8201601f8101841361477f57600080fd5b803561478a8161471f565b60405161479782826145f6565b8281528660208486010111156147ac57600080fd5b8260208501602083013760009281016020019290925250949350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561482257603f19888603018452614810858351614480565b945092850192908501906001016147f4565b5092979650505050505050565b602081526000611b616020830184614480565b600481106145ce576145ce6145a8565b6020808252825182820181905260009190848201906040850190845b8181101561489157614881838551614842565b928401929184019160010161486e565b50909695505050505050565b60008083601f8401126148af57600080fd5b5081356001600160401b038111156148c657600080fd5b60208301915083602082850101111561441f57600080fd5b600080600080606085870312156148f457600080fd5b843593506020850135925060408501356001600160401b0381111561491857600080fd5b6149248782880161489d565b95989497509550505050565b60208101610b9f8284614842565b61ffff81168114611b7957600080fd5b6000806040838503121561496157600080fd5b8235915060208301356149738161493e565b809150509250929050565b6000806000806000806080878903121561499757600080fd5b86356001600160401b03808211156149ae57600080fd5b6149ba8a838b016143db565b909850965060208901359150808211156149d357600080fd5b506149e089828a0161489d565b979a9699509760408101359660609091013595509350505050565b60008060408385031215614a0e57600080fd5b50508035926020909101359150565b60008060008060808587031215614a3357600080fd5b84356001600160401b03811115614a4957600080fd5b614a558782880161489d565b9095509350614a69905086602087016146e9565b9150614a776060860161439c565b905092959194509250565b60ff81106145ce576145ce6145a8565b60208152614aa4602082018351614a82565b600060208301516040808401526121566060840182614480565b602081526000825160406020840152614ada6060840182614513565b90506020840151601f198483030160408501526131dc82826144ac565b803563ffffffff8116811461372257600080fd5b600080600080600060808688031215614b2357600080fd5b85359450614b3360208701614af7565b93506040860135925060608601356001600160401b03811115614b5557600080fd5b614b618882890161489d565b969995985093965092949392505050565b600080600060808486031215614b8757600080fd5b83359250614b9885602086016146e9565b9150614ba66060850161439c565b90509250925092565b60008351614bc18184602088016142c7565b6101d160f51b9083019081528351614be08160028401602088016142c7565b01600201949350505050565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060ff831680614c2b57614c2b614bec565b8060ff84160491505092915050565b60ff8181168382160190811115610b9f57610b9f614c02565b600060ff831680614c6657614c66614bec565b8060ff84160691505092915050565b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417610b9f57610b9f614c02565b80820180821115610b9f57610b9f614c02565b60008235607e19833603018112614ccb57600080fd5b9190910192915050565b600082601f830112614ce657600080fd5b8151614cf18161471f565b604051614cfe82826145f6565b828152856020848701011115614d1357600080fd5b6131dc8360208301602088016142c7565b600060208284031215614d3657600080fd5b81516001600160401b03811115614d4c57600080fd5b61215684828501614cd5565b8281526040602082015260006121566040830184614480565b600060208284031215614d8357600080fd5b611b6182614af7565b6000808335601e19843603018112614da357600080fd5b8301803591506001600160401b03821115614dbd57600080fd5b60200191503681900382131561441f57600080fd5b60008251614de48184602087016142c7565b743a20696e76616c6964207265706f7274206461746160581b920191825250601501919050565b600181811c90821680614e1f57607f821691505b60208210810361242b57634e487b7160e01b600052602260045260246000fd5b6020808252825182820181905260009190848201906040850190845b818110156148915783516001600160a01b031683529284019291840191600101614e5b565b60ff81168114611b7957600080fd5b6001600160401b0381168114611b7957600080fd5b83815260208101839052608081018235614ebd81614e80565b60ff1660408301526020830135614ed381614e8f565b6001600160401b038116606084015250949350505050565b60008060408385031215614efe57600080fd5b8251614f098161436a565b60208401519092506001600160401b03811115614f2557600080fd5b614f3185828601614cd5565b9150509250929050565b60006020808385031215614f4e57600080fd5b82516001600160401b03811115614f6457600080fd5b8301601f81018513614f7557600080fd5b8051614f8081614622565b604051614f8d82826145f6565b82815260059290921b8301840191848101915087831115614fad57600080fd5b928401925b828410156146de578351614fc58161436a565b82529284019290840190614fb2565b600060208284031215614fe657600080fd5b81516001600160e01b031981168114611b6157600080fd5b60006020828403121561501057600080fd5b8151611b618161436a565b6001600160a01b0384168152604060208201819052810182905260006001600160fb1b0383111561504b57600080fd5b8260051b8085606085013791909101606001949350505050565b6000602080838503121561507857600080fd5b82516001600160401b038082111561508f57600080fd5b818501915085601f8301126150a357600080fd5b81516150ae81614622565b6040516150bb82826145f6565b82815260059290921b84018501918581019150888311156150db57600080fd5b8585015b83811015615113578051858111156150f75760008081fd5b6151058b89838a0101614cd5565b8452509186019186016150df565b5098975050505050505050565b61ffff828116828216039080821115610c8f57610c8f614c02565b600061ffff8084168061515057615150614bec565b92169190910492915050565b61ffff818116838216019080821115610c8f57610c8f614c02565b60006020828403121561518957600080fd5b8151611b618161493e565b6000602082840312156151a657600080fd5b81518015158114611b6157600080fd5b601f8211156128f3576000816000526020600020601f850160051c810160208610156151df5750805b601f850160051c820191505b818110156151fe578281556001016151eb565b505050505050565b6001600160401b0383111561521d5761521d6145e0565b6152318361522b8354614e0b565b836151b6565b6000601f841160018114615265576000851561524d5750838201355b600019600387901b1c1916600186901b1783556152bf565b600083815260209020601f19861690835b828110156152965786850135825560209485019460019092019101615276565b50868210156152b35760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6152d081846145be565b6000602060406020840152600084546152e881614e0b565b806040870152606060018084166000811461530a576001811461532657615356565b60ff19851660608a0152606084151560051b8a01019550615356565b89600052602060002060005b8581101561534d5781548b8201860152908301908801615332565b8a016060019650505b50939998505050505050505050565b60006020828403121561537757600080fd5b81516001600160401b038082111561538e57600080fd5b90830190604082860312156153a257600080fd5b6040516040810181811083821117156153bd576153bd6145e0565b604052825160ff81106153cf57600080fd5b81526020830151828111156153e357600080fd5b6153ef87828601614cd5565b60208301525095945050505050565b600060033d11156154175760046000803e5060005160e01c5b90565b600060443d10156154285790565b6040516003193d81016004833e81513d6001600160401b03816024840111818411171561545757505050505090565b828501915081518181111561546f5750505050505090565b843d87010160208285010111156154895750505050505090565b615498602082860101876145f6565b509095945050505050565b7002bb4ba3732ba22b93937b939a634b11d1607d1b8152600082516154cf8160118501602087016142c7565b9190910160110192915050565b6001600160481b03818116838216019080821115610c8f57610c8f614c02565b86815260a060208201528460a0820152848660c0830137600060c086830101526000601f19601f870116820185604084015284606084015260c083820301608084015261554c60c0820185614480565b9998505050505050505050565b60006020828403121561556b57600080fd5b8135611b6181614e8f565b60006020828403121561558857600080fd5b8135611b6181614e80565b6000600182016155a5576155a5614c02565b5060010190565b81356155b781614e80565b60ff8116905081548160ff19821617835560208401356155d681614e8f565b68ffffffffffffffff008160081b16836001600160481b03198416171784555050505050565b6001600160401b0381811683821602808216919082811461561f5761561f614c02565b505092915050565b6000815160c084528051604060c0860152615646610100860182614480565b9050602082015160e086015260ff602085015116602086015260ff604085015116604086015260ff6060850151166060860152608084015191506001600160401b0380831660808701528060a08601511660a087015250809250505092915050565b8681526001600160401b03861660208201528460408201528360608201526156d36080820184614a82565b60c060a082015260006156e960c0830184615627565b98975050505050505050565b8581526001600160401b038516602082015283604082015282606082015260a0608082015260006146de60a0830184615627565b81810381811115610b9f57610b9f614c02565b81516001600160401b03811115615755576157556145e0565b615769816157638454614e0b565b846151b6565b602080601f83116001811461579e57600084156157865750858301515b600019600386901b1c1916600185901b1785556151fe565b600085815260208120601f198616915b828110156157cd578886015182559484019460019091019084016157ae565b50858210156157eb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160401b03818116838216019080821115610c8f57610c8f614c02565b60008261582a5761582a614bec565b500690565b60ff8281168282160390811115610b9f57610b9f614c0256fe5769746e65744f7261636c653a2063616c6c6261636b20657863656564656420676173206c696d69745769746e65744572726f72734c69623a20617373657274696f6e206661696c6564f595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e183f595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e184a26469706673582212202ab2696a5d569ebcbcb4461e7f338c8889f762bce17ea1c616e8cf223d56ef8564736f6c63430008190033",
  "deployedBytecode": "0x6080604052600436106102765760003560e01c80637b1039991161014f578063aeb2ffc1116100c1578063e30c39781161007a578063e30c397814610970578063e5a6b10f1461098e578063e900aa33146109c2578063ec5946db146109d5578063f2fde38b146109e8578063f61921b214610a08576102b3565b8063aeb2ffc114610892578063b207e730146108bf578063bff852fa146108df578063c45a0155146108f4578063c805dd0f14610927578063d5f394881461093c576102b3565b806393d5185c1161011357806393d5185c146107955780639cc56e67146107ca578063a3ff5b00146107ea578063a77fc1a4146107fd578063a9e954b91461082a578063adb7c3f71461085e576102b3565b80637b103999146106b35780637bbdb96e146106e75780637bd88218146107375780638d3d8b38146107575780638da5cb5b14610777576102b3565b80635001f3b5116101e85780636280bce8116101ac5780636280bce8146105d25780636b58960a146105f25780636f07abcc146106125780636fdaab7e1461063f578063715018a61461068957806379ba50971461069e576102b3565b80635001f3b5146104d557806352d1902d1461051c5780635479d9401461055057806354fd4d5014610583578063581f5094146105a5576102b3565b8063234fe6e31161023a578063234fe6e31461040857806328a78d9b146104355780633dc2b7a214610455578063439fab911461046857806345ea6c17146104885780634c9f72e3146104b5576102b3565b8063044ad7be1461032b57806305e742ef1461036057806306eb2c421461038e57806308b7e85e146103ae5780630aa4112a146103db576102b3565b366102b3576102b1604051806040016040528060158152602001741b9bc81d1c985b9cd9995c9cc81858d8d95c1d1959605a1b815250610a28565b005b3480156102bf57600080fd5b506102b16102d160003560f81c610a71565b6102e260ff60003560f01c16610a71565b6102f360ff60003560e81c16610a71565b61030460ff60003560e01c16610a71565b60405160200161031794939291906142eb565b604051602081830303815290604052610a28565b34801561033757600080fd5b5061034b61034636600461437f565b610b63565b60405190151581526020015b60405180910390f35b34801561036c57600080fd5b5061038061037b3660046143af565b610ba5565b604051908152602001610357565b34801561039a57600080fd5b506103806103a9366004614426565b610c96565b3480156103ba57600080fd5b506103ce6103c9366004614467565b611000565b6040516103579190614500565b3480156103e757600080fd5b506103fb6103f6366004614467565b611297565b6040516103579190614595565b34801561041457600080fd5b50610428610423366004614467565b6113fd565b60405161035791906145d2565b34801561044157600080fd5b506102b1610450366004614645565b611408565b6103806104633660046146fb565b6114c1565b34801561047457600080fd5b506102b1610483366004614746565b6115cb565b34801561049457600080fd5b506104a86104a3366004614426565b611abf565b60405161035791906147cb565b3480156104c157600080fd5b506102b16104d0366004614645565b611b68565b3480156104e157600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610357565b34801561052857600080fd5b506103807f000000000000000000000000000000000000000000000000000000000000000081565b34801561055c57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061034b565b34801561058f57600080fd5b50610598611b7c565b604051610357919061482f565b3480156105b157600080fd5b506105c56105c0366004614426565b611bac565b6040516103579190614852565b3480156105de57600080fd5b506103806105ed3660046148de565b611c67565b3480156105fe57600080fd5b5061034b61060d36600461437f565b611d37565b34801561061e57600080fd5b5061063261062d366004614467565b611d8d565b6040516103579190614930565b34801561064b57600080fd5b5061038061065a366004614467565b60009081526000805160206158b38339815191526020526040902054600160b81b90046001600160481b031690565b34801561069557600080fd5b506102b1611d98565b3480156106aa57600080fd5b506102b1611dac565b3480156106bf57600080fd5b506105047f000000000000000000000000000000000000000000000000000000000000000081565b3480156106f357600080fd5b5060408051306020808301919091524682840152825180830384018152606090920190925280519101205b6040516001600160e01b03199091168152602001610357565b34801561074357600080fd5b5061038061075236600461494e565b611e23565b34801561076357600080fd5b50610598610772366004614467565b611ebb565b34801561078357600080fd5b506000546001600160a01b0316610504565b3480156107a157600080fd5b506107b56107b036600461497e565b611f59565b60408051928352602083019190915201610357565b3480156107d657600080fd5b506103806107e53660046149fb565b612088565b6103806107f8366004614a1d565b61215e565b34801561080957600080fd5b5061081d610818366004614467565b6122b8565b6040516103579190614a92565b34801561083657600080fd5b507f00000000000000000000000000000000000000000000000000000000000000003f610380565b34801561086a57600080fd5b5061071e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561089e57600080fd5b506108b26108ad366004614467565b612431565b6040516103579190614abe565b3480156108cb57600080fd5b506103806108da366004614b0b565b612667565b3480156108eb57600080fd5b50610598612782565b34801561090057600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610504565b34801561093357600080fd5b506103806127b9565b34801561094857600080fd5b506105047f000000000000000000000000000000000000000000000000000000000000000081565b34801561097c57600080fd5b506001546001600160a01b0316610504565b34801561099a57600080fd5b506105047f000000000000000000000000000000000000000000000000000000000000000081565b6103806109d0366004614b72565b6127d6565b6102b16109e3366004614467565b612895565b3480156109f457600080fd5b506102b1610a0336600461437f565b612993565b348015610a1457600080fd5b506103ce610a23366004614467565b612a04565b610a30612782565b81604051602001610a42929190614baf565b60408051601f198184030181529082905262461bcd60e51b8252610a689160040161482f565b60405180910390fd5b604080516002808252818301909252606091600091906020820181803683370190505090506000610aa3601085614c18565b610aae906030614c3a565b90506000610abd601086614c53565b610ac8906030614c3a565b905060398260ff161115610ae457610ae1600783614c3a565b91505b60398160ff161115610afe57610afb600782614c3a565b90505b8160f81b83600081518110610b1557610b15614c75565b60200101906001600160f81b031916908160001a9053508060f81b83600181518110610b4357610b43614c75565b60200101906001600160f81b031916908160001a90535091949350505050565b6001600160a01b03811660009081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e185602052604081205460ff165b92915050565b600080610bd37f00000000000000000000000000000000000000000000000000000000000000006003614c8b565b610bfd907f0000000000000000000000000000000000000000000000000000000000000000614ca2565b9050808362ffffff161080610c3f575080610c3d62ffffff85167f0000000000000000000000000000000000000000000000000000000000000000614ca2565b105b15610c5657610c4e8185614c8b565b915050610b9f565b610c8562ffffff84167f0000000000000000000000000000000000000000000000000000000000000000614ca2565b610c4e9085614c8b565b5092915050565b6000610cf86000805160206158938339815191525b336000908152600291909101602090815260409182902054825180840190935260158352743ab730baba3437b934bd32b2103932b837b93a32b960591b9183019190915260ff1690612b26565b60005b82811015610fef576001610d32858584818110610d1a57610d1a614c75565b9050602002810190610d2c9190614cb5565b35612b38565b6003811115610d4357610d436145a8565b14610e28577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f848483818110610d7b57610d7b614c75565b9050602002810190610d8d9190614cb5565b6040516353e8875160e11b815290359073__$e6ff738751a05f257ae0de251e4d5c9673$__9063a7d10ea290610dc890600190600401614930565b600060405180830381865af4158015610de5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e0d9190810190614d24565b604051610e1b929190614d58565b60405180910390a1610fe7565b838382818110610e3a57610e3a614c75565b9050602002810190610e4c9190614cb5565b610e5d906040810190602001614d71565b63ffffffff161580610ea05750838382818110610e7c57610e7c614c75565b9050602002810190610e8e9190614cb5565b610e9c906060810190614d8c565b1590505b15610f1e577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f848483818110610ed857610ed8614c75565b9050602002810190610eea9190614cb5565b35610ef3612782565b604051602001610f039190614dd2565b60408051601f1981840301815290829052610e1b9291614d58565b610fda848483818110610f3357610f33614c75565b9050602002810190610f459190614cb5565b35858584818110610f5857610f58614c75565b9050602002810190610f6a9190614cb5565b610f7b906040810190602001614d71565b868685818110610f8d57610f8d614c75565b9050602002810190610f9f9190614cb5565b60400135878786818110610fb557610fb5614c75565b9050602002810190610fc79190614cb5565b610fd5906060810190614d8c565b612bb9565b610fe49083614ca2565b91505b600101610cfb565b508015610b9f57610b9f3382612d98565b6040805160a08101825260008082526020820181905291810182905260608082019290925260808101919091528160038061103a83612b38565b600381111561104b5761104b6145a8565b146110da576040516353e8875160e11b81526110d59073__$e6ff738751a05f257ae0de251e4d5c9673$__9063a7d10ea29061108b908590600401614930565b600060405180830381865af41580156110a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110d09190810190614d24565b610a28565b611290565b836111236110e782612dce565b546040805180820190915260118152703737ba103a3432903932b8bab2b9ba32b960791b60208201526001600160a01b03909116331490612b26565b61112c85612dce565b6040805160a0810182526004830180546001600160a01b0381168352600160a01b81046001600160401b03166020840152600160e01b900463ffffffff1692820192909252600583015460608201526006909201805460808401919061119190614e0b565b80601f01602080910402602001604051908101604052809291908181526020018280546111bd90614e0b565b801561120a5780601f106111df5761010080835404028352916020019161120a565b820191906000526020600020905b8154815290600101906020018083116111ed57829003601f168201915b505050505081525050935061122a60008051602061589383398151915290565b6000868152600191820160205260408120818155918290829061124f908301826141af565b506000600282018190556003909101805468ffffffffffffffffff1916905560048301818155600584018290559061128a60068501826141af565b50505050505b5050919050565b6112db6040805160c081018252600080825260208083018290528284018290526060808401526080830182905283518085019094528184528301529060a082015290565b6112e482612dce565b6040805160c08101825282546001600160a01b0381168252600160a01b810462ffffff166020830152600160b81b90046001600160481b03169181019190915260018201805491929160608401919061133c90614e0b565b80601f016020809104026020016040519081016040528092919081815260200182805461136890614e0b565b80156113b55780601f1061138a576101008083540402835291602001916113b5565b820191906000526020600020905b81548152906001019060200180831161139857829003601f168201915b5050509183525050600282015460208083019190915260408051808201825260039094015460ff8116855261010090046001600160401b031691840191909152015292915050565b6000610b9f82612dec565b611410612f04565b60005b815181101561148657600082828151811061143057611430614c75565b60200260200101519050600061145160008051602061589383398151915290565b6001600160a01b0392909216600090815260029092016020526040909120805460ff1916911515919091179055600101611413565b507f646436560d9757cb3c0f01da0f62642c6040b00c9a80685f94ef1a7725cad5f1816040516114b69190614e3f565b60405180910390a150565b60006114cd3a84612088565b61150681345b1015604051806040016040528060138152602001721a5b9cdd59999a58da595b9d081c995dd85c99606a1b815250612b26565b61154461151482600a614c8b565b3411156040518060400160405280600f81526020016e1d1bdbc81b5d58da081c995dd85c99608a1b815250612b26565b8261157a61155182612f31565b6040518060400160405280600b81526020016a696e76616c696420534c4160a81b815250612b26565b61158685856000612f8a565b92507ffb94adf28ab7e538d2691d90927f622cbc1100eae6afec58052efdee6c98a6168334866040516115bb93929190614ea4565b60405180910390a1505092915050565b6000546001600160a01b031660608161161e576060838060200190518101906115f49190614eeb565b90935090506116028361305e565b808060200190518101906116169190614f3b565b915050611678565b611661826001600160a01b0316336001600160a01b0316146040518060400160405280600d81526020016c3737ba103a34329037bbb732b960991b815250612b26565b828060200190518101906116759190614f3b565b90505b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe54158015906116e957507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe547f00000000000000000000000000000000000000000000000000000000000000003f145b1561171f5761171f6040518060400160405280601081526020016f185b1c9958591e481d5c19dc9859195960821b815250610a28565b7f00000000000000000000000000000000000000000000000000000000000000003f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe55604080518082019091526012815271696e6578697374656e7420666163746f727960701b60208201526117c3907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b151590612b26565b611896630db7c58b60e41b6001600160e01b0319167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663adb7c3f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185a9190614fd4565b6001600160e01b0319161460405180604001604052806013815260200172756e636f6d706c69616e7420666163746f727960681b815250612b26565b611a1d306001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166346d1d21a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611901573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119259190614ffe565b6001600160a01b03161480156119ed57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e29190614ffe565b6001600160a01b0316145b60405180604001604052806012815260200171646973636f7264616e7420666163746f727960701b815250612b26565b611a2681613077565b7f00000000000000000000000000000000000000000000000000000000000000003f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03167fe73e754121f0bad1327816970101955bfffdf53d270ac509d777c25be070d7f6611aa5611b7c565b604051611ab2919061482f565b60405180910390a4505050565b6040516251ca3160e21b815260609073__$e6ff738751a05f257ae0de251e4d5c9673$__9063014728c490611b1c907f0000000000000000000000000000000000000000000000000000000000000000908790879060040161501b565b600060405180830381865af4158015611b39573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b619190810190615065565b9392505050565b611b70612f04565b611b7981613077565b50565b6060611ba77f000000000000000000000000000000000000000000000000000000000000000061311d565b905090565b6060816001600160401b03811115611bc657611bc66145e0565b604051908082528060200260200182016040528015611bef578160200160208202803683370190505b50905060005b82811015610c8f57611c1e848483818110611c1257611c12614c75565b90506020020135612b38565b828281518110611c3057611c30614c75565b60200260200101906003811115611c4957611c496145a8565b90816003811115611c5c57611c5c6145a8565b905250600101611bf5565b6000611c80600080516020615893833981519152610cab565b84600180611c8d83612b38565b6003811115611c9e57611c9e6145a8565b14611ce3576040516353e8875160e11b8152611cde9073__$e6ff738751a05f257ae0de251e4d5c9673$__9063a7d10ea29061108b908590600401614930565b611d2d565b604080518082019091526016815275726573756c742063616e6e6f7420626520656d70747960501b6020820152611d1d9085151590612b26565b611d2a87428888886131c1565b92505b5050949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000008015610b9f5750816001600160a01b0316611d7d6000546001600160a01b031690565b6001600160a01b03161492915050565b6000610b9f82612b38565b611da0612f04565b611daa600061305e565b565b60015433906001600160a01b03168114611e1a5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610a68565b611b798161305e565b6000602061ffff831615611e4157611e3c600184615120565b611e44565b60005b611e4e919061513b565b611e5990600461515c565b611e879061ffff167f0000000000000000000000000000000000000000000000000000000000000000614c8b565b611eb1907f0000000000000000000000000000000000000000000000000000000000000000614ca2565b611b619084614c8b565b6060611ec6826131e5565b6002018054611ed490614e0b565b80601f0160208091040260200160405190810160405280929190818152602001828054611f0090614e0b565b8015611f4d5780601f10611f2257610100808354040283529160200191611f4d565b820191906000526020600020905b815481529060010190602001808311611f3057829003601f168201915b50505050509050919050565b60008060005b8781101561207c576001611f7e8a8a84818110611c1257611c12614c75565b6003811115611f8f57611f8f6145a8565b03612074576000611fb78a8a84818110611fab57611fab614c75565b90506020020135612dce565b8054909150611fd690600160b81b90046001600160481b031685614ca2565b8154909450600160a01b900462ffffff1615612016578054612005908790600160a01b900462ffffff16610ba5565b61200f9084614ca2565b9250612046565b60028101541561202e57612005868260020154612088565b612039866000611e23565b6120439084614ca2565b92505b8461205382600301613206565b6001600160401b03166120669190614c8b565b6120709084614ca2565b9250505b600101611f5f565b50965096945050505050565b604051633b5bc50360e11b81526004810182905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906376b78a0690602401602060405180830381865afa1580156120f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121169190615177565b905061214c60008261ffff16116040518060400160405280600b81526020016a1a5b9d985b1a590814905160aa1b815250612b26565b6121568482611e23565b949350505050565b60003382612218823b158015906121d957506040516323d0872b60e11b81523060048201526001600160a01b038416906347a10e56906024015b602060405180830381865afa1580156121b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d99190615194565b80156121ea575060008262ffffff16115b6040518060400160405280601081526020016f696e76616c69642063616c6c6261636b60801b815250612b26565b6122233a5b85610ba5565b61222d81346114d3565b61223b61151482600a614c8b565b8561224861155182612f31565b61225460008888612f8a565b9450888861226187612dce565b60010191612270919083615206565b507ffb94adf28ab7e538d2691d90927f622cbc1100eae6afec58052efdee6c98a6168534896040516122a493929190614ea4565b60405180910390a150505050949350505050565b60408051808201909152600081526060602082015260006122d883612dec565b905073__$ef6db950c2506c2808ebbf3a91851f2b43$__63a62b8462826122fe866131e5565b6002016040518363ffffffff1660e01b815260040161231e9291906152c6565b600060405180830381865af492505050801561235c57506040513d6000823e601f3d908101601f191682016040526123599190810190615365565b60015b611b61576123686153fe565b806308c379a0036123c4575061237c61541a565b8061238757506123c6565b604080518082019091528060008152602001826040516020016123aa91906154a3565b60408051601f198184030181529190529052949350505050565b505b3d8080156123f0576040519150601f19603f3d011682016040523d82523d6000602084013e6123f5565b606091505b50604080518082019091528060008152602001604051806060016040528060218152602001615872602191399052949350505050565b50919050565b6124396141e9565b60008281526000805160206158b383398151915260205260409081902081516101008101835281546001600160a01b038116938201938452600160a01b810462ffffff166060830152600160b81b90046001600160481b03166080820152600182018054919384929091849160a0850191906124b490614e0b565b80601f01602080910402602001604051908101604052809291908181526020018280546124e090614e0b565b801561252d5780601f106125025761010080835404028352916020019161252d565b820191906000526020600020905b81548152906001019060200180831161251057829003601f168201915b5050509183525050600282015460208083019190915260408051808201825260039094015460ff8116855261010090046001600160401b039081168584015292810193909352928452815160a0810183526004860180546001600160a01b0381168352600160a01b810490931682860152600160e01b90920463ffffffff1692810192909252600585015460608301526006850180549490930193919290916080840191906125db90614e0b565b80601f016020809104026020016040519081016040528092919081815260200182805461260790614e0b565b80156126545780601f1061262957610100808354040283529160200191612654565b820191906000526020600020905b81548152906001019060200180831161263757829003601f168201915b5050509190925250505090525092915050565b6000612680600080516020615893833981519152610cab565b8560018061268d83612b38565b600381111561269e5761269e6145a8565b146126e3576040516353e8875160e11b81526126de9073__$e6ff738751a05f257ae0de251e4d5c9673$__9063a7d10ea29061108b908590600401614930565b612777565b61272d60008863ffffffff161180156127025750428863ffffffff1611155b6040518060400160405280600d81526020016c06261642074696d657374616d7609c1b815250612b26565b604080518082019091526016815275726573756c742063616e6e6f7420626520656d70747960501b60208201526127679085151590612b26565b61277488888888886131c1565b92505b505095945050505050565b60408051808201909152601c81527f5769746e65744f7261636c65547275737461626c6544656661756c7400000000602082015290565b600060008051602061589383398151915254611ba7906001614ca2565b60003382612814823b158015906121d957506040516323d0872b60e11b81523060048201526001600160a01b038416906347a10e5690602401612198565b61281d3a61221d565b61282781346114d3565b61283561151482600a614c8b565b8561284261155182612f31565b61284d888888612f8a565b94507ffb94adf28ab7e538d2691d90927f622cbc1100eae6afec58052efdee6c98a61685348960405161288293929190614ea4565b60405180910390a1505050509392505050565b806001806128a283612b38565b60038111156128b3576128b36145a8565b146128f8576040516353e8875160e11b81526128f39073__$e6ff738751a05f257ae0de251e4d5c9673$__9063a7d10ea29061108b908590600401614930565b505050565b600061290384612dce565b90503481548290601790612928908490600160b81b90046001600160481b03166154dc565b82546101009290920a6001600160481b03818102199093169183160217909155825460408051888152600160b81b90920490921660208201527fdcced240139c3504c690fc16a776a5a4da3d5d1c139539e75037554ddc21e55b92500160405180910390a150505050565b61299b612f04565b600180546001600160a01b0383166001600160a01b031990911681179091556129cc6000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6040805160a0810182526000808252602082018190529181018290526060808201929092526080810191909152612a3a826131e5565b6040805160a08101825282546001600160a01b0381168252600160a01b81046001600160401b03166020830152600160e01b900463ffffffff169181019190915260018201546060820152600282018054919291608084019190612a9d90614e0b565b80601f0160208091040260200160405190810160405280929190818152602001828054612ac990614e0b565b8015612b165780601f10612aeb57610100808354040283529160200191612b16565b820191906000526020600020905b815481529060010190602001808311612af957829003601f168201915b5050505050815250509050919050565b81612b3457612b3481610a28565b5050565b60008181526000805160206158b3833981519152602052604081206004810154600160e01b900463ffffffff1615612b97576004810154600160a01b90046001600160401b03164310612b8e5750600392915050565b50600292915050565b80546001600160a01b031615612bb05750600192915050565b50600092915050565b600080612bc587612dce565b80546001600160b81b038116808355600160b81b9091046001600160481b03169350909150600160a01b900462ffffff1615612d1157805460009081908190612c34908b9063ffffffff8c16908b908b908b906001600160a01b03811690600160a01b900462ffffff16613236565b9250925092508115612c8457604080518b81523a602082015280820185905290517f37fc320f2d5c58a36c657d3b047384d42550bcc0d9781d13a7d97f8a97c2370c9181900360600190a1612cee565b7f794f0625cb473a6fc2bbc46c87577b8e719f074c42f7fe02abdf08e7435b1d8d8a88883a876000875111612cd15760405180606001604052806029815260200161584960299139612cd3565b865b604051612ce5969594939291906154fc565b60405180910390a15b612d098a8a8a604051806020016040528060008152506135cc565b505050612d8e565b7f1fd7bc07c18ac1c4f6d3111c704cd1b4c29b9f7980b7c5a9a2fddeef29d6c277873a6040805192835260208301919091520160405180910390a1612d8e87878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506135cc92505050565b5095945050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156128f3573d6000803e3d6000fd5b60009081526000805160206158b38339815191526020526040902090565b600080612df883612b38565b90506003816003811115612e0e57612e0e6145a8565b03612ec05760008381526000805160206158b38339815191526020526040812060060180549091908290612e4190614e0b565b90501115612eb6578054601b60fb1b908290600090612e5f90614e0b565b8110612e6d57612e6d614c75565b815460011615612e8c5790600052602060002090602091828204019190065b9054901a600160f81b026001600160f81b03191614612eac576002612156565b6003949350505050565b5060059392505050565b6001816003811115612ed457612ed46145a8565b03612ee25750600192915050565b6002816003811115612ef657612ef66145a8565b03612bb05750600492915050565b6000546001600160a01b03163314611daa5760405163118cdaa760e01b8152336004820152602401610a68565b600080612f446040840160208501615559565b6001600160401b0316118015612f6957506000612f646020840184615576565b60ff16115b8015610b9f5750607f612f7f6020840184615576565b60ff16111592915050565b60006000805160206158938339815191528054600090612fa990615593565b918290555090506000612fbb82612dce565b805460408051808201909152600e81526d185b1c9958591e481c1bdcdd195960921b6020820152919250612ffb916001600160a01b039091161590612b26565b8054346001600160481b0316600160b81b026001600160b81b03199091163362ffffff60a01b191617600160a01b62ffffff861602176001600160b81b031617815560028101859055836003820161305382826155ac565b905050509392505050565b600180546001600160a01b0319169055611b7981613699565b60005b81518110156130ed57600082828151811061309757613097614c75565b6020026020010151905060016130b860008051602061589383398151915290565b6001600160a01b0392909216600090815260029092016020526040909120805460ff191691151591909117905560010161307a565b507f4d570ee36dec878006609360d34ac8d6a0b68d521871ae15a407b6340877ca01816040516114b69190614e3f565b6060600061312a836136e9565b6001600160401b03811115613141576131416145e0565b6040519080825280601f01601f19166020018201604052801561316b576020820181803683370190505b50905060005b8151811015610c8f5783816020811061318c5761318c614c75565b1a60f81b8282815181106131a2576131a2614c75565b60200101906001600160f81b031916908160001a905350600101613171565b60006131d08686868686612bb9565b90506131dc3382612d98565b95945050505050565b60009081526000805160206158b38339815191526020526040902060040190565b80546000906132199060ff166003614c3a565b8254610b9f9160ff169061010090046001600160401b03166155fc565b60008060605a9250601b60fb1b878760008161325457613254614c75565b9050013560f81c60f81b6001600160f81b031916036134a45760006132b66132b189898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061372792505050565b61374c565b90506002815110156133dd57856001600160a01b03166363febc9c868d8d8d4360006040518060c00160405280604051806040016040528060405180602001604052806000815250815260200160008152508152602001600060ff168152602001600060ff168152602001600060ff16815260200160006001600160401b0316815260200160006001600160401b03168152506040518863ffffffff1660e01b815260040161336a969594939291906156a8565b600060405180830381600088803b15801561338457600080fd5b5087f193505050508015613396575060015b6133d4576133a26153fe565b806308c379a0036133c857506133b661541a565b806133c157506133ca565b915061349e565b505b3d6000803e3d6000fd5b6001925061349e565b856001600160a01b03166363febc9c868d8d8d436134148860008151811061340757613407614c75565b60200260200101516138fc565b60fe811115613425576134256145a8565b8860008151811061343857613438614c75565b60200260200101516040518863ffffffff1660e01b8152600401613461969594939291906156a8565b600060405180830381600088803b15801561347b57600080fd5b5087f19350505050801561348d575060015b613499576133a26153fe565b600192505b506135b2565b846001600160a01b031663bcc6307b858c8c8c436134f78e8e8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061372792505050565b6040518763ffffffff1660e01b81526004016135179594939291906156f5565b600060405180830381600088803b15801561353157600080fd5b5087f193505050508015613543575060015b6135ad5761354f6153fe565b806308c379a003613575575061356361541a565b8061356e5750613577565b90506135b2565b505b3d8080156135a1576040519150601f19603f3d011682016040523d82523d6000602084013e6135a6565b606091505b50506135b2565b600191505b5a6135bd9084615729565b92509750975097945050505050565b6040518060a00160405280336001600160a01b03168152602001436001600160401b031681526020018463ffffffff1681526020018381526020018281525061361485612dce565b81516004820180546020850151604086015163ffffffff16600160e01b026001600160e01b036001600160401b03909216600160a01b026001600160e01b03199093166001600160a01b03909516949094179190911716919091178155606083015160058301556080830151909160060190613690908261573c565b50505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b60208110156137225781816020811061370757613707614c75565b1a60f81b6001600160f81b03191615613722576001016136ec565b919050565b61372f61426b565b6040805180820190915282815260006020820152611b618161395f565b60608160048060ff16826040015160ff161461378c57604080830151905161800560e51b815260ff91821660048201529082166024820152604401610a68565b60006137a085600001518660600151613a7f565b90506137ad8160016157fb565b6001600160401b03166001600160401b038111156137cd576137cd6145e0565b60405190808252806020026020018201604052801561380657816020015b6137f361426b565b8152602001906001900390816137eb5790505b50935060005b816001600160401b03168110156138cc5761382686613b47565b955061383186613b6f565b85828151811061384357613843614c75565b6020026020010181905250600460ff16866040015160ff160361389c57600061386b8761374c565b9050806001825161387c9190615729565b8151811061388c5761388c614c75565b60200260200101519650506138c4565b600560ff16866040015160ff16036138b957600061386b87613c07565b6138c286613df1565b505b60010161380c565b508484826001600160401b0316815181106138e9576138e9614c75565b6020026020010181905250505050919050565b60008160008060ff16826040015160ff161461393c57604080830151905161800560e51b815260ff91821660048201529082166024820152604401610a68565b61394e84600001518560600151613a7f565b6001600160401b0316949350505050565b61396761426b565b815151829060000361398c576040516309036d4760e21b815260040160405180910390fd5b600060ff816001600160401b038160015b8015613a0f576139ac89613fb6565b9550816139b881615593565b6007600589901c169650601f881695509250506005198501613a075760208901516139e38a86613a7f565b9350808a602001516139f59190615729565b6139ff9084614ca2565b92505061399d565b50600061399d565b600760ff86161115613a395760405163bd2ac87960e01b815260ff86166004820152602401610a68565b506040805160c08101825298895260ff95861660208a015293851693880193909352921660608601526001600160401b0390811660808601521660a08401525090919050565b600060188260ff161015613a97575060ff8116610b9f565b8160ff16601803613ab557613aab83613fb6565b60ff169050610b9f565b8160ff16601903613ad457613ac983614018565b61ffff169050610b9f565b8160ff16601a03613af557613ae883614084565b63ffffffff169050610b9f565b8160ff16601b03613b1057613b09836140e3565b9050610b9f565b8160ff16601f03613b2957506001600160401b03610b9f565b604051636d785b1360e01b815260ff83166004820152602401610a68565b613b4f61426b565b81518051516020909101511015613b6b578151610b9f9061395f565b5090565b613b7761426b565b6040805160c081018083528451610100830184526060909152600060e0830152825180840190935280518352602090810151908301529081908152602001836020015160ff168152602001836040015160ff168152602001836060015160ff16815260200183608001516001600160401b031681526020018360a001516001600160401b03168152509050919050565b60608160058060ff16826040015160ff1614613c4757604080830151905161800560e51b815260ff91821660048201529082166024820152604401610a68565b6000613c5b85600001518660600151613a7f565b613c669060026155fc565b9050613c738160016157fb565b6001600160401b03166001600160401b03811115613c9357613c936145e0565b604051908082528060200260200182016040528015613ccc57816020015b613cb961426b565b815260200190600190039081613cb15790505b50935060005b816001600160401b03168110156138cc57613cec86613b47565b9550613cf786613b6f565b858281518110613d0957613d09614c75565b6020908102919091010152613d1f60028261581b565b158015613d345750604086015160ff16600314155b15613d6257604080870151905161800560e51b815260ff909116600482015260036024820152604401610a68565b604086015160ff1660041480613d7f5750604086015160ff166005145b15613dde57604086015160009060ff16600414613da457613d9f87613c07565b613dad565b613dad8761374c565b90508060018251613dbe9190615729565b81518110613dce57613dce614c75565b6020026020010151965050613de9565b613de786613df1565b505b600101613cd2565b613df961426b565b604082015160ff161580613e145750604082015160ff166001145b80613e4d5750604082015160ff166007148015613e3957506019826060015160ff1610155b8015613e4d5750601b826060015160ff1611155b15613e8057613e5b82614142565b6001600160401b03168260000151602001818151613e799190614ca2565b9052505090565b604082015160ff1660031480613e9d5750604082015160ff166002145b15613ee1576000613eb683600001518460600151613a7f565b9050806001600160401b03168360000151602001818151613ed79190614ca2565b905250613b6b9050565b604082015160ff1660041480613efe5750604082015160ff166005145b15613f2757613f1582600001518360600151613a7f565b6001600160401b031660808301525090565b604082015160ff166007141580613f595750816060015160ff16601414158015613f595750816060015160ff16601514155b15613b6b5760405162461bcd60e51b815260206004820152602760248201527f5769746e657443424f522e736b69703a20756e737570706f72746564206d616a6044820152666f72207479706560c81b6064820152608401610a68565b6000816020015182600001515180821115613fee576040516363a056dd60e01b81526004810183905260248101829052604401610a68565b835160208501805180830160010151955090819061400b82615593565b8152505050505050919050565b60008160200151600261402b9190614ca2565b82515180821115614059576040516363a056dd60e01b81526004810183905260248101829052604401610a68565b83516020850180516002818401810151965090916140778284614ca2565b9052509395945050505050565b6000816020015160046140979190614ca2565b825151808211156140c5576040516363a056dd60e01b81526004810183905260248101829052604401610a68565b83516020850180516004818401810151965090916140778284614ca2565b6000816020015160086140f69190614ca2565b82515180821115614124576040516363a056dd60e01b81526004810183905260248101829052604401610a68565b83516020850180516008818401810151965090916140778284614ca2565b60006018826060015160ff16101561415c57506000919050565b601c826060015160ff16101561418b576018826060015161417d919061582f565b60ff166001901b9050919050565b6060820151604051636d785b1360e01b815260ff9091166004820152602401610a68565b5080546141bb90614e0b565b6000825580601f106141cb575050565b601f016020900490600052602060002090810190611b7991906142b2565b60405180604001604052806142386040805160c081018252600080825260208083018290528284018290526060808401526080830182905283518085019094528184528301529060a082015290565b81526040805160a08101825260008082526020828101829052928201819052606080830191909152608082015291015290565b604080516101008101909152606060c08201908152600060e08301528190815260006020820181905260408201819052606082018190526080820181905260a09091015290565b5b80821115613b6b57600081556001016142b3565b60005b838110156142e25781810151838201526020016142ca565b50506000910152565b720dcdee840d2dae0d8cadacadce8cac8744060f606b1b815260008551614319816013850160208a016142c7565b855190830190614330816013840160208a016142c7565b85519101906143468160138401602089016142c7565b845191019061435c8160138401602088016142c7565b016013019695505050505050565b6001600160a01b0381168114611b7957600080fd5b60006020828403121561439157600080fd5b8135611b618161436a565b803562ffffff8116811461372257600080fd5b600080604083850312156143c257600080fd5b823591506143d26020840161439c565b90509250929050565b60008083601f8401126143ed57600080fd5b5081356001600160401b0381111561440457600080fd5b6020830191508360208260051b850101111561441f57600080fd5b9250929050565b6000806020838503121561443957600080fd5b82356001600160401b0381111561444f57600080fd5b61445b858286016143db565b90969095509350505050565b60006020828403121561447957600080fd5b5035919050565b600081518084526144988160208601602086016142c7565b601f01601f19169290920160200192915050565b60018060a01b0381511682526001600160401b03602082015116602083015263ffffffff6040820151166040830152606081015160608301526000608082015160a0608085015261215660a0850182614480565b602081526000611b6160208301846144ac565b60018060a01b03815116825262ffffff60208201511660208301526001600160481b0360408201511660408301526000606082015160e0606085015261455c60e0850182614480565b90506080830151608085015260a083015160ff81511660a08601526001600160401b0360208201511660c0860152508091505092915050565b602081526000611b616020830184614513565b634e487b7160e01b600052602160045260246000fd5b600681106145ce576145ce6145a8565b9052565b60208101610b9f82846145be565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b038111828210171561461b5761461b6145e0565b6040525050565b60006001600160401b0382111561463b5761463b6145e0565b5060051b60200190565b6000602080838503121561465857600080fd5b82356001600160401b0381111561466e57600080fd5b8301601f8101851361467f57600080fd5b803561468a81614622565b60405161469782826145f6565b82815260059290921b83018401918481019150878311156146b757600080fd5b928401925b828410156146de5783356146cf8161436a565b825292840192908401906146bc565b979650505050505050565b60006040828403121561242b57600080fd5b6000806060838503121561470e57600080fd5b823591506143d284602085016146e9565b60006001600160401b03821115614738576147386145e0565b50601f01601f191660200190565b60006020828403121561475857600080fd5b81356001600160401b0381111561476e57600080fd5b8201601f8101841361477f57600080fd5b803561478a8161471f565b60405161479782826145f6565b8281528660208486010111156147ac57600080fd5b8260208501602083013760009281016020019290925250949350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561482257603f19888603018452614810858351614480565b945092850192908501906001016147f4565b5092979650505050505050565b602081526000611b616020830184614480565b600481106145ce576145ce6145a8565b6020808252825182820181905260009190848201906040850190845b8181101561489157614881838551614842565b928401929184019160010161486e565b50909695505050505050565b60008083601f8401126148af57600080fd5b5081356001600160401b038111156148c657600080fd5b60208301915083602082850101111561441f57600080fd5b600080600080606085870312156148f457600080fd5b843593506020850135925060408501356001600160401b0381111561491857600080fd5b6149248782880161489d565b95989497509550505050565b60208101610b9f8284614842565b61ffff81168114611b7957600080fd5b6000806040838503121561496157600080fd5b8235915060208301356149738161493e565b809150509250929050565b6000806000806000806080878903121561499757600080fd5b86356001600160401b03808211156149ae57600080fd5b6149ba8a838b016143db565b909850965060208901359150808211156149d357600080fd5b506149e089828a0161489d565b979a9699509760408101359660609091013595509350505050565b60008060408385031215614a0e57600080fd5b50508035926020909101359150565b60008060008060808587031215614a3357600080fd5b84356001600160401b03811115614a4957600080fd5b614a558782880161489d565b9095509350614a69905086602087016146e9565b9150614a776060860161439c565b905092959194509250565b60ff81106145ce576145ce6145a8565b60208152614aa4602082018351614a82565b600060208301516040808401526121566060840182614480565b602081526000825160406020840152614ada6060840182614513565b90506020840151601f198483030160408501526131dc82826144ac565b803563ffffffff8116811461372257600080fd5b600080600080600060808688031215614b2357600080fd5b85359450614b3360208701614af7565b93506040860135925060608601356001600160401b03811115614b5557600080fd5b614b618882890161489d565b969995985093965092949392505050565b600080600060808486031215614b8757600080fd5b83359250614b9885602086016146e9565b9150614ba66060850161439c565b90509250925092565b60008351614bc18184602088016142c7565b6101d160f51b9083019081528351614be08160028401602088016142c7565b01600201949350505050565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060ff831680614c2b57614c2b614bec565b8060ff84160491505092915050565b60ff8181168382160190811115610b9f57610b9f614c02565b600060ff831680614c6657614c66614bec565b8060ff84160691505092915050565b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417610b9f57610b9f614c02565b80820180821115610b9f57610b9f614c02565b60008235607e19833603018112614ccb57600080fd5b9190910192915050565b600082601f830112614ce657600080fd5b8151614cf18161471f565b604051614cfe82826145f6565b828152856020848701011115614d1357600080fd5b6131dc8360208301602088016142c7565b600060208284031215614d3657600080fd5b81516001600160401b03811115614d4c57600080fd5b61215684828501614cd5565b8281526040602082015260006121566040830184614480565b600060208284031215614d8357600080fd5b611b6182614af7565b6000808335601e19843603018112614da357600080fd5b8301803591506001600160401b03821115614dbd57600080fd5b60200191503681900382131561441f57600080fd5b60008251614de48184602087016142c7565b743a20696e76616c6964207265706f7274206461746160581b920191825250601501919050565b600181811c90821680614e1f57607f821691505b60208210810361242b57634e487b7160e01b600052602260045260246000fd5b6020808252825182820181905260009190848201906040850190845b818110156148915783516001600160a01b031683529284019291840191600101614e5b565b60ff81168114611b7957600080fd5b6001600160401b0381168114611b7957600080fd5b83815260208101839052608081018235614ebd81614e80565b60ff1660408301526020830135614ed381614e8f565b6001600160401b038116606084015250949350505050565b60008060408385031215614efe57600080fd5b8251614f098161436a565b60208401519092506001600160401b03811115614f2557600080fd5b614f3185828601614cd5565b9150509250929050565b60006020808385031215614f4e57600080fd5b82516001600160401b03811115614f6457600080fd5b8301601f81018513614f7557600080fd5b8051614f8081614622565b604051614f8d82826145f6565b82815260059290921b8301840191848101915087831115614fad57600080fd5b928401925b828410156146de578351614fc58161436a565b82529284019290840190614fb2565b600060208284031215614fe657600080fd5b81516001600160e01b031981168114611b6157600080fd5b60006020828403121561501057600080fd5b8151611b618161436a565b6001600160a01b0384168152604060208201819052810182905260006001600160fb1b0383111561504b57600080fd5b8260051b8085606085013791909101606001949350505050565b6000602080838503121561507857600080fd5b82516001600160401b038082111561508f57600080fd5b818501915085601f8301126150a357600080fd5b81516150ae81614622565b6040516150bb82826145f6565b82815260059290921b84018501918581019150888311156150db57600080fd5b8585015b83811015615113578051858111156150f75760008081fd5b6151058b89838a0101614cd5565b8452509186019186016150df565b5098975050505050505050565b61ffff828116828216039080821115610c8f57610c8f614c02565b600061ffff8084168061515057615150614bec565b92169190910492915050565b61ffff818116838216019080821115610c8f57610c8f614c02565b60006020828403121561518957600080fd5b8151611b618161493e565b6000602082840312156151a657600080fd5b81518015158114611b6157600080fd5b601f8211156128f3576000816000526020600020601f850160051c810160208610156151df5750805b601f850160051c820191505b818110156151fe578281556001016151eb565b505050505050565b6001600160401b0383111561521d5761521d6145e0565b6152318361522b8354614e0b565b836151b6565b6000601f841160018114615265576000851561524d5750838201355b600019600387901b1c1916600186901b1783556152bf565b600083815260209020601f19861690835b828110156152965786850135825560209485019460019092019101615276565b50868210156152b35760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6152d081846145be565b6000602060406020840152600084546152e881614e0b565b806040870152606060018084166000811461530a576001811461532657615356565b60ff19851660608a0152606084151560051b8a01019550615356565b89600052602060002060005b8581101561534d5781548b8201860152908301908801615332565b8a016060019650505b50939998505050505050505050565b60006020828403121561537757600080fd5b81516001600160401b038082111561538e57600080fd5b90830190604082860312156153a257600080fd5b6040516040810181811083821117156153bd576153bd6145e0565b604052825160ff81106153cf57600080fd5b81526020830151828111156153e357600080fd5b6153ef87828601614cd5565b60208301525095945050505050565b600060033d11156154175760046000803e5060005160e01c5b90565b600060443d10156154285790565b6040516003193d81016004833e81513d6001600160401b03816024840111818411171561545757505050505090565b828501915081518181111561546f5750505050505090565b843d87010160208285010111156154895750505050505090565b615498602082860101876145f6565b509095945050505050565b7002bb4ba3732ba22b93937b939a634b11d1607d1b8152600082516154cf8160118501602087016142c7565b9190910160110192915050565b6001600160481b03818116838216019080821115610c8f57610c8f614c02565b86815260a060208201528460a0820152848660c0830137600060c086830101526000601f19601f870116820185604084015284606084015260c083820301608084015261554c60c0820185614480565b9998505050505050505050565b60006020828403121561556b57600080fd5b8135611b6181614e8f565b60006020828403121561558857600080fd5b8135611b6181614e80565b6000600182016155a5576155a5614c02565b5060010190565b81356155b781614e80565b60ff8116905081548160ff19821617835560208401356155d681614e8f565b68ffffffffffffffff008160081b16836001600160481b03198416171784555050505050565b6001600160401b0381811683821602808216919082811461561f5761561f614c02565b505092915050565b6000815160c084528051604060c0860152615646610100860182614480565b9050602082015160e086015260ff602085015116602086015260ff604085015116604086015260ff6060850151166060860152608084015191506001600160401b0380831660808701528060a08601511660a087015250809250505092915050565b8681526001600160401b03861660208201528460408201528360608201526156d36080820184614a82565b60c060a082015260006156e960c0830184615627565b98975050505050505050565b8581526001600160401b038516602082015283604082015282606082015260a0608082015260006146de60a0830184615627565b81810381811115610b9f57610b9f614c02565b81516001600160401b03811115615755576157556145e0565b615769816157638454614e0b565b846151b6565b602080601f83116001811461579e57600084156157865750858301515b600019600386901b1c1916600185901b1785556151fe565b600085815260208120601f198616915b828110156157cd578886015182559484019460019091019084016157ae565b50858210156157eb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160401b03818116838216019080821115610c8f57610c8f614c02565b60008261582a5761582a614bec565b500690565b60ff8281168282160390811115610b9f57610b9f614c0256fe5769746e65744f7261636c653a2063616c6c6261636b20657863656564656420676173206c696d69745769746e65744572726f72734c69623a20617373657274696f6e206661696c6564f595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e183f595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e184a26469706673582212202ab2696a5d569ebcbcb4461e7f338c8889f762bce17ea1c616e8cf223d56ef8564736f6c63430008190033",
  "linkReferences": {
    "contracts/data/WitnetOracleDataLib.sol": {
      "WitnetOracleDataLib": [
        {
          "length": 20,
          "start": 4308
        },
        {
          "length": 20,
          "start": 5016
        },
        {
          "length": 20,
          "start": 7685
        },
        {
          "length": 20,
          "start": 8171
        },
        {
          "length": 20,
          "start": 10731
        },
        {
          "length": 20,
          "start": 11264
        }
      ]
    },
    "contracts/libs/WitnetErrorsLib.sol": {
      "WitnetErrorsLib": [
        {
          "length": 20,
          "start": 9745
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "contracts/data/WitnetOracleDataLib.sol": {
      "WitnetOracleDataLib": [
        {
          "length": 20,
          "start": 3487
        },
        {
          "length": 20,
          "start": 4195
        },
        {
          "length": 20,
          "start": 6864
        },
        {
          "length": 20,
          "start": 7350
        },
        {
          "length": 20,
          "start": 9910
        },
        {
          "length": 20,
          "start": 10443
        }
      ]
    },
    "contracts/libs/WitnetErrorsLib.sol": {
      "WitnetErrorsLib": [
        {
          "length": 20,
          "start": 8924
        }
      ]
    }
  }
}
