608060405234801561000f575f80fd5b5061003573efadd4db0a41da4a86da4aa74563cdbca4ea6bf7606461010760201b60201c565b61005a73f29bf71e3019bca5cbade77f447712b92d41479b606461010760201b60201c565b620186a060025f73efadd4db0a41da4a86da4aa74563cdbca4ea6bf773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f73f29bf71e3019bca5cbade77f447712b92d41479b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061026b565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546101539190610210565b92505081905550805f8082825461016a9190610210565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516101ce9190610252565b60405180910390a35050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61021a826101da565b9150610225836101da565b925082820190508082111561023d5761023c6101e3565b5b92915050565b61024c816101da565b82525050565b5f6020820190506102655f830184610243565b92915050565b610f21806102785f395ff3fe608060405234801561000f575f80fd5b50600436106100cd575f3560e01c806340c10f191161008a5780639dc29fac116100645780639dc29fac146101ff578063a9059cbb1461021b578063d28cebb81461024b578063dd62ed3e14610255576100cd565b806340c10f191461019557806370a08231146101b157806395d89b41146101e1576100cd565b806306fdde03146100d1578063095ea7b3146100ef57806318160ddd1461011f57806323b872dd1461013d578063313ce5671461016d57806339a7203a1461018b575b5f80fd5b6100d9610285565b6040516100e69190610bc4565b60405180910390f35b61010960048036038101906101049190610c75565b610311565b6040516101169190610ccd565b60405180910390f35b6101276103fe565b6040516101349190610cf5565b60405180910390f35b61015760048036038101906101529190610d0e565b610403565b6040516101649190610ccd565b60405180910390f35b6101756105a8565b6040516101829190610d79565b60405180910390f35b6101936105ba565b005b6101af60048036038101906101aa9190610c75565b6106d3565b005b6101cb60048036038101906101c69190610d92565b6106e1565b6040516101d89190610cf5565b60405180910390f35b6101e96106f6565b6040516101f69190610bc4565b60405180910390f35b61021960048036038101906102149190610c75565b610782565b005b61023560048036038101906102309190610c75565b610790565b6040516102429190610ccd565b60405180910390f35b6102536108a6565b005b61026f600480360381019061026a9190610dbd565b61098e565b60405161027c9190610cf5565b60405180910390f35b6003805461029290610e28565b80601f01602080910402602001604051908101604052809291908181526020018280546102be90610e28565b80156103095780601f106102e057610100808354040283529160200191610309565b820191905f5260205f20905b8154815290600101906020018083116102ec57829003601f168201915b505050505081565b5f8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103ec9190610cf5565b60405180910390a36001905092915050565b5f5481565b5f8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461048b9190610e85565b925050819055508160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104de9190610e85565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105319190610eb8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105959190610cf5565b60405180910390a3600190509392505050565b60055f9054906101000a900460ff1681565b61062973efadd4db0a41da4a86da4aa74563cdbca4ea6bf760015f73f29bf71e3019bca5cbade77f447712b92d41479b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546109ae565b620f424060025f73efadd4db0a41da4a86da4aa74563cdbca4ea6bf773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f73f29bf71e3019bca5cbade77f447712b92d41479b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550565b6106dd82826109ae565b5050565b6001602052805f5260405f205f915090505481565b6004805461070390610e28565b80601f016020809104026020016040519081016040528092919081815260200182805461072f90610e28565b801561077a5780601f106107515761010080835404028352916020019161077a565b820191905f5260205f20905b81548152906001019060200180831161075d57829003601f168201915b505050505081565b61078c8282610a81565b5050565b5f8160015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107dd9190610e85565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108309190610eb8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516108949190610cf5565b60405180910390a36001905092915050565b6108c573efadd4db0a41da4a86da4aa74563cdbca4ea6bf760646109ae565b6108e473f29bf71e3019bca5cbade77f447712b92d41479b60646109ae565b620186a060025f73efadd4db0a41da4a86da4aa74563cdbca4ea6bf773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f73f29bf71e3019bca5cbade77f447712b92d41479b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550565b6002602052815f5260405f20602052805f5260405f205f91509150505481565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109fa9190610eb8565b92505081905550805f80828254610a119190610eb8565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a759190610cf5565b60405180910390a35050565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610acd9190610e85565b92505081905550805f80828254610ae49190610e85565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b489190610cf5565b60405180910390a35050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610b9682610b54565b610ba08185610b5e565b9350610bb0818560208601610b6e565b610bb981610b7c565b840191505092915050565b5f6020820190508181035f830152610bdc8184610b8c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c1182610be8565b9050919050565b610c2181610c07565b8114610c2b575f80fd5b50565b5f81359050610c3c81610c18565b92915050565b5f819050919050565b610c5481610c42565b8114610c5e575f80fd5b50565b5f81359050610c6f81610c4b565b92915050565b5f8060408385031215610c8b57610c8a610be4565b5b5f610c9885828601610c2e565b9250506020610ca985828601610c61565b9150509250929050565b5f8115159050919050565b610cc781610cb3565b82525050565b5f602082019050610ce05f830184610cbe565b92915050565b610cef81610c42565b82525050565b5f602082019050610d085f830184610ce6565b92915050565b5f805f60608486031215610d2557610d24610be4565b5b5f610d3286828701610c2e565b9350506020610d4386828701610c2e565b9250506040610d5486828701610c61565b9150509250925092565b5f60ff82169050919050565b610d7381610d5e565b82525050565b5f602082019050610d8c5f830184610d6a565b92915050565b5f60208284031215610da757610da6610be4565b5b5f610db484828501610c2e565b91505092915050565b5f8060408385031215610dd357610dd2610be4565b5b5f610de085828601610c2e565b9250506020610df185828601610c2e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610e3f57607f821691505b602082108103610e5257610e51610dfb565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610e8f82610c42565b9150610e9a83610c42565b9250828203905081811115610eb257610eb1610e58565b5b92915050565b5f610ec282610c42565b9150610ecd83610c42565b9250828201905080821115610ee557610ee4610e58565b5b9291505056fea264697066735822122053e650654a6a365a738699af1b998e504004726c909ec1b0854c30f90cebf27964736f6c63430008190033