60806040526040518060400160405280600581526020017f4348494e410000000000000000000000000000000000000000000000000000008152505f90816200004991906200189f565b506040518060400160405280600581526020017f4348494e41000000000000000000000000000000000000000000000000000000815250600190816200009091906200189f565b506b033b2e3c9fd0803cac653600600255601260035f6101000a81548160ff021916908360ff160217905550348015620000c8575f80fd5b5060405162004211380380620042118339818101604052810190620000ee9190620019e8565b3360075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025460045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160065f734975558220f72e80b60c2e2d049abc3e311cba1a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73a0e06234928dc87cd4d1218a42d056dd977c6f0e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f732e07423780bda8fb9c1b998ce61deb594f46f5e573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73ee094cb95c903d1970ff8f4eeab5efb4c9119e3c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73ca81771e79b27a8973793e6211082d4e7767833a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f735af371086b0cc5a303d4c71c3aea467ebfaaf95c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73ab0422788ce1bdb68bc8a865065f5392a8aca18773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73d244f3e41476ee78e863d366907466d521a1e78e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f730a32e56d6b39e3017a60026f3a5ee52a9b1cfcc673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f7365f11a70ef3126e14e113e25b14b3173de0bb3f473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73fb9f1371c9c38334d8e8cf187d36e4edf273068373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73afd3d55d6c10c93c2e4a7211edda7fef01b3ebeb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73dcdb67fdf32120348b07aa46bee9f6a17dc8912b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73024f670686ceca9e8c0df00df8ca9cca5cfa755173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73b1b45f8c3b7ddeccd17aa0cc4dfc492b59db4f8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f739e4c9315907dfdc48277d1dcfdd805249ea7540e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73793b99e3d3dcaa5a6d12227010c477e595826cd273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73c538c257b79aa6b9c025b4c0d6e6e1f85521451573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f733df0751614b31a4ed279e6f4819502e7d0d4f22973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73af6eaf1483abe3c072ffcc575e3eb19feeac694173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73291d928c9e2bd930cb44076dc85b42b514fca5c173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f7373372e891a30931abf03afeb4d7531c513f350f673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f7304a882e8a6f5e7d9ec5e8ddbe0556ae21aded3f773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f730cca16dca3678d25547c7c13f57fb25ceb3b291d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73d7eae48092f6155cc2b32a44ca77f787c1cc0e9f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f732ad23a4bdc4c6b4e8079ae139edd27306383fb7d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f731ff21c379a67aac1ec720ba3ed405b643b39724f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f7335cd682e78b19ce4ec7291bc3edf5d4f598a2afc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f733c889e1d691de7c7b0f3cd834e8daa970e1ea74a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f731793d34549ce36a4ee4fbfa7e8e1653fb4e6a95c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73025622d203e2ec4f6f5f50caeb6d56e6bd99c4d073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73ad4066ae5064d695f9eea471907e7438f78423a973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73da9fdce5149830dcfdb018a8d47fa15bb825c7db73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73877ab286d76c439125ea54daa0cadb78caf8251973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f7301f086ca1551418293b0ac75a363b39405eaaa2973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f736de3c7d719d2a78776db5eb2a8431ce9d8976ddf73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73a1fb132c04b9ace1052164680e734a47941a89d373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73a17c3ca9d09576a89059c3c4dcbf331f2f090b4473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73d073f55b86c7ae7599e310fe70b97f23b4f3fcea73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73747d1a3185534c0400f0291e812be5ff188e2fc173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73ffe6e503f4af66c62b0e2b7505db339862df0cc573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73b6484c106398c90588f0169265bb62bf90cc665e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f7336f069173b5e626c61fdba7bdd4dde9dfaea60ba73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73f21b0ea97d6b2427be54dc655c07f03e5dbd755e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f737381f475b56ea7658b2154530d99cc7227abd51073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73aae1a4091e59c249d891f2604d69035a7d791bf973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f731d5a415e142099b9eaaeed2d650289899cf1bc0173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73c727449e57623095c001d6852ab1d8184572655b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73660f0f6b821006a361034f6a73ba2fd7641e0a4573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f7373e5c12616dab1e3c7ea6c0fdaced824fa59460d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505062001a18565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620016b757607f821691505b602082108103620016cd57620016cc62001672565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620017317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620016f4565b6200173d8683620016f4565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62001787620017816200177b8462001755565b6200175e565b62001755565b9050919050565b5f819050919050565b620017a28362001767565b620017ba620017b1826200178e565b84845462001700565b825550505050565b5f90565b620017d0620017c2565b620017dd81848462001797565b505050565b5b818110156200180457620017f85f82620017c6565b600181019050620017e3565b5050565b601f82111562001853576200181d81620016d3565b6200182884620016e5565b8101602085101562001838578190505b620018506200184785620016e5565b830182620017e2565b50505b505050565b5f82821c905092915050565b5f620018755f198460080262001858565b1980831691505092915050565b5f6200188f838362001864565b9150826002028217905092915050565b620018aa826200163b565b67ffffffffffffffff811115620018c657620018c562001645565b5b620018d282546200169f565b620018df82828562001808565b5f60209050601f83116001811462001915575f841562001900578287015190505b6200190c858262001882565b8655506200197b565b601f1984166200192586620016d3565b5f5b828110156200194e5784890151825560018201915060208501945060208101905062001927565b868310156200196e57848901516200196a601f89168262001864565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620019b28262001987565b9050919050565b620019c481620019a6565b8114620019cf575f80fd5b50565b5f81519050620019e281620019b9565b92915050565b5f6020828403121562001a0057620019ff62001983565b5b5f62001a0f84828501620019d2565b91505092915050565b6127eb8062001a265f395ff3fe608060405260043610610108575f3560e01c8063715018a611610094578063a9059cbb11610063578063a9059cbb1461032e578063d0fb02031461036a578063dd62ed3e14610394578063e4849b32146103d0578063f6a23d98146103f857610108565b8063715018a6146102ba5780638da5cb5b146102d057806395d89b41146102fa578063a6f2ae3a1461032457610108565b806323b872dd116100db57806323b872dd146101c45780632b14ca5614610200578063313ce5671461022a578063470624021461025457806370a082311461027e57610108565b806306fdde031461010c578063095ea7b3146101365780630b78f9c01461017257806318160ddd1461019a575b5f80fd5b348015610117575f80fd5b50610120610434565b60405161012d9190611de6565b60405180910390f35b348015610141575f80fd5b5061015c60048036038101906101579190611e97565b6104bf565b6040516101699190611eef565b60405180910390f35b34801561017d575f80fd5b5061019860048036038101906101939190611f08565b6105ac565b005b3480156101a5575f80fd5b506101ae6107b6565b6040516101bb9190611f55565b60405180910390f35b3480156101cf575f80fd5b506101ea60048036038101906101e59190611f6e565b6107bc565b6040516101f79190611eef565b60405180910390f35b34801561020b575f80fd5b50610214610f4a565b6040516102219190611f55565b60405180910390f35b348015610235575f80fd5b5061023e610f50565b60405161024b9190611fd9565b60405180910390f35b34801561025f575f80fd5b50610268610f62565b6040516102759190611f55565b60405180910390f35b348015610289575f80fd5b506102a4600480360381019061029f9190611ff2565b610f68565b6040516102b19190611f55565b60405180910390f35b3480156102c5575f80fd5b506102ce610f7d565b005b3480156102db575f80fd5b506102e46110c9565b6040516102f1919061202c565b60405180910390f35b348015610305575f80fd5b5061030e6110ee565b60405161031b9190611de6565b60405180910390f35b61032c61117a565b005b348015610339575f80fd5b50610354600480360381019061034f9190611e97565b6115c7565b6040516103619190611eef565b60405180910390f35b348015610375575f80fd5b5061037e6117d9565b60405161038b919061202c565b60405180910390f35b34801561039f575f80fd5b506103ba60048036038101906103b59190612045565b6117fe565b6040516103c79190611f55565b60405180910390f35b3480156103db575f80fd5b506103f660048036038101906103f19190612083565b61181e565b005b348015610403575f80fd5b5061041e60048036038101906104199190611ff2565b611bbc565b60405161042b9190611eef565b60405180910390f35b5f8054610440906120db565b80601f016020809104026020016040519081016040528092919081815260200182805461046c906120db565b80156104b75780601f1061048e576101008083540402835291602001916104b7565b820191905f5260205f20905b81548152906001019060200180831161049a57829003601f168201915b505050505081565b5f8160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161059a9190611f55565b60405180910390a36001905092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610653575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806106a4575060065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6106e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106da9061217b565b60405180910390fd5b6064821115610727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071e906121e3565b60405180910390fd5b606481111561076b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107629061224b565b60405180910390fd5b8160098190555080600a819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a182826040516107aa929190612269565b60405180910390a15050565b60025481565b5f8160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561083d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610834906122da565b60405180910390fd5b8160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156108f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ef90612342565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095d906123aa565b60405180910390fd5b5f8083905060065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166109f9576109e160646109d3600a5487611bd990919063ffffffff16565b611c5090919063ffffffff16565b91506109f68285611ca790919063ffffffff16565b90505b610a498460045f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ca790919063ffffffff16565b60045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610ada8160045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611cff90919063ffffffff16565b60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b789190611f55565b60405180910390a35f821115610c7f57610bd88260045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611cff90919063ffffffff16565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c769190611f55565b60405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015610d5357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414155b15610f3d57610de38460055f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ca790919063ffffffff16565b60055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051610f349190611f55565b60405180910390a35b6001925050509392505050565b600a5481565b60035f9054906101000a900460ff1681565b60095481565b6004602052805f5260405f205f915090505481565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461100c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100390612438565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600180546110fb906120db565b80601f0160208091040260200160405190810160405280929190818152602001828054611127906120db565b80156111725780601f1061114957610100808354040283529160200191611172565b820191905f5260205f20905b81548152906001019060200180831161115557829003601f168201915b505050505081565b5f34116111bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b3906124c6565b60405180910390fd5b5f3490505f600954111561146a575f6111f360646111e560095485611bd990919063ffffffff16565b611c5090919063ffffffff16565b90505f6112098284611ca790919063ffffffff16565b905061127c8160045f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611cff90919063ffffffff16565b60045f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161135c9190611f55565b60405180910390a35f821115611463576113bc8260045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611cff90919063ffffffff16565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161145a9190611f55565b60405180910390a35b50506115c4565b6114db8160045f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611cff90919063ffffffff16565b60045f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115bb9190611f55565b60405180910390a35b50565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611611575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611648575f80fd5b6116988260045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ca790919063ffffffff16565b60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506117298260045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611cff90919063ffffffff16565b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117c79190611f55565b60405180910390a36001905092915050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005602052815f5260405f20602052805f5260405f205f91509150505481565b8060045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561189e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611895906122da565b60405180910390fd5b5f8082905060065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661193157611919606461190b600a5486611bd990919063ffffffff16565b611c5090919063ffffffff16565b915061192e8284611ca790919063ffffffff16565b90505b6119818360045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ca790919063ffffffff16565b60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611a128160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611cff90919063ffffffff16565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ab09190611f55565b60405180910390a35f821115611bb757611b108260045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611cff90919063ffffffff16565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bae9190611f55565b60405180910390a35b505050565b6006602052805f5260405f205f915054906101000a900460ff1681565b5f808303611be9575f9050611c4a565b5f8284611bf69190612511565b9050828482611c05919061257f565b14611c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3c906125f9565b60405180910390fd5b809150505b92915050565b5f808211611c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8a90612661565b60405180910390fd5b8183611c9f919061257f565b905092915050565b5f82821115611ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce2906126c9565b60405180910390fd5b8183611cf791906126e7565b905092915050565b5f808284611d0d919061271a565b905083811015611d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4990612797565b60405180910390fd5b8091505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611d93578082015181840152602081019050611d78565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611db882611d5c565b611dc28185611d66565b9350611dd2818560208601611d76565b611ddb81611d9e565b840191505092915050565b5f6020820190508181035f830152611dfe8184611dae565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611e3382611e0a565b9050919050565b611e4381611e29565b8114611e4d575f80fd5b50565b5f81359050611e5e81611e3a565b92915050565b5f819050919050565b611e7681611e64565b8114611e80575f80fd5b50565b5f81359050611e9181611e6d565b92915050565b5f8060408385031215611ead57611eac611e06565b5b5f611eba85828601611e50565b9250506020611ecb85828601611e83565b9150509250929050565b5f8115159050919050565b611ee981611ed5565b82525050565b5f602082019050611f025f830184611ee0565b92915050565b5f8060408385031215611f1e57611f1d611e06565b5b5f611f2b85828601611e83565b9250506020611f3c85828601611e83565b9150509250929050565b611f4f81611e64565b82525050565b5f602082019050611f685f830184611f46565b92915050565b5f805f60608486031215611f8557611f84611e06565b5b5f611f9286828701611e50565b9350506020611fa386828701611e50565b9250506040611fb486828701611e83565b9150509250925092565b5f60ff82169050919050565b611fd381611fbe565b82525050565b5f602082019050611fec5f830184611fca565b92915050565b5f6020828403121561200757612006611e06565b5b5f61201484828501611e50565b91505092915050565b61202681611e29565b82525050565b5f60208201905061203f5f83018461201d565b92915050565b5f806040838503121561205b5761205a611e06565b5b5f61206885828601611e50565b925050602061207985828601611e50565b9150509250929050565b5f6020828403121561209857612097611e06565b5b5f6120a584828501611e83565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806120f257607f821691505b602082108103612105576121046120ae565b5b50919050565b7f4f6e6c7920617574686f72697a65642077616c6c6574732063616e2063616c6c5f8201527f20746869732066756e6374696f6e2e0000000000000000000000000000000000602082015250565b5f612165602f83611d66565b91506121708261210b565b604082019050919050565b5f6020820190508181035f83015261219281612159565b9050919050565b7f427579206665652063616e6e6f742065786365656420313030250000000000005f82015250565b5f6121cd601a83611d66565b91506121d882612199565b602082019050919050565b5f6020820190508181035f8301526121fa816121c1565b9050919050565b7f53656c6c206665652063616e6e6f7420657863656564203130302500000000005f82015250565b5f612235601b83611d66565b915061224082612201565b602082019050919050565b5f6020820190508181035f83015261226281612229565b9050919050565b5f60408201905061227c5f830185611f46565b6122896020830184611f46565b9392505050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f6122c4601483611d66565b91506122cf82612290565b602082019050919050565b5f6020820190508181035f8301526122f1816122b8565b9050919050565b7f496e73756666696369656e7420616c6c6f77616e6365000000000000000000005f82015250565b5f61232c601683611d66565b9150612337826122f8565b602082019050919050565b5f6020820190508181035f83015261235981612320565b9050919050565b7f496e76616c696420726563697069656e742061646472657373000000000000005f82015250565b5f612394601983611d66565b915061239f82612360565b602082019050919050565b5f6020820190508181035f8301526123c181612388565b9050919050565b7f4f6e6c7920746865206f776e65722063616e2063616c6c20746869732066756e5f8201527f6374696f6e2e0000000000000000000000000000000000000000000000000000602082015250565b5f612422602683611d66565b915061242d826123c8565b604082019050919050565b5f6020820190508181035f83015261244f81612416565b9050919050565b7f45544820616d6f756e742073686f756c642062652067726561746572207468615f8201527f6e20300000000000000000000000000000000000000000000000000000000000602082015250565b5f6124b0602383611d66565b91506124bb82612456565b604082019050919050565b5f6020820190508181035f8301526124dd816124a4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61251b82611e64565b915061252683611e64565b925082820261253481611e64565b9150828204841483151761254b5761254a6124e4565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61258982611e64565b915061259483611e64565b9250826125a4576125a3612552565b5b828204905092915050565b7f4d756c7469706c69636174696f6e206f766572666c6f770000000000000000005f82015250565b5f6125e3601783611d66565b91506125ee826125af565b602082019050919050565b5f6020820190508181035f830152612610816125d7565b9050919050565b7f4469766973696f6e206279207a65726f000000000000000000000000000000005f82015250565b5f61264b601083611d66565b915061265682612617565b602082019050919050565b5f6020820190508181035f8301526126788161263f565b9050919050565b7f5375627472616374696f6e206f766572666c6f770000000000000000000000005f82015250565b5f6126b3601483611d66565b91506126be8261267f565b602082019050919050565b5f6020820190508181035f8301526126e0816126a7565b9050919050565b5f6126f182611e64565b91506126fc83611e64565b9250828203905081811115612714576127136124e4565b5b92915050565b5f61272482611e64565b915061272f83611e64565b9250828201905080821115612747576127466124e4565b5b92915050565b7f4164646974696f6e206f766572666c6f770000000000000000000000000000005f82015250565b5f612781601183611d66565b915061278c8261274d565b602082019050919050565b5f6020820190508181035f8301526127ae81612775565b905091905056fea264697066735822122087a3502f6c42227b08517c1df3cc1b927ac1eba4f7d8379ffcd8e9580fccd7a264736f6c63430008140033000000000000000000000000bc54ead84c1859aa23f0b55806307acb325b3535