60806040526a01a784379d99db420000006007553480156200002057600080fd5b506040518060400160405280600d81526020017f50657065205072656461746f72000000000000000000000000000000000000008152506040518060400160405280600581526020017f534e414b45000000000000000000000000000000000000000000000000000000815250620000ad620000a1620000f660201b60201c565b620000fe60201b60201c565b8160049081620000be91906200082b565b508060059081620000d091906200082b565b505050620000f0336a52b7d2dcc80cd2e4000000620001c260201b60201c565b62000b11565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000234576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200022b9062000973565b60405180910390fd5b62000248600083836200033b60201b60201c565b80600360008282546200025c9190620009c4565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002b49190620009c4565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200031b919062000a10565b60405180910390a362000337600083836200053a60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036200045e57620003a26200053f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620004165750620003e76200053f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b62000458576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200044f9062000a7d565b60405180910390fd5b62000535565b600660009054906101000a900460ff168015620004c85750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15620005345760075481620004e3846200056860201b60201c565b620004ef9190620009c4565b111562000533576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200052a9062000aef565b60405180910390fd5b5b5b505050565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200063357607f821691505b602082108103620006495762000648620005eb565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006b37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000674565b620006bf868362000674565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200070c620007066200070084620006d7565b620006e1565b620006d7565b9050919050565b6000819050919050565b6200072883620006eb565b62000740620007378262000713565b84845462000681565b825550505050565b600090565b6200075762000748565b620007648184846200071d565b505050565b5b818110156200078c57620007806000826200074d565b6001810190506200076a565b5050565b601f821115620007db57620007a5816200064f565b620007b08462000664565b81016020851015620007c0578190505b620007d8620007cf8562000664565b83018262000769565b50505b505050565b600082821c905092915050565b60006200080060001984600802620007e0565b1980831691505092915050565b60006200081b8383620007ed565b9150826002028217905092915050565b6200083682620005b1565b67ffffffffffffffff811115620008525762000851620005bc565b5b6200085e82546200061a565b6200086b82828562000790565b600060209050601f831160018114620008a357600084156200088e578287015190505b6200089a85826200080d565b8655506200090a565b601f198416620008b3866200064f565b60005b82811015620008dd57848901518255600182019150602085019450602081019050620008b6565b86831015620008fd5784890151620008f9601f891682620007ed565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200095b601f8362000912565b9150620009688262000923565b602082019050919050565b600060208201905081810360008301526200098e816200094c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620009d182620006d7565b9150620009de83620006d7565b9250828201905080821115620009f957620009f862000995565b5b92915050565b62000a0a81620006d7565b82525050565b600060208201905062000a276000830184620009ff565b92915050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b600062000a6560168362000912565b915062000a728262000a2d565b602082019050919050565b6000602082019050818103600083015262000a988162000a56565b9050919050565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b600062000ad760068362000912565b915062000ae48262000a9f565b602082019050919050565b6000602082019050818103600083015262000b0a8162000ac8565b9050919050565b6120188062000b216000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063715018a6116100ad57806395d89b411161007157806395d89b41146102fa578063a457c2d714610318578063a9059cbb14610348578063dd62ed3e14610378578063f2fde38b146103a857610121565b8063715018a61461027a5780637abf9d2614610284578063860a32ec146102a057806389f9a1d3146102be5780638da5cb5b146102dc57610121565b8063313ce567116100f4578063313ce567146101c257806339509351146101e057806342966c681461021057806349bd5a5e1461022c57806370a082311461024a57610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e6103c4565b60405161013b91906114cb565b60405180910390f35b61015e60048036038101906101599190611586565b610456565b60405161016b91906115e1565b60405180910390f35b61017c610474565b604051610189919061160b565b60405180910390f35b6101ac60048036038101906101a79190611626565b61047e565b6040516101b991906115e1565b60405180910390f35b6101ca610576565b6040516101d79190611695565b60405180910390f35b6101fa60048036038101906101f59190611586565b61057f565b60405161020791906115e1565b60405180910390f35b61022a600480360381019061022591906116b0565b61062b565b005b610234610638565b60405161024191906116ec565b60405180910390f35b610264600480360381019061025f9190611707565b61065e565b604051610271919061160b565b60405180910390f35b6102826106a7565b005b61029e60048036038101906102999190611760565b61072f565b005b6102a8610812565b6040516102b591906115e1565b60405180910390f35b6102c6610825565b6040516102d3919061160b565b60405180910390f35b6102e461082b565b6040516102f191906116ec565b60405180910390f35b610302610854565b60405161030f91906114cb565b60405180910390f35b610332600480360381019061032d9190611586565b6108e6565b60405161033f91906115e1565b60405180910390f35b610362600480360381019061035d9190611586565b6109d1565b60405161036f91906115e1565b60405180910390f35b610392600480360381019061038d91906117b3565b6109ef565b60405161039f919061160b565b60405180910390f35b6103c260048036038101906103bd9190611707565b610a76565b005b6060600480546103d390611822565b80601f01602080910402602001604051908101604052809291908181526020018280546103ff90611822565b801561044c5780601f106104215761010080835404028352916020019161044c565b820191906000526020600020905b81548152906001019060200180831161042f57829003601f168201915b5050505050905090565b600061046a610463610b6d565b8484610b75565b6001905092915050565b6000600354905090565b600061048b848484610d3e565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104d6610b6d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610556576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054d906118c5565b60405180910390fd5b61056a85610562610b6d565b858403610b75565b60019150509392505050565b60006012905090565b600061062161058c610b6d565b84846002600061059a610b6d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461061c9190611914565b610b75565b6001905092915050565b6106353382610fc0565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106af610b6d565b73ffffffffffffffffffffffffffffffffffffffff166106cd61082b565b73ffffffffffffffffffffffffffffffffffffffff1614610723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071a90611994565b60405180910390fd5b61072d6000611198565b565b610737610b6d565b73ffffffffffffffffffffffffffffffffffffffff1661075561082b565b73ffffffffffffffffffffffffffffffffffffffff16146107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a290611994565b60405180910390fd5b82600660006101000a81548160ff02191690831515021790555081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600781905550505050565b600660009054906101000a900460ff1681565b60075481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461086390611822565b80601f016020809104026020016040519081016040528092919081815260200182805461088f90611822565b80156108dc5780601f106108b1576101008083540402835291602001916108dc565b820191906000526020600020905b8154815290600101906020018083116108bf57829003601f168201915b5050505050905090565b600080600260006108f5610b6d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156109b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a990611a26565b60405180910390fd5b6109c66109bd610b6d565b85858403610b75565b600191505092915050565b60006109e56109de610b6d565b8484610d3e565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610a7e610b6d565b73ffffffffffffffffffffffffffffffffffffffff16610a9c61082b565b73ffffffffffffffffffffffffffffffffffffffff1614610af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae990611994565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5890611ab8565b60405180910390fd5b610b6a81611198565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdb90611b4a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4a90611bdc565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d31919061160b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da490611c6e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1390611d00565b60405180910390fd5b610e2783838361125c565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610eae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea590611d92565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f439190611914565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fa7919061160b565b60405180910390a3610fba848484611436565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361102f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102690611e24565b60405180910390fd5b61103b8260008361125c565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156110c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b990611eb6565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816003600082825461111a9190611ed6565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161117f919061160b565b60405180910390a361119383600084611436565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611369576112ba61082b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061132557506112f661082b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135b90611f56565b60405180910390fd5b611431565b600660009054906101000a900460ff1680156113d25750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561143057600754816113e48461065e565b6113ee9190611914565b111561142f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142690611fc2565b60405180910390fd5b5b5b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561147557808201518184015260208101905061145a565b60008484015250505050565b6000601f19601f8301169050919050565b600061149d8261143b565b6114a78185611446565b93506114b7818560208601611457565b6114c081611481565b840191505092915050565b600060208201905081810360008301526114e58184611492565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061151d826114f2565b9050919050565b61152d81611512565b811461153857600080fd5b50565b60008135905061154a81611524565b92915050565b6000819050919050565b61156381611550565b811461156e57600080fd5b50565b6000813590506115808161155a565b92915050565b6000806040838503121561159d5761159c6114ed565b5b60006115ab8582860161153b565b92505060206115bc85828601611571565b9150509250929050565b60008115159050919050565b6115db816115c6565b82525050565b60006020820190506115f660008301846115d2565b92915050565b61160581611550565b82525050565b600060208201905061162060008301846115fc565b92915050565b60008060006060848603121561163f5761163e6114ed565b5b600061164d8682870161153b565b935050602061165e8682870161153b565b925050604061166f86828701611571565b9150509250925092565b600060ff82169050919050565b61168f81611679565b82525050565b60006020820190506116aa6000830184611686565b92915050565b6000602082840312156116c6576116c56114ed565b5b60006116d484828501611571565b91505092915050565b6116e681611512565b82525050565b600060208201905061170160008301846116dd565b92915050565b60006020828403121561171d5761171c6114ed565b5b600061172b8482850161153b565b91505092915050565b61173d816115c6565b811461174857600080fd5b50565b60008135905061175a81611734565b92915050565b600080600060608486031215611779576117786114ed565b5b60006117878682870161174b565b93505060206117988682870161153b565b92505060406117a986828701611571565b9150509250925092565b600080604083850312156117ca576117c96114ed565b5b60006117d88582860161153b565b92505060206117e98582860161153b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061183a57607f821691505b60208210810361184d5761184c6117f3565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006118af602883611446565b91506118ba82611853565b604082019050919050565b600060208201905081810360008301526118de816118a2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061191f82611550565b915061192a83611550565b9250828201905080821115611942576119416118e5565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061197e602083611446565b915061198982611948565b602082019050919050565b600060208201905081810360008301526119ad81611971565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611a10602583611446565b9150611a1b826119b4565b604082019050919050565b60006020820190508181036000830152611a3f81611a03565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611aa2602683611446565b9150611aad82611a46565b604082019050919050565b60006020820190508181036000830152611ad181611a95565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611b34602483611446565b9150611b3f82611ad8565b604082019050919050565b60006020820190508181036000830152611b6381611b27565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611bc6602283611446565b9150611bd182611b6a565b604082019050919050565b60006020820190508181036000830152611bf581611bb9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611c58602583611446565b9150611c6382611bfc565b604082019050919050565b60006020820190508181036000830152611c8781611c4b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611cea602383611446565b9150611cf582611c8e565b604082019050919050565b60006020820190508181036000830152611d1981611cdd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611d7c602683611446565b9150611d8782611d20565b604082019050919050565b60006020820190508181036000830152611dab81611d6f565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e0e602183611446565b9150611e1982611db2565b604082019050919050565b60006020820190508181036000830152611e3d81611e01565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611ea0602283611446565b9150611eab82611e44565b604082019050919050565b60006020820190508181036000830152611ecf81611e93565b9050919050565b6000611ee182611550565b9150611eec83611550565b9250828203905081811115611f0457611f036118e5565b5b92915050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b6000611f40601683611446565b9150611f4b82611f0a565b602082019050919050565b60006020820190508181036000830152611f6f81611f33565b9050919050565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b6000611fac600683611446565b9150611fb782611f76565b602082019050919050565b60006020820190508181036000830152611fdb81611f9f565b905091905056fea2646970667358221220fd03b577a113f5126f802ae4927974b3201bef5d9f13083bba8b2f2959d0e89664736f6c63430008130033