0x6080604052348015600f57600080fd5b5061110f8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80632a4c0a1a1461006757806353f98a0c146100855780635466e24d146100a157806358ea44be146100bf57806364aab239146100ef57806395885f3c1461010b575b600080fd5b61006f61013b565b60405161007c919061085d565b60405180910390f35b61009f600480360381019061009a91906108bd565b610153565b005b6100a9610205565b6040516100b6919061085d565b60405180910390f35b6100d960048036038101906100d49190610916565b61021d565b6040516100e69190610952565b60405180910390f35b610109600480360381019061010491906108bd565b6103cb565b005b61012560048036038101906101209190610916565b610780565b6040516101329190610952565b60405180910390f35b737984e363c38b590bb4ca35aed5133ef2c6619c4081565b60007348914c788295b5db23af2b5f0b3be775c4ea944090508073ffffffffffffffffffffffffffffffffffffffff166369328dec737984e363c38b590bb4ca35aed5133ef2c6619c4084336040518463ffffffff1660e01b81526004016101bd9392919061096d565b6020604051808303816000875af11580156101dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020091906109b9565b505050565b7348914c788295b5db23af2b5f0b3be775c4ea944081565b6000807348914c788295b5db23af2b5f0b3be775c4ea9440905060008173ffffffffffffffffffffffffffffffffffffffff166335ea6a75737984e363c38b590bb4ca35aed5133ef2c6619c406040518263ffffffff1660e01b8152600401610286919061085d565b606060405180830381865afa1580156102a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c79190610b38565b9050600081604001519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033890610be8565b60405180910390fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff1660e01b815260040161037f919061085d565b602060405180830381865afa15801561039c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c091906109b9565b945050505050919050565b6000737984e363c38b590bb4ca35aed5133ef2c6619c40905060008173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401610421929190610c08565b602060405180830381865afa15801561043e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046291906109b9565b9050828110156104a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049e90610ca3565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b81526004016104e693929190610cc3565b6020604051808303816000875af1158015610505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105299190610d32565b90508061056b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056290610dab565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1663095ea7b37348914c788295b5db23af2b5f0b3be775c4ea9440876040518363ffffffff1660e01b81526004016105bc929190610dcb565b6020604051808303816000875af11580156105db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ff9190610d32565b905080610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063890610e66565b60405180910390fd5b7348914c788295b5db23af2b5f0b3be775c4ea944073ffffffffffffffffffffffffffffffffffffffff1663617ba037737984e363c38b590bb4ca35aed5133ef2c6619c40873360006040518563ffffffff1660e01b81526004016106a99493929190610ed9565b600060405180830381600087803b1580156106c357600080fd5b505af19250505080156106d4575060015b610779576106e0610f2b565b806308c379a00361073c57506106f4610f4d565b806106ff575061073e565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610733919061104b565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610770906110b9565b60405180910390fd5b5050505050565b600080737984e363c38b590bb4ca35aed5133ef2c6619c4090508073ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b81526004016107d3919061085d565b602060405180830381865afa1580156107f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081491906109b9565b915050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006108478261081c565b9050919050565b6108578161083c565b82525050565b6000602082019050610872600083018461084e565b92915050565b6000604051905090565b600080fd5b6000819050919050565b61089a81610887565b81146108a557600080fd5b50565b6000813590506108b781610891565b92915050565b6000602082840312156108d3576108d2610882565b5b60006108e1848285016108a8565b91505092915050565b6108f38161083c565b81146108fe57600080fd5b50565b600081359050610910816108ea565b92915050565b60006020828403121561092c5761092b610882565b5b600061093a84828501610901565b91505092915050565b61094c81610887565b82525050565b60006020820190506109676000830184610943565b92915050565b6000606082019050610982600083018661084e565b61098f6020830185610943565b61099c604083018461084e565b949350505050565b6000815190506109b381610891565b92915050565b6000602082840312156109cf576109ce610882565b5b60006109dd848285016109a4565b91505092915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610a34826109eb565b810181811067ffffffffffffffff82111715610a5357610a526109fc565b5b80604052505050565b6000610a66610878565b9050610a728282610a2b565b919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b610a9c81610a77565b8114610aa757600080fd5b50565b600081519050610ab981610a93565b92915050565b600081519050610ace816108ea565b92915050565b600060608284031215610aea57610ae96109e6565b5b610af46060610a5c565b90506000610b0484828501610aaa565b6000830152506020610b1884828501610aaa565b6020830152506040610b2c84828501610abf565b60408301525092915050565b600060608284031215610b4e57610b4d610882565b5b6000610b5c84828501610ad4565b91505092915050565b600082825260208201905092915050565b7f496d706f737369626c6520646520726563757065726572206c2761647265737360008201527f6520614441490000000000000000000000000000000000000000000000000000602082015250565b6000610bd2602683610b65565b9150610bdd82610b76565b604082019050919050565b60006020820190508181036000830152610c0181610bc5565b9050919050565b6000604082019050610c1d600083018561084e565b610c2a602083018461084e565b9392505050565b7f566575696c6c657a20617070726f75766572206c6520636f6e7472617420706f60008201527f7572207472616e73666572657220766f73204441492e00000000000000000000602082015250565b6000610c8d603683610b65565b9150610c9882610c31565b604082019050919050565b60006020820190508181036000830152610cbc81610c80565b9050919050565b6000606082019050610cd8600083018661084e565b610ce5602083018561084e565b610cf26040830184610943565b949350505050565b60008115159050919050565b610d0f81610cfa565b8114610d1a57600080fd5b50565b600081519050610d2c81610d06565b92915050565b600060208284031215610d4857610d47610882565b5b6000610d5684828501610d1d565b91505092915050565b7f4563686563206475207472616e7366657274206465204441492e000000000000600082015250565b6000610d95601a83610b65565b9150610da082610d5f565b602082019050919050565b60006020820190508181036000830152610dc481610d88565b9050919050565b6000604082019050610de0600083018561084e565b610ded6020830184610943565b9392505050565b7f4563686563206465206c27617070726f626174696f6e2064657320444149207060008201527f6f757220416176652e0000000000000000000000000000000000000000000000602082015250565b6000610e50602983610b65565b9150610e5b82610df4565b604082019050919050565b60006020820190508181036000830152610e7f81610e43565b9050919050565b6000819050919050565b600061ffff82169050919050565b6000819050919050565b6000610ec3610ebe610eb984610e86565b610e9e565b610e90565b9050919050565b610ed381610ea8565b82525050565b6000608082019050610eee600083018761084e565b610efb6020830186610943565b610f08604083018561084e565b610f156060830184610eca565b95945050505050565b60008160e01c9050919050565b600060033d1115610f4a5760046000803e610f47600051610f1e565b90505b90565b600060443d10610fda57610f5f610878565b60043d036004823e80513d602482011167ffffffffffffffff82111715610f87575050610fda565b808201805167ffffffffffffffff811115610fa55750505050610fda565b80602083010160043d038501811115610fc2575050505050610fda565b610fd182602001850186610a2b565b82955050505050505b90565b600081519050919050565b60005b83811015611006578082015181840152602081019050610feb565b60008484015250505050565b600061101d82610fdd565b6110278185610b65565b9350611037818560208601610fe8565b611040816109eb565b840191505092915050565b600060208201905081810360008301526110658184611012565b905092915050565b7f417070656c2061204161766520737570706c79206563686f7565000000000000600082015250565b60006110a3601a83610b65565b91506110ae8261106d565b602082019050919050565b600060208201905081810360008301526110d281611096565b905091905056fea26469706673582212201e0b9b807d8a8ac6d667e5f54e70a6d30b3ba18e75802c48ef797a719f99152164736f6c634300081a0033