0x60806040526040518060400160405280600581526020017f5455534443000000000000000000000000000000000000000000000000000000815250600090816200004a91906200033c565b506040518060400160405280600581526020017f5455534443000000000000000000000000000000000000000000000000000000815250600190816200009191906200033c565b506012600260006101000a81548160ff021916908360ff160217905550348015620000bb57600080fd5b5062000423565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200014457607f821691505b6020821081036200015a5762000159620000fc565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000185565b620001d0868362000185565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200021d620002176200021184620001e8565b620001f2565b620001e8565b9050919050565b6000819050919050565b6200023983620001fc565b62000251620002488262000224565b84845462000192565b825550505050565b600090565b6200026862000259565b620002758184846200022e565b505050565b5b818110156200029d57620002916000826200025e565b6001810190506200027b565b5050565b601f821115620002ec57620002b68162000160565b620002c18462000175565b81016020851015620002d1578190505b620002e9620002e08562000175565b8301826200027a565b50505b505050565b600082821c905092915050565b60006200031160001984600802620002f1565b1980831691505092915050565b60006200032c8383620002fe565b9150826002028217905092915050565b6200034782620000c2565b67ffffffffffffffff811115620003635762000362620000cd565b5b6200036f82546200012b565b6200037c828285620002a1565b600060209050601f831160018114620003b457600084156200039f578287015190505b620003ab85826200031e565b8655506200041b565b601f198416620003c48662000160565b60005b82811015620003ee57848901518255600182019150602085019450602081019050620003c7565b868310156200040e57848901516200040a601f891682620002fe565b8355505b6001600288020188555050505b505050505050565b610dfb80620004336000396000f3fe6080604052600436106100a05760003560e01c8063313ce56711610064578063313ce567146101ad57806370a08231146101d857806395d89b4114610215578063a9059cbb14610240578063d0e30db01461027d578063dd62ed3e14610287576100af565b806306fdde03146100b4578063095ea7b3146100df57806318160ddd1461011c57806323b872dd146101475780632e1a7d4d14610184576100af565b366100af576100ad6102c4565b005b600080fd5b3480156100c057600080fd5b506100c9610361565b6040516100d69190610ae6565b60405180910390f35b3480156100eb57600080fd5b5061010660048036038101906101019190610ba1565b6103ef565b6040516101139190610bfc565b60405180910390f35b34801561012857600080fd5b506101316104e1565b60405161013e9190610c26565b60405180910390f35b34801561015357600080fd5b5061016e60048036038101906101699190610c41565b6104e9565b60405161017b9190610bfc565b60405180910390f35b34801561019057600080fd5b506101ab60048036038101906101a69190610c94565b610832565b005b3480156101b957600080fd5b506101c2610963565b6040516101cf9190610cdd565b60405180910390f35b3480156101e457600080fd5b506101ff60048036038101906101fa9190610cf8565b610976565b60405161020c9190610c26565b60405180910390f35b34801561022157600080fd5b5061022a61098e565b6040516102379190610ae6565b60405180910390f35b34801561024c57600080fd5b5061026760048036038101906102629190610ba1565b610a1c565b6040516102749190610bfc565b60405180910390f35b6102856102c4565b005b34801561029357600080fd5b506102ae60048036038101906102a99190610d25565b610a31565b6040516102bb9190610c26565b60405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040516103579190610c26565b60405180910390a2565b6000805461036e90610d94565b80601f016020809104026020016040519081016040528092919081815260200182805461039a90610d94565b80156103e75780601f106103bc576101008083540402835291602001916103e7565b820191906000526020600020905b8154815290600101906020018083116103ca57829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104cf9190610c26565b60405180910390a36001905092915050565b600047905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561053757600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561060f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156107285781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561069d57600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161081f9190610c26565b60405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561087e57600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610911573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040516109589190610c26565b60405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b6001805461099b90610d94565b80601f01602080910402602001604051908101604052809291908181526020018280546109c790610d94565b8015610a145780601f106109e957610100808354040283529160200191610a14565b820191906000526020600020905b8154815290600101906020018083116109f757829003601f168201915b505050505081565b6000610a293384846104e9565b905092915050565b6004602052816000526040600020602052806000526040600020600091509150505481565b600081519050919050565b600082825260208201905092915050565b60005b83811015610a90578082015181840152602081019050610a75565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ab882610a56565b610ac28185610a61565b9350610ad2818560208601610a72565b610adb81610a9c565b840191505092915050565b60006020820190508181036000830152610b008184610aad565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b3882610b0d565b9050919050565b610b4881610b2d565b8114610b5357600080fd5b50565b600081359050610b6581610b3f565b92915050565b6000819050919050565b610b7e81610b6b565b8114610b8957600080fd5b50565b600081359050610b9b81610b75565b92915050565b60008060408385031215610bb857610bb7610b08565b5b6000610bc685828601610b56565b9250506020610bd785828601610b8c565b9150509250929050565b60008115159050919050565b610bf681610be1565b82525050565b6000602082019050610c116000830184610bed565b92915050565b610c2081610b6b565b82525050565b6000602082019050610c3b6000830184610c17565b92915050565b600080600060608486031215610c5a57610c59610b08565b5b6000610c6886828701610b56565b9350506020610c7986828701610b56565b9250506040610c8a86828701610b8c565b9150509250925092565b600060208284031215610caa57610ca9610b08565b5b6000610cb884828501610b8c565b91505092915050565b600060ff82169050919050565b610cd781610cc1565b82525050565b6000602082019050610cf26000830184610cce565b92915050565b600060208284031215610d0e57610d0d610b08565b5b6000610d1c84828501610b56565b91505092915050565b60008060408385031215610d3c57610d3b610b08565b5b6000610d4a85828601610b56565b9250506020610d5b85828601610b56565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610dac57607f821691505b602082108103610dbf57610dbe610d65565b5b5091905056fea2646970667358221220eac9457fbe4b16d07844cdc81e257dcf24b0fb3265fd39eab78f070390443bf464736f6c63430008120033