0x60806040526040518060400160405280601281526020017f42617365642046617468657220427265747400000000000000000000000000008152505f90816200004991906200048a565b506040518060400160405280600581526020017f4652455454000000000000000000000000000000000000000000000000000000815250600190816200009091906200048a565b50601260025f6101000a81548160ff021916908360ff160217905550348015620000b8575f80fd5b503360045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025f9054906101000a900460ff1660ff16600a620001199190620006eb565b6402540be4006200012b91906200073b565b60038190555060035460055f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405162000218919062000796565b60405180910390a3620007b1565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620002a257607f821691505b602082108103620002b857620002b76200025d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200031c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002df565b620003288683620002df565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620003726200036c620003668462000340565b62000349565b62000340565b9050919050565b5f819050919050565b6200038d8362000352565b620003a56200039c8262000379565b848454620002eb565b825550505050565b5f90565b620003bb620003ad565b620003c881848462000382565b505050565b5b81811015620003ef57620003e35f82620003b1565b600181019050620003ce565b5050565b601f8211156200043e576200040881620002be565b6200041384620002d0565b8101602085101562000423578190505b6200043b6200043285620002d0565b830182620003cd565b50505b505050565b5f82821c905092915050565b5f620004605f198460080262000443565b1980831691505092915050565b5f6200047a83836200044f565b9150826002028217905092915050565b620004958262000226565b67ffffffffffffffff811115620004b157620004b062000230565b5b620004bd82546200028a565b620004ca828285620003f3565b5f60209050601f83116001811462000500575f8415620004eb578287015190505b620004f785826200046d565b86555062000566565b601f1984166200051086620002be565b5f5b82811015620005395784890151825560018201915060208501945060208101905062000512565b8683101562000559578489015162000555601f8916826200044f565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620005f857808604811115620005d057620005cf6200056e565b5b6001851615620005e05780820291505b8081029050620005f0856200059b565b9450620005b0565b94509492505050565b5f82620006125760019050620006e4565b8162000621575f9050620006e4565b81600181146200063a576002811462000645576200067b565b6001915050620006e4565b60ff8411156200065a57620006596200056e565b5b8360020a9150848211156200067457620006736200056e565b5b50620006e4565b5060208310610133831016604e8410600b8410161715620006b55782820a905083811115620006af57620006ae6200056e565b5b620006e4565b620006c48484846001620005a7565b92509050818404811115620006de57620006dd6200056e565b5b81810290505b9392505050565b5f620006f78262000340565b9150620007048362000340565b9250620007337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000601565b905092915050565b5f620007478262000340565b9150620007548362000340565b9250828202620007648162000340565b915082820484148315176200077e576200077d6200056e565b5b5092915050565b620007908162000340565b82525050565b5f602082019050620007ab5f83018462000785565b92915050565b61110a80620007bf5f395ff3fe608060405234801561000f575f80fd5b50600436106100a7575f3560e01c806370a082311161006f57806370a0823114610165578063715018a6146101955780638da5cb5b1461019f57806395d89b41146101bd578063a9059cbb146101db578063dd62ed3e1461020b576100a7565b806306fdde03146100ab578063095ea7b3146100c957806318160ddd146100f957806323b872dd14610117578063313ce56714610147575b5f80fd5b6100b361023b565b6040516100c09190610aef565b60405180910390f35b6100e360048036038101906100de9190610ba0565b6102c6565b6040516100f09190610bf8565b60405180910390f35b6101016102dc565b60405161010e9190610c20565b60405180910390f35b610131600480360381019061012c9190610c39565b6102e2565b60405161013e9190610bf8565b60405180910390f35b61014f610387565b60405161015c9190610ca4565b60405180910390f35b61017f600480360381019061017a9190610cbd565b610399565b60405161018c9190610c20565b60405180910390f35b61019d6103df565b005b6101a761052b565b6040516101b49190610cf7565b60405180910390f35b6101c5610550565b6040516101d29190610aef565b60405180910390f35b6101f560048036038101906101f09190610ba0565b6105dc565b6040516102029190610bf8565b60405180910390f35b61022560048036038101906102209190610d10565b6105f2565b6040516102329190610c20565b60405180910390f35b5f805461024790610d7b565b80601f016020809104026020016040519081016040528092919081815260200182805461027390610d7b565b80156102be5780601f10610295576101008083540402835291602001916102be565b820191905f5260205f20905b8154815290600101906020018083116102a157829003601f168201915b505050505081565b5f6102d2338484610674565b6001905092915050565b60035481565b5f6102ee848484610837565b61037c84338460065f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546103779190610dd8565b610674565b600190509392505050565b60025f9054906101000a900460ff1681565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461046e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046590610e55565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6001805461055d90610d7b565b80601f016020809104026020016040519081016040528092919081815260200182805461058990610d7b565b80156105d45780601f106105ab576101008083540402835291602001916105d4565b820191905f5260205f20905b8154815290600101906020018083116105b757829003601f168201915b505050505081565b5f6105e8338484610837565b6001905092915050565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d990610ebd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074790610f25565b60405180910390fd5b8060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161082a9190610c20565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089c90610f8d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a90610ff5565b60405180910390fd5b5f8111610955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094c90611083565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109a19190610dd8565b925050819055508060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109f491906110a1565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a589190610c20565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610a9c578082015181840152602081019050610a81565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610ac182610a65565b610acb8185610a6f565b9350610adb818560208601610a7f565b610ae481610aa7565b840191505092915050565b5f6020820190508181035f830152610b078184610ab7565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610b3c82610b13565b9050919050565b610b4c81610b32565b8114610b56575f80fd5b50565b5f81359050610b6781610b43565b92915050565b5f819050919050565b610b7f81610b6d565b8114610b89575f80fd5b50565b5f81359050610b9a81610b76565b92915050565b5f8060408385031215610bb657610bb5610b0f565b5b5f610bc385828601610b59565b9250506020610bd485828601610b8c565b9150509250929050565b5f8115159050919050565b610bf281610bde565b82525050565b5f602082019050610c0b5f830184610be9565b92915050565b610c1a81610b6d565b82525050565b5f602082019050610c335f830184610c11565b92915050565b5f805f60608486031215610c5057610c4f610b0f565b5b5f610c5d86828701610b59565b9350506020610c6e86828701610b59565b9250506040610c7f86828701610b8c565b9150509250925092565b5f60ff82169050919050565b610c9e81610c89565b82525050565b5f602082019050610cb75f830184610c95565b92915050565b5f60208284031215610cd257610cd1610b0f565b5b5f610cdf84828501610b59565b91505092915050565b610cf181610b32565b82525050565b5f602082019050610d0a5f830184610ce8565b92915050565b5f8060408385031215610d2657610d25610b0f565b5b5f610d3385828601610b59565b9250506020610d4485828601610b59565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610d9257607f821691505b602082108103610da557610da4610d4e565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610de282610b6d565b9150610ded83610b6d565b9250828203905081811115610e0557610e04610dab565b5b92915050565b7f43616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f610e3f601783610a6f565b9150610e4a82610e0b565b602082019050919050565b5f6020820190508181035f830152610e6c81610e33565b9050919050565b7f417070726f76652066726f6d20746865207a65726f20616464726573730000005f82015250565b5f610ea7601d83610a6f565b9150610eb282610e73565b602082019050919050565b5f6020820190508181035f830152610ed481610e9b565b9050919050565b7f417070726f766520746f20746865207a65726f206164647265737300000000005f82015250565b5f610f0f601b83610a6f565b9150610f1a82610edb565b602082019050919050565b5f6020820190508181035f830152610f3c81610f03565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f206164647265737300005f82015250565b5f610f77601e83610a6f565b9150610f8282610f43565b602082019050919050565b5f6020820190508181035f830152610fa481610f6b565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373000000005f82015250565b5f610fdf601c83610a6f565b9150610fea82610fab565b602082019050919050565b5f6020820190508181035f83015261100c81610fd3565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61106d602983610a6f565b915061107882611013565b604082019050919050565b5f6020820190508181035f83015261109a81611061565b9050919050565b5f6110ab82610b6d565b91506110b683610b6d565b92508282019050808211156110ce576110cd610dab565b5b9291505056fea2646970667358221220c299b3894c8e0dab157f471921680de104b3f3676c201d42416e818fb99b687364736f6c63430008180033