6080604052695915a68d88da6a0800006000196200001e9190620005e8565b6000196200002d91906200064f565b600655600060085560006009556000600a556000600b55600a54600c55600b54600d55600c54600e55600d54600f556001601260146101000a81548160ff0219169083151502179055506000601260156101000a81548160ff0219169083151502179055506000601260166101000a81548160ff02191690831515021790555064e8d4a51000601355348015620000c357600080fd5b5060405162002b3038038062002b308339818101604052810190620000e99190620006f4565b6000620000fb6200057e60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350695915a68d88da6a08000060026000620001b86200057e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c29190620006f4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200032a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003509190620006f4565b6040518363ffffffff1660e01b81526004016200036f92919062000737565b6020604051808303816000875af11580156200038f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b59190620006f4565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200040b6200058660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005056200057e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef695915a68d88da6a0800006040516200056e919062000775565b60405180910390a3505062000792565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620005f582620005af565b91506200060283620005af565b925082620006155762000614620005b9565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200065c82620005af565b91506200066983620005af565b925082820390508181111562000684576200068362000620565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620006bc826200068f565b9050919050565b620006ce81620006af565b8114620006da57600080fd5b50565b600081519050620006ee81620006c3565b92915050565b6000602082840312156200070d576200070c6200068a565b5b60006200071d84828501620006dd565b91505092915050565b6200073181620006af565b82525050565b60006040820190506200074e600083018562000726565b6200075d602083018462000726565b9392505050565b6200076f81620005af565b82525050565b60006020820190506200078c600083018462000764565b92915050565b61238e80620007a26000396000f3fe6080604052600436106100ec5760003560e01c806349bd5a5e1161008a57806395d89b411161005957806395d89b41146102f3578063a9059cbb1461031e578063dd62ed3e1461035b578063f2fde38b14610398576100f3565b806349bd5a5e1461024957806370a0823114610274578063715018a6146102b15780638da5cb5b146102c8576100f3565b806318160ddd116100c657806318160ddd1461018b57806323b872dd146101b65780632fd689e3146101f3578063313ce5671461021e576100f3565b806306fdde03146100f8578063095ea7b3146101235780631694505e14610160576100f3565b366100f357005b600080fd5b34801561010457600080fd5b5061010d6103c1565b60405161011a919061192a565b60405180910390f35b34801561012f57600080fd5b5061014a600480360381019061014591906119e5565b6103fe565b6040516101579190611a40565b60405180910390f35b34801561016c57600080fd5b5061017561041c565b6040516101829190611aba565b60405180910390f35b34801561019757600080fd5b506101a0610442565b6040516101ad9190611ae4565b60405180910390f35b3480156101c257600080fd5b506101dd60048036038101906101d89190611aff565b610454565b6040516101ea9190611a40565b60405180910390f35b3480156101ff57600080fd5b5061020861052d565b6040516102159190611ae4565b60405180910390f35b34801561022a57600080fd5b50610233610533565b6040516102409190611b6e565b60405180910390f35b34801561025557600080fd5b5061025e61053c565b60405161026b9190611b98565b60405180910390f35b34801561028057600080fd5b5061029b60048036038101906102969190611bb3565b610562565b6040516102a89190611ae4565b60405180910390f35b3480156102bd57600080fd5b506102c66105ab565b005b3480156102d457600080fd5b506102dd6106fe565b6040516102ea9190611b98565b60405180910390f35b3480156102ff57600080fd5b50610308610727565b604051610315919061192a565b60405180910390f35b34801561032a57600080fd5b50610345600480360381019061034091906119e5565b610764565b6040516103529190611a40565b60405180910390f35b34801561036757600080fd5b50610382600480360381019061037d9190611be0565b610782565b60405161038f9190611ae4565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190611bb3565b610809565b005b60606040518060400160405280600f81526020017f4b65726d6974207468652046726f670000000000000000000000000000000000815250905090565b600061041261040b6109ca565b84846109d2565b6001905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000695915a68d88da6a080000905090565b6000610461848484610b9b565b6105228461046d6109ca565b61051d8560405180606001604052806028815260200161233160289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104d36109ca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111b29092919063ffffffff16565b6109d2565b600190509392505050565b60135481565b60006009905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105b36109ca565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063790611c6c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f4b65726d69740000000000000000000000000000000000000000000000000000815250905090565b60006107786107716109ca565b8484610b9b565b6001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6108116109ca565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461089e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089590611c6c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361090d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090490611cfe565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3890611d90565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa790611e22565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610b8e9190611ae4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0190611eb4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7090611f46565b60405180910390fd5b60008111610cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb390611fd8565b60405180910390fd5b610cc46106fe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610d325750610d026106fe565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15610eb1576000610d4230610562565b905060006013548210159050808015610d685750601260159054906101000a900460ff16155b8015610dc25750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015610dda5750601260169054906101000a900460ff165b8015610e305750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015610e865750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610eae57610e9482611216565b60004790506000811115610eac57610eab4761148f565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610f585750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061100b5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561100a5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561101957600090506111a0565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156110c45750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156110dc57600854600c81905550600954600d819055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156111875750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561119f57600a54600c81905550600b54600d819055505b5b6111ac848484846114fb565b50505050565b60008383111582906111fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f1919061192a565b60405180910390fd5b50600083856112099190612027565b9050809150509392505050565b6001601260156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561124e5761124d61205b565b5b60405190808252806020026020018201604052801561127c5781602001602082028036833780820191505090505b50905030816000815181106112945761129361208a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561133b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135f91906120ce565b816001815181106113735761137261208a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506113da30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846109d2565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161143e9594939291906121f4565b600060405180830381600087803b15801561145857600080fd5b505af115801561146c573d6000803e3d6000fd5b50505050506000601260156101000a81548160ff02191690831515021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156114f7573d6000803e3d6000fd5b5050565b8061150957611508611528565b5b611514848484611565565b806115225761152161170c565b5b50505050565b6000600c5414801561153c57506000600d54145b61156357600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806115728584611720565b915091506115c882600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461174b90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061165d81600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461179590919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116fd9190611ae4565b60405180910390a35050505050565b600e54600c81905550600f54600d81905550565b600080600061172e856117f3565b611738578361173b565b60005b9050808492509250509250929050565b600061178d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111b2565b905092915050565b60008082846117a4919061224e565b9050838110156117e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e0906122ce565b60405180910390fd5b8091505092915050565b600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b81526004016118519190611b98565b602060405180830381865afa15801561186e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118929190612303565b119050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156118d45780820151818401526020810190506118b9565b60008484015250505050565b6000601f19601f8301169050919050565b60006118fc8261189a565b61190681856118a5565b93506119168185602086016118b6565b61191f816118e0565b840191505092915050565b6000602082019050818103600083015261194481846118f1565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061197c82611951565b9050919050565b61198c81611971565b811461199757600080fd5b50565b6000813590506119a981611983565b92915050565b6000819050919050565b6119c2816119af565b81146119cd57600080fd5b50565b6000813590506119df816119b9565b92915050565b600080604083850312156119fc576119fb61194c565b5b6000611a0a8582860161199a565b9250506020611a1b858286016119d0565b9150509250929050565b60008115159050919050565b611a3a81611a25565b82525050565b6000602082019050611a556000830184611a31565b92915050565b6000819050919050565b6000611a80611a7b611a7684611951565b611a5b565b611951565b9050919050565b6000611a9282611a65565b9050919050565b6000611aa482611a87565b9050919050565b611ab481611a99565b82525050565b6000602082019050611acf6000830184611aab565b92915050565b611ade816119af565b82525050565b6000602082019050611af96000830184611ad5565b92915050565b600080600060608486031215611b1857611b1761194c565b5b6000611b268682870161199a565b9350506020611b378682870161199a565b9250506040611b48868287016119d0565b9150509250925092565b600060ff82169050919050565b611b6881611b52565b82525050565b6000602082019050611b836000830184611b5f565b92915050565b611b9281611971565b82525050565b6000602082019050611bad6000830184611b89565b92915050565b600060208284031215611bc957611bc861194c565b5b6000611bd78482850161199a565b91505092915050565b60008060408385031215611bf757611bf661194c565b5b6000611c058582860161199a565b9250506020611c168582860161199a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611c566020836118a5565b9150611c6182611c20565b602082019050919050565b60006020820190508181036000830152611c8581611c49565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611ce86026836118a5565b9150611cf382611c8c565b604082019050919050565b60006020820190508181036000830152611d1781611cdb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611d7a6024836118a5565b9150611d8582611d1e565b604082019050919050565b60006020820190508181036000830152611da981611d6d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e0c6022836118a5565b9150611e1782611db0565b604082019050919050565b60006020820190508181036000830152611e3b81611dff565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611e9e6025836118a5565b9150611ea982611e42565b604082019050919050565b60006020820190508181036000830152611ecd81611e91565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611f306023836118a5565b9150611f3b82611ed4565b604082019050919050565b60006020820190508181036000830152611f5f81611f23565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000611fc26029836118a5565b9150611fcd82611f66565b604082019050919050565b60006020820190508181036000830152611ff181611fb5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612032826119af565b915061203d836119af565b925082820390508181111561205557612054611ff8565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506120c881611983565b92915050565b6000602082840312156120e4576120e361194c565b5b60006120f2848285016120b9565b91505092915050565b6000819050919050565b600061212061211b612116846120fb565b611a5b565b6119af565b9050919050565b61213081612105565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61216b81611971565b82525050565b600061217d8383612162565b60208301905092915050565b6000602082019050919050565b60006121a182612136565b6121ab8185612141565b93506121b683612152565b8060005b838110156121e75781516121ce8882612171565b97506121d983612189565b9250506001810190506121ba565b5085935050505092915050565b600060a0820190506122096000830188611ad5565b6122166020830187612127565b81810360408301526122288186612196565b90506122376060830185611b89565b6122446080830184611ad5565b9695505050505050565b6000612259826119af565b9150612264836119af565b925082820190508082111561227c5761227b611ff8565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006122b8601b836118a5565b91506122c382612282565b602082019050919050565b600060208201905081810360008301526122e7816122ab565b9050919050565b6000815190506122fd816119b9565b92915050565b6000602082840312156123195761231861194c565b5b6000612327848285016122ee565b9150509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122028fc761fb8428cc43021260fd1cdb5c88815a7a3b24f5ccfacba27f07c9f86f364736f6c634300081300330000000000000000000000002d49629e3eaaf1e25f3037e83e517606c78c1b89