608060405234801561000f575f80fd5b506040518060400160405280600a81526020017f537461626c65436f696e000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5354424c00000000000000000000000000000000000000000000000000000000815250816003908161008b91906102dd565b50806004908161009b91906102dd565b5050506103ac565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061011e57607f821691505b602082108103610131576101306100da565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026101937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610158565b61019d8683610158565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6101e16101dc6101d7846101b5565b6101be565b6101b5565b9050919050565b5f819050919050565b6101fa836101c7565b61020e610206826101e8565b848454610164565b825550505050565b5f90565b610222610216565b61022d8184846101f1565b505050565b5b81811015610250576102455f8261021a565b600181019050610233565b5050565b601f8211156102955761026681610137565b61026f84610149565b8101602085101561027e578190505b61029261028a85610149565b830182610232565b50505b505050565b5f82821c905092915050565b5f6102b55f198460080261029a565b1980831691505092915050565b5f6102cd83836102a6565b9150826002028217905092915050565b6102e6826100a3565b67ffffffffffffffff8111156102ff576102fe6100ad565b5b6103098254610107565b610314828285610254565b5f60209050601f831160018114610345575f8415610333578287015190505b61033d85826102c2565b8655506103a4565b601f19841661035386610137565b5f5b8281101561037a57848901518255600182019150602085019450602081019050610355565b868310156103975784890151610393601f8916826102a6565b8355505b6001600288020188555050505b505050505050565b6115d0806103b95f395ff3fe608060405234801561000f575f80fd5b5060043610610109575f3560e01c806336568abe116100a057806395d89b411161006f57806395d89b41146102db578063a217fddf146102f9578063a9059cbb14610317578063d547741f14610347578063dd62ed3e1461036357610109565b806336568abe1461024357806340c10f191461025f57806370a082311461027b57806391d14854146102ab57610109565b806323b872dd116100dc57806323b872dd146101a9578063248a9ca3146101d95780632f2ff15d14610209578063313ce5671461022557610109565b806301ffc9a71461010d57806306fdde031461013d578063095ea7b31461015b57806318160ddd1461018b575b5f80fd5b610127600480360381019061012291906110c7565b610393565b604051610134919061110c565b60405180910390f35b61014561040c565b6040516101529190611195565b60405180910390f35b61017560048036038101906101709190611242565b61049c565b604051610182919061110c565b60405180910390f35b6101936104be565b6040516101a0919061128f565b60405180910390f35b6101c360048036038101906101be91906112a8565b6104c7565b6040516101d0919061110c565b60405180910390f35b6101f360048036038101906101ee919061132b565b6104f5565b6040516102009190611365565b60405180910390f35b610223600480360381019061021e919061137e565b610512565b005b61022d610534565b60405161023a91906113d7565b60405180910390f35b61025d6004803603810190610258919061137e565b61053c565b005b61027960048036038101906102749190611242565b6105b7565b005b610295600480360381019061029091906113f0565b6105c5565b6040516102a2919061128f565b60405180910390f35b6102c560048036038101906102c0919061137e565b61060a565b6040516102d2919061110c565b60405180910390f35b6102e361066e565b6040516102f09190611195565b60405180910390f35b6103016106fe565b60405161030e9190611365565b60405180910390f35b610331600480360381019061032c9190611242565b610704565b60405161033e919061110c565b60405180910390f35b610361600480360381019061035c919061137e565b610726565b005b61037d6004803603810190610378919061141b565b610748565b60405161038a919061128f565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104055750610404826107ca565b5b9050919050565b60606003805461041b90611486565b80601f016020809104026020016040519081016040528092919081815260200182805461044790611486565b80156104925780601f1061046957610100808354040283529160200191610492565b820191905f5260205f20905b81548152906001019060200180831161047557829003601f168201915b5050505050905090565b5f806104a6610833565b90506104b381858561083a565b600191505092915050565b5f600254905090565b5f806104d1610833565b90506104de85828561084c565b6104e98585856108de565b60019150509392505050565b5f60055f8381526020019081526020015f20600101549050919050565b61051b826104f5565b610524816109ce565b61052e83836109e2565b50505050565b5f6012905090565b610544610833565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146105a8576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105b28282610acc565b505050565b6105c18282610bb6565b5050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60055f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b60606004805461067d90611486565b80601f01602080910402602001604051908101604052809291908181526020018280546106a990611486565b80156106f45780601f106106cb576101008083540402835291602001916106f4565b820191905f5260205f20905b8154815290600101906020018083116106d757829003601f168201915b5050505050905090565b5f801b81565b5f8061070e610833565b905061071b8185856108de565b600191505092915050565b61072f826104f5565b610738816109ce565b6107428383610acc565b50505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f33905090565b6108478383836001610c35565b505050565b5f6108578484610748565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108d857818110156108c9578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016108c0939291906114c5565b60405180910390fd5b6108d784848484035f610c35565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361094e575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161094591906114fa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109be575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016109b591906114fa565b60405180910390fd5b6109c9838383610e04565b505050565b6109df816109da610833565b61101d565b50565b5f6109ed838361060a565b610ac257600160055f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610a5f610833565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050610ac6565b5f90505b92915050565b5f610ad7838361060a565b15610bac575f60055f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610b49610833565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050610bb0565b5f90505b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c26575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610c1d91906114fa565b60405180910390fd5b610c315f8383610e04565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610ca5575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610c9c91906114fa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d15575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610d0c91906114fa565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610dfe578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610df5919061128f565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e54578060025f828254610e489190611540565b92505081905550610f22565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610edd578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610ed4939291906114c5565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f69578060025f8282540392505081905550610fb3565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611010919061128f565b60405180910390a3505050565b611027828261060a565b61106a5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401611061929190611573565b60405180910390fd5b5050565b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6110a681611072565b81146110b0575f80fd5b50565b5f813590506110c18161109d565b92915050565b5f602082840312156110dc576110db61106e565b5b5f6110e9848285016110b3565b91505092915050565b5f8115159050919050565b611106816110f2565b82525050565b5f60208201905061111f5f8301846110fd565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61116782611125565b611171818561112f565b935061118181856020860161113f565b61118a8161114d565b840191505092915050565b5f6020820190508181035f8301526111ad818461115d565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6111de826111b5565b9050919050565b6111ee816111d4565b81146111f8575f80fd5b50565b5f81359050611209816111e5565b92915050565b5f819050919050565b6112218161120f565b811461122b575f80fd5b50565b5f8135905061123c81611218565b92915050565b5f80604083850312156112585761125761106e565b5b5f611265858286016111fb565b92505060206112768582860161122e565b9150509250929050565b6112898161120f565b82525050565b5f6020820190506112a25f830184611280565b92915050565b5f805f606084860312156112bf576112be61106e565b5b5f6112cc868287016111fb565b93505060206112dd868287016111fb565b92505060406112ee8682870161122e565b9150509250925092565b5f819050919050565b61130a816112f8565b8114611314575f80fd5b50565b5f8135905061132581611301565b92915050565b5f602082840312156113405761133f61106e565b5b5f61134d84828501611317565b91505092915050565b61135f816112f8565b82525050565b5f6020820190506113785f830184611356565b92915050565b5f80604083850312156113945761139361106e565b5b5f6113a185828601611317565b92505060206113b2858286016111fb565b9150509250929050565b5f60ff82169050919050565b6113d1816113bc565b82525050565b5f6020820190506113ea5f8301846113c8565b92915050565b5f602082840312156114055761140461106e565b5b5f611412848285016111fb565b91505092915050565b5f80604083850312156114315761143061106e565b5b5f61143e858286016111fb565b925050602061144f858286016111fb565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061149d57607f821691505b6020821081036114b0576114af611459565b5b50919050565b6114bf816111d4565b82525050565b5f6060820190506114d85f8301866114b6565b6114e56020830185611280565b6114f26040830184611280565b949350505050565b5f60208201905061150d5f8301846114b6565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61154a8261120f565b91506115558361120f565b925082820190508082111561156d5761156c611513565b5b92915050565b5f6040820190506115865f8301856114b6565b6115936020830184611356565b939250505056fea26469706673582212207daa88240fc3afc53b19ac14f82ad12b2877489ce44b0b20c2a8ab608ce4a37d64736f6c634300081a0033