{
  "_format": "hh-sol-artifact-1",
  "contractName": "ArtifactResourceMetering_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": [],
      "name": "test_meter_generateArtifact_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405260008054600160ff1991821681179092556004805490911690911790557f84edc668cfd5e050b8999f43ff87a1faaa93e5f935b20bc1dd4d3ff157ccf429601e557f1ca389f2c8264faa4377de9ce8e14d6263ef29c68044a9272d405761bab2db27601f557fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060205534801561009957600080fd5b50615832806100a96000396000f3fe60806040523480156200001157600080fd5b5060043610620000e55760003560e01c8063916a17c6116200008b578063e20c9f711162000062578063e20c9f71146200018d578063fa7626d41462000197578063fce0ff9414620001a557600080fd5b8063916a17c6146200015e578063b5508aa91462000168578063ba414fa6146200017257600080fd5b80633f7286f411620000c05780633f7286f4146200012257806366d9a9a0146200012c57806385226c81146200014557600080fd5b80630a9254e414620000ea5780631ed7831c14620000f65780633e5e3c231462000118575b600080fd5b620000f4620001af565b005b62000100620004ef565b6040516200010f91906200203b565b60405180910390f35b6200010062000560565b62000100620005cf565b620001366200063e565b6040516200010f919062002097565b6200014f62000753565b6040516200010f919062002210565b620001366200082d565b6200014f62000939565b6200017c62000a13565b60405190151581526020016200010f565b6200010062000b7d565b6000546200017c9060ff1681565b620000f462000bec565b6040517f1f7b4f30000000000000000000000000000000000000000000000000000000008152620f42406004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90631f7b4f3090602401600060405180830381600087803b1580156200021857600080fd5b505af11580156200022d573d6000803e3d6000fd5b50505050600060405162000241906200201f565b604051809103906000f0801580156200025e573d6000803e3d6000fd5b50905060008173ffffffffffffffffffffffffffffffffffffffff1663cc731b026040518163ffffffff1660e01b815260040160c060405180830381865afa158015620002af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d59190620022ea565b606081015160a08201516fffffffffffffffffffffffffffffffff167001000000000000000000000000000000000263ffffffff91821617601b558151601c80547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016919092169081179091556020820151919250620003599160ff16906200240d565b601c60086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015620003f0573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262000438919081019062002437565b6040516020016200044a91906200252c565b604051602081830303815290604052601d908162000469919062002616565b506040517ff1afe04d000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f1afe04d90620004bd90601d90600401620027e0565b600060405180830381600087803b158015620004d857600080fd5b505af1925050508015620004ea575060015b505050565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200055657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200052a575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015620005565760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200052a575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620005565760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200052a575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b828210156200074a57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156200073157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620006dd5790505b5050505050815250508152602001906001019062000662565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b828210156200074a57838290600052602060002001805462000799906200256f565b80601f0160208091040260200160405190810160405280929190818152602001828054620007c7906200256f565b8015620008185780601f10620007ec5761010080835404028352916020019162000818565b820191906000526020600020905b815481529060010190602001808311620007fa57829003601f168201915b50505050508152602001906001019062000777565b60606013805480602002602001604051908101604052809291908181526020016000905b828210156200074a57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156200092057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620008cc5790505b5050505050815250508152602001906001019062000851565b60606010805480602002602001604051908101604052809291908181526020016000905b828210156200074a5783829060005260206000200180546200097f906200256f565b80601f0160208091040260200160405190810160405280929190818152602001828054620009ad906200256f565b8015620009fe5780601f10620009d257610100808354040283529160200191620009fe565b820191906000526020600020905b815481529060010190602001808311620009e057829003601f168201915b5050505050815260200190600101906200095d565b60008054610100900460ff161562000a345750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562000b785760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162000adc917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001620027fc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262000b169162002846565b6000604051808303816000865af19150503d806000811462000b55576040519150601f19603f3d011682016040523d82523d6000602084013e62000b5a565b606091505b509150508080602001905181019062000b74919062002864565b9150505b919050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620005565760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200052a575050505050905090565b6040517f619d897f000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063619d897f9062000c3f90601d9060040162002888565b600060405180830381600087803b15801562000c5a57600080fd5b505af115801562000c6f573d6000803e3d6000fd5b50600092506005915062000c809050565b60405190808252806020026020018201604052801562000caa578160200160208202803683370190505b50601b5481519192506fffffffffffffffffffffffffffffffff1690829060009062000cda5762000cda6200294e565b6fffffffffffffffffffffffffffffffff9283166020918202929092010152601b548251700100000000000000000000000000000000909104909116908290600190811062000d2d5762000d2d6200294e565b60200260200101906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff1681525050640ba43b74008160028151811062000d7b5762000d7b6200294e565b60200260200101906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff168152505064174876e8008160038151811062000dc95762000dc96200294e565b60200260200101906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff1681525050642e90edd0008160048151811062000e175762000e176200294e565b6fffffffffffffffffffffffffffffffff929092166020928302919091019091015260408051600180825281830190925260009181602001602082028036833701905050905060008160008151811062000e755762000e756200294e565b67ffffffffffffffff92909216602092830291909101820152604080516002808252606082018352600093919290918301908036833701905050905060008160008151811062000ec95762000ec96200294e565b602002602001019067ffffffffffffffff16908167ffffffffffffffff168152505060018160018151811062000f035762000f036200294e565b67ffffffffffffffff929092166020928302919091018201526040805160038082526080820190925260009290919082016060803683375050601c54825192935067ffffffffffffffff169183915060009062000f645762000f646200294e565b67ffffffffffffffff9283166020918202929092010152601c54825168010000000000000000909104909116908290600190811062000fa75762000fa76200294e565b602002602001019067ffffffffffffffff16908167ffffffffffffffff1681525050620186a08160028151811062000fe35762000fe36200294e565b67ffffffffffffffff9290921660209283029190910182015260408051600480825260a082019092526000929091908201608080368337019050509050633b9aca00816000815181106200103b576200103b6200294e565b602002602001018181525050640ba43b7400816001815181106200106357620010636200294e565b602002602001018181525050641176592e00816002815181106200108b576200108b6200294e565b60200260200101818152505064174876e80081600381518110620010b357620010b36200294e565b60209081029190910101526040805160028082526060820190925260009181602001602082028036833701905050905061064081600081518110620010fc57620010fc6200294e565b602002602001018181525050610c80816001815181106200112157620011216200294e565b60200260200101818152505060005b865181101562001e185760005b865181101562001e025760005b865181101562001dec5760005b865181101562001dd65760005b865181101562001dc05760005b865181101562001daa5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff16639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620011ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200121491906200297d565b905060008d88815181106200122d576200122d6200294e565b6020026020010151905060008d88815181106200124e576200124e6200294e565b6020026020010151905060008d88815181106200126f576200126f6200294e565b6020026020010151905060008d88815181106200129057620012906200294e565b6020026020010151905060008d8881518110620012b157620012b16200294e565b6020026020010151905060008d8881518110620012d257620012d26200294e565b602090810291909101810151604080518082018252600781527f737563636573730000000000000000000000000000000000000000000000000093810193909352517f39b37ab000000000000000000000000000000000000000000000000000000000815260048101859052909250737109709ecfa91a80626ff3989d68f67f5b1dd12d906339b37ab090602401600060405180830381600087803b1580156200137b57600080fd5b505af115801562001390573d6000803e3d6000fd5b505050506000878743604051620013a7906200202d565b6fffffffffffffffffffffffffffffffff909316835267ffffffffffffffff9182166020840152166040820152606001604051809103906000f080158015620013f4573d6000803e3d6000fd5b509050737109709ecfa91a80626ff3989d68f67f5b1dd12d631f7b4f306200142767ffffffffffffffff89164362002997565b6040518263ffffffff1660e01b81526004016200144691815260200190565b600060405180830381600087803b1580156200146157600080fd5b505af115801562001476573d6000803e3d6000fd5b50506040517fb4b64fbb00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff881660048201526000925073ffffffffffffffffffffffffffffffffffffffff8416915063b4b64fbb906301c9c3809060240160206040518083038160008887f19350505050801562001537575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925262001534918101906200297d565b60015b62001672573d80801562001568576040519150601f19603f3d011682016040523d82523d6000602084013e6200156d565b606091505b5080516020820120601e548103620015a1576040518060600160405280603e8152602001620057e8603e913994506200166a565b601f548103620015e9576040518060400160405280601d81526020017f61726974686d65746963206f766572666c6f772f756e646572666c6f7700000081525094506200166a565b602054810362001631576040518060400160405280600a81526020017f6f7574206f66206761730000000000000000000000000000000000000000000081525094506200166a565b6040518060400160405280600d81526020017f554e4b4e4f574e204552524f520000000000000000000000000000000000000081525094505b505062001675565b90505b6000670de0b6b3a7640000856200168d8885620029b2565b620016999190620029b2565b620016a59190620029f2565b6040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff8c166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063619d897f90601d908390636900a3ae90602401600060405180830381865afa1580156200172e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262001776919081019062002437565b6040517f6900a3ae00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8e166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015620017e9573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262001831919081019062002437565b6040517f6900a3ae00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8e166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015620018a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052620018ec919081019062002437565b6040517f6900a3ae000000000000000000000000000000000000000000000000000000008152600481018d9052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801562001956573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526200199e919081019062002437565b6040517f6900a3ae00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8f166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801562001a11573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262001a59919081019062002437565b6040517f6900a3ae000000000000000000000000000000000000000000000000000000008152600481018b9052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801562001ac3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262001b0b919081019062002437565b6040517f6900a3ae000000000000000000000000000000000000000000000000000000008152600481018f9052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801562001b75573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262001bbd919081019062002437565b6040517f6900a3ae000000000000000000000000000000000000000000000000000000008152600481018c9052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801562001c27573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262001c6f919081019062002437565b8e60405160200162001c8a9998979695949392919062002a09565b6040516020818303038152906040526040518363ffffffff1660e01b815260040162001cb892919062002c42565b600060405180830381600087803b15801562001cd357600080fd5b505af115801562001ce8573d6000803e3d6000fd5b50506040517f44d7f0a4000000000000000000000000000000000000000000000000000000008152600481018e905262001d899250737109709ecfa91a80626ff3989d68f67f5b1dd12d91506344d7f0a4906024016020604051808303816000875af115801562001d5d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d83919062002864565b62001e21565b5050505050505050505050808062001da19062002c74565b91505062001171565b508062001db78162002c74565b91505062001164565b508062001dcd8162002c74565b91505062001157565b508062001de38162002c74565b9150506200114a565b508062001df98162002c74565b9150506200113d565b508062001e0f8162002c74565b91505062001130565b50505050505050565b8062001e99577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162001e879060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162001e9962001e9c565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562001ff15760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262001f6e9291602001620027fc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262001fa89162002846565b6000604051808303816000865af19150503d806000811462001fe7576040519150601f19603f3d011682016040523d82523d6000602084013e62001fec565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b611b2b8062002cb083390190565b61100d80620047db83390190565b6020808252825182820181905260009190848201906040850190845b818110156200208b57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162002057565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562002182578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00186528251805173ffffffffffffffffffffffffffffffffffffffff168552880151888501889052805188860181905290890190839060608701905b808310156200216c5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062002128565b50978a01979550505091870191600101620020bf565b50919998505050505050505050565b60005b83811015620021ae57818101518382015260200162002194565b83811115620021be576000848401525b50505050565b60008151808452620021de81602086016020860162002191565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562002287577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845262002274858351620021c4565b9450928501929085019060010162002237565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b805163ffffffff8116811462000b7857600080fd5b805160ff8116811462000b7857600080fd5b600060c08284031215620022fd57600080fd5b60405160c0810181811067ffffffffffffffff8211171562002323576200232362002294565b6040526200233183620022c3565b81526200234160208401620022d8565b60208201526200235460408401620022d8565b60408201526200236760608401620022c3565b60608201526200237a60808401620022c3565b608082015260a08301516fffffffffffffffffffffffffffffffff81168114620023a357600080fd5b60a08201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808416806200242b576200242b620023af565b92169190910492915050565b6000602082840312156200244a57600080fd5b815167ffffffffffffffff808211156200246357600080fd5b818401915084601f8301126200247857600080fd5b8151818111156200248d576200248d62002294565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715620024d657620024d662002294565b81604052828152876020848701011115620024f057600080fd5b6200250383602083016020880162002191565b979650505050505050565b600081516200252281856020860162002191565b9290920192915050565b600082516200254081846020870162002191565b7f2f2e7265736f757263652d6d65746572696e672e637376000000000000000000920191825250601701919050565b600181811c908216806200258457607f821691505b602082108103620025be577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115620004ea57600081815260208120601f850160051c81016020861015620025ed5750805b601f850160051c820191505b818110156200260e57828155600101620025f9565b505050505050565b815167ffffffffffffffff81111562002633576200263362002294565b6200264b816200264484546200256f565b84620025c4565b602080601f831160018114620026a157600084156200266a5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556200260e565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015620026f057888601518255948401946001909101908401620026cf565b50858210156200272d57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600081546200274c816200256f565b8085526020600183811680156200276c5760018114620027a557620027d5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838901528284151560051b8901019550620027d5565b866000528260002060005b85811015620027cd5781548a8201860152908301908401620027b0565b890184019650505b505050505092915050565b602081526000620027f560208301846200273d565b9392505050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200283881600485016020870162002191565b919091016004019392505050565b600082516200285a81846020870162002191565b9190910192915050565b6000602082840312156200287757600080fd5b81518015158114620027f557600080fd5b6040815260006200289d60408301846200273d565b8281036020840152606681527f70726576426173654665652c70726576426f756768744761732c70726576426c60208201527f6f636b4e756d446966662c6c31426173654665652c726571756573746564476160408201527f732c676173436f6e73756d65642c65746850726963652c757364436f73742c7360608201527f7563636573730000000000000000000000000000000000000000000000000000608082015260a0810191505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156200299057600080fd5b5051919050565b60008219821115620029ad57620029ad620023de565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620029ed57620029ed620023de565b500290565b60008262002a045762002a04620023af565b500490565b60008a5162002a1d818460208f0162002191565b7f2c000000000000000000000000000000000000000000000000000000000000009083019081528a5162002a59816001840160208f0162002191565b7f2c0000000000000000000000000000000000000000000000000000000000000060019290910191820152895162002a99816002840160208e0162002191565b7f2c0000000000000000000000000000000000000000000000000000000000000060029290910191820152885162002ad9816003840160208d0162002191565b0162002b07600382017f2c000000000000000000000000000000000000000000000000000000000000009052565b62002b1660048201896200250e565b7f2c000000000000000000000000000000000000000000000000000000000000008152905062002b4a60018201886200250e565b7f2c00000000000000000000000000000000000000000000000000000000000000815290507f2400000000000000000000000000000000000000000000000000000000000000600182015262002ba460028201876200250e565b7f2c00000000000000000000000000000000000000000000000000000000000000815290507f2400000000000000000000000000000000000000000000000000000000000000600182015262002bfe60028201866200250e565b7f2c000000000000000000000000000000000000000000000000000000000000008152905062002c3260018201856200250e565b9c9b505050505050505050505050565b60408152600062002c5760408301856200273d565b828103602084015262002c6b8185620021c4565b95945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362002ca85762002ca8620023de565b506001019056fe60806040523480156200001157600080fd5b506200001c620000f8565b620000316200022a60201b6200073a1760201c565b805160328054602084015160408501516060860151608087015160a09097015163ffffffff96871664ffffffffff199095169490941764010000000060ff948516021764ffffffffff60281b191665010000000000939092169290920263ffffffff60301b19161766010000000000009185169190910217600160501b600160f01b0319166a01000000000000000000009390941692909202600160701b600160f01b03191692909217600160701b6001600160801b039092169190910217905562000353565b600054610100900460ff1615808015620001195750600054600160ff909116105b806200014957506200013630620002a160201b620007ba1760201c565b15801562000149575060005460ff166001145b620001b25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015620001d6576000805461ff0019166101001790555b620001e0620002b0565b801562000227576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c0810182526301312d008152600a6020820152600891810191909152633b9aca006060820152620f424060808201526001600160801b0360a082015290565b6001600160a01b03163b151590565b600054610100900460ff166200031d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620001a9565b60408051606081018252633b9aca0080825260006020830152436001600160401b031691909201819052600160c01b0217600155565b6117c880620003636000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063b4b64fbb1161005b578063b4b64fbb1461021c578063b77429a01461022f578063cc731b0214610387578063cff0ab96146103ff57600080fd5b80636f1696061461008257806381171ef81461014e5780638129fc1c14610214575b600080fd5b61014c61009036600461133c565b604080516060810182526fffffffffffffffffffffffffffffffff9490941680855267ffffffffffffffff93841660208601819052929093169301839052600180547fffffffffffffffff000000000000000000000000000000000000000000000000169092177001000000000000000000000000000000009091021777ffffffffffffffffffffffffffffffffffffffffffffffff167801000000000000000000000000000000000000000000000000909202919091179055565b005b6032546101bd9063ffffffff8082169160ff640100000000820481169265010000000000830490911691660100000000000081048216916a0100000000000000000000820416906fffffffffffffffffffffffffffffffff6e0100000000000000000000000000009091041686565b6040805163ffffffff978816815260ff96871660208201529490951694840194909452908416606083015290921660808301526fffffffffffffffffffffffffffffffff1660a082015260c0015b60405180910390f35b61014c610493565b61014c61022a36600461137f565b61062a565b61014c61023d3660046113bf565b805160328054602084015160408501516060860151608087015160a09097015163ffffffff9687167fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009095169490941764010000000060ff94851602177fffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff166501000000000093909216929092027fffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff1617660100000000000091851691909102177fffff0000000000000000000000000000000000000000ffffffffffffffffffff166a010000000000000000000093909416929092027fffff00000000000000000000000000000000ffffffffffffffffffffffffffff16929092176e0100000000000000000000000000006fffffffffffffffffffffffffffffffff90921691909102179055565b61038f61063f565b60405161020b9190600060c08201905063ffffffff80845116835260ff602085015116602084015260ff6040850151166040840152806060850151166060840152806080850151166080840152506fffffffffffffffffffffffffffffffff60a08401511660a083015292915050565b60015461045a906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff928316602085015291169082015260600161020b565b600054610100900460ff16158080156104b35750600054600160ff909116105b806104cd5750303b1580156104cd575060005460ff166001145b61055e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156105bc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105c46107d6565b801561062757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b8060005a905061063a82826108b9565b505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091526107356040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c08101825260325463ffffffff8082168352640100000000820460ff9081166020850152650100000000008304169383019390935266010000000000008104831660608301526a0100000000000000000000810490921660808201526e0100000000000000000000000000009091046fffffffffffffffffffffffffffffffff1660a082015290565b905090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c0810182526301312d008152600a6020820152600891810191909152633b9aca006060820152620f424060808201526fffffffffffffffffffffffffffffffff60a082015290565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600054610100900460ff1661086d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610555565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6001546000906108ef907801000000000000000000000000000000000000000000000000900467ffffffffffffffff16436114b4565b905060006109b76040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c08101825260325463ffffffff8082168352640100000000820460ff9081166020850152650100000000008304169383019390935266010000000000008104831660608301526a0100000000000000000000810490921660808201526e0100000000000000000000000000009091046fffffffffffffffffffffffffffffffff1660a082015290565b90506000816020015160ff16826000015163ffffffff166109d891906114fa565b90508215610b0f57600154600090610a0f908390700100000000000000000000000000000000900467ffffffffffffffff16611562565b90506000836040015160ff1683610a2691906115d6565b600154610a469084906fffffffffffffffffffffffffffffffff166115d6565b610a5091906114fa565b600154909150600090610aa190610a7a9084906fffffffffffffffffffffffffffffffff16611692565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff16610ca2565b90506001861115610ad057610acd610a7a82876040015160ff1660018a610ac891906114b4565b610cbf565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090610b42908490700100000000000000000000000000000000900467ffffffffffffffff16611706565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161315610c25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d697400006064820152608401610555565b600154600090610c51906fffffffffffffffffffffffffffffffff1667ffffffffffffffff8816611732565b90506000610c6348633b9aca00610d14565b610c6d908361176f565b905060005a610c7c90886114b4565b905080821115610c9857610c98610c9382846114b4565b610d2d565b5050505050505050565b6000610cb7610cb18585610d56565b83610d66565b949350505050565b6000670de0b6b3a7640000610d00610cd785836114fa565b610ce990670de0b6b3a7640000611562565b610cfb85670de0b6b3a76400006115d6565b610d75565b610d0a90866115d6565b610cb791906114fa565b600081831015610d245781610d26565b825b9392505050565b6000805a90505b825a610d4090836114b4565b101561063a57610d4f82611783565b9150610d34565b600081831215610d245781610d26565b6000818312610d245781610d26565b6000610d26670de0b6b3a764000083610d8d86610da6565b610d9791906115d6565b610da191906114fa565b610fea565b6000808213610e11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610555565b60006060610e1e84611229565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c1821361101b57506000919050565b680755bf798b4a1bf1e5821261108d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f5700000000000000000000000000000000000000006044820152606401610555565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6000808211611294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610555565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b80356fffffffffffffffffffffffffffffffff8116811461131f57600080fd5b919050565b803567ffffffffffffffff8116811461131f57600080fd5b60008060006060848603121561135157600080fd5b61135a846112ff565b925061136860208501611324565b915061137660408501611324565b90509250925092565b60006020828403121561139157600080fd5b610d2682611324565b803563ffffffff8116811461131f57600080fd5b803560ff8116811461131f57600080fd5b600060c082840312156113d157600080fd5b60405160c0810181811067ffffffffffffffff8211171561141b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526114278361139a565b8152611435602084016113ae565b6020820152611446604084016113ae565b60408201526114576060840161139a565b60608201526114686080840161139a565b608082015261147960a084016112ff565b60a08201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156114c6576114c6611485565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611509576115096114cb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f80000000000000000000000000000000000000000000000000000000000000008314161561155d5761155d611485565b500590565b6000808312837f80000000000000000000000000000000000000000000000000000000000000000183128115161561159c5761159c611485565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0183138116156115d0576115d0611485565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561161757611617611485565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561165257611652611485565b6000871292508782058712848416161561166e5761166e611485565b8785058712818416161561168457611684611485565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038413811516156116cc576116cc611485565b827f800000000000000000000000000000000000000000000000000000000000000003841281161561170057611700611485565b50500190565b600067ffffffffffffffff80831681851680830382111561172957611729611485565b01949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561176a5761176a611485565b500290565b60008261177e5761177e6114cb565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036117b4576117b4611485565b506001019056fea164736f6c634300080f000a608060405234801561001057600080fd5b5060405161100d38038061100d83398101604081905261002f916100b5565b604080516060810182526001600160801b03949094168085526001600160401b0393841660208601819052929093169301839052600180546001600160c01b031916909217600160801b909102176001600160c01b0316600160c01b909202919091179055610106565b80516001600160401b03811681146100b057600080fd5b919050565b6000806000606084860312156100ca57600080fd5b83516001600160801b03811681146100e157600080fd5b92506100ef60208501610099565b91506100fd60408501610099565b90509250925092565b610ef8806101156000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633c62892914610051578063b4b64fbb1461006d578063cff0ab9614610080578063de893e6a14610114575b600080fd5b61005a60335481565b6040519081526020015b60405180910390f35b61005a61007b366004610b8b565b61011d565b6001546100db906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff9283166020850152911690820152606001610064565b61005a60325481565b6000805a905061012d838261013f565b5a6101389082610be4565b9392505050565b600154600090610175907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1643610be4565b90506000610181610471565b90506000816020015160ff16826000015163ffffffff166101a29190610c2a565b905082156102d9576001546000906101d9908390700100000000000000000000000000000000900467ffffffffffffffff16610c92565b90506000836040015160ff16836101f09190610d06565b6001546102109084906fffffffffffffffffffffffffffffffff16610d06565b61021a9190610c2a565b60015490915060009061026b906102449084906fffffffffffffffffffffffffffffffff16610dc2565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff1661052b565b9050600186111561029a5761029761024482876040015160ff1660018a6102929190610be4565b610548565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b6001805486919060109061030c908490700100000000000000000000000000000000900467ffffffffffffffff16610e36565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1613156103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d6974000060648201526084015b60405180910390fd5b600154600090610420906fffffffffffffffffffffffffffffffff1667ffffffffffffffff8816610e62565b9050600061043248633b9aca0061059d565b61043c9083610e9f565b905060005a61044b9088610be4565b905080821115610467576104676104628284610be4565b6105b4565b5050505050505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091526105266040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c0810182526301312d008152600a6020820152600891810191909152633b9aca006060820152620f424060808201526fffffffffffffffffffffffffffffffff60a082015290565b905090565b600061054061053a85856105e2565b836105f2565b949350505050565b6000670de0b6b3a76400006105896105608583610c2a565b61057290670de0b6b3a7640000610c92565b61058485670de0b6b3a7640000610d06565b610601565b6105939086610d06565b6105409190610c2a565b6000818310156105ad5781610138565b5090919050565b6000805a90505b825a6105c79083610be4565b10156105dd576105d682610eb3565b91506105bb565b505050565b6000818312156105ad5781610138565b60008183126105ad5781610138565b6000610138670de0b6b3a76400008361061986610632565b6106239190610d06565b61062d9190610c2a565b610876565b600080821361069d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016103eb565b600060606106aa84610ab5565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c182136108a757506000919050565b680755bf798b4a1bf1e58212610919576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f57000000000000000000000000000000000000000060448201526064016103eb565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6000808211610b20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016103eb565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b600060208284031215610b9d57600080fd5b813567ffffffffffffffff8116811461013857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015610bf657610bf6610bb5565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082610c3957610c39610bfb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615610c8d57610c8d610bb5565b500590565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615610ccc57610ccc610bb5565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615610d0057610d00610bb5565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600084136000841385830485118282161615610d4757610d47610bb5565b7f80000000000000000000000000000000000000000000000000000000000000006000871286820588128184161615610d8257610d82610bb5565b60008712925087820587128484161615610d9e57610d9e610bb5565b87850587128184161615610db457610db4610bb5565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615610dfc57610dfc610bb5565b827f8000000000000000000000000000000000000000000000000000000000000000038412811615610e3057610e30610bb5565b50500190565b600067ffffffffffffffff808316818516808303821115610e5957610e59610bb5565b01949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610e9a57610e9a610bb5565b500290565b600082610eae57610eae610bfb565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610ee457610ee4610bb5565b506001019056fea164736f6c634300080f000a5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f726520676173207468616e20617661696c61626c6520676173206c696d6974a164736f6c634300080f000a",
  "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620000e55760003560e01c8063916a17c6116200008b578063e20c9f711162000062578063e20c9f71146200018d578063fa7626d41462000197578063fce0ff9414620001a557600080fd5b8063916a17c6146200015e578063b5508aa91462000168578063ba414fa6146200017257600080fd5b80633f7286f411620000c05780633f7286f4146200012257806366d9a9a0146200012c57806385226c81146200014557600080fd5b80630a9254e414620000ea5780631ed7831c14620000f65780633e5e3c231462000118575b600080fd5b620000f4620001af565b005b62000100620004ef565b6040516200010f91906200203b565b60405180910390f35b6200010062000560565b62000100620005cf565b620001366200063e565b6040516200010f919062002097565b6200014f62000753565b6040516200010f919062002210565b620001366200082d565b6200014f62000939565b6200017c62000a13565b60405190151581526020016200010f565b6200010062000b7d565b6000546200017c9060ff1681565b620000f462000bec565b6040517f1f7b4f30000000000000000000000000000000000000000000000000000000008152620f42406004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90631f7b4f3090602401600060405180830381600087803b1580156200021857600080fd5b505af11580156200022d573d6000803e3d6000fd5b50505050600060405162000241906200201f565b604051809103906000f0801580156200025e573d6000803e3d6000fd5b50905060008173ffffffffffffffffffffffffffffffffffffffff1663cc731b026040518163ffffffff1660e01b815260040160c060405180830381865afa158015620002af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d59190620022ea565b606081015160a08201516fffffffffffffffffffffffffffffffff167001000000000000000000000000000000000263ffffffff91821617601b558151601c80547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016919092169081179091556020820151919250620003599160ff16906200240d565b601c60086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015620003f0573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262000438919081019062002437565b6040516020016200044a91906200252c565b604051602081830303815290604052601d908162000469919062002616565b506040517ff1afe04d000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f1afe04d90620004bd90601d90600401620027e0565b600060405180830381600087803b158015620004d857600080fd5b505af1925050508015620004ea575060015b505050565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200055657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200052a575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015620005565760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200052a575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620005565760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200052a575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b828210156200074a57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156200073157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620006dd5790505b5050505050815250508152602001906001019062000662565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b828210156200074a57838290600052602060002001805462000799906200256f565b80601f0160208091040260200160405190810160405280929190818152602001828054620007c7906200256f565b8015620008185780601f10620007ec5761010080835404028352916020019162000818565b820191906000526020600020905b815481529060010190602001808311620007fa57829003601f168201915b50505050508152602001906001019062000777565b60606013805480602002602001604051908101604052809291908181526020016000905b828210156200074a57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156200092057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620008cc5790505b5050505050815250508152602001906001019062000851565b60606010805480602002602001604051908101604052809291908181526020016000905b828210156200074a5783829060005260206000200180546200097f906200256f565b80601f0160208091040260200160405190810160405280929190818152602001828054620009ad906200256f565b8015620009fe5780601f10620009d257610100808354040283529160200191620009fe565b820191906000526020600020905b815481529060010190602001808311620009e057829003601f168201915b5050505050815260200190600101906200095d565b60008054610100900460ff161562000a345750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562000b785760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162000adc917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001620027fc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262000b169162002846565b6000604051808303816000865af19150503d806000811462000b55576040519150601f19603f3d011682016040523d82523d6000602084013e62000b5a565b606091505b509150508080602001905181019062000b74919062002864565b9150505b919050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620005565760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200052a575050505050905090565b6040517f619d897f000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063619d897f9062000c3f90601d9060040162002888565b600060405180830381600087803b15801562000c5a57600080fd5b505af115801562000c6f573d6000803e3d6000fd5b50600092506005915062000c809050565b60405190808252806020026020018201604052801562000caa578160200160208202803683370190505b50601b5481519192506fffffffffffffffffffffffffffffffff1690829060009062000cda5762000cda6200294e565b6fffffffffffffffffffffffffffffffff9283166020918202929092010152601b548251700100000000000000000000000000000000909104909116908290600190811062000d2d5762000d2d6200294e565b60200260200101906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff1681525050640ba43b74008160028151811062000d7b5762000d7b6200294e565b60200260200101906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff168152505064174876e8008160038151811062000dc95762000dc96200294e565b60200260200101906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff1681525050642e90edd0008160048151811062000e175762000e176200294e565b6fffffffffffffffffffffffffffffffff929092166020928302919091019091015260408051600180825281830190925260009181602001602082028036833701905050905060008160008151811062000e755762000e756200294e565b67ffffffffffffffff92909216602092830291909101820152604080516002808252606082018352600093919290918301908036833701905050905060008160008151811062000ec95762000ec96200294e565b602002602001019067ffffffffffffffff16908167ffffffffffffffff168152505060018160018151811062000f035762000f036200294e565b67ffffffffffffffff929092166020928302919091018201526040805160038082526080820190925260009290919082016060803683375050601c54825192935067ffffffffffffffff169183915060009062000f645762000f646200294e565b67ffffffffffffffff9283166020918202929092010152601c54825168010000000000000000909104909116908290600190811062000fa75762000fa76200294e565b602002602001019067ffffffffffffffff16908167ffffffffffffffff1681525050620186a08160028151811062000fe35762000fe36200294e565b67ffffffffffffffff9290921660209283029190910182015260408051600480825260a082019092526000929091908201608080368337019050509050633b9aca00816000815181106200103b576200103b6200294e565b602002602001018181525050640ba43b7400816001815181106200106357620010636200294e565b602002602001018181525050641176592e00816002815181106200108b576200108b6200294e565b60200260200101818152505064174876e80081600381518110620010b357620010b36200294e565b60209081029190910101526040805160028082526060820190925260009181602001602082028036833701905050905061064081600081518110620010fc57620010fc6200294e565b602002602001018181525050610c80816001815181106200112157620011216200294e565b60200260200101818152505060005b865181101562001e185760005b865181101562001e025760005b865181101562001dec5760005b865181101562001dd65760005b865181101562001dc05760005b865181101562001daa5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff16639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620011ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200121491906200297d565b905060008d88815181106200122d576200122d6200294e565b6020026020010151905060008d88815181106200124e576200124e6200294e565b6020026020010151905060008d88815181106200126f576200126f6200294e565b6020026020010151905060008d88815181106200129057620012906200294e565b6020026020010151905060008d8881518110620012b157620012b16200294e565b6020026020010151905060008d8881518110620012d257620012d26200294e565b602090810291909101810151604080518082018252600781527f737563636573730000000000000000000000000000000000000000000000000093810193909352517f39b37ab000000000000000000000000000000000000000000000000000000000815260048101859052909250737109709ecfa91a80626ff3989d68f67f5b1dd12d906339b37ab090602401600060405180830381600087803b1580156200137b57600080fd5b505af115801562001390573d6000803e3d6000fd5b505050506000878743604051620013a7906200202d565b6fffffffffffffffffffffffffffffffff909316835267ffffffffffffffff9182166020840152166040820152606001604051809103906000f080158015620013f4573d6000803e3d6000fd5b509050737109709ecfa91a80626ff3989d68f67f5b1dd12d631f7b4f306200142767ffffffffffffffff89164362002997565b6040518263ffffffff1660e01b81526004016200144691815260200190565b600060405180830381600087803b1580156200146157600080fd5b505af115801562001476573d6000803e3d6000fd5b50506040517fb4b64fbb00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff881660048201526000925073ffffffffffffffffffffffffffffffffffffffff8416915063b4b64fbb906301c9c3809060240160206040518083038160008887f19350505050801562001537575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925262001534918101906200297d565b60015b62001672573d80801562001568576040519150601f19603f3d011682016040523d82523d6000602084013e6200156d565b606091505b5080516020820120601e548103620015a1576040518060600160405280603e8152602001620057e8603e913994506200166a565b601f548103620015e9576040518060400160405280601d81526020017f61726974686d65746963206f766572666c6f772f756e646572666c6f7700000081525094506200166a565b602054810362001631576040518060400160405280600a81526020017f6f7574206f66206761730000000000000000000000000000000000000000000081525094506200166a565b6040518060400160405280600d81526020017f554e4b4e4f574e204552524f520000000000000000000000000000000000000081525094505b505062001675565b90505b6000670de0b6b3a7640000856200168d8885620029b2565b620016999190620029b2565b620016a59190620029f2565b6040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff8c166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063619d897f90601d908390636900a3ae90602401600060405180830381865afa1580156200172e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262001776919081019062002437565b6040517f6900a3ae00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8e166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015620017e9573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262001831919081019062002437565b6040517f6900a3ae00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8e166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015620018a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052620018ec919081019062002437565b6040517f6900a3ae000000000000000000000000000000000000000000000000000000008152600481018d9052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801562001956573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526200199e919081019062002437565b6040517f6900a3ae00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8f166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801562001a11573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262001a59919081019062002437565b6040517f6900a3ae000000000000000000000000000000000000000000000000000000008152600481018b9052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801562001ac3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262001b0b919081019062002437565b6040517f6900a3ae000000000000000000000000000000000000000000000000000000008152600481018f9052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801562001b75573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262001bbd919081019062002437565b6040517f6900a3ae000000000000000000000000000000000000000000000000000000008152600481018c9052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801562001c27573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262001c6f919081019062002437565b8e60405160200162001c8a9998979695949392919062002a09565b6040516020818303038152906040526040518363ffffffff1660e01b815260040162001cb892919062002c42565b600060405180830381600087803b15801562001cd357600080fd5b505af115801562001ce8573d6000803e3d6000fd5b50506040517f44d7f0a4000000000000000000000000000000000000000000000000000000008152600481018e905262001d899250737109709ecfa91a80626ff3989d68f67f5b1dd12d91506344d7f0a4906024016020604051808303816000875af115801562001d5d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d83919062002864565b62001e21565b5050505050505050505050808062001da19062002c74565b91505062001171565b508062001db78162002c74565b91505062001164565b508062001dcd8162002c74565b91505062001157565b508062001de38162002c74565b9150506200114a565b508062001df98162002c74565b9150506200113d565b508062001e0f8162002c74565b91505062001130565b50505050505050565b8062001e99577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162001e879060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162001e9962001e9c565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562001ff15760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262001f6e9291602001620027fc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262001fa89162002846565b6000604051808303816000865af19150503d806000811462001fe7576040519150601f19603f3d011682016040523d82523d6000602084013e62001fec565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b611b2b8062002cb083390190565b61100d80620047db83390190565b6020808252825182820181905260009190848201906040850190845b818110156200208b57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162002057565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562002182578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00186528251805173ffffffffffffffffffffffffffffffffffffffff168552880151888501889052805188860181905290890190839060608701905b808310156200216c5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062002128565b50978a01979550505091870191600101620020bf565b50919998505050505050505050565b60005b83811015620021ae57818101518382015260200162002194565b83811115620021be576000848401525b50505050565b60008151808452620021de81602086016020860162002191565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562002287577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845262002274858351620021c4565b9450928501929085019060010162002237565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b805163ffffffff8116811462000b7857600080fd5b805160ff8116811462000b7857600080fd5b600060c08284031215620022fd57600080fd5b60405160c0810181811067ffffffffffffffff8211171562002323576200232362002294565b6040526200233183620022c3565b81526200234160208401620022d8565b60208201526200235460408401620022d8565b60408201526200236760608401620022c3565b60608201526200237a60808401620022c3565b608082015260a08301516fffffffffffffffffffffffffffffffff81168114620023a357600080fd5b60a08201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808416806200242b576200242b620023af565b92169190910492915050565b6000602082840312156200244a57600080fd5b815167ffffffffffffffff808211156200246357600080fd5b818401915084601f8301126200247857600080fd5b8151818111156200248d576200248d62002294565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715620024d657620024d662002294565b81604052828152876020848701011115620024f057600080fd5b6200250383602083016020880162002191565b979650505050505050565b600081516200252281856020860162002191565b9290920192915050565b600082516200254081846020870162002191565b7f2f2e7265736f757263652d6d65746572696e672e637376000000000000000000920191825250601701919050565b600181811c908216806200258457607f821691505b602082108103620025be577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115620004ea57600081815260208120601f850160051c81016020861015620025ed5750805b601f850160051c820191505b818110156200260e57828155600101620025f9565b505050505050565b815167ffffffffffffffff81111562002633576200263362002294565b6200264b816200264484546200256f565b84620025c4565b602080601f831160018114620026a157600084156200266a5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556200260e565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015620026f057888601518255948401946001909101908401620026cf565b50858210156200272d57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600081546200274c816200256f565b8085526020600183811680156200276c5760018114620027a557620027d5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838901528284151560051b8901019550620027d5565b866000528260002060005b85811015620027cd5781548a8201860152908301908401620027b0565b890184019650505b505050505092915050565b602081526000620027f560208301846200273d565b9392505050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200283881600485016020870162002191565b919091016004019392505050565b600082516200285a81846020870162002191565b9190910192915050565b6000602082840312156200287757600080fd5b81518015158114620027f557600080fd5b6040815260006200289d60408301846200273d565b8281036020840152606681527f70726576426173654665652c70726576426f756768744761732c70726576426c60208201527f6f636b4e756d446966662c6c31426173654665652c726571756573746564476160408201527f732c676173436f6e73756d65642c65746850726963652c757364436f73742c7360608201527f7563636573730000000000000000000000000000000000000000000000000000608082015260a0810191505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156200299057600080fd5b5051919050565b60008219821115620029ad57620029ad620023de565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620029ed57620029ed620023de565b500290565b60008262002a045762002a04620023af565b500490565b60008a5162002a1d818460208f0162002191565b7f2c000000000000000000000000000000000000000000000000000000000000009083019081528a5162002a59816001840160208f0162002191565b7f2c0000000000000000000000000000000000000000000000000000000000000060019290910191820152895162002a99816002840160208e0162002191565b7f2c0000000000000000000000000000000000000000000000000000000000000060029290910191820152885162002ad9816003840160208d0162002191565b0162002b07600382017f2c000000000000000000000000000000000000000000000000000000000000009052565b62002b1660048201896200250e565b7f2c000000000000000000000000000000000000000000000000000000000000008152905062002b4a60018201886200250e565b7f2c00000000000000000000000000000000000000000000000000000000000000815290507f2400000000000000000000000000000000000000000000000000000000000000600182015262002ba460028201876200250e565b7f2c00000000000000000000000000000000000000000000000000000000000000815290507f2400000000000000000000000000000000000000000000000000000000000000600182015262002bfe60028201866200250e565b7f2c000000000000000000000000000000000000000000000000000000000000008152905062002c3260018201856200250e565b9c9b505050505050505050505050565b60408152600062002c5760408301856200273d565b828103602084015262002c6b8185620021c4565b95945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362002ca85762002ca8620023de565b506001019056fe60806040523480156200001157600080fd5b506200001c620000f8565b620000316200022a60201b6200073a1760201c565b805160328054602084015160408501516060860151608087015160a09097015163ffffffff96871664ffffffffff199095169490941764010000000060ff948516021764ffffffffff60281b191665010000000000939092169290920263ffffffff60301b19161766010000000000009185169190910217600160501b600160f01b0319166a01000000000000000000009390941692909202600160701b600160f01b03191692909217600160701b6001600160801b039092169190910217905562000353565b600054610100900460ff1615808015620001195750600054600160ff909116105b806200014957506200013630620002a160201b620007ba1760201c565b15801562000149575060005460ff166001145b620001b25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015620001d6576000805461ff0019166101001790555b620001e0620002b0565b801562000227576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c0810182526301312d008152600a6020820152600891810191909152633b9aca006060820152620f424060808201526001600160801b0360a082015290565b6001600160a01b03163b151590565b600054610100900460ff166200031d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620001a9565b60408051606081018252633b9aca0080825260006020830152436001600160401b031691909201819052600160c01b0217600155565b6117c880620003636000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063b4b64fbb1161005b578063b4b64fbb1461021c578063b77429a01461022f578063cc731b0214610387578063cff0ab96146103ff57600080fd5b80636f1696061461008257806381171ef81461014e5780638129fc1c14610214575b600080fd5b61014c61009036600461133c565b604080516060810182526fffffffffffffffffffffffffffffffff9490941680855267ffffffffffffffff93841660208601819052929093169301839052600180547fffffffffffffffff000000000000000000000000000000000000000000000000169092177001000000000000000000000000000000009091021777ffffffffffffffffffffffffffffffffffffffffffffffff167801000000000000000000000000000000000000000000000000909202919091179055565b005b6032546101bd9063ffffffff8082169160ff640100000000820481169265010000000000830490911691660100000000000081048216916a0100000000000000000000820416906fffffffffffffffffffffffffffffffff6e0100000000000000000000000000009091041686565b6040805163ffffffff978816815260ff96871660208201529490951694840194909452908416606083015290921660808301526fffffffffffffffffffffffffffffffff1660a082015260c0015b60405180910390f35b61014c610493565b61014c61022a36600461137f565b61062a565b61014c61023d3660046113bf565b805160328054602084015160408501516060860151608087015160a09097015163ffffffff9687167fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009095169490941764010000000060ff94851602177fffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff166501000000000093909216929092027fffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff1617660100000000000091851691909102177fffff0000000000000000000000000000000000000000ffffffffffffffffffff166a010000000000000000000093909416929092027fffff00000000000000000000000000000000ffffffffffffffffffffffffffff16929092176e0100000000000000000000000000006fffffffffffffffffffffffffffffffff90921691909102179055565b61038f61063f565b60405161020b9190600060c08201905063ffffffff80845116835260ff602085015116602084015260ff6040850151166040840152806060850151166060840152806080850151166080840152506fffffffffffffffffffffffffffffffff60a08401511660a083015292915050565b60015461045a906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff928316602085015291169082015260600161020b565b600054610100900460ff16158080156104b35750600054600160ff909116105b806104cd5750303b1580156104cd575060005460ff166001145b61055e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156105bc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105c46107d6565b801561062757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b8060005a905061063a82826108b9565b505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091526107356040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c08101825260325463ffffffff8082168352640100000000820460ff9081166020850152650100000000008304169383019390935266010000000000008104831660608301526a0100000000000000000000810490921660808201526e0100000000000000000000000000009091046fffffffffffffffffffffffffffffffff1660a082015290565b905090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c0810182526301312d008152600a6020820152600891810191909152633b9aca006060820152620f424060808201526fffffffffffffffffffffffffffffffff60a082015290565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600054610100900460ff1661086d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610555565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6001546000906108ef907801000000000000000000000000000000000000000000000000900467ffffffffffffffff16436114b4565b905060006109b76040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c08101825260325463ffffffff8082168352640100000000820460ff9081166020850152650100000000008304169383019390935266010000000000008104831660608301526a0100000000000000000000810490921660808201526e0100000000000000000000000000009091046fffffffffffffffffffffffffffffffff1660a082015290565b90506000816020015160ff16826000015163ffffffff166109d891906114fa565b90508215610b0f57600154600090610a0f908390700100000000000000000000000000000000900467ffffffffffffffff16611562565b90506000836040015160ff1683610a2691906115d6565b600154610a469084906fffffffffffffffffffffffffffffffff166115d6565b610a5091906114fa565b600154909150600090610aa190610a7a9084906fffffffffffffffffffffffffffffffff16611692565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff16610ca2565b90506001861115610ad057610acd610a7a82876040015160ff1660018a610ac891906114b4565b610cbf565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090610b42908490700100000000000000000000000000000000900467ffffffffffffffff16611706565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161315610c25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d697400006064820152608401610555565b600154600090610c51906fffffffffffffffffffffffffffffffff1667ffffffffffffffff8816611732565b90506000610c6348633b9aca00610d14565b610c6d908361176f565b905060005a610c7c90886114b4565b905080821115610c9857610c98610c9382846114b4565b610d2d565b5050505050505050565b6000610cb7610cb18585610d56565b83610d66565b949350505050565b6000670de0b6b3a7640000610d00610cd785836114fa565b610ce990670de0b6b3a7640000611562565b610cfb85670de0b6b3a76400006115d6565b610d75565b610d0a90866115d6565b610cb791906114fa565b600081831015610d245781610d26565b825b9392505050565b6000805a90505b825a610d4090836114b4565b101561063a57610d4f82611783565b9150610d34565b600081831215610d245781610d26565b6000818312610d245781610d26565b6000610d26670de0b6b3a764000083610d8d86610da6565b610d9791906115d6565b610da191906114fa565b610fea565b6000808213610e11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610555565b60006060610e1e84611229565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c1821361101b57506000919050565b680755bf798b4a1bf1e5821261108d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f5700000000000000000000000000000000000000006044820152606401610555565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6000808211611294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610555565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b80356fffffffffffffffffffffffffffffffff8116811461131f57600080fd5b919050565b803567ffffffffffffffff8116811461131f57600080fd5b60008060006060848603121561135157600080fd5b61135a846112ff565b925061136860208501611324565b915061137660408501611324565b90509250925092565b60006020828403121561139157600080fd5b610d2682611324565b803563ffffffff8116811461131f57600080fd5b803560ff8116811461131f57600080fd5b600060c082840312156113d157600080fd5b60405160c0810181811067ffffffffffffffff8211171561141b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526114278361139a565b8152611435602084016113ae565b6020820152611446604084016113ae565b60408201526114576060840161139a565b60608201526114686080840161139a565b608082015261147960a084016112ff565b60a08201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156114c6576114c6611485565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611509576115096114cb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f80000000000000000000000000000000000000000000000000000000000000008314161561155d5761155d611485565b500590565b6000808312837f80000000000000000000000000000000000000000000000000000000000000000183128115161561159c5761159c611485565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0183138116156115d0576115d0611485565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561161757611617611485565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561165257611652611485565b6000871292508782058712848416161561166e5761166e611485565b8785058712818416161561168457611684611485565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038413811516156116cc576116cc611485565b827f800000000000000000000000000000000000000000000000000000000000000003841281161561170057611700611485565b50500190565b600067ffffffffffffffff80831681851680830382111561172957611729611485565b01949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561176a5761176a611485565b500290565b60008261177e5761177e6114cb565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036117b4576117b4611485565b506001019056fea164736f6c634300080f000a608060405234801561001057600080fd5b5060405161100d38038061100d83398101604081905261002f916100b5565b604080516060810182526001600160801b03949094168085526001600160401b0393841660208601819052929093169301839052600180546001600160c01b031916909217600160801b909102176001600160c01b0316600160c01b909202919091179055610106565b80516001600160401b03811681146100b057600080fd5b919050565b6000806000606084860312156100ca57600080fd5b83516001600160801b03811681146100e157600080fd5b92506100ef60208501610099565b91506100fd60408501610099565b90509250925092565b610ef8806101156000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633c62892914610051578063b4b64fbb1461006d578063cff0ab9614610080578063de893e6a14610114575b600080fd5b61005a60335481565b6040519081526020015b60405180910390f35b61005a61007b366004610b8b565b61011d565b6001546100db906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff9283166020850152911690820152606001610064565b61005a60325481565b6000805a905061012d838261013f565b5a6101389082610be4565b9392505050565b600154600090610175907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1643610be4565b90506000610181610471565b90506000816020015160ff16826000015163ffffffff166101a29190610c2a565b905082156102d9576001546000906101d9908390700100000000000000000000000000000000900467ffffffffffffffff16610c92565b90506000836040015160ff16836101f09190610d06565b6001546102109084906fffffffffffffffffffffffffffffffff16610d06565b61021a9190610c2a565b60015490915060009061026b906102449084906fffffffffffffffffffffffffffffffff16610dc2565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff1661052b565b9050600186111561029a5761029761024482876040015160ff1660018a6102929190610be4565b610548565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b6001805486919060109061030c908490700100000000000000000000000000000000900467ffffffffffffffff16610e36565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1613156103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d6974000060648201526084015b60405180910390fd5b600154600090610420906fffffffffffffffffffffffffffffffff1667ffffffffffffffff8816610e62565b9050600061043248633b9aca0061059d565b61043c9083610e9f565b905060005a61044b9088610be4565b905080821115610467576104676104628284610be4565b6105b4565b5050505050505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091526105266040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c0810182526301312d008152600a6020820152600891810191909152633b9aca006060820152620f424060808201526fffffffffffffffffffffffffffffffff60a082015290565b905090565b600061054061053a85856105e2565b836105f2565b949350505050565b6000670de0b6b3a76400006105896105608583610c2a565b61057290670de0b6b3a7640000610c92565b61058485670de0b6b3a7640000610d06565b610601565b6105939086610d06565b6105409190610c2a565b6000818310156105ad5781610138565b5090919050565b6000805a90505b825a6105c79083610be4565b10156105dd576105d682610eb3565b91506105bb565b505050565b6000818312156105ad5781610138565b60008183126105ad5781610138565b6000610138670de0b6b3a76400008361061986610632565b6106239190610d06565b61062d9190610c2a565b610876565b600080821361069d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016103eb565b600060606106aa84610ab5565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c182136108a757506000919050565b680755bf798b4a1bf1e58212610919576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f57000000000000000000000000000000000000000060448201526064016103eb565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6000808211610b20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016103eb565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b600060208284031215610b9d57600080fd5b813567ffffffffffffffff8116811461013857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015610bf657610bf6610bb5565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082610c3957610c39610bfb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615610c8d57610c8d610bb5565b500590565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615610ccc57610ccc610bb5565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615610d0057610d00610bb5565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600084136000841385830485118282161615610d4757610d47610bb5565b7f80000000000000000000000000000000000000000000000000000000000000006000871286820588128184161615610d8257610d82610bb5565b60008712925087820587128484161615610d9e57610d9e610bb5565b87850587128184161615610db457610db4610bb5565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615610dfc57610dfc610bb5565b827f8000000000000000000000000000000000000000000000000000000000000000038412811615610e3057610e30610bb5565b50500190565b600067ffffffffffffffff808316818516808303821115610e5957610e59610bb5565b01949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610e9a57610e9a610bb5565b500290565b600082610eae57610eae610bfb565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610ee457610ee4610bb5565b506001019056fea164736f6c634300080f000a5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f726520676173207468616e20617661696c61626c6520676173206c696d6974a164736f6c634300080f000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
