{
  "_format": "hh3-artifact-1",
  "contractName": "WitOracleTrustableReef",
  "sourceName": "contracts/core/trustable/WitOracleTrustableReef.sol",
  "abi": [
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "reportResultGasBase",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "reportResultWithCallbackGasBase",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "reportResultWithCallbackRevertGasBase",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "sstoreFromZeroGas",
              "type": "uint32"
            }
          ],
          "internalType": "struct WitOracleBaseQueriable.EvmImmutables",
          "name": "_immutables",
          "type": "tuple"
        },
        {
          "internalType": "contract WitOracleRadonRegistry",
          "name": "_registry",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_versionTag",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "InvalidDataReport",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "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"
    },
    {
      "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": true,
          "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": true,
          "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": true,
          "internalType": "address",
          "name": "evmRequester",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmReward",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "Witnet.RadonHash",
          "name": "radonHash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "witResultMaxSize",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "witCommitteeSize",
              "type": "uint16"
            },
            {
              "internalType": "uint64",
              "name": "witUnitaryReward",
              "type": "uint64"
            }
          ],
          "indexed": false,
          "internalType": "struct Witnet.QuerySLA",
          "name": "radonParams",
          "type": "tuple"
        }
      ],
      "name": "WitOracleQuery",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        }
      ],
      "name": "WitOracleQueryReport",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "evmConsumer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmCallbackGas",
          "type": "uint256"
        }
      ],
      "name": "WitOracleQueryReportDelivery",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "evmDisputer",
          "type": "address"
        }
      ],
      "name": "WitOracleQueryReportDispute",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "evmSender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmReward",
          "type": "uint256"
        }
      ],
      "name": "WitOracleQueryUpgrade",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "evmOrigin",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "evmConsumer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "evmReporter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "Witnet.TransactionHash",
          "name": "witDrTxHash",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "Witnet.RadonHash",
          "name": "queryRadHash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "witResultMaxSize",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "witCommitteeSize",
              "type": "uint16"
            },
            {
              "internalType": "uint64",
              "name": "witUnitaryReward",
              "type": "uint64"
            }
          ],
          "indexed": false,
          "internalType": "struct Witnet.QuerySLA",
          "name": "queryParams",
          "type": "tuple"
        },
        {
          "indexed": false,
          "internalType": "Witnet.Timestamp",
          "name": "resultTimestamp",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "resultCborBytes",
          "type": "bytes"
        }
      ],
      "name": "WitOracleReport",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "evmConsumer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmCallbackActualGas",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "evmCallbackRevertReason",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "resultCborBytes",
          "type": "bytes"
        }
      ],
      "name": "WitOracleResportDeliveryFailed",
      "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": "numWitnesses",
              "type": "uint8"
            },
            {
              "internalType": "uint64",
              "name": "witnessReward",
              "type": "uint64"
            }
          ],
          "indexed": false,
          "internalType": "struct IWitOracleLegacy.RadonSLA",
          "name": "witnetSLA",
          "type": "tuple"
        }
      ],
      "name": "WitnetQuery",
      "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": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "deleteQuery",
      "outputs": [
        {
          "internalType": "Witnet.QueryEvmReward",
          "name": "",
          "type": "uint72"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "deployer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_evmGasPrice",
          "type": "uint256"
        }
      ],
      "name": "estimateBaseFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "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": "",
          "type": "uint256"
        },
        {
          "internalType": "uint24",
          "name": "_callbackGas",
          "type": "uint24"
        }
      ],
      "name": "estimateBaseFeeWithCallback",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_evmGasPrice",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_evmWitPrice",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "witResultMaxSize",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "witCommitteeSize",
              "type": "uint16"
            },
            {
              "internalType": "uint64",
              "name": "witUnitaryReward",
              "type": "uint64"
            }
          ],
          "internalType": "struct Witnet.QuerySLA",
          "name": "_querySLA",
          "type": "tuple"
        }
      ],
      "name": "estimateExtraFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "_queryIds",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "_evmGasPrice",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_evmWitPrice",
          "type": "uint256"
        }
      ],
      "name": "estimateReportEarnings",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_revenues",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_expenses",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId[]",
          "name": "_queryIds",
          "type": "uint64[]"
        }
      ],
      "name": "extractRadonBytecodes",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "_bytecodes",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "queryIds",
          "type": "uint256[]"
        }
      ],
      "name": "extractWitnetDataRequests",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        }
      ],
      "name": "fetchQueryResponse",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getNextQueryId",
      "outputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "_queryId",
          "type": "uint64"
        }
      ],
      "name": "getQuery",
      "outputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "requester",
                  "type": "address"
                },
                {
                  "internalType": "uint24",
                  "name": "callbackGas",
                  "type": "uint24"
                },
                {
                  "internalType": "bytes",
                  "name": "radonBytecode",
                  "type": "bytes"
                },
                {
                  "internalType": "Witnet.RadonHash",
                  "name": "radonHash",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct Witnet.QueryRequest",
              "name": "request",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "reporter",
                  "type": "address"
                },
                {
                  "internalType": "Witnet.Timestamp",
                  "name": "resultTimestamp",
                  "type": "uint64"
                },
                {
                  "internalType": "Witnet.TransactionHash",
                  "name": "resultDrTxHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "resultCborBytes",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "disputer",
                  "type": "address"
                }
              ],
              "internalType": "struct Witnet.QueryResponse",
              "name": "response",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint16",
                  "name": "witResultMaxSize",
                  "type": "uint16"
                },
                {
                  "internalType": "uint16",
                  "name": "witCommitteeSize",
                  "type": "uint16"
                },
                {
                  "internalType": "uint64",
                  "name": "witUnitaryReward",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.QuerySLA",
              "name": "slaParams",
              "type": "tuple"
            },
            {
              "internalType": "Witnet.QueryUUID",
              "name": "uuid",
              "type": "bytes15"
            },
            {
              "internalType": "Witnet.QueryEvmReward",
              "name": "reward",
              "type": "uint72"
            },
            {
              "internalType": "Witnet.BlockNumber",
              "name": "checkpoint",
              "type": "uint64"
            }
          ],
          "internalType": "struct Witnet.Query",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        }
      ],
      "name": "getQuery",
      "outputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "requester",
                  "type": "address"
                },
                {
                  "internalType": "uint24",
                  "name": "callbackGas",
                  "type": "uint24"
                },
                {
                  "internalType": "uint72",
                  "name": "evmReward",
                  "type": "uint72"
                },
                {
                  "internalType": "bytes",
                  "name": "radonBytecode",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes32",
                  "name": "radonHash",
                  "type": "bytes32"
                },
                {
                  "components": [
                    {
                      "internalType": "uint8",
                      "name": "numWitnesses",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint64",
                      "name": "witnessReward",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct IWitOracleLegacy.RadonSLA",
                  "name": "radonParams",
                  "type": "tuple"
                }
              ],
              "internalType": "struct IWitOracleLegacy.QueryRequest",
              "name": "request",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "reporter",
                  "type": "address"
                },
                {
                  "internalType": "uint64",
                  "name": "finality",
                  "type": "uint64"
                },
                {
                  "internalType": "uint32",
                  "name": "timestamp",
                  "type": "uint32"
                },
                {
                  "internalType": "bytes32",
                  "name": "trail",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "cborBytes",
                  "type": "bytes"
                }
              ],
              "internalType": "struct IWitOracleLegacy.QueryResponse",
              "name": "response",
              "type": "tuple"
            }
          ],
          "internalType": "struct IWitOracleLegacy.Query",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryEvmReward",
      "outputs": [
        {
          "internalType": "Witnet.QueryEvmReward",
          "name": "",
          "type": "uint72"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryRequest",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "requester",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "callbackGas",
              "type": "uint24"
            },
            {
              "internalType": "uint72",
              "name": "evmReward",
              "type": "uint72"
            },
            {
              "internalType": "bytes",
              "name": "radonBytecode",
              "type": "bytes"
            },
            {
              "internalType": "bytes32",
              "name": "radonHash",
              "type": "bytes32"
            },
            {
              "components": [
                {
                  "internalType": "uint8",
                  "name": "numWitnesses",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "witnessReward",
                  "type": "uint64"
                }
              ],
              "internalType": "struct IWitOracleLegacy.RadonSLA",
              "name": "radonParams",
              "type": "tuple"
            }
          ],
          "internalType": "struct IWitOracleLegacy.QueryRequest",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "_queryId",
          "type": "uint64"
        }
      ],
      "name": "getQueryRequest",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "requester",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "callbackGas",
              "type": "uint24"
            },
            {
              "internalType": "bytes",
              "name": "radonBytecode",
              "type": "bytes"
            },
            {
              "internalType": "Witnet.RadonHash",
              "name": "radonHash",
              "type": "bytes32"
            }
          ],
          "internalType": "struct Witnet.QueryRequest",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "_queryId",
          "type": "uint64"
        }
      ],
      "name": "getQueryResponse",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "reporter",
              "type": "address"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "resultTimestamp",
              "type": "uint64"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "resultDrTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "resultCborBytes",
              "type": "bytes"
            },
            {
              "internalType": "address",
              "name": "disputer",
              "type": "address"
            }
          ],
          "internalType": "struct Witnet.QueryResponse",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResponse",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "reporter",
              "type": "address"
            },
            {
              "internalType": "uint64",
              "name": "finality",
              "type": "uint64"
            },
            {
              "internalType": "uint32",
              "name": "timestamp",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "trail",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "cborBytes",
              "type": "bytes"
            }
          ],
          "internalType": "struct IWitOracleLegacy.QueryResponse",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResponseStatus",
      "outputs": [
        {
          "internalType": "enum IWitOracleLegacy.QueryResponseStatus",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResult",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum Witnet.ResultStatus",
              "name": "status",
              "type": "uint8"
            },
            {
              "internalType": "enum Witnet.RadonDataTypes",
              "name": "dataType",
              "type": "uint8"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "drTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "finality",
              "type": "uint256"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint256",
                      "name": "cursor",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct WitnetBuffer.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct WitnetCBOR.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.DataResult",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResultCborBytes",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResultError",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "code",
              "type": "uint8"
            },
            {
              "internalType": "string",
              "name": "reason",
              "type": "string"
            }
          ],
          "internalType": "struct IWitOracleLegacy.ResultError",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResultStatus",
      "outputs": [
        {
          "internalType": "enum Witnet.ResultStatus",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResultStatusDescription",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResultTrails",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "queryUUID",
          "type": "bytes32"
        },
        {
          "internalType": "Witnet.TransactionHash",
          "name": "resultDrTxHash",
          "type": "bytes32"
        },
        {
          "internalType": "Witnet.Timestamp",
          "name": "resultTimestamp",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "resultFinalityBlock",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryStatus",
      "outputs": [
        {
          "internalType": "enum Witnet.QueryStatus",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "_queryIds",
          "type": "uint256[]"
        }
      ],
      "name": "getQueryStatusBatch",
      "outputs": [
        {
          "internalType": "enum Witnet.QueryStatus[]",
          "name": "_status",
          "type": "uint8[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryStatusString",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_initData",
          "type": "bytes"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_queryResponseReporter",
          "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": [
        {
          "components": [
            {
              "internalType": "Witnet.TransactionHash",
              "name": "witDrTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "Witnet.RadonHash",
              "name": "queryRadHash",
              "type": "bytes32"
            },
            {
              "components": [
                {
                  "internalType": "uint16",
                  "name": "witResultMaxSize",
                  "type": "uint16"
                },
                {
                  "internalType": "uint16",
                  "name": "witCommitteeSize",
                  "type": "uint16"
                },
                {
                  "internalType": "uint64",
                  "name": "witUnitaryReward",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.QuerySLA",
              "name": "queryParams",
              "type": "tuple"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "resultTimestamp",
              "type": "uint64"
            },
            {
              "internalType": "bytes",
              "name": "resultCborBytes",
              "type": "bytes"
            }
          ],
          "internalType": "struct Witnet.DataPushReport",
          "name": "_report",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "_signature",
          "type": "bytes"
        }
      ],
      "name": "parseDataReport",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum Witnet.ResultStatus",
              "name": "status",
              "type": "uint8"
            },
            {
              "internalType": "enum Witnet.RadonDataTypes",
              "name": "dataType",
              "type": "uint8"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "drTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "finality",
              "type": "uint256"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint256",
                      "name": "cursor",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct WitnetBuffer.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct WitnetCBOR.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.DataResult",
          "name": "_result",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_queryRadHash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "numWitnesses",
              "type": "uint8"
            },
            {
              "internalType": "uint64",
              "name": "witnessReward",
              "type": "uint64"
            }
          ],
          "internalType": "struct IWitOracleLegacy.RadonSLA",
          "name": "_querySLA",
          "type": "tuple"
        }
      ],
      "name": "postRequest",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_queryRadHash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "numWitnesses",
              "type": "uint8"
            },
            {
              "internalType": "uint64",
              "name": "witnessReward",
              "type": "uint64"
            }
          ],
          "internalType": "struct IWitOracleLegacy.RadonSLA",
          "name": "_querySLA",
          "type": "tuple"
        },
        {
          "internalType": "uint24",
          "name": "_queryCallbackGas",
          "type": "uint24"
        }
      ],
      "name": "postRequestWithCallback",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "Witnet.TransactionHash",
              "name": "witDrTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "Witnet.RadonHash",
              "name": "queryRadHash",
              "type": "bytes32"
            },
            {
              "components": [
                {
                  "internalType": "uint16",
                  "name": "witResultMaxSize",
                  "type": "uint16"
                },
                {
                  "internalType": "uint16",
                  "name": "witCommitteeSize",
                  "type": "uint16"
                },
                {
                  "internalType": "uint64",
                  "name": "witUnitaryReward",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.QuerySLA",
              "name": "queryParams",
              "type": "tuple"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "resultTimestamp",
              "type": "uint64"
            },
            {
              "internalType": "bytes",
              "name": "resultCborBytes",
              "type": "bytes"
            }
          ],
          "internalType": "struct Witnet.DataPushReport",
          "name": "_report",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "_signature",
          "type": "bytes"
        }
      ],
      "name": "pushDataReport",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum Witnet.ResultStatus",
              "name": "status",
              "type": "uint8"
            },
            {
              "internalType": "enum Witnet.RadonDataTypes",
              "name": "dataType",
              "type": "uint8"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "drTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "finality",
              "type": "uint256"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint256",
                      "name": "cursor",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct WitnetBuffer.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct WitnetCBOR.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.DataResult",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.RadonHash",
          "name": "_queryRAD",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "witResultMaxSize",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "witCommitteeSize",
              "type": "uint16"
            },
            {
              "internalType": "uint64",
              "name": "witUnitaryReward",
              "type": "uint64"
            }
          ],
          "internalType": "struct Witnet.QuerySLA",
          "name": "_querySLA",
          "type": "tuple"
        }
      ],
      "name": "queryData",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.RadonHash",
          "name": "_queryRAD",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "witResultMaxSize",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "witCommitteeSize",
              "type": "uint16"
            },
            {
              "internalType": "uint64",
              "name": "witUnitaryReward",
              "type": "uint64"
            }
          ],
          "internalType": "struct Witnet.QuerySLA",
          "name": "_querySLA",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "consumer",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "gasLimit",
              "type": "uint24"
            }
          ],
          "internalType": "struct Witnet.QueryCallback",
          "name": "_queryCallback",
          "type": "tuple"
        }
      ],
      "name": "queryDataWithCallback",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "registry",
      "outputs": [
        {
          "internalType": "contract IWitOracleRadonRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "_queryId",
          "type": "uint64"
        },
        {
          "internalType": "Witnet.Timestamp",
          "name": "_resultTimestamp",
          "type": "uint64"
        },
        {
          "internalType": "Witnet.TransactionHash",
          "name": "_witDrTxHash",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "_resultCborBytes",
          "type": "bytes"
        }
      ],
      "name": "reportResult",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "drTxHash",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "resultCborBytes",
          "type": "bytes"
        }
      ],
      "name": "reportResult",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "_queryId",
          "type": "uint64"
        },
        {
          "internalType": "Witnet.TransactionHash",
          "name": "_witDrTxHash",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "_resultCborBytes",
          "type": "bytes"
        }
      ],
      "name": "reportResult",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "queryId",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "resultTimestamp",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "drTxHash",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "resultCborBytes",
          "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": "resultTimestamp",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "drTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "resultCborBytes",
              "type": "bytes"
            }
          ],
          "internalType": "struct IWitOracleLegacy.BatchResultLegacy[]",
          "name": "results",
          "type": "tuple[]"
        }
      ],
      "name": "reportResultBatch",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_batchReward",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "Witnet.QueryId",
              "name": "queryId",
              "type": "uint64"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "resultTimestamp",
              "type": "uint64"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "drTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "resultCborBytes",
              "type": "bytes"
            }
          ],
          "internalType": "struct IWitOracleQueriableTrustableReporter.BatchResult[]",
          "name": "_batchResults",
          "type": "tuple[]"
        }
      ],
      "name": "reportResultBatch",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_batchReward",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_queryResponseReporters",
          "type": "address[]"
        }
      ],
      "name": "setReporters",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "specs",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "pure",
      "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": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "upgradeQueryEvmReward",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6102006040523361010052348015610015575f5ffd5b50604051615e00380380615e0083398101604081905261003491610349565b8083835f6001846040518060400160405280601981526020017f696f2e7769746e65742e70726f786961626c652e626f6172640000000000000081525082335f6001600160a01b0316816001600160a01b0316036100ac57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100b581610232565b5030608052151560c052600160025560e0919091528051602091820120610120526001600160a01b039283166101405260408051808201909152601381527f696e6578697374656e74207265676973747279000000000000000000000000009181019190915261012b9284163b1515915061024e565b6101ec63a614fef760e01b6001600160e01b031916826001600160a01b031663adb7c3f76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561017c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a091906103fa565b6001600160e01b031916146040518060400160405280601481526020017f756e636f6d706c69616e7420726567697374727900000000000000000000000081525061024e60201b60201c565b6001600160a01b031661016052805163ffffffff90811661018052602082015181166101a052604082015181166101c052606090910151166101e0525061049d92505050565b600180546001600160a01b031916905561024b81610260565b50565b8161025c5761025c816102af565b5050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60408051808201909152601681527f5769744f7261636c65547275737461626c6552656566000000000000000000006020820152816040516020016102f592919061043f565b60408051601f198184030181529082905262461bcd60e51b82526100a391600401610468565b805163ffffffff8116811461032e575f5ffd5b919050565b80516001600160a01b038116811461032e575f5ffd5b5f5f5f83850360c081121561035c575f5ffd5b6080811215610369575f5ffd5b50604051608081016001600160401b038111828210171561039857634e487b7160e01b5f52604160045260245ffd5b6040526103a48561031b565b81526103b26020860161031b565b60208201526103c36040860161031b565b60408201526103d46060860161031b565b606082015292506103e760808501610333565b60a0949094015192959394509192915050565b5f6020828403121561040a575f5ffd5b81516001600160e01b031981168114610421575f5ffd5b9392505050565b5f81518060208401855e5f93019283525090919050565b5f61044a8285610428565b6101d160f51b815261045f6002820185610428565b95945050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161589661056a5f395f81816114c001528181612d61015261320401525f61323001525f818161327001526132b801525f6114ec01525f818161092f01528181611e7e015261278101525f610cc101525f61071a01525f610c7101525f611ef001525f8181610769015261207c01525f50505f81816106d101528181610b0e01528181611887015281816118f80152818161193f015261196101526158965ff3fe6080604052600436106103ac575f3560e01c806379ba5097116101e6578063adb7c3f71161010c578063d0a92a081161009f578063e900aa331161006e578063e900aa3314610ce3578063ec5946db14610cf6578063f2fde38b14610d09578063f61921b214610d28576103ac565b8063d0a92a0814610c41578063d5f3948814610c60578063e30c397814610c93578063e5a6b10f14610cb0576103ac565b8063bff852fa116100db578063bff852fa14610bb6578063c258134814610bca578063c805dd0f14610be9578063ca7da98b14610c15576103ac565b8063adb7c3f714610b33578063aeb2ffc114610b4c578063b207e73014610b78578063b783922b14610b97576103ac565b80638d3d8b3811610184578063a58f680311610153578063a58f680314610a95578063a667533f14610aa8578063a77fc1a414610ad4578063a9e954b914610b00576103ac565b80638d3d8b3814610a075780638da5cb5b14610a2657806393d5185c14610a425780639cc56e6714610a76576103ac565b80637bd88218116101c05780637bd882181461097e5780637c1fbda31461099d578063838d44e2146109bc5780638cfcdea2146109db576103ac565b806379ba50971461090a5780637b1039991461091e5780637bbdb96e14610951576103ac565b80634cddf615116102d657806359209b39116102695780636f07abcc116102385780636f07abcc146108565780636fdaab7e14610875578063715018a6146108d757806376d0e357146108eb576103ac565b806359209b39146107cd5780636280bce8146107f95780636b58960a146108185780636d0d6a7e14610837576103ac565b80635304bba2116102a55780635304bba21461073c5780635479d9401461075b57806354fd4d501461078d578063581f5094146107a1576103ac565b80634cddf615146106785780634e6c13a1146106a45780635001f3b5146106c357806352d1902d14610709576103ac565b806328a78d9b1161034e5780633fa595761161031d5780633fa59576146105c0578063439fab911461060e57806345ea6c171461062d5780634c9f72e314610659576103ac565b806328a78d9b1461055a57806339a8653e1461057b5780633b3195b71461059a5780633dc2b7a2146105ad576103ac565b806308b7e85e1161038a57806308b7e85e146104b75780630aa4112a146104e35780631aea970b1461050f578063234fe6e31461052e576103ac565b8063044ad7be1461043757806305e742ef1461046b57806306eb2c4214610498575b3480156103b7575f5ffd5b506103c55f3560f81c610d54565b6103d560ff5f3560f01c16610d54565b6103e560ff5f3560e81c16610d54565b6103f560ff5f3560e01c16610d54565b6040516020016104089493929190613b72565b60408051601f198184030181529082905262461bcd60e51b825261042e91600401613bfe565b60405180910390fd5b348015610442575f5ffd5b50610456610451366004613c24565b610e40565b60405190151581526020015b60405180910390f35b348015610476575f5ffd5b5061048a610485366004613c4f565b610e81565b604051908152602001610462565b3480156104a3575f5ffd5b5061048a6104b2366004613cc4565b610e94565b3480156104c2575f5ffd5b506104d66104d1366004613d02565b6110b3565b6040516104629190613bfe565b3480156104ee575f5ffd5b506105026104fd366004613d02565b6110d3565b6040516104629190613d9d565b34801561051a575f5ffd5b5061048a610529366004613e00565b611327565b348015610539575f5ffd5b5061054d610548366004613d02565b6113d4565b6040516104629190613e91565b348015610565575f5ffd5b50610579610574366004613cc4565b611449565b005b348015610586575f5ffd5b5061048a610595366004613d02565b6114ba565b61048a6105a8366004613fe0565b61151a565b61048a6105bb366004614063565b611708565b3480156105cb575f5ffd5b506105df6105da366004613d02565b611760565b604051610462949392919093845260208401929092526001600160401b03166040830152606082015260800190565b348015610619575f5ffd5b5061057961062836600461410c565b6117b1565b348015610638575f5ffd5b5061064c610647366004613cc4565b6119e5565b604051610462919061413d565b348015610664575f5ffd5b50610579610673366004613cc4565b611a8c565b348015610683575f5ffd5b50610697610692366004613d02565b611acd565b60405161046291906141b5565b3480156106af575f5ffd5b5061048a6106be3660046141e5565b611b41565b3480156106ce575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610462565b348015610714575f5ffd5b5061048a7f000000000000000000000000000000000000000000000000000000000000000081565b348015610747575f5ffd5b5061064c61075636600461430c565b611e4c565b348015610766575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610456565b348015610798575f5ffd5b506104d6611ee9565b3480156107ac575f5ffd5b506107c06107bb366004613cc4565b611f19565b60405161046291906143b1565b3480156107d8575f5ffd5b506107ec6107e7366004613d02565b611fda565b60405161046291906143fc565b348015610804575f5ffd5b5061048a6108133660046144e8565b612056565b348015610823575f5ffd5b50610456610832366004613c24565b612079565b348015610842575f5ffd5b506107ec610851366004614536565b6120cd565b348015610861575f5ffd5b5061054d610870366004613d02565b6121c8565b348015610880575f5ffd5b506108bf61088f366004613d02565b5f9081525f5160206158415f395f51905f526020526040902060090154600160781b90046001600160481b031690565b6040516001600160481b039091168152602001610462565b3480156108e2575f5ffd5b50610579612202565b3480156108f6575f5ffd5b5061048a6109053660046145a1565b612215565b348015610915575f5ffd5b5061057961227c565b348015610929575f5ffd5b506106f17f000000000000000000000000000000000000000000000000000000000000000081565b34801561095c575f5ffd5b506109656122f6565b6040516001600160e01b03199091168152602001610462565b348015610989575f5ffd5b5061048a6109983660046145e0565b612300565b3480156109a8575f5ffd5b506108bf6109b7366004613d02565b61230c565b3480156109c7575f5ffd5b506104d66109d6366004613d02565b612401565b3480156109e6575f5ffd5b506109fa6109f5366004614603565b612483565b60405161046291906146c7565b348015610a12575f5ffd5b506104d6610a21366004613d02565b612595565b348015610a31575f5ffd5b505f546001600160a01b03166106f1565b348015610a4d575f5ffd5b50610a61610a5c366004614783565b6125aa565b60408051928352602083019190915201610462565b348015610a81575f5ffd5b5061048a610a903660046147fe565b61275d565b61048a610aa336600461481e565b612823565b348015610ab3575f5ffd5b50610ac7610ac2366004614603565b6128e4565b6040516104629190614840565b348015610adf575f5ffd5b50610af3610aee366004613d02565b612996565b6040516104629190614852565b348015610b0b575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000003f61048a565b348015610b3e575f5ffd5b506304722eaf60e31b610965565b348015610b57575f5ffd5b50610b6b610b66366004613d02565b612a7e565b60405161046291906148cc565b348015610b83575f5ffd5b5061048a610b92366004614917565b612ab0565b348015610ba2575f5ffd5b506107ec610bb1366004614536565b612ada565b348015610bc1575f5ffd5b506104d6612b5e565b348015610bd5575f5ffd5b506104d6610be4366004613d02565b612b8e565b348015610bf4575f5ffd5b50610bfd612c5f565b6040516001600160401b039091168152602001610462565b348015610c20575f5ffd5b50610c34610c2f366004614603565b612c83565b604051610462919061493b565b348015610c4c575f5ffd5b5061048a610c5b36600461494d565b612d28565b348015610c6b575f5ffd5b506106f17f000000000000000000000000000000000000000000000000000000000000000081565b348015610c9e575f5ffd5b506001546001600160a01b03166106f1565b348015610cbb575f5ffd5b506106f17f000000000000000000000000000000000000000000000000000000000000000081565b61048a610cf1366004614980565b612db2565b610579610d04366004613d02565b612e22565b348015610d14575f5ffd5b50610579610d23366004613c24565b612f7c565b348015610d33575f5ffd5b50610d47610d42366004613d02565b612fec565b60405161046291906149be565b6040805160028082528183019092526060915f91906020820181803683370190505090505f610d846010856149f8565b610d8f906030614a19565b90505f610d9d601086614a32565b610da8906030614a19565b905060398260ff161115610dc457610dc1600783614a19565b91505b60398160ff161115610dde57610ddb600782614a19565b90505b8160f81b835f81518110610df457610df4614a53565b60200101906001600160f81b03191690815f1a9053508060f81b83600181518110610e2157610e21614a53565b60200101906001600160f81b03191690815f1a90535091949350505050565b6001600160a01b0381165f9081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e185602052604081205460ff165b92915050565b5f610e8d6001836131fd565b9392505050565b5f610ef35f5160206158215f395f51905f525b335f908152600291909101602090815260409182902054825180840190935260158352743ab730baba3437b934bd32b2103932b837b93a32b960591b9183019190915260ff16906132e6565b5f826001600160401b03811115610f0c57610f0c613ea4565b604051908082528060200260200182016040528015610f5b57816020015b604080516080810182525f80825260208083018290529282015260608082015282525f19909201910181610f2a5790505b5090505f5b838110156110a1576040518060800160405280868684818110610f8557610f85614a53565b9050602002810190610f979190614a67565b356001600160401b03168152602001868684818110610fb857610fb8614a53565b9050602002810190610fca9190614a67565b610fdb906040810190602001614a85565b63ffffffff168152602001868684818110610ff857610ff8614a53565b905060200281019061100a9190614a67565b60400135815260200186868481811061102557611025614a53565b90506020028101906110379190614a67565b611045906060810190614a9e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050915250825183908390811061108e5761108e614a53565b6020908102919091010152600101610f60565b506110ab81611b41565b949350505050565b60606110be8261230c565b505060408051602081019091525f8152919050565b6111166040805160c0810182525f80825260208083018290528284018290526060808401526080830182905283518085019094528184528301529060a082015290565b5f8281525f5160206158415f395f51905f526020526040902060018101805461ffff919061114390614ae0565b9050111561119e576040805160c0810182525f8082526020808301829052828401829052835180820185528281526060840152600290940154608083015282518084019093528083529282019290925260a082015292915050565b6003810154156112c7576040805160c08101825282546001600160a01b0381168252600160a01b810462ffffff166020830152600160b81b90046001600160481b0316918101919091526001820180546060830191906111fd90614ae0565b80601f016020809104026020016040519081016040528092919081815260200182805461122990614ae0565b80156112745780601f1061124b57610100808354040283529160200191611274565b820191905f5260205f20905b81548152906001019060200180831161125757829003601f168201915b5050509183525050600283015460208083019190915260408051808201825260089095015462010000810460ff16865264010000000090046001600160401b031691850191909152019190915292915050565b6040805160c08101825282546001600160a01b0381168252600160a01b900462ffffff1660208201526009830154600160781b90046001600160481b0316918101919091526001820180546060830191906111fd90614ae0565b50919050565b5f61133e5f5160206158215f395f51905f52610ea7565b6113786001600160401b03861615156040518060400160405280600d81526020016c06261642074696d657374616d7609c1b8152506132e6565b604080518082019091526016815275726573756c742063616e6e6f7420626520656d70747960501b60208201526113b290831515906132e6565b6113c8866001600160401b0316868686866132f8565b90505b95945050505050565b60405163234fe6e360e01b8152600481018290525f9073__$713c4f4487e8756194dbc5b3b091cd4345$__9063234fe6e3906024015b602060405180830381865af4158015611425573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7b9190614b1e565b611451613346565b6040516328a78d9b60e01b815273__$713c4f4487e8756194dbc5b3b091cd4345$__906328a78d9b9061148a9085908590600401614b39565b5f6040518083038186803b1580156114a0575f5ffd5b505af41580156114b2573d5f5f3e3d5ffd5b505050505050565b5f6114e67f00000000000000000000000000000000000000000000000000000000000000006004614b85565b611510907f0000000000000000000000000000000000000000000000000000000000000000614b9c565b610e7b9083614b85565b5f3461152b60018460200151610e81565b61156381831015604051806040016040528060138152602001721a5b9cdd59999a58da595b9d081c995dd85c99606a1b8152506132e6565b6115a161157182600a614b85565b8311156040518060400160405280600f81526020016e1d1bdbc81b5d58da081c995dd85c99608a1b8152506132e6565b846115d76115ae82613372565b6040518060400160405280600b81526020016a696e76616c696420534c4160a81b8152506132e6565b8461169d5f825f01516001600160a01b03163b11801561165b575081516040516323d0872b60e11b81523060048201526001600160a01b03909116906347a10e5690602401602060405180830381865afa158015611637573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061165b9190614baf565b801561166f57505f826020015162ffffff16115b6040518060400160405280601081526020016f696e76616c69642063616c6c6261636b60801b8152506132e6565b855160208701516116b19190348b8b6133ad565b9450336001600160a01b03167ffbe74eb38ea9de3d74d481a4f701ae121d794895c5797db8260d06d317901d26600134888c8c6040516116f5959493929190614bce565b60405180910390a2505050509392505050565b5f610e8d836040518060600160405280602061ffff168152602001855f0160208101906117359190614c35565b60ff1681526020908101906117509060408801908801614603565b6001600160401b03169052612823565b5f5f5f5f5f61176e86613429565b600981015460058201546004909201546001600160881b0319608883901b16999298506001600160401b03600160c01b9182900481169850910416945092505050565b5f546001600160a01b0316806117e757818060200190518101906117d59190614cb1565b925090506117e281613445565b61182f565b336001600160a01b0382161461182f5760405162461bcd60e51b815260206004820152600d60248201526c3737ba103a34329037bbb732b960991b604482015260640161042e565b6118388261345e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe54158015906118a957507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe547f00000000000000000000000000000000000000000000000000000000000000003f145b156118f65760405162461bcd60e51b815260206004820152601c60248201527f616c726561647920696e697469616c697a656420636f64656861736800000000604482015260640161042e565b7f00000000000000000000000000000000000000000000000000000000000000003f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc600201557f00000000000000000000000000000000000000000000000000000000000000003f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661199a5f546001600160a01b031690565b6001600160a01b03167fe73e754121f0bad1327816970101955bfffdf53d270ac509d777c25be070d7f66119cc611ee9565b6040516119d99190613bfe565b60405180910390a45050565b60605f826001600160401b03811115611a0057611a00613ea4565b604051908082528060200260200182016040528015611a29578160200160208202803683370190505b5090505f5b8151811015611a8257848482818110611a4957611a49614a53565b90506020020135828281518110611a6257611a62614a53565b6001600160401b0390921660209283029190910190910152600101611a2e565b506110ab81611e4c565b611a94613346565b604051634c9f72e360e01b815273__$713c4f4487e8756194dbc5b3b091cd4345$__90634c9f72e39061148a9085908590600401614b39565b604051634cddf61560e01b8152600481018290525f9073__$713c4f4487e8756194dbc5b3b091cd4345$__90634cddf61590602401602060405180830381865af4158015611b1d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7b9190614d0d565b5f611b585f5160206158215f395f51905f52610ea7565b5f5b8251811015611e36575f838281518110611b7657611b76614a53565b6020908102919091010151516001600160401b031690506001611b98826121c8565b6006811115611ba957611ba9613e6d565b14611ca6577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f848381518110611be157611be1614a53565b60200260200101515f0151611bf4612b5e565b604051638f191e5f60e01b815273__$713c4f4487e8756194dbc5b3b091cd4345$__90638f191e5f90611c2c90600190600401613e91565b5f60405180830381865af4158015611c46573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611c6d9190810190614d26565b604051602001611c7e929190614d6a565b60408051601f1981840301815290829052611c999291614d8a565b60405180910390a1611e2d565b426001600160401b0316848381518110611cc257611cc2614a53565b6020026020010151602001516001600160401b03161180611d155750611d15848381518110611cf357611cf3614a53565b6020026020010151602001516001600160401b03166001600160401b03161590565b80611d3d5750838281518110611d2d57611d2d614a53565b602002602001015160600151515f145b15611d98577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f848381518110611d7557611d75614a53565b60200260200101515f0151611d88612b5e565b604051602001611c7e9190614dab565b611e20848381518110611dad57611dad614a53565b60200260200101515f01516001600160401b0316858481518110611dd357611dd3614a53565b602002602001015160200151868581518110611df157611df1614a53565b602002602001015160400151878681518110611e0f57611e0f614a53565b6020026020010151606001516134d7565b611e2a9084614b9c565b92505b50600101611b5a565b508015611e4757611e473382613615565b919050565b604051633ab5a66d60e11b815260609073__$713c4f4487e8756194dbc5b3b091cd4345$__9063756b4cda90611ea8907f0000000000000000000000000000000000000000000000000000000000000000908690600401614ddb565b5f60405180830381865af4158015611ec2573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b9190810190614e39565b6060611f147f0000000000000000000000000000000000000000000000000000000000000000613648565b905090565b6060816001600160401b03811115611f3357611f33613ea4565b604051908082528060200260200182016040528015611f5c578160200160208202803683370190505b5090505f5b82811015611fd357611f8a848483818110611f7e57611f7e614a53565b905060200201356121c8565b828281518110611f9c57611f9c614a53565b60200260200101906006811115611fb557611fb5613e6d565b90816006811115611fc857611fc8613e6d565b905250600101611f61565b5092915050565b611fe2613a5e565b6040516359209b3960e01b81526004810183905273__$713c4f4487e8756194dbc5b3b091cd4345$__906359209b39906024015f60405180830381865af415801561202f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b9190810190615071565b5f61206d5f5160206158215f395f51905f52610ea7565b6113cb85858585612215565b5f7f00000000000000000000000000000000000000000000000000000000000000008015610e7b5750816001600160a01b03166120bd5f546001600160a01b031690565b6001600160a01b03161492915050565b6120d5613a5e565b5f5f73__$713c4f4487e8756194dbc5b3b091cd4345$__631600b78b8787876040518463ffffffff1660e01b815260040161211293929190615114565b5f60405180830381865af415801561212c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261215391908101906151c4565b909250905033327f7a9001dc4425127400f09e4c0b02908ad0e1f642ee9c92932a222c686674648284893560208b013560408c0161219760c08e0160a08f01614603565b6121a460c08f018f614a9e565b6040516121b79796959493929190615207565b60405180910390a395945050505050565b604051631bc1eaf360e21b8152600481018290525f9073__$713c4f4487e8756194dbc5b3b091cd4345$__90636f07abcc9060240161140a565b61220a613346565b6122135f613445565b565b5f61222c5f5160206158215f395f51905f52610ea7565b604080518082019091526016815275726573756c742063616e6e6f7420626520656d70747960501b602082015261226690831515906132e6565b6113cb856001600160401b0316428686866132f8565b60015433906001600160a01b031681146122ea5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161042e565b6122f381613445565b50565b5f611f14306136e9565b5f610e8d600183613727565b604051637c1fbda360e01b8152600481018290525f9073__$713c4f4487e8756194dbc5b3b091cd4345$__90637c1fbda390602401602060405180830381865af492505050801561237a575060408051601f3d908101601f1916820190925261237791810190615278565b60015b6123e757612386615291565b806308c379a0036123ae575061239a6152a9565b806123a557506123b0565b61132181613731565b505b3d8080156123d9576040519150601f19603f3d011682016040523d82523d5f602084013e6123de565b606091505b5061132161374b565b6001600160481b0381168015611fd357611fd33382613615565b606073__$713c4f4487e8756194dbc5b3b091cd4345$__634cbc7ff8612426846121c8565b6040518263ffffffff1660e01b81526004016124429190613e91565b5f60405180830381865af415801561245c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b9190810190614d26565b6125196040805161014081019091525f60c0820181815260e083018290526060610100840152610120830191909152819081526040805160a0810182525f808252602082810182905292820181905260608083015260808201529101908152604080516060810182525f80825260208281018290529282015291019081525f602082018190526040820181905260609091015290565b60405163467e6f5160e11b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__90638cfcdea2906024015f60405180830381865af415801561256e573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b91908101906154aa565b60606125a082612c83565b6060015192915050565b5f80805b87811015612751575f8989838181106125c9576125c9614a53565b60200291909101359150600190506125e0826121c8565b60068111156125f1576125f1613e6d565b03612748575f61260082613429565b8054909150600160a01b900462ffffff161561269057604080516060810182525f8152600883015461ffff62010000820416602083015264010000000090046001600160401b03169181019190915261265c9088908890612d28565b8154612675908990600160a01b900462ffffff16610e81565b61267f9190614b9c565b6126899085614b9c565b93506126f8565b60408051606081018252600883015461ffff808216835262010000820416602083015264010000000090046001600160401b0316918101919091526126d89088908890612d28565b6126e1886114ba565b6126eb9190614b9c565b6126f59085614b9c565b93505b60088101546127189064010000000090046001600160401b031687614b85565b6127229085614b9c565b600982015490945061274490600160781b90046001600160481b031686614b9c565b9450505b506001016125ae565b50965096945050505050565b604051631a3b01e960e21b8152600481018290525f9061281a906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906368ec07a490602401602060405180830381865afa1580156127c6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127ea9190614baf565b604051806040016040528060128152602001710eadcd6dcdeeedc40e4c2c8dedc40d0c2e6d60731b8152506132e6565b610e8d836114ba565b5f3461282f60016114ba565b61286781831015604051806040016040528060138152602001721a5b9cdd59999a58da595b9d081c995dd85c99606a1b8152506132e6565b61287561157182600a614b85565b836128826115ae82613372565b61288f335f3489896133ad565b9350336001600160a01b03167ffbe74eb38ea9de3d74d481a4f701ae121d794895c5797db8260d06d317901d26600134878a8a6040516128d3959493929190614bce565b60405180910390a250505092915050565b61291a60405180608001604052805f6001600160a01b031681526020015f62ffffff168152602001606081526020015f81525090565b60405163a667533f60e01b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__9063a667533f906024015f60405180830381865af415801561296f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b9190810190615584565b604080518082019091525f8152606060208201525f6129b483611fda565b90506040518060400160405280825f015160ff8111156129d6576129d6613e6d565b60ff16815260200173__$39c1c75f9ff01712a7ae2d1d1d8c462aa1$__6371aad10d84604051602001612a0991906143fc565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401612a349190613bfe565b5f60405180830381865af4158015612a4e573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612a759190810190614d26565b90529392505050565b612a86613ad9565b6040518060400160405280612a9a846110d3565b8152602001612aa884612fec565b905292915050565b5f612ac75f5160206158215f395f51905f52610ea7565b6113c8868663ffffffff16868686611327565b612ae2613a5e565b604051631600b78b60e01b815273__$713c4f4487e8756194dbc5b3b091cd4345$__90631600b78b90612b1d90879087908790600401615114565b5f60405180830381865af4158015612b37573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526113cb91908101906151c4565b6040805180820190915260168152752bb4ba27b930b1b632aa393ab9ba30b13632a932b2b360511b602082015290565b606073__$39c1c75f9ff01712a7ae2d1d1d8c462aa1$__6371aad10d73__$713c4f4487e8756194dbc5b3b091cd4345$__6359209b39856040518263ffffffff1660e01b8152600401612be391815260200190565b5f60405180830381865af4158015612bfd573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612c249190810190615071565b604051602001612c3491906143fc565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016124429190613bfe565b5f5f5160206158215f395f51905f5254611f14906001600160401b031660016155b5565b6040805160a0810182525f80825260208201819052918101829052606080820152608081019190915260405163ca7da98b60e01b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__9063ca7da98b906024015f60405180830381865af4158015612d01573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b91908101906155d4565b5f6020825f015161ffff1611612d3e575f612d90565b8151602090612d4e908290615605565b612d58919061561f565b61ffff16612d867f000000000000000000000000000000000000000000000000000000000000000086614b85565b612d909190614b85565b6040830151612da8906001600160401b031685614b85565b6110ab9190614b9c565b5f6110ab846040518060600160405280602061ffff168152602001865f016020810190612ddf9190614c35565b60ff168152602090810190612dfa9060408901908901614603565b6001600160401b031690526040805180820190915233815262ffffff8616602082015261151a565b80600180612e2f836121c8565b6006811115612e4057612e40613e6d565b14612ecb57604051638f191e5f60e01b8152612ec69073__$713c4f4487e8756194dbc5b3b091cd4345$__90638f191e5f90612e80908590600401613e91565b5f60405180830381865af4158015612e9a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612ec19190810190614d26565b613731565b505050565b5f612ed584613429565b90505f346009830154612ef89190600160781b90046001600160481b0316614b9c565b6009830180546001600160481b038316600160781b0268ffffffffffffffffff60781b19909116179055604080516001600160401b03881681523360208201526001818301526060810183905290519192507f66f95ec285ca572fa1cac40e7019e14ab45a8fc619c6405222e8af55534c2f67919081900360800190a15050505050565b612f84613346565b600180546001600160a01b0383166001600160a01b03199091168117909155612fb45f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6130326040518060a001604052805f6001600160a01b031681526020015f6001600160401b031681526020015f63ffffffff1681526020015f8152602001606081525090565b5f8281525f5160206158415f395f51905f526020526040902060018101805461ffff919061305f90614ae0565b905011156130a35750506040805160a0810182525f808252602080830182905282840182905260608301829052835191825281019092526080810191909152919050565b600381015415613198576040805160a08101825260048301546001600160a01b038116825263ffffffff600160a01b82048116602080850191909152600160c01b90920490911c16918101919091526005820154606082015260068201805460808301919061311190614ae0565b80601f016020809104026020016040519081016040528092919081815260200182805461313d90614ae0565b80156131885780601f1061315f57610100808354040283529160200191613188565b820191905f5260205f20905b81548152906001019060200180831161316b57829003601f168201915b5050505050815250915050919050565b6040805160a08101825260048301546001600160a01b038116825260098401546001600160401b03600160c01b9182900416602084015263ffffffff910416918101919091526005820154606082015260068201805460808301919061311190614ae0565b5f8061322a7f00000000000000000000000000000000000000000000000000000000000000006003614b85565b613254907f0000000000000000000000000000000000000000000000000000000000000000614b9c565b9050808362ffffff16108061329657508061329462ffffff85167f0000000000000000000000000000000000000000000000000000000000000000614b9c565b105b156132ad576132a58185614b85565b915050610e7b565b6132dc62ffffff84167f0000000000000000000000000000000000000000000000000000000000000000614b9c565b6132a59085614b85565b816132f4576132f481613731565b5050565b5f61333a86868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506134d792505050565b90506113cb3382613615565b5f546001600160a01b031633146122135760405163118cdaa760e01b815233600482015260240161042e565b5f5f826020015161ffff161180156133935750607f826020015161ffff1611155b8015610e7b575050604001516001600160401b0316151590565b5f6133bb8686868686613756565b90507ffb94adf28ab7e538d2691d90927f622cbc1100eae6afec58052efdee6c98a61681346040518060400160405280866020015160ff16815260200186604001516001600160401b031681525060405161341893929190615642565b60405180910390a195945050505050565b5f9081525f5160206158415f395f51905f526020526040902090565b600180546001600160a01b03191690556122f3816138c1565b73__$713c4f4487e8756194dbc5b3b091cd4345$__634c9f72e38280602001905181019061348c9190615671565b6040518263ffffffff1660e01b81526004016134a8919061570c565b5f6040518083038186803b1580156134be575f5ffd5b505af41580156134d0573d5f5f3e3d5ffd5b5050505050565b5f6135936001604051631bc1eaf360e21b81526004810188905273__$713c4f4487e8756194dbc5b3b091cd4345$__90636f07abcc90602401602060405180830381865af415801561352b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061354f9190614b1e565b600681111561356057613560613e6d565b14604051806040016040528060148152602001736e6f7420696e20506f737465642073746174757360601b8152506132e6565b604051637102a0df60e11b815273__$713c4f4487e8756194dbc5b3b091cd4345$__9063e20541be906135d69033903a9043908b908b908b908b9060040161574c565b602060405180830381865af41580156135f1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113cb919061579c565b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015612ec6573d5f5f3e3d5ffd5b60605f61365483613910565b6001600160401b0381111561366b5761366b613ea4565b6040519080825280601f01601f191660200182016040528015613695576020820181803683370190505b5090505f5b8151811015611fd3578381602081106136b5576136b5614a53565b1a60f81b8282815181106136cb576136cb614a53565b60200101906001600160f81b03191690815f1a90535060010161369a565b604080516001600160a01b038316602082015246918101919091525f906060015b604051602081830303815290604052805190602001209050919050565b5f610e8d836114ba565b613739612b5e565b81604051602001610408929190614d6a565b612213612ec1613948565b5f5f5160206158215f395f51905f5280545f9061377b906001600160401b03166157b3565b91906101000a8154816001600160401b0302191690836001600160401b0316021790556001600160401b031690505f6137b382613429565b6009810180546001600160c01b0316600160c01b436001600160401b03160217905590506137ea82856137e586613997565b6139ea565b60098201805460889290921c6001600160c01b031990921691909117600160781b6001600160481b0388160217905580546001600160a01b0319166001600160a01b0388161781556002810184905562ffffff86161561385f57805462ffffff60a01b1916600160a01b62ffffff8816021781555b82516008909101805460208501516040909501516001600160401b0316640100000000026bffffffffffffffff000000001961ffff968716620100000263ffffffff199093169690941695909517179190911692909217909155949350505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f5b6020811015611e475781816020811061392d5761392d614a53565b1a60f81b6001600160f81b03191615611e4757600101613912565b60606040518060400160405260108152806020016f2bb4ba27b930b1b632a230ba30a634b160811b81525060405160200161398391906157dd565b604051602081830303815290604052905090565b5f815f01518260200151836040015160405160200161370a9392919060f093841b6001600160f01b031990811682529290931b909116600283015260c01b6001600160c01b0319166004820152600c0190565b5f6139f4306136e9565b6139ff60014361580d565b604080516001600160e01b031990931660208401529040908201526001600160401b03851660608201526080810184905260a0810183905260c0016040516020818303038152906040528051906020012090509392505050565b905290565b6040805160c08101909152805f81526020015f81526020015f81526020015f81526020015f6001600160401b03168152602001613a59604080516101008101909152606060c082019081525f60e0830152819081525f6020820181905260408201819052606082018190526080820181905260a09091015290565b6040518060400160405280613b276040805160c0810182525f80825260208083018290528284018290526060808401526080830182905283518085019094528184528301529060a082015290565b81526040805160a0810182525f80825260208281018290529282018190526060808301919091526080820152910190613a59565b5f81518060208401855e5f93019283525090919050565b7f5769746e657455706772616461626c65426173653a206e6f7420696d706c656d8152680cadce8cac8744060f60bb1b60208201525f6113c8613bca613bc4613bbe602986018a613b5b565b88613b5b565b86613b5b565b84613b5b565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e8d6020830184613bd0565b6001600160a01b03811681146122f3575f5ffd5b5f60208284031215613c34575f5ffd5b8135610e8d81613c10565b62ffffff811681146122f3575f5ffd5b5f5f60408385031215613c60575f5ffd5b823591506020830135613c7281613c3f565b809150509250929050565b5f5f83601f840112613c8d575f5ffd5b5081356001600160401b03811115613ca3575f5ffd5b6020830191508360208260051b8501011115613cbd575f5ffd5b9250929050565b5f5f60208385031215613cd5575f5ffd5b82356001600160401b03811115613cea575f5ffd5b613cf685828601613c7d565b90969095509350505050565b5f60208284031215613d12575f5ffd5b5035919050565b60018060a01b03815116825262ffffff60208201511660208301526001600160481b0360408201511660408301525f606082015160e06060850152613d6160e0850182613bd0565b90506080830151608085015260a0830151613d9560a0860182805160ff1682526020908101516001600160401b0316910152565b509392505050565b602081525f610e8d6020830184613d19565b6001600160401b03811681146122f3575f5ffd5b5f5f83601f840112613dd3575f5ffd5b5081356001600160401b03811115613de9575f5ffd5b602083019150836020828501011115613cbd575f5ffd5b5f5f5f5f5f60808688031215613e14575f5ffd5b8535613e1f81613daf565b94506020860135613e2f81613daf565b93506040860135925060608601356001600160401b03811115613e50575f5ffd5b613e5c88828901613dc3565b969995985093965092949392505050565b634e487b7160e01b5f52602160045260245ffd5b600781106122f3576122f3613e6d565b60208101613e9e83613e81565b91905290565b634e487b7160e01b5f52604160045260245ffd5b606081018181106001600160401b0382111715613ed757613ed7613ea4565b60405250565b604081018181106001600160401b0382111715613ed757613ed7613ea4565b608081018181106001600160401b0382111715613ed757613ed7613ea4565b60c081018181106001600160401b0382111715613ed757613ed7613ea4565b601f8201601f191681016001600160401b0381118282101715613f5f57613f5f613ea4565b6040525050565b604051613f7460c082613f3a565b90565b61ffff811681146122f3575f5ffd5b5f60608284031215613f96575f5ffd5b604051613fa281613eb8565b8091508235613fb081613f77565b81526020830135613fc081613f77565b60208201526040830135613fd381613daf565b6040919091015292915050565b5f5f5f83850360c0811215613ff3575f5ffd5b843593506140048660208701613f86565b92506040607f1982011215614017575f5ffd5b5060405161402481613edd565b608085013561403281613c10565b815260a085013561404281613c3f565b602082015292959194509192509050565b5f60408284031215611321575f5ffd5b5f5f60608385031215614074575f5ffd5b823591506140858460208501614053565b90509250929050565b5f6001600160401b038211156140a6576140a6613ea4565b50601f01601f191660200190565b5f82601f8301126140c3575f5ffd5b81356140ce8161408e565b6040516140db8282613f3a565b8281528560208487010111156140ef575f5ffd5b826020860160208301375f92810160200192909252509392505050565b5f6020828403121561411c575f5ffd5b81356001600160401b03811115614131575f5ffd5b6110ab848285016140b4565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561419457603f1987860301845261417f858351613bd0565b94506020938401939190910190600101614163565b50929695505050505050565b61010081106141b1576141b1613e6d565b9052565b60208101610e7b82846141a0565b5f6001600160401b038211156141db576141db613ea4565b5060051b60200190565b5f602082840312156141f5575f5ffd5b81356001600160401b0381111561420a575f5ffd5b8201601f8101841361421a575f5ffd5b8035614225816141c3565b6040516142328282613f3a565b80915082815260208101915060208360051b850101925086831115614255575f5ffd5b602084015b838110156143015780356001600160401b03811115614277575f5ffd5b85016080818a03601f1901121561428c575f5ffd5b60405161429881613efc565b60208201356142a681613daf565b815260408201356142b681613daf565b60208201526060820135604082015260808201356001600160401b038111156142dd575f5ffd5b6142ec8b6020838601016140b4565b6060830152508452506020928301920161425a565b509695505050505050565b5f6020828403121561431c575f5ffd5b81356001600160401b03811115614331575f5ffd5b8201601f81018413614341575f5ffd5b803561434c816141c3565b6040516143598282613f3a565b80915082815260208101915060208360051b85010192508683111561437c575f5ffd5b6020840193505b828410156143a757833561439681613daf565b825260209384019390910190614383565b9695505050505050565b602080825282518282018190525f918401906040840190835b818110156143f15783516143dd81613e81565b8352602093840193909201916001016143ca565b509095945050505050565b6020815261440e6020820183516141a0565b5f60208301516014811061442457614424613e6d565b8060408401525060408301516060830152606083015160808301526001600160401b0360808401511660a083015260a083015160c080840152805160c060e0850152805160406101a086015261447e6101e0860182613bd0565b6020928301516101c08701529183015160ff16610100860152506040820151906144ae61012086018360ff169052565b606083015160ff1661014086015260808301516001600160401b0380821661016088015260a09094015193841661018087015291506113cb565b5f5f5f5f606085870312156144fb575f5ffd5b843593506020850135925060408501356001600160401b0381111561451e575f5ffd5b61452a87828801613dc3565b95989497509550505050565b5f5f5f60408486031215614548575f5ffd5b83356001600160401b0381111561455d575f5ffd5b840160e0818703121561456e575f5ffd5b925060208401356001600160401b03811115614588575f5ffd5b61459486828701613dc3565b9497909650939450505050565b5f5f5f5f606085870312156145b4575f5ffd5b84356145bf81613daf565b93506020850135925060408501356001600160401b0381111561451e575f5ffd5b5f5f604083850312156145f1575f5ffd5b823591506020830135613c7281613f77565b5f60208284031215614613575f5ffd5b8135610e8d81613daf565b60018060a01b03815116825262ffffff60208201511660208301525f6040820151608060408501526146536080850182613bd0565b606093840151949093019390935250919050565b60018060a01b0381511682526001600160401b036020820151166020830152604081015160408301525f606082015160a060608501526146aa60a0850182613bd0565b6080938401516001600160a01b0316949093019390935250919050565b602081525f825161010060208401526146e461012084018261461e565b90506020840151601f198483030160408501526147018282614667565b915050604084015161473e606085018261ffff815116825261ffff60208201511660208301526001600160401b0360408201511660408301525050565b5060608401516001600160881b03191660c084015260808401516001600160481b031660e084015260a0909301516001600160401b0316610100909201919091525090565b5f5f5f5f5f5f60808789031215614798575f5ffd5b86356001600160401b038111156147ad575f5ffd5b6147b989828a01613c7d565b90975095505060208701356001600160401b038111156147d7575f5ffd5b6147e389828a01613dc3565b979a9699509760408101359660609091013595509350505050565b5f5f6040838503121561480f575f5ffd5b50508035926020909101359150565b5f5f6080838503121561482f575f5ffd5b823591506140858460208501613f86565b602081525f610e8d602083018461461e565b6020815260ff82511660208201525f60208301516040808401526110ab6060840182613bd0565b60018060a01b0381511682526001600160401b03602082015116602083015263ffffffff6040820151166040830152606081015160608301525f608082015160a060808501526110ab60a0850182613bd0565b602081525f8251604060208401526148e76060840182613d19565b90506020840151601f198483030160408501526113cb8282614879565b803563ffffffff81168114611e47575f5ffd5b5f5f5f5f5f6080868803121561492b575f5ffd5b85359450613e2f60208701614904565b602081525f610e8d6020830184614667565b5f5f5f60a0848603121561495f575f5ffd5b83359250602084013591506149778560408601613f86565b90509250925092565b5f5f5f60808486031215614992575f5ffd5b833592506149a38560208601614053565b915060608401356149b381613c3f565b809150509250925092565b602081525f610e8d6020830184614879565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60ff831680614a0a57614a0a6149d0565b8060ff84160491505092915050565b60ff8181168382160190811115610e7b57610e7b6149e4565b5f60ff831680614a4457614a446149d0565b8060ff84160691505092915050565b634e487b7160e01b5f52603260045260245ffd5b5f8235607e19833603018112614a7b575f5ffd5b9190910192915050565b5f60208284031215614a95575f5ffd5b610e8d82614904565b5f5f8335601e19843603018112614ab3575f5ffd5b8301803591506001600160401b03821115614acc575f5ffd5b602001915036819003821315613cbd575f5ffd5b600181811c90821680614af457607f821691505b60208210810361132157634e487b7160e01b5f52602260045260245ffd5b600781106122f3575f5ffd5b5f60208284031215614b2e575f5ffd5b8151610e8d81614b12565b602080825281018290525f8360408301825b85811015614b7b578235614b5e81613c10565b6001600160a01b0316825260209283019290910190600101614b4b565b5095945050505050565b8082028115828204841417610e7b57610e7b6149e4565b80820180821115610e7b57610e7b6149e4565b5f60208284031215614bbf575f5ffd5b81518015158114610e8d575f5ffd5b858152602081018590526001600160401b03841660408201526060810183905260e081016143a7608083018461ffff815116825261ffff60208201511660208301526001600160401b0360408201511660408301525050565b60ff811681146122f3575f5ffd5b5f60208284031215614c45575f5ffd5b8135610e8d81614c27565b5f614c5a8361408e565b604051614c678282613f3a565b809250848152858585011115614c7b575f5ffd5b8484602083015e5f6020868301015250509392505050565b5f82601f830112614ca2575f5ffd5b610e8d83835160208501614c50565b5f5f60408385031215614cc2575f5ffd5b8251614ccd81613c10565b60208401519092506001600160401b03811115614ce8575f5ffd5b614cf485828601614c93565b9150509250929050565b80516101008110611e47575f5ffd5b5f60208284031215614d1d575f5ffd5b610e8d82614cfe565b5f60208284031215614d36575f5ffd5b81516001600160401b03811115614d4b575f5ffd5b8201601f81018413614d5b575f5ffd5b6110ab84825160208401614c50565b5f614d758285613b5b565b6101d160f51b81526113cb6002820185613b5b565b6001600160401b0383168152604060208201525f6110ab6040830184613bd0565b5f614db68284613b5b565b743a20696e76616c6964207265706f7274206461746160581b81526015019392505050565b6001600160a01b03831681526040602080830182905283519183018290525f91908401906060840190835b81811015614e2d5783516001600160401b0316835260209384019390920191600101614e06565b50909695505050505050565b5f60208284031215614e49575f5ffd5b81516001600160401b03811115614e5e575f5ffd5b8201601f81018413614e6e575f5ffd5b8051614e79816141c3565b604051614e868282613f3a565b80915082815260208101915060208360051b850101925086831115614ea9575f5ffd5b602084015b838110156143015780516001600160401b03811115614ecb575f5ffd5b614eda89602083890101614c93565b84525060209283019201614eae565b8051611e4781613daf565b8051611e4781614c27565b5f60c08284031215614f0f575f5ffd5b604051614f1b81613f1b565b80915082516001600160401b03811115614f33575f5ffd5b830160408186031215614f44575f5ffd5b604051614f5081613edd565b81516001600160401b03811115614f65575f5ffd5b614f7187828501614c93565b825250602091820151828201528252614f8b908401614ef4565b6020820152614f9c60408401614ef4565b6040820152614fad60608401614ef4565b6060820152614fbe60808401614ee9565b6080820152614fcf60a08401614ee9565b60a08201525092915050565b5f60c08284031215614feb575f5ffd5b604051614ff781613f1b565b80915061500383614cfe565b8152602083015160148110615016575f5ffd5b6020820152604083810151908201526060808401519082015261503b60808401614ee9565b608082015260a08301516001600160401b03811115615058575f5ffd5b61506485828601614eff565b60a0830152505092915050565b5f60208284031215615081575f5ffd5b81516001600160401b03811115615096575f5ffd5b6110ab84828501614fdb565b80356150ad81613f77565b61ffff16825260208101356150c181613f77565b61ffff16602083015260408101356150d881613daf565b6001600160401b0381166040840152505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6040808252843582820152602085013560608301525f9061513b90608084019087016150a2565b60a085013561514981613daf565b6001600160401b031660e083015260c085013536869003601e1901811261516e575f5ffd5b85016020810190356001600160401b03811115615189575f5ffd5b803603821315615197575f5ffd5b60e06101008501526151ae610120850182846150ec565b91505082810360208401526143a78185876150ec565b5f5f604083850312156151d5575f5ffd5b82516151e081613c10565b60208401519092506001600160401b038111156151fb575f5ffd5b614cf485828601614fdb565b6001600160a01b0388168152602081018790526040810186905261522e60608201866150a2565b6001600160401b03841660c082015261010060e08201525f615255610100830184866150ec565b9998505050505050505050565b80516001600160481b0381168114611e47575f5ffd5b5f60208284031215615288575f5ffd5b610e8d82615262565b5f60033d1115613f745760045f5f3e505f5160e01c90565b5f60443d10156152b65790565b6040513d600319016004823e80513d60248201116001600160401b03821117156152df57505090565b80820180516001600160401b038111156152fa575050505090565b3d8401600319018282016020011115615314575050505090565b613d9560208285010185613f3a565b5f60808284031215615333575f5ffd5b60405161533f81613efc565b809150825161534d81613c10565b8152602083015161535d81613c3f565b602082015260408301516001600160401b0381111561537a575f5ffd5b61538685828601614c93565b604083015250606092830151920191909152919050565b5f60a082840312156153ad575f5ffd5b60405160a081018181106001600160401b03821117156153cf576153cf613ea4565b806040525080915082516153e281613c10565b815260208301516153f281613daf565b60208201526040838101519082015260608301516001600160401b03811115615419575f5ffd5b61542585828601614c93565b606083015250608083015161543981613c10565b6080919091015292915050565b5f60608284031215615456575f5ffd5b60405161546281613eb8565b809150825161547081613f77565b8152602083015161548081613f77565b60208201526040830151613fd381613daf565b80516001600160881b031981168114611e47575f5ffd5b5f602082840312156154ba575f5ffd5b81516001600160401b038111156154cf575f5ffd5b820161010081850312156154e1575f5ffd5b6154e9613f66565b81516001600160401b038111156154fe575f5ffd5b61550a86828501615323565b82525060208201516001600160401b03811115615525575f5ffd5b6155318682850161539d565b6020830152506155448560408401615446565b604082015261555560a08301615493565b606082015261556660c08301615262565b608082015261557760e08301614ee9565b60a0820152949350505050565b5f60208284031215615594575f5ffd5b81516001600160401b038111156155a9575f5ffd5b6110ab84828501615323565b6001600160401b038181168382160190811115610e7b57610e7b6149e4565b5f602082840312156155e4575f5ffd5b81516001600160401b038111156155f9575f5ffd5b6110ab8482850161539d565b61ffff8281168282160390811115610e7b57610e7b6149e4565b5f61ffff831680615632576156326149d0565b8061ffff84160491505092915050565b8381526020808201849052825160ff1660408301528201516001600160401b03166060820152608081016110ab565b5f60208284031215615681575f5ffd5b81516001600160401b03811115615696575f5ffd5b8201601f810184136156a6575f5ffd5b80516156b1816141c3565b6040516156be8282613f3a565b80915082815260208101915060208360051b8501019250868311156156e1575f5ffd5b6020840193505b828410156143a75783516156fb81613c10565b8252602093840193909101906156e8565b602080825282518282018190525f918401906040840190835b818110156143f15783516001600160a01b0316835260209384019390920191600101615725565b60018060a01b03881681528660208201526001600160401b03861660408201528460608201526001600160401b03841660808201528260a082015260e060c08201525f61525560e0830184613bd0565b5f602082840312156157ac575f5ffd5b5051919050565b5f6001600160401b0382166001600160401b0381036157d4576157d46149e4565b60010192915050565b5f6157e88284613b5b565b741d103ab73430b7323632b21030b9b9b2b93a34b7b760591b81526015019392505050565b81810381811115610e7b57610e7b6149e456fef595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e183f595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e184a2646970667358221220a646d3a3190e8c4708bacedd2828a56a92e091552f6c7128dc54562bb85f4b8b64736f6c634300081e0033",
  "deployedBytecode": "0x6080604052600436106103ac575f3560e01c806379ba5097116101e6578063adb7c3f71161010c578063d0a92a081161009f578063e900aa331161006e578063e900aa3314610ce3578063ec5946db14610cf6578063f2fde38b14610d09578063f61921b214610d28576103ac565b8063d0a92a0814610c41578063d5f3948814610c60578063e30c397814610c93578063e5a6b10f14610cb0576103ac565b8063bff852fa116100db578063bff852fa14610bb6578063c258134814610bca578063c805dd0f14610be9578063ca7da98b14610c15576103ac565b8063adb7c3f714610b33578063aeb2ffc114610b4c578063b207e73014610b78578063b783922b14610b97576103ac565b80638d3d8b3811610184578063a58f680311610153578063a58f680314610a95578063a667533f14610aa8578063a77fc1a414610ad4578063a9e954b914610b00576103ac565b80638d3d8b3814610a075780638da5cb5b14610a2657806393d5185c14610a425780639cc56e6714610a76576103ac565b80637bd88218116101c05780637bd882181461097e5780637c1fbda31461099d578063838d44e2146109bc5780638cfcdea2146109db576103ac565b806379ba50971461090a5780637b1039991461091e5780637bbdb96e14610951576103ac565b80634cddf615116102d657806359209b39116102695780636f07abcc116102385780636f07abcc146108565780636fdaab7e14610875578063715018a6146108d757806376d0e357146108eb576103ac565b806359209b39146107cd5780636280bce8146107f95780636b58960a146108185780636d0d6a7e14610837576103ac565b80635304bba2116102a55780635304bba21461073c5780635479d9401461075b57806354fd4d501461078d578063581f5094146107a1576103ac565b80634cddf615146106785780634e6c13a1146106a45780635001f3b5146106c357806352d1902d14610709576103ac565b806328a78d9b1161034e5780633fa595761161031d5780633fa59576146105c0578063439fab911461060e57806345ea6c171461062d5780634c9f72e314610659576103ac565b806328a78d9b1461055a57806339a8653e1461057b5780633b3195b71461059a5780633dc2b7a2146105ad576103ac565b806308b7e85e1161038a57806308b7e85e146104b75780630aa4112a146104e35780631aea970b1461050f578063234fe6e31461052e576103ac565b8063044ad7be1461043757806305e742ef1461046b57806306eb2c4214610498575b3480156103b7575f5ffd5b506103c55f3560f81c610d54565b6103d560ff5f3560f01c16610d54565b6103e560ff5f3560e81c16610d54565b6103f560ff5f3560e01c16610d54565b6040516020016104089493929190613b72565b60408051601f198184030181529082905262461bcd60e51b825261042e91600401613bfe565b60405180910390fd5b348015610442575f5ffd5b50610456610451366004613c24565b610e40565b60405190151581526020015b60405180910390f35b348015610476575f5ffd5b5061048a610485366004613c4f565b610e81565b604051908152602001610462565b3480156104a3575f5ffd5b5061048a6104b2366004613cc4565b610e94565b3480156104c2575f5ffd5b506104d66104d1366004613d02565b6110b3565b6040516104629190613bfe565b3480156104ee575f5ffd5b506105026104fd366004613d02565b6110d3565b6040516104629190613d9d565b34801561051a575f5ffd5b5061048a610529366004613e00565b611327565b348015610539575f5ffd5b5061054d610548366004613d02565b6113d4565b6040516104629190613e91565b348015610565575f5ffd5b50610579610574366004613cc4565b611449565b005b348015610586575f5ffd5b5061048a610595366004613d02565b6114ba565b61048a6105a8366004613fe0565b61151a565b61048a6105bb366004614063565b611708565b3480156105cb575f5ffd5b506105df6105da366004613d02565b611760565b604051610462949392919093845260208401929092526001600160401b03166040830152606082015260800190565b348015610619575f5ffd5b5061057961062836600461410c565b6117b1565b348015610638575f5ffd5b5061064c610647366004613cc4565b6119e5565b604051610462919061413d565b348015610664575f5ffd5b50610579610673366004613cc4565b611a8c565b348015610683575f5ffd5b50610697610692366004613d02565b611acd565b60405161046291906141b5565b3480156106af575f5ffd5b5061048a6106be3660046141e5565b611b41565b3480156106ce575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610462565b348015610714575f5ffd5b5061048a7f000000000000000000000000000000000000000000000000000000000000000081565b348015610747575f5ffd5b5061064c61075636600461430c565b611e4c565b348015610766575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610456565b348015610798575f5ffd5b506104d6611ee9565b3480156107ac575f5ffd5b506107c06107bb366004613cc4565b611f19565b60405161046291906143b1565b3480156107d8575f5ffd5b506107ec6107e7366004613d02565b611fda565b60405161046291906143fc565b348015610804575f5ffd5b5061048a6108133660046144e8565b612056565b348015610823575f5ffd5b50610456610832366004613c24565b612079565b348015610842575f5ffd5b506107ec610851366004614536565b6120cd565b348015610861575f5ffd5b5061054d610870366004613d02565b6121c8565b348015610880575f5ffd5b506108bf61088f366004613d02565b5f9081525f5160206158415f395f51905f526020526040902060090154600160781b90046001600160481b031690565b6040516001600160481b039091168152602001610462565b3480156108e2575f5ffd5b50610579612202565b3480156108f6575f5ffd5b5061048a6109053660046145a1565b612215565b348015610915575f5ffd5b5061057961227c565b348015610929575f5ffd5b506106f17f000000000000000000000000000000000000000000000000000000000000000081565b34801561095c575f5ffd5b506109656122f6565b6040516001600160e01b03199091168152602001610462565b348015610989575f5ffd5b5061048a6109983660046145e0565b612300565b3480156109a8575f5ffd5b506108bf6109b7366004613d02565b61230c565b3480156109c7575f5ffd5b506104d66109d6366004613d02565b612401565b3480156109e6575f5ffd5b506109fa6109f5366004614603565b612483565b60405161046291906146c7565b348015610a12575f5ffd5b506104d6610a21366004613d02565b612595565b348015610a31575f5ffd5b505f546001600160a01b03166106f1565b348015610a4d575f5ffd5b50610a61610a5c366004614783565b6125aa565b60408051928352602083019190915201610462565b348015610a81575f5ffd5b5061048a610a903660046147fe565b61275d565b61048a610aa336600461481e565b612823565b348015610ab3575f5ffd5b50610ac7610ac2366004614603565b6128e4565b6040516104629190614840565b348015610adf575f5ffd5b50610af3610aee366004613d02565b612996565b6040516104629190614852565b348015610b0b575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000003f61048a565b348015610b3e575f5ffd5b506304722eaf60e31b610965565b348015610b57575f5ffd5b50610b6b610b66366004613d02565b612a7e565b60405161046291906148cc565b348015610b83575f5ffd5b5061048a610b92366004614917565b612ab0565b348015610ba2575f5ffd5b506107ec610bb1366004614536565b612ada565b348015610bc1575f5ffd5b506104d6612b5e565b348015610bd5575f5ffd5b506104d6610be4366004613d02565b612b8e565b348015610bf4575f5ffd5b50610bfd612c5f565b6040516001600160401b039091168152602001610462565b348015610c20575f5ffd5b50610c34610c2f366004614603565b612c83565b604051610462919061493b565b348015610c4c575f5ffd5b5061048a610c5b36600461494d565b612d28565b348015610c6b575f5ffd5b506106f17f000000000000000000000000000000000000000000000000000000000000000081565b348015610c9e575f5ffd5b506001546001600160a01b03166106f1565b348015610cbb575f5ffd5b506106f17f000000000000000000000000000000000000000000000000000000000000000081565b61048a610cf1366004614980565b612db2565b610579610d04366004613d02565b612e22565b348015610d14575f5ffd5b50610579610d23366004613c24565b612f7c565b348015610d33575f5ffd5b50610d47610d42366004613d02565b612fec565b60405161046291906149be565b6040805160028082528183019092526060915f91906020820181803683370190505090505f610d846010856149f8565b610d8f906030614a19565b90505f610d9d601086614a32565b610da8906030614a19565b905060398260ff161115610dc457610dc1600783614a19565b91505b60398160ff161115610dde57610ddb600782614a19565b90505b8160f81b835f81518110610df457610df4614a53565b60200101906001600160f81b03191690815f1a9053508060f81b83600181518110610e2157610e21614a53565b60200101906001600160f81b03191690815f1a90535091949350505050565b6001600160a01b0381165f9081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e185602052604081205460ff165b92915050565b5f610e8d6001836131fd565b9392505050565b5f610ef35f5160206158215f395f51905f525b335f908152600291909101602090815260409182902054825180840190935260158352743ab730baba3437b934bd32b2103932b837b93a32b960591b9183019190915260ff16906132e6565b5f826001600160401b03811115610f0c57610f0c613ea4565b604051908082528060200260200182016040528015610f5b57816020015b604080516080810182525f80825260208083018290529282015260608082015282525f19909201910181610f2a5790505b5090505f5b838110156110a1576040518060800160405280868684818110610f8557610f85614a53565b9050602002810190610f979190614a67565b356001600160401b03168152602001868684818110610fb857610fb8614a53565b9050602002810190610fca9190614a67565b610fdb906040810190602001614a85565b63ffffffff168152602001868684818110610ff857610ff8614a53565b905060200281019061100a9190614a67565b60400135815260200186868481811061102557611025614a53565b90506020028101906110379190614a67565b611045906060810190614a9e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050915250825183908390811061108e5761108e614a53565b6020908102919091010152600101610f60565b506110ab81611b41565b949350505050565b60606110be8261230c565b505060408051602081019091525f8152919050565b6111166040805160c0810182525f80825260208083018290528284018290526060808401526080830182905283518085019094528184528301529060a082015290565b5f8281525f5160206158415f395f51905f526020526040902060018101805461ffff919061114390614ae0565b9050111561119e576040805160c0810182525f8082526020808301829052828401829052835180820185528281526060840152600290940154608083015282518084019093528083529282019290925260a082015292915050565b6003810154156112c7576040805160c08101825282546001600160a01b0381168252600160a01b810462ffffff166020830152600160b81b90046001600160481b0316918101919091526001820180546060830191906111fd90614ae0565b80601f016020809104026020016040519081016040528092919081815260200182805461122990614ae0565b80156112745780601f1061124b57610100808354040283529160200191611274565b820191905f5260205f20905b81548152906001019060200180831161125757829003601f168201915b5050509183525050600283015460208083019190915260408051808201825260089095015462010000810460ff16865264010000000090046001600160401b031691850191909152019190915292915050565b6040805160c08101825282546001600160a01b0381168252600160a01b900462ffffff1660208201526009830154600160781b90046001600160481b0316918101919091526001820180546060830191906111fd90614ae0565b50919050565b5f61133e5f5160206158215f395f51905f52610ea7565b6113786001600160401b03861615156040518060400160405280600d81526020016c06261642074696d657374616d7609c1b8152506132e6565b604080518082019091526016815275726573756c742063616e6e6f7420626520656d70747960501b60208201526113b290831515906132e6565b6113c8866001600160401b0316868686866132f8565b90505b95945050505050565b60405163234fe6e360e01b8152600481018290525f9073__$713c4f4487e8756194dbc5b3b091cd4345$__9063234fe6e3906024015b602060405180830381865af4158015611425573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7b9190614b1e565b611451613346565b6040516328a78d9b60e01b815273__$713c4f4487e8756194dbc5b3b091cd4345$__906328a78d9b9061148a9085908590600401614b39565b5f6040518083038186803b1580156114a0575f5ffd5b505af41580156114b2573d5f5f3e3d5ffd5b505050505050565b5f6114e67f00000000000000000000000000000000000000000000000000000000000000006004614b85565b611510907f0000000000000000000000000000000000000000000000000000000000000000614b9c565b610e7b9083614b85565b5f3461152b60018460200151610e81565b61156381831015604051806040016040528060138152602001721a5b9cdd59999a58da595b9d081c995dd85c99606a1b8152506132e6565b6115a161157182600a614b85565b8311156040518060400160405280600f81526020016e1d1bdbc81b5d58da081c995dd85c99608a1b8152506132e6565b846115d76115ae82613372565b6040518060400160405280600b81526020016a696e76616c696420534c4160a81b8152506132e6565b8461169d5f825f01516001600160a01b03163b11801561165b575081516040516323d0872b60e11b81523060048201526001600160a01b03909116906347a10e5690602401602060405180830381865afa158015611637573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061165b9190614baf565b801561166f57505f826020015162ffffff16115b6040518060400160405280601081526020016f696e76616c69642063616c6c6261636b60801b8152506132e6565b855160208701516116b19190348b8b6133ad565b9450336001600160a01b03167ffbe74eb38ea9de3d74d481a4f701ae121d794895c5797db8260d06d317901d26600134888c8c6040516116f5959493929190614bce565b60405180910390a2505050509392505050565b5f610e8d836040518060600160405280602061ffff168152602001855f0160208101906117359190614c35565b60ff1681526020908101906117509060408801908801614603565b6001600160401b03169052612823565b5f5f5f5f5f61176e86613429565b600981015460058201546004909201546001600160881b0319608883901b16999298506001600160401b03600160c01b9182900481169850910416945092505050565b5f546001600160a01b0316806117e757818060200190518101906117d59190614cb1565b925090506117e281613445565b61182f565b336001600160a01b0382161461182f5760405162461bcd60e51b815260206004820152600d60248201526c3737ba103a34329037bbb732b960991b604482015260640161042e565b6118388261345e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe54158015906118a957507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe547f00000000000000000000000000000000000000000000000000000000000000003f145b156118f65760405162461bcd60e51b815260206004820152601c60248201527f616c726561647920696e697469616c697a656420636f64656861736800000000604482015260640161042e565b7f00000000000000000000000000000000000000000000000000000000000000003f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc600201557f00000000000000000000000000000000000000000000000000000000000000003f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661199a5f546001600160a01b031690565b6001600160a01b03167fe73e754121f0bad1327816970101955bfffdf53d270ac509d777c25be070d7f66119cc611ee9565b6040516119d99190613bfe565b60405180910390a45050565b60605f826001600160401b03811115611a0057611a00613ea4565b604051908082528060200260200182016040528015611a29578160200160208202803683370190505b5090505f5b8151811015611a8257848482818110611a4957611a49614a53565b90506020020135828281518110611a6257611a62614a53565b6001600160401b0390921660209283029190910190910152600101611a2e565b506110ab81611e4c565b611a94613346565b604051634c9f72e360e01b815273__$713c4f4487e8756194dbc5b3b091cd4345$__90634c9f72e39061148a9085908590600401614b39565b604051634cddf61560e01b8152600481018290525f9073__$713c4f4487e8756194dbc5b3b091cd4345$__90634cddf61590602401602060405180830381865af4158015611b1d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7b9190614d0d565b5f611b585f5160206158215f395f51905f52610ea7565b5f5b8251811015611e36575f838281518110611b7657611b76614a53565b6020908102919091010151516001600160401b031690506001611b98826121c8565b6006811115611ba957611ba9613e6d565b14611ca6577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f848381518110611be157611be1614a53565b60200260200101515f0151611bf4612b5e565b604051638f191e5f60e01b815273__$713c4f4487e8756194dbc5b3b091cd4345$__90638f191e5f90611c2c90600190600401613e91565b5f60405180830381865af4158015611c46573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611c6d9190810190614d26565b604051602001611c7e929190614d6a565b60408051601f1981840301815290829052611c999291614d8a565b60405180910390a1611e2d565b426001600160401b0316848381518110611cc257611cc2614a53565b6020026020010151602001516001600160401b03161180611d155750611d15848381518110611cf357611cf3614a53565b6020026020010151602001516001600160401b03166001600160401b03161590565b80611d3d5750838281518110611d2d57611d2d614a53565b602002602001015160600151515f145b15611d98577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f848381518110611d7557611d75614a53565b60200260200101515f0151611d88612b5e565b604051602001611c7e9190614dab565b611e20848381518110611dad57611dad614a53565b60200260200101515f01516001600160401b0316858481518110611dd357611dd3614a53565b602002602001015160200151868581518110611df157611df1614a53565b602002602001015160400151878681518110611e0f57611e0f614a53565b6020026020010151606001516134d7565b611e2a9084614b9c565b92505b50600101611b5a565b508015611e4757611e473382613615565b919050565b604051633ab5a66d60e11b815260609073__$713c4f4487e8756194dbc5b3b091cd4345$__9063756b4cda90611ea8907f0000000000000000000000000000000000000000000000000000000000000000908690600401614ddb565b5f60405180830381865af4158015611ec2573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b9190810190614e39565b6060611f147f0000000000000000000000000000000000000000000000000000000000000000613648565b905090565b6060816001600160401b03811115611f3357611f33613ea4565b604051908082528060200260200182016040528015611f5c578160200160208202803683370190505b5090505f5b82811015611fd357611f8a848483818110611f7e57611f7e614a53565b905060200201356121c8565b828281518110611f9c57611f9c614a53565b60200260200101906006811115611fb557611fb5613e6d565b90816006811115611fc857611fc8613e6d565b905250600101611f61565b5092915050565b611fe2613a5e565b6040516359209b3960e01b81526004810183905273__$713c4f4487e8756194dbc5b3b091cd4345$__906359209b39906024015f60405180830381865af415801561202f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b9190810190615071565b5f61206d5f5160206158215f395f51905f52610ea7565b6113cb85858585612215565b5f7f00000000000000000000000000000000000000000000000000000000000000008015610e7b5750816001600160a01b03166120bd5f546001600160a01b031690565b6001600160a01b03161492915050565b6120d5613a5e565b5f5f73__$713c4f4487e8756194dbc5b3b091cd4345$__631600b78b8787876040518463ffffffff1660e01b815260040161211293929190615114565b5f60405180830381865af415801561212c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261215391908101906151c4565b909250905033327f7a9001dc4425127400f09e4c0b02908ad0e1f642ee9c92932a222c686674648284893560208b013560408c0161219760c08e0160a08f01614603565b6121a460c08f018f614a9e565b6040516121b79796959493929190615207565b60405180910390a395945050505050565b604051631bc1eaf360e21b8152600481018290525f9073__$713c4f4487e8756194dbc5b3b091cd4345$__90636f07abcc9060240161140a565b61220a613346565b6122135f613445565b565b5f61222c5f5160206158215f395f51905f52610ea7565b604080518082019091526016815275726573756c742063616e6e6f7420626520656d70747960501b602082015261226690831515906132e6565b6113cb856001600160401b0316428686866132f8565b60015433906001600160a01b031681146122ea5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161042e565b6122f381613445565b50565b5f611f14306136e9565b5f610e8d600183613727565b604051637c1fbda360e01b8152600481018290525f9073__$713c4f4487e8756194dbc5b3b091cd4345$__90637c1fbda390602401602060405180830381865af492505050801561237a575060408051601f3d908101601f1916820190925261237791810190615278565b60015b6123e757612386615291565b806308c379a0036123ae575061239a6152a9565b806123a557506123b0565b61132181613731565b505b3d8080156123d9576040519150601f19603f3d011682016040523d82523d5f602084013e6123de565b606091505b5061132161374b565b6001600160481b0381168015611fd357611fd33382613615565b606073__$713c4f4487e8756194dbc5b3b091cd4345$__634cbc7ff8612426846121c8565b6040518263ffffffff1660e01b81526004016124429190613e91565b5f60405180830381865af415801561245c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b9190810190614d26565b6125196040805161014081019091525f60c0820181815260e083018290526060610100840152610120830191909152819081526040805160a0810182525f808252602082810182905292820181905260608083015260808201529101908152604080516060810182525f80825260208281018290529282015291019081525f602082018190526040820181905260609091015290565b60405163467e6f5160e11b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__90638cfcdea2906024015f60405180830381865af415801561256e573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b91908101906154aa565b60606125a082612c83565b6060015192915050565b5f80805b87811015612751575f8989838181106125c9576125c9614a53565b60200291909101359150600190506125e0826121c8565b60068111156125f1576125f1613e6d565b03612748575f61260082613429565b8054909150600160a01b900462ffffff161561269057604080516060810182525f8152600883015461ffff62010000820416602083015264010000000090046001600160401b03169181019190915261265c9088908890612d28565b8154612675908990600160a01b900462ffffff16610e81565b61267f9190614b9c565b6126899085614b9c565b93506126f8565b60408051606081018252600883015461ffff808216835262010000820416602083015264010000000090046001600160401b0316918101919091526126d89088908890612d28565b6126e1886114ba565b6126eb9190614b9c565b6126f59085614b9c565b93505b60088101546127189064010000000090046001600160401b031687614b85565b6127229085614b9c565b600982015490945061274490600160781b90046001600160481b031686614b9c565b9450505b506001016125ae565b50965096945050505050565b604051631a3b01e960e21b8152600481018290525f9061281a906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906368ec07a490602401602060405180830381865afa1580156127c6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127ea9190614baf565b604051806040016040528060128152602001710eadcd6dcdeeedc40e4c2c8dedc40d0c2e6d60731b8152506132e6565b610e8d836114ba565b5f3461282f60016114ba565b61286781831015604051806040016040528060138152602001721a5b9cdd59999a58da595b9d081c995dd85c99606a1b8152506132e6565b61287561157182600a614b85565b836128826115ae82613372565b61288f335f3489896133ad565b9350336001600160a01b03167ffbe74eb38ea9de3d74d481a4f701ae121d794895c5797db8260d06d317901d26600134878a8a6040516128d3959493929190614bce565b60405180910390a250505092915050565b61291a60405180608001604052805f6001600160a01b031681526020015f62ffffff168152602001606081526020015f81525090565b60405163a667533f60e01b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__9063a667533f906024015f60405180830381865af415801561296f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b9190810190615584565b604080518082019091525f8152606060208201525f6129b483611fda565b90506040518060400160405280825f015160ff8111156129d6576129d6613e6d565b60ff16815260200173__$39c1c75f9ff01712a7ae2d1d1d8c462aa1$__6371aad10d84604051602001612a0991906143fc565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401612a349190613bfe565b5f60405180830381865af4158015612a4e573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612a759190810190614d26565b90529392505050565b612a86613ad9565b6040518060400160405280612a9a846110d3565b8152602001612aa884612fec565b905292915050565b5f612ac75f5160206158215f395f51905f52610ea7565b6113c8868663ffffffff16868686611327565b612ae2613a5e565b604051631600b78b60e01b815273__$713c4f4487e8756194dbc5b3b091cd4345$__90631600b78b90612b1d90879087908790600401615114565b5f60405180830381865af4158015612b37573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526113cb91908101906151c4565b6040805180820190915260168152752bb4ba27b930b1b632aa393ab9ba30b13632a932b2b360511b602082015290565b606073__$39c1c75f9ff01712a7ae2d1d1d8c462aa1$__6371aad10d73__$713c4f4487e8756194dbc5b3b091cd4345$__6359209b39856040518263ffffffff1660e01b8152600401612be391815260200190565b5f60405180830381865af4158015612bfd573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612c249190810190615071565b604051602001612c3491906143fc565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016124429190613bfe565b5f5f5160206158215f395f51905f5254611f14906001600160401b031660016155b5565b6040805160a0810182525f80825260208201819052918101829052606080820152608081019190915260405163ca7da98b60e01b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__9063ca7da98b906024015f60405180830381865af4158015612d01573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e7b91908101906155d4565b5f6020825f015161ffff1611612d3e575f612d90565b8151602090612d4e908290615605565b612d58919061561f565b61ffff16612d867f000000000000000000000000000000000000000000000000000000000000000086614b85565b612d909190614b85565b6040830151612da8906001600160401b031685614b85565b6110ab9190614b9c565b5f6110ab846040518060600160405280602061ffff168152602001865f016020810190612ddf9190614c35565b60ff168152602090810190612dfa9060408901908901614603565b6001600160401b031690526040805180820190915233815262ffffff8616602082015261151a565b80600180612e2f836121c8565b6006811115612e4057612e40613e6d565b14612ecb57604051638f191e5f60e01b8152612ec69073__$713c4f4487e8756194dbc5b3b091cd4345$__90638f191e5f90612e80908590600401613e91565b5f60405180830381865af4158015612e9a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612ec19190810190614d26565b613731565b505050565b5f612ed584613429565b90505f346009830154612ef89190600160781b90046001600160481b0316614b9c565b6009830180546001600160481b038316600160781b0268ffffffffffffffffff60781b19909116179055604080516001600160401b03881681523360208201526001818301526060810183905290519192507f66f95ec285ca572fa1cac40e7019e14ab45a8fc619c6405222e8af55534c2f67919081900360800190a15050505050565b612f84613346565b600180546001600160a01b0383166001600160a01b03199091168117909155612fb45f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6130326040518060a001604052805f6001600160a01b031681526020015f6001600160401b031681526020015f63ffffffff1681526020015f8152602001606081525090565b5f8281525f5160206158415f395f51905f526020526040902060018101805461ffff919061305f90614ae0565b905011156130a35750506040805160a0810182525f808252602080830182905282840182905260608301829052835191825281019092526080810191909152919050565b600381015415613198576040805160a08101825260048301546001600160a01b038116825263ffffffff600160a01b82048116602080850191909152600160c01b90920490911c16918101919091526005820154606082015260068201805460808301919061311190614ae0565b80601f016020809104026020016040519081016040528092919081815260200182805461313d90614ae0565b80156131885780601f1061315f57610100808354040283529160200191613188565b820191905f5260205f20905b81548152906001019060200180831161316b57829003601f168201915b5050505050815250915050919050565b6040805160a08101825260048301546001600160a01b038116825260098401546001600160401b03600160c01b9182900416602084015263ffffffff910416918101919091526005820154606082015260068201805460808301919061311190614ae0565b5f8061322a7f00000000000000000000000000000000000000000000000000000000000000006003614b85565b613254907f0000000000000000000000000000000000000000000000000000000000000000614b9c565b9050808362ffffff16108061329657508061329462ffffff85167f0000000000000000000000000000000000000000000000000000000000000000614b9c565b105b156132ad576132a58185614b85565b915050610e7b565b6132dc62ffffff84167f0000000000000000000000000000000000000000000000000000000000000000614b9c565b6132a59085614b85565b816132f4576132f481613731565b5050565b5f61333a86868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506134d792505050565b90506113cb3382613615565b5f546001600160a01b031633146122135760405163118cdaa760e01b815233600482015260240161042e565b5f5f826020015161ffff161180156133935750607f826020015161ffff1611155b8015610e7b575050604001516001600160401b0316151590565b5f6133bb8686868686613756565b90507ffb94adf28ab7e538d2691d90927f622cbc1100eae6afec58052efdee6c98a61681346040518060400160405280866020015160ff16815260200186604001516001600160401b031681525060405161341893929190615642565b60405180910390a195945050505050565b5f9081525f5160206158415f395f51905f526020526040902090565b600180546001600160a01b03191690556122f3816138c1565b73__$713c4f4487e8756194dbc5b3b091cd4345$__634c9f72e38280602001905181019061348c9190615671565b6040518263ffffffff1660e01b81526004016134a8919061570c565b5f6040518083038186803b1580156134be575f5ffd5b505af41580156134d0573d5f5f3e3d5ffd5b5050505050565b5f6135936001604051631bc1eaf360e21b81526004810188905273__$713c4f4487e8756194dbc5b3b091cd4345$__90636f07abcc90602401602060405180830381865af415801561352b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061354f9190614b1e565b600681111561356057613560613e6d565b14604051806040016040528060148152602001736e6f7420696e20506f737465642073746174757360601b8152506132e6565b604051637102a0df60e11b815273__$713c4f4487e8756194dbc5b3b091cd4345$__9063e20541be906135d69033903a9043908b908b908b908b9060040161574c565b602060405180830381865af41580156135f1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113cb919061579c565b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015612ec6573d5f5f3e3d5ffd5b60605f61365483613910565b6001600160401b0381111561366b5761366b613ea4565b6040519080825280601f01601f191660200182016040528015613695576020820181803683370190505b5090505f5b8151811015611fd3578381602081106136b5576136b5614a53565b1a60f81b8282815181106136cb576136cb614a53565b60200101906001600160f81b03191690815f1a90535060010161369a565b604080516001600160a01b038316602082015246918101919091525f906060015b604051602081830303815290604052805190602001209050919050565b5f610e8d836114ba565b613739612b5e565b81604051602001610408929190614d6a565b612213612ec1613948565b5f5f5160206158215f395f51905f5280545f9061377b906001600160401b03166157b3565b91906101000a8154816001600160401b0302191690836001600160401b0316021790556001600160401b031690505f6137b382613429565b6009810180546001600160c01b0316600160c01b436001600160401b03160217905590506137ea82856137e586613997565b6139ea565b60098201805460889290921c6001600160c01b031990921691909117600160781b6001600160481b0388160217905580546001600160a01b0319166001600160a01b0388161781556002810184905562ffffff86161561385f57805462ffffff60a01b1916600160a01b62ffffff8816021781555b82516008909101805460208501516040909501516001600160401b0316640100000000026bffffffffffffffff000000001961ffff968716620100000263ffffffff199093169690941695909517179190911692909217909155949350505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f5b6020811015611e475781816020811061392d5761392d614a53565b1a60f81b6001600160f81b03191615611e4757600101613912565b60606040518060400160405260108152806020016f2bb4ba27b930b1b632a230ba30a634b160811b81525060405160200161398391906157dd565b604051602081830303815290604052905090565b5f815f01518260200151836040015160405160200161370a9392919060f093841b6001600160f01b031990811682529290931b909116600283015260c01b6001600160c01b0319166004820152600c0190565b5f6139f4306136e9565b6139ff60014361580d565b604080516001600160e01b031990931660208401529040908201526001600160401b03851660608201526080810184905260a0810183905260c0016040516020818303038152906040528051906020012090509392505050565b905290565b6040805160c08101909152805f81526020015f81526020015f81526020015f81526020015f6001600160401b03168152602001613a59604080516101008101909152606060c082019081525f60e0830152819081525f6020820181905260408201819052606082018190526080820181905260a09091015290565b6040518060400160405280613b276040805160c0810182525f80825260208083018290528284018290526060808401526080830182905283518085019094528184528301529060a082015290565b81526040805160a0810182525f80825260208281018290529282018190526060808301919091526080820152910190613a59565b5f81518060208401855e5f93019283525090919050565b7f5769746e657455706772616461626c65426173653a206e6f7420696d706c656d8152680cadce8cac8744060f60bb1b60208201525f6113c8613bca613bc4613bbe602986018a613b5b565b88613b5b565b86613b5b565b84613b5b565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e8d6020830184613bd0565b6001600160a01b03811681146122f3575f5ffd5b5f60208284031215613c34575f5ffd5b8135610e8d81613c10565b62ffffff811681146122f3575f5ffd5b5f5f60408385031215613c60575f5ffd5b823591506020830135613c7281613c3f565b809150509250929050565b5f5f83601f840112613c8d575f5ffd5b5081356001600160401b03811115613ca3575f5ffd5b6020830191508360208260051b8501011115613cbd575f5ffd5b9250929050565b5f5f60208385031215613cd5575f5ffd5b82356001600160401b03811115613cea575f5ffd5b613cf685828601613c7d565b90969095509350505050565b5f60208284031215613d12575f5ffd5b5035919050565b60018060a01b03815116825262ffffff60208201511660208301526001600160481b0360408201511660408301525f606082015160e06060850152613d6160e0850182613bd0565b90506080830151608085015260a0830151613d9560a0860182805160ff1682526020908101516001600160401b0316910152565b509392505050565b602081525f610e8d6020830184613d19565b6001600160401b03811681146122f3575f5ffd5b5f5f83601f840112613dd3575f5ffd5b5081356001600160401b03811115613de9575f5ffd5b602083019150836020828501011115613cbd575f5ffd5b5f5f5f5f5f60808688031215613e14575f5ffd5b8535613e1f81613daf565b94506020860135613e2f81613daf565b93506040860135925060608601356001600160401b03811115613e50575f5ffd5b613e5c88828901613dc3565b969995985093965092949392505050565b634e487b7160e01b5f52602160045260245ffd5b600781106122f3576122f3613e6d565b60208101613e9e83613e81565b91905290565b634e487b7160e01b5f52604160045260245ffd5b606081018181106001600160401b0382111715613ed757613ed7613ea4565b60405250565b604081018181106001600160401b0382111715613ed757613ed7613ea4565b608081018181106001600160401b0382111715613ed757613ed7613ea4565b60c081018181106001600160401b0382111715613ed757613ed7613ea4565b601f8201601f191681016001600160401b0381118282101715613f5f57613f5f613ea4565b6040525050565b604051613f7460c082613f3a565b90565b61ffff811681146122f3575f5ffd5b5f60608284031215613f96575f5ffd5b604051613fa281613eb8565b8091508235613fb081613f77565b81526020830135613fc081613f77565b60208201526040830135613fd381613daf565b6040919091015292915050565b5f5f5f83850360c0811215613ff3575f5ffd5b843593506140048660208701613f86565b92506040607f1982011215614017575f5ffd5b5060405161402481613edd565b608085013561403281613c10565b815260a085013561404281613c3f565b602082015292959194509192509050565b5f60408284031215611321575f5ffd5b5f5f60608385031215614074575f5ffd5b823591506140858460208501614053565b90509250929050565b5f6001600160401b038211156140a6576140a6613ea4565b50601f01601f191660200190565b5f82601f8301126140c3575f5ffd5b81356140ce8161408e565b6040516140db8282613f3a565b8281528560208487010111156140ef575f5ffd5b826020860160208301375f92810160200192909252509392505050565b5f6020828403121561411c575f5ffd5b81356001600160401b03811115614131575f5ffd5b6110ab848285016140b4565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561419457603f1987860301845261417f858351613bd0565b94506020938401939190910190600101614163565b50929695505050505050565b61010081106141b1576141b1613e6d565b9052565b60208101610e7b82846141a0565b5f6001600160401b038211156141db576141db613ea4565b5060051b60200190565b5f602082840312156141f5575f5ffd5b81356001600160401b0381111561420a575f5ffd5b8201601f8101841361421a575f5ffd5b8035614225816141c3565b6040516142328282613f3a565b80915082815260208101915060208360051b850101925086831115614255575f5ffd5b602084015b838110156143015780356001600160401b03811115614277575f5ffd5b85016080818a03601f1901121561428c575f5ffd5b60405161429881613efc565b60208201356142a681613daf565b815260408201356142b681613daf565b60208201526060820135604082015260808201356001600160401b038111156142dd575f5ffd5b6142ec8b6020838601016140b4565b6060830152508452506020928301920161425a565b509695505050505050565b5f6020828403121561431c575f5ffd5b81356001600160401b03811115614331575f5ffd5b8201601f81018413614341575f5ffd5b803561434c816141c3565b6040516143598282613f3a565b80915082815260208101915060208360051b85010192508683111561437c575f5ffd5b6020840193505b828410156143a757833561439681613daf565b825260209384019390910190614383565b9695505050505050565b602080825282518282018190525f918401906040840190835b818110156143f15783516143dd81613e81565b8352602093840193909201916001016143ca565b509095945050505050565b6020815261440e6020820183516141a0565b5f60208301516014811061442457614424613e6d565b8060408401525060408301516060830152606083015160808301526001600160401b0360808401511660a083015260a083015160c080840152805160c060e0850152805160406101a086015261447e6101e0860182613bd0565b6020928301516101c08701529183015160ff16610100860152506040820151906144ae61012086018360ff169052565b606083015160ff1661014086015260808301516001600160401b0380821661016088015260a09094015193841661018087015291506113cb565b5f5f5f5f606085870312156144fb575f5ffd5b843593506020850135925060408501356001600160401b0381111561451e575f5ffd5b61452a87828801613dc3565b95989497509550505050565b5f5f5f60408486031215614548575f5ffd5b83356001600160401b0381111561455d575f5ffd5b840160e0818703121561456e575f5ffd5b925060208401356001600160401b03811115614588575f5ffd5b61459486828701613dc3565b9497909650939450505050565b5f5f5f5f606085870312156145b4575f5ffd5b84356145bf81613daf565b93506020850135925060408501356001600160401b0381111561451e575f5ffd5b5f5f604083850312156145f1575f5ffd5b823591506020830135613c7281613f77565b5f60208284031215614613575f5ffd5b8135610e8d81613daf565b60018060a01b03815116825262ffffff60208201511660208301525f6040820151608060408501526146536080850182613bd0565b606093840151949093019390935250919050565b60018060a01b0381511682526001600160401b036020820151166020830152604081015160408301525f606082015160a060608501526146aa60a0850182613bd0565b6080938401516001600160a01b0316949093019390935250919050565b602081525f825161010060208401526146e461012084018261461e565b90506020840151601f198483030160408501526147018282614667565b915050604084015161473e606085018261ffff815116825261ffff60208201511660208301526001600160401b0360408201511660408301525050565b5060608401516001600160881b03191660c084015260808401516001600160481b031660e084015260a0909301516001600160401b0316610100909201919091525090565b5f5f5f5f5f5f60808789031215614798575f5ffd5b86356001600160401b038111156147ad575f5ffd5b6147b989828a01613c7d565b90975095505060208701356001600160401b038111156147d7575f5ffd5b6147e389828a01613dc3565b979a9699509760408101359660609091013595509350505050565b5f5f6040838503121561480f575f5ffd5b50508035926020909101359150565b5f5f6080838503121561482f575f5ffd5b823591506140858460208501613f86565b602081525f610e8d602083018461461e565b6020815260ff82511660208201525f60208301516040808401526110ab6060840182613bd0565b60018060a01b0381511682526001600160401b03602082015116602083015263ffffffff6040820151166040830152606081015160608301525f608082015160a060808501526110ab60a0850182613bd0565b602081525f8251604060208401526148e76060840182613d19565b90506020840151601f198483030160408501526113cb8282614879565b803563ffffffff81168114611e47575f5ffd5b5f5f5f5f5f6080868803121561492b575f5ffd5b85359450613e2f60208701614904565b602081525f610e8d6020830184614667565b5f5f5f60a0848603121561495f575f5ffd5b83359250602084013591506149778560408601613f86565b90509250925092565b5f5f5f60808486031215614992575f5ffd5b833592506149a38560208601614053565b915060608401356149b381613c3f565b809150509250925092565b602081525f610e8d6020830184614879565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60ff831680614a0a57614a0a6149d0565b8060ff84160491505092915050565b60ff8181168382160190811115610e7b57610e7b6149e4565b5f60ff831680614a4457614a446149d0565b8060ff84160691505092915050565b634e487b7160e01b5f52603260045260245ffd5b5f8235607e19833603018112614a7b575f5ffd5b9190910192915050565b5f60208284031215614a95575f5ffd5b610e8d82614904565b5f5f8335601e19843603018112614ab3575f5ffd5b8301803591506001600160401b03821115614acc575f5ffd5b602001915036819003821315613cbd575f5ffd5b600181811c90821680614af457607f821691505b60208210810361132157634e487b7160e01b5f52602260045260245ffd5b600781106122f3575f5ffd5b5f60208284031215614b2e575f5ffd5b8151610e8d81614b12565b602080825281018290525f8360408301825b85811015614b7b578235614b5e81613c10565b6001600160a01b0316825260209283019290910190600101614b4b565b5095945050505050565b8082028115828204841417610e7b57610e7b6149e4565b80820180821115610e7b57610e7b6149e4565b5f60208284031215614bbf575f5ffd5b81518015158114610e8d575f5ffd5b858152602081018590526001600160401b03841660408201526060810183905260e081016143a7608083018461ffff815116825261ffff60208201511660208301526001600160401b0360408201511660408301525050565b60ff811681146122f3575f5ffd5b5f60208284031215614c45575f5ffd5b8135610e8d81614c27565b5f614c5a8361408e565b604051614c678282613f3a565b809250848152858585011115614c7b575f5ffd5b8484602083015e5f6020868301015250509392505050565b5f82601f830112614ca2575f5ffd5b610e8d83835160208501614c50565b5f5f60408385031215614cc2575f5ffd5b8251614ccd81613c10565b60208401519092506001600160401b03811115614ce8575f5ffd5b614cf485828601614c93565b9150509250929050565b80516101008110611e47575f5ffd5b5f60208284031215614d1d575f5ffd5b610e8d82614cfe565b5f60208284031215614d36575f5ffd5b81516001600160401b03811115614d4b575f5ffd5b8201601f81018413614d5b575f5ffd5b6110ab84825160208401614c50565b5f614d758285613b5b565b6101d160f51b81526113cb6002820185613b5b565b6001600160401b0383168152604060208201525f6110ab6040830184613bd0565b5f614db68284613b5b565b743a20696e76616c6964207265706f7274206461746160581b81526015019392505050565b6001600160a01b03831681526040602080830182905283519183018290525f91908401906060840190835b81811015614e2d5783516001600160401b0316835260209384019390920191600101614e06565b50909695505050505050565b5f60208284031215614e49575f5ffd5b81516001600160401b03811115614e5e575f5ffd5b8201601f81018413614e6e575f5ffd5b8051614e79816141c3565b604051614e868282613f3a565b80915082815260208101915060208360051b850101925086831115614ea9575f5ffd5b602084015b838110156143015780516001600160401b03811115614ecb575f5ffd5b614eda89602083890101614c93565b84525060209283019201614eae565b8051611e4781613daf565b8051611e4781614c27565b5f60c08284031215614f0f575f5ffd5b604051614f1b81613f1b565b80915082516001600160401b03811115614f33575f5ffd5b830160408186031215614f44575f5ffd5b604051614f5081613edd565b81516001600160401b03811115614f65575f5ffd5b614f7187828501614c93565b825250602091820151828201528252614f8b908401614ef4565b6020820152614f9c60408401614ef4565b6040820152614fad60608401614ef4565b6060820152614fbe60808401614ee9565b6080820152614fcf60a08401614ee9565b60a08201525092915050565b5f60c08284031215614feb575f5ffd5b604051614ff781613f1b565b80915061500383614cfe565b8152602083015160148110615016575f5ffd5b6020820152604083810151908201526060808401519082015261503b60808401614ee9565b608082015260a08301516001600160401b03811115615058575f5ffd5b61506485828601614eff565b60a0830152505092915050565b5f60208284031215615081575f5ffd5b81516001600160401b03811115615096575f5ffd5b6110ab84828501614fdb565b80356150ad81613f77565b61ffff16825260208101356150c181613f77565b61ffff16602083015260408101356150d881613daf565b6001600160401b0381166040840152505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6040808252843582820152602085013560608301525f9061513b90608084019087016150a2565b60a085013561514981613daf565b6001600160401b031660e083015260c085013536869003601e1901811261516e575f5ffd5b85016020810190356001600160401b03811115615189575f5ffd5b803603821315615197575f5ffd5b60e06101008501526151ae610120850182846150ec565b91505082810360208401526143a78185876150ec565b5f5f604083850312156151d5575f5ffd5b82516151e081613c10565b60208401519092506001600160401b038111156151fb575f5ffd5b614cf485828601614fdb565b6001600160a01b0388168152602081018790526040810186905261522e60608201866150a2565b6001600160401b03841660c082015261010060e08201525f615255610100830184866150ec565b9998505050505050505050565b80516001600160481b0381168114611e47575f5ffd5b5f60208284031215615288575f5ffd5b610e8d82615262565b5f60033d1115613f745760045f5f3e505f5160e01c90565b5f60443d10156152b65790565b6040513d600319016004823e80513d60248201116001600160401b03821117156152df57505090565b80820180516001600160401b038111156152fa575050505090565b3d8401600319018282016020011115615314575050505090565b613d9560208285010185613f3a565b5f60808284031215615333575f5ffd5b60405161533f81613efc565b809150825161534d81613c10565b8152602083015161535d81613c3f565b602082015260408301516001600160401b0381111561537a575f5ffd5b61538685828601614c93565b604083015250606092830151920191909152919050565b5f60a082840312156153ad575f5ffd5b60405160a081018181106001600160401b03821117156153cf576153cf613ea4565b806040525080915082516153e281613c10565b815260208301516153f281613daf565b60208201526040838101519082015260608301516001600160401b03811115615419575f5ffd5b61542585828601614c93565b606083015250608083015161543981613c10565b6080919091015292915050565b5f60608284031215615456575f5ffd5b60405161546281613eb8565b809150825161547081613f77565b8152602083015161548081613f77565b60208201526040830151613fd381613daf565b80516001600160881b031981168114611e47575f5ffd5b5f602082840312156154ba575f5ffd5b81516001600160401b038111156154cf575f5ffd5b820161010081850312156154e1575f5ffd5b6154e9613f66565b81516001600160401b038111156154fe575f5ffd5b61550a86828501615323565b82525060208201516001600160401b03811115615525575f5ffd5b6155318682850161539d565b6020830152506155448560408401615446565b604082015261555560a08301615493565b606082015261556660c08301615262565b608082015261557760e08301614ee9565b60a0820152949350505050565b5f60208284031215615594575f5ffd5b81516001600160401b038111156155a9575f5ffd5b6110ab84828501615323565b6001600160401b038181168382160190811115610e7b57610e7b6149e4565b5f602082840312156155e4575f5ffd5b81516001600160401b038111156155f9575f5ffd5b6110ab8482850161539d565b61ffff8281168282160390811115610e7b57610e7b6149e4565b5f61ffff831680615632576156326149d0565b8061ffff84160491505092915050565b8381526020808201849052825160ff1660408301528201516001600160401b03166060820152608081016110ab565b5f60208284031215615681575f5ffd5b81516001600160401b03811115615696575f5ffd5b8201601f810184136156a6575f5ffd5b80516156b1816141c3565b6040516156be8282613f3a565b80915082815260208101915060208360051b8501019250868311156156e1575f5ffd5b6020840193505b828410156143a75783516156fb81613c10565b8252602093840193909101906156e8565b602080825282518282018190525f918401906040840190835b818110156143f15783516001600160a01b0316835260209384019390920191600101615725565b60018060a01b03881681528660208201526001600160401b03861660408201528460608201526001600160401b03841660808201528260a082015260e060c08201525f61525560e0830184613bd0565b5f602082840312156157ac575f5ffd5b5051919050565b5f6001600160401b0382166001600160401b0381036157d4576157d46149e4565b60010192915050565b5f6157e88284613b5b565b741d103ab73430b7323632b21030b9b9b2b93a34b7b760591b81526015019392505050565b81810381811115610e7b57610e7b6149e456fef595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e183f595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e184a2646970667358221220a646d3a3190e8c4708bacedd2828a56a92e091552f6c7128dc54562bb85f4b8b64736f6c634300081e0033",
  "linkReferences": {
    "project/contracts/data/WitOracleDataLib.sol": {
      "WitOracleDataLib": [
        {
          "length": 20,
          "start": 6486
        },
        {
          "length": 20,
          "start": 6602
        },
        {
          "length": 20,
          "start": 8205
        },
        {
          "length": 20,
          "start": 8271
        },
        {
          "length": 20,
          "start": 8557
        },
        {
          "length": 20,
          "start": 9160
        },
        {
          "length": 20,
          "start": 9570
        },
        {
          "length": 20,
          "start": 9795
        },
        {
          "length": 20,
          "start": 10058
        },
        {
          "length": 20,
          "start": 10382
        },
        {
          "length": 20,
          "start": 10607
        },
        {
          "length": 20,
          "start": 10913
        },
        {
          "length": 20,
          "start": 11938
        },
        {
          "length": 20,
          "start": 12379
        },
        {
          "length": 20,
          "start": 12566
        },
        {
          "length": 20,
          "start": 12852
        },
        {
          "length": 20,
          "start": 13250
        },
        {
          "length": 20,
          "start": 14794
        },
        {
          "length": 20,
          "start": 14941
        },
        {
          "length": 20,
          "start": 15116
        }
      ]
    },
    "project/contracts/libs/WitOracleResultStatusLib.sol": {
      "WitOracleResultStatusLib": [
        {
          "length": 20,
          "start": 12106
        },
        {
          "length": 20,
          "start": 12540
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "project/contracts/data/WitOracleDataLib.sol": {
      "WitOracleDataLib": [
        {
          "length": 20,
          "start": 5100
        },
        {
          "length": 20,
          "start": 5216
        },
        {
          "length": 20,
          "start": 6819
        },
        {
          "length": 20,
          "start": 6885
        },
        {
          "length": 20,
          "start": 7171
        },
        {
          "length": 20,
          "start": 7774
        },
        {
          "length": 20,
          "start": 8184
        },
        {
          "length": 20,
          "start": 8409
        },
        {
          "length": 20,
          "start": 8672
        },
        {
          "length": 20,
          "start": 8996
        },
        {
          "length": 20,
          "start": 9221
        },
        {
          "length": 20,
          "start": 9527
        },
        {
          "length": 20,
          "start": 10552
        },
        {
          "length": 20,
          "start": 10993
        },
        {
          "length": 20,
          "start": 11180
        },
        {
          "length": 20,
          "start": 11466
        },
        {
          "length": 20,
          "start": 11864
        },
        {
          "length": 20,
          "start": 13408
        },
        {
          "length": 20,
          "start": 13555
        },
        {
          "length": 20,
          "start": 13730
        }
      ]
    },
    "project/contracts/libs/WitOracleResultStatusLib.sol": {
      "WitOracleResultStatusLib": [
        {
          "length": 20,
          "start": 10720
        },
        {
          "length": 20,
          "start": 11154
        }
      ]
    }
  },
  "immutableReferences": {
    "9009": [
      {
        "length": 32,
        "start": 7920
      }
    ],
    "9013": [
      {
        "length": 32,
        "start": 3185
      }
    ],
    "9104": [
      {
        "length": 32,
        "start": 1818
      }
    ],
    "10085": [
      {
        "length": 32,
        "start": 2351
      },
      {
        "length": 32,
        "start": 7806
      },
      {
        "length": 32,
        "start": 10113
      }
    ],
    "10087": [
      {
        "length": 32,
        "start": 5356
      }
    ],
    "10089": [
      {
        "length": 32,
        "start": 12912
      },
      {
        "length": 32,
        "start": 12984
      }
    ],
    "10091": [
      {
        "length": 32,
        "start": 12848
      }
    ],
    "10093": [
      {
        "length": 32,
        "start": 5312
      },
      {
        "length": 32,
        "start": 11617
      },
      {
        "length": 32,
        "start": 12804
      }
    ],
    "45715": [
      {
        "length": 32,
        "start": 3265
      }
    ],
    "45824": [
      {
        "length": 32,
        "start": 1745
      },
      {
        "length": 32,
        "start": 2830
      },
      {
        "length": 32,
        "start": 6279
      },
      {
        "length": 32,
        "start": 6392
      },
      {
        "length": 32,
        "start": 6463
      },
      {
        "length": 32,
        "start": 6497
      }
    ],
    "45828": [
      {
        "length": 32,
        "start": 1897
      },
      {
        "length": 32,
        "start": 8316
      }
    ]
  },
  "inputSourceName": "project/contracts/core/trustable/WitOracleTrustableReef.sol",
  "buildInfoId": "solc-0_8_30-47301052af11a5aa5062e9b98ca44d5e142950cf"
}