0x60806040526040518060400160405280600481526020017f54657374000000000000000000000000000000000000000000000000000000008152505f908162000049919062000351565b506040518060400160405280600181526020017f54000000000000000000000000000000000000000000000000000000000000008152506001908162000090919062000351565b506064600255348015620000a2575f80fd5b5060025460035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555062000435565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200016957607f821691505b6020821081036200017f576200017e62000124565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620001e37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620001a6565b620001ef8683620001a6565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000239620002336200022d8462000207565b62000210565b62000207565b9050919050565b5f819050919050565b620002548362000219565b6200026c620002638262000240565b848454620001b2565b825550505050565b5f90565b6200028262000274565b6200028f81848462000249565b505050565b5b81811015620002b657620002aa5f8262000278565b60018101905062000295565b5050565b601f8211156200030557620002cf8162000185565b620002da8462000197565b81016020851015620002ea578190505b62000302620002f98562000197565b83018262000294565b50505b505050565b5f82821c905092915050565b5f620003275f19846008026200030a565b1980831691505092915050565b5f62000341838362000316565b9150826002028217905092915050565b6200035c82620000ed565b67ffffffffffffffff811115620003785762000377620000f7565b5b62000384825462000151565b62000391828285620002ba565b5f60209050601f831160018114620003c7575f8415620003b2578287015190505b620003be858262000334565b8655506200042d565b601f198416620003d78662000185565b5f5b828110156200040057848901518255600182019150602085019450602081019050620003d9565b868310156200042057848901516200041c601f89168262000316565b8355505b6001600288020188555050505b505050505050565b610eb880620004435f395ff3fe608060405234801561000f575f80fd5b5060043610610086575f3560e01c806370a082311161005957806370a082311461012657806395d89b4114610156578063a9059cbb14610174578063dd62ed3e146101a457610086565b806306fdde031461008a578063095ea7b3146100a857806318160ddd146100d857806323b872dd146100f6575b5f80fd5b6100926101d4565b60405161009f91906109ef565b60405180910390f35b6100c260048036038101906100bd9190610aa0565b61025f565b6040516100cf9190610af8565b60405180910390f35b6100e06103ba565b6040516100ed9190610b20565b60405180910390f35b610110600480360381019061010b9190610b39565b6103c0565b60405161011d9190610af8565b60405180910390f35b610140600480360381019061013b9190610b89565b6106a0565b60405161014d9190610b20565b60405180910390f35b61015e6106b5565b60405161016b91906109ef565b60405180910390f35b61018e60048036038101906101899190610aa0565b610741565b60405161019b9190610af8565b60405180910390f35b6101be60048036038101906101b99190610bb4565b610945565b6040516101cb9190610b20565b60405180910390f35b5f80546101e090610c1f565b80601f016020809104026020016040519081016040528092919081815260200182805461020c90610c1f565b80156102575780601f1061022e57610100808354040283529160200191610257565b820191905f5260205f20905b81548152906001019060200180831161023a57829003601f168201915b505050505081565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036102ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c590610c99565b60405180910390fd5b8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103a89190610b20565b60405180910390a36001905092915050565b60025481565b5f8160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043890610d01565b60405180910390fd5b8160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156104fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f390610d69565b60405180910390fd5b8160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105489190610db4565b925050819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461059b9190610de7565b925050819055508160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546106299190610db4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161068d9190610b20565b60405180910390a3600190509392505050565b6003602052805f5260405f205f915090505481565b600180546106c290610c1f565b80601f01602080910402602001604051908101604052809291908181526020018280546106ee90610c1f565b80156107395780601f1061071057610100808354040283529160200191610739565b820191905f5260205f20905b81548152906001019060200180831161071c57829003601f168201915b505050505081565b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156107c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b990610d01565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610830576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082790610e64565b60405180910390fd5b8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461087c9190610db4565b925050819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108cf9190610de7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516109339190610b20565b60405180910390a36001905092915050565b6004602052815f5260405f20602052805f5260405f205f91509150505481565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561099c578082015181840152602081019050610981565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6109c182610965565b6109cb818561096f565b93506109db81856020860161097f565b6109e4816109a7565b840191505092915050565b5f6020820190508181035f830152610a0781846109b7565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610a3c82610a13565b9050919050565b610a4c81610a32565b8114610a56575f80fd5b50565b5f81359050610a6781610a43565b92915050565b5f819050919050565b610a7f81610a6d565b8114610a89575f80fd5b50565b5f81359050610a9a81610a76565b92915050565b5f8060408385031215610ab657610ab5610a0f565b5b5f610ac385828601610a59565b9250506020610ad485828601610a8c565b9150509250929050565b5f8115159050919050565b610af281610ade565b82525050565b5f602082019050610b0b5f830184610ae9565b92915050565b610b1a81610a6d565b82525050565b5f602082019050610b335f830184610b11565b92915050565b5f805f60608486031215610b5057610b4f610a0f565b5b5f610b5d86828701610a59565b9350506020610b6e86828701610a59565b9250506040610b7f86828701610a8c565b9150509250925092565b5f60208284031215610b9e57610b9d610a0f565b5b5f610bab84828501610a59565b91505092915050565b5f8060408385031215610bca57610bc9610a0f565b5b5f610bd785828601610a59565b9250506020610be885828601610a59565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610c3657607f821691505b602082108103610c4957610c48610bf2565b5b50919050565b7f496e76616c6964207370656e64657200000000000000000000000000000000005f82015250565b5f610c83600f8361096f565b9150610c8e82610c4f565b602082019050919050565b5f6020820190508181035f830152610cb081610c77565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f610ceb60148361096f565b9150610cf682610cb7565b602082019050919050565b5f6020820190508181035f830152610d1881610cdf565b9050919050565b7f4e6f7420616c6c6f77656420746f207370656e640000000000000000000000005f82015250565b5f610d5360148361096f565b9150610d5e82610d1f565b602082019050919050565b5f6020820190508181035f830152610d8081610d47565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610dbe82610a6d565b9150610dc983610a6d565b9250828203905081811115610de157610de0610d87565b5b92915050565b5f610df182610a6d565b9150610dfc83610a6d565b9250828201905080821115610e1457610e13610d87565b5b92915050565b7f496e76616c696420726563697069656e740000000000000000000000000000005f82015250565b5f610e4e60118361096f565b9150610e5982610e1a565b602082019050919050565b5f6020820190508181035f830152610e7b81610e42565b905091905056fea26469706673582212203e346024076e599d1e8a5bcb0a9187d7102ec27d3b84b05a0bb149dde4fb169d64736f6c63430008140033