0x608060405234801562000010575f80fd5b506040516200183538038062001835833981810160405281019062000036919062000315565b6040518060400160405280600581526020017f54455354590000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f545354000000000000000000000000000000000000000000000000000000000081525069d3c21bcecceda10000008260049081620000be9190620005a9565b508160059081620000d09190620005a9565b503360015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200012381336200012d60201b60201c565b505050506200079e565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620001bf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001b690620006eb565b60405180910390fd5b620001d25f8284620002ab60201b60201c565b8160025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000220919062000738565b92505081905550815f8082825462000239919062000738565b925050819055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516200029f919062000783565b60405180910390a35050565b505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620002df82620002b4565b9050919050565b620002f181620002d3565b8114620002fc575f80fd5b50565b5f815190506200030f81620002e6565b92915050565b5f602082840312156200032d576200032c620002b0565b5b5f6200033c84828501620002ff565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620003c157607f821691505b602082108103620003d757620003d66200037c565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200043b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003fe565b620004478683620003fe565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620004916200048b62000485846200045f565b62000468565b6200045f565b9050919050565b5f819050919050565b620004ac8362000471565b620004c4620004bb8262000498565b8484546200040a565b825550505050565b5f90565b620004da620004cc565b620004e7818484620004a1565b505050565b5b818110156200050e57620005025f82620004d0565b600181019050620004ed565b5050565b601f8211156200055d576200052781620003dd565b6200053284620003ef565b8101602085101562000542578190505b6200055a6200055185620003ef565b830182620004ec565b50505b505050565b5f82821c905092915050565b5f6200057f5f198460080262000562565b1980831691505092915050565b5f6200059983836200056e565b9150826002028217905092915050565b620005b48262000345565b67ffffffffffffffff811115620005d057620005cf6200034f565b5b620005dc8254620003a9565b620005e982828562000512565b5f60209050601f8311600181146200061f575f84156200060a578287015190505b6200061685826200058c565b86555062000685565b601f1984166200062f86620003dd565b5f5b82811015620006585784890151825560018201915060208501945060208101905062000631565b8683101562000678578489015162000674601f8916826200056e565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f6e6f7420616e206f776e657221000000000000000000000000000000000000005f82015250565b5f620006d3600d836200068d565b9150620006e0826200069d565b602082019050919050565b5f6020820190508181035f8301526200070481620006c5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000744826200045f565b915062000751836200045f565b92508282019050808211156200076c576200076b6200070b565b5b92915050565b6200077d816200045f565b82525050565b5f602082019050620007985f83018462000772565b92915050565b61108980620007ac5f395ff3fe608060405234801561000f575f80fd5b50600436106100a7575f3560e01c806370a082311161006f57806370a082311461013d57806394bf804d1461016d57806395d89b41146101895780639dc29fac146101a7578063a9059cbb146101c3578063dd62ed3e146101df576100a7565b806306fdde03146100ab578063095ea7b3146100c957806318160ddd146100e557806323b872dd14610103578063313ce5671461011f575b5f80fd5b6100b361020f565b6040516100c09190610c1d565b60405180910390f35b6100e360048036038101906100de9190610cce565b61029f565b005b6100ed6102ae565b6040516100fa9190610d1b565b60405180910390f35b61011d60048036038101906101189190610d34565b6102b6565b005b610127610569565b6040516101349190610d1b565b60405180910390f35b61015760048036038101906101529190610d84565b610571565b6040516101649190610d1b565b60405180910390f35b61018760048036038101906101829190610daf565b6105b7565b005b610191610724565b60405161019e9190610c1d565b60405180910390f35b6101c160048036038101906101bc9190610cce565b6107b4565b005b6101dd60048036038101906101d89190610cce565b6108bc565b005b6101f960048036038101906101f49190610ded565b610a25565b6040516102069190610d1b565b60405180910390f35b60606004805461021e90610e58565b80601f016020809104026020016040519081016040528092919081815260200182805461024a90610e58565b80156102955780601f1061026c57610100808354040283529160200191610295565b820191905f5260205f20905b81548152906001019060200180831161027857829003601f168201915b5050505050905090565b6102aa338383610aa7565b5050565b5f8054905090565b8281806102c283610571565b1015610303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90610ed2565b60405180910390fd5b61030e858585610b8e565b8260035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156103c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c090610f3a565b60405180910390fd5b8260035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104509190610f85565b925050819055508260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104a39190610f85565b925050819055508260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104f69190610fb8565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161055a9190610d1b565b60405180910390a35050505050565b5f6012905090565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063d90611035565b60405180910390fd5b6106515f8284610b8e565b8160025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461069d9190610fb8565b92505081905550815f808282546106b49190610fb8565b925050819055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107189190610d1b565b60405180910390a35050565b60606005805461073390610e58565b80601f016020809104026020016040519081016040528092919081815260200182805461075f90610e58565b80156107aa5780601f10610781576101008083540402835291602001916107aa565b820191905f5260205f20905b81548152906001019060200180831161078d57829003601f168201915b5050505050905090565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a90611035565b60405180910390fd5b61084e825f83610b8e565b8060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461089a9190610f85565b92505081905550805f808282546108b19190610f85565b925050819055505050565b3381806108c883610571565b1015610909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090090610ed2565b60405180910390fd5b610914338585610b8e565b8260025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109609190610f85565b925050819055508260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109b39190610fb8565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610a179190610d1b565b60405180910390a350505050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f6e11fb1b7f119e3f2fa29896ef5fdf8b8a2d0d4df6fe90ba8668e7d8b2ffa25e83604051610b819190610d1b565b60405180910390a3505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610bca578082015181840152602081019050610baf565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610bef82610b93565b610bf98185610b9d565b9350610c09818560208601610bad565b610c1281610bd5565b840191505092915050565b5f6020820190508181035f830152610c358184610be5565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c6a82610c41565b9050919050565b610c7a81610c60565b8114610c84575f80fd5b50565b5f81359050610c9581610c71565b92915050565b5f819050919050565b610cad81610c9b565b8114610cb7575f80fd5b50565b5f81359050610cc881610ca4565b92915050565b5f8060408385031215610ce457610ce3610c3d565b5b5f610cf185828601610c87565b9250506020610d0285828601610cba565b9150509250929050565b610d1581610c9b565b82525050565b5f602082019050610d2e5f830184610d0c565b92915050565b5f805f60608486031215610d4b57610d4a610c3d565b5b5f610d5886828701610c87565b9350506020610d6986828701610c87565b9250506040610d7a86828701610cba565b9150509250925092565b5f60208284031215610d9957610d98610c3d565b5b5f610da684828501610c87565b91505092915050565b5f8060408385031215610dc557610dc4610c3d565b5b5f610dd285828601610cba565b9250506020610de385828601610c87565b9150509250929050565b5f8060408385031215610e0357610e02610c3d565b5b5f610e1085828601610c87565b9250506020610e2185828601610c87565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610e6f57607f821691505b602082108103610e8257610e81610e2b565b5b50919050565b7f6e6f7420656e6f75676820746f6b656e732100000000000000000000000000005f82015250565b5f610ebc601283610b9d565b9150610ec782610e88565b602082019050919050565b5f6020820190508181035f830152610ee981610eb0565b9050919050565b7f636865636b20616c6c6f77616e636521000000000000000000000000000000005f82015250565b5f610f24601083610b9d565b9150610f2f82610ef0565b602082019050919050565b5f6020820190508181035f830152610f5181610f18565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610f8f82610c9b565b9150610f9a83610c9b565b9250828203905081811115610fb257610fb1610f58565b5b92915050565b5f610fc282610c9b565b9150610fcd83610c9b565b9250828201905080821115610fe557610fe4610f58565b5b92915050565b7f6e6f7420616e206f776e657221000000000000000000000000000000000000005f82015250565b5f61101f600d83610b9d565b915061102a82610feb565b602082019050919050565b5f6020820190508181035f83015261104c81611013565b905091905056fea26469706673582212208a52793864cdcfb5a119fa5b07b57c809fb0e86f08330a67579de51aebd7fbbf64736f6c634300081400330000000000000000000000003c880e1e863f23a2e4c422cd014cee29d7476e0c