0x608060405234801561000f575f80fd5b50604051611069380380611069833981810160405281019061003191906101d7565b805f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a2575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100999190610211565b60405180910390fd5b6100b1816100b860201b60201c565b505061022a565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101a68261017d565b9050919050565b6101b68161019c565b81146101c0575f80fd5b50565b5f815190506101d1816101ad565b92915050565b5f602082840312156101ec576101eb610179565b5b5f6101f9848285016101c3565b91505092915050565b61020b8161019c565b82525050565b5f6020820190506102245f830184610202565b92915050565b610e32806102375f395ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c806306b091f9146100595780630b463e0614610075578063715018a6146100915780638da5cb5b1461009b578063f2fde38b146100b9575b5f80fd5b610073600480360381019061006e91906106c2565b6100d5565b005b61008f600480360381019061008a9190610910565b61015d565b005b610099610417565b005b6100a361042a565b6040516100b091906109d7565b60405180910390f35b6100d360048036038101906100ce91906109f0565b610451565b005b6100dd6104d5565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610118929190610a2a565b6020604051808303815f875af1158015610134573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101589190610a86565b505050565b6101656104d5565b81518351148015610177575080518351145b6101b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad90610b0b565b60405180910390fd5b5f5b83518110156103a9575f8382815181106101d5576101d4610b29565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e86848151811061020b5761020a610b29565b5b6020026020010151306040518363ffffffff1660e01b8152600401610231929190610b56565b602060405180830381865afa15801561024c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102709190610b91565b905082828151811061028557610284610b29565b5b60200260200101518110156102cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c690610c06565b60405180910390fd5b8382815181106102e2576102e1610b29565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166323b872dd86848151811061031857610317610b29565b5b60200260200101518886868151811061033457610333610b29565b5b60200260200101516040518463ffffffff1660e01b815260040161035a93929190610c24565b6020604051808303815f875af1158015610376573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061039a9190610a86565b505080806001019150506101b8565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd8a8aad52af675829a21c3a0a2677ec3d6cd3a56f1ba7c20d66162643cee01068484604051610409929190610dc7565b60405180910390a350505050565b61041f6104d5565b6104285f61055c565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6104596104d5565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036104c9575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016104c091906109d7565b60405180910390fd5b6104d28161055c565b50565b6104dd61061d565b73ffffffffffffffffffffffffffffffffffffffff166104fb61042a565b73ffffffffffffffffffffffffffffffffffffffff161461055a5761051e61061d565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161055191906109d7565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61065e82610635565b9050919050565b61066e81610654565b8114610678575f80fd5b50565b5f8135905061068981610665565b92915050565b5f819050919050565b6106a18161068f565b81146106ab575f80fd5b50565b5f813590506106bc81610698565b92915050565b5f80604083850312156106d8576106d761062d565b5b5f6106e58582860161067b565b92505060206106f6858286016106ae565b9150509250929050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61074a82610704565b810181811067ffffffffffffffff8211171561076957610768610714565b5b80604052505050565b5f61077b610624565b90506107878282610741565b919050565b5f67ffffffffffffffff8211156107a6576107a5610714565b5b602082029050602081019050919050565b5f80fd5b5f6107cd6107c88461078c565b610772565b905080838252602082019050602084028301858111156107f0576107ef6107b7565b5b835b818110156108195780610805888261067b565b8452602084019350506020810190506107f2565b5050509392505050565b5f82601f83011261083757610836610700565b5b81356108478482602086016107bb565b91505092915050565b5f67ffffffffffffffff82111561086a57610869610714565b5b602082029050602081019050919050565b5f61088d61088884610850565b610772565b905080838252602082019050602084028301858111156108b0576108af6107b7565b5b835b818110156108d957806108c588826106ae565b8452602084019350506020810190506108b2565b5050509392505050565b5f82601f8301126108f7576108f6610700565b5b813561090784826020860161087b565b91505092915050565b5f805f80608085870312156109285761092761062d565b5b5f6109358782880161067b565b945050602085013567ffffffffffffffff81111561095657610955610631565b5b61096287828801610823565b935050604085013567ffffffffffffffff81111561098357610982610631565b5b61098f87828801610823565b925050606085013567ffffffffffffffff8111156109b0576109af610631565b5b6109bc878288016108e3565b91505092959194509250565b6109d181610654565b82525050565b5f6020820190506109ea5f8301846109c8565b92915050565b5f60208284031215610a0557610a0461062d565b5b5f610a128482850161067b565b91505092915050565b610a248161068f565b82525050565b5f604082019050610a3d5f8301856109c8565b610a4a6020830184610a1b565b9392505050565b5f8115159050919050565b610a6581610a51565b8114610a6f575f80fd5b50565b5f81519050610a8081610a5c565b92915050565b5f60208284031215610a9b57610a9a61062d565b5b5f610aa884828501610a72565b91505092915050565b5f82825260208201905092915050565b7f417272617973206c656e677468206d69736d61746368000000000000000000005f82015250565b5f610af5601683610ab1565b9150610b0082610ac1565b602082019050919050565b5f6020820190508181035f830152610b2281610ae9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f604082019050610b695f8301856109c8565b610b7660208301846109c8565b9392505050565b5f81519050610b8b81610698565b92915050565b5f60208284031215610ba657610ba561062d565b5b5f610bb384828501610b7d565b91505092915050565b7f496e73756666696369656e7420616c6c6f77616e6365000000000000000000005f82015250565b5f610bf0601683610ab1565b9150610bfb82610bbc565b602082019050919050565b5f6020820190508181035f830152610c1d81610be4565b9050919050565b5f606082019050610c375f8301866109c8565b610c4460208301856109c8565b610c516040830184610a1b565b949350505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610c8b81610654565b82525050565b5f610c9c8383610c82565b60208301905092915050565b5f602082019050919050565b5f610cbe82610c59565b610cc88185610c63565b9350610cd383610c73565b805f5b83811015610d03578151610cea8882610c91565b9750610cf583610ca8565b925050600181019050610cd6565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610d428161068f565b82525050565b5f610d538383610d39565b60208301905092915050565b5f602082019050919050565b5f610d7582610d10565b610d7f8185610d1a565b9350610d8a83610d2a565b805f5b83811015610dba578151610da18882610d48565b9750610dac83610d5f565b925050600181019050610d8d565b5085935050505092915050565b5f6040820190508181035f830152610ddf8185610cb4565b90508181036020830152610df38184610d6b565b9050939250505056fea2646970667358221220b8f4564616b5d3c48a6f0a526f0346ff54d3086bbbce248539915ab5f6f94da664736f6c63430008190033000000000000000000000000b49545b0c228324eca22b8cc80b39301568bc180