60806040526040518060400160405280600a81526020017f436c656d656e74696e6500000000000000000000000000000000000000000000815250600290816100489190610671565b506040518060400160405280600481526020017f434c4d4e000000000000000000000000000000000000000000000000000000008152506003908161008d9190610671565b50601260045f6101000a81548160ff021916908360ff16021790555060045f9054906101000a900460ff1660ff16600a6100c7919061089c565b63b2d05e006100d691906108e6565b60125560045f9054906101000a900460ff1660ff16600a6100f7919061089c565b631ad2748061010691906108e6565b60135560045f9054906101000a900460ff1660ff16600a610127919061089c565b6308f0d18061013691906108e6565b60145560045f9054906101000a900460ff1660ff16600a610157919061089c565b6311e1a30061016691906108e6565b60155560045f9054906101000a900460ff1660ff16600a610187919061089c565b6311e1a30061019691906108e6565b60165560045f9054906101000a900460ff1660ff16600a6101b7919061089c565b6323c346006101c691906108e6565b60175560045f9054906101000a900460ff1660ff16600a6101e7919061089c565b632756cd006101f691906108e6565b60185560045f9054906101000a900460ff1660ff16600a610217919061089c565b63202fbf0061022691906108e6565b601955348015610234575f80fd5b50335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102a6575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161029d9190610966565b60405180910390fd5b6102b58161037660201b60201c565b506001808190555060125460058190555060055460065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600554604051610369919061098e565b60405180910390a36109a7565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806104b257607f821691505b6020821081036104c5576104c461046e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026105277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826104ec565b61053186836104ec565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61057561057061056b84610549565b610552565b610549565b9050919050565b5f819050919050565b61058e8361055b565b6105a261059a8261057c565b8484546104f8565b825550505050565b5f90565b6105b66105aa565b6105c1818484610585565b505050565b5b818110156105e4576105d95f826105ae565b6001810190506105c7565b5050565b601f821115610629576105fa816104cb565b610603846104dd565b81016020851015610612578190505b61062661061e856104dd565b8301826105c6565b50505b505050565b5f82821c905092915050565b5f6106495f198460080261062e565b1980831691505092915050565b5f610661838361063a565b9150826002028217905092915050565b61067a82610437565b67ffffffffffffffff81111561069357610692610441565b5b61069d825461049b565b6106a88282856105e8565b5f60209050601f8311600181146106d9575f84156106c7578287015190505b6106d18582610656565b865550610738565b601f1984166106e7866104cb565b5f5b8281101561070e578489015182556001820191506020850194506020810190506106e9565b8683101561072b5784890151610727601f89168261063a565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156107c25780860481111561079e5761079d610740565b5b60018516156107ad5780820291505b80810290506107bb8561076d565b9450610782565b94509492505050565b5f826107da5760019050610895565b816107e7575f9050610895565b81600181146107fd576002811461080757610836565b6001915050610895565b60ff84111561081957610818610740565b5b8360020a9150848211156108305761082f610740565b5b50610895565b5060208310610133831016604e8410600b841016171561086b5782820a90508381111561086657610865610740565b5b610895565b6108788484846001610779565b9250905081840481111561088f5761088e610740565b5b81810290505b9392505050565b5f6108a682610549565b91506108b183610549565b92506108de7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846107cb565b905092915050565b5f6108f082610549565b91506108fb83610549565b925082820261090981610549565b915082820484148315176109205761091f610740565b5b5092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61095082610927565b9050919050565b61096081610946565b82525050565b5f6020820190506109795f830184610957565b92915050565b61098881610549565b82525050565b5f6020820190506109a15f83018461097f565b92915050565b613047806109b45f395ff3fe608060405234801561000f575f80fd5b5060043610610251575f3560e01c80638da5cb5b11610144578063c9df3645116100c1578063e74f3fbb11610085578063e74f3fbb146106db578063f2fde38b146106e5578063f45859a214610701578063f97f29241461071f578063fb9f0a561461073d578063fd99cbed1461075957610251565b8063c9df364514610639578063caea117b14610655578063ce423ed414610671578063dd62ed3e1461068f578063e0a668b4146106bf57610251565b80639bc289f1116101085780639bc289f11461056f5780639c89a7661461059f578063a9059cbb146105bb578063b014e98f146105eb578063b13e4a9d1461060957610251565b80638da5cb5b146104d95780638e80bd39146104f7578063902d55a51461051557806390534f241461053357806395d89b411461055157610251565b8063329430ca116101d25780636a265517116101965780636a2655171461044757806370a0823114610465578063715018a614610495578063771d9d051461049f5780637f308bc5146104bd57610251565b8063329430ca146103a1578063384711cc146103bf578063414650ef146103ef5780634fab98af1461040d578063642beacf1461042957610251565b8063215a1ec911610219578063215a1ec9146102fd57806323b872dd1461031b578063271d0f581461034b5780632e0a361714610367578063313ce5671461038357610251565b806306fdde0314610255578063095ea7b3146102735780630a5ae446146102a357806318160ddd146102c15780631f6722b6146102df575b5f80fd5b61025d610777565b60405161026a91906124b7565b60405180910390f35b61028d60048036038101906102889190612568565b610803565b60405161029a91906125c0565b60405180910390f35b6102ab61095e565b6040516102b891906125e8565b60405180910390f35b6102c9610964565b6040516102d691906125e8565b60405180910390f35b6102e761096a565b6040516102f491906125e8565b60405180910390f35b610305610970565b60405161031291906125e8565b60405180910390f35b61033560048036038101906103309190612601565b610976565b60405161034291906125c0565b60405180910390f35b61036560048036038101906103609190612651565b610d4b565b005b610381600480360381019061037c9190612651565b610ec8565b005b61038b611045565b6040516103989190612697565b60405180910390f35b6103a9611057565b6040516103b691906125e8565b60405180910390f35b6103d960048036038101906103d49190612651565b61105d565b6040516103e691906125e8565b60405180910390f35b6103f7611072565b60405161040491906125e8565b60405180910390f35b61042760048036038101906104229190612651565b611078565b005b6104316111f5565b60405161043e91906125e8565b60405180910390f35b61044f6111fb565b60405161045c91906125e8565b60405180910390f35b61047f600480360381019061047a9190612651565b611201565b60405161048c91906125e8565b60405180910390f35b61049d611216565b005b6104a7611229565b6040516104b491906125e8565b60405180910390f35b6104d760048036038101906104d29190612651565b61122f565b005b6104e16113ac565b6040516104ee91906126bf565b60405180910390f35b6104ff6113d3565b60405161050c91906125e8565b60405180910390f35b61051d6113d9565b60405161052a91906125e8565b60405180910390f35b61053b6113df565b60405161054891906125e8565b60405180910390f35b6105596113e5565b60405161056691906124b7565b60405180910390f35b61058960048036038101906105849190612651565b611471565b60405161059691906125e8565b60405180910390f35b6105b960048036038101906105b49190612651565b611486565b005b6105d560048036038101906105d09190612568565b611603565b6040516105e291906125c0565b60405180910390f35b6105f3611883565b60405161060091906125e8565b60405180910390f35b610623600480360381019061061e9190612651565b611889565b60405161063091906125e8565b60405180910390f35b610653600480360381019061064e9190612651565b61189e565b005b61066f600480360381019061066a9190612651565b611a1b565b005b610679611b98565b60405161068691906125e8565b60405180910390f35b6106a960048036038101906106a491906126d8565b611b9e565b6040516106b691906125e8565b60405180910390f35b6106d960048036038101906106d49190612716565b611bbe565b005b6106e3611d41565b005b6106ff60048036038101906106fa9190612651565b611f29565b005b610709611fad565b60405161071691906125e8565b60405180910390f35b610727611fb3565b60405161073491906125e8565b60405180910390f35b61075760048036038101906107529190612766565b611fb9565b005b6107616120fa565b60405161076e91906125e8565b60405180910390f35b60028054610784906127be565b80601f01602080910402602001604051908101604052809291908181526020018280546107b0906127be565b80156107fb5780601f106107d2576101008083540402835291602001916107fb565b820191905f5260205f20905b8154815290600101906020018083116107de57829003601f168201915b505050505081565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086990612838565b60405180910390fd5b8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161094c91906125e8565b60405180910390a36001905092915050565b60115481565b60055481565b600d5481565b600f5481565b5f8160065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156109f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ee906128a0565b60405180910390fd5b8160075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa990612908565b60405180910390fd5b610b028260065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461210090919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610b938260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211590919063ffffffff16565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610c5f8260075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461210090919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d3891906125e8565b60405180910390a3600190509392505050565b610d5361212a565b601654600e5410610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9090612996565b60405180910390fd5b5f610db1600e5460165461210090919063ffffffff16565b9050610dc881600e5461211590919063ffffffff16565b600e81905550610e1e8160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211590919063ffffffff16565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ebc91906125e8565b60405180910390a35050565b610ed061212a565b601754600f5410610f16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0d906129fe565b60405180910390fd5b5f610f2e600f5460175461210090919063ffffffff16565b9050610f4581600f5461211590919063ffffffff16565b600f81905550610f9b8160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211590919063ffffffff16565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161103991906125e8565b60405180910390a35050565b60045f9054906101000a900460ff1681565b600c5481565b6009602052805f5260405f205f915090505481565b600e5481565b61108061212a565b601554600d54106110c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bd90612a66565b60405180910390fd5b5f6110de600d5460155461210090919063ffffffff16565b90506110f581600d5461211590919063ffffffff16565b600d8190555061114b8160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211590919063ffffffff16565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111e991906125e8565b60405180910390a35050565b60165481565b60185481565b6006602052805f5260405f205f915090505481565b61121e61212a565b6112275f6121b1565b565b600b5481565b61123761212a565b6018546010541061127d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127490612ace565b60405180910390fd5b5f61129560105460185461210090919063ffffffff16565b90506112ac8160105461211590919063ffffffff16565b6010819055506113028160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211590919063ffffffff16565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113a091906125e8565b60405180910390a35050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b60125481565b60135481565b600380546113f2906127be565b80601f016020809104026020016040519081016040528092919081815260200182805461141e906127be565b80156114695780601f1061144057610100808354040283529160200191611469565b820191905f5260205f20905b81548152906001019060200180831161144c57829003601f168201915b505050505081565b6008602052805f5260405f205f915090505481565b61148e61212a565b601954601154106114d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cb90612b5c565b60405180910390fd5b5f6114ec60115460195461210090919063ffffffff16565b90506115038160115461211590919063ffffffff16565b6011819055506115598160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211590919063ffffffff16565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115f791906125e8565b60405180910390a35050565b5f8160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167b906128a0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e990612bc4565b60405180910390fd5b6117428260065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461210090919063ffffffff16565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506117d38260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211590919063ffffffff16565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161187191906125e8565b60405180910390a36001905092915050565b60175481565b600a602052805f5260405f205f915090505481565b6118a661212a565b601454600c54106118ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e390612c2c565b60405180910390fd5b5f611904600c5460145461210090919063ffffffff16565b905061191b81600c5461211590919063ffffffff16565b600c819055506119718160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211590919063ffffffff16565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a0f91906125e8565b60405180910390a35050565b611a2361212a565b601354600b5410611a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6090612c94565b60405180910390fd5b5f611a81600b5460135461210090919063ffffffff16565b9050611a9881600b5461211590919063ffffffff16565b600b81905550611aee8160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211590919063ffffffff16565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b8c91906125e8565b60405180910390a35050565b60105481565b6007602052815f5260405f20602052805f5260405f205f91509150505481565b611bc661212a565b5f8211611c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bff90612cfc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6d90612d64565b60405180910390fd5b81600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b611d49612272565b5f611d53336122c1565b90505f8111611d97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8e90612dcc565b60405180910390fd5b611de78160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211590919063ffffffff16565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611e788160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211590919063ffffffff16565b60095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f1691906125e8565b60405180910390a350611f2761240d565b565b611f3161212a565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611fa1575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611f9891906126bf565b60405180910390fd5b611faa816121b1565b50565b601a5481565b60195481565b611fc161212a565b5f8111612003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffa90612cfc565b60405180910390fd5b61201a601a5460185461210090919063ffffffff16565b81111561205c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205390612e5a565b60405180910390fd5b61207181601a5461211590919063ffffffff16565b601a8190555061208c8160055461210090919063ffffffff16565b6005819055505f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120ef91906125e8565b60405180910390a350565b60145481565b5f818361210d9190612ea5565b905092915050565b5f81836121229190612ed8565b905092915050565b612132612416565b73ffffffffffffffffffffffffffffffffffffffff166121506113ac565b73ffffffffffffffffffffffffffffffffffffffff16146121af57612173612416565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016121a691906126bf565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6002600154036122b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ae90612f55565b60405180910390fd5b6002600181905550565b5f80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20544210612403575f61239860085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20544261210090919063ffffffff16565b90505f6301e1338090505f6123c96123ba601e8461241d90919063ffffffff16565b8561241d90919063ffffffff16565b90505f6123e262278d008561241d90919063ffffffff16565b90506123f7828261243290919063ffffffff16565b95505050505050612408565b5f9150505b919050565b60018081905550565b5f33905090565b5f818361242a9190612fa0565b905092915050565b5f818361243f9190612fd0565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61248982612447565b6124938185612451565b93506124a3818560208601612461565b6124ac8161246f565b840191505092915050565b5f6020820190508181035f8301526124cf818461247f565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612504826124db565b9050919050565b612514816124fa565b811461251e575f80fd5b50565b5f8135905061252f8161250b565b92915050565b5f819050919050565b61254781612535565b8114612551575f80fd5b50565b5f813590506125628161253e565b92915050565b5f806040838503121561257e5761257d6124d7565b5b5f61258b85828601612521565b925050602061259c85828601612554565b9150509250929050565b5f8115159050919050565b6125ba816125a6565b82525050565b5f6020820190506125d35f8301846125b1565b92915050565b6125e281612535565b82525050565b5f6020820190506125fb5f8301846125d9565b92915050565b5f805f60608486031215612618576126176124d7565b5b5f61262586828701612521565b935050602061263686828701612521565b925050604061264786828701612554565b9150509250925092565b5f60208284031215612666576126656124d7565b5b5f61267384828501612521565b91505092915050565b5f60ff82169050919050565b6126918161267c565b82525050565b5f6020820190506126aa5f830184612688565b92915050565b6126b9816124fa565b82525050565b5f6020820190506126d25f8301846126b0565b92915050565b5f80604083850312156126ee576126ed6124d7565b5b5f6126fb85828601612521565b925050602061270c85828601612521565b9150509250929050565b5f805f6060848603121561272d5761272c6124d7565b5b5f61273a86828701612521565b935050602061274b86828701612554565b925050604061275c86828701612554565b9150509250925092565b5f6020828403121561277b5761277a6124d7565b5b5f61278884828501612554565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806127d557607f821691505b6020821081036127e8576127e7612791565b5b50919050565b7f496e76616c6964207370656e64657220616464726573730000000000000000005f82015250565b5f612822601783612451565b915061282d826127ee565b602082019050919050565b5f6020820190508181035f83015261284f81612816565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f61288a601483612451565b915061289582612856565b602082019050919050565b5f6020820190508181035f8301526128b78161287e565b9050919050565b7f416c6c6f77616e636520657863656564656400000000000000000000000000005f82015250565b5f6128f2601283612451565b91506128fd826128be565b602082019050919050565b5f6020820190508181035f83015261291f816128e6565b9050919050565b7f4561726c792041646f707465727320616c6c6f636174696f6e206578636565645f8201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b5f612980602283612451565b915061298b82612926565b604082019050919050565b5f6020820190508181035f8301526129ad81612974565b9050919050565b7f50726573616c65203120616c6c6f636174696f6e2065786365656465640000005f82015250565b5f6129e8601d83612451565b91506129f3826129b4565b602082019050919050565b5f6020820190508181035f830152612a15816129dc565b9050919050565b7f4d61726b6574696e6720616c6c6f636174696f6e2065786365656465640000005f82015250565b5f612a50601d83612451565b9150612a5b82612a1c565b602082019050919050565b5f6020820190508181035f830152612a7d81612a44565b9050919050565b7f50726573616c65203220616c6c6f636174696f6e2065786365656465640000005f82015250565b5f612ab8601d83612451565b9150612ac382612a84565b602082019050919050565b5f6020820190508181035f830152612ae581612aac565b9050919050565b7f436f6d70616e79205265736572766520616c6c6f636174696f6e2065786365655f8201527f6465640000000000000000000000000000000000000000000000000000000000602082015250565b5f612b46602383612451565b9150612b5182612aec565b604082019050919050565b5f6020820190508181035f830152612b7381612b3a565b9050919050565b7f496e76616c696420726563697069656e742061646472657373000000000000005f82015250565b5f612bae601983612451565b9150612bb982612b7a565b602082019050919050565b5f6020820190508181035f830152612bdb81612ba2565b9050919050565b7f5465616d20616c6c6f636174696f6e20657863656564656400000000000000005f82015250565b5f612c16601883612451565b9150612c2182612be2565b602082019050919050565b5f6020820190508181035f830152612c4381612c0a565b9050919050565b7f45636f73797374656d20616c6c6f636174696f6e2065786365656465640000005f82015250565b5f612c7e601d83612451565b9150612c8982612c4a565b602082019050919050565b5f6020820190508181035f830152612cab81612c72565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f5f82015250565b5f612ce6602083612451565b9150612cf182612cb2565b602082019050919050565b5f6020820190508181035f830152612d1381612cda565b9050919050565b7f496e76616c69642062656e6566696369617279206164647265737300000000005f82015250565b5f612d4e601b83612451565b9150612d5982612d1a565b602082019050919050565b5f6020820190508181035f830152612d7b81612d42565b9050919050565b7f4e6f20746f6b656e7320746f20636c61696d00000000000000000000000000005f82015250565b5f612db6601283612451565b9150612dc182612d82565b602082019050919050565b5f6020820190508181035f830152612de381612daa565b9050919050565b7f43616e6e6f74206275726e206d6f7265207468616e20616c6c6f6361746564205f8201527f616d6f756e740000000000000000000000000000000000000000000000000000602082015250565b5f612e44602683612451565b9150612e4f82612dea565b604082019050919050565b5f6020820190508181035f830152612e7181612e38565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612eaf82612535565b9150612eba83612535565b9250828203905081811115612ed257612ed1612e78565b5b92915050565b5f612ee282612535565b9150612eed83612535565b9250828201905080821115612f0557612f04612e78565b5b92915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f612f3f601f83612451565b9150612f4a82612f0b565b602082019050919050565b5f6020820190508181035f830152612f6c81612f33565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612faa82612535565b9150612fb583612535565b925082612fc557612fc4612f73565b5b828204905092915050565b5f612fda82612535565b9150612fe583612535565b9250828202612ff381612535565b9150828204841483151761300a57613009612e78565b5b509291505056fea2646970667358221220b6f8290f04b87c0b75ab126ed5992ed78f8b003782d19f948de7e4a2cb09569e64736f6c634300081a0033