{
  "contractName": "TBTCSystemStub",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_priceFeed",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_relay",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_allowNewDeposits",
          "type": "bool"
        }
      ],
      "name": "AllowNewDepositsUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "_initialCollateralizedPercent",
          "type": "uint16"
        },
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "_undercollateralizedThresholdPercent",
          "type": "uint16"
        },
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "_severelyUndercollateralizedThresholdPercent",
          "type": "uint16"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "CollateralizationThresholdsUpdateStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "_initialCollateralizedPercent",
          "type": "uint16"
        },
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "_undercollateralizedThresholdPercent",
          "type": "uint16"
        },
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "_severelyUndercollateralizedThresholdPercent",
          "type": "uint16"
        }
      ],
      "name": "CollateralizationThresholdsUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "CourtesyCalled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_keepAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "Created",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_priceFeed",
          "type": "address"
        }
      ],
      "name": "EthBtcPriceFeedAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_priceFeed",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "EthBtcPriceFeedAdditionStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "ExitedCourtesyCall",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "FraudDuringSetup",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_txid",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "Funded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "_abortOutputScript",
          "type": "bytes"
        }
      ],
      "name": "FunderAbortRequested",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_digest",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_r",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_s",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "GotRedemptionSignature",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_keepStakedFactory",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_fullyBackedFactory",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_factorySelector",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "KeepFactoriesUpdateStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_keepStakedFactory",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_fullyBackedFactory",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_factorySelector",
          "type": "address"
        }
      ],
      "name": "KeepFactoriesUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "Liquidated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64[]",
          "name": "_lotSizes",
          "type": "uint64[]"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "LotSizesUpdateStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64[]",
          "name": "_lotSizes",
          "type": "uint64[]"
        }
      ],
      "name": "LotSizesUpdated",
      "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": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_txid",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "Redeemed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_requester",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_digest",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_utxoValue",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "_redeemerOutputScript",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_requestedFee",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "_outpoint",
          "type": "bytes"
        }
      ],
      "name": "RedemptionRequested",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_signingGroupPubkeyX",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_signingGroupPubkeyY",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "RegisteredPubkey",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "SetupFailed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "_signerFeeDivisor",
          "type": "uint16"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "SignerFeeDivisorUpdateStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "_signerFeeDivisor",
          "type": "uint16"
        }
      ],
      "name": "SignerFeeDivisorUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_wasFraud",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "StartedLiquidation",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_caller",
          "type": "address"
        }
      ],
      "name": "approvedToLog",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_initialCollateralizedPercent",
          "type": "uint16"
        },
        {
          "internalType": "uint16",
          "name": "_undercollateralizedThresholdPercent",
          "type": "uint16"
        },
        {
          "internalType": "uint16",
          "name": "_severelyUndercollateralizedThresholdPercent",
          "type": "uint16"
        }
      ],
      "name": "beginCollateralizationThresholdsUpdate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract IMedianizer",
          "name": "_ethBtcPriceFeed",
          "type": "address"
        }
      ],
      "name": "beginEthBtcPriceFeedAddition",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_keepStakedFactory",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_fullyBackedFactory",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_factorySelector",
          "type": "address"
        }
      ],
      "name": "beginKeepFactoriesUpdate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint64[]",
          "name": "_lotSizes",
          "type": "uint64[]"
        }
      ],
      "name": "beginLotSizesUpdate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_signerFeeDivisor",
          "type": "uint16"
        }
      ],
      "name": "beginSignerFeeDivisorUpdate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "emergencyPauseNewDeposits",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "fetchRelayCurrentDifficulty",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "fetchRelayPreviousDifficulty",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "finalizeCollateralizationThresholdsUpdate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "finalizeEthBtcPriceFeedAddition",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "finalizeKeepFactoriesUpdate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "finalizeLotSizesUpdate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "finalizeSignerFeeDivisorUpdate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getAllowNewDeposits",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getAllowedLotSizes",
      "outputs": [
        {
          "internalType": "uint64[]",
          "name": "",
          "type": "uint64[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getGovernanceTimeDelay",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitialCollateralizedPercent",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getKeepFactoriesUpgradeabilityPeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getMaximumLotSize",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getMinimumLotSize",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getNewDepositFeeEstimate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getPriceFeedGovernanceTimeDelay",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRemainingCollateralizationThresholdsUpdateTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRemainingEthBtcPriceFeedAdditionTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRemainingKeepFactoriesUpdateTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRemainingKeepFactoriesUpgradeabilityTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRemainingLotSizesUpdateTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRemainingPauseTerm",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRemainingSignerFeeDivisorUpdateTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getSeverelyUndercollateralizedThresholdPercent",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getSignerFeeDivisor",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getUndercollateralizedThresholdPercent",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract IBondedECDSAKeepFactory",
          "name": "_defaultKeepFactory",
          "type": "address"
        },
        {
          "internalType": "contract DepositFactory",
          "name": "_depositFactory",
          "type": "address"
        },
        {
          "internalType": "address payable",
          "name": "_masterDepositAddress",
          "type": "address"
        },
        {
          "internalType": "contract TBTCToken",
          "name": "_tbtcToken",
          "type": "address"
        },
        {
          "internalType": "contract TBTCDepositToken",
          "name": "_tbtcDepositToken",
          "type": "address"
        },
        {
          "internalType": "contract FeeRebateToken",
          "name": "_feeRebateToken",
          "type": "address"
        },
        {
          "internalType": "contract VendingMachine",
          "name": "_vendingMachine",
          "type": "address"
        },
        {
          "internalType": "uint16",
          "name": "_keepThreshold",
          "type": "uint16"
        },
        {
          "internalType": "uint16",
          "name": "_keepSize",
          "type": "uint16"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_requestedLotSizeSatoshis",
          "type": "uint64"
        }
      ],
      "name": "isAllowedLotSize",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isOwner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "keepSize",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "keepThreshold",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "logCourtesyCalled",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_keepAddress",
          "type": "address"
        }
      ],
      "name": "logCreated",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "logExitedCourtesyCall",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "logFraudDuringSetup",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_txid",
          "type": "bytes32"
        }
      ],
      "name": "logFunded",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_abortOutputScript",
          "type": "bytes"
        }
      ],
      "name": "logFunderRequestedAbort",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_digest",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_s",
          "type": "bytes32"
        }
      ],
      "name": "logGotRedemptionSignature",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "logLiquidated",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_txid",
          "type": "bytes32"
        }
      ],
      "name": "logRedeemed",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_requester",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_digest",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_utxoValue",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_redeemerOutputScript",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "_requestedFee",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_outpoint",
          "type": "bytes"
        }
      ],
      "name": "logRedemptionRequested",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_signingGroupPubkeyX",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_signingGroupPubkeyY",
          "type": "bytes32"
        }
      ],
      "name": "logRegisteredPubkey",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "logSetupFailed",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bool",
          "name": "_wasFraud",
          "type": "bool"
        }
      ],
      "name": "logStartedLiquidation",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "priceFeed",
      "outputs": [
        {
          "internalType": "contract ISatWeiPriceFeed",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "refreshMinimumBondableValue",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "relay",
      "outputs": [
        {
          "internalType": "contract IRelay",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "resumeNewDeposits",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_oraclePrice",
          "type": "uint256"
        }
      ],
      "name": "setOraclePrice",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "fetchBitcoinPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_keepAddress",
          "type": "address"
        }
      ],
      "name": "setKeepAddress",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "requestNewKeep",
      "outputs": [
        {
          "internalType": "address",
          "name": "_keepAddress",
          "type": "address"
        }
      ],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_priceFeed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_relay\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_allowNewDeposits\",\"type\":\"bool\"}],\"name\":\"AllowNewDepositsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_initialCollateralizedPercent\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_undercollateralizedThresholdPercent\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_severelyUndercollateralizedThresholdPercent\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"CollateralizationThresholdsUpdateStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_initialCollateralizedPercent\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_undercollateralizedThresholdPercent\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_severelyUndercollateralizedThresholdPercent\",\"type\":\"uint16\"}],\"name\":\"CollateralizationThresholdsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"CourtesyCalled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_keepAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"Created\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_priceFeed\",\"type\":\"address\"}],\"name\":\"EthBtcPriceFeedAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_priceFeed\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"EthBtcPriceFeedAdditionStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"ExitedCourtesyCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"FraudDuringSetup\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_txid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"Funded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_abortOutputScript\",\"type\":\"bytes\"}],\"name\":\"FunderAbortRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_digest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_r\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"GotRedemptionSignature\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_keepStakedFactory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_fullyBackedFactory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_factorySelector\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"KeepFactoriesUpdateStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_keepStakedFactory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_fullyBackedFactory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_factorySelector\",\"type\":\"address\"}],\"name\":\"KeepFactoriesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"Liquidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"_lotSizes\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"LotSizesUpdateStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"_lotSizes\",\"type\":\"uint64[]\"}],\"name\":\"LotSizesUpdated\",\"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\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_txid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"Redeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_requester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_digest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_utxoValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_redeemerOutputScript\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_requestedFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_outpoint\",\"type\":\"bytes\"}],\"name\":\"RedemptionRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_signingGroupPubkeyX\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_signingGroupPubkeyY\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"RegisteredPubkey\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"SetupFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_signerFeeDivisor\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"SignerFeeDivisorUpdateStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"_signerFeeDivisor\",\"type\":\"uint16\"}],\"name\":\"SignerFeeDivisorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_wasFraud\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"StartedLiquidation\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"approvedToLog\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_initialCollateralizedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_undercollateralizedThresholdPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_severelyUndercollateralizedThresholdPercent\",\"type\":\"uint16\"}],\"name\":\"beginCollateralizationThresholdsUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract IMedianizer\",\"name\":\"_ethBtcPriceFeed\",\"type\":\"address\"}],\"name\":\"beginEthBtcPriceFeedAddition\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_keepStakedFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_fullyBackedFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_factorySelector\",\"type\":\"address\"}],\"name\":\"beginKeepFactoriesUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"_lotSizes\",\"type\":\"uint64[]\"}],\"name\":\"beginLotSizesUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_signerFeeDivisor\",\"type\":\"uint16\"}],\"name\":\"beginSignerFeeDivisorUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"emergencyPauseNewDeposits\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fetchBitcoinPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fetchRelayCurrentDifficulty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fetchRelayPreviousDifficulty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"finalizeCollateralizationThresholdsUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"finalizeEthBtcPriceFeedAddition\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"finalizeKeepFactoriesUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"finalizeLotSizesUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"finalizeSignerFeeDivisorUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getAllowNewDeposits\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getAllowedLotSizes\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"\",\"type\":\"uint64[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getGovernanceTimeDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getInitialCollateralizedPercent\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getKeepFactoriesUpgradeabilityPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMaximumLotSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinimumLotSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNewDepositFeeEstimate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getPriceFeedGovernanceTimeDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRemainingCollateralizationThresholdsUpdateTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRemainingEthBtcPriceFeedAdditionTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRemainingKeepFactoriesUpdateTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRemainingKeepFactoriesUpgradeabilityTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRemainingLotSizesUpdateTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRemainingPauseTerm\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRemainingSignerFeeDivisorUpdateTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getSeverelyUndercollateralizedThresholdPercent\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getSignerFeeDivisor\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getUndercollateralizedThresholdPercent\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract IBondedECDSAKeepFactory\",\"name\":\"_defaultKeepFactory\",\"type\":\"address\"},{\"internalType\":\"contract DepositFactory\",\"name\":\"_depositFactory\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"_masterDepositAddress\",\"type\":\"address\"},{\"internalType\":\"contract TBTCToken\",\"name\":\"_tbtcToken\",\"type\":\"address\"},{\"internalType\":\"contract TBTCDepositToken\",\"name\":\"_tbtcDepositToken\",\"type\":\"address\"},{\"internalType\":\"contract FeeRebateToken\",\"name\":\"_feeRebateToken\",\"type\":\"address\"},{\"internalType\":\"contract VendingMachine\",\"name\":\"_vendingMachine\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_keepThreshold\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"_keepSize\",\"type\":\"uint16\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_requestedLotSizeSatoshis\",\"type\":\"uint64\"}],\"name\":\"isAllowedLotSize\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"keepSize\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"keepThreshold\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"logCourtesyCalled\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_keepAddress\",\"type\":\"address\"}],\"name\":\"logCreated\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"logExitedCourtesyCall\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"logFraudDuringSetup\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_txid\",\"type\":\"bytes32\"}],\"name\":\"logFunded\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_abortOutputScript\",\"type\":\"bytes\"}],\"name\":\"logFunderRequestedAbort\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_digest\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"logGotRedemptionSignature\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"logLiquidated\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_txid\",\"type\":\"bytes32\"}],\"name\":\"logRedeemed\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_digest\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_utxoValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_redeemerOutputScript\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_requestedFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_outpoint\",\"type\":\"bytes\"}],\"name\":\"logRedemptionRequested\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_signingGroupPubkeyX\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_signingGroupPubkeyY\",\"type\":\"bytes32\"}],\"name\":\"logRegisteredPubkey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"logSetupFailed\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_wasFraud\",\"type\":\"bool\"}],\"name\":\"logStartedLiquidation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"priceFeed\",\"outputs\":[{\"internalType\":\"contract ISatWeiPriceFeed\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"refreshMinimumBondableValue\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"relay\",\"outputs\":[{\"internalType\":\"contract IRelay\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"requestNewKeep\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_keepAddress\",\"type\":\"address\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"resumeNewDeposits\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_keepAddress\",\"type\":\"address\"}],\"name\":\"setKeepAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_oraclePrice\",\"type\":\"uint256\"}],\"name\":\"setOraclePrice\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"approvedToLog(address)\":{\"details\":\"checks tbtcDepositToken to see if the caller represents                     an existing deposit.                     We don't require this, so deposits are not bricked if the system borks.\",\"params\":{\"_caller\":\"The address of the calling contract.\"},\"return\":\"True if approved, otherwise false.\"},\"beginCollateralizationThresholdsUpdate(uint16,uint16,uint16)\":{\"details\":\"This can be finalized by calling `finalizeCollateralizationThresholdsUpdate`         Anytime after `governanceTimeDelay` has elapsed.\",\"params\":{\"_initialCollateralizedPercent\":\"default signing bond percent for new deposits\",\"_severelyUndercollateralizedThresholdPercent\":\"second undercollateralization trigger\",\"_undercollateralizedThresholdPercent\":\"first undercollateralization trigger\"}},\"beginEthBtcPriceFeedAddition(address)\":{\"details\":\"This can be finalized by calling `finalizeEthBtcPriceFeedAddition`      anytime after `priceFeedGovernanceTimeDelay` has elapsed.\"},\"beginKeepFactoriesUpdate(address,address,address)\":{\"details\":\"It can be finalized by calling `finalizeKeepFactoriesUpdate`      any time after `governanceTimeDelay` has elapsed. This can be      called more than once until finalized to reset the values and      timer. An update can only be initialized before      `keepFactoriesUpgradeabilityPeriod` elapses after system initialization;      after that, no further updates can be initialized, though any pending      update can be finalized. All calls must set all three properties to      their desired value; leaving a value as 0, even if it was previously      set, will update that value to be 0. ETH-bond-only factory or the      strategy are allowed to be set as zero addresses.\",\"params\":{\"_factorySelector\":\"Address of the keep factory selection strategy.\",\"_fullyBackedFactory\":\"Address of the ETH-bond-only-based factory.\",\"_keepStakedFactory\":\"Address of the KEEP staked based factory.\"}},\"beginLotSizesUpdate(uint64[])\":{\"details\":\"Lot size array should always contain 10**8 satoshis (1 BTC) and         cannot contain values less than 50000 satoshis (0.0005 BTC) or         greater than 10**10 satoshis (100 BTC). Lot size array must not         have duplicates and it must be sorted.         This can be finalized by calling `finalizeLotSizesUpdate`         anytime after `governanceTimeDelay` has elapsed.\",\"params\":{\"_lotSizes\":\"Array of allowed lot sizes.\"}},\"beginSignerFeeDivisorUpdate(uint16)\":{\"details\":\"This can be finalized by calling `finalizeSignerFeeDivisorUpdate`         Anytime after `governanceTimeDelay` has elapsed.\",\"params\":{\"_signerFeeDivisor\":\"The signer fee divisor.\"}},\"fetchBitcoinPrice()\":{\"details\":\"Override TBTCSystem.fetchBitcoinPrice, don't call out to the price feed.\"},\"finalizeCollateralizationThresholdsUpdate()\":{\"details\":\"`beginCollateralizationThresholdsUpdate` must be called first, once `governanceTimeDelay`       has passed, this function can be called to set the collateralization thresholds to the       value set in `beginCollateralizationThresholdsUpdate`\"},\"finalizeEthBtcPriceFeedAddition()\":{\"details\":\"`beginEthBtcPriceFeedAddition` must be called first; once      `ethBtcPriceFeedAdditionInitiated` has passed, this function can be      called to append a new price feed.\"},\"finalizeKeepFactoriesUpdate()\":{\"details\":\"`beginKeepFactoriesUpdate` must be called first; once      `governanceTimeDelay` has passed, this function can be called to      set factories addresses to the values set in `beginKeepFactoriesUpdate`.\"},\"finalizeLotSizesUpdate()\":{\"details\":\"`beginLotSizesUpdate` must be called first, once `governanceTimeDelay`       has passed, this function can be called to set the lot sizes to the       value set in `beginLotSizesUpdate`\"},\"finalizeSignerFeeDivisorUpdate()\":{\"details\":\"`beginSignerFeeDivisorUpdate` must be called first, once `governanceTimeDelay`       has passed, this function can be called to set the signer fee divisor to the       value set in `beginSignerFeeDivisorUpdate`\"},\"getAllowNewDeposits()\":{\"return\":\"True if new deposits should be allowed by the emergency pause button\"},\"getAllowedLotSizes()\":{\"return\":\"Uint64 array of allowed lot sizes\"},\"getMaximumLotSize()\":{\"return\":\"The largest lot size, in satoshis.\"},\"getMinimumLotSize()\":{\"return\":\"The lowest lot size, in satoshis.\"},\"getNewDepositFeeEstimate()\":{\"return\":\"Uint256 estimate.\"},\"getSignerFeeDivisor()\":{\"return\":\"The signer fee divisor.\"},\"initialize(address,address,address,address,address,address,address,uint16,uint16)\":{\"details\":\"Only the Deposit factory should call this, and only once.\",\"params\":{\"_defaultKeepFactory\":\"ECDSA keep factory backed by KEEP stake.\",\"_depositFactory\":\"Deposit Factory. More info in `DepositFactory`.\",\"_feeRebateToken\":\"FeeRebateToken (FRT). More info in `FeeRebateToken`.\",\"_keepSize\":\"Signing group size.\",\"_keepThreshold\":\"Signing group honesty threshold.\",\"_masterDepositAddress\":\"Master Deposit address. More info in `Deposit`.\",\"_tbtcDepositToken\":\"TBTCDepositToken (TDT). More info in `TBTCDepositToken`.\",\"_tbtcToken\":\"TBTCToken. More info in `TBTCToken`.\"}},\"isAllowedLotSize(uint64)\":{\"params\":{\"_requestedLotSizeSatoshis\":\"Lot size to check.\"},\"return\":\"True if lot size is allowed, false otherwise.\"},\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"logCourtesyCalled()\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logCreated(address)\":{\"details\":\"We append the sender, which is the deposit contract that called.\",\"params\":{\"_keepAddress\":\"The address of the associated keep.\"},\"return\":\"True if successful, else revert.\"},\"logExitedCourtesyCall()\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logFraudDuringSetup()\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logFunded(bytes32)\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logFunderRequestedAbort(bytes)\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logGotRedemptionSignature(bytes32,bytes32,bytes32)\":{\"details\":\"We append the sender, which is the deposit contract that called.\",\"params\":{\"_digest\":\"signed digest.\",\"_r\":\"signature r value.\",\"_s\":\"signature s value.\"}},\"logLiquidated()\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logRedeemed(bytes32)\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logRedemptionRequested(address,bytes32,uint256,bytes,uint256,bytes)\":{\"details\":\"This is the only event without an explicit timestamp.\",\"params\":{\"_digest\":\"The calculated sighash digest.\",\"_outpoint\":\"The 36 byte outpoint.\",\"_redeemerOutputScript\":\"The redeemer's length-prefixed output script.\",\"_requestedFee\":\"The requester or bump-system specified fee.\",\"_requester\":\"The ethereum address of the requester.\",\"_utxoValue\":\"The size of the utxo in sat.\"},\"return\":\"True if successful, else revert.\"},\"logRegisteredPubkey(bytes32,bytes32)\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logSetupFailed()\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logStartedLiquidation(bool)\":{\"details\":\"We append the sender, which is the deposit contract that called.\",\"params\":{\"_wasFraud\":\"True if liquidating for fraud.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"refreshMinimumBondableValue()\":{\"details\":\"It is recommended to call this function on tBTC initialization and after minimum lot size update.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner.     * > Note: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}}},\"userdoc\":{\"methods\":{\"approvedToLog(address)\":{\"notice\":\"Checks if an address is an allowed logger.\"},\"beginCollateralizationThresholdsUpdate(uint16,uint16,uint16)\":{\"notice\":\"Set the system collateralization levels\"},\"beginEthBtcPriceFeedAddition(address)\":{\"notice\":\"Add a new ETH/BTC price feed contract to the priecFeed.\"},\"beginKeepFactoriesUpdate(address,address,address)\":{\"notice\":\"Sets the addresses of the KEEP-staked ECDSA keep factory,         ETH-only-backed ECDSA keep factory and the selection strategy         that will choose between the two factories for new deposits.         When the ETH-only-backed factory and strategy are not set TBTCSystem         will use KEEP-staked factory. When both factories and strategy         are set, TBTCSystem load balances between two factories based on         the selection strategy.\"},\"beginLotSizesUpdate(uint64[])\":{\"notice\":\"Set the allowed deposit lot sizes.\"},\"beginSignerFeeDivisorUpdate(uint16)\":{\"notice\":\"Set the system signer fee divisor.\"},\"emergencyPauseNewDeposits()\":{\"notice\":\"One-time-use emergency function to disallow future deposit creation for 10 days.\"},\"finalizeCollateralizationThresholdsUpdate()\":{\"notice\":\"Finish setting the system collateralization levels\"},\"finalizeEthBtcPriceFeedAddition()\":{\"notice\":\"Finish adding a new price feed contract to the priceFeed.\"},\"finalizeKeepFactoriesUpdate()\":{\"notice\":\"Finish setting addresses of the KEEP-staked ECDSA keep factory,         ETH-only-backed ECDSA keep factory, and the selection strategy         that will choose between the two factories for new deposits.\"},\"finalizeLotSizesUpdate()\":{\"notice\":\"Finish setting the accepted system lot sizes.\"},\"finalizeSignerFeeDivisorUpdate()\":{\"notice\":\"Finish setting the system signer fee divisor.\"},\"getAllowNewDeposits()\":{\"notice\":\"Returns whether new deposits should be allowed.\"},\"getAllowedLotSizes()\":{\"notice\":\"Gets the allowed lot sizes\"},\"getGovernanceTimeDelay()\":{\"notice\":\"Returns the time delay used for governance actions except for         price feed additions.\"},\"getInitialCollateralizedPercent()\":{\"notice\":\"Get the system initial collateralized level for new deposits.\"},\"getKeepFactoriesUpgradeabilityPeriod()\":{\"notice\":\"Returns the time period when keep factories upgrades are allowed.\"},\"getMaximumLotSize()\":{\"notice\":\"Return the largest lot size currently enabled for deposits.\"},\"getMinimumLotSize()\":{\"notice\":\"Return the lowest lot size currently enabled for deposits.\"},\"getNewDepositFeeEstimate()\":{\"notice\":\"Gets a fee estimate for creating a new Deposit.\"},\"getPriceFeedGovernanceTimeDelay()\":{\"notice\":\"Returns the time delay used for price feed addition governance         actions.\"},\"getRemainingCollateralizationThresholdsUpdateTime()\":{\"notice\":\"Get the time remaining until the collateralization thresholds can be updated.\"},\"getRemainingEthBtcPriceFeedAdditionTime()\":{\"notice\":\"Get the time remaining until the signer fee divisor can be updated.\"},\"getRemainingKeepFactoriesUpdateTime()\":{\"notice\":\"Get the time remaining until the Keep ETH-only-backed ECDSA keep         factory and the selection strategy that will choose between it         and the KEEP-backed factory can be updated.\"},\"getRemainingKeepFactoriesUpgradeabilityTime()\":{\"notice\":\"Get the time remaining until Keep factories can no longer be updated.\"},\"getRemainingLotSizesUpdateTime()\":{\"notice\":\"Get the time remaining until the lot sizes can be updated.\"},\"getRemainingSignerFeeDivisorUpdateTime()\":{\"notice\":\"Get the time remaining until the signer fee divisor can be updated.\"},\"getSeverelyUndercollateralizedThresholdPercent()\":{\"notice\":\"Get the system severe undercollateralization level for new deposits\"},\"getSignerFeeDivisor()\":{\"notice\":\"Gets the system signer fee divisor.\"},\"getUndercollateralizedThresholdPercent()\":{\"notice\":\"Get the system undercollateralization level for new deposits\"},\"initialize(address,address,address,address,address,address,address,uint16,uint16)\":{\"notice\":\"Initialize contracts\"},\"isAllowedLotSize(uint64)\":{\"notice\":\"Check if a lot size is allowed.\"},\"logCourtesyCalled()\":{\"notice\":\"Fires a CourtesyCalled event.\"},\"logCreated(address)\":{\"notice\":\"Fires a Created event.\"},\"logExitedCourtesyCall()\":{\"notice\":\"Fires a ExitedCourtesyCall event\"},\"logFraudDuringSetup()\":{\"notice\":\"Fires a FraudDuringSetup event.\"},\"logFunded(bytes32)\":{\"notice\":\"Fires a Funded event.\"},\"logFunderRequestedAbort(bytes)\":{\"notice\":\"Fires a FunderAbortRequested event.\"},\"logGotRedemptionSignature(bytes32,bytes32,bytes32)\":{\"notice\":\"Fires a GotRedemptionSignature event.\"},\"logLiquidated()\":{\"notice\":\"Fires a Liquidated event\"},\"logRedeemed(bytes32)\":{\"notice\":\"Fires a Redeemed event\"},\"logRedemptionRequested(address,bytes32,uint256,bytes,uint256,bytes)\":{\"notice\":\"Fires a RedemptionRequested event.\"},\"logRegisteredPubkey(bytes32,bytes32)\":{\"notice\":\"Fires a RegisteredPubkey event.\"},\"logSetupFailed()\":{\"notice\":\"Fires a SetupFailed event.\"},\"logStartedLiquidation(bool)\":{\"notice\":\"Fires a StartedLiquidation event.\"},\"refreshMinimumBondableValue()\":{\"notice\":\"Refreshes the minimum bondable value required from the operator to join the sortition pool for tBTC. The minimum bondable value is equal to the current minimum lot size collateralized 150% multiplied by the current BTC price.\"},\"resumeNewDeposits()\":{\"notice\":\"Anyone can reactivate deposit creations after the pause duration is over.\"}}}},\"settings\":{\"compilationTarget\":{\"/home/runner/work/tbtc/tbtc/solidity/contracts/test/system/TBTCSystemStub.sol\":\"TBTCSystemStub\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/runner/work/tbtc/tbtc/solidity/contracts/DepositLog.sol\":{\"keccak256\":\"0xd2422abaf64bf2d28f4c0548bc31c3d0e4c5f3e4414486c149b773bea0c9db0a\",\"urls\":[\"bzz-raw://c4b0e3caea108ce67da5922906753dc1a1f87cee923e7c32260239150f2152bb\",\"dweb:/ipfs/QmcHcftf4M6ZyuFG725QiFGHuAtz6zDQZ9HCEaoP5Wb6Fd\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/Deposit.sol\":{\"keccak256\":\"0x4e25c6bfe874c5254659e99b5d87ad0bd6299468106c8f955e973a0431367dec\",\"urls\":[\"bzz-raw://c54c7e956fee91813946745f23d11062a9dd2c07d916979871f7468509295de4\",\"dweb:/ipfs/QmQ1qFjzq9uY7SmdUqzwNM7z8AAnCbji2joqkJYJSBaJyW\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositFunding.sol\":{\"keccak256\":\"0xe223f4e039e347d3eec8eea8d30d6f87f25ab3f8839e96b5da608c6a012db2c2\",\"urls\":[\"bzz-raw://48435948a4b232a3c610f7ac51e5c87a27aa10f92775bc95cd2068dd07b69a70\",\"dweb:/ipfs/Qmd7PeN1uovU8BqyrPuLkKf4U1DENt9S7hFr6G5cXFamim\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositLiquidation.sol\":{\"keccak256\":\"0x6ec98705ac0cfc20f2e94069ba88c74816c40283c47b3086cf619b69d8a15379\",\"urls\":[\"bzz-raw://981e7e1ababfe4bb7bb35251679f59d188348c416af29822794011a0e48f2cd3\",\"dweb:/ipfs/QmTpPQCYP3qzKdcMBLBZGRSM2X6rgR1CZmYDQ7SHP4pjrb\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositRedemption.sol\":{\"keccak256\":\"0xe40c0cbb443715c4f587b78f568348276fabae9a2f77645596367a1f65b1fae5\",\"urls\":[\"bzz-raw://310d07df39ad769b5ffca044a1a589686268d72ac36d568360da3a4a9ab16f93\",\"dweb:/ipfs/QmT9stQ2AVkF7i9nvDSTswhD6EkfNHVCtTmRENsVqYxwso\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositStates.sol\":{\"keccak256\":\"0x0b407fe4cfa56771c7cb0280e58c23e6c79089bb0f39ec9af83855103cfadce0\",\"urls\":[\"bzz-raw://b06c9ff8c10125cd7dcee7167fd081c95248c97c699a4dfc92bf65d68774f5f1\",\"dweb:/ipfs/QmcdTkj1XtJcPhF9pxr56xV4DW3SxGaaiE5PeGxbYVoHL3\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositUtils.sol\":{\"keccak256\":\"0xc18e532fc384f45567abcf7fbe7bccb885308d63ffeed41d9cf845573a289b98\",\"urls\":[\"bzz-raw://7250e8fce13326313e64d2f24e093bd51c9fdba939b8370f64a1fe820814275b\",\"dweb:/ipfs/QmVfX5w4xN6gxoqbdgPeeTbBvFtxxaNYWSknSY7JDtve2b\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/OutsourceDepositLogging.sol\":{\"keccak256\":\"0x8bddca84b4106ea5d865b5e19c0d49f3dc94a7e614c7403ae05074eda01d6ee9\",\"urls\":[\"bzz-raw://65b05f6e04ae46a16194db335ad21dd806d0b07ad571a126b6981896890c8a4c\",\"dweb:/ipfs/QmTF4RgELhXX7pooNKwW8qNY7Sr7dFY7vfueApjTMa99jt\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/external/IMedianizer.sol\":{\"keccak256\":\"0xbe5c1dbd0f097ed0ef72e2a61ab54de315685a835e7dc7f5d3404b5158189c67\",\"urls\":[\"bzz-raw://0519b1ce42540d07debfa8b62a52c6c44b309ea549cc4d3166d4fd821aec9b79\",\"dweb:/ipfs/QmYD2cojTyk2ZDrWrTKSthVUAPydzAgPrpRWeiwJyksPJV\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/interfaces/ISatWeiPriceFeed.sol\":{\"keccak256\":\"0x41bdcc0cfbd415d58fdc01cc54adeb832933f31895d1f9a26c8eab16518d6d96\",\"urls\":[\"bzz-raw://b4c69fdffa322a4276032fe2ee0cbb950c81afff7dcd78eb18dddabc4fe2d015\",\"dweb:/ipfs/QmaJUvL5HNChwyrNN82Es5vhVZ9pHwgdsj9uEcUhBFR43R\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/interfaces/ITBTCSystem.sol\":{\"keccak256\":\"0xd8530ab1baddbdfbba6c1b03e547375afe79493b9948d645f94fc0da12ec953b\",\"urls\":[\"bzz-raw://713285a0a4d865a37f3770ce848c20f7277e1540c0a8aa43c2ae0966a7c3df9a\",\"dweb:/ipfs/QmaPiXxvySt9UDmQtVGidh8TQ4XJdxY2X61rEBd8346ELi\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/interfaces/ITokenRecipient.sol\":{\"keccak256\":\"0x4ac6830ad44d0b0d70ebabc60150e9c915c7c0bd0129ef868d5d2cd8da0c32bd\",\"urls\":[\"bzz-raw://a5c6465285add41f07a951f90405800a8802e323ea11e9c7bdb5625ce109c7f7\",\"dweb:/ipfs/QmRf7B4WxsS7gbSwUotgQM633BQc2ye7rhYC1RNVFamBfp\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/proxy/CloneFactory.sol\":{\"keccak256\":\"0xdd6c92a00393f04b98d8749fe5e4235cfc2967d1486698a1b37db3dc6848f2f6\",\"urls\":[\"bzz-raw://ec57ffe219b198a4e494f950958e19455849e68a37d94545ddfdebb136ac17e4\",\"dweb:/ipfs/QmTcYbxJFdzdp75pcoTu83XdK1acK8rtWZNZEZz2E9HauH\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/proxy/DepositFactory.sol\":{\"keccak256\":\"0x21fa9b3591283735e7ae42a3b68f3c6cc2750b56b9727824e96a1786b2b17297\",\"urls\":[\"bzz-raw://07f3ffd287da573ff3d849fdd9826091b7e1f808a7cf6811727396c91de7124e\",\"dweb:/ipfs/QmShqBpzyx7gtopjV7wxpAZkdydduXuoThXotMjG5u7xe4\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/DepositFactoryAuthority.sol\":{\"keccak256\":\"0xd8e81ec58dea6a6bcc554e8c7e6c58898ab11a410c3f61224330cbe833992add\",\"urls\":[\"bzz-raw://9d2b23cf1e2f98eb77acf6ae62933e48494113e1d6091146459fd79a635f1dcf\",\"dweb:/ipfs/QmPK3nTmcrScDavDSXGHvonhfik3BJ55qhwSnUmhzL5QUE\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/FeeRebateToken.sol\":{\"keccak256\":\"0x3d9980b4b18be7e69364b93581d86d08dd2c66fc76b2f9f0af0b4911dc648318\",\"urls\":[\"bzz-raw://751dae1cd68c285a22b513d515074eb6704e11e00ba8196f360d47dc8551dd86\",\"dweb:/ipfs/QmRe5u8bjSd2CMvjgWMzpeea3VdcqEGwAP91zvjxgur8o8\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/KeepFactorySelection.sol\":{\"keccak256\":\"0x26d39ca282d933df1c349ab52be37c19af9f4f8d24f0fb25700ef221a8294d6f\",\"urls\":[\"bzz-raw://fc25c76e38172ca0e12f51aecc53ed498c3b1a6900b0f358f3404c5df22fc40b\",\"dweb:/ipfs/QmQvHwrufw7UaKkVmf15xvFXgSFYzNua2abFpQLjzibnV3\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCConstants.sol\":{\"keccak256\":\"0x74833fb25cf9f24716d563c8fad0fd6172d03577dc85ab4271ca4754285ee915\",\"urls\":[\"bzz-raw://62d37b71546ea52f0c86170b588b021a488785e8570f904f0d2bcfecee93f6a7\",\"dweb:/ipfs/QmePuD631VYpEproKbap8cPXmWeb5mYjU6bwEWnxKCVWbz\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCDepositToken.sol\":{\"keccak256\":\"0xd9238bbd83f5352706426103a0708ad7c00ffbd90340a4b3bab03d2c5371e48b\",\"urls\":[\"bzz-raw://f1fc94f00aeabd49bd0f8ecf372213e83c949454c28fa672a46dd12d9a0b4311\",\"dweb:/ipfs/QmaCzqi2g4GSvzHDDES61FauDmdTGGyZrCkK1BdxpMqYa3\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCSystem.sol\":{\"keccak256\":\"0x6f56aed8aa836939b416dacfd0ce1605c943d763647a5a75597781024248fe84\",\"urls\":[\"bzz-raw://2e1776056f6950ea5cd4893bbcd4418017cd3a417406c6c12c0714e93b8a3122\",\"dweb:/ipfs/QmaaTR6wcbxwPC4c6PNbCath2N4pmAKW2Q5ECY567HNwv4\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCSystemAuthority.sol\":{\"keccak256\":\"0xc072c71402f122e3ae148000b95559169cb39b8752977817f4f88b372e7d77dd\",\"urls\":[\"bzz-raw://9c91b71602bf36f66d6ab24156777a2ef18c027f09055232011f9012387e6c70\",\"dweb:/ipfs/QmYAEZ8ithnhVcdCt76mqeJg6P8ZY3VejsV7pQNvMMFqc2\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCToken.sol\":{\"keccak256\":\"0x167b07029df8d350996d7f82d853437d1a2562401eeac98037c2eb4c5f295319\",\"urls\":[\"bzz-raw://7d2601ac8dcd5d59b3e479a61262de2162c96ed7ad1cd161331e2e4500b8346a\",\"dweb:/ipfs/QmWVjBSvHFg9W5zsSxgdpNSYKgfLa28fr3mPjjKQaDBxmk\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/VendingMachine.sol\":{\"keccak256\":\"0x26caaccd71277d1807d40553f4e7291307d4db9c292bc28a9d8cbee94b5c3e40\",\"urls\":[\"bzz-raw://b7ec73a87fe902bfc5d0fcda5fcc16d2dc025e685fc7b7876ec1a1da65cf0ede\",\"dweb:/ipfs/QmcBkU6Ze8T3ewqZZmUiniTKZkVaQTaNFejXXRgvfiTrPE\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/VendingMachineAuthority.sol\":{\"keccak256\":\"0x7ad8a2cee5e6bbc187d04b147dc0d2bc2ae12bb8c3680870be9013dd5543bfd6\",\"urls\":[\"bzz-raw://733f2370c788437b0034c40a8df07f4714009769ed8134a9c656e2a103996687\",\"dweb:/ipfs/Qma9LAGQDzyUvsbhLx3FUKRCx3FmnoZuMxG4SUdjLr8bRm\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/test/system/TBTCSystemStub.sol\":{\"keccak256\":\"0x88284e17be64ab03fa039807d66fd114a9de2ecf005eeaad087b77260b95a806\",\"urls\":[\"bzz-raw://5df82871d0040b00b90acf509035f35399ec1fe8727fba93c5a0306c35f62414\",\"dweb:/ipfs/QmdLrrVbgeyesbzUxpwiyvoyhWPWg5GXL8VNgAKsEi5sRf\"]},\"@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeep.sol\":{\"keccak256\":\"0x8f1edc0a2dfb4d167d190989ebc1c4256664e50ec1f82dfaeb25fa5d4a76a35a\",\"urls\":[\"bzz-raw://e815868907cc082fee1e3964be7de12da2161863d68dd1532a74e3a97bacf533\",\"dweb:/ipfs/Qmd8DqutKSwxh38WWA1ydftNkiAxSD9sqxa7qf1asHKA8c\"]},\"@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeepFactory.sol\":{\"keccak256\":\"0x07ae883d2a0f5b7fe2c0b055206f565da51b04d1ca574ae4d4da3a19e6badcdb\",\"urls\":[\"bzz-raw://038b4f5b45b2d676ef7411b69cadd490d5789e3d245afd78aaa72177ce042572\",\"dweb:/ipfs/QmRaBYU4HCDSH33a3gpLN4t2TsyNaFRxLKv3WeAZEgk9Rr\"]},\"@summa-tx/bitcoin-spv-sol/contracts/BTCUtils.sol\":{\"keccak256\":\"0x461cc52e40ba53e646f5c9505b992baa3d5b3c98ae5718561e61b3bc6c726d52\",\"urls\":[\"bzz-raw://90cf2e608b660671642a616ec044e2a39e8ceb7079315b6133ec978c47af9f98\",\"dweb:/ipfs/QmX4hyYS99RYWiQ7BwLXuvQpU5x62YbjJWLgYFwrPkYbzT\"]},\"@summa-tx/bitcoin-spv-sol/contracts/BytesLib.sol\":{\"keccak256\":\"0x43451fdb4c4d55c01122411a4cf89a5c544c2bd4b646ee1d1f306626275324bf\",\"urls\":[\"bzz-raw://db93f07c32fa294d416aaab1b19a205772f2a3fa573fd380e5641e7770193ccf\",\"dweb:/ipfs/QmVE4y8cFKWZGKEfTM9Q3YreAArpMTTALHNr2tcvcNDnbi\"]},\"@summa-tx/bitcoin-spv-sol/contracts/CheckBitcoinSigs.sol\":{\"keccak256\":\"0x2fcbfa2440f69e346d5e14d960b14498f6484f83713fe7cec1ecf4abea3835a1\",\"urls\":[\"bzz-raw://4a385ef55a53dd0dcd1b687a47dbf6785580883a0be0cb10c617c338a35f3a8b\",\"dweb:/ipfs/QmZp9AT146beL3SoETJCWsJ4zzAZQavy9oGCYPiwAofEtq\"]},\"@summa-tx/bitcoin-spv-sol/contracts/SafeMath.sol\":{\"keccak256\":\"0x22d34c04c68c2a77ee83e2ef3756f6e6bad6ad675560d777e612315d7eb83935\",\"urls\":[\"bzz-raw://b642c61be1d34e153e4f9cc139291fa26f4ecf31a3acc5b960aad20f4f689eeb\",\"dweb:/ipfs/QmWADdVTCSyvtgb76AxFFkAr9h9jbY57Mj5X6xiEqCqmMu\"]},\"@summa-tx/bitcoin-spv-sol/contracts/ValidateSPV.sol\":{\"keccak256\":\"0x9af3b3f36de63e95977f09548617989e391b3c511cf0383ee35cefd5da7d3bfd\",\"urls\":[\"bzz-raw://97ce025c7d18540e4c24578db61cc5e33828be8e9a82b5cb5f46c99212f75ed1\",\"dweb:/ipfs/QmRrdWnd95rgCZzeaNiU4KUcGe1j7oDBj7LatpXhUmjbEE\"]},\"@summa-tx/relay-sol/contracts/Interfaces.sol\":{\"keccak256\":\"0x6f2698f8aab5cee319f36d69438b6870496a5523e7ccac4b465cdb38661242fa\",\"urls\":[\"bzz-raw://7f854c72db81631d1df800ae0c5fb0a50dc9efd97b0e6593b063c9fb1c61ef9e\",\"dweb:/ipfs/QmUMSQhzYKRSkLTGcHekjqvw1mLpeUULZkfffRdN521NBg\"]},\"@summa-tx/relay-sol/contracts/Relay.sol\":{\"keccak256\":\"0x4a6d12fa6570e2c787f9dc234edae9c1eb326e78eb2c6384c84d2b6ba0a0ad7e\",\"urls\":[\"bzz-raw://fa5365dc5a8312d0305568dbf297964be13567a7879395bfc3e99be2510e4e10\",\"dweb:/ipfs/QmfGZz6iL45xPcwQTT3XFAqb7McuY89niBEvfbhy513moF\"]},\"openzeppelin-solidity/contracts/drafts/Counters.sol\":{\"keccak256\":\"0x5eb69360d3441ab2ee799bd7c007cccbffb0896f12b2dfe1456193e2aa180a11\",\"urls\":[\"bzz-raw://072e8b5a1b5acfc2acba9b6fb87d1dc57065aad44572617ad46b014074969eb3\",\"dweb:/ipfs/QmVTDHUriaxBJqiWCWgWC8vYaYYfXSz883LsowzTx1DcpK\"]},\"openzeppelin-solidity/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0xac2eacd7e7762e275442f28f21d821544df5aae2ed7698af13be8c41b7005e2e\",\"urls\":[\"bzz-raw://8bdbefb642e7b08535c66bbf074e576cfef2300cdf910c1e0b211f6393833a28\",\"dweb:/ipfs/QmQhfx2Ufr8a2gFXm3KogL66xGgAuAWMwcamkWFKGG6Vya\"]},\"openzeppelin-solidity/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0x661553e43d7c4fbb2de504e5999fd5c104d367488350ed5bf023031bd1ba5ac5\",\"urls\":[\"bzz-raw://b40442c5b350b57b88a081a1eacd2bac962d4ecc1f029f5447a18986f08f6f14\",\"dweb:/ipfs/QmV7wjtRf11ibUHh4g8JjuhMpy68pPhV95L2y46UBoRfsZ\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690\",\"urls\":[\"bzz-raw://d62d769b2219d5de39013093412623e624fa887f871826ea3bae6052ee893610\",\"dweb:/ipfs/QmV3yVktya1s617QmuzQR2CfuJgUi3dR2xEZY9ecmqZ2G1\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0xf79fb10e8235770eb4aea7249034076a3cc9f9119ad944fc48705bae9c9d20dc\",\"urls\":[\"bzz-raw://cd3429aa9a4878dcf6c73faa32c3722f4013d4be012ece543b246faa6b50f55c\",\"dweb:/ipfs/QmS55hgTvNEAKinus19m65CB4wcymN8EiUPFpRx5tYJ1i2\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x852793a3c2f86d336a683b30d688ec3dcfc57451af5a2bf5975cda3b7191a901\",\"urls\":[\"bzz-raw://4f5b57664069671648fb81f55b0082faecdf1b2f159eec6b1fa6cef9b7d73bc5\",\"dweb:/ipfs/QmcyytaLs7zFdb4Uu7C5PmQRhQdB3wA3fUdkV6mkYfdDFH\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol\":{\"keccak256\":\"0xc61b3603089b09a730d8ca72e9133a496cc4405da40e9b87c12f073245d774bf\",\"urls\":[\"bzz-raw://de8bb0003d53de236913f0e0102e7a9d015e02098f2495edd000f207fe2be2f4\",\"dweb:/ipfs/QmbtwNwAJEehWWL7yGGyyMoenQvcqtz91pqLgQPpLRoLYC\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x90e8c2521653bbb1768b05889c5760031e688d9cd361f167489b89215e201b95\",\"urls\":[\"bzz-raw://d0abb99bb8bfc2bc0a89902b8ed1dc0442ad08cc78cee64c291b3df6a27bcccc\",\"dweb:/ipfs/QmP5NaEwZthQeM2ESz4WTT3osrP7jhbvu7ocbttBi2JAw6\"]},\"openzeppelin-solidity/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0xf151df411bbf4eaef1fc8e8480cd10c2cd985f1a36517e63981517610213efc1\",\"urls\":[\"bzz-raw://2a277b3cc3a1a03af5c039bc75cd16bb2d23b529cb2564cc0bea1b1e0eb4dd68\",\"dweb:/ipfs/QmNRxggY8qmjjuLnxggRqE8uBueuCktLwi9YYHagWoaEJ8\"]},\"openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol\":{\"keccak256\":\"0xe5e28b1a405164faa98f8ecd8ed2b00907b89e3d58b2b2bb8ac8b12bc5714489\",\"urls\":[\"bzz-raw://0d5d3f0caa7e7ec91f8a2894e1a6a3513a0c79aa91a498ebf8fdbdd07c12286f\",\"dweb:/ipfs/QmP7r4jQMRxXb5JHy5V9bgMz5FmTezcSDd7ivyzJN88pTR\"]},\"openzeppelin-solidity/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xce48937a8007c580b8e2e35705738c922dd17540de89ebee6df06d2917a3f9fc\",\"urls\":[\"bzz-raw://1d117265103ee3efcd454d3aafb3e79a115f9bca6dec78a1229558eb30d14d05\",\"dweb:/ipfs/QmTm5Z1c7zzPiG3Cfj1eBMB23AeiEFGgvmTFQVaeEWXVCw\"]},\"openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0x2b2b99dc7fe8fcd1f9427d00822b99cbc683dc21f5dd7532bd7e2281fd2c2ca2\",\"urls\":[\"bzz-raw://a8024c00e34efaf328f9592e76823c79f25fa0f6006bdf4a1e7fea204afd4773\",\"dweb:/ipfs/QmZns9jTr7843njq3J2iL2LLoWXK5mdzN1bDGd9GL3ahhD\"]},\"openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xadbfb7028fb0f851dc848a48b9e54e7c89ffd2c2edc12fa4ba9bb383dfaa83d9\",\"urls\":[\"bzz-raw://90dceab42713246639100b87d6650037d68e4a2ab2dd4b5768c3ed35d6b3a4a0\",\"dweb:/ipfs/QmQ42UW5nchMoYP9bU9F1AJga5chG8j92fCPkURpiDKsCu\"]},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"keccak256\":\"0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1\",\"urls\":[\"bzz-raw://75ae8d04454d1511a2ed986cc8585736f05c5c25280683b3d24712a9f414a4bf\",\"dweb:/ipfs/Qmb3kNCoBUZdah1AgBBD4zMk898j5Qw8ahT1w5cCMYp5Y3\"]}},\"version\":1}",
  "bytecode": "0x6000600255600b805462ffffff60201b19166607d000000000001761ffff60381b19166796000000000000001761ffff60481b1916697d0000000000000000001761ffff60581b19166b6e0000000000000000000000179055610120604052620f424060809081526298968060a0526301312d0060c0526302faf08060e0526305f5e100610100526200009790600c906005620001c0565b50601880546001600160a01b031916600717905564e8d4a51000601955348015620000c157600080fd5b506040516200402d3803806200402d83398181016040526040811015620000e757600080fd5b508051602090910151600080546001600160a01b0319163317808255604051849284926001600160a01b0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600480546001600160a01b039384166001600160a01b031991821617909155600580549290931691161790556040805160c081018252620186a08152620f4240602082015262989680918101919091526301312d0060608201526302faf08060808201526305f5e10060a0820152620001b790600c906006620001c0565b505050620002a6565b828054828255906000526020600020906003016004900481019282156200026a5791602002820160005b838211156200023357835183826101000a8154816001600160401b03021916908363ffffffff1602179055509260200192600801602081600701049283019260010302620001ea565b8015620002685782816101000a8154906001600160401b03021916905560080160208160070104928301926001030262000233565b505b50620002789291506200027c565b5090565b620002a391905b80821115620002785780546001600160401b031916815560010162000283565b90565b613d7780620002b66000396000f3fe6080604052600436106103ad5760003560e01c806380f04b8c116101e7578063b792a38e1161010d578063de1e57d0116100a0578063eae6191f1161006f578063eae6191f14610d2a578063f2e7234714610d6f578063f2fde38b14610d84578063f760621e14610db7576103ad565b8063de1e57d014610cd6578063e2c50ad814610ceb578063e5426d2e14610d00578063e5a6d77d14610d15576103ad565b8063cd3a9490116100dc578063cd3a949014610bbb578063ce2c07ce14610bd0578063dab70cb114610c81578063dde3fdd214610c96576103ad565b8063b792a38e14610b52578063c074d55014610b67578063c65cd86d14610b7c578063c8fba24314610ba6576103ad565b8063a28b79f111610185578063adc3ef7011610154578063adc3ef7014610afe578063ae7f4a5f14610b13578063b196b5a314610b28578063b59589d114610b3d576103ad565b8063a28b79f114610a8c578063a2cd75da14610abf578063a6c1691c14610ad4578063a831c81614610ae9576103ad565b80638da5cb5b116101c15780638da5cb5b14610a1a5780638f32d59b14610a2f578063987ecea714610a445780639ffb386214610a59576103ad565b806380f04b8c146109a957806382f91968146109be578063869f9469146109ea576103ad565b80632d00f1ee116102d757806364bdb6671161026a578063741bef1a11610239578063741bef1a146109245780637c33fc05146109555780637c75b1151461096a5780637ed451a41461097f576103ad565b806364bdb667146108bb5780636e1ba283146108d05780636f4fef62146108fa578063715018a61461090f576103ad565b8063402b783d116102a6578063402b783d1461083757806349b647301461084c578063575350881461087a57806360e98d591461088f576103ad565b80632d00f1ee146107cc57806334d534a9146107e15780633aac3467146107f65780633ee850bc14610822576103ad565b80630d7eb1c41161034f57806322e5724c1161031e57806322e5724c146106f45780632753d84b14610709578063282bfd381461071e5780632b155e3714610751576103ad565b80630d7eb1c4146104e557806318e647dd1461050e5780631c52d90c1461066857806322a147e6146106df576103ad565b8063086c9edd1161038b578063086c9edd146104415780630af488f9146104a65780630ce0e700146104bb5780630d4455dc146104d0576103ad565b8063013b0f30146103b2578063022d44b7146103d957806307a3d6591461040e575b600080fd5b3480156103be57600080fd5b506103c7610ded565b60408051918252519081900360200190f35b3480156103e557600080fd5b5061040c600480360360208110156103fc57600080fd5b50356001600160a01b0316610e8e565b005b34801561041a57600080fd5b5061040c6004803603602081101561043157600080fd5b50356001600160a01b0316610eb0565b34801561044d57600080fd5b50610456611017565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561049257818101518382015260200161047a565b505050509050019250505060405180910390f35b3480156104b257600080fd5b506103c76110a1565b3480156104c757600080fd5b5061040c6110b2565b3480156104dc57600080fd5b5061040c61120a565b3480156104f157600080fd5b506104fa6113bf565b604080519115158252519081900360200190f35b34801561051a57600080fd5b5061040c600480360360c081101561053157600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b81111561056757600080fd5b82018360208201111561057957600080fd5b803590602001918460018302840111600160201b8311171561059a57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b8111156105f457600080fd5b82018360208201111561060657600080fd5b803590602001918460018302840111600160201b8311171561062757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113cf945050505050565b34801561067457600080fd5b5061040c600480360361012081101561068c57600080fd5b506001600160a01b038135811691602081013582169160408201358116916060810135821691608082013581169160a081013582169160c0820135169061ffff60e0820135811691610100013516611540565b3480156106eb57600080fd5b5061040c611798565b34801561070057600080fd5b5061040c611814565b34801561071557600080fd5b506103c7611890565b34801561072a57600080fd5b5061040c6004803603602081101561074157600080fd5b50356001600160a01b03166118d2565b34801561075d57600080fd5b5061040c6004803603602081101561077457600080fd5b810190602081018135600160201b81111561078e57600080fd5b8201836020820111156107a057600080fd5b803590602001918460208302840111600160201b831117156107c157600080fd5b509092509050611959565b3480156107d857600080fd5b506103c7611cba565b3480156107ed57600080fd5b506103c7611db1565b34801561080257600080fd5b5061040c6004803603602081101561081957600080fd5b50351515611dc1565b34801561082e57600080fd5b506103c7611e43565b34801561084357600080fd5b506103c7611e54565b34801561085857600080fd5b5061040c6004803603602081101561086f57600080fd5b503561ffff16611eca565b34801561088657600080fd5b506103c7611ff0565b34801561089b57600080fd5b506108a4612001565b6040805161ffff9092168252519081900360200190f35b3480156108c757600080fd5b506108a4612014565b3480156108dc57600080fd5b5061040c600480360360208110156108f357600080fd5b503561201e565b34801561090657600080fd5b506108a461209c565b34801561091b57600080fd5b5061040c6120ad565b34801561093057600080fd5b5061093961213e565b604080516001600160a01b039092168252519081900360200190f35b34801561096157600080fd5b5061040c61214d565b34801561097657600080fd5b5061040c6122a0565b34801561098b57600080fd5b5061040c600480360360208110156109a257600080fd5b5035612346565b3480156109b557600080fd5b5061040c6123c4565b610939600480360360408110156109d457600080fd5b506001600160401b0381351690602001356124d9565b3480156109f657600080fd5b5061040c60048036036040811015610a0d57600080fd5b50803590602001356124ec565b348015610a2657600080fd5b50610939612576565b348015610a3b57600080fd5b506104fa612585565b348015610a5057600080fd5b506108a4612596565b348015610a6557600080fd5b506104fa60048036036020811015610a7c57600080fd5b50356001600160a01b03166125a7565b348015610a9857600080fd5b506104fa60048036036020811015610aaf57600080fd5b50356001600160401b031661262c565b348015610acb57600080fd5b506108a4612699565b348015610ae057600080fd5b506103c76126aa565b348015610af557600080fd5b5061040c6126b0565b348015610b0a57600080fd5b5061040c61272c565b348015610b1f57600080fd5b506103c76128df565b348015610b3457600080fd5b506103c76128e6565b348015610b4957600080fd5b506109396128f7565b348015610b5e57600080fd5b506103c7612906565b348015610b7357600080fd5b506103c7612917565b348015610b8857600080fd5b5061040c60048036036020811015610b9f57600080fd5b5035612928565b348015610bb257600080fd5b5061040c61292d565b348015610bc757600080fd5b5061040c6129a9565b348015610bdc57600080fd5b5061040c60048036036020811015610bf357600080fd5b810190602081018135600160201b811115610c0d57600080fd5b820183602082011115610c1f57600080fd5b803590602001918460018302840111600160201b83111715610c4057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612b6d945050505050565b348015610c8d57600080fd5b506103c7612c4d565b348015610ca257600080fd5b5061040c60048036036060811015610cb957600080fd5b5061ffff8135811691602081013582169160409091013516612c92565b348015610ce257600080fd5b5061040c612e7f565b348015610cf757600080fd5b5061040c61302c565b348015610d0c57600080fd5b506108a46130a8565b348015610d2157600080fd5b506103c76130b8565b348015610d3657600080fd5b5061040c60048036036060811015610d4d57600080fd5b506001600160a01b0381358116916020810135821691604090910135166130bf565b348015610d7b57600080fd5b506103c761323d565b348015610d9057600080fd5b5061040c60048036036020811015610da757600080fd5b50356001600160a01b0316613244565b348015610dc357600080fd5b5061040c60048036036060811015610dda57600080fd5b5080359060208101359060400135613297565b600b54600090600160201b900460ff1615610e395760405162461bcd60e51b8152600401808060200182810382526022815260200180613c8a6022913960400191505060405180910390fd5b620d2f00610e526003544261332390919063ffffffff16565b1015610e8557610e80610e706003544261332390919063ffffffff16565b620d2f009063ffffffff61332316565b610e88565b60005b90505b90565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b610eb8612585565b610ef7576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b6000816001600160a01b03166359e02dd76040518163ffffffff1660e01b8152600401604080518083038186803b158015610f3157600080fd5b505afa158015610f45573d6000803e3d6000fd5b505050506040513d6040811015610f5b57600080fd5b5060200151905080610fb4576040805162461bcd60e51b815260206004820152601860248201527f43616e6e6f742061646420696e61637469766520666565640000000000000000604482015290519081900360640190fd5b601780546001600160a01b0319166001600160a01b03841690811790915542601681905560408051928352602083019190915280517f5a3d3d9197f5c60c16de28887dccf83284a4fd034b930272637c83307b4fffe79281900390910190a15050565b6060600c80548060200260200160405190810160405280929190818152602001828054801561109757602002820191906000526020600020906000905b82829054906101000a90046001600160401b03166001600160401b0316815260200190600801906020826007010492830192600103820291508084116110545790505b5050505050905090565b6000610e886016546276a700613380565b6110ba612585565b6110f9576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b600d546202a3006000821161114c576040805162461bcd60e51b815260206004820152601460248201527310da185b99d9481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b8061115d428463ffffffff61332316565b101561119e576040805162461bcd60e51b81526020600482018190526024820152600080516020613b4c833981519152604482015290519081900360640190fd5b601154600b80546501000000000061ffff90931692830266ffff00000000001990911617905560408051918252517f236dec26d53c6a51390e98ed703106e132fd062b0e38b8a9cf8b4d13f47952c89181900360200190a150506011805461ffff191690556000600d55565b611212612585565b611251576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b6010546202a300600082116112a4576040805162461bcd60e51b815260206004820152601460248201527310da185b99d9481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b806112b5428463ffffffff61332316565b10156112f6576040805162461bcd60e51b81526020600482018190526024820152600080516020613b4c833981519152604482015290519081900360640190fd5b601354601454601554611329926006926001600160a01b03600160301b909204821692908216911663ffffffff61340a16565b601354601454601554604080516001600160a01b03600160301b90950485168152928416602084015292168183015290517f75cd06e2a95bd62ad447184bf0950b3af3aabd0960994d09da9724686d0c17209181900360600190a150506000601055601380546601000000000000600160d01b0319169055601480546001600160a01b0319908116909155601580549091169055565b600b54600160201b900460ff1690565b6113d8336125a7565b6114135760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b84866001600160a01b0316336001600160a01b03167f7959c380174061a21a3ba80243a032ba9cd10dc8bd1736d7e835c94e97a35a9887878787604051808581526020018060200184815260200180602001838103835286818151815260200191508051906020019080838360005b8381101561149a578181015183820152602001611482565b50505050905090810190601f1680156114c75780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156114fa5781810151838201526020016114e2565b50505050905090810190601f1680156115275780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a4505050505050565b611548612585565b611587576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b600254156115d2576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b6040805163e8e08cf160e01b8152600660048201526001600160a01b038b166024820152905173__KeepFactorySelection__________________9163e8e08cf1916044808301926000929190829003018186803b15801561163357600080fd5b505af4158015611647573d6000803e3d6000fd5b5050600b80544260025564ff000000001961ffff86811661ffff19918916620100000263ffff00001990941693909317169190911716600160201b17905550611691905085613498565b60408051630d4815e560e21b81526001600160a01b0388811660048301528781166024830152868116604483015291519185169163352057949160648082019260009290919082900301818387803b1580156116ec57600080fd5b505af1158015611700573d6000803e3d6000fd5b50506040805163bbe2bbd560e01b81526001600160a01b038b811660048301523060248301528a811660448301528981166064830152888116608483015287811660a48301529151918c16935063bbe2bbd5925060c48082019260009290919082900301818387803b15801561177557600080fd5b505af1158015611789573d6000803e3d6000fd5b50505050505050505050505050565b6117a1336125a7565b6117dc5760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b60408051428152905133917f6e7b45210b79c12cd1332babd8d86c0bbb9ca898a89ce0404f17064dbfba18c0919081900360200190a2565b61181d336125a7565b6118585760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b60408051428152905133917f07f0eaafadb9abb1d28da85d4b4c74f1939fd61b535c7f5ab501f618f07e76ee919081900360200190a2565b600c80546000919060001981019081106118a657fe5b6000918252602090912060048204015460039091166008026101000a90046001600160401b0316919050565b6118db336125a7565b6119165760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b6040805142815290516001600160a01b0383169133917f822b3073be62c5c7f143c2dcd71ee266434ee935d90a1eec3be34710ac8ec1a29181900360200190a350565b611961612585565b6119a0576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b6000805b82811015611bfc578383828181106119b857fe5b905060200201356001600160401b03166001600160401b03166305f5e10014156119e55760019150611bf4565b61c3508484838181106119f457fe5b905060200201356001600160401b03166001600160401b03161015611a4a5760405162461bcd60e51b815260040180806020018281038252602e815260200180613ab7602e913960400191505060405180910390fd5b6402540be400848483818110611a5c57fe5b905060200201356001600160401b03166001600160401b03161115611ab25760405162461bcd60e51b815260040180806020018281038252602e815260200180613c5c602e913960400191505060405180910390fd5b600081118015611b0c5750838360018303818110611acc57fe5b905060200201356001600160401b03166001600160401b0316848483818110611af157fe5b905060200201356001600160401b03166001600160401b0316145b15611b485760405162461bcd60e51b8152600401808060200182810382526027815260200180613a906027913960400191505060405180910390fd5b600081118015611ba25750838360018303818110611b6257fe5b905060200201356001600160401b03166001600160401b0316848483818110611b8757fe5b905060200201356001600160401b03166001600160401b0316105b15611bf4576040805162461bcd60e51b815260206004820152601d60248201527f4c6f742073697a65206172726179206d75737420626520736f72746564000000604482015290519081900360640190fd5b6001016119a4565b5080611c395760405162461bcd60e51b8152600401808060200182810382526028815260200180613bd96028913960400191505060405180910390fd5b7fffb1e2bce3c7a63d0cac5492540bd370e1156621adde36cd481262c2846a2b7b83834260405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1611cb0601284846137a4565b505042600e555050565b600080600673__KeepFactorySelection__________________63d83d44b090916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611d0f57600080fd5b505af4158015611d23573d6000803e3d6000fd5b505050506040513d6020811015611d3957600080fd5b50516040805163bc2c289f60e01b815290519192506001600160a01b0383169163bc2c289f91600480820192602092909190829003018186803b158015611d7f57600080fd5b505afa158015611d93573d6000803e3d6000fd5b505050506040513d6020811015611da957600080fd5b505191505090565b6000600c6000815481106118a657fe5b611dca336125a7565b611e055760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b604080518215158152426020820152815133927fbef11c059eefba82a15aea8a3a89c86fd08d7711c88fa7daea2632a55488510c928290030190a250565b6000610e88600e546202a300613380565b60055460408051630ae5ef8960e21b815290516000926001600160a01b031691632b97be24916004808301926020929190829003018186803b158015611e9957600080fd5b505afa158015611ead573d6000803e3d6000fd5b505050506040513d6020811015611ec357600080fd5b5051905090565b611ed2612585565b611f11576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b60098161ffff1611611f545760405162461bcd60e51b815260040180806020018281038252604a815260200180613a46604a913960600191505060405180910390fd5b6113888161ffff1610611f985760405162461bcd60e51b815260040180806020018281038252604b815260200180613cac604b913960600191505060405180910390fd5b6011805461ffff191661ffff831690811790915542600d81905560408051928352602083019190915280517f38cb7049f0daf658ca989e9ef6b850ef11e3740ff07a0c16706042c39adf48fc9281900390910190a150565b6000610e886010546202a300613380565b600b5465010000000000900461ffff1690565b600b5461ffff1681565b612027336125a7565b6120625760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b604080514281529051829133917f44b7f176bcc739b54bd0800fe491cbdea19df7d4d6b19c281462e6b4fc5043449181900360200190a350565b600b54600160581b900461ffff1690565b6120b5612585565b6120f4576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6004546001600160a01b031681565b600b54600160201b900460ff16156121965760405162461bcd60e51b8152600401808060200182810382526022815260200180613c8a6022913960400191505060405180910390fd5b6003546121ea576040805162461bcd60e51b815260206004820152601b60248201527f4465706f73697420686173206e6f74206265656e207061757365640000000000604482015290519081900360640190fd5b620d2f006122036003544261332390919063ffffffff16565b1015612256576040805162461bcd60e51b815260206004820152601960248201527f4465706f7369747320617265207374696c6c2070617573656400000000000000604482015290519081900360640190fd5b600b805464ff000000001916600160201b179055604080516001815290517f3a854be74be62dd3ba5f0fdb7aa5b535683f999e90cda09ba75a2d99b27225239181900360200190a1565b73__KeepFactorySelection__________________63e33cd97160066122cc6122c7611db1565b613518565b600b54604080516001600160e01b031960e087901b1681526004810194909452602484019290925261ffff808216604485015262010000909104166064830152516084808301926000929190829003018186803b15801561232c57600080fd5b505af4158015612340573d6000803e3d6000fd5b50505050565b61234f336125a7565b61238a5760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b604080514281529051829133917fe34c70bd3e03956978a5c76d2ea5f3a60819171afea6dee4fc12b2e45f72d43d9181900360200190a350565b6123cc612585565b61240b576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b6003541561244a5760405162461bcd60e51b815260040180806020018281038252603181526020018061394f6031913960400191505060405180910390fd5b600254420362ed4e0081106124905760405162461bcd60e51b815260040180806020018281038252604e815260200180613980604e913960600191505060405180910390fd5b42600355600b805464ff0000000019169055604080516000815290517f3a854be74be62dd3ba5f0fdb7aa5b535683f999e90cda09ba75a2d99b27225239181900360200190a150565b6018546001600160a01b03165b92915050565b6124f5336125a7565b6125305760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b60408051838152602081018390524281830152905133917f8ee737ab16909c4e9d1b750814a4393c9f84ab5d3a29c08c313b783fc846ae33919081900360600190a25050565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b600b54600160381b900461ffff1690565b60015460408051634f558e7960e01b81526001600160a01b03848116600483015291516000939290921691634f558e7991602480820192602092909190829003018186803b1580156125f857600080fd5b505afa15801561260c573d6000803e3d6000fd5b505050506040513d602081101561262257600080fd5b505190505b919050565b6000805b600c5481101561269057826001600160401b0316600c828154811061265157fe5b6000918252602090912060048204015460039091166008026101000a90046001600160401b03161415612688576001915050612627565b600101612630565b50600092915050565b600b54600160481b900461ffff1690565b60195490565b6126b9336125a7565b6126f45760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b60408051428152905133917f8fd2cfb62a35fccc1ecef829f83a6c2f840b73dad49d3eaaa402909752086d4b919081900360200190a2565b612734612585565b612773576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b6016546276a700600082116127c6576040805162461bcd60e51b815260206004820152601460248201527310da185b99d9481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b806127d7428463ffffffff61332316565b1015612818576040805162461bcd60e51b81526020600482018190526024820152600080516020613b4c833981519152604482015290519081900360640190fd5b601780546001600160a01b031981169091556000601655604080516001600160a01b03909216808352905190917f5e4bd1f6e413d39e172d96a88ee6b1b2ba9e1a6207e2ca34fa8c3ccd152ff21a919081900360200190a1600480546040805163d14dd41360e01b81526001600160a01b03858116948201949094529051929091169163d14dd4139160248082019260009290919082900301818387803b1580156128c257600080fd5b505af11580156128d6573d6000803e3d6000fd5b50505050505050565b6276a70090565b6000610e8860025462ed4e00613380565b6005546001600160a01b031681565b6000610e88600d546202a300613380565b6000610e88600f546202a300613380565b601955565b612936336125a7565b6129715760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b60408051428152905133917fa5ee7a2b0254fce91deed604506790ed7fa072d0b14cba4859c3bc8955b9caac919081900360200190a2565b6129b1612585565b6129f0576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b600e546202a30060008211612a43576040805162461bcd60e51b815260206004820152601460248201527310da185b99d9481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b80612a54428463ffffffff61332316565b1015612a95576040805162461bcd60e51b81526020600482018190526024820152600080516020613b4c833981519152604482015290519081900360640190fd5b60128054612aa591600c91613865565b507fa801e49d33e856d89d06e647753d9d9dda3d0b0520c4346290ada455a00cafcc601260405180806020018281038252838181548152602001915080548015612b4057602002820191906000526020600020906000905b82829054906101000a90046001600160401b03166001600160401b031681526020019060080190602082600701049283019260010382029150808411612afd5790505b50509250505060405180910390a16000600e819055612b606012826138b3565b50612b696122a0565b5050565b612b76336125a7565b612bb15760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b604080516020808252835181830152835133937fa6e9673b5d53b3fe3c62b6459720f9c2a1b129d4f69acb771404ba8681b6a9309386939092839283019185019080838360005b83811015612c10578181015183820152602001612bf8565b50505050905090810190601f168015612c3d5780820380516001836020036101000a031916815260200191505b509250505060405180910390a250565b6005546040805163089bb25f60e11b815290516000926001600160a01b03169163113764be916004808301926020929190829003018186803b158015611e9957600080fd5b612c9a612585565b612cd9576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b61012c8361ffff161115612d1e5760405162461bcd60e51b815260040180806020018281038252602e815260200180613c01602e913960400191505060405180910390fd5b60648361ffff1611612d615760405162461bcd60e51b815260040180806020018281038252602e8152602001806139f4602e913960400191505060405180910390fd5b8161ffff168361ffff1611612da75760405162461bcd60e51b8152600401808060200182810382526046815260200180613ae56046913960600191505060405180910390fd5b8061ffff168261ffff1611612ded5760405162461bcd60e51b815260040180806020018281038252604c815260200180613cf7604c913960600191505060405180910390fd5b6013805461ffff191661ffff85811691821763ffff00001916620100008683169081029190911765ffff000000001916600160201b9286169283021790935542600f81905560408051938452602084019490945282840191909152606082015290517fc9e225c2db3e9f70966e6c0403de785bcda0172ec4e41111a6e8f4b85b1f30fb916080908290030190a1505050565b612e87612585565b612ec6576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b600f546202a30060008211612f19576040805162461bcd60e51b815260206004820152601460248201527310da185b99d9481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b80612f2a428463ffffffff61332316565b1015612f6b576040805162461bcd60e51b81526020600482018190526024820152600080516020613b4c833981519152604482015290519081900360640190fd5b601354600b805468ffff00000000000000191661ffff808416600160381b8102929092176affff00000000000000000019166201000085048216600160481b81029190911761ffff60581b1916600160201b90950491909116600160581b81029490941790925560408051918252602082019290925280820192909252517f07ac9ce7dc4b2edb6435fb2255e9e867f357ef2052b982ce468442aa9d6c1d50916060908290030190a150506013805465ffffffffffff191690556000600f55565b613035336125a7565b6130705760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b60408051428152905133917f1e61af503f1d7de21d5300094c18bf8700f82b2951a4d54dd2adda13f6b3da30919081900360200190a2565b600b5462010000900461ffff1681565b62ed4e0090565b6130c7612585565b613106576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b600254420362ed4e00811061314c5760405162461bcd60e51b815260040180806020018281038252604d815260200180613b8c604d913960600191505060405180910390fd5b6001600160a01b0384166131915760405162461bcd60e51b815260040180806020018281038252602d815260200180613c2f602d913960400191505060405180910390fd5b601380546001600160a01b03808716600160301b81026601000000000000600160d01b031990931692909217909255601480548684166001600160a01b0319918216811790925560158054948716949091168417905542601081905560408051938452602084019290925282820193909352606082019290925290517f1608ec8025d64cdb0ed78e62a67d271a33b9d738842a6eb6e6449bc3afab6dca9181900360800190a150505050565b6202a30090565b61324c612585565b61328b576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b61329481613569565b50565b6132a0336125a7565b6132db5760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b604080518381526020810183905242818301529051849133917f7f7d7327762d01d2c4a552ea0be2bc5a76264574a80aa78083e691a840e509f29181900360600190a3505050565b60008282111561337a576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008083116133cd576040805162461bcd60e51b8152602060048201526014602482015273155c19185d19481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b60006133df428563ffffffff61332316565b90508281106133f25760009150506124e6565b613402838263ffffffff61332316565b9150506124e6565b6001600160a01b03831661344f5760405162461bcd60e51b815260040180806020018281038252602381526020018061392c6023913960400191505060405180910390fd5b6003840180546001600160a01b039485166001600160a01b0319918216179091556004850180549385169382169390931790925560029093018054939092169216919091179055565b6001546001600160a01b0316156134f6576040805162461bcd60e51b815260206004820152601f60248201527f746274634465706f736974546f6b656e20697320616c72656164792073657400604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60008061353383613527613609565b9063ffffffff6136e116565b600b5490915061356290606490613556908490600160381b900461ffff166136e1565b9063ffffffff61373a16565b9392505050565b6001600160a01b0381166135ae5760405162461bcd60e51b81526004018080602001828103825260268152602001806139ce6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6004805460408051634c6afee560e11b8152905160009384936001600160a01b0316926398d5fdca9281830192602092829003018186803b15801561364d57600080fd5b505afa158015613661573d6000803e3d6000fd5b505050506040513d602081101561367757600080fd5b5051905080158061368f5750670de0b6b3a764000081115b15610e88576040805162461bcd60e51b815260206004820152601b60248201527f53797374656d2072657475726e65642061206261642070726963650000000000604482015290519081900360640190fd5b6000826136f0575060006124e6565b828202828482816136fd57fe5b04146135625760405162461bcd60e51b8152600401808060200182810382526021815260200180613b2b6021913960400191505060405180910390fd5b6000808211613790576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b600082848161379b57fe5b04949350505050565b828054828255906000526020600020906003016004900481019282156138555791602002820160005b838211156138205783356001600160401b031683826101000a8154816001600160401b0302191690836001600160401b0316021790555092602001926008016020816007010492830192600103026137cd565b80156138535782816101000a8154906001600160401b030219169055600801602081600701049283019260010302613820565b505b506138619291506138ec565b5090565b82805482825590600052602060002090600301600490048101928215613855576000526020600020916003016004900482015b82811115613855578254825591600101919060010190613898565b8154818355818111156138e75760030160049004816003016004900483600052602060002091820191016138e79190613911565b505050565b610e8b91905b8082111561386157805467ffffffffffffffff191681556001016138f2565b610e8b91905b80821115613861576000815560010161391756fe496e76616c6964204b4545502d7374616b656420666163746f72792061646472657373656d657267656e637950617573654e65774465706f736974732063616e206f6e6c792062652063616c6c6564206f6e6365656d657267656e637950617573654e65774465706f736974732063616e206f6e6c792062652063616c6c65642077697468696e203138302064617973206f6620696e697469616c697a6174696f6e4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373496e697469616c20636f6c6c61746572616c697a65642070657263656e74206d757374206265203e3d203130302543616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e74735369676e6572206665652064697669736f72206d7573742062652067726561746572207468616e20392c20666f722061207369676e6572206665652074686174206973203c3d203130254c6f742073697a65206172726179206d757374206e6f742068617665206475706c6963617465734c6f742073697a6573206c657373207468616e20302e303030352042544320617265206e6f7420616c6c6f776564556e646572636f6c6c61746572616c697a6564207468726573686f6c64206d757374206265203c20696e697469616c20636f6c6c61746572616c697a65642070657263656e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77476f7665726e616e63652064656c617920686173206e6f7420656c61707365644f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572626567696e4b656570466163746f726965735570646174652063616e206f6e6c792062652063616c6c65642077697468696e203138302064617973206f6620696e697469616c697a6174696f6e4c6f742073697a65206172726179206d75737420616c7761797320636f6e7461696e203120425443496e697469616c20636f6c6c61746572616c697a65642070657263656e74206d757374206265203c3d20333030254b454550207374616b656420666163746f7279206d7573742062652061206e6f6e7a65726f20616464726573734c6f742073697a65732067726561746572207468616e203130302042544320617265206e6f7420616c6c6f7765644e6577206465706f73697473206172652063757272656e746c7920616c6c6f7765645369676e6572206665652064697669736f72206d757374206265206c657373207468616e20353030302c20666f722061207369676e6572206665652074686174206973203e20302e30322553657665726520756e646572636f6c6c61746572616c697a6564207468726573686f6c64206d757374206265203c20756e646572636f6c6c61746572616c697a6564207468726573686f6c64a265627a7a723158204830c382f6994dc9e57edb670d51a4f58cd6d13df21023c7e67eb8a876bd2f7c64736f6c63430005110032",
  "deployedBytecode": "0x6080604052600436106103ad5760003560e01c806380f04b8c116101e7578063b792a38e1161010d578063de1e57d0116100a0578063eae6191f1161006f578063eae6191f14610d2a578063f2e7234714610d6f578063f2fde38b14610d84578063f760621e14610db7576103ad565b8063de1e57d014610cd6578063e2c50ad814610ceb578063e5426d2e14610d00578063e5a6d77d14610d15576103ad565b8063cd3a9490116100dc578063cd3a949014610bbb578063ce2c07ce14610bd0578063dab70cb114610c81578063dde3fdd214610c96576103ad565b8063b792a38e14610b52578063c074d55014610b67578063c65cd86d14610b7c578063c8fba24314610ba6576103ad565b8063a28b79f111610185578063adc3ef7011610154578063adc3ef7014610afe578063ae7f4a5f14610b13578063b196b5a314610b28578063b59589d114610b3d576103ad565b8063a28b79f114610a8c578063a2cd75da14610abf578063a6c1691c14610ad4578063a831c81614610ae9576103ad565b80638da5cb5b116101c15780638da5cb5b14610a1a5780638f32d59b14610a2f578063987ecea714610a445780639ffb386214610a59576103ad565b806380f04b8c146109a957806382f91968146109be578063869f9469146109ea576103ad565b80632d00f1ee116102d757806364bdb6671161026a578063741bef1a11610239578063741bef1a146109245780637c33fc05146109555780637c75b1151461096a5780637ed451a41461097f576103ad565b806364bdb667146108bb5780636e1ba283146108d05780636f4fef62146108fa578063715018a61461090f576103ad565b8063402b783d116102a6578063402b783d1461083757806349b647301461084c578063575350881461087a57806360e98d591461088f576103ad565b80632d00f1ee146107cc57806334d534a9146107e15780633aac3467146107f65780633ee850bc14610822576103ad565b80630d7eb1c41161034f57806322e5724c1161031e57806322e5724c146106f45780632753d84b14610709578063282bfd381461071e5780632b155e3714610751576103ad565b80630d7eb1c4146104e557806318e647dd1461050e5780631c52d90c1461066857806322a147e6146106df576103ad565b8063086c9edd1161038b578063086c9edd146104415780630af488f9146104a65780630ce0e700146104bb5780630d4455dc146104d0576103ad565b8063013b0f30146103b2578063022d44b7146103d957806307a3d6591461040e575b600080fd5b3480156103be57600080fd5b506103c7610ded565b60408051918252519081900360200190f35b3480156103e557600080fd5b5061040c600480360360208110156103fc57600080fd5b50356001600160a01b0316610e8e565b005b34801561041a57600080fd5b5061040c6004803603602081101561043157600080fd5b50356001600160a01b0316610eb0565b34801561044d57600080fd5b50610456611017565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561049257818101518382015260200161047a565b505050509050019250505060405180910390f35b3480156104b257600080fd5b506103c76110a1565b3480156104c757600080fd5b5061040c6110b2565b3480156104dc57600080fd5b5061040c61120a565b3480156104f157600080fd5b506104fa6113bf565b604080519115158252519081900360200190f35b34801561051a57600080fd5b5061040c600480360360c081101561053157600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b81111561056757600080fd5b82018360208201111561057957600080fd5b803590602001918460018302840111600160201b8311171561059a57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b8111156105f457600080fd5b82018360208201111561060657600080fd5b803590602001918460018302840111600160201b8311171561062757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113cf945050505050565b34801561067457600080fd5b5061040c600480360361012081101561068c57600080fd5b506001600160a01b038135811691602081013582169160408201358116916060810135821691608082013581169160a081013582169160c0820135169061ffff60e0820135811691610100013516611540565b3480156106eb57600080fd5b5061040c611798565b34801561070057600080fd5b5061040c611814565b34801561071557600080fd5b506103c7611890565b34801561072a57600080fd5b5061040c6004803603602081101561074157600080fd5b50356001600160a01b03166118d2565b34801561075d57600080fd5b5061040c6004803603602081101561077457600080fd5b810190602081018135600160201b81111561078e57600080fd5b8201836020820111156107a057600080fd5b803590602001918460208302840111600160201b831117156107c157600080fd5b509092509050611959565b3480156107d857600080fd5b506103c7611cba565b3480156107ed57600080fd5b506103c7611db1565b34801561080257600080fd5b5061040c6004803603602081101561081957600080fd5b50351515611dc1565b34801561082e57600080fd5b506103c7611e43565b34801561084357600080fd5b506103c7611e54565b34801561085857600080fd5b5061040c6004803603602081101561086f57600080fd5b503561ffff16611eca565b34801561088657600080fd5b506103c7611ff0565b34801561089b57600080fd5b506108a4612001565b6040805161ffff9092168252519081900360200190f35b3480156108c757600080fd5b506108a4612014565b3480156108dc57600080fd5b5061040c600480360360208110156108f357600080fd5b503561201e565b34801561090657600080fd5b506108a461209c565b34801561091b57600080fd5b5061040c6120ad565b34801561093057600080fd5b5061093961213e565b604080516001600160a01b039092168252519081900360200190f35b34801561096157600080fd5b5061040c61214d565b34801561097657600080fd5b5061040c6122a0565b34801561098b57600080fd5b5061040c600480360360208110156109a257600080fd5b5035612346565b3480156109b557600080fd5b5061040c6123c4565b610939600480360360408110156109d457600080fd5b506001600160401b0381351690602001356124d9565b3480156109f657600080fd5b5061040c60048036036040811015610a0d57600080fd5b50803590602001356124ec565b348015610a2657600080fd5b50610939612576565b348015610a3b57600080fd5b506104fa612585565b348015610a5057600080fd5b506108a4612596565b348015610a6557600080fd5b506104fa60048036036020811015610a7c57600080fd5b50356001600160a01b03166125a7565b348015610a9857600080fd5b506104fa60048036036020811015610aaf57600080fd5b50356001600160401b031661262c565b348015610acb57600080fd5b506108a4612699565b348015610ae057600080fd5b506103c76126aa565b348015610af557600080fd5b5061040c6126b0565b348015610b0a57600080fd5b5061040c61272c565b348015610b1f57600080fd5b506103c76128df565b348015610b3457600080fd5b506103c76128e6565b348015610b4957600080fd5b506109396128f7565b348015610b5e57600080fd5b506103c7612906565b348015610b7357600080fd5b506103c7612917565b348015610b8857600080fd5b5061040c60048036036020811015610b9f57600080fd5b5035612928565b348015610bb257600080fd5b5061040c61292d565b348015610bc757600080fd5b5061040c6129a9565b348015610bdc57600080fd5b5061040c60048036036020811015610bf357600080fd5b810190602081018135600160201b811115610c0d57600080fd5b820183602082011115610c1f57600080fd5b803590602001918460018302840111600160201b83111715610c4057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612b6d945050505050565b348015610c8d57600080fd5b506103c7612c4d565b348015610ca257600080fd5b5061040c60048036036060811015610cb957600080fd5b5061ffff8135811691602081013582169160409091013516612c92565b348015610ce257600080fd5b5061040c612e7f565b348015610cf757600080fd5b5061040c61302c565b348015610d0c57600080fd5b506108a46130a8565b348015610d2157600080fd5b506103c76130b8565b348015610d3657600080fd5b5061040c60048036036060811015610d4d57600080fd5b506001600160a01b0381358116916020810135821691604090910135166130bf565b348015610d7b57600080fd5b506103c761323d565b348015610d9057600080fd5b5061040c60048036036020811015610da757600080fd5b50356001600160a01b0316613244565b348015610dc357600080fd5b5061040c60048036036060811015610dda57600080fd5b5080359060208101359060400135613297565b600b54600090600160201b900460ff1615610e395760405162461bcd60e51b8152600401808060200182810382526022815260200180613c8a6022913960400191505060405180910390fd5b620d2f00610e526003544261332390919063ffffffff16565b1015610e8557610e80610e706003544261332390919063ffffffff16565b620d2f009063ffffffff61332316565b610e88565b60005b90505b90565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b610eb8612585565b610ef7576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b6000816001600160a01b03166359e02dd76040518163ffffffff1660e01b8152600401604080518083038186803b158015610f3157600080fd5b505afa158015610f45573d6000803e3d6000fd5b505050506040513d6040811015610f5b57600080fd5b5060200151905080610fb4576040805162461bcd60e51b815260206004820152601860248201527f43616e6e6f742061646420696e61637469766520666565640000000000000000604482015290519081900360640190fd5b601780546001600160a01b0319166001600160a01b03841690811790915542601681905560408051928352602083019190915280517f5a3d3d9197f5c60c16de28887dccf83284a4fd034b930272637c83307b4fffe79281900390910190a15050565b6060600c80548060200260200160405190810160405280929190818152602001828054801561109757602002820191906000526020600020906000905b82829054906101000a90046001600160401b03166001600160401b0316815260200190600801906020826007010492830192600103820291508084116110545790505b5050505050905090565b6000610e886016546276a700613380565b6110ba612585565b6110f9576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b600d546202a3006000821161114c576040805162461bcd60e51b815260206004820152601460248201527310da185b99d9481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b8061115d428463ffffffff61332316565b101561119e576040805162461bcd60e51b81526020600482018190526024820152600080516020613b4c833981519152604482015290519081900360640190fd5b601154600b80546501000000000061ffff90931692830266ffff00000000001990911617905560408051918252517f236dec26d53c6a51390e98ed703106e132fd062b0e38b8a9cf8b4d13f47952c89181900360200190a150506011805461ffff191690556000600d55565b611212612585565b611251576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b6010546202a300600082116112a4576040805162461bcd60e51b815260206004820152601460248201527310da185b99d9481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b806112b5428463ffffffff61332316565b10156112f6576040805162461bcd60e51b81526020600482018190526024820152600080516020613b4c833981519152604482015290519081900360640190fd5b601354601454601554611329926006926001600160a01b03600160301b909204821692908216911663ffffffff61340a16565b601354601454601554604080516001600160a01b03600160301b90950485168152928416602084015292168183015290517f75cd06e2a95bd62ad447184bf0950b3af3aabd0960994d09da9724686d0c17209181900360600190a150506000601055601380546601000000000000600160d01b0319169055601480546001600160a01b0319908116909155601580549091169055565b600b54600160201b900460ff1690565b6113d8336125a7565b6114135760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b84866001600160a01b0316336001600160a01b03167f7959c380174061a21a3ba80243a032ba9cd10dc8bd1736d7e835c94e97a35a9887878787604051808581526020018060200184815260200180602001838103835286818151815260200191508051906020019080838360005b8381101561149a578181015183820152602001611482565b50505050905090810190601f1680156114c75780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156114fa5781810151838201526020016114e2565b50505050905090810190601f1680156115275780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a4505050505050565b611548612585565b611587576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b600254156115d2576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b6040805163e8e08cf160e01b8152600660048201526001600160a01b038b166024820152905173__KeepFactorySelection__________________9163e8e08cf1916044808301926000929190829003018186803b15801561163357600080fd5b505af4158015611647573d6000803e3d6000fd5b5050600b80544260025564ff000000001961ffff86811661ffff19918916620100000263ffff00001990941693909317169190911716600160201b17905550611691905085613498565b60408051630d4815e560e21b81526001600160a01b0388811660048301528781166024830152868116604483015291519185169163352057949160648082019260009290919082900301818387803b1580156116ec57600080fd5b505af1158015611700573d6000803e3d6000fd5b50506040805163bbe2bbd560e01b81526001600160a01b038b811660048301523060248301528a811660448301528981166064830152888116608483015287811660a48301529151918c16935063bbe2bbd5925060c48082019260009290919082900301818387803b15801561177557600080fd5b505af1158015611789573d6000803e3d6000fd5b50505050505050505050505050565b6117a1336125a7565b6117dc5760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b60408051428152905133917f6e7b45210b79c12cd1332babd8d86c0bbb9ca898a89ce0404f17064dbfba18c0919081900360200190a2565b61181d336125a7565b6118585760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b60408051428152905133917f07f0eaafadb9abb1d28da85d4b4c74f1939fd61b535c7f5ab501f618f07e76ee919081900360200190a2565b600c80546000919060001981019081106118a657fe5b6000918252602090912060048204015460039091166008026101000a90046001600160401b0316919050565b6118db336125a7565b6119165760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b6040805142815290516001600160a01b0383169133917f822b3073be62c5c7f143c2dcd71ee266434ee935d90a1eec3be34710ac8ec1a29181900360200190a350565b611961612585565b6119a0576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b6000805b82811015611bfc578383828181106119b857fe5b905060200201356001600160401b03166001600160401b03166305f5e10014156119e55760019150611bf4565b61c3508484838181106119f457fe5b905060200201356001600160401b03166001600160401b03161015611a4a5760405162461bcd60e51b815260040180806020018281038252602e815260200180613ab7602e913960400191505060405180910390fd5b6402540be400848483818110611a5c57fe5b905060200201356001600160401b03166001600160401b03161115611ab25760405162461bcd60e51b815260040180806020018281038252602e815260200180613c5c602e913960400191505060405180910390fd5b600081118015611b0c5750838360018303818110611acc57fe5b905060200201356001600160401b03166001600160401b0316848483818110611af157fe5b905060200201356001600160401b03166001600160401b0316145b15611b485760405162461bcd60e51b8152600401808060200182810382526027815260200180613a906027913960400191505060405180910390fd5b600081118015611ba25750838360018303818110611b6257fe5b905060200201356001600160401b03166001600160401b0316848483818110611b8757fe5b905060200201356001600160401b03166001600160401b0316105b15611bf4576040805162461bcd60e51b815260206004820152601d60248201527f4c6f742073697a65206172726179206d75737420626520736f72746564000000604482015290519081900360640190fd5b6001016119a4565b5080611c395760405162461bcd60e51b8152600401808060200182810382526028815260200180613bd96028913960400191505060405180910390fd5b7fffb1e2bce3c7a63d0cac5492540bd370e1156621adde36cd481262c2846a2b7b83834260405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1611cb0601284846137a4565b505042600e555050565b600080600673__KeepFactorySelection__________________63d83d44b090916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611d0f57600080fd5b505af4158015611d23573d6000803e3d6000fd5b505050506040513d6020811015611d3957600080fd5b50516040805163bc2c289f60e01b815290519192506001600160a01b0383169163bc2c289f91600480820192602092909190829003018186803b158015611d7f57600080fd5b505afa158015611d93573d6000803e3d6000fd5b505050506040513d6020811015611da957600080fd5b505191505090565b6000600c6000815481106118a657fe5b611dca336125a7565b611e055760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b604080518215158152426020820152815133927fbef11c059eefba82a15aea8a3a89c86fd08d7711c88fa7daea2632a55488510c928290030190a250565b6000610e88600e546202a300613380565b60055460408051630ae5ef8960e21b815290516000926001600160a01b031691632b97be24916004808301926020929190829003018186803b158015611e9957600080fd5b505afa158015611ead573d6000803e3d6000fd5b505050506040513d6020811015611ec357600080fd5b5051905090565b611ed2612585565b611f11576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b60098161ffff1611611f545760405162461bcd60e51b815260040180806020018281038252604a815260200180613a46604a913960600191505060405180910390fd5b6113888161ffff1610611f985760405162461bcd60e51b815260040180806020018281038252604b815260200180613cac604b913960600191505060405180910390fd5b6011805461ffff191661ffff831690811790915542600d81905560408051928352602083019190915280517f38cb7049f0daf658ca989e9ef6b850ef11e3740ff07a0c16706042c39adf48fc9281900390910190a150565b6000610e886010546202a300613380565b600b5465010000000000900461ffff1690565b600b5461ffff1681565b612027336125a7565b6120625760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b604080514281529051829133917f44b7f176bcc739b54bd0800fe491cbdea19df7d4d6b19c281462e6b4fc5043449181900360200190a350565b600b54600160581b900461ffff1690565b6120b5612585565b6120f4576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6004546001600160a01b031681565b600b54600160201b900460ff16156121965760405162461bcd60e51b8152600401808060200182810382526022815260200180613c8a6022913960400191505060405180910390fd5b6003546121ea576040805162461bcd60e51b815260206004820152601b60248201527f4465706f73697420686173206e6f74206265656e207061757365640000000000604482015290519081900360640190fd5b620d2f006122036003544261332390919063ffffffff16565b1015612256576040805162461bcd60e51b815260206004820152601960248201527f4465706f7369747320617265207374696c6c2070617573656400000000000000604482015290519081900360640190fd5b600b805464ff000000001916600160201b179055604080516001815290517f3a854be74be62dd3ba5f0fdb7aa5b535683f999e90cda09ba75a2d99b27225239181900360200190a1565b73__KeepFactorySelection__________________63e33cd97160066122cc6122c7611db1565b613518565b600b54604080516001600160e01b031960e087901b1681526004810194909452602484019290925261ffff808216604485015262010000909104166064830152516084808301926000929190829003018186803b15801561232c57600080fd5b505af4158015612340573d6000803e3d6000fd5b50505050565b61234f336125a7565b61238a5760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b604080514281529051829133917fe34c70bd3e03956978a5c76d2ea5f3a60819171afea6dee4fc12b2e45f72d43d9181900360200190a350565b6123cc612585565b61240b576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b6003541561244a5760405162461bcd60e51b815260040180806020018281038252603181526020018061394f6031913960400191505060405180910390fd5b600254420362ed4e0081106124905760405162461bcd60e51b815260040180806020018281038252604e815260200180613980604e913960600191505060405180910390fd5b42600355600b805464ff0000000019169055604080516000815290517f3a854be74be62dd3ba5f0fdb7aa5b535683f999e90cda09ba75a2d99b27225239181900360200190a150565b6018546001600160a01b03165b92915050565b6124f5336125a7565b6125305760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b60408051838152602081018390524281830152905133917f8ee737ab16909c4e9d1b750814a4393c9f84ab5d3a29c08c313b783fc846ae33919081900360600190a25050565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b600b54600160381b900461ffff1690565b60015460408051634f558e7960e01b81526001600160a01b03848116600483015291516000939290921691634f558e7991602480820192602092909190829003018186803b1580156125f857600080fd5b505afa15801561260c573d6000803e3d6000fd5b505050506040513d602081101561262257600080fd5b505190505b919050565b6000805b600c5481101561269057826001600160401b0316600c828154811061265157fe5b6000918252602090912060048204015460039091166008026101000a90046001600160401b03161415612688576001915050612627565b600101612630565b50600092915050565b600b54600160481b900461ffff1690565b60195490565b6126b9336125a7565b6126f45760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b60408051428152905133917f8fd2cfb62a35fccc1ecef829f83a6c2f840b73dad49d3eaaa402909752086d4b919081900360200190a2565b612734612585565b612773576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b6016546276a700600082116127c6576040805162461bcd60e51b815260206004820152601460248201527310da185b99d9481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b806127d7428463ffffffff61332316565b1015612818576040805162461bcd60e51b81526020600482018190526024820152600080516020613b4c833981519152604482015290519081900360640190fd5b601780546001600160a01b031981169091556000601655604080516001600160a01b03909216808352905190917f5e4bd1f6e413d39e172d96a88ee6b1b2ba9e1a6207e2ca34fa8c3ccd152ff21a919081900360200190a1600480546040805163d14dd41360e01b81526001600160a01b03858116948201949094529051929091169163d14dd4139160248082019260009290919082900301818387803b1580156128c257600080fd5b505af11580156128d6573d6000803e3d6000fd5b50505050505050565b6276a70090565b6000610e8860025462ed4e00613380565b6005546001600160a01b031681565b6000610e88600d546202a300613380565b6000610e88600f546202a300613380565b601955565b612936336125a7565b6129715760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b60408051428152905133917fa5ee7a2b0254fce91deed604506790ed7fa072d0b14cba4859c3bc8955b9caac919081900360200190a2565b6129b1612585565b6129f0576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b600e546202a30060008211612a43576040805162461bcd60e51b815260206004820152601460248201527310da185b99d9481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b80612a54428463ffffffff61332316565b1015612a95576040805162461bcd60e51b81526020600482018190526024820152600080516020613b4c833981519152604482015290519081900360640190fd5b60128054612aa591600c91613865565b507fa801e49d33e856d89d06e647753d9d9dda3d0b0520c4346290ada455a00cafcc601260405180806020018281038252838181548152602001915080548015612b4057602002820191906000526020600020906000905b82829054906101000a90046001600160401b03166001600160401b031681526020019060080190602082600701049283019260010382029150808411612afd5790505b50509250505060405180910390a16000600e819055612b606012826138b3565b50612b696122a0565b5050565b612b76336125a7565b612bb15760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b604080516020808252835181830152835133937fa6e9673b5d53b3fe3c62b6459720f9c2a1b129d4f69acb771404ba8681b6a9309386939092839283019185019080838360005b83811015612c10578181015183820152602001612bf8565b50505050905090810190601f168015612c3d5780820380516001836020036101000a031916815260200191505b509250505060405180910390a250565b6005546040805163089bb25f60e11b815290516000926001600160a01b03169163113764be916004808301926020929190829003018186803b158015611e9957600080fd5b612c9a612585565b612cd9576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b61012c8361ffff161115612d1e5760405162461bcd60e51b815260040180806020018281038252602e815260200180613c01602e913960400191505060405180910390fd5b60648361ffff1611612d615760405162461bcd60e51b815260040180806020018281038252602e8152602001806139f4602e913960400191505060405180910390fd5b8161ffff168361ffff1611612da75760405162461bcd60e51b8152600401808060200182810382526046815260200180613ae56046913960600191505060405180910390fd5b8061ffff168261ffff1611612ded5760405162461bcd60e51b815260040180806020018281038252604c815260200180613cf7604c913960600191505060405180910390fd5b6013805461ffff191661ffff85811691821763ffff00001916620100008683169081029190911765ffff000000001916600160201b9286169283021790935542600f81905560408051938452602084019490945282840191909152606082015290517fc9e225c2db3e9f70966e6c0403de785bcda0172ec4e41111a6e8f4b85b1f30fb916080908290030190a1505050565b612e87612585565b612ec6576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b600f546202a30060008211612f19576040805162461bcd60e51b815260206004820152601460248201527310da185b99d9481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b80612f2a428463ffffffff61332316565b1015612f6b576040805162461bcd60e51b81526020600482018190526024820152600080516020613b4c833981519152604482015290519081900360640190fd5b601354600b805468ffff00000000000000191661ffff808416600160381b8102929092176affff00000000000000000019166201000085048216600160481b81029190911761ffff60581b1916600160201b90950491909116600160581b81029490941790925560408051918252602082019290925280820192909252517f07ac9ce7dc4b2edb6435fb2255e9e867f357ef2052b982ce468442aa9d6c1d50916060908290030190a150506013805465ffffffffffff191690556000600f55565b613035336125a7565b6130705760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b60408051428152905133917f1e61af503f1d7de21d5300094c18bf8700f82b2951a4d54dd2adda13f6b3da30919081900360200190a2565b600b5462010000900461ffff1681565b62ed4e0090565b6130c7612585565b613106576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b600254420362ed4e00811061314c5760405162461bcd60e51b815260040180806020018281038252604d815260200180613b8c604d913960600191505060405180910390fd5b6001600160a01b0384166131915760405162461bcd60e51b815260040180806020018281038252602d815260200180613c2f602d913960400191505060405180910390fd5b601380546001600160a01b03808716600160301b81026601000000000000600160d01b031990931692909217909255601480548684166001600160a01b0319918216811790925560158054948716949091168417905542601081905560408051938452602084019290925282820193909352606082019290925290517f1608ec8025d64cdb0ed78e62a67d271a33b9d738842a6eb6e6449bc3afab6dca9181900360800190a150505050565b6202a30090565b61324c612585565b61328b576040805162461bcd60e51b81526020600482018190526024820152600080516020613b6c833981519152604482015290519081900360640190fd5b61329481613569565b50565b6132a0336125a7565b6132db5760405162461bcd60e51b8152600401808060200182810382526024815260200180613a226024913960400191505060405180910390fd5b604080518381526020810183905242818301529051849133917f7f7d7327762d01d2c4a552ea0be2bc5a76264574a80aa78083e691a840e509f29181900360600190a3505050565b60008282111561337a576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008083116133cd576040805162461bcd60e51b8152602060048201526014602482015273155c19185d19481b9bdd081a5b9a5d1a585d195960621b604482015290519081900360640190fd5b60006133df428563ffffffff61332316565b90508281106133f25760009150506124e6565b613402838263ffffffff61332316565b9150506124e6565b6001600160a01b03831661344f5760405162461bcd60e51b815260040180806020018281038252602381526020018061392c6023913960400191505060405180910390fd5b6003840180546001600160a01b039485166001600160a01b0319918216179091556004850180549385169382169390931790925560029093018054939092169216919091179055565b6001546001600160a01b0316156134f6576040805162461bcd60e51b815260206004820152601f60248201527f746274634465706f736974546f6b656e20697320616c72656164792073657400604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60008061353383613527613609565b9063ffffffff6136e116565b600b5490915061356290606490613556908490600160381b900461ffff166136e1565b9063ffffffff61373a16565b9392505050565b6001600160a01b0381166135ae5760405162461bcd60e51b81526004018080602001828103825260268152602001806139ce6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6004805460408051634c6afee560e11b8152905160009384936001600160a01b0316926398d5fdca9281830192602092829003018186803b15801561364d57600080fd5b505afa158015613661573d6000803e3d6000fd5b505050506040513d602081101561367757600080fd5b5051905080158061368f5750670de0b6b3a764000081115b15610e88576040805162461bcd60e51b815260206004820152601b60248201527f53797374656d2072657475726e65642061206261642070726963650000000000604482015290519081900360640190fd5b6000826136f0575060006124e6565b828202828482816136fd57fe5b04146135625760405162461bcd60e51b8152600401808060200182810382526021815260200180613b2b6021913960400191505060405180910390fd5b6000808211613790576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b600082848161379b57fe5b04949350505050565b828054828255906000526020600020906003016004900481019282156138555791602002820160005b838211156138205783356001600160401b031683826101000a8154816001600160401b0302191690836001600160401b0316021790555092602001926008016020816007010492830192600103026137cd565b80156138535782816101000a8154906001600160401b030219169055600801602081600701049283019260010302613820565b505b506138619291506138ec565b5090565b82805482825590600052602060002090600301600490048101928215613855576000526020600020916003016004900482015b82811115613855578254825591600101919060010190613898565b8154818355818111156138e75760030160049004816003016004900483600052602060002091820191016138e79190613911565b505050565b610e8b91905b8082111561386157805467ffffffffffffffff191681556001016138f2565b610e8b91905b80821115613861576000815560010161391756fe496e76616c6964204b4545502d7374616b656420666163746f72792061646472657373656d657267656e637950617573654e65774465706f736974732063616e206f6e6c792062652063616c6c6564206f6e6365656d657267656e637950617573654e65774465706f736974732063616e206f6e6c792062652063616c6c65642077697468696e203138302064617973206f6620696e697469616c697a6174696f6e4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373496e697469616c20636f6c6c61746572616c697a65642070657263656e74206d757374206265203e3d203130302543616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e74735369676e6572206665652064697669736f72206d7573742062652067726561746572207468616e20392c20666f722061207369676e6572206665652074686174206973203c3d203130254c6f742073697a65206172726179206d757374206e6f742068617665206475706c6963617465734c6f742073697a6573206c657373207468616e20302e303030352042544320617265206e6f7420616c6c6f776564556e646572636f6c6c61746572616c697a6564207468726573686f6c64206d757374206265203c20696e697469616c20636f6c6c61746572616c697a65642070657263656e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77476f7665726e616e63652064656c617920686173206e6f7420656c61707365644f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572626567696e4b656570466163746f726965735570646174652063616e206f6e6c792062652063616c6c65642077697468696e203138302064617973206f6620696e697469616c697a6174696f6e4c6f742073697a65206172726179206d75737420616c7761797320636f6e7461696e203120425443496e697469616c20636f6c6c61746572616c697a65642070657263656e74206d757374206265203c3d20333030254b454550207374616b656420666163746f7279206d7573742062652061206e6f6e7a65726f20616464726573734c6f742073697a65732067726561746572207468616e203130302042544320617265206e6f7420616c6c6f7765644e6577206465706f73697473206172652063757272656e746c7920616c6c6f7765645369676e6572206665652064697669736f72206d757374206265206c657373207468616e20353030302c20666f722061207369676e6572206665652074686174206973203e20302e30322553657665726520756e646572636f6c6c61746572616c697a6564207468726573686f6c64206d757374206265203c20756e646572636f6c6c61746572616c697a6564207468726573686f6c64a265627a7a723158204830c382f6994dc9e57edb670d51a4f58cd6d13df21023c7e67eb8a876bd2f7c64736f6c63430005110032",
  "sourceMap": "2535:1:24:-;2504:32;;2853:37;;;-1:-1:-1;;;;2896:38:24;;;-1:-1:-1;;;;2977:49:24;;;-1:-1:-1;;;;3043:56:24;;;-1:-1:-1;;;;3116:64:24;;;;;3197:71;95:1052:41;3197:71:24;3226:5;95:1052:41;3197:71:24;;;3233:5;3197:71;;3240:9;3197:71;;3251:9;3197:71;;3262:5;2853:37;3197:71;;;;;2896:38;3197:71;:::i;:::-;-1:-1:-1;139:32:41;;;-1:-1:-1;;;;;;139:32:41;169:1;139:32;;;199:8;177:30;;214:405;5:2:-1;;;;30:1;27;20:12;5:2;214:405:41;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;214:405:41;;;;;;;657:6:61;:19;;-1:-1:-1;;;;;;657:19:61;666:10;657:19;;;;214:405:41;691:40:61;214:405:41;;;;-1:-1:-1;;;;;724:6:61;;691:40;;657:6;;691:40;4249:9:24;:40;;-1:-1:-1;;;;;4249:40:24;;;-1:-1:-1;;;;;;4249:40:24;;;;;;;4299:5;:22;;;;;;;;;;;509:69:41;;;;;;;;529:5;509:69;;536:5;509:69;;;;543:5;509:69;;;;;;;550:9;509:69;;;;561:9;509:69;;;;572:5;509:69;;;;;;:16;;:69;;:::i;:::-;;214:405;;95:1052;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;95:1052:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;95:1052:41;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;95:1052:41;;;-1:-1:-1;95:1052:41;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;95:1052:41;;;;;;;;;:::o;:::-;;;;;;;",
  "deployedSourceMap": "95:1052:41:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8079:326:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8079:326:24;;;:::i;:::-;;;;;;;;;;;;;;;;917:98:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;917:98:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;917:98:41;-1:-1:-1;;;;;917:98:41;;:::i;:::-;;15967:484:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15967:484:24;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15967:484:24;-1:-1:-1;;;;;15967:484:24;;:::i;21763:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21763:110:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;21763:110:24;;;;;;;;;;;;;;;;;25055:279;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25055:279:24;;;:::i;17113:394::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17113:394:24;;;:::i;19905:675::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19905:675:24;;;:::i;6342:100::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6342:100:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;5052:637:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:637:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;5052:637:0;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5052:637:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5052:637:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5052:637:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5052:637:0;;;;;;;;;-1:-1:-1;5052:637:0;;;;-1:-1:-1;5052:637:0;;;;-1:-1:-1;;;;5:28;;2:2;;;46:1;43;36:12;2:2;5052:637:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5052:637:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5052:637:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5052:637:0;;-1:-1:-1;5052:637:0;;-1:-1:-1;;;;;5052:637:0:i;5079:1108:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5079:1108:24;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;5079:1108:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8585:221:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8585:221:0;;;:::i;10136:229::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10136:229:0;;;:::i;6808:130:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6808:130:24;;;:::i;4177:241:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4177:241:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4177:241:0;-1:-1:-1;;;;;4177:241:0;;:::i;9815:1184:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9815:1184:24;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9815:1184:24;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9815:1184:24;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9815:1184:24;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;9815:1184:24;;-1:-1:-1;9815:1184:24;-1:-1:-1;9815:1184:24;:::i;27144:223::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27144:223:24;;;:::i;6573:102::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6573:102:24;;;:::i;9026:254:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9026:254:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9026:254:0;;;;:::i;23863:224:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23863:224:24;;;:::i;23298:126::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23298:126:24;;;:::i;8666:606::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8666:606:24;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8666:606:24;;;;:::i;24703:262::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24703:262:24;;;:::i;21562:102::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21562:102:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2740:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2740:22:24;;;:::i;9414:229:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9414:229:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9414:229:0;;:::i;22214:184:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22214:184:24;;;:::i;1599:137:61:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1599:137:61;;;:::i;2619:33:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2619:33:24;;;:::i;:::-;;;;-1:-1:-1;;;;;2619:33:24;;;;;;;;;;;;;;7671:402;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7671:402:24;;;:::i;26093:228::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26093:228:24;;;:::i;8219:225:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8219:225:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8219:225:0;;:::i;7041:534:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7041:534:24;;;:::i;1021:124:41:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1021:124:41;;;;;;;;:::i;6489:407:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6489:407:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6489:407:0;;;;;;;:::i;814:77:61:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;814:77:61;;;:::i;1165:90::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1165:90:61;;;:::i;22482:126:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22482:126:24;;;:::i;11440:132:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11440:132:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11440:132:0;-1:-1:-1;;;;;11440:132:0;;:::i;28593:329:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28593:329:24;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28593:329:24;-1:-1:-1;;;;;28593:329:24;;:::i;21956:168::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21956:168:24;;;:::i;815:96:41:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;815:96:41;;;:::i;7034:215:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7034:215:0;;;:::i;20860:604:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20860:604:24;;;:::i;26913:127::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26913:127:24;;;:::i;25426:276::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25426:276:24;;;:::i;2658:19::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2658:19:24;;;:::i;23514:268::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23514:268:24;;;:::i;24187:290::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24187:290:24;;;:::i;625:98:41:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;625:98:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;625:98:41;;:::i;9779:213:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9779:213:0;;;:::i;17790:375:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17790:375:24;;;:::i;7396:322:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7396:322:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7396:322:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7396:322:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7396:322:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7396:322:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;7396:322:0;;-1:-1:-1;7396:322:0;;-1:-1:-1;;;;;7396:322:0:i;23164:128:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23164:128:24;;;:::i;11497:1539::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11497:1539:24;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11497:1539:24;;;;;;;;;;;;;;;;;;;;:::i;18510:922::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18510:922:24;;;:::i;7861:225:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7861:225:0;;;:::i;2768:27:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2768:27:24;;;:::i;26640:163::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26640:163:24;;;:::i;14550:1188::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14550:1188:24;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14550:1188:24;;;;;;;;;;;;;;;;;;;:::i;26443:109::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26443:109:24;;;:::i;1885:107:61:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1885:107:61;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1885:107:61;-1:-1:-1;;;;;1885:107:61;;:::i;5971:375:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5971:375:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5971:375:0;;;;;;;;;;;;:::i;8079:326:24:-;8163:16;;8135:7;;-1:-1:-1;;;8163:16:24;;;;8162:17;8154:64;;;;-1:-1:-1;;;8154:64:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2605:7;8248:36;8268:15;;8248;:19;;:36;;;;:::i;:::-;:54;;8247:151;;8342:56;8361:36;8381:15;;8361;:19;;:36;;;;:::i;:::-;2605:7;;8342:56;:18;:56;:::i;:::-;8247:151;;;8322:1;8247:151;8228:170;;8079:326;;:::o;917:98:41:-;982:11;:26;;-1:-1:-1;;;;;;982:26:41;-1:-1:-1;;;;;982:26:41;;;;;;;;;;917:98::o;15967:484:24:-;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;16084:17:24;16130:16;-1:-1:-1;;;;;16130:21:24;;:23;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16130:23:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16130:23:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16130:23:24;;;;-1:-1:-1;16130:23:24;16163:49;;;;;-1:-1:-1;;;16163:49:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;16223:19;:38;;-1:-1:-1;;;;;;16223:38:24;-1:-1:-1;;;;;16223:38:24;;;;;;;;16306:15;16271:32;:50;;;16336:108;;;;;;;;;;;;;;;;;;;;;;;;;1074:1:61;15967:484:24;:::o;21763:110::-;21816:15;21850:16;21843:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21843:23:24;-1:-1:-1;;;;;21843:23:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21763:110;:::o;25055:279::-;25153:7;25195:132;25235:32;;4087:7;25195:22;:132::i;17113:394::-;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;17236:31:24;;3348:8;16614:1;16584:27;:31;16576:64;;;;;-1:-1:-1;;;16576:64:24;;;;;;;;;;;;-1:-1:-1;;;16576:64:24;;;;;;;;;;;;;;;16723:6;16671:48;:15;16691:27;16671:48;:19;:48;:::i;:::-;:58;;16650:137;;;;;-1:-1:-1;;;16650:137:24;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16650:137:24;;;;;;;;;;;;;;;17344:19;;17325:16;:38;;;17344:19;;;;17325:38;;;-1:-1:-1;;17325:38:24;;;;;;17378:44;;;;;;;;;;;;;;;;-1:-1:-1;;17432:19:24;:23;;-1:-1:-1;;17432:23:24;;;17454:1;17465:31;:35;17113:394::o;19905:675::-;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;20025:28:24;;3348:8;16614:1;16584:27;:31;16576:64;;;;;-1:-1:-1;;;16576:64:24;;;;;;;;;;;;-1:-1:-1;;;16576:64:24;;;;;;;;;;;;;;;16723:6;16671:48;:15;16691:27;16671:48;:19;:48;:::i;:::-;:58;;16650:137;;;;;-1:-1:-1;;;16650:137:24;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16650:137:24;;;;;;;;;;;;;;;20158:20;;20192:21;;20227:18;;20111:144;;20158:20;;-1:-1:-1;;;;;;;;20158:20:24;;;;;;20192:21;;;;20227:18;20111:144;:33;:144;:::i;:::-;20305:20;;20339:21;;20374:18;;20271:131;;;-1:-1:-1;;;;;;;;20305:20:24;;;;;20271:131;;20339:21;;;20271:131;;;;20374:18;;20271:131;;;;;;;;;;;;;;;-1:-1:-1;;20444:1:24;20413:28;:32;20455:20;:33;;-1:-1:-1;;;;;;20455:33:24;;;20498:21;:34;;-1:-1:-1;;;;;;20498:34:24;;;;;;20542:18;:31;;;;;;;19905:675::o;6342:100::-;6419:16;;-1:-1:-1;;;6419:16:24;;;;;6342:100::o;5052:637:0:-;5373:25;5387:10;5373:13;:25::i;:::-;5352:108;;;;-1:-1:-1;;;5352:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5556:7;5532:10;-1:-1:-1;;;;;5475:207:0;5508:10;-1:-1:-1;;;;;5475:207:0;;5577:10;5601:21;5636:13;5663:9;5475:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5475:207:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5475:207:0;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5475:207:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:637;;;;;;:::o;5079:1108:24:-;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;5493:20:24;;:25;5485:57;;;;;-1:-1:-1;;;5485:57:24;;;;;;;;;;;;-1:-1:-1;;;5485:57:24;;;;;;;;;;;;;;;5553:52;;;-1:-1:-1;;;5553:52:24;;:20;:52;;;;-1:-1:-1;;;;;5553:52:24;;;;;;;;:31;;;;:52;;;;;-1:-1:-1;;5553:52:24;;;;;;;:31;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;5553:52:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;5615:13:24;:30;;5708:15;5615:13;5685:38;-1:-1:-1;;5615:30:24;5655:20;;;-1:-1:-1;;5615:30:24;;;;;-1:-1:-1;;5615:30:24;;;;;;;5655:20;;;;;5733:23;-1:-1:-1;;;5733:23:24;;;-1:-1:-1;5767:38:24;;-1:-1:-1;5787:17:24;5767:19;:38::i;:::-;5816:130;;;-1:-1:-1;;;5816:130:24;;-1:-1:-1;;;;;5816:130:24;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;;:130;;;;;-1:-1:-1;;5816:130:24;;;;;;;;-1:-1:-1;5816:36:24;:130;;;5:2:-1;;;;30:1;27;20:12;5:2;5816:130:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;5956:224:24;;;-1:-1:-1;;;5956:224:24;;-1:-1:-1;;;;;5956:224:24;;;;;;;6044:4;5956:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;;-1:-1:-1;5956:39:24;;-1:-1:-1;5956:224:24;;;;;-1:-1:-1;;5956:224:24;;;;;;;;-1:-1:-1;5956:39:24;:224;;;5:2:-1;;;;30:1;27;20:12;5:2;5956:224:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5956:224:24;;;;5079:1108;;;;;;;;;:::o;8585:221:0:-;8654:25;8668:10;8654:13;:25::i;:::-;8633:108;;;;-1:-1:-1;;;8633:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8756:43;;;8783:15;8756:43;;;;8771:10;;8756:43;;;;;;;;;;8585:221::o;10136:229::-;10209:25;10223:10;10209:13;:25::i;:::-;10188:108;;;;-1:-1:-1;;;10188:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10311:47;;;10342:15;10311:47;;;;10330:10;;10311:47;;;;;;;;;;10136:229::o;6808:130:24:-;6886:16;6903:23;;6860:7;;6886:16;-1:-1:-1;;6903:27:24;;;6886:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6886:45:24;;6808:130;-1:-1:-1;6808:130:24:o;4177:241:0:-;4259:25;4273:10;4259:13;:25::i;:::-;4238:108;;;;-1:-1:-1;;;4238:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4361:50;;;4395:15;4361:50;;;;-1:-1:-1;;;;;4361:50:0;;;4369:10;;4361:50;;;;;;;;;4177:241;:::o;9815:1184:24:-;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;9922:21:24;;9961:795;9981:20;;;9961:795;;;10026:9;;10036:1;10026:12;;;;;;;;;;;;;-1:-1:-1;;;;;10026:12:24;-1:-1:-1;;;;;10026:21:24;10042:5;10026:21;10022:724;;;10086:4;10067:23;;10022:724;;;10130:10;10115:9;;10125:1;10115:12;;;;;;;;;;;;;-1:-1:-1;;;;;10115:12:24;-1:-1:-1;;;;;10115:25:24;;10111:635;;;10225:56;;-1:-1:-1;;;10225:56:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10111:635;10321:10;10306:9;;10316:1;10306:12;;;;;;;;;;;;;-1:-1:-1;;;;;10306:12:24;-1:-1:-1;;;;;10306:25:24;;10302:444;;;10416:56;;-1:-1:-1;;;10416:56:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10302:444;10501:1;10497;:5;:41;;;;;10522:9;;10536:1;10532;:5;10522:16;;;;;;;;;;;;;-1:-1:-1;;;;;10522:16:24;-1:-1:-1;;;;;10506:32:24;:9;;10516:1;10506:12;;;;;;;;;;;;;-1:-1:-1;;;;;10506:12:24;-1:-1:-1;;;;;10506:32:24;;10497:41;10493:253;;;10558:49;;-1:-1:-1;;;10558:49:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10493:253;10636:1;10632;:5;:40;;;;;10656:9;;10670:1;10666;:5;10656:16;;;;;;;;;;;;;-1:-1:-1;;;;;10656:16:24;-1:-1:-1;;;;;10641:31:24;:9;;10651:1;10641:12;;;;;;;;;;;;;-1:-1:-1;;;;;10641:12:24;-1:-1:-1;;;;;10641:31:24;;10632:40;10628:118;;;10692:39;;;-1:-1:-1;;;10692:39:24;;;;;;;;;;;;;;;;;;;;;;;;;;;10628:118;10003:3;;9961:795;;;;10774:16;10766:69;;;;-1:-1:-1;;;10766:69:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10851:49;10873:9;;10884:15;10851:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;10851:49:24;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;10851:49:24;;;;-1:-1:-1;10851:49:24;;-1:-1:-1;;;;;10851:49:24;10910:31;:19;10932:9;;10910:31;:::i;:::-;-1:-1:-1;;10977:15:24;10951:23;:41;-1:-1:-1;;9815:1184:24:o;27144:223::-;27203:7;27222:36;27273:20;:34;;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27273:36:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27273:36:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27273:36:24;27326:34;;;-1:-1:-1;;;27326:34:24;;;;27273:36;;-1:-1:-1;;;;;;27326:32:24;;;;;:34;;;;;27273:36;;27326:34;;;;;;;;:32;:34;;;5:2:-1;;;;30:1;27;20:12;5:2;27326:34:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27326:34:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27326:34:24;;-1:-1:-1;;27144:223:24;:::o;6573:102::-;6623:7;6649:16;6666:1;6649:19;;;;;;;9026:254:0;9113:25;9127:10;9113:13;:25::i;:::-;9092:108;;;;-1:-1:-1;;;9092:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9215:58;;;;;;;;9257:15;9215:58;;;;;;9234:10;;9215:58;;;;;;;;9026:254;:::o;23863:224:24:-;23928:7;23966:114;24006:23;;3348:8;23966:22;:114::i;23298:126::-;23387:5;;:30;;;-1:-1:-1;;;23387:30:24;;;;23361:7;;-1:-1:-1;;;;;23387:5:24;;:28;;:30;;;;;;;;;;;;;;:5;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;23387:30:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23387:30:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23387:30:24;;-1:-1:-1;23298:126:24;:::o;8666:606::-;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;8819:1:24;8799:17;:21;;;8778:142;;;;-1:-1:-1;;;8778:142:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8971:4;8951:17;:24;;;8930:146;;;;-1:-1:-1;;;8930:146:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9087:19;:39;;-1:-1:-1;;9087:39:24;;;;;;;;;;9170:15;9136:31;:49;;;9200:65;;;;;;;;;;;;;;;;;;;;;;;;;8666:606;:::o;24703:262::-;24797:7;24839:119;24879:28;;3348:8;24839:22;:119::i;21562:102::-;21641:16;;;;;;;;21562:102::o;2740:22::-;;;;;;:::o;9414:229:0:-;9490:25;9504:10;9490:13;:25::i;:::-;9469:108;;;;-1:-1:-1;;;9469:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9592:44;;;9620:15;9592:44;;;;9613:5;;9601:10;;9592:44;;;;;;;;;9414:229;:::o;22214:184:24:-;22348:43;;-1:-1:-1;;;22348:43:24;;;;;22214:184::o;1599:137:61:-;1018:9;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;1697:1;1681:6;;1660:40;;-1:-1:-1;;;;;1681:6:61;;;;1660:40;;1697:1;;1660:40;1727:1;1710:19;;-1:-1:-1;;;;;;1710:19:61;;;1599:137::o;2619:33:24:-;;;-1:-1:-1;;;;;2619:33:24;;:::o;7671:402::-;7728:16;;-1:-1:-1;;;7728:16:24;;;;7727:17;7719:64;;;;-1:-1:-1;;;7719:64:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7801:15;;7793:60;;;;;-1:-1:-1;;;7793:60:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;2605:7;7884:36;7904:15;;7884;:19;;:36;;;;:::i;:::-;:54;;7863:126;;;;;-1:-1:-1;;;7863:126:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;7999:16;:23;;-1:-1:-1;;7999:23:24;-1:-1:-1;;;7999:23:24;;;8037:29;;;8018:4;8037:29;;;;;;;;;;;;;7671:402::o;26093:228::-;26149:44;;:20;26207:48;26235:19;:17;:19::i;:::-;26207:27;:48::i;:::-;26269:8;;26149:165;;;-1:-1:-1;;;;;;26149:165:24;;;;;;;;;;;;;;;;;;;;;26269:8;;;;26149:165;;;;26291:13;;;;;26149:165;;;;;;;;;;26269:8;;26149:165;;;;;;;;;;;5:2:-1;;;;30:1;27;20:12;5:2;26149:165:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26149:165:24;;;;26093:228::o;8219:225:0:-;8293:25;8307:10;8293:13;:25::i;:::-;8272:108;;;;-1:-1:-1;;;8272:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8395:42;;;8421:15;8395:42;;;;8414:5;;8402:10;;8395:42;;;;;;;;;8219:225;:::o;7041:534:24:-;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;7128:15:24;;:20;7107:116;;;;-1:-1:-1;;;7107:116:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7271:20;;7253:15;:38;7334:8;7322:20;;7301:145;;;;-1:-1:-1;;;7301:145:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7474:15;7456;:33;7499:16;:24;;-1:-1:-1;;7499:24:24;;;7538:30;;;7518:5;7538:30;;;;;;;;;;;;;1074:1:61;7041:534:24:o;1021:124:41:-;1127:11;;-1:-1:-1;;;;;1127:11:41;1021:124;;;;;:::o;6489:407:0:-;6640:25;6654:10;6640:13;:25::i;:::-;6619:108;;;;-1:-1:-1;;;6619:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6742:147;;;;;;;;;;;;6864:15;6742:147;;;;;;6772:10;;6742:147;;;;;;;;;;6489:407;;:::o;814:77:61:-;852:7;878:6;-1:-1:-1;;;;;878:6:61;814:77;:::o;1165:90::-;1205:4;1242:6;-1:-1:-1;;;;;1242:6:61;1228:10;:20;;1165:90::o;22482:126:24:-;22573:28;;-1:-1:-1;;;22573:28:24;;;;;22482:126::o;11440:132:0:-;11524:16;;:41;;;-1:-1:-1;;;11524:41:0;;-1:-1:-1;;;;;11548:16:0;;;11524:41;;;;;;11501:4;;11524:16;;;;;:23;;:41;;;;;;;;;;;;;;;:16;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;11524:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11524:41:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11524:41:0;;-1:-1:-1;11440:132:0;;;;:::o;28593:329:24:-;28698:4;;28718:176;28742:16;:23;28738:27;;28718:176;;;28813:25;-1:-1:-1;;;;;28790:48:24;:16;28807:1;28790:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28790:19:24;:48;28786:98;;;28865:4;28858:11;;;;;28786:98;28767:3;;28718:176;;;-1:-1:-1;28910:5:24;;28593:329;-1:-1:-1;;28593:329:24:o;21956:168::-;22082:35;;-1:-1:-1;;;22082:35:24;;;;;21956:168::o;815:96:41:-;893:11;;815:96;:::o;7034:215:0:-;7100:25;7114:10;7100:13;:25::i;:::-;7079:108;;;;-1:-1:-1;;;7079:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7202:40;;;7226:15;7202:40;;;;7214:10;;7202:40;;;;;;;;;;7034:215::o;20860:604:24:-;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;20984:32:24;;4087:7;16614:1;16584:27;:31;16576:64;;;;;-1:-1:-1;;;16576:64:24;;;;;;;;;;;;-1:-1:-1;;;16576:64:24;;;;;;;;;;;;;;;16723:6;16671:48;:15;16691:27;16671:48;:19;:48;:::i;:::-;:58;;16650:137;;;;;-1:-1:-1;;;16650:137:24;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16650:137:24;;;;;;;;;;;;;;;21223:19;;;-1:-1:-1;;;;;;21252:36:24;;;;;21188:32;21298;:36;21350:51;;;-1:-1:-1;;;;;21223:19:24;;;21350:51;;;;;21223:19;;21350:51;;;;;;;;;;21412:9;;;:45;;;-1:-1:-1;;;21412:45:24;;-1:-1:-1;;;;;21412:45:24;;;;;;;;;;;;:9;;;;;:23;;:45;;;;;:9;;:45;;;;;;;;:9;;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;21412:45:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21412:45:24;;;;16797:1;1074::61;;20860:604:24:o;26913:127::-;4087:7;26913:127;:::o;25426:276::-;25528:7;25570:125;25610:20;;3415:8;25570:22;:125::i;2658:19::-;;;-1:-1:-1;;;;;2658:19:24;;:::o;23514:268::-;23611:7;23653:122;23693:31;;3348:8;23653:22;:122::i;24187:290::-;24295:7;24337:133;24377:42;;3348:8;24337:22;:133::i;625:98:41:-;690:11;:26;625:98::o;9779:213:0:-;9844:25;9858:10;9844:13;:25::i;:::-;9823:108;;;;-1:-1:-1;;;9823:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9946:39;;;9969:15;9946:39;;;;9957:10;;9946:39;;;;;;;;;;9779:213::o;17790:375:24:-;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;17892:23:24;;3348:8;16614:1;16584:27;:31;16576:64;;;;;-1:-1:-1;;;16576:64:24;;;;;;;;;;;;-1:-1:-1;;;16576:64:24;;;;;;;;;;;;;;;16723:6;16671:48;:15;16691:27;16671:48;:19;:48;:::i;:::-;:58;;16650:137;;;;;-1:-1:-1;;;16650:137:24;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16650:137:24;;;;;;;;;;;;;;;17971:19;17952:38;;;;:16;;:38;:::i;:::-;;18005:36;18021:19;18005:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18005:36:24;-1:-1:-1;;;;;18005:36:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18077:1;18051:23;:27;;;18088:30;:19;18077:1;18088:30;:::i;:::-;;18129:29;:27;:29::i;:::-;1074:1:61;;17790:375:24:o;7396:322:0:-;7557:25;7571:10;7557:13;:25::i;:::-;7536:108;;;;-1:-1:-1;;;7536:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7659:52;;;;;;;;;;;;;;;7680:10;;7659:52;;7692:18;;7659:52;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7659:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7396:322;:::o;23164:128:24:-;23252:5;;:33;;;-1:-1:-1;;;23252:33:24;;;;23226:7;;-1:-1:-1;;;;;23252:5:24;;:31;;:33;;;;;;;;;;;;;;:5;:33;;;5:2:-1;;;;30:1;27;20:12;11497:1539:24;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;11794:3:24;11761:29;:36;;;;11740:129;;;;-1:-1:-1;;;11740:129:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11932:3;11900:29;:35;;;11879:128;;;;-1:-1:-1;;;11879:128:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12086:36;12038:84;;:29;:84;;;12017:201;;;;-1:-1:-1;;;12017:201:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12304:44;12249:99;;:36;:99;;;12228:222;;;;-1:-1:-1;;;12228:222:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12461:31;:63;;-1:-1:-1;;12461:63:24;;;;;;;;-1:-1:-1;;12534:77:24;;;;;;;;;;;;-1:-1:-1;;12621:93:24;-1:-1:-1;;;12621:93:24;;;;;;;;;;12769:15;12724:42;:60;;;12799:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11497:1539;;;:::o;18510:922::-;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;18644:42:24;;3348:8;16614:1;16584:27;:31;16576:64;;;;;-1:-1:-1;;;16576:64:24;;;;;;;;;;;;-1:-1:-1;;;16576:64:24;;;;;;;;;;;;;;;16723:6;16671:48;:15;16691:27;16671:48;:19;:48;:::i;:::-;:58;;16650:137;;;;;-1:-1:-1;;;16650:137:24;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16650:137:24;;;;;;;;;;;;;;;18775:31;;18744:28;:62;;-1:-1:-1;;18744:62:24;18775:31;;;;-1:-1:-1;;;18744:62:24;;;;;;-1:-1:-1;;18816:76:24;18854:38;;;;;-1:-1:-1;;;18816:76:24;;;;;;-1:-1:-1;;;;18902:92:24;-1:-1:-1;;;18948:46:24;;;;;;;-1:-1:-1;;;18902:92:24;;;;;;;;;19010:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19222:31:24;:35;;-1:-1:-1;;19319:50:24;;;19256:1;19379:42;:46;18510:922::o;7861:225:0:-;7932:25;7946:10;7932:13;:25::i;:::-;7911:108;;;;-1:-1:-1;;;7911:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8034:45;;;8063:15;8034:45;;;;8051:10;;8034:45;;;;;;;;;;7861:225::o;2768:27:24:-;;;;;;;;;:::o;26640:163::-;3415:8;26640:163;:::o;14550:1188::-;1018:9:61;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;14764:20:24;;14746:15;:38;3415:8;14815:45;;14794:169;;;;-1:-1:-1;;;14794:169:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15244:32:24;;15223:124;;;;-1:-1:-1;;;15223:124:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15358:20;:41;;-1:-1:-1;;;;;15358:41:24;;;-1:-1:-1;;;15358:41:24;;-1:-1:-1;;;;;;15358:41:24;;;;;;;;;;15409:21;:43;;;;;-1:-1:-1;;;;;;15409:43:24;;;;;;;;15462:18;:37;;;;;;;;;;;;;15540:15;15509:28;:46;;;15571:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1074:1:61;14550:1188:24;;;:::o;26443:109::-;3348:8;26443:109;:::o;1885:107:61:-;1018:9;:7;:9::i;:::-;1010:54;;;;;-1:-1:-1;;;1010:54:61;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1010:54:61;;;;;;;;;;;;;;;1957:28;1976:8;1957:18;:28::i;:::-;1885:107;:::o;5971:375:0:-;6099:25;6113:10;6099:13;:25::i;:::-;6078:108;;;;-1:-1:-1;;;6078:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6201:138;;;;;;;;;;;;6314:15;6201:138;;;;;;6261:7;;6237:10;;6201:138;;;;;;;;;5971:375;;;:::o;1274:179:60:-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:60;;;1274:179::o;29927:403:24:-;30052:7;30098:1;30079:16;:20;30071:53;;;;;-1:-1:-1;;;30071:53:24;;;;;;;;;;;;-1:-1:-1;;;30071:53:24;;;;;;;;;;;;;;;30134:15;30152:37;:15;30172:16;30152:37;:19;:37;:::i;:::-;30134:55;;30214:12;30203:7;:23;30199:125;;30249:1;30242:8;;;;;30199:125;30288:25;:12;30305:7;30288:25;:16;:25;:::i;:::-;30281:32;;;;;7182:547:20;-1:-1:-1;;;;;7388:41:20;;7367:123;;;;-1:-1:-1;;;7367:123:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7501:23;;;:69;;-1:-1:-1;;;;;7501:69:20;;;-1:-1:-1;;;;;;7501:69:20;;;;;;;7580:24;;;:71;;;;;;;;;;;;;;;7661:21;;;;:61;;;;;;;;;;;;;;7182:547::o;10695:280:0:-;10827:16;;-1:-1:-1;;;;;10827:16:0;10819:39;10798:117;;;;;-1:-1:-1;;;10798:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10925:16;:43;;-1:-1:-1;;;;;;10925:43:0;-1:-1:-1;;;;;10925:43:0;;;;;;;;;;10695:280::o;29169:307:24:-;29288:7;29311:20;29346:51;29371:25;29346:20;:18;:20::i;:::-;:24;:51;:24;:51;:::i;:::-;29431:28;;29311:86;;-1:-1:-1;29414:55:24;;29465:3;;29414:46;;29311:86;;-1:-1:-1;;;29431:28:24;;;;29414:16;:46::i;:::-;:50;:55;:50;:55;:::i;:::-;29407:62;29169:307;-1:-1:-1;;;29169:307:24:o;2093:225:61:-;-1:-1:-1;;;;;2166:22:61;;2158:73;;;;-1:-1:-1;;;2158:73:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2267:6;;;2246:38;;-1:-1:-1;;;;;2246:38:61;;;;2267:6;;;2246:38;;;2294:6;:17;;-1:-1:-1;;;;;;2294:17:61;-1:-1:-1;;;;;2294:17:61;;;;;;;;;;2093:225::o;29482:343:24:-;29570:9;;;:20;;;-1:-1:-1;;;29570:20:24;;;;29535:7;;;;-1:-1:-1;;;;;29570:9:24;;:18;;:20;;;;;;;;;;;:9;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;29570:20:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29570:20:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29570:20:24;;-1:-1:-1;29604:10:24;;;:28;;;29626:6;29618:5;:14;29604:28;29600:197;;;29749:37;;;-1:-1:-1;;;29749:37:24;;;;;;;;;;;;;;;;;;;;;;;;;;;1693:458:60;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:60;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2606:326;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:60:o;95:1052:41:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;95:1052:41;;;;;;;;-1:-1:-1;;;;;95:1052:41;;;;;-1:-1:-1;;;;;95:1052:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;95:1052:41;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;95:1052:41;;;-1:-1:-1;95:1052:41;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;95:1052:41;;;;;;;;;;;;;;;;;;;;;;;;",
  "source": "pragma solidity 0.5.17;\n\nimport {TBTCSystem} from \"../../../contracts/system/TBTCSystem.sol\";\n\ncontract TBTCSystemStub is TBTCSystem {\n    address keepAddress = address(7);\n    uint256 oraclePrice = 10 ** 12;\n\n    constructor(address _priceFeed, address _relay)\n        // Set expected factory address to 0-address.\n        // Address is irelevant as test use forceMint function to bypass ACL\n        TBTCSystem(_priceFeed, _relay)\n    public {\n        // solium-disable-previous-line no-empty-blocks\n        lotSizesSatoshis = [10**5, 10**6, 10**7, 2 * 10**7, 5 * 10**7, 10**8]; // [0.01, 0.1, 0.2, 0.5, 1.0] BTC\n    }\n\n    function setOraclePrice(uint256 _oraclePrice) external {\n        oraclePrice = _oraclePrice;\n    }\n\n    /// @dev Override TBTCSystem.fetchBitcoinPrice, don't call out to the price feed.\n    function fetchBitcoinPrice() external view returns (uint256) {\n        return oraclePrice;\n    }\n\n    function setKeepAddress(address _keepAddress) external {\n        keepAddress = _keepAddress;\n    }\n\n    function requestNewKeep(uint64, uint256) external payable returns (address _keepAddress) {\n        return keepAddress;\n    }\n}\n",
  "sourcePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/test/system/TBTCSystemStub.sol",
  "ast": {
    "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/test/system/TBTCSystemStub.sol",
    "exportedSymbols": {
      "TBTCSystemStub": [
        10979
      ]
    },
    "id": 10980,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 10886,
        "literals": [
          "solidity",
          "0.5",
          ".17"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:41"
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCSystem.sol",
        "file": "../../../contracts/system/TBTCSystem.sol",
        "id": 10888,
        "nodeType": "ImportDirective",
        "scope": 10980,
        "sourceUnit": 8373,
        "src": "25:68:41",
        "symbolAliases": [
          {
            "foreign": 10887,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10889,
              "name": "TBTCSystem",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8372,
              "src": "122:10:41",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_TBTCSystem_$8372",
                "typeString": "contract TBTCSystem"
              }
            },
            "id": 10890,
            "nodeType": "InheritanceSpecifier",
            "src": "122:10:41"
          }
        ],
        "contractDependencies": [
          439,
          5511,
          8372,
          16966
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 10979,
        "linearizedBaseContracts": [
          10979,
          8372,
          439,
          5511,
          16966
        ],
        "name": "TBTCSystemStub",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 10895,
            "name": "keepAddress",
            "nodeType": "VariableDeclaration",
            "scope": 10979,
            "src": "139:32:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 10891,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "139:7:41",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "37",
                  "id": 10893,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "169:1:41",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_7_by_1",
                    "typeString": "int_const 7"
                  },
                  "value": "7"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_rational_7_by_1",
                    "typeString": "int_const 7"
                  }
                ],
                "id": 10892,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "161:7:41",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_address_$",
                  "typeString": "type(address)"
                },
                "typeName": "address"
              },
              "id": 10894,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "161:10:41",
              "typeDescriptions": {
                "typeIdentifier": "t_address_payable",
                "typeString": "address payable"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 10900,
            "name": "oraclePrice",
            "nodeType": "VariableDeclaration",
            "scope": 10979,
            "src": "177:30:41",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 10896,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "177:7:41",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "commonType": {
                "typeIdentifier": "t_rational_1000000000000_by_1",
                "typeString": "int_const 1000000000000"
              },
              "id": 10899,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "leftExpression": {
                "argumentTypes": null,
                "hexValue": "3130",
                "id": 10897,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "199:2:41",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_10_by_1",
                  "typeString": "int_const 10"
                },
                "value": "10"
              },
              "nodeType": "BinaryOperation",
              "operator": "**",
              "rightExpression": {
                "argumentTypes": null,
                "hexValue": "3132",
                "id": 10898,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "205:2:41",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_12_by_1",
                  "typeString": "int_const 12"
                },
                "value": "12"
              },
              "src": "199:8:41",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1000000000000_by_1",
                "typeString": "int_const 1000000000000"
              }
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 10937,
              "nodeType": "Block",
              "src": "443:176:41",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10935,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10911,
                      "name": "lotSizesSatoshis",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7179,
                      "src": "509:16:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint64_$dyn_storage",
                        "typeString": "uint64[] storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_100000_by_1",
                            "typeString": "int_const 100000"
                          },
                          "id": 10914,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "3130",
                            "id": 10912,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "529:2:41",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10_by_1",
                              "typeString": "int_const 10"
                            },
                            "value": "10"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "**",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 10913,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "533:1:41",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "src": "529:5:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_100000_by_1",
                            "typeString": "int_const 100000"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_1000000_by_1",
                            "typeString": "int_const 1000000"
                          },
                          "id": 10917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "3130",
                            "id": 10915,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "536:2:41",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10_by_1",
                              "typeString": "int_const 10"
                            },
                            "value": "10"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "**",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "36",
                            "id": 10916,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "540:1:41",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_6_by_1",
                              "typeString": "int_const 6"
                            },
                            "value": "6"
                          },
                          "src": "536:5:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1000000_by_1",
                            "typeString": "int_const 1000000"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_10000000_by_1",
                            "typeString": "int_const 10000000"
                          },
                          "id": 10920,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "3130",
                            "id": 10918,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "543:2:41",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10_by_1",
                              "typeString": "int_const 10"
                            },
                            "value": "10"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "**",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "37",
                            "id": 10919,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "547:1:41",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_7_by_1",
                              "typeString": "int_const 7"
                            },
                            "value": "7"
                          },
                          "src": "543:5:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10000000_by_1",
                            "typeString": "int_const 10000000"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_20000000_by_1",
                            "typeString": "int_const 20000000"
                          },
                          "id": 10925,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 10921,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "550:1:41",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_rational_10000000_by_1",
                              "typeString": "int_const 10000000"
                            },
                            "id": 10924,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "3130",
                              "id": 10922,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "554:2:41",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "37",
                              "id": 10923,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "558:1:41",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_7_by_1",
                                "typeString": "int_const 7"
                              },
                              "value": "7"
                            },
                            "src": "554:5:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10000000_by_1",
                              "typeString": "int_const 10000000"
                            }
                          },
                          "src": "550:9:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_20000000_by_1",
                            "typeString": "int_const 20000000"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_50000000_by_1",
                            "typeString": "int_const 50000000"
                          },
                          "id": 10930,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 10926,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "561:1:41",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_rational_10000000_by_1",
                              "typeString": "int_const 10000000"
                            },
                            "id": 10929,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "3130",
                              "id": 10927,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "565:2:41",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "37",
                              "id": 10928,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "569:1:41",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_7_by_1",
                                "typeString": "int_const 7"
                              },
                              "value": "7"
                            },
                            "src": "565:5:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10000000_by_1",
                              "typeString": "int_const 10000000"
                            }
                          },
                          "src": "561:9:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_50000000_by_1",
                            "typeString": "int_const 50000000"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_100000000_by_1",
                            "typeString": "int_const 100000000"
                          },
                          "id": 10933,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "3130",
                            "id": 10931,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "572:2:41",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10_by_1",
                              "typeString": "int_const 10"
                            },
                            "value": "10"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "**",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "38",
                            "id": 10932,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "576:1:41",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8_by_1",
                              "typeString": "int_const 8"
                            },
                            "value": "8"
                          },
                          "src": "572:5:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_100000000_by_1",
                            "typeString": "int_const 100000000"
                          }
                        }
                      ],
                      "id": 10934,
                      "isConstant": false,
                      "isInlineArray": true,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "528:50:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint32_$6_memory_ptr",
                        "typeString": "uint32[6] memory"
                      }
                    },
                    "src": "509:69:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint64_$dyn_storage",
                      "typeString": "uint64[] storage ref"
                    }
                  },
                  "id": 10936,
                  "nodeType": "ExpressionStatement",
                  "src": "509:69:41"
                }
              ]
            },
            "documentation": null,
            "id": 10938,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10907,
                    "name": "_priceFeed",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10902,
                    "src": "412:10:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 10908,
                    "name": "_relay",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10904,
                    "src": "424:6:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 10909,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10906,
                  "name": "TBTCSystem",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8372,
                  "src": "401:10:41",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_TBTCSystem_$8372_$",
                    "typeString": "type(contract TBTCSystem)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "401:30:41"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10905,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10902,
                  "name": "_priceFeed",
                  "nodeType": "VariableDeclaration",
                  "scope": 10938,
                  "src": "226:18:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10901,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "226:7:41",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10904,
                  "name": "_relay",
                  "nodeType": "VariableDeclaration",
                  "scope": 10938,
                  "src": "246:14:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10903,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "246:7:41",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "225:36:41"
            },
            "returnParameters": {
              "id": 10910,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "443:0:41"
            },
            "scope": 10979,
            "src": "214:405:41",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10947,
              "nodeType": "Block",
              "src": "680:43:41",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10945,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10943,
                      "name": "oraclePrice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10900,
                      "src": "690:11:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10944,
                      "name": "_oraclePrice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10940,
                      "src": "704:12:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "690:26:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 10946,
                  "nodeType": "ExpressionStatement",
                  "src": "690:26:41"
                }
              ]
            },
            "documentation": null,
            "id": 10948,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setOraclePrice",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10941,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10940,
                  "name": "_oraclePrice",
                  "nodeType": "VariableDeclaration",
                  "scope": 10948,
                  "src": "649:20:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10939,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "649:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "648:22:41"
            },
            "returnParameters": {
              "id": 10942,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "680:0:41"
            },
            "scope": 10979,
            "src": "625:98:41",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10955,
              "nodeType": "Block",
              "src": "876:35:41",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10953,
                    "name": "oraclePrice",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10900,
                    "src": "893:11:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 10952,
                  "id": 10954,
                  "nodeType": "Return",
                  "src": "886:18:41"
                }
              ]
            },
            "documentation": "@dev Override TBTCSystem.fetchBitcoinPrice, don't call out to the price feed.",
            "id": 10956,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "fetchBitcoinPrice",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10949,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "841:2:41"
            },
            "returnParameters": {
              "id": 10952,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10951,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10956,
                  "src": "867:7:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10950,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "867:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "866:9:41"
            },
            "scope": 10979,
            "src": "815:96:41",
            "stateMutability": "view",
            "superFunction": 8053,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10965,
              "nodeType": "Block",
              "src": "972:43:41",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10963,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10961,
                      "name": "keepAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10895,
                      "src": "982:11:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10962,
                      "name": "_keepAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10958,
                      "src": "996:12:41",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "982:26:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 10964,
                  "nodeType": "ExpressionStatement",
                  "src": "982:26:41"
                }
              ]
            },
            "documentation": null,
            "id": 10966,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setKeepAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10959,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10958,
                  "name": "_keepAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 10966,
                  "src": "941:20:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10957,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "941:7:41",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "940:22:41"
            },
            "returnParameters": {
              "id": 10960,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "972:0:41"
            },
            "scope": 10979,
            "src": "917:98:41",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10977,
              "nodeType": "Block",
              "src": "1110:35:41",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10975,
                    "name": "keepAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10895,
                    "src": "1127:11:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 10974,
                  "id": 10976,
                  "nodeType": "Return",
                  "src": "1120:18:41"
                }
              ]
            },
            "documentation": null,
            "id": 10978,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "requestNewKeep",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10971,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10968,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10978,
                  "src": "1045:6:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 10967,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1045:6:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10970,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10978,
                  "src": "1053:7:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10969,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1053:7:41",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1044:17:41"
            },
            "returnParameters": {
              "id": 10974,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10973,
                  "name": "_keepAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 10978,
                  "src": "1088:20:41",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10972,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1088:7:41",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1087:22:41"
            },
            "scope": 10979,
            "src": "1021:124:41",
            "stateMutability": "payable",
            "superFunction": 8248,
            "visibility": "external"
          }
        ],
        "scope": 10980,
        "src": "95:1052:41"
      }
    ],
    "src": "0:1148:41"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/test/system/TBTCSystemStub.sol",
      "exportedSymbols": {
        "TBTCSystemStub": [
          10979
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.5",
            ".17"
          ]
        },
        "id": 10886,
        "name": "PragmaDirective",
        "src": "0:23:41"
      },
      {
        "attributes": {
          "SourceUnit": 8373,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCSystem.sol",
          "file": "../../../contracts/system/TBTCSystem.sol",
          "scope": 10980,
          "symbolAliases": [
            {
              "foreign": 10887,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 10888,
        "name": "ImportDirective",
        "src": "25:68:41"
      },
      {
        "attributes": {
          "contractDependencies": [
            439,
            5511,
            8372,
            16966
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            10979,
            8372,
            439,
            5511,
            16966
          ],
          "name": "TBTCSystemStub",
          "scope": 10980
        },
        "children": [
          {
            "attributes": {
              "arguments": null
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "TBTCSystem",
                  "referencedDeclaration": 8372,
                  "type": "contract TBTCSystem"
                },
                "id": 10889,
                "name": "UserDefinedTypeName",
                "src": "122:10:41"
              }
            ],
            "id": 10890,
            "name": "InheritanceSpecifier",
            "src": "122:10:41"
          },
          {
            "attributes": {
              "constant": false,
              "name": "keepAddress",
              "scope": 10979,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "address",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "address",
                  "stateMutability": "nonpayable",
                  "type": "address"
                },
                "id": 10891,
                "name": "ElementaryTypeName",
                "src": "139:7:41"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "isStructConstructorCall": false,
                  "lValueRequested": false,
                  "names": [
                    null
                  ],
                  "type": "address payable",
                  "type_conversion": true
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_7_by_1",
                          "typeString": "int_const 7"
                        }
                      ],
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "type": "type(address)",
                      "value": "address"
                    },
                    "id": 10892,
                    "name": "ElementaryTypeNameExpression",
                    "src": "161:7:41"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "37",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "number",
                      "type": "int_const 7",
                      "value": "7"
                    },
                    "id": 10893,
                    "name": "Literal",
                    "src": "169:1:41"
                  }
                ],
                "id": 10894,
                "name": "FunctionCall",
                "src": "161:10:41"
              }
            ],
            "id": 10895,
            "name": "VariableDeclaration",
            "src": "139:32:41"
          },
          {
            "attributes": {
              "constant": false,
              "name": "oraclePrice",
              "scope": 10979,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 10896,
                "name": "ElementaryTypeName",
                "src": "177:7:41"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "commonType": {
                    "typeIdentifier": "t_rational_1000000000000_by_1",
                    "typeString": "int_const 1000000000000"
                  },
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "operator": "**",
                  "type": "int_const 1000000000000"
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "3130",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "number",
                      "type": "int_const 10",
                      "value": "10"
                    },
                    "id": 10897,
                    "name": "Literal",
                    "src": "199:2:41"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "3132",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "number",
                      "type": "int_const 12",
                      "value": "12"
                    },
                    "id": 10898,
                    "name": "Literal",
                    "src": "205:2:41"
                  }
                ],
                "id": 10899,
                "name": "BinaryOperation",
                "src": "199:8:41"
              }
            ],
            "id": 10900,
            "name": "VariableDeclaration",
            "src": "177:30:41"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": true,
              "kind": "constructor",
              "name": "",
              "scope": 10979,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_priceFeed",
                      "scope": 10938,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 10901,
                        "name": "ElementaryTypeName",
                        "src": "226:7:41"
                      }
                    ],
                    "id": 10902,
                    "name": "VariableDeclaration",
                    "src": "226:18:41"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_relay",
                      "scope": 10938,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 10903,
                        "name": "ElementaryTypeName",
                        "src": "246:7:41"
                      }
                    ],
                    "id": 10904,
                    "name": "VariableDeclaration",
                    "src": "246:14:41"
                  }
                ],
                "id": 10905,
                "name": "ParameterList",
                "src": "225:36:41"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10910,
                "name": "ParameterList",
                "src": "443:0:41"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 8372,
                      "type": "type(contract TBTCSystem)",
                      "value": "TBTCSystem"
                    },
                    "id": 10906,
                    "name": "Identifier",
                    "src": "401:10:41"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 10902,
                      "type": "address",
                      "value": "_priceFeed"
                    },
                    "id": 10907,
                    "name": "Identifier",
                    "src": "412:10:41"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 10904,
                      "type": "address",
                      "value": "_relay"
                    },
                    "id": 10908,
                    "name": "Identifier",
                    "src": "424:6:41"
                  }
                ],
                "id": 10909,
                "name": "ModifierInvocation",
                "src": "401:30:41"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint64[] storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7179,
                              "type": "uint64[] storage ref",
                              "value": "lotSizesSatoshis"
                            },
                            "id": 10911,
                            "name": "Identifier",
                            "src": "509:16:41"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": true,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "uint32[6] memory"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_100000_by_1",
                                    "typeString": "int_const 100000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "**",
                                  "type": "int_const 100000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3130",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 10",
                                      "value": "10"
                                    },
                                    "id": 10912,
                                    "name": "Literal",
                                    "src": "529:2:41"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "35",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 5",
                                      "value": "5"
                                    },
                                    "id": 10913,
                                    "name": "Literal",
                                    "src": "533:1:41"
                                  }
                                ],
                                "id": 10914,
                                "name": "BinaryOperation",
                                "src": "529:5:41"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_1000000_by_1",
                                    "typeString": "int_const 1000000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "**",
                                  "type": "int_const 1000000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3130",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 10",
                                      "value": "10"
                                    },
                                    "id": 10915,
                                    "name": "Literal",
                                    "src": "536:2:41"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "36",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 6",
                                      "value": "6"
                                    },
                                    "id": 10916,
                                    "name": "Literal",
                                    "src": "540:1:41"
                                  }
                                ],
                                "id": 10917,
                                "name": "BinaryOperation",
                                "src": "536:5:41"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_10000000_by_1",
                                    "typeString": "int_const 10000000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "**",
                                  "type": "int_const 10000000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3130",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 10",
                                      "value": "10"
                                    },
                                    "id": 10918,
                                    "name": "Literal",
                                    "src": "543:2:41"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "37",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 7",
                                      "value": "7"
                                    },
                                    "id": 10919,
                                    "name": "Literal",
                                    "src": "547:1:41"
                                  }
                                ],
                                "id": 10920,
                                "name": "BinaryOperation",
                                "src": "543:5:41"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_20000000_by_1",
                                    "typeString": "int_const 20000000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "*",
                                  "type": "int_const 20000000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "32",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 2",
                                      "value": "2"
                                    },
                                    "id": 10921,
                                    "name": "Literal",
                                    "src": "550:1:41"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_10000000_by_1",
                                        "typeString": "int_const 10000000"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "operator": "**",
                                      "type": "int_const 10000000"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3130",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 10",
                                          "value": "10"
                                        },
                                        "id": 10922,
                                        "name": "Literal",
                                        "src": "554:2:41"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "37",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 7",
                                          "value": "7"
                                        },
                                        "id": 10923,
                                        "name": "Literal",
                                        "src": "558:1:41"
                                      }
                                    ],
                                    "id": 10924,
                                    "name": "BinaryOperation",
                                    "src": "554:5:41"
                                  }
                                ],
                                "id": 10925,
                                "name": "BinaryOperation",
                                "src": "550:9:41"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_50000000_by_1",
                                    "typeString": "int_const 50000000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "*",
                                  "type": "int_const 50000000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "35",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 5",
                                      "value": "5"
                                    },
                                    "id": 10926,
                                    "name": "Literal",
                                    "src": "561:1:41"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_10000000_by_1",
                                        "typeString": "int_const 10000000"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "operator": "**",
                                      "type": "int_const 10000000"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3130",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 10",
                                          "value": "10"
                                        },
                                        "id": 10927,
                                        "name": "Literal",
                                        "src": "565:2:41"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "37",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 7",
                                          "value": "7"
                                        },
                                        "id": 10928,
                                        "name": "Literal",
                                        "src": "569:1:41"
                                      }
                                    ],
                                    "id": 10929,
                                    "name": "BinaryOperation",
                                    "src": "565:5:41"
                                  }
                                ],
                                "id": 10930,
                                "name": "BinaryOperation",
                                "src": "561:9:41"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_100000000_by_1",
                                    "typeString": "int_const 100000000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "**",
                                  "type": "int_const 100000000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3130",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 10",
                                      "value": "10"
                                    },
                                    "id": 10931,
                                    "name": "Literal",
                                    "src": "572:2:41"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "38",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 8",
                                      "value": "8"
                                    },
                                    "id": 10932,
                                    "name": "Literal",
                                    "src": "576:1:41"
                                  }
                                ],
                                "id": 10933,
                                "name": "BinaryOperation",
                                "src": "572:5:41"
                              }
                            ],
                            "id": 10934,
                            "name": "TupleExpression",
                            "src": "528:50:41"
                          }
                        ],
                        "id": 10935,
                        "name": "Assignment",
                        "src": "509:69:41"
                      }
                    ],
                    "id": 10936,
                    "name": "ExpressionStatement",
                    "src": "509:69:41"
                  }
                ],
                "id": 10937,
                "name": "Block",
                "src": "443:176:41"
              }
            ],
            "id": 10938,
            "name": "FunctionDefinition",
            "src": "214:405:41"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setOraclePrice",
              "scope": 10979,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_oraclePrice",
                      "scope": 10948,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 10939,
                        "name": "ElementaryTypeName",
                        "src": "649:7:41"
                      }
                    ],
                    "id": 10940,
                    "name": "VariableDeclaration",
                    "src": "649:20:41"
                  }
                ],
                "id": 10941,
                "name": "ParameterList",
                "src": "648:22:41"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10942,
                "name": "ParameterList",
                "src": "680:0:41"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10900,
                              "type": "uint256",
                              "value": "oraclePrice"
                            },
                            "id": 10943,
                            "name": "Identifier",
                            "src": "690:11:41"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10940,
                              "type": "uint256",
                              "value": "_oraclePrice"
                            },
                            "id": 10944,
                            "name": "Identifier",
                            "src": "704:12:41"
                          }
                        ],
                        "id": 10945,
                        "name": "Assignment",
                        "src": "690:26:41"
                      }
                    ],
                    "id": 10946,
                    "name": "ExpressionStatement",
                    "src": "690:26:41"
                  }
                ],
                "id": 10947,
                "name": "Block",
                "src": "680:43:41"
              }
            ],
            "id": 10948,
            "name": "FunctionDefinition",
            "src": "625:98:41"
          },
          {
            "attributes": {
              "documentation": "@dev Override TBTCSystem.fetchBitcoinPrice, don't call out to the price feed.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "fetchBitcoinPrice",
              "scope": 10979,
              "stateMutability": "view",
              "superFunction": 8053,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10949,
                "name": "ParameterList",
                "src": "841:2:41"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 10956,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 10950,
                        "name": "ElementaryTypeName",
                        "src": "867:7:41"
                      }
                    ],
                    "id": 10951,
                    "name": "VariableDeclaration",
                    "src": "867:7:41"
                  }
                ],
                "id": 10952,
                "name": "ParameterList",
                "src": "866:9:41"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 10952
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 10900,
                          "type": "uint256",
                          "value": "oraclePrice"
                        },
                        "id": 10953,
                        "name": "Identifier",
                        "src": "893:11:41"
                      }
                    ],
                    "id": 10954,
                    "name": "Return",
                    "src": "886:18:41"
                  }
                ],
                "id": 10955,
                "name": "Block",
                "src": "876:35:41"
              }
            ],
            "id": 10956,
            "name": "FunctionDefinition",
            "src": "815:96:41"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setKeepAddress",
              "scope": 10979,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_keepAddress",
                      "scope": 10966,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 10957,
                        "name": "ElementaryTypeName",
                        "src": "941:7:41"
                      }
                    ],
                    "id": 10958,
                    "name": "VariableDeclaration",
                    "src": "941:20:41"
                  }
                ],
                "id": 10959,
                "name": "ParameterList",
                "src": "940:22:41"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10960,
                "name": "ParameterList",
                "src": "972:0:41"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10895,
                              "type": "address",
                              "value": "keepAddress"
                            },
                            "id": 10961,
                            "name": "Identifier",
                            "src": "982:11:41"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10958,
                              "type": "address",
                              "value": "_keepAddress"
                            },
                            "id": 10962,
                            "name": "Identifier",
                            "src": "996:12:41"
                          }
                        ],
                        "id": 10963,
                        "name": "Assignment",
                        "src": "982:26:41"
                      }
                    ],
                    "id": 10964,
                    "name": "ExpressionStatement",
                    "src": "982:26:41"
                  }
                ],
                "id": 10965,
                "name": "Block",
                "src": "972:43:41"
              }
            ],
            "id": 10966,
            "name": "FunctionDefinition",
            "src": "917:98:41"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "requestNewKeep",
              "scope": 10979,
              "stateMutability": "payable",
              "superFunction": 8248,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 10978,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 10967,
                        "name": "ElementaryTypeName",
                        "src": "1045:6:41"
                      }
                    ],
                    "id": 10968,
                    "name": "VariableDeclaration",
                    "src": "1045:6:41"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 10978,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 10969,
                        "name": "ElementaryTypeName",
                        "src": "1053:7:41"
                      }
                    ],
                    "id": 10970,
                    "name": "VariableDeclaration",
                    "src": "1053:7:41"
                  }
                ],
                "id": 10971,
                "name": "ParameterList",
                "src": "1044:17:41"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_keepAddress",
                      "scope": 10978,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 10972,
                        "name": "ElementaryTypeName",
                        "src": "1088:7:41"
                      }
                    ],
                    "id": 10973,
                    "name": "VariableDeclaration",
                    "src": "1088:20:41"
                  }
                ],
                "id": 10974,
                "name": "ParameterList",
                "src": "1087:22:41"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 10974
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 10895,
                          "type": "address",
                          "value": "keepAddress"
                        },
                        "id": 10975,
                        "name": "Identifier",
                        "src": "1127:11:41"
                      }
                    ],
                    "id": 10976,
                    "name": "Return",
                    "src": "1120:18:41"
                  }
                ],
                "id": 10977,
                "name": "Block",
                "src": "1110:35:41"
              }
            ],
            "id": 10978,
            "name": "FunctionDefinition",
            "src": "1021:124:41"
          }
        ],
        "id": 10979,
        "name": "ContractDefinition",
        "src": "95:1052:41"
      }
    ],
    "id": 10980,
    "name": "SourceUnit",
    "src": "0:1148:41"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.17+commit.d19bba13.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.3.4",
  "updatedAt": "2021-11-23T11:52:09.369Z",
  "devdoc": {
    "methods": {
      "approvedToLog(address)": {
        "details": "checks tbtcDepositToken to see if the caller represents                     an existing deposit.                     We don't require this, so deposits are not bricked if the system borks.",
        "params": {
          "_caller": "The address of the calling contract."
        },
        "return": "True if approved, otherwise false."
      },
      "beginCollateralizationThresholdsUpdate(uint16,uint16,uint16)": {
        "details": "This can be finalized by calling `finalizeCollateralizationThresholdsUpdate`         Anytime after `governanceTimeDelay` has elapsed.",
        "params": {
          "_initialCollateralizedPercent": "default signing bond percent for new deposits",
          "_severelyUndercollateralizedThresholdPercent": "second undercollateralization trigger",
          "_undercollateralizedThresholdPercent": "first undercollateralization trigger"
        }
      },
      "beginEthBtcPriceFeedAddition(address)": {
        "details": "This can be finalized by calling `finalizeEthBtcPriceFeedAddition`      anytime after `priceFeedGovernanceTimeDelay` has elapsed."
      },
      "beginKeepFactoriesUpdate(address,address,address)": {
        "details": "It can be finalized by calling `finalizeKeepFactoriesUpdate`      any time after `governanceTimeDelay` has elapsed. This can be      called more than once until finalized to reset the values and      timer. An update can only be initialized before      `keepFactoriesUpgradeabilityPeriod` elapses after system initialization;      after that, no further updates can be initialized, though any pending      update can be finalized. All calls must set all three properties to      their desired value; leaving a value as 0, even if it was previously      set, will update that value to be 0. ETH-bond-only factory or the      strategy are allowed to be set as zero addresses.",
        "params": {
          "_factorySelector": "Address of the keep factory selection strategy.",
          "_fullyBackedFactory": "Address of the ETH-bond-only-based factory.",
          "_keepStakedFactory": "Address of the KEEP staked based factory."
        }
      },
      "beginLotSizesUpdate(uint64[])": {
        "details": "Lot size array should always contain 10**8 satoshis (1 BTC) and         cannot contain values less than 50000 satoshis (0.0005 BTC) or         greater than 10**10 satoshis (100 BTC). Lot size array must not         have duplicates and it must be sorted.         This can be finalized by calling `finalizeLotSizesUpdate`         anytime after `governanceTimeDelay` has elapsed.",
        "params": {
          "_lotSizes": "Array of allowed lot sizes."
        }
      },
      "beginSignerFeeDivisorUpdate(uint16)": {
        "details": "This can be finalized by calling `finalizeSignerFeeDivisorUpdate`         Anytime after `governanceTimeDelay` has elapsed.",
        "params": {
          "_signerFeeDivisor": "The signer fee divisor."
        }
      },
      "fetchBitcoinPrice()": {
        "details": "Override TBTCSystem.fetchBitcoinPrice, don't call out to the price feed."
      },
      "finalizeCollateralizationThresholdsUpdate()": {
        "details": "`beginCollateralizationThresholdsUpdate` must be called first, once `governanceTimeDelay`       has passed, this function can be called to set the collateralization thresholds to the       value set in `beginCollateralizationThresholdsUpdate`"
      },
      "finalizeEthBtcPriceFeedAddition()": {
        "details": "`beginEthBtcPriceFeedAddition` must be called first; once      `ethBtcPriceFeedAdditionInitiated` has passed, this function can be      called to append a new price feed."
      },
      "finalizeKeepFactoriesUpdate()": {
        "details": "`beginKeepFactoriesUpdate` must be called first; once      `governanceTimeDelay` has passed, this function can be called to      set factories addresses to the values set in `beginKeepFactoriesUpdate`."
      },
      "finalizeLotSizesUpdate()": {
        "details": "`beginLotSizesUpdate` must be called first, once `governanceTimeDelay`       has passed, this function can be called to set the lot sizes to the       value set in `beginLotSizesUpdate`"
      },
      "finalizeSignerFeeDivisorUpdate()": {
        "details": "`beginSignerFeeDivisorUpdate` must be called first, once `governanceTimeDelay`       has passed, this function can be called to set the signer fee divisor to the       value set in `beginSignerFeeDivisorUpdate`"
      },
      "getAllowNewDeposits()": {
        "return": "True if new deposits should be allowed by the emergency pause button"
      },
      "getAllowedLotSizes()": {
        "return": "Uint64 array of allowed lot sizes"
      },
      "getMaximumLotSize()": {
        "return": "The largest lot size, in satoshis."
      },
      "getMinimumLotSize()": {
        "return": "The lowest lot size, in satoshis."
      },
      "getNewDepositFeeEstimate()": {
        "return": "Uint256 estimate."
      },
      "getSignerFeeDivisor()": {
        "return": "The signer fee divisor."
      },
      "initialize(address,address,address,address,address,address,address,uint16,uint16)": {
        "details": "Only the Deposit factory should call this, and only once.",
        "params": {
          "_defaultKeepFactory": "ECDSA keep factory backed by KEEP stake.",
          "_depositFactory": "Deposit Factory. More info in `DepositFactory`.",
          "_feeRebateToken": "FeeRebateToken (FRT). More info in `FeeRebateToken`.",
          "_keepSize": "Signing group size.",
          "_keepThreshold": "Signing group honesty threshold.",
          "_masterDepositAddress": "Master Deposit address. More info in `Deposit`.",
          "_tbtcDepositToken": "TBTCDepositToken (TDT). More info in `TBTCDepositToken`.",
          "_tbtcToken": "TBTCToken. More info in `TBTCToken`."
        }
      },
      "isAllowedLotSize(uint64)": {
        "params": {
          "_requestedLotSizeSatoshis": "Lot size to check."
        },
        "return": "True if lot size is allowed, false otherwise."
      },
      "isOwner()": {
        "details": "Returns true if the caller is the current owner."
      },
      "logCourtesyCalled()": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logCreated(address)": {
        "details": "We append the sender, which is the deposit contract that called.",
        "params": {
          "_keepAddress": "The address of the associated keep."
        },
        "return": "True if successful, else revert."
      },
      "logExitedCourtesyCall()": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logFraudDuringSetup()": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logFunded(bytes32)": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logFunderRequestedAbort(bytes)": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logGotRedemptionSignature(bytes32,bytes32,bytes32)": {
        "details": "We append the sender, which is the deposit contract that called.",
        "params": {
          "_digest": "signed digest.",
          "_r": "signature r value.",
          "_s": "signature s value."
        }
      },
      "logLiquidated()": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logRedeemed(bytes32)": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logRedemptionRequested(address,bytes32,uint256,bytes,uint256,bytes)": {
        "details": "This is the only event without an explicit timestamp.",
        "params": {
          "_digest": "The calculated sighash digest.",
          "_outpoint": "The 36 byte outpoint.",
          "_redeemerOutputScript": "The redeemer's length-prefixed output script.",
          "_requestedFee": "The requester or bump-system specified fee.",
          "_requester": "The ethereum address of the requester.",
          "_utxoValue": "The size of the utxo in sat."
        },
        "return": "True if successful, else revert."
      },
      "logRegisteredPubkey(bytes32,bytes32)": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logSetupFailed()": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logStartedLiquidation(bool)": {
        "details": "We append the sender, which is the deposit contract that called.",
        "params": {
          "_wasFraud": "True if liquidating for fraud."
        }
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "refreshMinimumBondableValue()": {
        "details": "It is recommended to call this function on tBTC initialization and after minimum lot size update."
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner.     * > Note: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    }
  },
  "userdoc": {
    "methods": {
      "approvedToLog(address)": {
        "notice": "Checks if an address is an allowed logger."
      },
      "beginCollateralizationThresholdsUpdate(uint16,uint16,uint16)": {
        "notice": "Set the system collateralization levels"
      },
      "beginEthBtcPriceFeedAddition(address)": {
        "notice": "Add a new ETH/BTC price feed contract to the priecFeed."
      },
      "beginKeepFactoriesUpdate(address,address,address)": {
        "notice": "Sets the addresses of the KEEP-staked ECDSA keep factory,         ETH-only-backed ECDSA keep factory and the selection strategy         that will choose between the two factories for new deposits.         When the ETH-only-backed factory and strategy are not set TBTCSystem         will use KEEP-staked factory. When both factories and strategy         are set, TBTCSystem load balances between two factories based on         the selection strategy."
      },
      "beginLotSizesUpdate(uint64[])": {
        "notice": "Set the allowed deposit lot sizes."
      },
      "beginSignerFeeDivisorUpdate(uint16)": {
        "notice": "Set the system signer fee divisor."
      },
      "emergencyPauseNewDeposits()": {
        "notice": "One-time-use emergency function to disallow future deposit creation for 10 days."
      },
      "finalizeCollateralizationThresholdsUpdate()": {
        "notice": "Finish setting the system collateralization levels"
      },
      "finalizeEthBtcPriceFeedAddition()": {
        "notice": "Finish adding a new price feed contract to the priceFeed."
      },
      "finalizeKeepFactoriesUpdate()": {
        "notice": "Finish setting addresses of the KEEP-staked ECDSA keep factory,         ETH-only-backed ECDSA keep factory, and the selection strategy         that will choose between the two factories for new deposits."
      },
      "finalizeLotSizesUpdate()": {
        "notice": "Finish setting the accepted system lot sizes."
      },
      "finalizeSignerFeeDivisorUpdate()": {
        "notice": "Finish setting the system signer fee divisor."
      },
      "getAllowNewDeposits()": {
        "notice": "Returns whether new deposits should be allowed."
      },
      "getAllowedLotSizes()": {
        "notice": "Gets the allowed lot sizes"
      },
      "getGovernanceTimeDelay()": {
        "notice": "Returns the time delay used for governance actions except for         price feed additions."
      },
      "getInitialCollateralizedPercent()": {
        "notice": "Get the system initial collateralized level for new deposits."
      },
      "getKeepFactoriesUpgradeabilityPeriod()": {
        "notice": "Returns the time period when keep factories upgrades are allowed."
      },
      "getMaximumLotSize()": {
        "notice": "Return the largest lot size currently enabled for deposits."
      },
      "getMinimumLotSize()": {
        "notice": "Return the lowest lot size currently enabled for deposits."
      },
      "getNewDepositFeeEstimate()": {
        "notice": "Gets a fee estimate for creating a new Deposit."
      },
      "getPriceFeedGovernanceTimeDelay()": {
        "notice": "Returns the time delay used for price feed addition governance         actions."
      },
      "getRemainingCollateralizationThresholdsUpdateTime()": {
        "notice": "Get the time remaining until the collateralization thresholds can be updated."
      },
      "getRemainingEthBtcPriceFeedAdditionTime()": {
        "notice": "Get the time remaining until the signer fee divisor can be updated."
      },
      "getRemainingKeepFactoriesUpdateTime()": {
        "notice": "Get the time remaining until the Keep ETH-only-backed ECDSA keep         factory and the selection strategy that will choose between it         and the KEEP-backed factory can be updated."
      },
      "getRemainingKeepFactoriesUpgradeabilityTime()": {
        "notice": "Get the time remaining until Keep factories can no longer be updated."
      },
      "getRemainingLotSizesUpdateTime()": {
        "notice": "Get the time remaining until the lot sizes can be updated."
      },
      "getRemainingSignerFeeDivisorUpdateTime()": {
        "notice": "Get the time remaining until the signer fee divisor can be updated."
      },
      "getSeverelyUndercollateralizedThresholdPercent()": {
        "notice": "Get the system severe undercollateralization level for new deposits"
      },
      "getSignerFeeDivisor()": {
        "notice": "Gets the system signer fee divisor."
      },
      "getUndercollateralizedThresholdPercent()": {
        "notice": "Get the system undercollateralization level for new deposits"
      },
      "initialize(address,address,address,address,address,address,address,uint16,uint16)": {
        "notice": "Initialize contracts"
      },
      "isAllowedLotSize(uint64)": {
        "notice": "Check if a lot size is allowed."
      },
      "logCourtesyCalled()": {
        "notice": "Fires a CourtesyCalled event."
      },
      "logCreated(address)": {
        "notice": "Fires a Created event."
      },
      "logExitedCourtesyCall()": {
        "notice": "Fires a ExitedCourtesyCall event"
      },
      "logFraudDuringSetup()": {
        "notice": "Fires a FraudDuringSetup event."
      },
      "logFunded(bytes32)": {
        "notice": "Fires a Funded event."
      },
      "logFunderRequestedAbort(bytes)": {
        "notice": "Fires a FunderAbortRequested event."
      },
      "logGotRedemptionSignature(bytes32,bytes32,bytes32)": {
        "notice": "Fires a GotRedemptionSignature event."
      },
      "logLiquidated()": {
        "notice": "Fires a Liquidated event"
      },
      "logRedeemed(bytes32)": {
        "notice": "Fires a Redeemed event"
      },
      "logRedemptionRequested(address,bytes32,uint256,bytes,uint256,bytes)": {
        "notice": "Fires a RedemptionRequested event."
      },
      "logRegisteredPubkey(bytes32,bytes32)": {
        "notice": "Fires a RegisteredPubkey event."
      },
      "logSetupFailed()": {
        "notice": "Fires a SetupFailed event."
      },
      "logStartedLiquidation(bool)": {
        "notice": "Fires a StartedLiquidation event."
      },
      "refreshMinimumBondableValue()": {
        "notice": "Refreshes the minimum bondable value required from the operator to join the sortition pool for tBTC. The minimum bondable value is equal to the current minimum lot size collateralized 150% multiplied by the current BTC price."
      },
      "resumeNewDeposits()": {
        "notice": "Anyone can reactivate deposit creations after the pause duration is over."
      }
    }
  }
}