0x60806040523480156200001157600080fd5b506040516200172b3803806200172b833981810160405281019062000037919062000290565b6040518060400160405280600481526020017f4d41534b000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4d41534b0000000000000000000000000000000000000000000000000000000081525069d3c21bcecceda10000008260049081620000bf91906200053c565b508160059081620000d191906200053c565b5033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200012581336200012f60201b60201c565b50505050620006bb565b62000143600082846200022160201b60201c565b81600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000194919062000652565b9250508190555081600080828254620001ae919062000652565b925050819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516200021591906200069e565b60405180910390a35050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000258826200022b565b9050919050565b6200026a816200024b565b81146200027657600080fd5b50565b6000815190506200028a816200025f565b92915050565b600060208284031215620002a957620002a862000226565b5b6000620002b98482850162000279565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200034457607f821691505b6020821081036200035a5762000359620002fc565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000385565b620003d0868362000385565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200041d620004176200041184620003e8565b620003f2565b620003e8565b9050919050565b6000819050919050565b6200043983620003fc565b62000451620004488262000424565b84845462000392565b825550505050565b600090565b6200046862000459565b620004758184846200042e565b505050565b5b818110156200049d57620004916000826200045e565b6001810190506200047b565b5050565b601f821115620004ec57620004b68162000360565b620004c18462000375565b81016020851015620004d1578190505b620004e9620004e08562000375565b8301826200047a565b50505b505050565b600082821c905092915050565b60006200051160001984600802620004f1565b1980831691505092915050565b60006200052c8383620004fe565b9150826002028217905092915050565b6200054782620002c2565b67ffffffffffffffff811115620005635762000562620002cd565b5b6200056f82546200032b565b6200057c828285620004a1565b600060209050601f831160018114620005b457600084156200059f578287015190505b620005ab85826200051e565b8655506200061b565b601f198416620005c48662000360565b60005b82811015620005ee57848901518255600182019150602085019450602081019050620005c7565b868310156200060e57848901516200060a601f891682620004fe565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200065f82620003e8565b91506200066c83620003e8565b925082820190508082111562000687576200068662000623565b5b92915050565b6200069881620003e8565b82525050565b6000602082019050620006b560008301846200068d565b92915050565b61106080620006cb6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806370a082311161007157806370a082311461014057806394bf804d1461017057806395d89b411461018c5780639dc29fac146101aa578063a9059cbb146101c6578063dd62ed3e146101e2576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100e857806323b872dd14610106578063313ce56714610122575b600080fd5b6100b6610212565b6040516100c39190610bca565b60405180910390f35b6100e660048036038101906100e19190610c85565b6102a4565b005b6100f06102b3565b6040516100fd9190610cd4565b60405180910390f35b610120600480360381019061011b9190610cef565b6102bc565b005b61012a61057e565b6040516101379190610cd4565b60405180910390f35b61015a60048036038101906101559190610d42565b610587565b6040516101679190610cd4565b60405180910390f35b61018a60048036038101906101859190610d6f565b6105d0565b005b6101946106b4565b6040516101a19190610bca565b60405180910390f35b6101c460048036038101906101bf9190610c85565b610746565b005b6101e060048036038101906101db9190610c85565b610854565b005b6101fc60048036038101906101f79190610daf565b6109c3565b6040516102099190610cd4565b60405180910390f35b60606004805461022190610e1e565b80601f016020809104026020016040519081016040528092919081815260200182805461024d90610e1e565b801561029a5780601f1061026f5761010080835404028352916020019161029a565b820191906000526020600020905b81548152906001019060200180831161027d57829003601f168201915b5050505050905090565b6102af338383610a4a565b5050565b60008054905090565b8281806102c883610587565b1015610309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030090610e9b565b60405180910390fd5b610314858585610b35565b82600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156103d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ca90610f07565b60405180910390fd5b82600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461045f9190610f56565b9250508190555082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104b59190610f56565b9250508190555082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461050b9190610f8a565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161056f9190610cd4565b60405180910390a35050505050565b60006012905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105dc60008284610b35565b81600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461062b9190610f8a565b92505081905550816000808282546106439190610f8a565b925050819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106a89190610cd4565b60405180910390a35050565b6060600580546106c390610e1e565b80601f01602080910402602001604051908101604052809291908181526020018280546106ef90610e1e565b801561073c5780601f106107115761010080835404028352916020019161073c565b820191906000526020600020905b81548152906001019060200180831161071f57829003601f168201915b5050505050905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cd9061100a565b60405180910390fd5b6107e282600083610b35565b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108319190610f56565b92505081905550806000808282546108499190610f56565b925050819055505050565b33818061086083610587565b10156108a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089890610e9b565b60405180910390fd5b6108ac338585610b35565b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108fb9190610f56565b9250508190555082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109519190610f8a565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516109b59190610cd4565b60405180910390a350505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f6e11fb1b7f119e3f2fa29896ef5fdf8b8a2d0d4df6fe90ba8668e7d8b2ffa25e83604051610b289190610cd4565b60405180910390a3505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610b74578082015181840152602081019050610b59565b60008484015250505050565b6000601f19601f8301169050919050565b6000610b9c82610b3a565b610ba68185610b45565b9350610bb6818560208601610b56565b610bbf81610b80565b840191505092915050565b60006020820190508181036000830152610be48184610b91565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c1c82610bf1565b9050919050565b610c2c81610c11565b8114610c3757600080fd5b50565b600081359050610c4981610c23565b92915050565b6000819050919050565b610c6281610c4f565b8114610c6d57600080fd5b50565b600081359050610c7f81610c59565b92915050565b60008060408385031215610c9c57610c9b610bec565b5b6000610caa85828601610c3a565b9250506020610cbb85828601610c70565b9150509250929050565b610cce81610c4f565b82525050565b6000602082019050610ce96000830184610cc5565b92915050565b600080600060608486031215610d0857610d07610bec565b5b6000610d1686828701610c3a565b9350506020610d2786828701610c3a565b9250506040610d3886828701610c70565b9150509250925092565b600060208284031215610d5857610d57610bec565b5b6000610d6684828501610c3a565b91505092915050565b60008060408385031215610d8657610d85610bec565b5b6000610d9485828601610c70565b9250506020610da585828601610c3a565b9150509250929050565b60008060408385031215610dc657610dc5610bec565b5b6000610dd485828601610c3a565b9250506020610de585828601610c3a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610e3657607f821691505b602082108103610e4957610e48610def565b5b50919050565b7f6e6f7420656e6f75676820746f6b656e73210000000000000000000000000000600082015250565b6000610e85601283610b45565b9150610e9082610e4f565b602082019050919050565b60006020820190508181036000830152610eb481610e78565b9050919050565b7f636865636b20616c6c6f77616e63652100000000000000000000000000000000600082015250565b6000610ef1601083610b45565b9150610efc82610ebb565b602082019050919050565b60006020820190508181036000830152610f2081610ee4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610f6182610c4f565b9150610f6c83610c4f565b9250828203905081811115610f8457610f83610f27565b5b92915050565b6000610f9582610c4f565b9150610fa083610c4f565b9250828201905080821115610fb857610fb7610f27565b5b92915050565b7f6e6f7420616e206f776e65722100000000000000000000000000000000000000600082015250565b6000610ff4600d83610b45565b9150610fff82610fbe565b602082019050919050565b6000602082019050818103600083015261102381610fe7565b905091905056fea2646970667358221220d56fb82a8b926724f33b945811f1ed28d8c72c077fc51cf053b39980549dc96564736f6c634300081200330000000000000000000000004b716f810a208fcf39ed4f3091e12daec1b8507c