0x60806040523480156200001157600080fd5b506040518060400160405280600881526020017f5768697465426f780000000000000000000000000000000000000000000000008152506000908162000058919062000478565b506040518060400160405280600581526020017f77424f5874000000000000000000000000000000000000000000000000000000815250600190816200009f919062000478565b506012600260006101000a81548160ff021916908360ff160217905550600260009054906101000a900460ff1660ff16600a620000dd9190620006e2565b62989680620000ed919062000733565b600381905550734ce4cdc58f1293cfbd0a915d7a63ada4d566672b600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600354600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600354604051620001f091906200078f565b60405180910390a3620007ac565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200028057607f821691505b60208210810362000296576200029562000238565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002c1565b6200030c8683620002c1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000359620003536200034d8462000324565b6200032e565b62000324565b9050919050565b6000819050919050565b620003758362000338565b6200038d620003848262000360565b848454620002ce565b825550505050565b600090565b620003a462000395565b620003b18184846200036a565b505050565b5b81811015620003d957620003cd6000826200039a565b600181019050620003b7565b5050565b601f8211156200042857620003f2816200029c565b620003fd84620002b1565b810160208510156200040d578190505b620004256200041c85620002b1565b830182620003b6565b50505b505050565b600082821c905092915050565b60006200044d600019846008026200042d565b1980831691505092915050565b60006200046883836200043a565b9150826002028217905092915050565b6200048382620001fe565b67ffffffffffffffff8111156200049f576200049e62000209565b5b620004ab825462000267565b620004b8828285620003dd565b600060209050601f831160018114620004f05760008415620004db578287015190505b620004e785826200045a565b86555062000557565b601f19841662000500866200029c565b60005b828110156200052a5784890151825560018201915060208501945060208101905062000503565b868310156200054a578489015162000546601f8916826200043a565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620005ed57808604811115620005c557620005c46200055f565b5b6001851615620005d55780820291505b8081029050620005e5856200058e565b9450620005a5565b94509492505050565b600082620006085760019050620006db565b81620006185760009050620006db565b81600181146200063157600281146200063c5762000672565b6001915050620006db565b60ff8411156200065157620006506200055f565b5b8360020a9150848211156200066b576200066a6200055f565b5b50620006db565b5060208310610133831016604e8410600b8410161715620006ac5782820a905083811115620006a657620006a56200055f565b5b620006db565b620006bb84848460016200059b565b92509050818404811115620006d557620006d46200055f565b5b81810290505b9392505050565b6000620006ef8262000324565b9150620006fc8362000324565b92506200072b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005f6565b905092915050565b6000620007408262000324565b91506200074d8362000324565b92508282026200075d8162000324565b915082820484148315176200077757620007766200055f565b5b5092915050565b620007898162000324565b82525050565b6000602082019050620007a660008301846200077e565b92915050565b6113a480620007bc6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c681461016857806370a082311461019857806395d89b41146101c8578063a9059cbb146101e6578063b7bda68f14610216578063dd62ed3e14610234576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610264565b6040516100c39190610e96565b60405180910390f35b6100e660048036038101906100e19190610f51565b6102f2565b6040516100f39190610fac565b60405180910390f35b6101046103e4565b6040516101119190610fd6565b60405180910390f35b610134600480360381019061012f9190610ff1565b6103ea565b6040516101419190610fac565b60405180910390f35b6101526107fe565b60405161015f9190611060565b60405180910390f35b610182600480360381019061017d919061107b565b610811565b60405161018f9190610fac565b60405180910390f35b6101b260048036038101906101ad91906110a8565b6109c1565b6040516101bf9190610fd6565b60405180910390f35b6101d0610a0a565b6040516101dd9190610e96565b60405180910390f35b61020060048036038101906101fb9190610f51565b610a98565b60405161020d9190610fac565b60405180910390f35b61021e610d59565b60405161022b91906110e4565b60405180910390f35b61024e600480360381019061024991906110ff565b610d7f565b60405161025b9190610fd6565b60405180910390f35b600080546102719061116e565b80601f016020809104026020016040519081016040528092919081815260200182805461029d9061116e565b80156102ea5780601f106102bf576101008083540402835291602001916102ea565b820191906000526020600020905b8154815290600101906020018083116102cd57829003601f168201915b505050505081565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103d29190610fd6565b60405180910390a36001905092915050565b60035481565b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561046e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610465906111eb565b60405180910390fd5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561052d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052490611257565b60405180910390fd5b600060648361053c91906112d5565b90506000818461054c9190611306565b905083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461059d9190611306565b9250508190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105f3919061133a565b925050819055508160056000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461066b919061133a565b9250508190555083600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106fe9190611306565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107629190610fd6565b60405180910390a3600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107e99190610fd6565b60405180910390a36001925050509392505050565b600260009054906101000a900460ff1681565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088c906111eb565b60405180910390fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108e49190611306565b9250508190555081600360008282546108fd9190611306565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58360405161094a9190610fd6565b60405180910390a2600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516109b09190610fd6565b60405180910390a360019050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60018054610a179061116e565b80601f0160208091040260200160405190810160405280929190818152602001828054610a439061116e565b8015610a905780601f10610a6557610100808354040283529160200191610a90565b820191906000526020600020905b815481529060010190602001808311610a7357829003601f168201915b505050505081565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b13906111eb565b60405180910390fd5b6000606483610b2b91906112d5565b905060008184610b3b9190611306565b905083600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b8c9190611306565b9250508190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610be2919061133a565b925050819055508160056000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c5a919061133a565b925050819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610cbe9190610fd6565b60405180910390a3600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d459190610fd6565b60405180910390a360019250505092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610e40578082015181840152602081019050610e25565b60008484015250505050565b6000601f19601f8301169050919050565b6000610e6882610e06565b610e728185610e11565b9350610e82818560208601610e22565b610e8b81610e4c565b840191505092915050565b60006020820190508181036000830152610eb08184610e5d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ee882610ebd565b9050919050565b610ef881610edd565b8114610f0357600080fd5b50565b600081359050610f1581610eef565b92915050565b6000819050919050565b610f2e81610f1b565b8114610f3957600080fd5b50565b600081359050610f4b81610f25565b92915050565b60008060408385031215610f6857610f67610eb8565b5b6000610f7685828601610f06565b9250506020610f8785828601610f3c565b9150509250929050565b60008115159050919050565b610fa681610f91565b82525050565b6000602082019050610fc16000830184610f9d565b92915050565b610fd081610f1b565b82525050565b6000602082019050610feb6000830184610fc7565b92915050565b60008060006060848603121561100a57611009610eb8565b5b600061101886828701610f06565b935050602061102986828701610f06565b925050604061103a86828701610f3c565b9150509250925092565b600060ff82169050919050565b61105a81611044565b82525050565b60006020820190506110756000830184611051565b92915050565b60006020828403121561109157611090610eb8565b5b600061109f84828501610f3c565b91505092915050565b6000602082840312156110be576110bd610eb8565b5b60006110cc84828501610f06565b91505092915050565b6110de81610edd565b82525050565b60006020820190506110f960008301846110d5565b92915050565b6000806040838503121561111657611115610eb8565b5b600061112485828601610f06565b925050602061113585828601610f06565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061118657607f821691505b6020821081036111995761119861113f565b5b50919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b60006111d5601483610e11565b91506111e08261119f565b602082019050919050565b60006020820190508181036000830152611204816111c8565b9050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b6000611241601683610e11565b915061124c8261120b565b602082019050919050565b6000602082019050818103600083015261127081611234565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006112e082610f1b565b91506112eb83610f1b565b9250826112fb576112fa611277565b5b828204905092915050565b600061131182610f1b565b915061131c83610f1b565b9250828203905081811115611334576113336112a6565b5b92915050565b600061134582610f1b565b915061135083610f1b565b9250828201905080821115611368576113676112a6565b5b9291505056fea2646970667358221220c480c1ac4b1ea006a499f0543ecf5eac863add11a8b303499491a90e04c2216064736f6c63430008120033