0x60806040526000600260006101000a81548160ff02191690831515021790555034801561002b57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3611dd0806100f66000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806370a08231116100ad578063a9059cbb11610071578063a9059cbb146102f6578063dd62ed3e14610326578063f2fde38b14610356578063f3bdc22814610372578063fe575a871461038e57610121565b806370a0823114610264578063715018a6146102945780638456cb591461029e5780638da5cb5b146102a8578063a457c2d7146102c657610121565b80632f54bf6e116100f45780632f54bf6e146101c057806339509351146101f05780633f4ba83a1461022057806342966c681461022a5780635c975abb1461024657610121565b8063095ea7b31461012657806318160ddd1461015657806323b872dd146101745780632d5a5d34146101a4575b600080fd5b610140600480360381019061013b9190611727565b6103be565b60405161014d9190611782565b60405180910390f35b61015e610523565b60405161016b91906117ac565b60405180910390f35b61018e600480360381019061018991906117c7565b61052d565b60405161019b9190611782565b60405180910390f35b6101be60048036038101906101b99190611846565b610697565b005b6101da60048036038101906101d59190611886565b61073a565b6040516101e79190611782565b60405180910390f35b61020a60048036038101906102059190611727565b610793565b6040516102179190611782565b60405180910390f35b6102286109f2565b005b610244600480360381019061023f91906118b3565b610a9c565b005b61024e610af1565b60405161025b9190611782565b60405180910390f35b61027e60048036038101906102799190611886565b610b04565b60405161028b91906117ac565b60405180910390f35b61029c610b4d565b005b6102a6610c53565b005b6102b0610cfe565b6040516102bd91906118ef565b60405180910390f35b6102e060048036038101906102db9190611727565b610d27565b6040516102ed9190611782565b60405180910390f35b610310600480360381019061030b9190611727565b610f86565b60405161031d9190611782565b60405180910390f35b610340600480360381019061033b919061190a565b610f9d565b60405161034d91906117ac565b60405180910390f35b610370600480360381019061036b9190611886565b611024565b005b61038c60048036038101906103879190611886565b611078565b005b6103a860048036038101906103a39190611886565b6111fc565b6040516103b59190611782565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103f957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561043357600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161051191906117ac565b60405180910390a36001905092915050565b6000600554905090565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e5906119a7565b60405180910390fd5b6105f9848484611252565b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461068591906119f6565b92505081905550600190509392505050565b6106a03361073a565b6106df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d690611a76565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fb90611ae2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086b90611b74565b60405180910390fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109009190611b94565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516109e091906117ac565b60405180910390a36001905092915050565b6109fb3361073a565b610a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3190611a76565b60405180910390fd5b600260009054906101000a900460ff16610a5357600080fd5b6000600260006101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b610aa53361073a565b610ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adb90611a76565b60405180910390fd5b610aee3382611484565b50565b600260009054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b563361073a565b610b95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8c90611a76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c5c3361073a565b610c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9290611a76565b60405180910390fd5b600260009054906101000a900460ff1615610cb557600080fd5b6001600260006101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8f90611ae2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dff90611b74565b60405180910390fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e9491906119f6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051610f7491906117ac565b60405180910390a36001905092915050565b6000610f93338484611252565b6001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61102d3361073a565b61106c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106390611a76565b60405180910390fd5b61107581611597565b50565b6110813361073a565b6110c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b790611a76565b60405180910390fd5b6110c9816111fc565b611108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ff90611c36565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008282546111a391906119f6565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167f61e6e66b0d6339b2980aecc6ccc0039736791f0ccde9ed512e789a7fbdd698c6826040516111f091906117ac565b60405180910390a25050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600260009054906101000a900460ff161561126c57600080fd5b611275836111fc565b156112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ac90611ca2565b60405180910390fd5b6112be826111fc565b156112fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f590611d0e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561136e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136590611d7a565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113bd91906119f6565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114139190611b94565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161147791906117ac565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114be57600080fd5b80600560008282546114d091906119f6565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461152691906119f6565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161158b91906117ac565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115d157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006116be82611693565b9050919050565b6116ce816116b3565b81146116d957600080fd5b50565b6000813590506116eb816116c5565b92915050565b6000819050919050565b611704816116f1565b811461170f57600080fd5b50565b600081359050611721816116fb565b92915050565b6000806040838503121561173e5761173d61168e565b5b600061174c858286016116dc565b925050602061175d85828601611712565b9150509250929050565b60008115159050919050565b61177c81611767565b82525050565b60006020820190506117976000830184611773565b92915050565b6117a6816116f1565b82525050565b60006020820190506117c1600083018461179d565b92915050565b6000806000606084860312156117e0576117df61168e565b5b60006117ee868287016116dc565b93505060206117ff868287016116dc565b925050604061181086828701611712565b9150509250925092565b61182381611767565b811461182e57600080fd5b50565b6000813590506118408161181a565b92915050565b6000806040838503121561185d5761185c61168e565b5b600061186b858286016116dc565b925050602061187c85828601611831565b9150509250929050565b60006020828403121561189c5761189b61168e565b5b60006118aa848285016116dc565b91505092915050565b6000602082840312156118c9576118c861168e565b5b60006118d784828501611712565b91505092915050565b6118e9816116b3565b82525050565b600060208201905061190460008301846118e0565b92915050565b600080604083850312156119215761192061168e565b5b600061192f858286016116dc565b9250506020611940858286016116dc565b9150509250929050565b600082825260208201905092915050565b7f4e6f7420616c6c6f77656420746f207370656e64000000000000000000000000600082015250565b600061199160148361194a565b915061199c8261195b565b602082019050919050565b600060208201905081810360008301526119c081611984565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611a01826116f1565b9150611a0c836116f1565b925082821015611a1f57611a1e6119c7565b5b828203905092915050565b7f417661696c61626c65206f6e6c7920666f72206f776e65720000000000000000600082015250565b6000611a6060188361194a565b9150611a6b82611a2a565b602082019050919050565b60006020820190508181036000830152611a8f81611a53565b9050919050565b7f5370656e646572207a65726f20616464726573732070726f6869626974656400600082015250565b6000611acc601f8361194a565b9150611ad782611a96565b602082019050919050565b60006020820190508181036000830152611afb81611abf565b9050919050565b7f5a65726f206164647265737320636f756c64206e6f742063616c6c206d65746860008201527f6f64000000000000000000000000000000000000000000000000000000000000602082015250565b6000611b5e60228361194a565b9150611b6982611b02565b604082019050919050565b60006020820190508181036000830152611b8d81611b51565b9050919050565b6000611b9f826116f1565b9150611baa836116f1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611bdf57611bde6119c7565b5b828201905092915050565b7f41646472657373206973206e6f7420696e20626c61636b6c6973740000000000600082015250565b6000611c20601b8361194a565b9150611c2b82611bea565b602082019050919050565b60006020820190508181036000830152611c4f81611c13565b9050919050565b7f53656e646572206164647265737320696e20626c61636b6c6973740000000000600082015250565b6000611c8c601b8361194a565b9150611c9782611c56565b602082019050919050565b60006020820190508181036000830152611cbb81611c7f565b9050919050565b7f5265636569766572206164647265737320696e20626c61636b6c697374000000600082015250565b6000611cf8601d8361194a565b9150611d0382611cc2565b602082019050919050565b60006020820190508181036000830152611d2781611ceb565b9050919050565b7f5a65726f20616464726573732063616e206e6f74206265207265636569766572600082015250565b6000611d6460208361194a565b9150611d6f82611d2e565b602082019050919050565b60006020820190508181036000830152611d9381611d57565b905091905056fea2646970667358221220641b4171fab26073623f3bb540e233fa5a8fd14e0687b7af4591737825d67b0964736f6c634300080c0033