608060405234801561000f575f5ffd5b506040518060400160405280600881526020017f55534420436f696e0000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5553444300000000000000000000000000000000000000000000000000000000815250816003908161008b91906105d4565b50806004908161009b91906105d4565b5050503360055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506100f433655af3107a40006100f960201b60201c565b6107b8565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610169575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161016091906106e2565b60405180910390fd5b61017a5f838361017e60201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036101ce578060025f8282546101c29190610728565b9250508190555061029c565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610257578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161024e9392919061076a565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036102e3578060025f828254039250508190555061032d565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161038a919061079f565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061041257607f821691505b602082108103610425576104246103ce565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026104877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261044c565b610491868361044c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6104d56104d06104cb846104a9565b6104b2565b6104a9565b9050919050565b5f819050919050565b6104ee836104bb565b6105026104fa826104dc565b848454610458565b825550505050565b5f5f905090565b61051961050a565b6105248184846104e5565b505050565b5b818110156105475761053c5f82610511565b60018101905061052a565b5050565b601f82111561058c5761055d8161042b565b6105668461043d565b81016020851015610575578190505b6105896105818561043d565b830182610529565b50505b505050565b5f82821c905092915050565b5f6105ac5f1984600802610591565b1980831691505092915050565b5f6105c4838361059d565b9150826002028217905092915050565b6105dd82610397565b67ffffffffffffffff8111156105f6576105f56103a1565b5b61060082546103fb565b61060b82828561054b565b5f60209050601f83116001811461063c575f841561062a578287015190505b61063485826105b9565b86555061069b565b601f19841661064a8661042b565b5f5b828110156106715784890151825560018201915060208501945060208101905061064c565b8683101561068e578489015161068a601f89168261059d565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106cc826106a3565b9050919050565b6106dc816106c2565b82525050565b5f6020820190506106f55f8301846106d3565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610732826104a9565b915061073d836104a9565b9250828201905080821115610755576107546106fb565b5b92915050565b610764816104a9565b82525050565b5f60608201905061077d5f8301866106d3565b61078a602083018561075b565b610797604083018461075b565b949350505050565b5f6020820190506107b25f83018461075b565b92915050565b610e83806107c55f395ff3fe608060405234801561000f575f5ffd5b506004361061009c575f3560e01c8063313ce56711610064578063313ce5671461016c57806370a082311461018a57806395d89b41146101ba578063a9059cbb146101d8578063dd62ed3e146102085761009c565b806306fdde03146100a0578063095ea7b3146100be57806318160ddd146100ee57806323b872dd1461010c5780632f54bf6e1461013c575b5f5ffd5b6100a8610238565b6040516100b59190610afc565b60405180910390f35b6100d860048036038101906100d39190610bad565b6102c8565b6040516100e59190610c05565b60405180910390f35b6100f66102ea565b6040516101039190610c2d565b60405180910390f35b61012660048036038101906101219190610c46565b6102f3565b6040516101339190610c05565b60405180910390f35b61015660048036038101906101519190610c96565b610321565b6040516101639190610c05565b60405180910390f35b610174610388565b6040516101819190610cdc565b60405180910390f35b6101a4600480360381019061019f9190610c96565b610390565b6040516101b19190610c2d565b60405180910390f35b6101c26103d5565b6040516101cf9190610afc565b60405180910390f35b6101f260048036038101906101ed9190610bad565b610465565b6040516101ff9190610c05565b60405180910390f35b610222600480360381019061021d9190610cf5565b610487565b60405161022f9190610c2d565b60405180910390f35b60606003805461024790610d60565b80601f016020809104026020016040519081016040528092919081815260200182805461027390610d60565b80156102be5780601f10610295576101008083540402835291602001916102be565b820191905f5260205f20905b8154815290600101906020018083116102a157829003601f168201915b5050505050905090565b5f5f6102d2610509565b90506102df818585610510565b600191505092915050565b5f600254905090565b5f5f6102fd610509565b905061030a858285610522565b6103158585856105b4565b60019150509392505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361037f5760019050610383565b5f90505b919050565b5f6012905090565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6060600480546103e490610d60565b80601f016020809104026020016040519081016040528092919081815260200182805461041090610d60565b801561045b5780601f106104325761010080835404028352916020019161045b565b820191905f5260205f20905b81548152906001019060200180831161043e57829003601f168201915b5050505050905090565b5f5f61046f610509565b905061047c8185856105b4565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b61051d83838360016106a4565b505050565b5f61052d8484610487565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146105ae578181101561059f578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161059693929190610d9f565b60405180910390fd5b6105ad84848484035f6106a4565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610624575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161061b9190610dd4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610694575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161068b9190610dd4565b60405180910390fd5b61069f838383610873565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610714575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161070b9190610dd4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610784575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161077b9190610dd4565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550801561086d578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108649190610c2d565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108c3578060025f8282546108b79190610e1a565b92505081905550610991565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561094c578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161094393929190610d9f565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109d8578060025f8282540392505081905550610a22565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a7f9190610c2d565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610ace82610a8c565b610ad88185610a96565b9350610ae8818560208601610aa6565b610af181610ab4565b840191505092915050565b5f6020820190508181035f830152610b148184610ac4565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610b4982610b20565b9050919050565b610b5981610b3f565b8114610b63575f5ffd5b50565b5f81359050610b7481610b50565b92915050565b5f819050919050565b610b8c81610b7a565b8114610b96575f5ffd5b50565b5f81359050610ba781610b83565b92915050565b5f5f60408385031215610bc357610bc2610b1c565b5b5f610bd085828601610b66565b9250506020610be185828601610b99565b9150509250929050565b5f8115159050919050565b610bff81610beb565b82525050565b5f602082019050610c185f830184610bf6565b92915050565b610c2781610b7a565b82525050565b5f602082019050610c405f830184610c1e565b92915050565b5f5f5f60608486031215610c5d57610c5c610b1c565b5b5f610c6a86828701610b66565b9350506020610c7b86828701610b66565b9250506040610c8c86828701610b99565b9150509250925092565b5f60208284031215610cab57610caa610b1c565b5b5f610cb884828501610b66565b91505092915050565b5f60ff82169050919050565b610cd681610cc1565b82525050565b5f602082019050610cef5f830184610ccd565b92915050565b5f5f60408385031215610d0b57610d0a610b1c565b5b5f610d1885828601610b66565b9250506020610d2985828601610b66565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610d7757607f821691505b602082108103610d8a57610d89610d33565b5b50919050565b610d9981610b3f565b82525050565b5f606082019050610db25f830186610d90565b610dbf6020830185610c1e565b610dcc6040830184610c1e565b949350505050565b5f602082019050610de75f830184610d90565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610e2482610b7a565b9150610e2f83610b7a565b9250828201905080821115610e4757610e46610ded565b5b9291505056fea2646970667358221220d036dd5e31aba23c0bba983a149c74c0d2c3ce890a7917de6959b1095225dc1864736f6c634300081b0033