6080604052600460075560046008553480156200001b57600080fd5b506040518060400160405280600b81526020017f426f64656e5769664861740000000000000000000000000000000000000000008152506040518060400160405280600481526020017f42574946000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000a092919062000466565b508060049080519060200190620000b992919062000466565b505050620000dc620000d06200021560201b60201c565b6200021d60201b60201c565b6001600681905550600073ffffffffffffffffffffffffffffffffffffffff16739ad6c38be94206ca50bb0d90783181662f0cfa1073ffffffffffffffffffffffffffffffffffffffff1614156200016b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000162906200060f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff167360ae616a2155ee3d9a68541ba4544862310933d473ffffffffffffffffffffffffffffffffffffffff161415620001f2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001e990620005ed565b60405180910390fd5b6200020f336a084595161401484a000000620002e360201b60201c565b6200077c565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000356576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200034d9062000631565b60405180910390fd5b6200036a600083836200045c60201b60201c565b80600260008282546200037e919062000681565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620003d5919062000681565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200043c919062000653565b60405180910390a362000458600083836200046160201b60201c565b5050565b505050565b505050565b8280546200047490620006e8565b90600052602060002090601f016020900481019282620004985760008555620004e4565b82601f10620004b357805160ff1916838001178555620004e4565b82800160010185558215620004e4579182015b82811115620004e3578251825591602001919060010190620004c6565b5b509050620004f39190620004f7565b5090565b5b8082111562000512576000816000905550600101620004f8565b5090565b600062000525601e8362000670565b91507f556e697377617020526f757465722061646472657373206973207a65726f00006000830152602082019050919050565b600062000567601f8362000670565b91507f556e697377617020466163746f72792061646472657373206973207a65726f006000830152602082019050919050565b6000620005a9601f8362000670565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b620005e781620006de565b82525050565b60006020820190508181036000830152620006088162000516565b9050919050565b600060208201905081810360008301526200062a8162000558565b9050919050565b600060208201905081810360008301526200064c816200059a565b9050919050565b60006020820190506200066a6000830184620005dc565b92915050565b600082825260208201905092915050565b60006200068e82620006de565b91506200069b83620006de565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620006d357620006d26200071e565b5b828201905092915050565b6000819050919050565b600060028204905060018216806200070157607f821691505b602082108114156200071857620007176200074d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6121c8806200078c6000396000f3fe6080604052600436106101a05760003560e01c8063715018a6116100ec578063a9059cbb1161008a578063dc1052e211610064578063dc1052e2146105fa578063dd62ed3e14610623578063e086e5ec14610660578063f2fde38b14610677576101a7565b8063a9059cbb14610569578063c816841b146105a6578063d5aed6bf146105d1576101a7565b80638cd09d50116100c65780638cd09d50146104ad5780638da5cb5b146104d657806395d89b4114610501578063a457c2d71461052c576101a7565b8063715018a614610440578063735de9f7146104575780637df405a414610482576101a7565b80632ff2e9dc116101595780633950935111610133578063395093511461035e5780635d9b55ea1461039b5780636fb1896c146103d857806370a0823114610403576101a7565b80632ff2e9dc146102df578063313ce5671461030a5780633223654814610335576101a7565b806306fdde03146101a9578063095ea7b3146101d457806313f44d101461021157806318160ddd1461024e57806323b872dd14610279578063286dd3f5146102b6576101a7565b366101a757005b005b3480156101b557600080fd5b506101be6106a0565b6040516101cb9190611cdf565b60405180910390f35b3480156101e057600080fd5b506101fb60048036038101906101f69190611775565b610732565b6040516102089190611ca9565b60405180910390f35b34801561021d57600080fd5b50610238600480360381019061023391906116c1565b610755565b6040516102459190611ca9565b60405180910390f35b34801561025a57600080fd5b506102636107ab565b6040516102709190611e81565b60405180910390f35b34801561028557600080fd5b506102a0600480360381019061029b9190611726565b6107b5565b6040516102ad9190611ca9565b60405180910390f35b3480156102c257600080fd5b506102dd60048036038101906102d891906116c1565b6107e4565b005b3480156102eb57600080fd5b506102f4610847565b6040516103019190611e81565b60405180910390f35b34801561031657600080fd5b5061031f610856565b60405161032c9190611e9c565b60405180910390f35b34801561034157600080fd5b5061035c600480360381019061035791906116c1565b61085f565b005b34801561036a57600080fd5b5061038560048036038101906103809190611775565b6108c2565b6040516103929190611ca9565b60405180910390f35b3480156103a757600080fd5b506103c260048036038101906103bd91906116c1565b6108f9565b6040516103cf9190611ca9565b60405180910390f35b3480156103e457600080fd5b506103ed610919565b6040516103fa9190611e81565b60405180910390f35b34801561040f57600080fd5b5061042a600480360381019061042591906116c1565b61091f565b6040516104379190611e81565b60405180910390f35b34801561044c57600080fd5b50610455610967565b005b34801561046357600080fd5b5061046c61097b565b6040516104799190611cc4565b60405180910390f35b34801561048e57600080fd5b50610497610993565b6040516104a49190611e81565b60405180910390f35b3480156104b957600080fd5b506104d460048036038101906104cf91906117b1565b610999565b005b3480156104e257600080fd5b506104eb6109ab565b6040516104f89190611c8e565b60405180910390f35b34801561050d57600080fd5b506105166109d5565b6040516105239190611cdf565b60405180910390f35b34801561053857600080fd5b50610553600480360381019061054e9190611775565b610a67565b6040516105609190611ca9565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b9190611775565b610ade565b60405161059d9190611ca9565b60405180910390f35b3480156105b257600080fd5b506105bb610b01565b6040516105c89190611c8e565b60405180910390f35b3480156105dd57600080fd5b506105f860048036038101906105f391906116c1565b610b27565b005b34801561060657600080fd5b50610621600480360381019061061c91906117b1565b610be3565b005b34801561062f57600080fd5b5061064a600480360381019061064591906116ea565b610bf5565b6040516106579190611e81565b60405180910390f35b34801561066c57600080fd5b50610675610c7c565b005b34801561068357600080fd5b5061069e600480360381019061069991906116c1565b610d73565b005b6060600380546106af90612094565b80601f01602080910402602001604051908101604052809291908181526020018280546106db90612094565b80156107285780601f106106fd57610100808354040283529160200191610728565b820191906000526020600020905b81548152906001019060200180831161070b57829003601f168201915b5050505050905090565b60008061073d610df7565b905061074a818585610dff565b600191505092915050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600254905090565b6000806107c0610df7565b90506107cd858285610fca565b6107d8858585611056565b60019150509392505050565b6107ec6112c8565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6a084595161401484a00000081565b60006012905090565b6108676112c8565b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000806108cd610df7565b90506108ee8185856108df8589610bf5565b6108e99190611ed3565b610dff565b600191505092915050565b60096020528060005260406000206000915054906101000a900460ff1681565b60085481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61096f6112c8565b6109796000611346565b565b7360ae616a2155ee3d9a68541ba4544862310933d481565b60075481565b6109a16112c8565b8060088190555050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546109e490612094565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1090612094565b8015610a5d5780601f10610a3257610100808354040283529160200191610a5d565b820191906000526020600020905b815481529060010190602001808311610a4057829003601f168201915b5050505050905090565b600080610a72610df7565b90506000610a808286610bf5565b905083811015610ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abc90611e61565b60405180910390fd5b610ad28286868403610dff565b60019250505092915050565b600080610ae9610df7565b9050610af6818585611056565b600191505092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b2f6112c8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9690611d21565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610beb6112c8565b8060078190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c846112c8565b60026006541415610cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc190611e41565b60405180910390fd5b6002600681905550600047905060008111610d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1190611de1565b60405180910390fd5b610d226109ab565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d67573d6000803e3d6000fd5b50506001600681905550565b610d7b6112c8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de290611d41565b60405180910390fd5b610df481611346565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6690611e21565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed690611d61565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fbd9190611e81565b60405180910390a3505050565b6000610fd68484610bf5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110505781811015611042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103990611d81565b60405180910390fd5b61104f8484848403610dff565b5b50505050565b6002600654141561109c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109390611e41565b60405180910390fd5b6002600681905550600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156111485750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156112af57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111f55760006064600754836111b59190611f5a565b6111bf9190611f29565b9050600081836111cf9190611fb4565b90506111e3856111dd6109ab565b8461140c565b6111ee85858361140c565b50506112aa565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561129d57600060646008548361125d9190611f5a565b6112679190611f29565b9050600081836112779190611fb4565b905061128b856112856109ab565b8461140c565b61129685858361140c565b50506112a9565b6112a883838361140c565b5b5b6112bb565b6112ba83838361140c565b5b6001600681905550505050565b6112d0610df7565b73ffffffffffffffffffffffffffffffffffffffff166112ee6109ab565b73ffffffffffffffffffffffffffffffffffffffff1614611344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133b90611dc1565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561147c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147390611e01565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e390611d01565b60405180910390fd5b6114f783838361168d565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561157d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157490611da1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116109190611ed3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116749190611e81565b60405180910390a3611687848484611692565b50505050565b505050565b505050565b6000813590506116a681612164565b92915050565b6000813590506116bb8161217b565b92915050565b6000602082840312156116d357600080fd5b60006116e184828501611697565b91505092915050565b600080604083850312156116fd57600080fd5b600061170b85828601611697565b925050602061171c85828601611697565b9150509250929050565b60008060006060848603121561173b57600080fd5b600061174986828701611697565b935050602061175a86828701611697565b925050604061176b868287016116ac565b9150509250925092565b6000806040838503121561178857600080fd5b600061179685828601611697565b92505060206117a7858286016116ac565b9150509250929050565b6000602082840312156117c357600080fd5b60006117d1848285016116ac565b91505092915050565b6117e381611fe8565b82525050565b6117f281611ffa565b82525050565b6118018161203d565b82525050565b600061181282611eb7565b61181c8185611ec2565b935061182c818560208601612061565b61183581612153565b840191505092915050565b600061184d602383611ec2565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006118b3602f83611ec2565b91507f556e6973776170207061697220616464726573732063616e6e6f74206265207460008301527f6865207a65726f206164647265737300000000000000000000000000000000006020830152604082019050919050565b6000611919602683611ec2565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061197f602283611ec2565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006119e5601d83611ec2565b91507f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006000830152602082019050919050565b6000611a25602683611ec2565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611a8b602083611ec2565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000611acb601283611ec2565b91507f4e6f2045544820746f20776974686472617700000000000000000000000000006000830152602082019050919050565b6000611b0b602583611ec2565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611b71602483611ec2565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611bd7601f83611ec2565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b6000611c17602583611ec2565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b611c7981612026565b82525050565b611c8881612030565b82525050565b6000602082019050611ca360008301846117da565b92915050565b6000602082019050611cbe60008301846117e9565b92915050565b6000602082019050611cd960008301846117f8565b92915050565b60006020820190508181036000830152611cf98184611807565b905092915050565b60006020820190508181036000830152611d1a81611840565b9050919050565b60006020820190508181036000830152611d3a816118a6565b9050919050565b60006020820190508181036000830152611d5a8161190c565b9050919050565b60006020820190508181036000830152611d7a81611972565b9050919050565b60006020820190508181036000830152611d9a816119d8565b9050919050565b60006020820190508181036000830152611dba81611a18565b9050919050565b60006020820190508181036000830152611dda81611a7e565b9050919050565b60006020820190508181036000830152611dfa81611abe565b9050919050565b60006020820190508181036000830152611e1a81611afe565b9050919050565b60006020820190508181036000830152611e3a81611b64565b9050919050565b60006020820190508181036000830152611e5a81611bca565b9050919050565b60006020820190508181036000830152611e7a81611c0a565b9050919050565b6000602082019050611e966000830184611c70565b92915050565b6000602082019050611eb16000830184611c7f565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611ede82612026565b9150611ee983612026565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611f1e57611f1d6120c6565b5b828201905092915050565b6000611f3482612026565b9150611f3f83612026565b925082611f4f57611f4e6120f5565b5b828204905092915050565b6000611f6582612026565b9150611f7083612026565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611fa957611fa86120c6565b5b828202905092915050565b6000611fbf82612026565b9150611fca83612026565b925082821015611fdd57611fdc6120c6565b5b828203905092915050565b6000611ff382612006565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006120488261204f565b9050919050565b600061205a82612006565b9050919050565b60005b8381101561207f578082015181840152602081019050612064565b8381111561208e576000848401525b50505050565b600060028204905060018216806120ac57607f821691505b602082108114156120c0576120bf612124565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b61216d81611fe8565b811461217857600080fd5b50565b61218481612026565b811461218f57600080fd5b5056fea2646970667358221220cb178e6a13fa01399d067fe74653612fbf0fae3dabe40308b71c6cf80f7d9ff364736f6c63430008000033