{
  "_format": "hh-sol-artifact-1",
  "contractName": "ResourceMetering_Test",
  "sourceName": "contracts/test/ResourceMetering.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": "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"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_amount",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_blockDiff",
          "type": "uint256"
        }
      ],
      "name": "testFuzz_meter_largeBlockDiff_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_meter_denominatorEq1_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_meter_initialResourceParams_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_meter_updateNoGasDelta_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_meter_updateOneEmptyBlock_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_meter_updateParamsNoChange_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_meter_updateTenEmptyBlocks_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_meter_updateTwoEmptyBlocks_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_meter_useMax_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_meter_useMoreThanMax_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405260008054600160ff19918216811790925560048054909116909117905534801561002d57600080fd5b50614b058061003d6000396000f3fe60806040523480156200001157600080fd5b5060043610620001955760003560e01c806385226c8111620000e9578063b5508aa91162000097578063e20c9f71116200006e578063e20c9f7114620002a4578063fa7626d414620002ae578063fc41aa9614620002bc57600080fd5b8063b5508aa91462000275578063b715d3bd146200027f578063ba414fa6146200028957600080fd5b80639c641be211620000cc5780639c641be21462000257578063a8adc2b21462000261578063b388fd7d146200026b57600080fd5b806385226c811462000234578063916a17c6146200024d57600080fd5b80631ed7831c11620001475780633f7286f4116200012a5780633f7286f414620002075780635bc92698146200021157806366d9a9a0146200021b57600080fd5b80631ed7831c14620001db5780633e5e3c2314620001fd57600080fd5b806309928413116200017c5780630992841314620001bd5780630a9254e414620001c7578063143103b514620001d157600080fd5b8063024e2e1f146200019a57806306768b5814620001a6575b600080fd5b620001a4620002c6565b005b620001a4620001b7366004620029ee565b62000537565b620001a462000852565b620001a462000aae565b620001a462000b46565b620001e562000da2565b604051620001f4919062002a1d565b60405180910390f35b620001e562000e13565b620001e562000e82565b620001a462000ef1565b62000225620011b3565b604051620001f4919062002a79565b6200023e620012c8565b604051620001f4919062002ba2565b62000225620013a2565b620001a4620014ae565b620001a46200165e565b620001a4620018b1565b6200023e62001cd6565b620001a462001db0565b6200029362002005565b6040519015158152602001620001f4565b620001e56200216f565b600054620002939060ff1681565b620001a4620021de565b601b54737109709ecfa91a80626ff3989d68f67f5b1dd12d90631f7b4f3090620003149074010000000000000000000000000000000000000000900467ffffffffffffffff16600162002c8b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401600060405180830381600087803b1580156200036f57600080fd5b505af115801562000384573d6000803e3d6000fd5b5050601b546040517fb4b64fbb0000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063b4b64fbb9150602401600060405180830381600087803b158015620003f557600080fd5b505af11580156200040a573d6000803e3d6000fd5b505050506000806000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000481573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a7919062002cdb565b925092509250620004cf836fffffffffffffffffffffffffffffffff16633b9aca00620026d3565b620004e68267ffffffffffffffff166000620026d3565b601b54620005329067ffffffffffffffff8084169162000522917401000000000000000000000000000000000000000090910416600162002c8b565b67ffffffffffffffff16620026d3565b505050565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081527104fa2a8a495e73bfd4a2672e8f31d5dfa64382106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620005af57600080fd5b505afa158015620005c4573d6000803e3d6000fd5b505050506000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cc731b026040518163ffffffff1660e01b815260040160c060405180830381865afa15801562000638573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200065e919062002d53565b90506000816020015160ff16826000015163ffffffff1662000681919062002e56565b602083015190915060ff16737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e562620006b2838562002e80565b67ffffffffffffffff168767ffffffffffffffff16106040518263ffffffff1660e01b8152600401620006e9911515815260200190565b60006040518083038186803b1580156200070257600080fd5b505afa15801562000717573d6000803e3d6000fd5b5050601b54737109709ecfa91a80626ff3989d68f67f5b1dd12d9250631f7b4f3091506200076990879074010000000000000000000000000000000000000000900467ffffffffffffffff1662002eb3565b6040518263ffffffff1660e01b81526004016200078891815260200190565b600060405180830381600087803b158015620007a357600080fd5b505af1158015620007b8573d6000803e3d6000fd5b5050601b546040517fb4b64fbb00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8916600482015273ffffffffffffffffffffffffffffffffffffffff909116925063b4b64fbb9150602401600060405180830381600087803b1580156200083257600080fd5b505af115801562000847573d6000803e3d6000fd5b505050505050505050565b601b54737109709ecfa91a80626ff3989d68f67f5b1dd12d90631f7b4f3090620008a09074010000000000000000000000000000000000000000900467ffffffffffffffff16600262002c8b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401600060405180830381600087803b158015620008fb57600080fd5b505af115801562000910573d6000803e3d6000fd5b5050601b546040517fb4b64fbb0000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063b4b64fbb9150602401600060405180830381600087803b1580156200098157600080fd5b505af115801562000996573d6000803e3d6000fd5b505050506000806000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000a0d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a33919062002cdb565b92509250925062000a5b836fffffffffffffffffffffffffffffffff16633b9aca00620026d3565b62000a728267ffffffffffffffff166000620026d3565b601b54620005329067ffffffffffffffff8084169162000522917401000000000000000000000000000000000000000090910416600262002c8b565b60405162000abc90620029c6565b604051809103906000f08015801562000ad9573d6000803e3d6000fd5b50601b805473ffffffffffffffffffffffffffffffffffffffff929092167fffffffff0000000000000000000000000000000000000000000000000000000090921691909117740100000000000000000000000000000000000000004367ffffffffffffffff1602179055565b601b54737109709ecfa91a80626ff3989d68f67f5b1dd12d90631f7b4f309062000b949074010000000000000000000000000000000000000000900467ffffffffffffffff16600a62002c8b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401600060405180830381600087803b15801562000bef57600080fd5b505af115801562000c04573d6000803e3d6000fd5b5050601b546040517fb4b64fbb0000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063b4b64fbb9150602401600060405180830381600087803b15801562000c7557600080fd5b505af115801562000c8a573d6000803e3d6000fd5b505050506000806000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000d01573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d27919062002cdb565b92509250925062000d4f836fffffffffffffffffffffffffffffffff16633b9aca00620026d3565b62000d668267ffffffffffffffff166000620026d3565b601b54620005329067ffffffffffffffff8084169162000522917401000000000000000000000000000000000000000090910416600a62002c8b565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000e0957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000ddd575b5050505050905090565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000e095760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000ddd575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000e095760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000ddd575050505050905090565b601b546040517fb4b64fbb0000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063b4b64fbb90602401600060405180830381600087803b15801562000f5e57600080fd5b505af115801562000f73573d6000803e3d6000fd5b505050506000806000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000fea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001010919062002cdb565b601b546040517fb4b64fbb00000000000000000000000000000000000000000000000000000000815260006004820152939650919450925073ffffffffffffffffffffffffffffffffffffffff169063b4b64fbb90602401600060405180830381600087803b1580156200108357600080fd5b505af115801562001098573d6000803e3d6000fd5b505050506000806000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401606060405180830381865afa1580156200110f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001135919062002cdb565b9250925092506200116b836fffffffffffffffffffffffffffffffff16876fffffffffffffffffffffffffffffffff16620026d3565b6200118b8267ffffffffffffffff168667ffffffffffffffff16620026d3565b620011ab8167ffffffffffffffff168567ffffffffffffffff16620026d3565b505050505050565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620012bf57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939491938583019392830182828015620012a657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620012525790505b50505050508152505081526020019060010190620011d7565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b82821015620012bf5783829060005260206000200180546200130e9062002ece565b80601f01602080910402602001604051908101604052809291908181526020018280546200133c9062002ece565b80156200138d5780601f1062001361576101008083540402835291602001916200138d565b820191906000526020600020905b8154815290600101906020018083116200136f57829003601f168201915b505050505081526020019060010190620012ec565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620012bf57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156200149557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620014415790505b50505050508152505081526020019060010190620013c6565b6000806000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401606060405180830381865afa15801562001521573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001547919062002cdb565b9250925092506000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cc731b026040518163ffffffff1660e01b815260040160c060405180830381865afa158015620015bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015e3919062002d53565b90506200160d846fffffffffffffffffffffffffffffffff16826060015163ffffffff16620026d3565b620016248367ffffffffffffffff166000620026d3565b601b54620016589067ffffffffffffffff8085169174010000000000000000000000000000000000000000900416620026d3565b50505050565b601b54604080517fcc731b02000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163cc731b029160048083019260c09291908290030181865afa158015620016cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016f5919062002d53565b90506000816020015160ff16826000015163ffffffff1662001718919062002e56565b60208301516040517ff28dceb300000000000000000000000000000000000000000000000000000000815291925060ff1690737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390620017cb906004016020808252603e908201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260408201527f6520676173207468616e20617661696c61626c6520676173206c696d69740000606082015260800190565b600060405180830381600087803b158015620017e657600080fd5b505af1158015620017fb573d6000803e3d6000fd5b5050601b5473ffffffffffffffffffffffffffffffffffffffff16915063b4b64fbb90506200182b838562002e80565b6200183890600162002c8b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401600060405180830381600087803b1580156200189357600080fd5b505af1158015620018a8573d6000803e3d6000fd5b50505050505050565b601b54604080517fcc731b02000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163cc731b029160048083019260c09291908290030181865afa15801562001922573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001948919062002d53565b90506000816020015160ff16826000015163ffffffff166200196b919062002e56565b6020830151601b5491925060ff169073ffffffffffffffffffffffffffffffffffffffff1663b4b64fbb620019a1838562002e80565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401600060405180830381600087803b158015620019fc57600080fd5b505af115801562001a11573d6000803e3d6000fd5b505050506000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401606060405180830381865afa15801562001a85573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001aab919062002cdb565b50915062001acb905067ffffffffffffffff821662000522848662002e80565b601b54737109709ecfa91a80626ff3989d68f67f5b1dd12d90631f7b4f309062001b199074010000000000000000000000000000000000000000900467ffffffffffffffff16600162002c8b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401600060405180830381600087803b15801562001b7457600080fd5b505af115801562001b89573d6000803e3d6000fd5b5050601b546040517fb4b64fbb0000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063b4b64fbb9150602401600060405180830381600087803b15801562001bfa57600080fd5b505af115801562001c0f573d6000803e3d6000fd5b505050506000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401606060405180830381865afa15801562001c83573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ca9919062002cdb565b5050905062001ccf816fffffffffffffffffffffffffffffffff16637ea8ed40620026d3565b5050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b82821015620012bf57838290600052602060002001805462001d1c9062002ece565b80601f016020809104026020016040519081016040528092919081815260200182805462001d4a9062002ece565b801562001d9b5780601f1062001d6f5761010080835404028352916020019162001d9b565b820191906000526020600020905b81548152906001019060200180831162001d7d57829003601f168201915b50505050508152602001906001019062001cfa565b601b54604080517fcc731b02000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163cc731b029160048083019260c09291908290030181865afa15801562001e21573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e47919062002d53565b90506000816020015160ff16826000015163ffffffff1662001e6a919062002f23565b601b546040517fb4b64fbb00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8316600482015291925073ffffffffffffffffffffffffffffffffffffffff169063b4b64fbb90602401600060405180830381600087803b15801562001ee157600080fd5b505af115801562001ef6573d6000803e3d6000fd5b505050506000806000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401606060405180830381865afa15801562001f6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f93919062002cdb565b92509250925062001fbb836fffffffffffffffffffffffffffffffff16633b9aca00620026d3565b62001fd18267ffffffffffffffff1685620026d3565b601b5462001ccf9067ffffffffffffffff8084169174010000000000000000000000000000000000000000900416620026d3565b60008054610100900460ff1615620020265750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200216a5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091620020ce917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162002f3a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052620021089162002f84565b6000604051808303816000865af19150503d806000811462002147576040519150601f19603f3d011682016040523d82523d6000602084013e6200214c565b606091505b509150508080602001905181019062002166919062002fa2565b9150505b919050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000e095760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000ddd575050505050905090565b601b54604080517fcc731b02000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163cc731b029160048083019260c09291908290030181865afa1580156200224f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002275919062002d53565b90506000816020015160ff16826000015163ffffffff1662002298919062002e56565b60208301805160016040808701918252601b5490517fb77429a0000000000000000000000000000000000000000000000000000000008152875163ffffffff9081166004830152945160ff90811660248301529251831660448201526060880151851660648201526080880151909416608485015260a08701516fffffffffffffffffffffffffffffffff1660a4850152939450169173ffffffffffffffffffffffffffffffffffffffff169063b77429a09060c401600060405180830381600087803b1580156200236957600080fd5b505af11580156200237e573d6000803e3d6000fd5b5050601b5473ffffffffffffffffffffffffffffffffffffffff16915063b4b64fbb9050620023ae838562002e80565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401600060405180830381600087803b1580156200240957600080fd5b505af11580156200241e573d6000803e3d6000fd5b505050506000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401606060405180830381865afa15801562002492573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024b8919062002cdb565b509150620024d8905067ffffffffffffffff821662000522848662002e80565b601b54737109709ecfa91a80626ff3989d68f67f5b1dd12d90631f7b4f3090620025269074010000000000000000000000000000000000000000900467ffffffffffffffff16600262002c8b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401600060405180830381600087803b1580156200258157600080fd5b505af115801562002596573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150606401600060405180830381600087803b1580156200262e57600080fd5b505af115801562002643573d6000803e3d6000fd5b5050601b546040517fb4b64fbb0000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063b4b64fbb9150602401600060405180830381600087803b158015620026b457600080fd5b505af1158015620026c9573d6000803e3d6000fd5b5050505050505050565b8082146200283f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620027619060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a160408051818152600a818301527f202045787065637465640000000000000000000000000000000000000000000060608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a818301527f2020202041637475616c0000000000000000000000000000000000000000000060608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a16200283f62002843565b5050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620029985760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262002915929160200162002f3a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526200294f9162002f84565b6000604051808303816000865af19150503d80600081146200298e576040519150601f19603f3d011682016040523d82523d6000602084013e62002993565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b611b2b8062002fce83390190565b67ffffffffffffffff81168114620029eb57600080fd5b50565b6000806040838503121562002a0257600080fd5b823562002a0f81620029d4565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b8181101562002a6d57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162002a39565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562002b64578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00186528251805173ffffffffffffffffffffffffffffffffffffffff168552880151888501889052805188860181905290890190839060608701905b8083101562002b4e5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062002b0a565b50978a0197955050509187019160010162002aa1565b50919998505050505050505050565b60005b8381101562002b9057818101518382015260200162002b76565b83811115620016585750506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562002c4f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184528151805180875262002c11818989018a850162002b73565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169590950186019450928501929085019060010162002bc9565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681851680830382111562002cb15762002cb162002c5c565b01949350505050565b80516fffffffffffffffffffffffffffffffff811681146200216a57600080fd5b60008060006060848603121562002cf157600080fd5b62002cfc8462002cba565b9250602084015162002d0e81620029d4565b604085015190925062002d2181620029d4565b809150509250925092565b805163ffffffff811681146200216a57600080fd5b805160ff811681146200216a57600080fd5b600060c0828403121562002d6657600080fd5b60405160c0810181811067ffffffffffffffff8211171562002db1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405262002dbf8362002d2c565b815262002dcf6020840162002d41565b602082015262002de26040840162002d41565b604082015262002df56060840162002d2c565b606082015262002e086080840162002d2c565b608082015262002e1b60a0840162002cba565b60a08201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff8084168062002e745762002e7462002e27565b92169190910492915050565b600067ffffffffffffffff8083168185168183048111821515161562002eaa5762002eaa62002c5c565b02949350505050565b6000821982111562002ec95762002ec962002c5c565b500190565b600181811c9082168062002ee357607f821691505b60208210810362002f1d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008262002f355762002f3562002e27565b500490565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162002f7681600485016020870162002b73565b919091016004019392505050565b6000825162002f9881846020870162002b73565b9190910192915050565b60006020828403121562002fb557600080fd5b8151801515811462002fc657600080fd5b939250505056fe60806040523480156200001157600080fd5b506200001c620000f8565b620000316200022a60201b6200073a1760201c565b805160328054602084015160408501516060860151608087015160a09097015163ffffffff96871664ffffffffff199095169490941764010000000060ff948516021764ffffffffff60281b191665010000000000939092169290920263ffffffff60301b19161766010000000000009185169190910217600160501b600160f01b0319166a01000000000000000000009390941692909202600160701b600160f01b03191692909217600160701b6001600160801b039092169190910217905562000353565b600054610100900460ff1615808015620001195750600054600160ff909116105b806200014957506200013630620002a160201b620007ba1760201c565b15801562000149575060005460ff166001145b620001b25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015620001d6576000805461ff0019166101001790555b620001e0620002b0565b801562000227576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c0810182526301312d008152600a6020820152600891810191909152633b9aca006060820152620f424060808201526001600160801b0360a082015290565b6001600160a01b03163b151590565b600054610100900460ff166200031d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620001a9565b60408051606081018252633b9aca0080825260006020830152436001600160401b031691909201819052600160c01b0217600155565b6117c880620003636000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063b4b64fbb1161005b578063b4b64fbb1461021c578063b77429a01461022f578063cc731b0214610387578063cff0ab96146103ff57600080fd5b80636f1696061461008257806381171ef81461014e5780638129fc1c14610214575b600080fd5b61014c61009036600461133c565b604080516060810182526fffffffffffffffffffffffffffffffff9490941680855267ffffffffffffffff93841660208601819052929093169301839052600180547fffffffffffffffff000000000000000000000000000000000000000000000000169092177001000000000000000000000000000000009091021777ffffffffffffffffffffffffffffffffffffffffffffffff167801000000000000000000000000000000000000000000000000909202919091179055565b005b6032546101bd9063ffffffff8082169160ff640100000000820481169265010000000000830490911691660100000000000081048216916a0100000000000000000000820416906fffffffffffffffffffffffffffffffff6e0100000000000000000000000000009091041686565b6040805163ffffffff978816815260ff96871660208201529490951694840194909452908416606083015290921660808301526fffffffffffffffffffffffffffffffff1660a082015260c0015b60405180910390f35b61014c610493565b61014c61022a36600461137f565b61062a565b61014c61023d3660046113bf565b805160328054602084015160408501516060860151608087015160a09097015163ffffffff9687167fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009095169490941764010000000060ff94851602177fffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff166501000000000093909216929092027fffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff1617660100000000000091851691909102177fffff0000000000000000000000000000000000000000ffffffffffffffffffff166a010000000000000000000093909416929092027fffff00000000000000000000000000000000ffffffffffffffffffffffffffff16929092176e0100000000000000000000000000006fffffffffffffffffffffffffffffffff90921691909102179055565b61038f61063f565b60405161020b9190600060c08201905063ffffffff80845116835260ff602085015116602084015260ff6040850151166040840152806060850151166060840152806080850151166080840152506fffffffffffffffffffffffffffffffff60a08401511660a083015292915050565b60015461045a906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff928316602085015291169082015260600161020b565b600054610100900460ff16158080156104b35750600054600160ff909116105b806104cd5750303b1580156104cd575060005460ff166001145b61055e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156105bc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105c46107d6565b801561062757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b8060005a905061063a82826108b9565b505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091526107356040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c08101825260325463ffffffff8082168352640100000000820460ff9081166020850152650100000000008304169383019390935266010000000000008104831660608301526a0100000000000000000000810490921660808201526e0100000000000000000000000000009091046fffffffffffffffffffffffffffffffff1660a082015290565b905090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c0810182526301312d008152600a6020820152600891810191909152633b9aca006060820152620f424060808201526fffffffffffffffffffffffffffffffff60a082015290565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600054610100900460ff1661086d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610555565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6001546000906108ef907801000000000000000000000000000000000000000000000000900467ffffffffffffffff16436114b4565b905060006109b76040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c08101825260325463ffffffff8082168352640100000000820460ff9081166020850152650100000000008304169383019390935266010000000000008104831660608301526a0100000000000000000000810490921660808201526e0100000000000000000000000000009091046fffffffffffffffffffffffffffffffff1660a082015290565b90506000816020015160ff16826000015163ffffffff166109d891906114fa565b90508215610b0f57600154600090610a0f908390700100000000000000000000000000000000900467ffffffffffffffff16611562565b90506000836040015160ff1683610a2691906115d6565b600154610a469084906fffffffffffffffffffffffffffffffff166115d6565b610a5091906114fa565b600154909150600090610aa190610a7a9084906fffffffffffffffffffffffffffffffff16611692565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff16610ca2565b90506001861115610ad057610acd610a7a82876040015160ff1660018a610ac891906114b4565b610cbf565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090610b42908490700100000000000000000000000000000000900467ffffffffffffffff16611706565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161315610c25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d697400006064820152608401610555565b600154600090610c51906fffffffffffffffffffffffffffffffff1667ffffffffffffffff8816611732565b90506000610c6348633b9aca00610d14565b610c6d908361176f565b905060005a610c7c90886114b4565b905080821115610c9857610c98610c9382846114b4565b610d2d565b5050505050505050565b6000610cb7610cb18585610d56565b83610d66565b949350505050565b6000670de0b6b3a7640000610d00610cd785836114fa565b610ce990670de0b6b3a7640000611562565b610cfb85670de0b6b3a76400006115d6565b610d75565b610d0a90866115d6565b610cb791906114fa565b600081831015610d245781610d26565b825b9392505050565b6000805a90505b825a610d4090836114b4565b101561063a57610d4f82611783565b9150610d34565b600081831215610d245781610d26565b6000818312610d245781610d26565b6000610d26670de0b6b3a764000083610d8d86610da6565b610d9791906115d6565b610da191906114fa565b610fea565b6000808213610e11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610555565b60006060610e1e84611229565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c1821361101b57506000919050565b680755bf798b4a1bf1e5821261108d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f5700000000000000000000000000000000000000006044820152606401610555565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6000808211611294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610555565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b80356fffffffffffffffffffffffffffffffff8116811461131f57600080fd5b919050565b803567ffffffffffffffff8116811461131f57600080fd5b60008060006060848603121561135157600080fd5b61135a846112ff565b925061136860208501611324565b915061137660408501611324565b90509250925092565b60006020828403121561139157600080fd5b610d2682611324565b803563ffffffff8116811461131f57600080fd5b803560ff8116811461131f57600080fd5b600060c082840312156113d157600080fd5b60405160c0810181811067ffffffffffffffff8211171561141b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526114278361139a565b8152611435602084016113ae565b6020820152611446604084016113ae565b60408201526114576060840161139a565b60608201526114686080840161139a565b608082015261147960a084016112ff565b60a08201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156114c6576114c6611485565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611509576115096114cb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f80000000000000000000000000000000000000000000000000000000000000008314161561155d5761155d611485565b500590565b6000808312837f80000000000000000000000000000000000000000000000000000000000000000183128115161561159c5761159c611485565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0183138116156115d0576115d0611485565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561161757611617611485565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561165257611652611485565b6000871292508782058712848416161561166e5761166e611485565b8785058712818416161561168457611684611485565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038413811516156116cc576116cc611485565b827f800000000000000000000000000000000000000000000000000000000000000003841281161561170057611700611485565b50500190565b600067ffffffffffffffff80831681851680830382111561172957611729611485565b01949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561176a5761176a611485565b500290565b60008261177e5761177e6114cb565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036117b4576117b4611485565b506001019056fea164736f6c634300080f000aa164736f6c634300080f000a",
  "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620001955760003560e01c806385226c8111620000e9578063b5508aa91162000097578063e20c9f71116200006e578063e20c9f7114620002a4578063fa7626d414620002ae578063fc41aa9614620002bc57600080fd5b8063b5508aa91462000275578063b715d3bd146200027f578063ba414fa6146200028957600080fd5b80639c641be211620000cc5780639c641be21462000257578063a8adc2b21462000261578063b388fd7d146200026b57600080fd5b806385226c811462000234578063916a17c6146200024d57600080fd5b80631ed7831c11620001475780633f7286f4116200012a5780633f7286f414620002075780635bc92698146200021157806366d9a9a0146200021b57600080fd5b80631ed7831c14620001db5780633e5e3c2314620001fd57600080fd5b806309928413116200017c5780630992841314620001bd5780630a9254e414620001c7578063143103b514620001d157600080fd5b8063024e2e1f146200019a57806306768b5814620001a6575b600080fd5b620001a4620002c6565b005b620001a4620001b7366004620029ee565b62000537565b620001a462000852565b620001a462000aae565b620001a462000b46565b620001e562000da2565b604051620001f4919062002a1d565b60405180910390f35b620001e562000e13565b620001e562000e82565b620001a462000ef1565b62000225620011b3565b604051620001f4919062002a79565b6200023e620012c8565b604051620001f4919062002ba2565b62000225620013a2565b620001a4620014ae565b620001a46200165e565b620001a4620018b1565b6200023e62001cd6565b620001a462001db0565b6200029362002005565b6040519015158152602001620001f4565b620001e56200216f565b600054620002939060ff1681565b620001a4620021de565b601b54737109709ecfa91a80626ff3989d68f67f5b1dd12d90631f7b4f3090620003149074010000000000000000000000000000000000000000900467ffffffffffffffff16600162002c8b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401600060405180830381600087803b1580156200036f57600080fd5b505af115801562000384573d6000803e3d6000fd5b5050601b546040517fb4b64fbb0000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063b4b64fbb9150602401600060405180830381600087803b158015620003f557600080fd5b505af11580156200040a573d6000803e3d6000fd5b505050506000806000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000481573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a7919062002cdb565b925092509250620004cf836fffffffffffffffffffffffffffffffff16633b9aca00620026d3565b620004e68267ffffffffffffffff166000620026d3565b601b54620005329067ffffffffffffffff8084169162000522917401000000000000000000000000000000000000000090910416600162002c8b565b67ffffffffffffffff16620026d3565b505050565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081527104fa2a8a495e73bfd4a2672e8f31d5dfa64382106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620005af57600080fd5b505afa158015620005c4573d6000803e3d6000fd5b505050506000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cc731b026040518163ffffffff1660e01b815260040160c060405180830381865afa15801562000638573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200065e919062002d53565b90506000816020015160ff16826000015163ffffffff1662000681919062002e56565b602083015190915060ff16737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e562620006b2838562002e80565b67ffffffffffffffff168767ffffffffffffffff16106040518263ffffffff1660e01b8152600401620006e9911515815260200190565b60006040518083038186803b1580156200070257600080fd5b505afa15801562000717573d6000803e3d6000fd5b5050601b54737109709ecfa91a80626ff3989d68f67f5b1dd12d9250631f7b4f3091506200076990879074010000000000000000000000000000000000000000900467ffffffffffffffff1662002eb3565b6040518263ffffffff1660e01b81526004016200078891815260200190565b600060405180830381600087803b158015620007a357600080fd5b505af1158015620007b8573d6000803e3d6000fd5b5050601b546040517fb4b64fbb00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8916600482015273ffffffffffffffffffffffffffffffffffffffff909116925063b4b64fbb9150602401600060405180830381600087803b1580156200083257600080fd5b505af115801562000847573d6000803e3d6000fd5b505050505050505050565b601b54737109709ecfa91a80626ff3989d68f67f5b1dd12d90631f7b4f3090620008a09074010000000000000000000000000000000000000000900467ffffffffffffffff16600262002c8b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401600060405180830381600087803b158015620008fb57600080fd5b505af115801562000910573d6000803e3d6000fd5b5050601b546040517fb4b64fbb0000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063b4b64fbb9150602401600060405180830381600087803b1580156200098157600080fd5b505af115801562000996573d6000803e3d6000fd5b505050506000806000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000a0d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a33919062002cdb565b92509250925062000a5b836fffffffffffffffffffffffffffffffff16633b9aca00620026d3565b62000a728267ffffffffffffffff166000620026d3565b601b54620005329067ffffffffffffffff8084169162000522917401000000000000000000000000000000000000000090910416600262002c8b565b60405162000abc90620029c6565b604051809103906000f08015801562000ad9573d6000803e3d6000fd5b50601b805473ffffffffffffffffffffffffffffffffffffffff929092167fffffffff0000000000000000000000000000000000000000000000000000000090921691909117740100000000000000000000000000000000000000004367ffffffffffffffff1602179055565b601b54737109709ecfa91a80626ff3989d68f67f5b1dd12d90631f7b4f309062000b949074010000000000000000000000000000000000000000900467ffffffffffffffff16600a62002c8b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401600060405180830381600087803b15801562000bef57600080fd5b505af115801562000c04573d6000803e3d6000fd5b5050601b546040517fb4b64fbb0000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063b4b64fbb9150602401600060405180830381600087803b15801562000c7557600080fd5b505af115801562000c8a573d6000803e3d6000fd5b505050506000806000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000d01573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d27919062002cdb565b92509250925062000d4f836fffffffffffffffffffffffffffffffff16633b9aca00620026d3565b62000d668267ffffffffffffffff166000620026d3565b601b54620005329067ffffffffffffffff8084169162000522917401000000000000000000000000000000000000000090910416600a62002c8b565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000e0957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000ddd575b5050505050905090565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000e095760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000ddd575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000e095760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000ddd575050505050905090565b601b546040517fb4b64fbb0000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063b4b64fbb90602401600060405180830381600087803b15801562000f5e57600080fd5b505af115801562000f73573d6000803e3d6000fd5b505050506000806000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000fea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001010919062002cdb565b601b546040517fb4b64fbb00000000000000000000000000000000000000000000000000000000815260006004820152939650919450925073ffffffffffffffffffffffffffffffffffffffff169063b4b64fbb90602401600060405180830381600087803b1580156200108357600080fd5b505af115801562001098573d6000803e3d6000fd5b505050506000806000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401606060405180830381865afa1580156200110f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001135919062002cdb565b9250925092506200116b836fffffffffffffffffffffffffffffffff16876fffffffffffffffffffffffffffffffff16620026d3565b6200118b8267ffffffffffffffff168667ffffffffffffffff16620026d3565b620011ab8167ffffffffffffffff168567ffffffffffffffff16620026d3565b505050505050565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620012bf57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939491938583019392830182828015620012a657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620012525790505b50505050508152505081526020019060010190620011d7565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b82821015620012bf5783829060005260206000200180546200130e9062002ece565b80601f01602080910402602001604051908101604052809291908181526020018280546200133c9062002ece565b80156200138d5780601f1062001361576101008083540402835291602001916200138d565b820191906000526020600020905b8154815290600101906020018083116200136f57829003601f168201915b505050505081526020019060010190620012ec565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620012bf57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156200149557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620014415790505b50505050508152505081526020019060010190620013c6565b6000806000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401606060405180830381865afa15801562001521573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001547919062002cdb565b9250925092506000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cc731b026040518163ffffffff1660e01b815260040160c060405180830381865afa158015620015bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015e3919062002d53565b90506200160d846fffffffffffffffffffffffffffffffff16826060015163ffffffff16620026d3565b620016248367ffffffffffffffff166000620026d3565b601b54620016589067ffffffffffffffff8085169174010000000000000000000000000000000000000000900416620026d3565b50505050565b601b54604080517fcc731b02000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163cc731b029160048083019260c09291908290030181865afa158015620016cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016f5919062002d53565b90506000816020015160ff16826000015163ffffffff1662001718919062002e56565b60208301516040517ff28dceb300000000000000000000000000000000000000000000000000000000815291925060ff1690737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390620017cb906004016020808252603e908201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260408201527f6520676173207468616e20617661696c61626c6520676173206c696d69740000606082015260800190565b600060405180830381600087803b158015620017e657600080fd5b505af1158015620017fb573d6000803e3d6000fd5b5050601b5473ffffffffffffffffffffffffffffffffffffffff16915063b4b64fbb90506200182b838562002e80565b6200183890600162002c8b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401600060405180830381600087803b1580156200189357600080fd5b505af1158015620018a8573d6000803e3d6000fd5b50505050505050565b601b54604080517fcc731b02000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163cc731b029160048083019260c09291908290030181865afa15801562001922573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001948919062002d53565b90506000816020015160ff16826000015163ffffffff166200196b919062002e56565b6020830151601b5491925060ff169073ffffffffffffffffffffffffffffffffffffffff1663b4b64fbb620019a1838562002e80565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401600060405180830381600087803b158015620019fc57600080fd5b505af115801562001a11573d6000803e3d6000fd5b505050506000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401606060405180830381865afa15801562001a85573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001aab919062002cdb565b50915062001acb905067ffffffffffffffff821662000522848662002e80565b601b54737109709ecfa91a80626ff3989d68f67f5b1dd12d90631f7b4f309062001b199074010000000000000000000000000000000000000000900467ffffffffffffffff16600162002c8b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401600060405180830381600087803b15801562001b7457600080fd5b505af115801562001b89573d6000803e3d6000fd5b5050601b546040517fb4b64fbb0000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063b4b64fbb9150602401600060405180830381600087803b15801562001bfa57600080fd5b505af115801562001c0f573d6000803e3d6000fd5b505050506000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401606060405180830381865afa15801562001c83573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ca9919062002cdb565b5050905062001ccf816fffffffffffffffffffffffffffffffff16637ea8ed40620026d3565b5050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b82821015620012bf57838290600052602060002001805462001d1c9062002ece565b80601f016020809104026020016040519081016040528092919081815260200182805462001d4a9062002ece565b801562001d9b5780601f1062001d6f5761010080835404028352916020019162001d9b565b820191906000526020600020905b81548152906001019060200180831162001d7d57829003601f168201915b50505050508152602001906001019062001cfa565b601b54604080517fcc731b02000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163cc731b029160048083019260c09291908290030181865afa15801562001e21573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e47919062002d53565b90506000816020015160ff16826000015163ffffffff1662001e6a919062002f23565b601b546040517fb4b64fbb00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8316600482015291925073ffffffffffffffffffffffffffffffffffffffff169063b4b64fbb90602401600060405180830381600087803b15801562001ee157600080fd5b505af115801562001ef6573d6000803e3d6000fd5b505050506000806000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401606060405180830381865afa15801562001f6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f93919062002cdb565b92509250925062001fbb836fffffffffffffffffffffffffffffffff16633b9aca00620026d3565b62001fd18267ffffffffffffffff1685620026d3565b601b5462001ccf9067ffffffffffffffff8084169174010000000000000000000000000000000000000000900416620026d3565b60008054610100900460ff1615620020265750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200216a5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091620020ce917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162002f3a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052620021089162002f84565b6000604051808303816000865af19150503d806000811462002147576040519150601f19603f3d011682016040523d82523d6000602084013e6200214c565b606091505b509150508080602001905181019062002166919062002fa2565b9150505b919050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000e095760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000ddd575050505050905090565b601b54604080517fcc731b02000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163cc731b029160048083019260c09291908290030181865afa1580156200224f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002275919062002d53565b90506000816020015160ff16826000015163ffffffff1662002298919062002e56565b60208301805160016040808701918252601b5490517fb77429a0000000000000000000000000000000000000000000000000000000008152875163ffffffff9081166004830152945160ff90811660248301529251831660448201526060880151851660648201526080880151909416608485015260a08701516fffffffffffffffffffffffffffffffff1660a4850152939450169173ffffffffffffffffffffffffffffffffffffffff169063b77429a09060c401600060405180830381600087803b1580156200236957600080fd5b505af11580156200237e573d6000803e3d6000fd5b5050601b5473ffffffffffffffffffffffffffffffffffffffff16915063b4b64fbb9050620023ae838562002e80565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401600060405180830381600087803b1580156200240957600080fd5b505af11580156200241e573d6000803e3d6000fd5b505050506000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401606060405180830381865afa15801562002492573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024b8919062002cdb565b509150620024d8905067ffffffffffffffff821662000522848662002e80565b601b54737109709ecfa91a80626ff3989d68f67f5b1dd12d90631f7b4f3090620025269074010000000000000000000000000000000000000000900467ffffffffffffffff16600262002c8b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401600060405180830381600087803b1580156200258157600080fd5b505af115801562002596573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150606401600060405180830381600087803b1580156200262e57600080fd5b505af115801562002643573d6000803e3d6000fd5b5050601b546040517fb4b64fbb0000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063b4b64fbb9150602401600060405180830381600087803b158015620026b457600080fd5b505af1158015620026c9573d6000803e3d6000fd5b5050505050505050565b8082146200283f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620027619060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a160408051818152600a818301527f202045787065637465640000000000000000000000000000000000000000000060608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a818301527f2020202041637475616c0000000000000000000000000000000000000000000060608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a16200283f62002843565b5050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620029985760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262002915929160200162002f3a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526200294f9162002f84565b6000604051808303816000865af19150503d80600081146200298e576040519150601f19603f3d011682016040523d82523d6000602084013e62002993565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b611b2b8062002fce83390190565b67ffffffffffffffff81168114620029eb57600080fd5b50565b6000806040838503121562002a0257600080fd5b823562002a0f81620029d4565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b8181101562002a6d57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162002a39565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562002b64578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00186528251805173ffffffffffffffffffffffffffffffffffffffff168552880151888501889052805188860181905290890190839060608701905b8083101562002b4e5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062002b0a565b50978a0197955050509187019160010162002aa1565b50919998505050505050505050565b60005b8381101562002b9057818101518382015260200162002b76565b83811115620016585750506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562002c4f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184528151805180875262002c11818989018a850162002b73565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169590950186019450928501929085019060010162002bc9565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681851680830382111562002cb15762002cb162002c5c565b01949350505050565b80516fffffffffffffffffffffffffffffffff811681146200216a57600080fd5b60008060006060848603121562002cf157600080fd5b62002cfc8462002cba565b9250602084015162002d0e81620029d4565b604085015190925062002d2181620029d4565b809150509250925092565b805163ffffffff811681146200216a57600080fd5b805160ff811681146200216a57600080fd5b600060c0828403121562002d6657600080fd5b60405160c0810181811067ffffffffffffffff8211171562002db1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405262002dbf8362002d2c565b815262002dcf6020840162002d41565b602082015262002de26040840162002d41565b604082015262002df56060840162002d2c565b606082015262002e086080840162002d2c565b608082015262002e1b60a0840162002cba565b60a08201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff8084168062002e745762002e7462002e27565b92169190910492915050565b600067ffffffffffffffff8083168185168183048111821515161562002eaa5762002eaa62002c5c565b02949350505050565b6000821982111562002ec95762002ec962002c5c565b500190565b600181811c9082168062002ee357607f821691505b60208210810362002f1d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008262002f355762002f3562002e27565b500490565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162002f7681600485016020870162002b73565b919091016004019392505050565b6000825162002f9881846020870162002b73565b9190910192915050565b60006020828403121562002fb557600080fd5b8151801515811462002fc657600080fd5b939250505056fe60806040523480156200001157600080fd5b506200001c620000f8565b620000316200022a60201b6200073a1760201c565b805160328054602084015160408501516060860151608087015160a09097015163ffffffff96871664ffffffffff199095169490941764010000000060ff948516021764ffffffffff60281b191665010000000000939092169290920263ffffffff60301b19161766010000000000009185169190910217600160501b600160f01b0319166a01000000000000000000009390941692909202600160701b600160f01b03191692909217600160701b6001600160801b039092169190910217905562000353565b600054610100900460ff1615808015620001195750600054600160ff909116105b806200014957506200013630620002a160201b620007ba1760201c565b15801562000149575060005460ff166001145b620001b25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015620001d6576000805461ff0019166101001790555b620001e0620002b0565b801562000227576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c0810182526301312d008152600a6020820152600891810191909152633b9aca006060820152620f424060808201526001600160801b0360a082015290565b6001600160a01b03163b151590565b600054610100900460ff166200031d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620001a9565b60408051606081018252633b9aca0080825260006020830152436001600160401b031691909201819052600160c01b0217600155565b6117c880620003636000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063b4b64fbb1161005b578063b4b64fbb1461021c578063b77429a01461022f578063cc731b0214610387578063cff0ab96146103ff57600080fd5b80636f1696061461008257806381171ef81461014e5780638129fc1c14610214575b600080fd5b61014c61009036600461133c565b604080516060810182526fffffffffffffffffffffffffffffffff9490941680855267ffffffffffffffff93841660208601819052929093169301839052600180547fffffffffffffffff000000000000000000000000000000000000000000000000169092177001000000000000000000000000000000009091021777ffffffffffffffffffffffffffffffffffffffffffffffff167801000000000000000000000000000000000000000000000000909202919091179055565b005b6032546101bd9063ffffffff8082169160ff640100000000820481169265010000000000830490911691660100000000000081048216916a0100000000000000000000820416906fffffffffffffffffffffffffffffffff6e0100000000000000000000000000009091041686565b6040805163ffffffff978816815260ff96871660208201529490951694840194909452908416606083015290921660808301526fffffffffffffffffffffffffffffffff1660a082015260c0015b60405180910390f35b61014c610493565b61014c61022a36600461137f565b61062a565b61014c61023d3660046113bf565b805160328054602084015160408501516060860151608087015160a09097015163ffffffff9687167fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009095169490941764010000000060ff94851602177fffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff166501000000000093909216929092027fffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff1617660100000000000091851691909102177fffff0000000000000000000000000000000000000000ffffffffffffffffffff166a010000000000000000000093909416929092027fffff00000000000000000000000000000000ffffffffffffffffffffffffffff16929092176e0100000000000000000000000000006fffffffffffffffffffffffffffffffff90921691909102179055565b61038f61063f565b60405161020b9190600060c08201905063ffffffff80845116835260ff602085015116602084015260ff6040850151166040840152806060850151166060840152806080850151166080840152506fffffffffffffffffffffffffffffffff60a08401511660a083015292915050565b60015461045a906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff928316602085015291169082015260600161020b565b600054610100900460ff16158080156104b35750600054600160ff909116105b806104cd5750303b1580156104cd575060005460ff166001145b61055e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156105bc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105c46107d6565b801561062757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b8060005a905061063a82826108b9565b505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091526107356040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c08101825260325463ffffffff8082168352640100000000820460ff9081166020850152650100000000008304169383019390935266010000000000008104831660608301526a0100000000000000000000810490921660808201526e0100000000000000000000000000009091046fffffffffffffffffffffffffffffffff1660a082015290565b905090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c0810182526301312d008152600a6020820152600891810191909152633b9aca006060820152620f424060808201526fffffffffffffffffffffffffffffffff60a082015290565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600054610100900460ff1661086d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610555565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6001546000906108ef907801000000000000000000000000000000000000000000000000900467ffffffffffffffff16436114b4565b905060006109b76040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c08101825260325463ffffffff8082168352640100000000820460ff9081166020850152650100000000008304169383019390935266010000000000008104831660608301526a0100000000000000000000810490921660808201526e0100000000000000000000000000009091046fffffffffffffffffffffffffffffffff1660a082015290565b90506000816020015160ff16826000015163ffffffff166109d891906114fa565b90508215610b0f57600154600090610a0f908390700100000000000000000000000000000000900467ffffffffffffffff16611562565b90506000836040015160ff1683610a2691906115d6565b600154610a469084906fffffffffffffffffffffffffffffffff166115d6565b610a5091906114fa565b600154909150600090610aa190610a7a9084906fffffffffffffffffffffffffffffffff16611692565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff16610ca2565b90506001861115610ad057610acd610a7a82876040015160ff1660018a610ac891906114b4565b610cbf565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090610b42908490700100000000000000000000000000000000900467ffffffffffffffff16611706565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161315610c25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d697400006064820152608401610555565b600154600090610c51906fffffffffffffffffffffffffffffffff1667ffffffffffffffff8816611732565b90506000610c6348633b9aca00610d14565b610c6d908361176f565b905060005a610c7c90886114b4565b905080821115610c9857610c98610c9382846114b4565b610d2d565b5050505050505050565b6000610cb7610cb18585610d56565b83610d66565b949350505050565b6000670de0b6b3a7640000610d00610cd785836114fa565b610ce990670de0b6b3a7640000611562565b610cfb85670de0b6b3a76400006115d6565b610d75565b610d0a90866115d6565b610cb791906114fa565b600081831015610d245781610d26565b825b9392505050565b6000805a90505b825a610d4090836114b4565b101561063a57610d4f82611783565b9150610d34565b600081831215610d245781610d26565b6000818312610d245781610d26565b6000610d26670de0b6b3a764000083610d8d86610da6565b610d9791906115d6565b610da191906114fa565b610fea565b6000808213610e11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610555565b60006060610e1e84611229565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c1821361101b57506000919050565b680755bf798b4a1bf1e5821261108d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f5700000000000000000000000000000000000000006044820152606401610555565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6000808211611294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610555565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b80356fffffffffffffffffffffffffffffffff8116811461131f57600080fd5b919050565b803567ffffffffffffffff8116811461131f57600080fd5b60008060006060848603121561135157600080fd5b61135a846112ff565b925061136860208501611324565b915061137660408501611324565b90509250925092565b60006020828403121561139157600080fd5b610d2682611324565b803563ffffffff8116811461131f57600080fd5b803560ff8116811461131f57600080fd5b600060c082840312156113d157600080fd5b60405160c0810181811067ffffffffffffffff8211171561141b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526114278361139a565b8152611435602084016113ae565b6020820152611446604084016113ae565b60408201526114576060840161139a565b60608201526114686080840161139a565b608082015261147960a084016112ff565b60a08201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156114c6576114c6611485565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611509576115096114cb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f80000000000000000000000000000000000000000000000000000000000000008314161561155d5761155d611485565b500590565b6000808312837f80000000000000000000000000000000000000000000000000000000000000000183128115161561159c5761159c611485565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0183138116156115d0576115d0611485565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561161757611617611485565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561165257611652611485565b6000871292508782058712848416161561166e5761166e611485565b8785058712818416161561168457611684611485565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038413811516156116cc576116cc611485565b827f800000000000000000000000000000000000000000000000000000000000000003841281161561170057611700611485565b50500190565b600067ffffffffffffffff80831681851680830382111561172957611729611485565b01949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561176a5761176a611485565b500290565b60008261177e5761177e6114cb565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036117b4576117b4611485565b506001019056fea164736f6c634300080f000aa164736f6c634300080f000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
