//
0x608060405234801561001057600080fd5b50600080546001600160a81b031916905561114a806100306000396000f3fe6080604052600436106100965760003560e01c80638456cb5911610069578063f2f4eb261161004e578063f2f4eb26146101d8578063f340fa0114610216578063f3fef3a31461024957610096565b80638456cb591461016d578063dd9a76ff1461018257610096565b80633f4ba83a1461009b5780635c975abb146100b257806370a08231146100db578063800096301461012d575b600080fd5b3480156100a757600080fd5b506100b061028f565b005b3480156100be57600080fd5b506100c7610418565b604080519115158252519081900360200190f35b3480156100e757600080fd5b5061011b600480360360208110156100fe57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610421565b60408051918252519081900360200190f35b34801561013957600080fd5b506100b06004803603602081101561015057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610433565b34801561017957600080fd5b506100b061056d565b34801561018e57600080fd5b506100c7600480360360808110156101a557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604081013590606001356106eb565b3480156101e457600080fd5b506101ed6108f3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b06004803603602081101561022c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610914565b34801561025557600080fd5b506100b06004803603604081101561026c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a6b565b6000546040517fe43581b800000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063e43581b8906102e9903390600401610f7c565b60206040518083038186803b15801561030157600080fd5b505afa158015610315573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103399190610f5c565b806103e957506000546040517f0c68ba2100000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690630c68ba2190610399903390600401610f7c565b60206040518083038186803b1580156103b157600080fd5b505afa1580156103c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e99190610f5c565b61040e5760405162461bcd60e51b815260040161040590611057565b60405180910390fd5b610416610be6565b565b60005460ff1690565b60016020526000908152604090205481565b6000546040517fe43581b800000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063e43581b89061048d903390600401610f7c565b60206040518083038186803b1580156104a557600080fd5b505afa1580156104b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104dd9190610f5c565b6104f95760405162461bcd60e51b815260040161040590610ffa565b600080547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff841690810291909117825560405190917fad9400e618eb1344fde53db22397a1b82c765527ecbba3a5c86bcac15090828b91a250565b6000546040517fe43581b800000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063e43581b8906105c7903390600401610f7c565b60206040518083038186803b1580156105df57600080fd5b505afa1580156105f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106179190610f5c565b806106c757506000546040517f0c68ba2100000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690630c68ba2190610677903390600401610f7c565b60206040518083038186803b15801561068f57600080fd5b505afa1580156106a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c79190610f5c565b6106e35760405162461bcd60e51b815260040161040590611057565b610416610cba565b600080546040517f6d70f7ae00000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690636d70f7ae90610746903390600401610f7c565b60206040518083038186803b15801561075e57600080fd5b505afa158015610772573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107969190610f5c565b6107b25760405162461bcd60e51b815260040161040590610f9d565b60008311610807576040805162461bcd60e51b815260206004820152600e60248201527f696e76616c696420616d6f756e74000000000000000000000000000000000000604482015290519081900360640190fd5b303183118061083a575073ffffffffffffffffffffffffffffffffffffffff851660009081526001602052604090205483115b15610847575060006108eb565b73ffffffffffffffffffffffffffffffffffffffff851660009081526001602052604090208054849003905561087d8484610d68565b73ffffffffffffffffffffffffffffffffffffffff858116600081815260016020908152604091829020548251888152918201879052818301529051928716927fb9fb64ccf647f3e7ba45742b97b6b8e464a822c67817276accb7b1f905d292a29181900360600190a35060015b949350505050565b600054610100900473ffffffffffffffffffffffffffffffffffffffff1690565b60003411610969576040805162461bcd60e51b815260206004820152600d60248201527f696e76616c69642076616c756500000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166109d1576040805162461bcd60e51b815260206004820152600a60248201527f696e76616c696420746f00000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040902054610a019034610e60565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260016020908152604091829020849055815134815290810193909352805191927f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15929081900390910190a250565b60008111610ac0576040805162461bcd60e51b815260206004820152600e60248201527f696e76616c696420616d6f756e74000000000000000000000000000000000000604482015290519081900360640190fd5b3031811115610b16576040805162461bcd60e51b815260206004820152601b60248201527f616d6f756e7420657863656564732062616e6b2062616c616e63650000000000604482015290519081900360640190fd5b604080518082018252601f81527f776974686472617720616d6f756e7420657863656564732062616c616e63650060208083019190915233600090815260019091529190912054610b68918390610ec1565b33600090815260016020526040902055610b828282610d68565b3360008181526001602090815260409182902054825185815291820152815173ffffffffffffffffffffffffffffffffffffffff861693927ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb567928290030190a35050565b610bee610418565b610c3f576040805162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610c90610f58565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190a1565b610cc2610418565b15610d14576040805162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610c90610f58565b3031811115610dbe576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b60405160009073ffffffffffffffffffffffffffffffffffffffff84169083908381818185875af1925050503d8060008114610e16576040519150601f19603f3d011682016040523d82523d6000602084013e610e1b565b606091505b5050905080610e5b5760405162461bcd60e51b815260040180806020018281038252603a8152602001806110db603a913960400191505060405180910390fd5b505050565b600082820183811015610eba576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60008184841115610f505760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f15578181015183820152602001610efd565b50505050905090810190601f168015610f425780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b3390565b600060208284031215610f6d578081fd5b81518015158114610eba578182fd5b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6020808252602f908201527f436f72655265663a3a6f6e6c794f70657261746f723a2043616c6c657220697360408201527f206e6f742061206f70657261746f720000000000000000000000000000000000606082015260800190565b6020808252602f908201527f436f72655265663a3a6f6e6c79476f7665726e6f723a2043616c6c657220697360408201527f206e6f74206120676f7665726e6f720000000000000000000000000000000000606082015260800190565b60208082526045908201527f436f72655265663a3a6f6e6c79477561726469616e4f72476f7665726e6f723a60408201527f2043616c6c6572206973206e6f74206120677561726469616e206f7220676f7660608201527f65726e6f72000000000000000000000000000000000000000000000000000000608082015260a0019056fe416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564a2646970667358221220c316e0e802f958bdfdeb9d8f156275c83e71162bc233282e1f309d17b3f72f8d64736f6c63430007060033