0x608060405234801561001057600080fd5b50600436106100415760003560e01c806361ff715f14610046578063aaf10f4214610062578063e21a1c7814610080575b600080fd5b610060600480360381019061005b91906104d8565b6100b0565b005b61006a6102dc565b6040516100779190610669565b60405180910390f35b61009a60048036038101906100959190610497565b610342565b6040516100a79190610684565b60405180910390f35b7320ff954bc8eb2dafdf9e630084d8ff9c2fea169f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146100fc57600080fd5b600082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060006040518060400160405280601d81526020017f5860208158601c335a63aaf10f428752fa158151803b80938091923cf30000008152509050600061018b8683610372565b9050600083602001845180826000f092505050806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008360200184518981836000f5925050508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461029b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102929061069f565b60405180910390fd5b7ff40fcec21964ffb566044d083b4073f29f7f7929110ea19e1b3ebe375d89055e816040516102ca9190610669565b60405180910390a15050505050505050565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081604051602001610355919061060a565b604051602081830303815290604052805190602001209050919050565b6000308383604051602001610387919061060a565b604051602081830303815290604052805190602001206040516020016103af93929190610621565b6040516020818303038152906040528051906020012060001c905092915050565b60006103e36103de846106e4565b6106bf565b9050828152602081018484840111156103fb57600080fd5b61040684828561078d565b509392505050565b60008083601f84011261042057600080fd5b8235905067ffffffffffffffff81111561043957600080fd5b60208301915083600182028301111561045157600080fd5b9250929050565b600082601f83011261046957600080fd5b81356104798482602086016103d0565b91505092915050565b600081359050610491816108fd565b92915050565b6000602082840312156104a957600080fd5b600082013567ffffffffffffffff8111156104c357600080fd5b6104cf84828501610458565b91505092915050565b6000806000604084860312156104ed57600080fd5b60006104fb86828701610482565b935050602084013567ffffffffffffffff81111561051857600080fd5b6105248682870161040e565b92509250509250925092565b61053981610747565b82525050565b61055061054b82610747565b610800565b82525050565b61055f81610759565b82525050565b61057661057182610759565b610812565b82525050565b600061058782610715565b6105918185610720565b93506105a181856020860161079c565b80840191505092915050565b60006105ba60018361073c565b91506105c582610885565b600182019050919050565b60006105dd602e8361072b565b91506105e8826108ae565b604082019050919050565b6106046105ff82610783565b61082e565b82525050565b6000610616828461057c565b915081905092915050565b600061062c826105ad565b9150610638828661053f565b60148201915061064882856105f3565b6020820191506106588284610565565b602082019150819050949350505050565b600060208201905061067e6000830184610530565b92915050565b60006020820190506106996000830184610556565b92915050565b600060208201905081810360008301526106b8816105d0565b9050919050565b60006106c96106da565b90506106d582826107cf565b919050565b6000604051905090565b600067ffffffffffffffff8211156106ff576106fe610838565b5b61070882610867565b9050602081019050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061075282610763565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156107ba57808201518184015260208101905061079f565b838111156107c9576000848401525b50505050565b6107d882610867565b810181811067ffffffffffffffff821117156107f7576107f6610838565b5b80604052505050565b600061080b8261081c565b9050919050565b6000819050919050565b600061082782610878565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7fff00000000000000000000000000000000000000000000000000000000000000600082015250565b7f4661696c656420746f206465706c6f7920746865206e6577206d6574616d6f7260008201527f7068696320636f6e74726163742e000000000000000000000000000000000000602082015250565b61090681610783565b811461091157600080fd5b5056fea2646970667358221220f05c57074445a0800e21cae7d15e1d9cc1bf659c0e5692aaa3be5b8b7aad428064736f6c63430008010033