60806040526040518060400160405280600881526020017f4861736847616d65000000000000000000000000000000000000000000000000815250600090816200004a9190620003fc565b506040518060400160405280600481526020017f486173680000000000000000000000000000000000000000000000000000000081525060019081620000919190620003fc565b506012600260006101000a81548160ff021916908360ff1602179055506b06c9144c1c690d4cb4000000600355348015620000cb57600080fd5b50600354600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600354604051620001749190620004f4565b60405180910390a362000511565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200020457607f821691505b6020821081036200021a5762000219620001bc565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000245565b62000290868362000245565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620002dd620002d7620002d184620002a8565b620002b2565b620002a8565b9050919050565b6000819050919050565b620002f983620002bc565b620003116200030882620002e4565b84845462000252565b825550505050565b600090565b6200032862000319565b62000335818484620002ee565b505050565b5b818110156200035d57620003516000826200031e565b6001810190506200033b565b5050565b601f821115620003ac57620003768162000220565b620003818462000235565b8101602085101562000391578190505b620003a9620003a08562000235565b8301826200033a565b50505b505050565b600082821c905092915050565b6000620003d160001984600802620003b1565b1980831691505092915050565b6000620003ec8383620003be565b9150826002028217905092915050565b620004078262000182565b67ffffffffffffffff8111156200042357620004226200018d565b5b6200042f8254620001eb565b6200043c82828562000361565b600060209050601f8311600181146200047457600084156200045f578287015190505b6200046b8582620003de565b865550620004db565b601f198416620004848662000220565b60005b82811015620004ae5784890151825560018201915060208501945060208101905062000487565b86831015620004ce5784890151620004ca601f891682620003be565b8355505b6001600288020188555050505b505050505050565b620004ee81620002a8565b82525050565b60006020820190506200050b6000830184620004e3565b92915050565b6113ce80620005216000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad9190610d75565b60405180910390f35b6100d060048036038101906100cb9190610e30565b61028e565b6040516100dd9190610e8b565b60405180910390f35b6100ee6103ee565b6040516100fb9190610eb5565b60405180910390f35b61011e60048036038101906101199190610ed0565b6103f4565b60405161012b9190610e8b565b60405180910390f35b61013c6108bd565b6040516101499190610f3f565b60405180910390f35b61016c60048036038101906101679190610f5a565b6108d0565b6040516101799190610eb5565b60405180910390f35b61018a610919565b6040516101979190610d75565b60405180910390f35b6101ba60048036038101906101b59190610e30565b6109a7565b6040516101c79190610e8b565b60405180910390f35b6101ea60048036038101906101e59190610f87565b610c32565b6040516101f79190610eb5565b60405180910390f35b6000805461020d90610ff6565b80601f016020809104026020016040519081016040528092919081815260200182805461023990610ff6565b80156102865780601f1061025b57610100808354040283529160200191610286565b820191906000526020600020905b81548152906001019060200180831161026957829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036102fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f590611099565b60405180910390fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103dc9190610eb5565b60405180910390a36001905092915050565b60035481565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045b9061112b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ca906111bd565b60405180910390fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054c9061124f565b60405180910390fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060b906112e1565b60405180910390fd5b61066682600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cb990919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506106fb82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ccf90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506107cd82600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cb990919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516108aa9190610eb5565b60405180910390a3600190509392505050565b600260009054906101000a900460ff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6001805461092690610ff6565b80601f016020809104026020016040519081016040528092919081815260200182805461095290610ff6565b801561099f5780601f106109745761010080835404028352916020019161099f565b820191906000526020600020905b81548152906001019060200180831161098257829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0e906111bd565b60405180910390fd5b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a909061124f565b60405180910390fd5b610aeb82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cb990919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b8082600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ccf90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c209190610eb5565b60405180910390a36001905092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008183610cc79190611330565b905092915050565b60008183610cdd9190611364565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610d1f578082015181840152602081019050610d04565b60008484015250505050565b6000601f19601f8301169050919050565b6000610d4782610ce5565b610d518185610cf0565b9350610d61818560208601610d01565b610d6a81610d2b565b840191505092915050565b60006020820190508181036000830152610d8f8184610d3c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610dc782610d9c565b9050919050565b610dd781610dbc565b8114610de257600080fd5b50565b600081359050610df481610dce565b92915050565b6000819050919050565b610e0d81610dfa565b8114610e1857600080fd5b50565b600081359050610e2a81610e04565b92915050565b60008060408385031215610e4757610e46610d97565b5b6000610e5585828601610de5565b9250506020610e6685828601610e1b565b9150509250929050565b60008115159050919050565b610e8581610e70565b82525050565b6000602082019050610ea06000830184610e7c565b92915050565b610eaf81610dfa565b82525050565b6000602082019050610eca6000830184610ea6565b92915050565b600080600060608486031215610ee957610ee8610d97565b5b6000610ef786828701610de5565b9350506020610f0886828701610de5565b9250506040610f1986828701610e1b565b9150509250925092565b600060ff82169050919050565b610f3981610f23565b82525050565b6000602082019050610f546000830184610f30565b92915050565b600060208284031215610f7057610f6f610d97565b5b6000610f7e84828501610de5565b91505092915050565b60008060408385031215610f9e57610f9d610d97565b5b6000610fac85828601610de5565b9250506020610fbd85828601610de5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061100e57607f821691505b60208210810361102157611020610fc7565b5b50919050565b7f4861736847616d653a20617070726f766520746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611083602583610cf0565b915061108e82611027565b604082019050919050565b600060208201905081810360008301526110b281611076565b9050919050565b7f4861736847616d653a207472616e736665722066726f6d20746865207a65726f60008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b6000611115602883610cf0565b9150611120826110b9565b604082019050919050565b6000602082019050818103600083015261114481611108565b9050919050565b7f4861736847616d653a207472616e7366657220746f20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006111a7602683610cf0565b91506111b28261114b565b604082019050919050565b600060208201905081810360008301526111d68161119a565b9050919050565b7f4861736847616d653a207472616e7366657220616d6f756e742065786365656460008201527f732062616c616e63650000000000000000000000000000000000000000000000602082015250565b6000611239602983610cf0565b9150611244826111dd565b604082019050919050565b600060208201905081810360008301526112688161122c565b9050919050565b7f4861736847616d653a207472616e7366657220616d6f756e742065786365656460008201527f7320616c6c6f77616e6365000000000000000000000000000000000000000000602082015250565b60006112cb602b83610cf0565b91506112d68261126f565b604082019050919050565b600060208201905081810360008301526112fa816112be565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061133b82610dfa565b915061134683610dfa565b925082820390508181111561135e5761135d611301565b5b92915050565b600061136f82610dfa565b915061137a83610dfa565b925082820190508082111561139257611391611301565b5b9291505056fea26469706673582212205dc916924a13226ac78590d9d681e0e704615eb0ab62b9b1e95b5700afe7148664736f6c63430008130033