0x6080604052600436106101d05760003560e01c806374010ece116100f7578063a9059cbb11610095578063d00efb2f11610064578063d00efb2f14610648578063dd62ed3e14610673578063ea1644d5146106b0578063f2fde38b146106d9576101d7565b8063a9059cbb1461058e578063bfd79284146105cb578063c3c8cd8014610608578063c492f0461461061f576101d7565b80638f9a55c0116100d15780638f9a55c0146104e657806395d89b411461051157806398a5c3151461053c578063a2a957bb14610565576101d7565b806374010ece146104675780637d1db4a5146104905780638da5cb5b146104bb576101d7565b80633117274b1161016f5780636d8aa8f81161013e5780636d8aa8f8146103d35780636fc3eaec146103fc57806370a0823114610413578063715018a614610450576101d7565b80633117274b1461032b578063313ce5671461035457806349bd5a5e1461037f5780636b999053146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632fd689e314610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612de3565b610702565b005b34801561021157600080fd5b5061021a61082c565b6040516102279190612eab565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612f03565b610869565b6040516102649190612f5e565b60405180910390f35b34801561027957600080fd5b50610282610887565b60405161028f9190612fd8565b60405180910390f35b3480156102a457600080fd5b506102ad6108ad565b6040516102ba9190613002565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e5919061301d565b6108bd565b6040516102f79190612f5e565b60405180910390f35b34801561030c57600080fd5b50610315610996565b6040516103229190613002565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d919061309c565b61099c565b005b34801561036057600080fd5b50610369610a4e565b60405161037691906130e5565b60405180910390f35b34801561038b57600080fd5b50610394610a57565b6040516103a1919061310f565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc919061312a565b610a7d565b005b3480156103df57600080fd5b506103fa60048036038101906103f5919061309c565b610b6d565b005b34801561040857600080fd5b50610411610c1e565b005b34801561041f57600080fd5b5061043a6004803603810190610435919061312a565b610cef565b6040516104479190613002565b60405180910390f35b34801561045c57600080fd5b50610465610d40565b005b34801561047357600080fd5b5061048e60048036038101906104899190613157565b610e93565b005b34801561049c57600080fd5b506104a5610f32565b6040516104b29190613002565b60405180910390f35b3480156104c757600080fd5b506104d0610f38565b6040516104dd919061310f565b60405180910390f35b3480156104f257600080fd5b506104fb610f61565b6040516105089190613002565b60405180910390f35b34801561051d57600080fd5b50610526610f67565b6040516105339190612eab565b60405180910390f35b34801561054857600080fd5b50610563600480360381019061055e9190613157565b610fa4565b005b34801561057157600080fd5b5061058c60048036038101906105879190613184565b611043565b005b34801561059a57600080fd5b506105b560048036038101906105b09190612f03565b6110fa565b6040516105c29190612f5e565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed919061312a565b611118565b6040516105ff9190612f5e565b60405180910390f35b34801561061457600080fd5b5061061d611138565b005b34801561062b57600080fd5b5061064660048036038101906106419190613246565b611211565b005b34801561065457600080fd5b5061065d61134b565b60405161066a9190613002565b60405180910390f35b34801561067f57600080fd5b5061069a600480360381019061069591906132a6565b611351565b6040516106a79190613002565b60405180910390f35b3480156106bc57600080fd5b506106d760048036038101906106d29190613157565b6113d8565b005b3480156106e557600080fd5b5061070060048036038101906106fb919061312a565b611477565b005b61070a611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078e90613332565b60405180910390fd5b60005b8151811015610828576001601160008484815181106107bc576107bb613352565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610820906133b0565b91505061079a565b5050565b60606040518060400160405280600a81526020017f4f4720426974636f696e00000000000000000000000000000000000000000000815250905090565b600061087d610876611638565b8484611640565b6001905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b60006108ca848484611809565b61098b846108d6611638565b61098685604051806060016040528060288152602001613db660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061093c611638565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461208c9092919063ffffffff16565b611640565b600190509392505050565b60195481565b6109a4611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2890613332565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60006009905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a85611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0990613332565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b75611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf990613332565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c5f611638565b73ffffffffffffffffffffffffffffffffffffffff161480610cd55750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cbd611638565b73ffffffffffffffffffffffffffffffffffffffff16145b610cde57600080fd5b6000479050610cec816120f0565b50565b6000610d39600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612211565b9050919050565b610d48611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc90613332565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e9b611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1f90613332565b60405180910390fd5b8060178190555050565b60175481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60185481565b60606040518060400160405280600481526020017f244f474200000000000000000000000000000000000000000000000000000000815250905090565b610fac611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103090613332565b60405180910390fd5b8060198190555050565b61104b611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cf90613332565b60405180910390fd5b8360098190555082600b8190555081600a8190555080600c8190555050505050565b600061110e611107611638565b8484611809565b6001905092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611179611638565b73ffffffffffffffffffffffffffffffffffffffff1614806111ef5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111d7611638565b73ffffffffffffffffffffffffffffffffffffffff16145b6111f857600080fd5b600061120330610cef565b905061120e8161227f565b50565b611219611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d90613332565b60405180910390fd5b60005b838390508110156113455781600560008686858181106112cc576112cb613352565b5b90506020020160208101906112e1919061312a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061133d906133b0565b9150506112a9565b50505050565b60085481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113e0611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461146d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146490613332565b60405180910390fd5b8060188190555050565b61147f611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461150c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150390613332565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361157b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115729061346a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a6906134fc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361171e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117159061358e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117fc9190613002565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186f90613620565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de906136b2565b60405180910390fd5b6000811161192a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192190613744565b60405180910390fd5b611932610f38565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119a05750611970610f38565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d8b57601660149054906101000a900460ff16611a2f576119c1610f38565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a25906137d6565b60405180910390fd5b5b601754811115611a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6b90613842565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b185750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4e906138d4565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c045760185481611bb984610cef565b611bc391906138f4565b10611c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfa9061399a565b60405180910390fd5b5b6000611c0f30610cef565b9050600060195482101590506017548210611c2a5760175491505b808015611c445750601660159054906101000a900460ff16155b8015611c9e5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611cb4575060168054906101000a900460ff165b8015611d0a5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d605750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d8857611d6e8261227f565b60004790506000811115611d8657611d85476120f0565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e325750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611ee55750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ee45750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ef3576000905061207a565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f9e5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fb657600954600d81905550600a54600e819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120615750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561207957600b54600d81905550600c54600e819055505b5b612086848484846124f8565b50505050565b60008383111582906120d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cb9190612eab565b60405180910390fd5b50600083856120e391906139ba565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612153606461214560328661252590919063ffffffff16565b61259f90919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561217e573d6000803e3d6000fd5b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6121e260646121d460328661252590919063ffffffff16565b61259f90919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561220d573d6000803e3d6000fd5b5050565b6000600654821115612258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224f90613a60565b60405180910390fd5b60006122626125e9565b9050612277818461259f90919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122b7576122b6612c42565b5b6040519080825280602002602001820160405280156122e55781602001602082028036833780820191505090505b50905030816000815181106122fd576122fc613352565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c89190613a95565b816001815181106123dc576123db613352565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061244330601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611640565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124a7959493929190613bbb565b600060405180830381600087803b1580156124c157600080fd5b505af11580156124d5573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b8061250657612505612614565b5b612511848484612651565b8061251f5761251e61281c565b5b50505050565b60008083036125375760009050612599565b600082846125459190613c15565b90508284826125549190613c86565b14612594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258b90613d29565b60405180910390fd5b809150505b92915050565b60006125e183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612830565b905092915050565b60008060006125f6612893565b9150915061260d818361259f90919063ffffffff16565b9250505090565b6000600d5414801561262857506000600e54145b61264f57600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b600080600080600080612663876128f2565b9550955095509550955095506126c186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061275685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129a490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127a281612a02565b6127ac8483612abf565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128099190613002565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b60008083118290612877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286e9190612eab565b60405180910390fd5b50600083856128869190613c86565b9050809150509392505050565b60008060006006549050600067016345785d8a000090506128c767016345785d8a000060065461259f90919063ffffffff16565b8210156128e55760065467016345785d8a00009350935050506128ee565b81819350935050505b9091565b600080600080600080600080600061290f8a600d54600e54612af9565b925092509250600061291f6125e9565b905060008060006129328e878787612b8f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061299c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061208c565b905092915050565b60008082846129b391906138f4565b9050838110156129f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ef90613d95565b60405180910390fd5b8091505092915050565b6000612a0c6125e9565b90506000612a23828461252590919063ffffffff16565b9050612a7781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129a490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612ad48260065461295a90919063ffffffff16565b600681905550612aef816007546129a490919063ffffffff16565b6007819055505050565b600080600080612b256064612b17888a61252590919063ffffffff16565b61259f90919063ffffffff16565b90506000612b4f6064612b41888b61252590919063ffffffff16565b61259f90919063ffffffff16565b90506000612b7882612b6a858c61295a90919063ffffffff16565b61295a90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ba8858961252590919063ffffffff16565b90506000612bbf868961252590919063ffffffff16565b90506000612bd6878961252590919063ffffffff16565b90506000612bff82612bf1858761295a90919063ffffffff16565b61295a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c7a82612c31565b810181811067ffffffffffffffff82111715612c9957612c98612c42565b5b80604052505050565b6000612cac612c18565b9050612cb88282612c71565b919050565b600067ffffffffffffffff821115612cd857612cd7612c42565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d1982612cee565b9050919050565b612d2981612d0e565b8114612d3457600080fd5b50565b600081359050612d4681612d20565b92915050565b6000612d5f612d5a84612cbd565b612ca2565b90508083825260208201905060208402830185811115612d8257612d81612ce9565b5b835b81811015612dab5780612d978882612d37565b845260208401935050602081019050612d84565b5050509392505050565b600082601f830112612dca57612dc9612c2c565b5b8135612dda848260208601612d4c565b91505092915050565b600060208284031215612df957612df8612c22565b5b600082013567ffffffffffffffff811115612e1757612e16612c27565b5b612e2384828501612db5565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e66578082015181840152602081019050612e4b565b60008484015250505050565b6000612e7d82612e2c565b612e878185612e37565b9350612e97818560208601612e48565b612ea081612c31565b840191505092915050565b60006020820190508181036000830152612ec58184612e72565b905092915050565b6000819050919050565b612ee081612ecd565b8114612eeb57600080fd5b50565b600081359050612efd81612ed7565b92915050565b60008060408385031215612f1a57612f19612c22565b5b6000612f2885828601612d37565b9250506020612f3985828601612eee565b9150509250929050565b60008115159050919050565b612f5881612f43565b82525050565b6000602082019050612f736000830184612f4f565b92915050565b6000819050919050565b6000612f9e612f99612f9484612cee565b612f79565b612cee565b9050919050565b6000612fb082612f83565b9050919050565b6000612fc282612fa5565b9050919050565b612fd281612fb7565b82525050565b6000602082019050612fed6000830184612fc9565b92915050565b612ffc81612ecd565b82525050565b60006020820190506130176000830184612ff3565b92915050565b60008060006060848603121561303657613035612c22565b5b600061304486828701612d37565b935050602061305586828701612d37565b925050604061306686828701612eee565b9150509250925092565b61307981612f43565b811461308457600080fd5b50565b60008135905061309681613070565b92915050565b6000602082840312156130b2576130b1612c22565b5b60006130c084828501613087565b91505092915050565b600060ff82169050919050565b6130df816130c9565b82525050565b60006020820190506130fa60008301846130d6565b92915050565b61310981612d0e565b82525050565b60006020820190506131246000830184613100565b92915050565b6000602082840312156131405761313f612c22565b5b600061314e84828501612d37565b91505092915050565b60006020828403121561316d5761316c612c22565b5b600061317b84828501612eee565b91505092915050565b6000806000806080858703121561319e5761319d612c22565b5b60006131ac87828801612eee565b94505060206131bd87828801612eee565b93505060406131ce87828801612eee565b92505060606131df87828801612eee565b91505092959194509250565b600080fd5b60008083601f84011261320657613205612c2c565b5b8235905067ffffffffffffffff811115613223576132226131eb565b5b60208301915083602082028301111561323f5761323e612ce9565b5b9250929050565b60008060006040848603121561325f5761325e612c22565b5b600084013567ffffffffffffffff81111561327d5761327c612c27565b5b613289868287016131f0565b9350935050602061329c86828701613087565b9150509250925092565b600080604083850312156132bd576132bc612c22565b5b60006132cb85828601612d37565b92505060206132dc85828601612d37565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061331c602083612e37565b9150613327826132e6565b602082019050919050565b6000602082019050818103600083015261334b8161330f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133bb82612ecd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133ed576133ec613381565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613454602683612e37565b915061345f826133f8565b604082019050919050565b6000602082019050818103600083015261348381613447565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006134e6602483612e37565b91506134f18261348a565b604082019050919050565b60006020820190508181036000830152613515816134d9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613578602283612e37565b91506135838261351c565b604082019050919050565b600060208201905081810360008301526135a78161356b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061360a602583612e37565b9150613615826135ae565b604082019050919050565b60006020820190508181036000830152613639816135fd565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061369c602383612e37565b91506136a782613640565b604082019050919050565b600060208201905081810360008301526136cb8161368f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061372e602983612e37565b9150613739826136d2565b604082019050919050565b6000602082019050818103600083015261375d81613721565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006137c0603f83612e37565b91506137cb82613764565b604082019050919050565b600060208201905081810360008301526137ef816137b3565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061382c601c83612e37565b9150613837826137f6565b602082019050919050565b6000602082019050818103600083015261385b8161381f565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006138be602383612e37565b91506138c982613862565b604082019050919050565b600060208201905081810360008301526138ed816138b1565b9050919050565b60006138ff82612ecd565b915061390a83612ecd565b925082820190508082111561392257613921613381565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613984602383612e37565b915061398f82613928565b604082019050919050565b600060208201905081810360008301526139b381613977565b9050919050565b60006139c582612ecd565b91506139d083612ecd565b92508282039050818111156139e8576139e7613381565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613a4a602a83612e37565b9150613a55826139ee565b604082019050919050565b60006020820190508181036000830152613a7981613a3d565b9050919050565b600081519050613a8f81612d20565b92915050565b600060208284031215613aab57613aaa612c22565b5b6000613ab984828501613a80565b91505092915050565b6000819050919050565b6000613ae7613ae2613add84613ac2565b612f79565b612ecd565b9050919050565b613af781613acc565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b3281612d0e565b82525050565b6000613b448383613b29565b60208301905092915050565b6000602082019050919050565b6000613b6882613afd565b613b728185613b08565b9350613b7d83613b19565b8060005b83811015613bae578151613b958882613b38565b9750613ba083613b50565b925050600181019050613b81565b5085935050505092915050565b600060a082019050613bd06000830188612ff3565b613bdd6020830187613aee565b8181036040830152613bef8186613b5d565b9050613bfe6060830185613100565b613c0b6080830184612ff3565b9695505050505050565b6000613c2082612ecd565b9150613c2b83612ecd565b9250828202613c3981612ecd565b91508282048414831517613c5057613c4f613381565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c9182612ecd565b9150613c9c83612ecd565b925082613cac57613cab613c57565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d13602183612e37565b9150613d1e82613cb7565b604082019050919050565b60006020820190508181036000830152613d4281613d06565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613d7f601b83612e37565b9150613d8a82613d49565b602082019050919050565b60006020820190508181036000830152613dae81613d72565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209c44810c5d25b674d18aa13a95f9b7835736314d4afed198e893a286a85d7ec064736f6c63430008110033
0x608060405267016345785d8a00006000196200001c91906200070d565b6000196200002b919062000774565b6006556000600955600a80556000600b556014600c55600b54600d55600c54600e55600d54600f55600e54601055732f3a6e65326b6d94d837b2c2623e3c6c5c2ef8e4601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a970fb49265dcb1e78929c33a89194609c833cc9601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601660156101000a81548160ff02191690831515021790555060016016806101000a81548160ff02191690831515021790555066071afd498d000060175566071afd498d00006018556509184e72a0006019553480156200016557600080fd5b50600062000178620006a360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200022d620006a360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000311573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000337919062000819565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200039f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c5919062000819565b6040518363ffffffff1660e01b8152600401620003e49291906200085c565b6020604051808303816000875af115801562000404573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042a919062000819565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005600062000480620006ab60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200062d620006a360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a00006040516200069491906200089a565b60405180910390a350620008b7565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200071a82620006d4565b91506200072783620006d4565b9250826200073a5762000739620006de565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200078182620006d4565b91506200078e83620006d4565b9250828203905081811115620007a957620007a862000745565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007e182620007b4565b9050919050565b620007f381620007d4565b8114620007ff57600080fd5b50565b6000815190506200081381620007e8565b92915050565b600060208284031215620008325762000831620007af565b5b6000620008428482850162000802565b91505092915050565b6200085681620007d4565b82525050565b60006040820190506200087360008301856200084b565b6200088260208301846200084b565b9392505050565b6200089481620006d4565b82525050565b6000602082019050620008b1600083018462000889565b92915050565b613e1380620008c76000396000f3fe6080604052600436106101d05760003560e01c806374010ece116100f7578063a9059cbb11610095578063d00efb2f11610064578063d00efb2f14610648578063dd62ed3e14610673578063ea1644d5146106b0578063f2fde38b146106d9576101d7565b8063a9059cbb1461058e578063bfd79284146105cb578063c3c8cd8014610608578063c492f0461461061f576101d7565b80638f9a55c0116100d15780638f9a55c0146104e657806395d89b411461051157806398a5c3151461053c578063a2a957bb14610565576101d7565b806374010ece146104675780637d1db4a5146104905780638da5cb5b146104bb576101d7565b80633117274b1161016f5780636d8aa8f81161013e5780636d8aa8f8146103d35780636fc3eaec146103fc57806370a0823114610413578063715018a614610450576101d7565b80633117274b1461032b578063313ce5671461035457806349bd5a5e1461037f5780636b999053146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632fd689e314610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612de3565b610702565b005b34801561021157600080fd5b5061021a61082c565b6040516102279190612eab565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612f03565b610869565b6040516102649190612f5e565b60405180910390f35b34801561027957600080fd5b50610282610887565b60405161028f9190612fd8565b60405180910390f35b3480156102a457600080fd5b506102ad6108ad565b6040516102ba9190613002565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e5919061301d565b6108bd565b6040516102f79190612f5e565b60405180910390f35b34801561030c57600080fd5b50610315610996565b6040516103229190613002565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d919061309c565b61099c565b005b34801561036057600080fd5b50610369610a4e565b60405161037691906130e5565b60405180910390f35b34801561038b57600080fd5b50610394610a57565b6040516103a1919061310f565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc919061312a565b610a7d565b005b3480156103df57600080fd5b506103fa60048036038101906103f5919061309c565b610b6d565b005b34801561040857600080fd5b50610411610c1e565b005b34801561041f57600080fd5b5061043a6004803603810190610435919061312a565b610cef565b6040516104479190613002565b60405180910390f35b34801561045c57600080fd5b50610465610d40565b005b34801561047357600080fd5b5061048e60048036038101906104899190613157565b610e93565b005b34801561049c57600080fd5b506104a5610f32565b6040516104b29190613002565b60405180910390f35b3480156104c757600080fd5b506104d0610f38565b6040516104dd919061310f565b60405180910390f35b3480156104f257600080fd5b506104fb610f61565b6040516105089190613002565b60405180910390f35b34801561051d57600080fd5b50610526610f67565b6040516105339190612eab565b60405180910390f35b34801561054857600080fd5b50610563600480360381019061055e9190613157565b610fa4565b005b34801561057157600080fd5b5061058c60048036038101906105879190613184565b611043565b005b34801561059a57600080fd5b506105b560048036038101906105b09190612f03565b6110fa565b6040516105c29190612f5e565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed919061312a565b611118565b6040516105ff9190612f5e565b60405180910390f35b34801561061457600080fd5b5061061d611138565b005b34801561062b57600080fd5b5061064660048036038101906106419190613246565b611211565b005b34801561065457600080fd5b5061065d61134b565b60405161066a9190613002565b60405180910390f35b34801561067f57600080fd5b5061069a600480360381019061069591906132a6565b611351565b6040516106a79190613002565b60405180910390f35b3480156106bc57600080fd5b506106d760048036038101906106d29190613157565b6113d8565b005b3480156106e557600080fd5b5061070060048036038101906106fb919061312a565b611477565b005b61070a611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078e90613332565b60405180910390fd5b60005b8151811015610828576001601160008484815181106107bc576107bb613352565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610820906133b0565b91505061079a565b5050565b60606040518060400160405280600a81526020017f4f4720426974636f696e00000000000000000000000000000000000000000000815250905090565b600061087d610876611638565b8484611640565b6001905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b60006108ca848484611809565b61098b846108d6611638565b61098685604051806060016040528060288152602001613db660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061093c611638565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461208c9092919063ffffffff16565b611640565b600190509392505050565b60195481565b6109a4611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2890613332565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60006009905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a85611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0990613332565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b75611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf990613332565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c5f611638565b73ffffffffffffffffffffffffffffffffffffffff161480610cd55750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cbd611638565b73ffffffffffffffffffffffffffffffffffffffff16145b610cde57600080fd5b6000479050610cec816120f0565b50565b6000610d39600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612211565b9050919050565b610d48611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc90613332565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e9b611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1f90613332565b60405180910390fd5b8060178190555050565b60175481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60185481565b60606040518060400160405280600481526020017f244f474200000000000000000000000000000000000000000000000000000000815250905090565b610fac611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103090613332565b60405180910390fd5b8060198190555050565b61104b611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cf90613332565b60405180910390fd5b8360098190555082600b8190555081600a8190555080600c8190555050505050565b600061110e611107611638565b8484611809565b6001905092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611179611638565b73ffffffffffffffffffffffffffffffffffffffff1614806111ef5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111d7611638565b73ffffffffffffffffffffffffffffffffffffffff16145b6111f857600080fd5b600061120330610cef565b905061120e8161227f565b50565b611219611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d90613332565b60405180910390fd5b60005b838390508110156113455781600560008686858181106112cc576112cb613352565b5b90506020020160208101906112e1919061312a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061133d906133b0565b9150506112a9565b50505050565b60085481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113e0611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461146d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146490613332565b60405180910390fd5b8060188190555050565b61147f611638565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461150c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150390613332565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361157b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115729061346a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a6906134fc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361171e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117159061358e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117fc9190613002565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186f90613620565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de906136b2565b60405180910390fd5b6000811161192a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192190613744565b60405180910390fd5b611932610f38565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119a05750611970610f38565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d8b57601660149054906101000a900460ff16611a2f576119c1610f38565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a25906137d6565b60405180910390fd5b5b601754811115611a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6b90613842565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b185750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4e906138d4565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c045760185481611bb984610cef565b611bc391906138f4565b10611c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfa9061399a565b60405180910390fd5b5b6000611c0f30610cef565b9050600060195482101590506017548210611c2a5760175491505b808015611c445750601660159054906101000a900460ff16155b8015611c9e5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611cb4575060168054906101000a900460ff165b8015611d0a5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d605750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d8857611d6e8261227f565b60004790506000811115611d8657611d85476120f0565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e325750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611ee55750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ee45750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ef3576000905061207a565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f9e5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fb657600954600d81905550600a54600e819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120615750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561207957600b54600d81905550600c54600e819055505b5b612086848484846124f8565b50505050565b60008383111582906120d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cb9190612eab565b60405180910390fd5b50600083856120e391906139ba565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612153606461214560328661252590919063ffffffff16565b61259f90919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561217e573d6000803e3d6000fd5b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6121e260646121d460328661252590919063ffffffff16565b61259f90919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561220d573d6000803e3d6000fd5b5050565b6000600654821115612258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224f90613a60565b60405180910390fd5b60006122626125e9565b9050612277818461259f90919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122b7576122b6612c42565b5b6040519080825280602002602001820160405280156122e55781602001602082028036833780820191505090505b50905030816000815181106122fd576122fc613352565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c89190613a95565b816001815181106123dc576123db613352565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061244330601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611640565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124a7959493929190613bbb565b600060405180830381600087803b1580156124c157600080fd5b505af11580156124d5573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b8061250657612505612614565b5b612511848484612651565b8061251f5761251e61281c565b5b50505050565b60008083036125375760009050612599565b600082846125459190613c15565b90508284826125549190613c86565b14612594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258b90613d29565b60405180910390fd5b809150505b92915050565b60006125e183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612830565b905092915050565b60008060006125f6612893565b9150915061260d818361259f90919063ffffffff16565b9250505090565b6000600d5414801561262857506000600e54145b61264f57600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b600080600080600080612663876128f2565b9550955095509550955095506126c186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061275685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129a490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127a281612a02565b6127ac8483612abf565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128099190613002565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b60008083118290612877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286e9190612eab565b60405180910390fd5b50600083856128869190613c86565b9050809150509392505050565b60008060006006549050600067016345785d8a000090506128c767016345785d8a000060065461259f90919063ffffffff16565b8210156128e55760065467016345785d8a00009350935050506128ee565b81819350935050505b9091565b600080600080600080600080600061290f8a600d54600e54612af9565b925092509250600061291f6125e9565b905060008060006129328e878787612b8f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061299c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061208c565b905092915050565b60008082846129b391906138f4565b9050838110156129f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ef90613d95565b60405180910390fd5b8091505092915050565b6000612a0c6125e9565b90506000612a23828461252590919063ffffffff16565b9050612a7781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129a490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612ad48260065461295a90919063ffffffff16565b600681905550612aef816007546129a490919063ffffffff16565b6007819055505050565b600080600080612b256064612b17888a61252590919063ffffffff16565b61259f90919063ffffffff16565b90506000612b4f6064612b41888b61252590919063ffffffff16565b61259f90919063ffffffff16565b90506000612b7882612b6a858c61295a90919063ffffffff16565b61295a90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ba8858961252590919063ffffffff16565b90506000612bbf868961252590919063ffffffff16565b90506000612bd6878961252590919063ffffffff16565b90506000612bff82612bf1858761295a90919063ffffffff16565b61295a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c7a82612c31565b810181811067ffffffffffffffff82111715612c9957612c98612c42565b5b80604052505050565b6000612cac612c18565b9050612cb88282612c71565b919050565b600067ffffffffffffffff821115612cd857612cd7612c42565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d1982612cee565b9050919050565b612d2981612d0e565b8114612d3457600080fd5b50565b600081359050612d4681612d20565b92915050565b6000612d5f612d5a84612cbd565b612ca2565b90508083825260208201905060208402830185811115612d8257612d81612ce9565b5b835b81811015612dab5780612d978882612d37565b845260208401935050602081019050612d84565b5050509392505050565b600082601f830112612dca57612dc9612c2c565b5b8135612dda848260208601612d4c565b91505092915050565b600060208284031215612df957612df8612c22565b5b600082013567ffffffffffffffff811115612e1757612e16612c27565b5b612e2384828501612db5565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e66578082015181840152602081019050612e4b565b60008484015250505050565b6000612e7d82612e2c565b612e878185612e37565b9350612e97818560208601612e48565b612ea081612c31565b840191505092915050565b60006020820190508181036000830152612ec58184612e72565b905092915050565b6000819050919050565b612ee081612ecd565b8114612eeb57600080fd5b50565b600081359050612efd81612ed7565b92915050565b60008060408385031215612f1a57612f19612c22565b5b6000612f2885828601612d37565b9250506020612f3985828601612eee565b9150509250929050565b60008115159050919050565b612f5881612f43565b82525050565b6000602082019050612f736000830184612f4f565b92915050565b6000819050919050565b6000612f9e612f99612f9484612cee565b612f79565b612cee565b9050919050565b6000612fb082612f83565b9050919050565b6000612fc282612fa5565b9050919050565b612fd281612fb7565b82525050565b6000602082019050612fed6000830184612fc9565b92915050565b612ffc81612ecd565b82525050565b60006020820190506130176000830184612ff3565b92915050565b60008060006060848603121561303657613035612c22565b5b600061304486828701612d37565b935050602061305586828701612d37565b925050604061306686828701612eee565b9150509250925092565b61307981612f43565b811461308457600080fd5b50565b60008135905061309681613070565b92915050565b6000602082840312156130b2576130b1612c22565b5b60006130c084828501613087565b91505092915050565b600060ff82169050919050565b6130df816130c9565b82525050565b60006020820190506130fa60008301846130d6565b92915050565b61310981612d0e565b82525050565b60006020820190506131246000830184613100565b92915050565b6000602082840312156131405761313f612c22565b5b600061314e84828501612d37565b91505092915050565b60006020828403121561316d5761316c612c22565b5b600061317b84828501612eee565b91505092915050565b6000806000806080858703121561319e5761319d612c22565b5b60006131ac87828801612eee565b94505060206131bd87828801612eee565b93505060406131ce87828801612eee565b92505060606131df87828801612eee565b91505092959194509250565b600080fd5b60008083601f84011261320657613205612c2c565b5b8235905067ffffffffffffffff811115613223576132226131eb565b5b60208301915083602082028301111561323f5761323e612ce9565b5b9250929050565b60008060006040848603121561325f5761325e612c22565b5b600084013567ffffffffffffffff81111561327d5761327c612c27565b5b613289868287016131f0565b9350935050602061329c86828701613087565b9150509250925092565b600080604083850312156132bd576132bc612c22565b5b60006132cb85828601612d37565b92505060206132dc85828601612d37565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061331c602083612e37565b9150613327826132e6565b602082019050919050565b6000602082019050818103600083015261334b8161330f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133bb82612ecd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133ed576133ec613381565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613454602683612e37565b915061345f826133f8565b604082019050919050565b6000602082019050818103600083015261348381613447565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006134e6602483612e37565b91506134f18261348a565b604082019050919050565b60006020820190508181036000830152613515816134d9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613578602283612e37565b91506135838261351c565b604082019050919050565b600060208201905081810360008301526135a78161356b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061360a602583612e37565b9150613615826135ae565b604082019050919050565b60006020820190508181036000830152613639816135fd565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061369c602383612e37565b91506136a782613640565b604082019050919050565b600060208201905081810360008301526136cb8161368f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061372e602983612e37565b9150613739826136d2565b604082019050919050565b6000602082019050818103600083015261375d81613721565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006137c0603f83612e37565b91506137cb82613764565b604082019050919050565b600060208201905081810360008301526137ef816137b3565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061382c601c83612e37565b9150613837826137f6565b602082019050919050565b6000602082019050818103600083015261385b8161381f565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006138be602383612e37565b91506138c982613862565b604082019050919050565b600060208201905081810360008301526138ed816138b1565b9050919050565b60006138ff82612ecd565b915061390a83612ecd565b925082820190508082111561392257613921613381565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613984602383612e37565b915061398f82613928565b604082019050919050565b600060208201905081810360008301526139b381613977565b9050919050565b60006139c582612ecd565b91506139d083612ecd565b92508282039050818111156139e8576139e7613381565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613a4a602a83612e37565b9150613a55826139ee565b604082019050919050565b60006020820190508181036000830152613a7981613a3d565b9050919050565b600081519050613a8f81612d20565b92915050565b600060208284031215613aab57613aaa612c22565b5b6000613ab984828501613a80565b91505092915050565b6000819050919050565b6000613ae7613ae2613add84613ac2565b612f79565b612ecd565b9050919050565b613af781613acc565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b3281612d0e565b82525050565b6000613b448383613b29565b60208301905092915050565b6000602082019050919050565b6000613b6882613afd565b613b728185613b08565b9350613b7d83613b19565b8060005b83811015613bae578151613b958882613b38565b9750613ba083613b50565b925050600181019050613b81565b5085935050505092915050565b600060a082019050613bd06000830188612ff3565b613bdd6020830187613aee565b8181036040830152613bef8186613b5d565b9050613bfe6060830185613100565b613c0b6080830184612ff3565b9695505050505050565b6000613c2082612ecd565b9150613c2b83612ecd565b9250828202613c3981612ecd565b91508282048414831517613c5057613c4f613381565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c9182612ecd565b9150613c9c83612ecd565b925082613cac57613cab613c57565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d13602183612e37565b9150613d1e82613cb7565b604082019050919050565b60006020820190508181036000830152613d4281613d06565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613d7f601b83612e37565b9150613d8a82613d49565b602082019050919050565b60006020820190508181036000830152613dae81613d72565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209c44810c5d25b674d18aa13a95f9b7835736314d4afed198e893a286a85d7ec064736f6c63430008110033