0x60a060405234801561001057600080fd5b5061001961002a565b6001600160a01b0316608052610067565b60006040516100389061005a565b604051809103906000f080158015610054573d6000803e3d6000fd5b50905090565b610a33806106fd83390190565b6080516106756100886000396000818160ad01526101f201526106756000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063ce82905811610050578063ce829058146100cf578063d4277ebc146100e2578063ed547bf7146100f557600080fd5b80630570b1fa1461006c5780635c60da1b146100a8575b600080fd5b61007f61007a3660046104a3565b610108565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f7f000000000000000000000000000000000000000000000000000000000000000081565b61007f6100dd3660046104a3565b61011c565b61007f6100f03660046104e5565b610142565b61007f6101033660046104e5565b61016a565b600061011583838061016a565b9392505050565b6000808061012b8585806101bf565b91509150610139828261022f565b95945050505050565b60008060006101528686866101bf565b91509150610160828261022f565b9695505050505050565b600080600061017a8686866101bf565b91509150600061018a838361022f565b905073ffffffffffffffffffffffffffffffffffffffff81163b610160576101b46000848461024b565b979650505050505050565b6000606060008585856040516020016101da93929190610542565b604051602081830303815290604052905060006102177f0000000000000000000000000000000000000000000000000000000000000000836103af565b82516020909301929092209791965090945050505050565b805160208201206000906102438482610425565b949350505050565b6000834710156102bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b8151600003610327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f60448201526064016102b3565b8282516020840186f5905073ffffffffffffffffffffffffffffffffffffffff8116610115576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f790000000000000060448201526064016102b3565b60607f600b380380600b3d393df3363d3d373d3d3d3d60368038038091363936013d738360601b7f5af43d3d93803e603457fd5bf30000000000000000000000000000000000000084855160405160200161040e9594939291906105af565b604051602081830303815290604052905092915050565b60006101158383306000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b60008083601f84011261046957600080fd5b50813567ffffffffffffffff81111561048157600080fd5b6020830191508360208260051b850101111561049c57600080fd5b9250929050565b600080602083850312156104b657600080fd5b823567ffffffffffffffff8111156104cd57600080fd5b6104d985828601610457565b90969095509350505050565b6000806000604084860312156104fa57600080fd5b833567ffffffffffffffff81111561051157600080fd5b61051d86828701610457565b909450925050602084013560ff8116811461053757600080fd5b809150509250925092565b604080825281018390526000846060830182805b8781101561059757833573ffffffffffffffffffffffffffffffffffffffff8116808214610582578384fd5b84525060209384019390920191600101610556565b5050809250505060ff83166020830152949350505050565b858152600060207fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008716818401527fffffffffffffffffffffffffff0000000000000000000000000000000000000086166034840152845160005b818110156106265786810183015185820160410152820161060a565b506041930192830193909352506061019594505050505056fea2646970667358221220d5e73f0f4098dfa2293e510172e5bb8fad0f0420f480ab23445c2eb3b87d3d1564736f6c63430008130033608060405234801561001057600080fd5b50610a13806100206000396000f3fe60806040526004361061005a5760003560e01c8063aaccd23011610043578063aaccd230146100aa578063e445e7dd146100d8578063e5320bb9146100f457600080fd5b8063086011b91461005f57806337b02c2814610074575b600080fd5b61007261006d3660046105d2565b610124565b005b34801561008057600080fd5b5061009461008f36600461063e565b6101d1565b6040516100a19190610680565b60405180910390f35b3480156100b657600080fd5b506100ca6100c53660046105d2565b6101f7565b6040519081526020016100a1565b3480156100e457600080fd5b50604051600281526020016100a1565b34801561010057600080fd5b5061011461010f36600461063e565b6102a4565b60405190151581526020016100a1565b61012e84846102a4565b6101bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4162737472616374506f73744469737061746368486f6f6b3a20696e76616c6960448201527f64206d657461646174612076617269616e74000000000000000000000000000060648201526084015b60405180910390fd5b6101cb848484846102c6565b50505050565b60606101db610427565b8060200190518101906101ee9190610732565b90505b92915050565b600061020385856102a4565b61028f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4162737472616374506f73744469737061746368486f6f6b3a20696e76616c6960448201527f64206d657461646174612076617269616e74000000000000000000000000000060648201526084016101b6565b61029b85858585610457565b95945050505050565b60008115806101ee575060016102ba8484610538565b61ffff16149392505050565b60006102d283836101d1565b805190915060005b8181101561041e5760008382815181106102f6576102f6610815565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663aaccd230898989896040518563ffffffff1660e01b815260040161033c949392919061088d565b602060405180830381865afa158015610359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037d91906108bf565b905083828151811061039157610391610815565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663086011b9828a8a8a8a6040518663ffffffff1660e01b81526004016103d8949392919061088d565b6000604051808303818588803b1580156103f157600080fd5b505af1158015610405573d6000803e3d6000fd5b505050505050808061041690610907565b9150506102da565b50505050505050565b60608060203603803580820391506040519250602081018301604052808352602083018183823750919392505050565b60008061046484846101d1565b80519091506000805b8281101561052c5783818151811061048757610487610815565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663aaccd2308a8a8a8a6040518563ffffffff1660e01b81526004016104cd949392919061088d565b602060405180830381865afa1580156104ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050e91906108bf565b610518908361093f565b91508061052481610907565b91505061046d565b50979650505050505050565b6000610545816002610952565b60ff16821015610557575060006101f1565b82600083610566826002610952565b60ff16926105769392919061096b565b61057f91610995565b60f01c9392505050565b60008083601f84011261059b57600080fd5b50813567ffffffffffffffff8111156105b357600080fd5b6020830191508360208285010111156105cb57600080fd5b9250929050565b600080600080604085870312156105e857600080fd5b843567ffffffffffffffff8082111561060057600080fd5b61060c88838901610589565b9096509450602087013591508082111561062557600080fd5b5061063287828801610589565b95989497509550505050565b6000806020838503121561065157600080fd5b823567ffffffffffffffff81111561066857600080fd5b61067485828601610589565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156106ce57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010161069c565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b805173ffffffffffffffffffffffffffffffffffffffff8116811461072d57600080fd5b919050565b6000602080838503121561074557600080fd5b825167ffffffffffffffff8082111561075d57600080fd5b818501915085601f83011261077157600080fd5b815181811115610783576107836106da565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156107c6576107c66106da565b6040529182528482019250838101850191888311156107e457600080fd5b938501935b82851015610809576107fa85610709565b845293850193928501926107e9565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6040815260006108a1604083018688610844565b82810360208401526108b4818587610844565b979650505050505050565b6000602082840312156108d157600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610938576109386108d8565b5060010190565b808201808211156101f1576101f16108d8565b60ff81811683821601908111156101f1576101f16108d8565b6000808585111561097b57600080fd5b8386111561098857600080fd5b5050820193919092039150565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156109d55780818660020360031b1b83161692505b50509291505056fea2646970667358221220bfcd573a48cf84e11e3d45702622230c2bf09354ba8ae0ba86f59a3920dd798d64736f6c63430008130033