0x6080604052670de0b6b3a76400006002556040518060400160405280600c81526020017f446f6765417274546f6b656e0000000000000000000000000000000000000000815250600390816200005691906200038d565b506040518060400160405280600381526020017f4441540000000000000000000000000000000000000000000000000000000000815250600490816200009d91906200038d565b506012600560006101000a81548160ff021916908360ff160217905550348015620000c757600080fd5b506002546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000474565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200019557607f821691505b602082108103620001ab57620001aa6200014d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620001d6565b620002218683620001d6565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200026e62000268620002628462000239565b62000243565b62000239565b9050919050565b6000819050919050565b6200028a836200024d565b620002a2620002998262000275565b848454620001e3565b825550505050565b600090565b620002b9620002aa565b620002c68184846200027f565b505050565b5b81811015620002ee57620002e2600082620002af565b600181019050620002cc565b5050565b601f8211156200033d576200030781620001b1565b6200031284620001c6565b8101602085101562000322578190505b6200033a6200033185620001c6565b830182620002cb565b50505b505050565b600082821c905092915050565b6000620003626000198460080262000342565b1980831691505092915050565b60006200037d83836200034f565b9150826002028217905092915050565b620003988262000113565b67ffffffffffffffff811115620003b457620003b36200011e565b5b620003c082546200017c565b620003cd828285620002f2565b600060209050601f831160018114620004055760008415620003f0578287015190505b620003fc85826200036f565b8655506200046c565b601f1984166200041586620001b1565b60005b828110156200043f5784890151825560018201915060208501945060208101905062000418565b868310156200045f57848901516200045b601f8916826200034f565b8355505b6001600288020188555050505b505050505050565b610e6080620004846000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806327e235e31161007157806327e235e314610166578063313ce5671461019657806370a08231146101b457806395d89b41146101e4578063a9059cbb14610202578063dd62ed3e14610232576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806313af4035146100fc57806318160ddd1461011857806323b872dd14610136575b600080fd5b6100b6610262565b6040516100c39190610a09565b60405180910390f35b6100e660048036038101906100e19190610ac4565b6102f0565b6040516100f39190610b1f565b60405180910390f35b61011660048036038101906101119190610b3a565b6103e2565b005b6101206103e5565b60405161012d9190610b76565b60405180910390f35b610150600480360381019061014b9190610b91565b6103eb565b60405161015d9190610b1f565b60405180910390f35b610180600480360381019061017b9190610b3a565b61067f565b60405161018d9190610b76565b60405180910390f35b61019e610697565b6040516101ab9190610c00565b60405180910390f35b6101ce60048036038101906101c99190610b3a565b6106aa565b6040516101db9190610b76565b60405180910390f35b6101ec6106f2565b6040516101f99190610a09565b60405180910390f35b61021c60048036038101906102179190610ac4565b610780565b6040516102299190610b1f565b60405180910390f35b61024c60048036038101906102479190610c1b565b610954565b6040516102599190610b76565b60405180910390f35b6003805461026f90610c8a565b80601f016020809104026020016040519081016040528092919081815260200182805461029b90610c8a565b80156102e85780601f106102bd576101008083540402835291602001916102e8565b820191906000526020600020905b8154815290600101906020018083116102cb57829003601f168201915b505050505081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103d09190610b76565b60405180910390a36001905092915050565b50565b60025481565b6000816103f7856106aa565b1015610438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042f90610d07565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156104f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee90610d73565b60405180910390fd5b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105419190610dc2565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105cd9190610df6565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161066c9190610b76565b60405180910390a3600190509392505050565b60006020528060005260406000206000915090505481565b600560009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600480546106ff90610c8a565b80601f016020809104026020016040519081016040528092919081815260200182805461072b90610c8a565b80156107785780601f1061074d57610100808354040283529160200191610778565b820191906000526020600020905b81548152906001019060200180831161075b57829003601f168201915b505050505081565b60008161078c336106aa565b10156107cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c490610d07565b60405180910390fd5b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108179190610dc2565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108a39190610df6565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516109429190610b76565b60405180910390a36001905092915050565b6001602052816000526040600020602052806000526040600020600091509150505481565b600081519050919050565b600082825260208201905092915050565b60005b838110156109b3578082015181840152602081019050610998565b60008484015250505050565b6000601f19601f8301169050919050565b60006109db82610979565b6109e58185610984565b93506109f5818560208601610995565b6109fe816109bf565b840191505092915050565b60006020820190508181036000830152610a2381846109d0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610a5b82610a30565b9050919050565b610a6b81610a50565b8114610a7657600080fd5b50565b600081359050610a8881610a62565b92915050565b6000819050919050565b610aa181610a8e565b8114610aac57600080fd5b50565b600081359050610abe81610a98565b92915050565b60008060408385031215610adb57610ada610a2b565b5b6000610ae985828601610a79565b9250506020610afa85828601610aaf565b9150509250929050565b60008115159050919050565b610b1981610b04565b82525050565b6000602082019050610b346000830184610b10565b92915050565b600060208284031215610b5057610b4f610a2b565b5b6000610b5e84828501610a79565b91505092915050565b610b7081610a8e565b82525050565b6000602082019050610b8b6000830184610b67565b92915050565b600080600060608486031215610baa57610ba9610a2b565b5b6000610bb886828701610a79565b9350506020610bc986828701610a79565b9250506040610bda86828701610aaf565b9150509250925092565b600060ff82169050919050565b610bfa81610be4565b82525050565b6000602082019050610c156000830184610bf1565b92915050565b60008060408385031215610c3257610c31610a2b565b5b6000610c4085828601610a79565b9250506020610c5185828601610a79565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610ca257607f821691505b602082108103610cb557610cb4610c5b565b5b50919050565b7f42616c616e636520746f6f206c6f770000000000000000000000000000000000600082015250565b6000610cf1600f83610984565b9150610cfc82610cbb565b602082019050919050565b60006020820190508181036000830152610d2081610ce4565b9050919050565b7f416c6c6f77616e636520746f6f206c6f77000000000000000000000000000000600082015250565b6000610d5d601183610984565b9150610d6882610d27565b602082019050919050565b60006020820190508181036000830152610d8c81610d50565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610dcd82610a8e565b9150610dd883610a8e565b9250828201905080821115610df057610def610d93565b5b92915050565b6000610e0182610a8e565b9150610e0c83610a8e565b9250828203905081811115610e2457610e23610d93565b5b9291505056fea2646970667358221220414010ee267783f84ff8b8964ff99bbe9eb6d2393d04de55f9ab34f2d7c7a86564736f6c63430008110033