0x6080604052348015600e575f80fd5b50335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a908061005b5f395ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c806339df43ff14610038578063bc6f3c3014610054575b5f80fd5b610052600480360381019061004d91906104a8565b610084565b005b61006e60048036038101906100699190610541565b61012a565b60405161007b919061065c565b60405180910390f35b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610111576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610108906106d6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16ff5b60605f83836101399190610721565b90505f6001826101499190610754565b67ffffffffffffffff81111561016257610161610787565b5b6040519080825280602002602001820160405280156101905781602001602082028036833780820191505090505b5090505f805b838111610393575f81886101aa9190610754565b90505f8973ffffffffffffffffffffffffffffffffffffffff166347d96ecc836040518263ffffffff1660e01b81526004016101e691906107c3565b602060405180830381865afa158015610201573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061022591906107f0565b90505f8b73ffffffffffffffffffffffffffffffffffffffff1682604051602401610250919061082a565b6040516020818303038152906040527fdf282331000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516102da9190610895565b5f60405180830381855afa9150503d805f8114610312576040519150601f19603f3d011682016040523d82523d5f602084013e610317565b606091505b509150505f8180602001905181019061033091906109bb565b90505f81604001511180156103485750428160400151105b1561037c5783878781518110610361576103606109e6565b5b602002602001018181525050858061037890610a13565b9650505b50505050808061038b90610a13565b915050610196565b505f8167ffffffffffffffff8111156103af576103ae610787565b5b6040519080825280602002602001820160405280156103dd5781602001602082028036833780820191505090505b5090505f5b82811015610431578381815181106103fd576103fc6109e6565b5b6020026020010151828281518110610418576104176109e6565b5b60200260200101818152505080806001019150506103e2565b5080945050505050949350505050565b5f604051905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6104778261044e565b9050919050565b6104878161046d565b8114610491575f80fd5b50565b5f813590506104a28161047e565b92915050565b5f602082840312156104bd576104bc61044a565b5b5f6104ca84828501610494565b91505092915050565b5f6104dd8261044e565b9050919050565b6104ed816104d3565b81146104f7575f80fd5b50565b5f81359050610508816104e4565b92915050565b5f819050919050565b6105208161050e565b811461052a575f80fd5b50565b5f8135905061053b81610517565b92915050565b5f805f80608085870312156105595761055861044a565b5b5f610566878288016104fa565b9450506020610577878288016104fa565b93505060406105888782880161052d565b92505060606105998782880161052d565b91505092959194509250565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6105d78161050e565b82525050565b5f6105e883836105ce565b60208301905092915050565b5f602082019050919050565b5f61060a826105a5565b61061481856105af565b935061061f836105bf565b805f5b8381101561064f57815161063688826105dd565b9750610641836105f4565b925050600181019050610622565b5085935050505092915050565b5f6020820190508181035f8301526106748184610600565b905092915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6106c060208361067c565b91506106cb8261068c565b602082019050919050565b5f6020820190508181035f8301526106ed816106b4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61072b8261050e565b91506107368361050e565b925082820390508181111561074e5761074d6106f4565b5b92915050565b5f61075e8261050e565b91506107698361050e565b9250828201905080821115610781576107806106f4565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6107bd8161050e565b82525050565b5f6020820190506107d65f8301846107b4565b92915050565b5f815190506107ea816104e4565b92915050565b5f602082840312156108055761080461044a565b5b5f610812848285016107dc565b91505092915050565b610824816104d3565b82525050565b5f60208201905061083d5f83018461081b565b92915050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f61086f82610843565b610879818561084d565b9350610889818560208601610857565b80840191505092915050565b5f6108a08284610865565b915081905092915050565b5f80fd5b5f601f19601f8301169050919050565b6108c8826108af565b810181811067ffffffffffffffff821117156108e7576108e6610787565b5b80604052505050565b5f6108f9610441565b905061090582826108bf565b919050565b5f8151905061091881610517565b92915050565b5f60c08284031215610933576109326108ab565b5b61093d60c06108f0565b90505f61094c848285016107dc565b5f83015250602061095f8482850161090a565b60208301525060406109738482850161090a565b60408301525060606109878482850161090a565b606083015250608061099b8482850161090a565b60808301525060a06109af8482850161090a565b60a08301525092915050565b5f60c082840312156109d0576109cf61044a565b5b5f6109dd8482850161091e565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f610a1d8261050e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610a4f57610a4e6106f4565b5b60018201905091905056fea264697066735822122036283e1cd9e29b418c18156fbc131f6512cad42ee2f195ba750427a0ee5757db64736f6c634300081a0033