60806040526040516200266238038062002662833981810160405281019062000029919062000586565b6200003b60006200027760201b60201c565b83600590816200004c919062000877565b5082600690816200005e919062000877565b506012600760006101000a81548160ff021916908360ff160217905550600460405180604001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001600115158152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff0219169083151502179055505050600760009054906101000a900460ff16600a62000157919062000aee565b8162000164919062000b3f565b600881905550620001c0600854600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200033b60201b90919060201c565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60085460405162000265919062000b9b565b60405180910390a35050505062000bf3565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081836200034b919062000bb8565b905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620003bc8262000371565b810181811067ffffffffffffffff82111715620003de57620003dd62000382565b5b80604052505050565b6000620003f362000353565b9050620004018282620003b1565b919050565b600067ffffffffffffffff82111562000424576200042362000382565b5b6200042f8262000371565b9050602081019050919050565b60005b838110156200045c5780820151818401526020810190506200043f565b60008484015250505050565b60006200047f620004798462000406565b620003e7565b9050828152602081018484840111156200049e576200049d6200036c565b5b620004ab8482856200043c565b509392505050565b600082601f830112620004cb57620004ca62000367565b5b8151620004dd84826020860162000468565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200051382620004e6565b9050919050565b620005258162000506565b81146200053157600080fd5b50565b60008151905062000545816200051a565b92915050565b6000819050919050565b62000560816200054b565b81146200056c57600080fd5b50565b600081519050620005808162000555565b92915050565b60008060008060808587031215620005a357620005a26200035d565b5b600085015167ffffffffffffffff811115620005c457620005c362000362565b5b620005d287828801620004b3565b945050602085015167ffffffffffffffff811115620005f657620005f562000362565b5b6200060487828801620004b3565b9350506040620006178782880162000534565b92505060606200062a878288016200056f565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200068957607f821691505b6020821081036200069f576200069e62000641565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007097fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006ca565b620007158683620006ca565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000758620007526200074c846200054b565b6200072d565b6200054b565b9050919050565b6000819050919050565b620007748362000737565b6200078c62000783826200075f565b848454620006d7565b825550505050565b600090565b620007a362000794565b620007b081848462000769565b505050565b5b81811015620007d857620007cc60008262000799565b600181019050620007b6565b5050565b601f8211156200082757620007f181620006a5565b620007fc84620006ba565b810160208510156200080c578190505b620008246200081b85620006ba565b830182620007b5565b50505b505050565b600082821c905092915050565b60006200084c600019846008026200082c565b1980831691505092915050565b600062000867838362000839565b9150826002028217905092915050565b620008828262000636565b67ffffffffffffffff8111156200089e576200089d62000382565b5b620008aa825462000670565b620008b7828285620007dc565b600060209050601f831160018114620008ef5760008415620008da578287015190505b620008e6858262000859565b86555062000956565b601f198416620008ff86620006a5565b60005b82811015620009295784890151825560018201915060208501945060208101905062000902565b8683101562000949578489015162000945601f89168262000839565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009ec57808604811115620009c457620009c36200095e565b5b6001851615620009d45780820291505b8081029050620009e4856200098d565b9450620009a4565b94509492505050565b60008262000a07576001905062000ada565b8162000a17576000905062000ada565b816001811462000a30576002811462000a3b5762000a71565b600191505062000ada565b60ff84111562000a505762000a4f6200095e565b5b8360020a91508482111562000a6a5762000a696200095e565b5b5062000ada565b5060208310610133831016604e8410600b841016171562000aab5782820a90508381111562000aa55762000aa46200095e565b5b62000ada565b62000aba84848460016200099a565b9250905081840481111562000ad45762000ad36200095e565b5b81810290505b9392505050565b600060ff82169050919050565b600062000afb826200054b565b915062000b088362000ae1565b925062000b377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009f5565b905092915050565b600062000b4c826200054b565b915062000b59836200054b565b925082820262000b69816200054b565b9150828204841483151762000b835762000b826200095e565b5b5092915050565b62000b95816200054b565b82525050565b600060208201905062000bb2600083018462000b8a565b92915050565b600062000bc5826200054b565b915062000bd2836200054b565b925082820190508082111562000bed5762000bec6200095e565b5b92915050565b611a5f8062000c036000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063715018a61161008c57806395d89b411161006657806395d89b4114610261578063a9059cbb1461027f578063dd62ed3e146102af578063f2fde38b146102df576100ea565b8063715018a6146102095780638da5cb5b1461021357806390ec57f114610231576100ea565b806323b872dd116100c857806323b872dd1461015b578063313ce5671461018b57806369216959146101a957806370a08231146101d9576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f76102fb565b604051610104919061121b565b60405180910390f35b610127600480360381019061012291906112d6565b61038d565b6040516101349190611331565b60405180910390f35b6101456103a4565b604051610152919061135b565b60405180910390f35b61017560048036038101906101709190611376565b6103ae565b6040516101829190611331565b60405180910390f35b610193610479565b6040516101a091906113e5565b60405180910390f35b6101c360048036038101906101be9190611400565b610490565b6040516101d0919061135b565b60405180910390f35b6101f360048036038101906101ee9190611400565b6104dc565b604051610200919061135b565b60405180910390f35b610211610525565b005b61021b6105a6565b604051610228919061143c565b60405180910390f35b61024b600480360381019061024691906112d6565b6105cf565b6040516102589190611331565b60405180910390f35b6102696106bf565b604051610276919061121b565b60405180910390f35b610299600480360381019061029491906112d6565b610751565b6040516102a69190611331565b60405180910390f35b6102c960048036038101906102c49190611457565b610768565b6040516102d6919061135b565b60405180910390f35b6102f960048036038101906102f49190611400565b6107ef565b005b60606005805461030a906114c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610336906114c6565b80156103835780601f1061035857610100808354040283529160200191610383565b820191906000526020600020905b81548152906001019060200180831161036657829003601f168201915b5050505050905090565b600061039a3384846108df565b6001905092915050565b6000600854905090565b60006103bb848484610aa8565b61046e843361046985604051806060016040528060288152602001611a0260289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d8a9092919063ffffffff16565b6108df565b600190509392505050565b6000600760009054906101000a900460ff16905090565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff166105446105a6565b73ffffffffffffffffffffffffffffffffffffffff161461059a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059190611543565b60405180910390fd5b6105a46000610ddf565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080339050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063b906115af565b60405180910390fd5b61064f818585610ea3565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516106ac919061135b565b60405180910390a3600191505092915050565b6060600680546106ce906114c6565b80601f01602080910402602001604051908101604052809291908181526020018280546106fa906114c6565b80156107475780601f1061071c57610100808354040283529160200191610747565b820191906000526020600020905b81548152906001019060200180831161072a57829003601f168201915b5050505050905090565b600061075e338484610aa8565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661080e6105a6565b73ffffffffffffffffffffffffffffffffffffffff1614610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085b90611543565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036108d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ca90611641565b60405180910390fd5b6108dc81610ddf565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361094e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610945906116d3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b490611765565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a9b919061135b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0e906117f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7d90611889565b60405180910390fd5b6000610b9184610490565b82610b9c91906118d8565b11610bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd390611958565b60405180910390fd5b610c48816040518060600160405280602681526020016119dc60269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d8a9092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610cdd81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461117590919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d7d919061135b565b60405180910390a3505050565b6000838311158290610dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc9919061121b565b60405180910390fd5b5082840390509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8b906115af565b60405180910390fd5b6004600081548110610fa957610fa8611978565b5b9060005260206000200160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036110bc5780600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600082825461105b91906118d8565b92505081905550818161106e91906119a7565b905080600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061116f565b80600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600082825461110e91906118d8565b9250508190555080600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600082825461116791906119a7565b925050819055505b50505050565b6000818361118391906119a7565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156111c55780820151818401526020810190506111aa565b60008484015250505050565b6000601f19601f8301169050919050565b60006111ed8261118b565b6111f78185611196565b93506112078185602086016111a7565b611210816111d1565b840191505092915050565b6000602082019050818103600083015261123581846111e2565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061126d82611242565b9050919050565b61127d81611262565b811461128857600080fd5b50565b60008135905061129a81611274565b92915050565b6000819050919050565b6112b3816112a0565b81146112be57600080fd5b50565b6000813590506112d0816112aa565b92915050565b600080604083850312156112ed576112ec61123d565b5b60006112fb8582860161128b565b925050602061130c858286016112c1565b9150509250929050565b60008115159050919050565b61132b81611316565b82525050565b60006020820190506113466000830184611322565b92915050565b611355816112a0565b82525050565b6000602082019050611370600083018461134c565b92915050565b60008060006060848603121561138f5761138e61123d565b5b600061139d8682870161128b565b93505060206113ae8682870161128b565b92505060406113bf868287016112c1565b9150509250925092565b600060ff82169050919050565b6113df816113c9565b82525050565b60006020820190506113fa60008301846113d6565b92915050565b6000602082840312156114165761141561123d565b5b60006114248482850161128b565b91505092915050565b61143681611262565b82525050565b6000602082019050611451600083018461142d565b92915050565b6000806040838503121561146e5761146d61123d565b5b600061147c8582860161128b565b925050602061148d8582860161128b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806114de57607f821691505b6020821081036114f1576114f0611497565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061152d602083611196565b9150611538826114f7565b602082019050919050565b6000602082019050818103600083015261155c81611520565b9050919050565b7f696e76616c696420616464726573730000000000000000000000000000000000600082015250565b6000611599600f83611196565b91506115a482611563565b602082019050919050565b600060208201905081810360008301526115c88161158c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061162b602683611196565b9150611636826115cf565b604082019050919050565b6000602082019050818103600083015261165a8161161e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006116bd602483611196565b91506116c882611661565b604082019050919050565b600060208201905081810360008301526116ec816116b0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061174f602283611196565b915061175a826116f3565b604082019050919050565b6000602082019050818103600083015261177e81611742565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006117e1602583611196565b91506117ec82611785565b604082019050919050565b60006020820190508181036000830152611810816117d4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611873602383611196565b915061187e82611817565b604082019050919050565b600060208201905081810360008301526118a281611866565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006118e3826112a0565b91506118ee836112a0565b9250828203905081811115611906576119056118a9565b5b92915050565b7f6d61626b726a6179000000000000000000000000000000000000000000000000600082015250565b6000611942600883611196565b915061194d8261190c565b602082019050919050565b6000602082019050818103600083015261197181611935565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006119b2826112a0565b91506119bd836112a0565b92508282019050808211156119d5576119d46118a9565b5b9291505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203abff0945624fcaaf99279752f5c6587a1f273ce497a1ff69fe7db6b9186379b64736f6c63430008130033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000875aaf1abcd1430115b67acf50dcf91eda3713a0000000000000000000000000000000000000000000000000000000005f5e1000000000000000000000000000000000000000000000000000000000000000004574542330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045745423300000000000000000000000000000000000000000000000000000000