60806040523480156200001157600080fd5b506040516200206f3803806200206f833981810160405281019062000037919062000578565b806040518060400160405280600781526020017f5472756d703437000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f5472756d703437000000000000000000000000000000000000000000000000008152508160039081620000b5919062000824565b508060049081620000c7919062000824565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200013f5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200013691906200091c565b60405180910390fd5b62000150816200018b60201b60201c565b5062000184816006600a62000166919062000ac9565b640af16b160062000178919062000b1a565b6200025160201b60201c565b5062000c0b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002c65760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620002bd91906200091c565b60405180910390fd5b620002da60008383620002de60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200033457806002600082825462000327919062000b65565b925050819055506200040a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015620003c3578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620003ba9392919062000bb1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004555780600260008282540392505081905550620004a2565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000501919062000bee565b60405180910390a3505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620005408262000513565b9050919050565b620005528162000533565b81146200055e57600080fd5b50565b600081519050620005728162000547565b92915050565b6000602082840312156200059157620005906200050e565b5b6000620005a18482850162000561565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200062c57607f821691505b602082108103620006425762000641620005e4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006ac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200066d565b620006b886836200066d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000705620006ff620006f984620006d0565b620006da565b620006d0565b9050919050565b6000819050919050565b6200072183620006e4565b6200073962000730826200070c565b8484546200067a565b825550505050565b600090565b6200075062000741565b6200075d81848462000716565b505050565b5b8181101562000785576200077960008262000746565b60018101905062000763565b5050565b601f821115620007d4576200079e8162000648565b620007a9846200065d565b81016020851015620007b9578190505b620007d1620007c8856200065d565b83018262000762565b50505b505050565b600082821c905092915050565b6000620007f960001984600802620007d9565b1980831691505092915050565b6000620008148383620007e6565b9150826002028217905092915050565b6200082f82620005aa565b67ffffffffffffffff8111156200084b576200084a620005b5565b5b62000857825462000613565b6200086482828562000789565b600060209050601f8311600181146200089c576000841562000887578287015190505b62000893858262000806565b86555062000903565b601f198416620008ac8662000648565b60005b82811015620008d657848901518255600182019150602085019450602081019050620008af565b86831015620008f65784890151620008f2601f891682620007e6565b8355505b6001600288020188555050505b505050505050565b620009168162000533565b82525050565b60006020820190506200093360008301846200090b565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009c7578086048111156200099f576200099e62000939565b5b6001851615620009af5780820291505b8081029050620009bf8562000968565b94506200097f565b94509492505050565b600082620009e2576001905062000ab5565b81620009f2576000905062000ab5565b816001811462000a0b576002811462000a165762000a4c565b600191505062000ab5565b60ff84111562000a2b5762000a2a62000939565b5b8360020a91508482111562000a455762000a4462000939565b5b5062000ab5565b5060208310610133831016604e8410600b841016171562000a865782820a90508381111562000a805762000a7f62000939565b5b62000ab5565b62000a95848484600162000975565b9250905081840481111562000aaf5762000aae62000939565b5b81810290505b9392505050565b600060ff82169050919050565b600062000ad682620006d0565b915062000ae38362000abc565b925062000b127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009d0565b905092915050565b600062000b2782620006d0565b915062000b3483620006d0565b925082820262000b4481620006d0565b9150828204841483151762000b5e5762000b5d62000939565b5b5092915050565b600062000b7282620006d0565b915062000b7f83620006d0565b925082820190508082111562000b9a5762000b9962000939565b5b92915050565b62000bab81620006d0565b82525050565b600060608201905062000bc860008301866200090b565b62000bd7602083018562000ba0565b62000be6604083018462000ba0565b949350505050565b600060208201905062000c05600083018462000ba0565b92915050565b6114548062000c1b6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a082311161009757806395d89b411161006657806395d89b411461028b578063a9059cbb146102a9578063dd62ed3e146102d9578063f2fde38b1461030957610100565b806370a0823114610217578063715018a61461024757806379cc6790146102515780638da5cb5b1461026d57610100565b80632e0f2625116100d35780632e0f2625146101a1578063313ce567146101bf57806332cb6b0c146101dd57806342966c68146101fb57610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d610325565b60405161011a9190610ebb565b60405180910390f35b61013d60048036038101906101389190610f76565b6103b7565b60405161014a9190610fd1565b60405180910390f35b61015b6103da565b6040516101689190610ffb565b60405180910390f35b61018b60048036038101906101869190611016565b6103e4565b6040516101989190610fd1565b60405180910390f35b6101a9610413565b6040516101b69190611085565b60405180910390f35b6101c7610418565b6040516101d49190611085565b60405180910390f35b6101e5610421565b6040516101f29190610ffb565b60405180910390f35b610215600480360381019061021091906110a0565b610442565b005b610231600480360381019061022c91906110cd565b610456565b60405161023e9190610ffb565b60405180910390f35b61024f61049e565b005b61026b60048036038101906102669190610f76565b6104b2565b005b6102756104d2565b6040516102829190611109565b60405180910390f35b6102936104fc565b6040516102a09190610ebb565b60405180910390f35b6102c360048036038101906102be9190610f76565b61058e565b6040516102d09190610fd1565b60405180910390f35b6102f360048036038101906102ee9190611124565b6105b1565b6040516103009190610ffb565b60405180910390f35b610323600480360381019061031e91906110cd565b610638565b005b60606003805461033490611193565b80601f016020809104026020016040519081016040528092919081815260200182805461036090611193565b80156103ad5780601f10610382576101008083540402835291602001916103ad565b820191906000526020600020905b81548152906001019060200180831161039057829003601f168201915b5050505050905090565b6000806103c26106be565b90506103cf8185856106c6565b600191505092915050565b6000600254905090565b6000806103ef6106be565b90506103fc8582856106d8565b61040785858561076c565b60019150509392505050565b600681565b60006006905090565b6006600a61042f9190611326565b640af16b160061043f9190611371565b81565b61045361044d6106be565b82610860565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6104a66108e2565b6104b06000610969565b565b6104c4826104be6106be565b836106d8565b6104ce8282610860565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461050b90611193565b80601f016020809104026020016040519081016040528092919081815260200182805461053790611193565b80156105845780601f1061055957610100808354040283529160200191610584565b820191906000526020600020905b81548152906001019060200180831161056757829003601f168201915b5050505050905090565b6000806105996106be565b90506105a681858561076c565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6106406108e2565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106b25760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016106a99190611109565b60405180910390fd5b6106bb81610969565b50565b600033905090565b6106d38383836001610a2f565b505050565b60006106e484846105b1565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107665781811015610756578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161074d939291906113b3565b60405180910390fd5b61076584848484036000610a2f565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107de5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016107d59190611109565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108505760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016108479190611109565b60405180910390fd5b61085b838383610c06565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108d25760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016108c99190611109565b60405180910390fd5b6108de82600083610c06565b5050565b6108ea6106be565b73ffffffffffffffffffffffffffffffffffffffff166109086104d2565b73ffffffffffffffffffffffffffffffffffffffff16146109675761092b6106be565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161095e9190611109565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610aa15760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610a989190611109565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b135760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610b0a9190611109565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015610c00578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610bf79190610ffb565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c58578060026000828254610c4c91906113ea565b92505081905550610d2b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610ce4578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610cdb939291906113b3565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d745780600260008282540392505081905550610dc1565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e1e9190610ffb565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610e65578082015181840152602081019050610e4a565b60008484015250505050565b6000601f19601f8301169050919050565b6000610e8d82610e2b565b610e978185610e36565b9350610ea7818560208601610e47565b610eb081610e71565b840191505092915050565b60006020820190508181036000830152610ed58184610e82565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f0d82610ee2565b9050919050565b610f1d81610f02565b8114610f2857600080fd5b50565b600081359050610f3a81610f14565b92915050565b6000819050919050565b610f5381610f40565b8114610f5e57600080fd5b50565b600081359050610f7081610f4a565b92915050565b60008060408385031215610f8d57610f8c610edd565b5b6000610f9b85828601610f2b565b9250506020610fac85828601610f61565b9150509250929050565b60008115159050919050565b610fcb81610fb6565b82525050565b6000602082019050610fe66000830184610fc2565b92915050565b610ff581610f40565b82525050565b60006020820190506110106000830184610fec565b92915050565b60008060006060848603121561102f5761102e610edd565b5b600061103d86828701610f2b565b935050602061104e86828701610f2b565b925050604061105f86828701610f61565b9150509250925092565b600060ff82169050919050565b61107f81611069565b82525050565b600060208201905061109a6000830184611076565b92915050565b6000602082840312156110b6576110b5610edd565b5b60006110c484828501610f61565b91505092915050565b6000602082840312156110e3576110e2610edd565b5b60006110f184828501610f2b565b91505092915050565b61110381610f02565b82525050565b600060208201905061111e60008301846110fa565b92915050565b6000806040838503121561113b5761113a610edd565b5b600061114985828601610f2b565b925050602061115a85828601610f2b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806111ab57607f821691505b6020821081036111be576111bd611164565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561124a57808604811115611226576112256111c4565b5b60018516156112355780820291505b8081029050611243856111f3565b945061120a565b94509492505050565b600082611263576001905061131f565b81611271576000905061131f565b81600181146112875760028114611291576112c0565b600191505061131f565b60ff8411156112a3576112a26111c4565b5b8360020a9150848211156112ba576112b96111c4565b5b5061131f565b5060208310610133831016604e8410600b84101617156112f55782820a9050838111156112f0576112ef6111c4565b5b61131f565b6113028484846001611200565b92509050818404811115611319576113186111c4565b5b81810290505b9392505050565b600061133182610f40565b915061133c83611069565b92506113697fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611253565b905092915050565b600061137c82610f40565b915061138783610f40565b925082820261139581610f40565b915082820484148315176113ac576113ab6111c4565b5b5092915050565b60006060820190506113c860008301866110fa565b6113d56020830185610fec565b6113e26040830184610fec565b949350505050565b60006113f582610f40565b915061140083610f40565b9250828201905080821115611418576114176111c4565b5b9291505056fea2646970667358221220a2b2fe070fcbacc3f5502e4a48c5da9cbc9f29090021ea0a4ff799ee9a578f5264736f6c63430008140033000000000000000000000000987f7bca81fea7090d600214e4badae9208dd2ac