610100604052736649c6035d74b4e6f45eb79889bcdd7556bfef70600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280601a81526020017f68747470733a2f2f6578616d706c652e636f6d2f746f6b656e2f00000000000081525060109081620000a0919062001c1c565b50604051620072f9380380620072f98339818101604052810190620000c6919062001ed6565b84848433600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200013f5760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000136919062002000565b60405180910390fd5b62000150816200044f60201b60201c565b50826003908162000162919062001c1c565b50816004908162000174919062001c1c565b5060128160ff161015620001b4576040517f98790fd500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060ff1660808160ff1681525050608051600a620001d39190620021a0565b60a081815250504660c08181525050620001f26200051360201b60201c565b60e081815250505050506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663083132c460006040518263ffffffff1660e01b81526004016200025c919062002202565b602060405180830381865afa1580156200027a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a091906200221f565b905080341015620002e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002df90620022b2565b60405180910390fd5b600084600a620002f99190620021a0565b84620003069190620022d4565b90506200031b336001620005a360201b60201c565b60006103e86002836200032f9190620022d4565b6200033b91906200234e565b90506200036373b46022e173378566d9ae421f2b84bc2dad332e09826200069560201b60201c565b6200038233828462000376919062002386565b6200069560201b60201c565b836010908162000393919062001c1c565b5073b46022e173378566d9ae421f2b84bc2dad332e0973ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015620003ef573d6000803e3d6000fd5b503073ffffffffffffffffffffffffffffffffffffffff167ff06f39c7256592e120faf6a2a3824b0ea63a9e95a4c9e64799ff187add0a2a60600060405162000439919062002202565b60405180910390a2505050505050505062002615565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600360405162000547919062002470565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6463060405160200162000588959493929190620024b5565b60405160208183030381529060405280519060200120905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200060a576040517fa41e3d3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015620006285762000622826200077f60201b60201c565b6200063a565b6200063982620007c260201b60201c565b5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006fc576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f8000000000000000000000000000000000000000000000000000000000000000816005546200072d919062002512565b111562000766576040517f303b682f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200077a600083836200083760201b60201c565b505050565b6000620007928262000bb660201b60201c565b905060005b81811015620007bd57620007b18362000c0260201b60201c565b80600101905062000797565b505050565b600060a051620007d88362000d4a60201b60201c565b620007e491906200234e565b90506000620007f98362000bb660201b60201c565b905060005b81836200080c919062002386565b8110156200083157620008258462000d9360201b60201c565b806001019050620007fe565b50505050565b6000806200084b8562000d4a60201b60201c565b90506000620008608562000d4a60201b60201c565b90506200087586868662000f6860201b60201c565b60006200088887620010d060201b60201c565b905060006200089d87620010d060201b60201c565b9050818015620008aa5750805b62000ba75781156200095657600060a05184620008c891906200234e565b60a051600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200091791906200234e565b62000923919062002386565b905060005b818110156200094e57620009428962000d9360201b60201c565b80600101905062000928565b505062000ba6565b8015620009fd57600060a051600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620009ae91906200234e565b60a05186620009be91906200234e565b620009ca919062002386565b905060005b81811015620009f557620009e98a62000c0260201b60201c565b806001019050620009cf565b505062000ba5565b600060a0518762000a0f91906200234e565b905060005b8181101562000af65760006001600c60008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905062000a70919062002386565b90506000600c60008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811062000ac85762000ac76200254d565b5b9060005260206000200154905062000ae88c8c836200115d60201b60201c565b826001019250505062000a14565b508060a05162000b0c8b62000d4a60201b60201c565b62000b1891906200234e565b60a0518762000b2891906200234e565b62000b34919062002386565b111562000b4d5762000b4c8962000c0260201b60201c565b5b8060a0518562000b5e91906200234e565b60a05162000b728b62000d4a60201b60201c565b62000b7e91906200234e565b62000b8a919062002386565b111562000ba35762000ba28862000d9360201b60201c565b5b505b5b5b60019450505050509392505050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000c69576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905062000cfb919062002386565b8154811062000d0f5762000d0e6200254d565b5b9060005260206000200154905062000d30826000836200115d60201b60201c565b62000d468160016200150660201b90919060201c565b5050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000dfa576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600062000e0e60016200162a60201b60201c565b62000e2d5762000e2560016200169a60201b60201c565b905062000ed4565b60066000815462000e3e906200257c565b919050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6006540362000ea1576040517f303b682f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006547f800000000000000000000000000000000000000000000000000000000000000062000ed1919062002512565b90505b600062000ee782620017ff60201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161462000f50576040517f23369fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000f638184846200115d60201b60201c565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000fbe57806005600082825462000fb1919062002512565b9250508190555062001017565b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200100f919062002386565b925050819055505b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620010c39190620025c9565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480620011565750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161462001379576009600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506200125a919062002386565b815481106200126e576200126d6200254d565b5b906000526020600020015490508181146200130f57600062001296836200183760201b60201c565b905081600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110620012ed57620012ec6200254d565b5b90600052602060002001819055506200130d82826200185c60201b60201c565b505b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480620013615762001360620025e6565b5b60019003818190600052602060002001600090559055505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146200148e57620013c081836200193060201b60201c565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081908060018154018082558091505060019003906000526020600020016000909190919091505562001488816001600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506200147c919062002386565b6200185c60201b60201c565b620014a6565b600b6000828152602001908152602001600020600090555b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600060018360000160009054906101000a90046fffffffffffffffffffffffffffffffff160390508260000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1603620015ac576040517f8acb5f2700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81836001016000836fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808360000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550505050565b60008160000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168260000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16149050919050565b6000808260000160109054906101000a90046fffffffffffffffffffffffffffffffff1690508260000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff16036200173e576040517f75e52f4f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600190039050826001016000826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001908152602001600020549150826001016000826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200190815260200160002060009055808360000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050919050565b600080600b600084815260200190815260200160002054905073ffffffffffffffffffffffffffffffffffffffff8116915050919050565b600080600b60008481526020019081526020016000205490508060a01c915050919050565b6000600b600084815260200190815260200160002054905060a07fffffffffffffffffffffffff0000000000000000000000000000000000000000901c821115620018d3576040517ffcb3438c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffff00000000000000000000000000000000000000008260a01b1673ffffffffffffffffffffffffffffffffffffffff821617905080600b600085815260200190815260200160002081905550505050565b6000600b600084815260200190815260200160002054905073ffffffffffffffffffffffffffffffffffffffff82167fffffffffffffffffffffffff0000000000000000000000000000000000000000821617905080600b600085815260200190815260200160002081905550505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062001a2457607f821691505b60208210810362001a3a5762001a39620019dc565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262001aa47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001a65565b62001ab0868362001a65565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062001afd62001af762001af18462001ac8565b62001ad2565b62001ac8565b9050919050565b6000819050919050565b62001b198362001adc565b62001b3162001b288262001b04565b84845462001a72565b825550505050565b600090565b62001b4862001b39565b62001b5581848462001b0e565b505050565b5b8181101562001b7d5762001b7160008262001b3e565b60018101905062001b5b565b5050565b601f82111562001bcc5762001b968162001a40565b62001ba18462001a55565b8101602085101562001bb1578190505b62001bc962001bc08562001a55565b83018262001b5a565b50505b505050565b600082821c905092915050565b600062001bf16000198460080262001bd1565b1980831691505092915050565b600062001c0c838362001bde565b9150826002028217905092915050565b62001c2782620019a2565b67ffffffffffffffff81111562001c435762001c42620019ad565b5b62001c4f825462001a0b565b62001c5c82828562001b81565b600060209050601f83116001811462001c94576000841562001c7f578287015190505b62001c8b858262001bfe565b86555062001cfb565b601f19841662001ca48662001a40565b60005b8281101562001cce5784890151825560018201915060208501945060208101905062001ca7565b8683101562001cee578489015162001cea601f89168262001bde565b8355505b6001600288020188555050505b505050505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b62001d3d8262001d21565b810181811067ffffffffffffffff8211171562001d5f5762001d5e620019ad565b5b80604052505050565b600062001d7462001d03565b905062001d82828262001d32565b919050565b600067ffffffffffffffff82111562001da55762001da4620019ad565b5b62001db08262001d21565b9050602081019050919050565b60005b8381101562001ddd57808201518184015260208101905062001dc0565b60008484015250505050565b600062001e0062001dfa8462001d87565b62001d68565b90508281526020810184848401111562001e1f5762001e1e62001d1c565b5b62001e2c84828562001dbd565b509392505050565b600082601f83011262001e4c5762001e4b62001d17565b5b815162001e5e84826020860162001de9565b91505092915050565b600060ff82169050919050565b62001e7f8162001e67565b811462001e8b57600080fd5b50565b60008151905062001e9f8162001e74565b92915050565b62001eb08162001ac8565b811462001ebc57600080fd5b50565b60008151905062001ed08162001ea5565b92915050565b600080600080600060a0868803121562001ef55762001ef462001d0d565b5b600086015167ffffffffffffffff81111562001f165762001f1562001d12565b5b62001f248882890162001e34565b955050602086015167ffffffffffffffff81111562001f485762001f4762001d12565b5b62001f568882890162001e34565b945050604062001f698882890162001e8e565b935050606062001f7c8882890162001ebf565b925050608086015167ffffffffffffffff81111562001fa05762001f9f62001d12565b5b62001fae8882890162001e34565b9150509295509295909350565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062001fe88262001fbb565b9050919050565b62001ffa8162001fdb565b82525050565b600060208201905062002017600083018462001fef565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620020ab578086048111156200208357620020826200201d565b5b6001851615620020935780820291505b8081029050620020a3856200204c565b945062002063565b94509492505050565b600082620020c6576001905062002199565b81620020d6576000905062002199565b8160018114620020ef5760028114620020fa5762002130565b600191505062002199565b60ff8411156200210f576200210e6200201d565b5b8360020a9150848211156200212957620021286200201d565b5b5062002199565b5060208310610133831016604e8410600b84101617156200216a5782820a9050838111156200216457620021636200201d565b5b62002199565b62002179848484600162002059565b925090508184048111156200219357620021926200201d565b5b81810290505b9392505050565b6000620021ad8262001ac8565b9150620021ba8362001e67565b9250620021e97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620020b4565b905092915050565b620021fc8162001e67565b82525050565b6000602082019050620022196000830184620021f1565b92915050565b60006020828403121562002238576200223762001d0d565b5b6000620022488482850162001ebf565b91505092915050565b600082825260208201905092915050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b60006200229a60108362002251565b9150620022a78262002262565b602082019050919050565b60006020820190508181036000830152620022cd816200228b565b9050919050565b6000620022e18262001ac8565b9150620022ee8362001ac8565b9250828202620022fe8162001ac8565b915082820484148315176200231857620023176200201d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200235b8262001ac8565b9150620023688362001ac8565b9250826200237b576200237a6200231f565b5b828204905092915050565b6000620023938262001ac8565b9150620023a08362001ac8565b9250828203905081811115620023bb57620023ba6200201d565b5b92915050565b600081905092915050565b60008190508160005260206000209050919050565b60008154620023f08162001a0b565b620023fc8186620023c1565b945060018216600081146200241a5760018114620024305762002467565b60ff198316865281151582028601935062002467565b6200243b85620023cc565b60005b838110156200245f578154818901526001820191506020810190506200243e565b838801955050505b50505092915050565b60006200247e8284620023e1565b915081905092915050565b6000819050919050565b6200249e8162002489565b82525050565b620024af8162001ac8565b82525050565b600060a082019050620024cc600083018862002493565b620024db602083018762002493565b620024ea604083018662002493565b620024f96060830185620024a4565b62002508608083018462001fef565b9695505050505050565b60006200251f8262001ac8565b91506200252c8362001ac8565b92508282019050808211156200254757620025466200201d565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000620025898262001ac8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620025be57620025bd6200201d565b5b600182019050919050565b6000602082019050620025e06000830184620024a4565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60805160a05160c05160e051614c5d6200269c6000396000610cb501526000610c8101526000818161113301528181611ebe0152818161268e015281816126ba0152818161275f015281816127ca0152818161282a0152818161293001528181612964015281816129ab015281816129d701526130c001526000610c5b0152614c5d6000f3fe608060405234801561001057600080fd5b50600436106102a05760003560e01c80638da5cb5b11610167578063d96ca0b9116100ce578063e985e9c511610087578063e985e9c51461088b578063f10fb584146108bb578063f2fde38b146108d9578063f780bc1a146108f5578063fb495bf514610925578063ffa1ad7414610943576102a0565b8063d96ca0b9146107b9578063dd62ed3e146107e9578063dd63769914610819578063ddca3f4314610835578063dfabc03314610853578063e0df5b6f1461086f576102a0565b8063b3f9ea3411610120578063b3f9ea34146106e7578063b88d4fde14610717578063c5ab3ba614610733578063c6e672b914610751578063c87b56dd1461076d578063d505accf1461079d576102a0565b80638da5cb5b1461061157806395d89b411461062f578063976a84351461064d578063a22cb4651461066b578063a9059cbb14610687578063b1ab9317146106b7576102a0565b806342842e0e1161020b5780636e8f624b116101c45780636e8f624b1461054f57806370a082311461056d578063715018a61461059d5780637ecebe00146105a757806389fb4c66146105d75780638a696e50146105f5576102a0565b806342842e0e146104795780634d966072146104955780634f02c420146104c5578063614d08f8146104e35780636352211e1461050157806365aef6ae14610531576102a0565b806309f0ef651161025d57806309f0ef65146103a157806318160ddd146103d157806323b872dd146103ef578063313ce5671461041f5780633644e5151461043d5780633c93adee1461045b576102a0565b806301ffc9a7146102a557806302519da3146102d557806306fdde0314610305578063081812fc14610323578063095ea7b31461035357806309674eb014610383575b600080fd5b6102bf60048036038101906102ba9190613a35565b610961565b6040516102cc9190613a7d565b60405180910390f35b6102ef60048036038101906102ea9190613af6565b610a33565b6040516102fc9190613b3c565b60405180910390f35b61030d610a7c565b60405161031a9190613be7565b60405180910390f35b61033d60048036038101906103389190613c35565b610b0a565b60405161034a9190613c71565b60405180910390f35b61036d60048036038101906103689190613c8c565b610b3d565b60405161037a9190613a7d565b60405180910390f35b61038b610b78565b6040516103989190613b3c565b60405180910390f35b6103bb60048036038101906103b69190613af6565b610b89565b6040516103c89190613a7d565b60405180910390f35b6103d9610c15565b6040516103e69190613b3c565b60405180910390f35b61040960048036038101906104049190613ccc565b610c1b565b6040516104169190613a7d565b60405180910390f35b610427610c59565b6040516104349190613d3b565b60405180910390f35b610445610c7d565b6040516104529190613d6f565b60405180910390f35b610463610cda565b6040516104709190613de9565b60405180910390f35b610493600480360381019061048e9190613ccc565b610d00565b005b6104af60048036038101906104aa9190613c8c565b610d20565b6040516104bc9190613a7d565b60405180910390f35b6104cd610e77565b6040516104da9190613b3c565b60405180910390f35b6104eb610e7d565b6040516104f89190613be7565b60405180910390f35b61051b60048036038101906105169190613c35565b610eb6565b6040516105289190613c71565b60405180910390f35b610539610f6d565b6040516105469190613be7565b60405180910390f35b610557610ffb565b6040516105649190613b3c565b60405180910390f35b61058760048036038101906105829190613af6565b61101f565b6040516105949190613b3c565b60405180910390f35b6105a5611037565b005b6105c160048036038101906105bc9190613af6565b61104b565b6040516105ce9190613b3c565b60405180910390f35b6105df611063565b6040516105ec9190613b3c565b60405180910390f35b61060f600480360381019061060a9190613e30565b61106d565b005b61061961107a565b6040516106269190613c71565b60405180910390f35b6106376110a3565b6040516106449190613be7565b60405180910390f35b610655611131565b6040516106629190613b3c565b60405180910390f35b61068560048036038101906106809190613e5d565b611155565b005b6106a1600480360381019061069c9190613c8c565b6112b8565b6040516106ae9190613a7d565b60405180910390f35b6106d160048036038101906106cc9190613af6565b611332565b6040516106de9190613f5b565b60405180910390f35b61070160048036038101906106fc9190613af6565b6113c9565b60405161070e9190613b3c565b60405180910390f35b610731600480360381019061072c91906140b2565b611415565b005b61073b61158b565b6040516107489190613b3c565b60405180910390f35b61076b60048036038101906107669190613e5d565b611595565b005b61078760048036038101906107829190613c35565b6115ab565b6040516107949190613be7565b60405180910390f35b6107b760048036038101906107b2919061418d565b611610565b005b6107d360048036038101906107ce9190613ccc565b61199d565b6040516107e09190613a7d565b60405180910390f35b61080360048036038101906107fe919061422f565b611bb4565b6040516108109190613b3c565b60405180910390f35b610833600480360381019061082e9190613ccc565b611bd9565b005b61083d611ef2565b60405161084a9190613b3c565b60405180910390f35b61086d60048036038101906108689190613c8c565b611ef7565b005b61088960048036038101906108849190614310565b6120b0565b005b6108a560048036038101906108a0919061422f565b6120cb565b6040516108b29190613a7d565b60405180910390f35b6108c36120fa565b6040516108d09190613be7565b60405180910390f35b6108f360048036038101906108ee9190613af6565b612133565b005b61090f600480360381019061090a9190614359565b6121b9565b60405161091c9190613f5b565b60405180910390f35b61092d612275565b60405161093a9190613c71565b60405180910390f35b61094b61228d565b6040516109589190613d3b565b60405180910390f35b60007fcaf91ff5000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a2c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60038054610a89906143c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab5906143c8565b8015610b025780601f10610ad757610100808354040283529160200191610b02565b820191906000526020600020905b815481529060010190602001808311610ae557829003601f168201915b505050505081565b60096020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610b4882612292565b15610b5c57610b578383611ef7565b610b6d565b610b668383610d20565b9050610b72565b600190505b92915050565b6000610b8460016122ea565b905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610c0e5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b9050919050565b60055481565b6000610c2682612292565b15610c3b57610c36848484611bd9565b610c4d565b610c4684848461199d565b9050610c52565b600190505b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f00000000000000000000000000000000000000000000000000000000000000004614610cb357610cae612348565b610cd5565b7f00000000000000000000000000000000000000000000000000000000000000005b905090565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d1b83838360405180602001604052806000815250611415565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d87576040517f5461585f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610e659190613b3c565b60405180910390a36001905092915050565b60065481565b6040518060400160405280600681526020017f455243343034000000000000000000000000000000000000000000000000000081525081565b6000610ec1826123d4565b9050610ecc82612292565b610f02576040517f3f6cc76800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f68576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60108054610f7a906143c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa6906143c8565b8015610ff35780601f10610fc857610100808354040283529160200191610ff3565b820191906000526020600020905b815481529060010190602001808311610fd657829003601f168201915b505050505081565b7f800000000000000000000000000000000000000000000000000000000000000081565b60076020528060005260406000206000915090505481565b61103f61240c565b6110496000612493565b565b600e6020528060005260406000206000915090505481565b6000600554905090565b6110773382612557565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600480546110b0906143c8565b80601f01602080910402602001604051908101604052809291908181526020018280546110dc906143c8565b80156111295780601f106110fe57610100808354040283529160200191611129565b820191906000526020600020905b81548152906001019060200180831161110c57829003601f168201915b505050505081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111bb576040517fccea9e6f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516112ac9190613a7d565b60405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361131f576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61132a338484612636565b905092915050565b6060600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156113bd57602002820191906000526020600020905b8154815260200190600101908083116113a9575b50505050509050919050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b61141e82612292565b611454576040517f3f6cc76800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61145f848484610c1b565b5060008373ffffffffffffffffffffffffffffffffffffffff163b1415801561154e575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b81526004016114e9949392919061444e565b6020604051808303816000875af1158015611508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152c91906144af565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b15611585576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6000600654905090565b61159d61240c565b6115a78282612557565b5050565b606060007f8000000000000000000000000000000000000000000000000000000000000000836115db919061450b565b905060106115e882612a36565b6040516020016115f9929190614613565b604051602081830303815290604052915050919050565b4284101561164a576040517f05787bdf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61165385612292565b1561168a576040517f1f3e0de800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036116f0576040517f5461585f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060016116fc610c7d565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a600e60008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b60405160200161178496959493929190614637565b604051602081830303815290604052805190602001206040516020016117ab929190614705565b60405160208183030381529060405280519060200120858585604051600081526020016040526040516117e1949392919061473c565b6020604051602081039080840390855afa158015611803573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061187657508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b156118ad576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258760405161198c9190613b3c565b60405180910390a350505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611a04576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a6a576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611b9f578281611b1e919061450b565b600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611baa858585612636565b9150509392505050565b6008602052816000526040600020602052806000526040600020600091509150505481565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c3f576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ca5576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611cae816123d4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611d12576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611dd55750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e4057506009600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611e77576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e8082610b89565b15611eb7576040517f5ce7539700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ee283837f0000000000000000000000000000000000000000000000000000000000000000612b04565b611eed838383612c64565b505050565b600281565b6000611f02826123d4565b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611fc75750600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ffe576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826009600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6120b861240c565b80601090816120c7919061490e565b5050565b600a6020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6040518060400160405280600581526020017f39616f766600000000000000000000000000000000000000000000000000000081525081565b61213b61240c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121ad5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016121a49190613c71565b60405180910390fd5b6121b681612493565b50565b606060008267ffffffffffffffff8111156121d7576121d6613f87565b5b6040519080825280602002602001820160405280156122055781602001602082028036833780820191505090505b50905060008490505b838561221a91906149e0565b81101561226a57612235816001612fdc90919063ffffffff16565b828683612242919061450b565b8151811061225357612252614a14565b5b60200260200101818152505080600101905061220e565b508091505092915050565b73b46022e173378566d9ae421f2b84bc2dad332e0981565b600081565b60007f8000000000000000000000000000000000000000000000000000000000000000821180156122e357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214155b9050919050565b60008160000160009054906101000a90046fffffffffffffffffffffffffffffffff168260000160109054906101000a90046fffffffffffffffffffffffffffffffff16036fffffffffffffffffffffffffffffffff169050919050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600360405161237a9190614ae6565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646306040516020016123b9959493929190614afd565b60405160208183030381529060405280519060200120905090565b600080600b600084815260200190815260200160002054905073ffffffffffffffffffffffffffffffffffffffff8116915050919050565b612414613083565b73ffffffffffffffffffffffffffffffffffffffff1661243261107a565b73ffffffffffffffffffffffffffffffffffffffff161461249157612455613083565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016124889190613c71565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125bd576040517fa41e3d3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156125d1576125cc8261308b565b6125db565b6125da826130bc565b5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008061264285610a33565b9050600061264f85610a33565b905061265c868686612b04565b600061266787610b89565b9050600061267487610b89565b90508180156126805750805b612a275781156127555760007f0000000000000000000000000000000000000000000000000000000000000000846126b89190614b7f565b7f0000000000000000000000000000000000000000000000000000000000000000600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127239190614b7f565b61272d919061450b565b905060005b8181101561274e5761274389613131565b806001019050612732565b5050612a26565b80156128265760007f0000000000000000000000000000000000000000000000000000000000000000600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127c89190614b7f565b7f0000000000000000000000000000000000000000000000000000000000000000866127f49190614b7f565b6127fe919061450b565b905060005b8181101561281f576128148a6132dd565b806001019050612803565b5050612a25565b60007f0000000000000000000000000000000000000000000000000000000000000000876128549190614b7f565b905060005b8181101561292c5760006001600c60008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506128b2919061450b565b90506000600c60008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061290757612906614a14565b5b9060005260206000200154905061291f8c8c83612c64565b8260010192505050612859565b50807f00000000000000000000000000000000000000000000000000000000000000006129588b610a33565b6129629190614b7f565b7f00000000000000000000000000000000000000000000000000000000000000008761298e9190614b7f565b612998919061450b565b11156129a8576129a7896132dd565b5b807f0000000000000000000000000000000000000000000000000000000000000000856129d59190614b7f565b7f00000000000000000000000000000000000000000000000000000000000000006129ff8b610a33565b612a099190614b7f565b612a13919061450b565b1115612a2357612a2288613131565b5b505b5b5b60019450505050509392505050565b606060006001612a4584613415565b01905060008167ffffffffffffffff811115612a6457612a63613f87565b5b6040519080825280601f01601f191660200182016040528015612a965781602001600182028036833780820191505090505b509050600082602001820190505b600115612af9578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581612aed57612aec614b50565b5b04945060008503612aa4575b819350505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b56578060056000828254612b4a91906149e0565b92505081905550612bad565b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ba5919061450b565b925050819055505b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c579190613b3c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612e63576009600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050612d5e919061450b565b81548110612d6f57612d6e614a14565b5b90600052602060002001549050818114612dfc576000612d8e83613568565b905081600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110612de257612de1614a14565b5b9060005260206000200181905550612dfa828261358d565b505b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480612e4b57612e4a614bb0565b5b60019003818190600052602060002001600090559055505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612f6457612ea18183613660565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819080600181540180825580915050600190039060005260206000200160009091909190915055612f5f816001600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050612f5a919061450b565b61358d565b612f7c565b600b6000828152602001908152602001600020600090555b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000612fe7836122ea565b821061301f576040517f580821e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001016000838560000160009054906101000a90046fffffffffffffffffffffffffffffffff16016fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b6000613096826113c9565b905060005b818110156130b7576130ac836132dd565b80600101905061309b565b505050565b60007f00000000000000000000000000000000000000000000000000000000000000006130e883610a33565b6130f29190614b7f565b905060006130ff836113c9565b905060005b8183613110919061450b565b81101561312b5761312084613131565b806001019050613104565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613197576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006131a360016136d2565b6131b8576131b16001613742565b905061325a565b6006600081546131c790614bdf565b919050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60065403613229576040517f303b682f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006547f800000000000000000000000000000000000000000000000000000000000000061325791906149e0565b90505b6000613265826123d4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146132cd576040517f23369fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6132d8818484612c64565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613343576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506133d3919061450b565b815481106133e4576133e3614a14565b5b906000526020600020015490506133fd82600083612c64565b6134118160016138a690919063ffffffff16565b5050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613473577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161346957613468614b50565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106134b0576d04ee2d6d415b85acef810000000083816134a6576134a5614b50565b5b0492506020810190505b662386f26fc1000083106134df57662386f26fc1000083816134d5576134d4614b50565b5b0492506010810190505b6305f5e1008310613508576305f5e10083816134fe576134fd614b50565b5b0492506008810190505b612710831061352d57612710838161352357613522614b50565b5b0492506004810190505b60648310613550576064838161354657613545614b50565b5b0492506002810190505b600a831061355f576001810190505b80915050919050565b600080600b60008481526020019081526020016000205490508060a01c915050919050565b6000600b600084815260200190815260200160002054905060a07fffffffffffffffffffffffff0000000000000000000000000000000000000000901c821115613603576040517ffcb3438c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffff00000000000000000000000000000000000000008260a01b1673ffffffffffffffffffffffffffffffffffffffff821617905080600b600085815260200190815260200160002081905550505050565b6000600b600084815260200190815260200160002054905073ffffffffffffffffffffffffffffffffffffffff82167fffffffffffffffffffffffff0000000000000000000000000000000000000000821617905080600b600085815260200190815260200160002081905550505050565b60008160000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168260000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16149050919050565b6000808260000160109054906101000a90046fffffffffffffffffffffffffffffffff1690508260000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff16036137e5576040517f75e52f4f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600190039050826001016000826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001908152602001600020549150826001016000826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200190815260200160002060009055808360000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050919050565b600060018360000160009054906101000a90046fffffffffffffffffffffffffffffffff160390508260000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff160361394b576040517f8acb5f2700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81836001016000836fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808360000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613a12816139dd565b8114613a1d57600080fd5b50565b600081359050613a2f81613a09565b92915050565b600060208284031215613a4b57613a4a6139d3565b5b6000613a5984828501613a20565b91505092915050565b60008115159050919050565b613a7781613a62565b82525050565b6000602082019050613a926000830184613a6e565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ac382613a98565b9050919050565b613ad381613ab8565b8114613ade57600080fd5b50565b600081359050613af081613aca565b92915050565b600060208284031215613b0c57613b0b6139d3565b5b6000613b1a84828501613ae1565b91505092915050565b6000819050919050565b613b3681613b23565b82525050565b6000602082019050613b516000830184613b2d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b91578082015181840152602081019050613b76565b60008484015250505050565b6000601f19601f8301169050919050565b6000613bb982613b57565b613bc38185613b62565b9350613bd3818560208601613b73565b613bdc81613b9d565b840191505092915050565b60006020820190508181036000830152613c018184613bae565b905092915050565b613c1281613b23565b8114613c1d57600080fd5b50565b600081359050613c2f81613c09565b92915050565b600060208284031215613c4b57613c4a6139d3565b5b6000613c5984828501613c20565b91505092915050565b613c6b81613ab8565b82525050565b6000602082019050613c866000830184613c62565b92915050565b60008060408385031215613ca357613ca26139d3565b5b6000613cb185828601613ae1565b9250506020613cc285828601613c20565b9150509250929050565b600080600060608486031215613ce557613ce46139d3565b5b6000613cf386828701613ae1565b9350506020613d0486828701613ae1565b9250506040613d1586828701613c20565b9150509250925092565b600060ff82169050919050565b613d3581613d1f565b82525050565b6000602082019050613d506000830184613d2c565b92915050565b6000819050919050565b613d6981613d56565b82525050565b6000602082019050613d846000830184613d60565b92915050565b6000819050919050565b6000613daf613daa613da584613a98565b613d8a565b613a98565b9050919050565b6000613dc182613d94565b9050919050565b6000613dd382613db6565b9050919050565b613de381613dc8565b82525050565b6000602082019050613dfe6000830184613dda565b92915050565b613e0d81613a62565b8114613e1857600080fd5b50565b600081359050613e2a81613e04565b92915050565b600060208284031215613e4657613e456139d3565b5b6000613e5484828501613e1b565b91505092915050565b60008060408385031215613e7457613e736139d3565b5b6000613e8285828601613ae1565b9250506020613e9385828601613e1b565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ed281613b23565b82525050565b6000613ee48383613ec9565b60208301905092915050565b6000602082019050919050565b6000613f0882613e9d565b613f128185613ea8565b9350613f1d83613eb9565b8060005b83811015613f4e578151613f358882613ed8565b9750613f4083613ef0565b925050600181019050613f21565b5085935050505092915050565b60006020820190508181036000830152613f758184613efd565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613fbf82613b9d565b810181811067ffffffffffffffff82111715613fde57613fdd613f87565b5b80604052505050565b6000613ff16139c9565b9050613ffd8282613fb6565b919050565b600067ffffffffffffffff82111561401d5761401c613f87565b5b61402682613b9d565b9050602081019050919050565b82818337600083830152505050565b600061405561405084614002565b613fe7565b90508281526020810184848401111561407157614070613f82565b5b61407c848285614033565b509392505050565b600082601f83011261409957614098613f7d565b5b81356140a9848260208601614042565b91505092915050565b600080600080608085870312156140cc576140cb6139d3565b5b60006140da87828801613ae1565b94505060206140eb87828801613ae1565b93505060406140fc87828801613c20565b925050606085013567ffffffffffffffff81111561411d5761411c6139d8565b5b61412987828801614084565b91505092959194509250565b61413e81613d1f565b811461414957600080fd5b50565b60008135905061415b81614135565b92915050565b61416a81613d56565b811461417557600080fd5b50565b60008135905061418781614161565b92915050565b600080600080600080600060e0888a0312156141ac576141ab6139d3565b5b60006141ba8a828b01613ae1565b97505060206141cb8a828b01613ae1565b96505060406141dc8a828b01613c20565b95505060606141ed8a828b01613c20565b94505060806141fe8a828b0161414c565b93505060a061420f8a828b01614178565b92505060c06142208a828b01614178565b91505092959891949750929550565b60008060408385031215614246576142456139d3565b5b600061425485828601613ae1565b925050602061426585828601613ae1565b9150509250929050565b600067ffffffffffffffff82111561428a57614289613f87565b5b61429382613b9d565b9050602081019050919050565b60006142b36142ae8461426f565b613fe7565b9050828152602081018484840111156142cf576142ce613f82565b5b6142da848285614033565b509392505050565b600082601f8301126142f7576142f6613f7d565b5b81356143078482602086016142a0565b91505092915050565b600060208284031215614326576143256139d3565b5b600082013567ffffffffffffffff811115614344576143436139d8565b5b614350848285016142e2565b91505092915050565b600080604083850312156143705761436f6139d3565b5b600061437e85828601613c20565b925050602061438f85828601613c20565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806143e057607f821691505b6020821081036143f3576143f2614399565b5b50919050565b600081519050919050565b600082825260208201905092915050565b6000614420826143f9565b61442a8185614404565b935061443a818560208601613b73565b61444381613b9d565b840191505092915050565b60006080820190506144636000830187613c62565b6144706020830186613c62565b61447d6040830185613b2d565b818103606083015261448f8184614415565b905095945050505050565b6000815190506144a981613a09565b92915050565b6000602082840312156144c5576144c46139d3565b5b60006144d38482850161449a565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061451682613b23565b915061452183613b23565b9250828203905081811115614539576145386144dc565b5b92915050565b600081905092915050565b60008190508160005260206000209050919050565b6000815461456c816143c8565b614576818661453f565b9450600182166000811461459157600181146145a6576145d9565b60ff19831686528115158202860193506145d9565b6145af8561454a565b60005b838110156145d1578154818901526001820191506020810190506145b2565b838801955050505b50505092915050565b60006145ed82613b57565b6145f7818561453f565b9350614607818560208601613b73565b80840191505092915050565b600061461f828561455f565b915061462b82846145e2565b91508190509392505050565b600060c08201905061464c6000830189613d60565b6146596020830188613c62565b6146666040830187613c62565b6146736060830186613b2d565b6146806080830185613b2d565b61468d60a0830184613b2d565b979650505050505050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b60006146ce60028361453f565b91506146d982614698565b600282019050919050565b6000819050919050565b6146ff6146fa82613d56565b6146e4565b82525050565b6000614710826146c1565b915061471c82856146ee565b60208201915061472c82846146ee565b6020820191508190509392505050565b60006080820190506147516000830187613d60565b61475e6020830186613d2c565b61476b6040830185613d60565b6147786060830184613d60565b95945050505050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026147ce7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614791565b6147d88683614791565b95508019841693508086168417925050509392505050565b600061480b61480661480184613b23565b613d8a565b613b23565b9050919050565b6000819050919050565b614825836147f0565b61483961483182614812565b84845461479e565b825550505050565b600090565b61484e614841565b61485981848461481c565b505050565b5b8181101561487d57614872600082614846565b60018101905061485f565b5050565b601f8211156148c2576148938161454a565b61489c84614781565b810160208510156148ab578190505b6148bf6148b785614781565b83018261485e565b50505b505050565b600082821c905092915050565b60006148e5600019846008026148c7565b1980831691505092915050565b60006148fe83836148d4565b9150826002028217905092915050565b61491782613b57565b67ffffffffffffffff8111156149305761492f613f87565b5b61493a82546143c8565b614945828285614881565b600060209050601f8311600181146149785760008415614966578287015190505b61497085826148f2565b8655506149d8565b601f1984166149868661454a565b60005b828110156149ae57848901518255600182019150602085019450602081019050614989565b868310156149cb57848901516149c7601f8916826148d4565b8355505b6001600288020188555050505b505050505050565b60006149eb82613b23565b91506149f683613b23565b9250828201905080821115614a0e57614a0d6144dc565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081905092915050565b60008190508160005260206000209050919050565b60008154614a70816143c8565b614a7a8186614a43565b94506001821660008114614a955760018114614aaa57614add565b60ff1983168652811515820286019350614add565b614ab385614a4e565b60005b83811015614ad557815481890152600182019150602081019050614ab6565b838801955050505b50505092915050565b6000614af28284614a63565b915081905092915050565b600060a082019050614b126000830188613d60565b614b1f6020830187613d60565b614b2c6040830186613d60565b614b396060830185613b2d565b614b466080830184613c62565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614b8a82613b23565b9150614b9583613b23565b925082614ba557614ba4614b50565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000614bea82613b23565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614c1c57614c1b6144dc565b5b60018201905091905056fea26469706673582212208e8851ad584cd800b5391ecf940e45af618bdb04397c1f51b88637da6980b64c64736f6c6343000814003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000c4578616d706c65546f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4578616d706c65546f6b656e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d64656738795170504b5834774e4c564b4c726279474c6d72656e55526d595854797474564e346f61626e64742f00000000000000000000