608060405234801561000f575f80fd5b503360015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260ff16600a61006191906102ca565b633b9aca006100709190610314565b5f819055505f5460025f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f546040516101589190610364565b60405180910390a361037d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156101e7578086048111156101c3576101c2610165565b5b60018516156101d25780820291505b80810290506101e085610192565b94506101a7565b94509492505050565b5f826101ff57600190506102ba565b8161020c575f90506102ba565b8160018114610222576002811461022c5761025b565b60019150506102ba565b60ff84111561023e5761023d610165565b5b8360020a91508482111561025557610254610165565b5b506102ba565b5060208310610133831016604e8410600b84101617156102905782820a90508381111561028b5761028a610165565b5b6102ba565b61029d848484600161019e565b925090508184048111156102b4576102b3610165565b5b81810290505b9392505050565b5f819050919050565b5f6102d4826102c1565b91506102df836102c1565b925061030c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846101f0565b905092915050565b5f61031e826102c1565b9150610329836102c1565b9250828202610337816102c1565b9150828204841483151761034e5761034d610165565b5b5092915050565b61035e816102c1565b82525050565b5f6020820190506103775f830184610355565b92915050565b610fe08061038a5f395ff3fe608060405234801561000f575f80fd5b50600436106100a7575f3560e01c806370a082311161006f57806370a0823114610165578063715018a6146101955780638da5cb5b1461019f57806395d89b41146101bd578063a9059cbb146101db578063dd62ed3e1461020b576100a7565b806306fdde03146100ab578063095ea7b3146100c957806318160ddd146100f957806323b872dd14610117578063313ce56714610147575b5f80fd5b6100b361023b565b6040516100c09190610a22565b60405180910390f35b6100e360048036038101906100de9190610ad3565b610274565b6040516100f09190610b2b565b60405180910390f35b61010161028a565b60405161010e9190610b53565b60405180910390f35b610131600480360381019061012c9190610b6c565b61028f565b60405161013e9190610b2b565b60405180910390f35b61014f610334565b60405161015c9190610bd7565b60405180910390f35b61017f600480360381019061017a9190610bf0565b610339565b60405161018c9190610b53565b60405180910390f35b61019d61037f565b005b6101a76104cb565b6040516101b49190610c2a565b60405180910390f35b6101c56104f0565b6040516101d29190610a22565b60405180910390f35b6101f560048036038101906101f09190610ad3565b610529565b6040516102029190610b2b565b60405180910390f35b61022560048036038101906102209190610c43565b61053f565b6040516102329190610b53565b60405180910390f35b6040518060400160405280600d81526020017f427265747427732042756e6e790000000000000000000000000000000000000081525081565b5f6102803384846105c1565b6001905092915050565b5f5481565b5f61029b848484610784565b61032984338460035f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546103249190610cae565b6105c1565b600190509392505050565b601281565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461040e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040590610d2b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600581526020017f4252554e5900000000000000000000000000000000000000000000000000000081525081565b5f610535338484610784565b6001905092915050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361062f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062690610d93565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361069d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069490610dfb565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107779190610b53565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e990610e63565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085790610ecb565b60405180910390fd5b5f81116108a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089990610f59565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108ee9190610cae565b925050819055508060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109419190610f77565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516109a59190610b53565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6109f4826109b2565b6109fe81856109bc565b9350610a0e8185602086016109cc565b610a17816109da565b840191505092915050565b5f6020820190508181035f830152610a3a81846109ea565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610a6f82610a46565b9050919050565b610a7f81610a65565b8114610a89575f80fd5b50565b5f81359050610a9a81610a76565b92915050565b5f819050919050565b610ab281610aa0565b8114610abc575f80fd5b50565b5f81359050610acd81610aa9565b92915050565b5f8060408385031215610ae957610ae8610a42565b5b5f610af685828601610a8c565b9250506020610b0785828601610abf565b9150509250929050565b5f8115159050919050565b610b2581610b11565b82525050565b5f602082019050610b3e5f830184610b1c565b92915050565b610b4d81610aa0565b82525050565b5f602082019050610b665f830184610b44565b92915050565b5f805f60608486031215610b8357610b82610a42565b5b5f610b9086828701610a8c565b9350506020610ba186828701610a8c565b9250506040610bb286828701610abf565b9150509250925092565b5f60ff82169050919050565b610bd181610bbc565b82525050565b5f602082019050610bea5f830184610bc8565b92915050565b5f60208284031215610c0557610c04610a42565b5b5f610c1284828501610a8c565b91505092915050565b610c2481610a65565b82525050565b5f602082019050610c3d5f830184610c1b565b92915050565b5f8060408385031215610c5957610c58610a42565b5b5f610c6685828601610a8c565b9250506020610c7785828601610a8c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610cb882610aa0565b9150610cc383610aa0565b9250828203905081811115610cdb57610cda610c81565b5b92915050565b7f43616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f610d156017836109bc565b9150610d2082610ce1565b602082019050919050565b5f6020820190508181035f830152610d4281610d09565b9050919050565b7f417070726f76652066726f6d20746865207a65726f20616464726573730000005f82015250565b5f610d7d601d836109bc565b9150610d8882610d49565b602082019050919050565b5f6020820190508181035f830152610daa81610d71565b9050919050565b7f417070726f766520746f20746865207a65726f206164647265737300000000005f82015250565b5f610de5601b836109bc565b9150610df082610db1565b602082019050919050565b5f6020820190508181035f830152610e1281610dd9565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f206164647265737300005f82015250565b5f610e4d601e836109bc565b9150610e5882610e19565b602082019050919050565b5f6020820190508181035f830152610e7a81610e41565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373000000005f82015250565b5f610eb5601c836109bc565b9150610ec082610e81565b602082019050919050565b5f6020820190508181035f830152610ee281610ea9565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f610f436029836109bc565b9150610f4e82610ee9565b604082019050919050565b5f6020820190508181035f830152610f7081610f37565b9050919050565b5f610f8182610aa0565b9150610f8c83610aa0565b9250828201905080821115610fa457610fa3610c81565b5b9291505056fea2646970667358221220d7b893a6f7977c373223bafb7186374216f91d6038ca9c7464c44532656fd89464736f6c634300081a0033