{
  "_format": "hh-sol-artifact-1",
  "contractName": "SafeCall_Succeeds_Invariants",
  "sourceName": "contracts/test/invariants/SafeCall.t.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "log",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "log_address",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "val",
          "type": "uint256[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "int256[]",
          "name": "val",
          "type": "int256[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "val",
          "type": "address[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "log_bytes",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "log_bytes32",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "name": "log_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "val",
          "type": "address"
        }
      ],
      "name": "log_named_address",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "val",
          "type": "uint256[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256[]",
          "name": "val",
          "type": "int256[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "val",
          "type": "address[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "val",
          "type": "bytes"
        }
      ],
      "name": "log_named_bytes",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "val",
          "type": "bytes32"
        }
      ],
      "name": "log_named_bytes32",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "val",
          "type": "int256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "decimals",
          "type": "uint256"
        }
      ],
      "name": "log_named_decimal_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "val",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "decimals",
          "type": "uint256"
        }
      ],
      "name": "log_named_decimal_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "val",
          "type": "int256"
        }
      ],
      "name": "log_named_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "val",
          "type": "string"
        }
      ],
      "name": "log_named_string",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "val",
          "type": "uint256"
        }
      ],
      "name": "log_named_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "log_string",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "log_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "logs",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "IS_TEST",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "excludeArtifacts",
      "outputs": [
        {
          "internalType": "string[]",
          "name": "excludedArtifacts_",
          "type": "string[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "excludeContracts",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "excludedContracts_",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "excludeSenders",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "excludedSenders_",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "failed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "invariant_callWithMinGas_alwaysForwardsMinGas_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "minGas",
          "type": "uint64"
        }
      ],
      "name": "performSafeCallMinGas",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "setUp",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetArtifactSelectors",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "bytes4[]",
              "name": "selectors",
              "type": "bytes4[]"
            }
          ],
          "internalType": "struct StdInvariant.FuzzSelector[]",
          "name": "targetedArtifactSelectors_",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetArtifacts",
      "outputs": [
        {
          "internalType": "string[]",
          "name": "targetedArtifacts_",
          "type": "string[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetContracts",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "targetedContracts_",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetSelectors",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "bytes4[]",
              "name": "selectors",
              "type": "bytes4[]"
            }
          ],
          "internalType": "struct StdInvariant.FuzzSelector[]",
          "name": "targetedSelectors_",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetSenders",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "targetedSenders_",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405260008054600160ff19918216811790925560048054909116909117905534801561002d57600080fd5b50611e5f8061003d6000396000f3fe6080604052600436106100d25760003560e01c8063916a17c61161007f578063ba414fa611610059578063ba414fa6146101c4578063d3c4e5c7146101e9578063e20c9f71146101fe578063fa7626d41461021357600080fd5b8063916a17c6146101875780639741e3b31461019c578063b5508aa9146101af57600080fd5b80633f7286f4116100b05780633f7286f41461012e57806366d9a9a01461014357806385226c811461016557600080fd5b80630a9254e4146100d75780631ed7831c146100ee5780633e5e3c2314610119575b600080fd5b3480156100e357600080fd5b506100ec61022d565b005b3480156100fa57600080fd5b506101036103f7565b6040516101109190610f7d565b60405180910390f35b34801561012557600080fd5b50610103610466565b34801561013a57600080fd5b506101036104d3565b34801561014f57600080fd5b50610158610540565b6040516101109190610fd7565b34801561017157600080fd5b5061017a610651565b6040516101109190611143565b34801561019357600080fd5b50610158610721565b6100ec6101aa3660046111c3565b610829565b3480156101bb57600080fd5b5061017a610853565b3480156101d057600080fd5b506101d9610923565b6040519015158152602001610110565b3480156101f557600080fd5b506100ec610a83565b34801561020a57600080fd5b50610103610b57565b34801561021f57600080fd5b506000546101d99060ff1681565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c600060405161025f90610f70565b73ffffffffffffffffffffffffffffffffffffffff909216825215156020820152604001604051809103906000f08015801561029f573d6000803e3d6000fd5b50601b80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416178255600f805460018181019092557f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180548316301790558254600e8054928301815560009081527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd909201805491861691909316179091559054604080517fc88a5e6d0000000000000000000000000000000000000000000000000000000081529190931660048201526fffffffffffffffffffffffffffffffff60248201529151737109709ecfa91a80626ff3989d68f67f5b1dd12d9263c88a5e6d92604480830193919282900301818387803b1580156103dd57600080fd5b505af11580156103f1573d6000803e3d6000fd5b50505050565b6060600d80548060200260200160405190810160405280929190818152602001828054801561045c57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610431575b5050505050905090565b6060600f80548060200260200160405190810160405280929190818152602001828054801561045c5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610431575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801561045c5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610431575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101561064857600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561063057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116105dd5790505b50505050508152505081526020019060010190610564565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101561064857838290600052602060002001805461069490611222565b80601f01602080910402602001604051908101604052809291908181526020018280546106c090611222565b801561070d5780601f106106e25761010080835404028352916020019161070d565b820191906000526020600020905b8154815290600101906020018083116106f057829003601f168201915b505050505081526020019060010190610675565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101561064857600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561081157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116107be5790505b50505050508152505081526020019060010190610745565b61084e828267ffffffffffffffff163460405180602001604052806000815250610bc4565b505050565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101561064857838290600052602060002001805461089690611222565b80601f01602080910402602001604051908101604052809291908181526020018280546108c290611222565b801561090f5780601f106108e45761010080835404028352916020019161090f565b820191906000526020600020905b8154815290600101906020018083116108f257829003601f168201915b505050505081526020019060010190610877565b60008054610100900460ff16156109435750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610a7e5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c65640000000000000000000000000000000000000000000000000000828401528251808303840181526060830190935260009290916109e8917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001611275565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610a20916112bd565b6000604051808303816000865af19150503d8060008114610a5d576040519150601f19603f3d011682016040523d82523d6000602084013e610a62565b606091505b5091505080806020019051810190610a7a91906112d9565b9150505b919050565b601b54604080517f82f161ca0000000000000000000000000000000000000000000000000000000081529051610b559273ffffffffffffffffffffffffffffffffffffffff16916382f161ca9160048083019260209291908290030181865afa158015610af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b189190611302565b60006040518060400160405280601781526020017f6e6f206661696c65642063616c6c7320616c6c6f776564000000000000000000815250610c22565b565b6060600c80548060200260200160405190810160405280929190818152602001828054801561045c5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610431575050505050905090565b6000806000610bd4866000610c6a565b905080610c0a576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b81831461084e577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610c58919061131b565b60405180910390a161084e8383610c88565b600080603f83619c4001026040850201603f5a021015949350505050565b808214610df0577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610d149060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a160408051818152600a818301527f202045787065637465640000000000000000000000000000000000000000000060608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a818301527f2020202041637475616c0000000000000000000000000000000000000000000060608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a1610df0610df4565b5050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610f425760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ec39291602001611275565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610efb916112bd565b6000604051808303816000865af19150503d8060008114610f38576040519150601f19603f3d011682016040523d82523d6000602084013e610f3d565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b610af08061136383390190565b6020808252825182820181905260009190848201906040850190845b81811015610fcb57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610f99565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156110be578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00186528251805173ffffffffffffffffffffffffffffffffffffffff168552880151888501889052805188860181905290890190839060608701905b808310156110a95783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611067565b50978a01979550505091870191600101610fff565b50919998505050505050505050565b60005b838110156110e85781810151838201526020016110d0565b838111156103f15750506000910152565b600081518084526111118160208601602086016110cd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156111b6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526111a48583516110f9565b9450928501929085019060010161116a565b5092979650505050505050565b600080604083850312156111d657600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146111fa57600080fd5b9150602083013567ffffffffffffffff8116811461121757600080fd5b809150509250929050565b600181811c9082168061123657607f821691505b60208210810361126f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516112af8160048501602087016110cd565b919091016004019392505050565b600082516112cf8184602087016110cd565b9190910192915050565b6000602082840312156112eb57600080fd5b815180151581146112fb57600080fd5b9392505050565b60006020828403121561131457600080fd5b5051919050565b60408152600560408201527f4572726f7200000000000000000000000000000000000000000000000000000060608201526080602082015260006112fb60808301846110f956fe60a060405234801561001057600080fd5b50604051610af0380380610af083398101604081905261002f9161005a565b600080546001600160a01b0319166001600160a01b03939093169290921790915515156080526100a5565b6000806040838503121561006d57600080fd5b82516001600160a01b038116811461008457600080fd5b6020840151909250801515811461009a57600080fd5b809150509250929050565b608051610a226100ce600039600081816101310152818161034c01526103890152610a226000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806382f161ca1461003b578063e0f8035b14610056575b600080fd5b61004460015481565b60405190815260200160405180910390f35b61006961006436600461079d565b61006b565b005b60005473ffffffffffffffffffffffffffffffffffffffff90811690634c63e5629084163b1580156100be57506a636f6e736f6c652e6c6f6773ffffffffffffffffffffffffffffffffffffffff851614155b6040518263ffffffff1660e01b81526004016100de911515815260200190565b60006040518083038186803b1580156100f657600080fd5b505afa15801561010a573d6000803e3d6000fd5b5050505061012d8367ffffffffffffffff166109c465ffffffffffff80166103d5565b92507f0000000000000000000000000000000000000000000000000000000000000000156101945761018d67ffffffffffffffff808616908516603f610174876040610843565b61017e91906108a2565b67ffffffffffffffff166103d5565b93506101ee565b6101eb67ffffffffffffffff8516603f6101af866040610843565b6101b991906108a2565b6101c590619c406108c9565b6101d1906103e86108c9565b67ffffffffffffffff1667ffffffffffffffff80166103d5565b93505b600080546040517f08e4e11600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260ff8516602483015267ffffffffffffffff871660448301526080606483015260848201939093529116906308e4e1169060a401600060405180830381600087803b15801561028357600080fd5b505af1158015610297573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff8616602482015267ffffffffffffffff8781166044808401919091528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9741e3b300000000000000000000000000000000000000000000000000000000179052600093506103409250339188169060ff86169061042a565b905080801561036c57507f00000000000000000000000000000000000000000000000000000000000000005b156103875760018054906000610381836108f5565b91905055505b7f00000000000000000000000000000000000000000000000000000000000000001580156103b3575080155b156103ce57600180549060006103c8836108f5565b91905055505b5050505050565b60006103e2848484610444565b90506104236040518060400160405280600c81526020017f426f756e6420526573756c74000000000000000000000000000000000000000081525082610680565b9392505050565b600080600080845160208601878a8af19695505050505050565b6000818311156104da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840160405180910390fd5b8284101580156104ea5750818411155b156104f6575082610423565b6000610502848461092d565b61050d906001610944565b90506003851115801561051f57508481115b156105365761052e8585610944565b915050610423565b61056160037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61092d565b85101580156105985750610595857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61092d565b81115b156105d1576105c7857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61092d565b61052e908461092d565b828511156106275760006105e5848761092d565b905060006105f3838361095c565b90508060000361060857849350505050610423565b60016106148288610944565b61061e919061092d565b93505050610678565b8385101561067857600061063b868661092d565b90506000610649838361095c565b90508060000361065e57859350505050610423565b610668818661092d565b610673906001610944565b935050505b509392505050565b60006a636f6e736f6c652e6c6f6773ffffffffffffffffffffffffffffffffffffffff1683836040516024016106b79291906109a0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb60e72cc000000000000000000000000000000000000000000000000000000001790525161073891906109f9565b600060405180830381855afa9150503d8060008114610773576040519150601f19603f3d011682016040523d82523d6000602084013e610778565b606091505b505050505050565b803567ffffffffffffffff8116811461079857600080fd5b919050565b600080600080608085870312156107b357600080fd5b6107bc85610780565b93506107ca60208601610780565b9250604085013573ffffffffffffffffffffffffffffffffffffffff811681146107f357600080fd5b9150606085013560ff8116811461080957600080fd5b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff8083168185168183048111821515161561086a5761086a610814565b02949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff808416806108bd576108bd610873565b92169190910492915050565b600067ffffffffffffffff8083168185168083038211156108ec576108ec610814565b01949350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361092657610926610814565b5060010190565b60008282101561093f5761093f610814565b500390565b6000821982111561095757610957610814565b500190565b60008261096b5761096b610873565b500690565b60005b8381101561098b578181015183820152602001610973565b8381111561099a576000848401525b50505050565b60408152600083518060408401526109bf816060850160208801610970565b602083019390935250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601606001919050565b60008251610a0b818460208701610970565b919091019291505056fea164736f6c634300080f000aa164736f6c634300080f000a",
  "deployedBytecode": "0x6080604052600436106100d25760003560e01c8063916a17c61161007f578063ba414fa611610059578063ba414fa6146101c4578063d3c4e5c7146101e9578063e20c9f71146101fe578063fa7626d41461021357600080fd5b8063916a17c6146101875780639741e3b31461019c578063b5508aa9146101af57600080fd5b80633f7286f4116100b05780633f7286f41461012e57806366d9a9a01461014357806385226c811461016557600080fd5b80630a9254e4146100d75780631ed7831c146100ee5780633e5e3c2314610119575b600080fd5b3480156100e357600080fd5b506100ec61022d565b005b3480156100fa57600080fd5b506101036103f7565b6040516101109190610f7d565b60405180910390f35b34801561012557600080fd5b50610103610466565b34801561013a57600080fd5b506101036104d3565b34801561014f57600080fd5b50610158610540565b6040516101109190610fd7565b34801561017157600080fd5b5061017a610651565b6040516101109190611143565b34801561019357600080fd5b50610158610721565b6100ec6101aa3660046111c3565b610829565b3480156101bb57600080fd5b5061017a610853565b3480156101d057600080fd5b506101d9610923565b6040519015158152602001610110565b3480156101f557600080fd5b506100ec610a83565b34801561020a57600080fd5b50610103610b57565b34801561021f57600080fd5b506000546101d99060ff1681565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c600060405161025f90610f70565b73ffffffffffffffffffffffffffffffffffffffff909216825215156020820152604001604051809103906000f08015801561029f573d6000803e3d6000fd5b50601b80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416178255600f805460018181019092557f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180548316301790558254600e8054928301815560009081527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd909201805491861691909316179091559054604080517fc88a5e6d0000000000000000000000000000000000000000000000000000000081529190931660048201526fffffffffffffffffffffffffffffffff60248201529151737109709ecfa91a80626ff3989d68f67f5b1dd12d9263c88a5e6d92604480830193919282900301818387803b1580156103dd57600080fd5b505af11580156103f1573d6000803e3d6000fd5b50505050565b6060600d80548060200260200160405190810160405280929190818152602001828054801561045c57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610431575b5050505050905090565b6060600f80548060200260200160405190810160405280929190818152602001828054801561045c5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610431575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801561045c5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610431575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101561064857600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561063057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116105dd5790505b50505050508152505081526020019060010190610564565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101561064857838290600052602060002001805461069490611222565b80601f01602080910402602001604051908101604052809291908181526020018280546106c090611222565b801561070d5780601f106106e25761010080835404028352916020019161070d565b820191906000526020600020905b8154815290600101906020018083116106f057829003601f168201915b505050505081526020019060010190610675565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101561064857600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561081157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116107be5790505b50505050508152505081526020019060010190610745565b61084e828267ffffffffffffffff163460405180602001604052806000815250610bc4565b505050565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101561064857838290600052602060002001805461089690611222565b80601f01602080910402602001604051908101604052809291908181526020018280546108c290611222565b801561090f5780601f106108e45761010080835404028352916020019161090f565b820191906000526020600020905b8154815290600101906020018083116108f257829003601f168201915b505050505081526020019060010190610877565b60008054610100900460ff16156109435750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610a7e5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c65640000000000000000000000000000000000000000000000000000828401528251808303840181526060830190935260009290916109e8917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001611275565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610a20916112bd565b6000604051808303816000865af19150503d8060008114610a5d576040519150601f19603f3d011682016040523d82523d6000602084013e610a62565b606091505b5091505080806020019051810190610a7a91906112d9565b9150505b919050565b601b54604080517f82f161ca0000000000000000000000000000000000000000000000000000000081529051610b559273ffffffffffffffffffffffffffffffffffffffff16916382f161ca9160048083019260209291908290030181865afa158015610af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b189190611302565b60006040518060400160405280601781526020017f6e6f206661696c65642063616c6c7320616c6c6f776564000000000000000000815250610c22565b565b6060600c80548060200260200160405190810160405280929190818152602001828054801561045c5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610431575050505050905090565b6000806000610bd4866000610c6a565b905080610c0a576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b81831461084e577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610c58919061131b565b60405180910390a161084e8383610c88565b600080603f83619c4001026040850201603f5a021015949350505050565b808214610df0577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610d149060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a160408051818152600a818301527f202045787065637465640000000000000000000000000000000000000000000060608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a818301527f2020202041637475616c0000000000000000000000000000000000000000000060608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a1610df0610df4565b5050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610f425760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ec39291602001611275565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610efb916112bd565b6000604051808303816000865af19150503d8060008114610f38576040519150601f19603f3d011682016040523d82523d6000602084013e610f3d565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b610af08061136383390190565b6020808252825182820181905260009190848201906040850190845b81811015610fcb57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610f99565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156110be578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00186528251805173ffffffffffffffffffffffffffffffffffffffff168552880151888501889052805188860181905290890190839060608701905b808310156110a95783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611067565b50978a01979550505091870191600101610fff565b50919998505050505050505050565b60005b838110156110e85781810151838201526020016110d0565b838111156103f15750506000910152565b600081518084526111118160208601602086016110cd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156111b6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526111a48583516110f9565b9450928501929085019060010161116a565b5092979650505050505050565b600080604083850312156111d657600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146111fa57600080fd5b9150602083013567ffffffffffffffff8116811461121757600080fd5b809150509250929050565b600181811c9082168061123657607f821691505b60208210810361126f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516112af8160048501602087016110cd565b919091016004019392505050565b600082516112cf8184602087016110cd565b9190910192915050565b6000602082840312156112eb57600080fd5b815180151581146112fb57600080fd5b9392505050565b60006020828403121561131457600080fd5b5051919050565b60408152600560408201527f4572726f7200000000000000000000000000000000000000000000000000000060608201526080602082015260006112fb60808301846110f956fe60a060405234801561001057600080fd5b50604051610af0380380610af083398101604081905261002f9161005a565b600080546001600160a01b0319166001600160a01b03939093169290921790915515156080526100a5565b6000806040838503121561006d57600080fd5b82516001600160a01b038116811461008457600080fd5b6020840151909250801515811461009a57600080fd5b809150509250929050565b608051610a226100ce600039600081816101310152818161034c01526103890152610a226000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806382f161ca1461003b578063e0f8035b14610056575b600080fd5b61004460015481565b60405190815260200160405180910390f35b61006961006436600461079d565b61006b565b005b60005473ffffffffffffffffffffffffffffffffffffffff90811690634c63e5629084163b1580156100be57506a636f6e736f6c652e6c6f6773ffffffffffffffffffffffffffffffffffffffff851614155b6040518263ffffffff1660e01b81526004016100de911515815260200190565b60006040518083038186803b1580156100f657600080fd5b505afa15801561010a573d6000803e3d6000fd5b5050505061012d8367ffffffffffffffff166109c465ffffffffffff80166103d5565b92507f0000000000000000000000000000000000000000000000000000000000000000156101945761018d67ffffffffffffffff808616908516603f610174876040610843565b61017e91906108a2565b67ffffffffffffffff166103d5565b93506101ee565b6101eb67ffffffffffffffff8516603f6101af866040610843565b6101b991906108a2565b6101c590619c406108c9565b6101d1906103e86108c9565b67ffffffffffffffff1667ffffffffffffffff80166103d5565b93505b600080546040517f08e4e11600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260ff8516602483015267ffffffffffffffff871660448301526080606483015260848201939093529116906308e4e1169060a401600060405180830381600087803b15801561028357600080fd5b505af1158015610297573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff8616602482015267ffffffffffffffff8781166044808401919091528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9741e3b300000000000000000000000000000000000000000000000000000000179052600093506103409250339188169060ff86169061042a565b905080801561036c57507f00000000000000000000000000000000000000000000000000000000000000005b156103875760018054906000610381836108f5565b91905055505b7f00000000000000000000000000000000000000000000000000000000000000001580156103b3575080155b156103ce57600180549060006103c8836108f5565b91905055505b5050505050565b60006103e2848484610444565b90506104236040518060400160405280600c81526020017f426f756e6420526573756c74000000000000000000000000000000000000000081525082610680565b9392505050565b600080600080845160208601878a8af19695505050505050565b6000818311156104da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840160405180910390fd5b8284101580156104ea5750818411155b156104f6575082610423565b6000610502848461092d565b61050d906001610944565b90506003851115801561051f57508481115b156105365761052e8585610944565b915050610423565b61056160037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61092d565b85101580156105985750610595857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61092d565b81115b156105d1576105c7857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61092d565b61052e908461092d565b828511156106275760006105e5848761092d565b905060006105f3838361095c565b90508060000361060857849350505050610423565b60016106148288610944565b61061e919061092d565b93505050610678565b8385101561067857600061063b868661092d565b90506000610649838361095c565b90508060000361065e57859350505050610423565b610668818661092d565b610673906001610944565b935050505b509392505050565b60006a636f6e736f6c652e6c6f6773ffffffffffffffffffffffffffffffffffffffff1683836040516024016106b79291906109a0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb60e72cc000000000000000000000000000000000000000000000000000000001790525161073891906109f9565b600060405180830381855afa9150503d8060008114610773576040519150601f19603f3d011682016040523d82523d6000602084013e610778565b606091505b505050505050565b803567ffffffffffffffff8116811461079857600080fd5b919050565b600080600080608085870312156107b357600080fd5b6107bc85610780565b93506107ca60208601610780565b9250604085013573ffffffffffffffffffffffffffffffffffffffff811681146107f357600080fd5b9150606085013560ff8116811461080957600080fd5b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff8083168185168183048111821515161561086a5761086a610814565b02949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff808416806108bd576108bd610873565b92169190910492915050565b600067ffffffffffffffff8083168185168083038211156108ec576108ec610814565b01949350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361092657610926610814565b5060010190565b60008282101561093f5761093f610814565b500390565b6000821982111561095757610957610814565b500190565b60008261096b5761096b610873565b500690565b60005b8381101561098b578181015183820152602001610973565b8381111561099a576000848401525b50505050565b60408152600083518060408401526109bf816060850160208801610970565b602083019390935250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601606001919050565b60008251610a0b818460208701610970565b919091019291505056fea164736f6c634300080f000aa164736f6c634300080f000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
