0x60806040523480156200001157600080fd5b50604051620017cd380380620017cd8339818101604052810190620000379190620002ff565b620000576200004b620001c960201b60201c565b620001d160201b60201c565b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000ca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000c190620003a7565b60405180910390fd5b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200013d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200013490620003a7565b60405180910390fd5b83600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050620003c9565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002c7826200029a565b9050919050565b620002d981620002ba565b8114620002e557600080fd5b50565b600081519050620002f981620002ce565b92915050565b6000806040838503121562000319576200031862000295565b5b60006200032985828601620002e8565b92505060206200033c85828601620002e8565b9150509250929050565b600082825260208201905092915050565b7f6164647265737320697320746865207a65726f20616464726573730000000000600082015250565b60006200038f601b8362000346565b91506200039c8262000357565b602082019050919050565b60006020820190508181036000830152620003c28162000380565b9050919050565b6113f480620003d96000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80637857f4c51161005b5780637857f4c5146100ed5780638da5cb5b1461011d578063a03e4bc31461013b578063f2fde38b1461015957610088565b80631182ec251461008d57806316b4f75a146100a9578063349f937c146100c7578063715018a6146100e3575b600080fd5b6100a760048036038101906100a29190610b90565b610175565b005b6100b1610287565b6040516100be9190610bcc565b60405180910390f35b6100e160048036038101906100dc9190610b90565b6102ad565b005b6100eb61036a565b005b61010760048036038101906101029190610c56565b61037e565b6040516101149190610cd8565b60405180910390f35b61012561056b565b6040516101329190610bcc565b60405180910390f35b610143610594565b6040516101509190610bcc565b60405180910390f35b610173600480360381019061016e9190610b90565b6105ba565b005b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101dc90610d50565b60405180910390fd5b6101ed61063d565b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff167fd8011b31830d99a39c90e971a38915b2986ad72db69dd700a06bdf47df442fd761026e61056b565b60405161027b9190610bcc565b60405180910390a25050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361031d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031490610d50565b60405180910390fd5b61032561063d565b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61037261063d565b61037c60006106bb565b565b600061038861077f565b73ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040e90610de2565b60405180910390fd5b610464600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16858773ffffffffffffffffffffffffffffffffffffffff166107879092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663617ba03786868660006040518563ffffffff1660e01b81526004016104c69493929190610e64565b600060405180830381600087803b1580156104e057600080fd5b505af11580156104f4573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f09bce90176af6586cca3aa9357833033cdcd9f84803cfa59d92cf26526e489b38685604051610557929190610eb8565b60405180910390a360019050949350505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6105c261063d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062890610f53565b60405180910390fd5b61063a816106bb565b50565b61064561077f565b73ffffffffffffffffffffffffffffffffffffffff1661066361056b565b73ffffffffffffffffffffffffffffffffffffffff16146106b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b090610fbf565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6000818473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30866040518363ffffffff1660e01b81526004016107c5929190610fdf565b602060405180830381865afa1580156107e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610806919061101d565b6108109190611079565b90506108938463095ea7b360e01b85846040516024016108319291906110ad565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610899565b50505050565b60006108fb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166109609092919063ffffffff16565b905060008151111561095b578080602001905181019061091b9190611102565b61095a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610951906111a1565b60405180910390fd5b5b505050565b606061096f8484600085610978565b90509392505050565b6060824710156109bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b490611233565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516109e691906112c4565b60006040518083038185875af1925050503d8060008114610a23576040519150601f19603f3d011682016040523d82523d6000602084013e610a28565b606091505b5091509150610a3987838387610a45565b92505050949350505050565b60608315610aa7576000835103610a9f57610a5f85610aba565b610a9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9590611327565b60405180910390fd5b5b829050610ab2565b610ab18383610add565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115610af05781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b24919061139c565b60405180910390fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b5d82610b32565b9050919050565b610b6d81610b52565b8114610b7857600080fd5b50565b600081359050610b8a81610b64565b92915050565b600060208284031215610ba657610ba5610b2d565b5b6000610bb484828501610b7b565b91505092915050565b610bc681610b52565b82525050565b6000602082019050610be16000830184610bbd565b92915050565b6000819050919050565b610bfa81610be7565b8114610c0557600080fd5b50565b600081359050610c1781610bf1565b92915050565b600060ff82169050919050565b610c3381610c1d565b8114610c3e57600080fd5b50565b600081359050610c5081610c2a565b92915050565b60008060008060808587031215610c7057610c6f610b2d565b5b6000610c7e87828801610b7b565b9450506020610c8f87828801610c08565b9350506040610ca087828801610b7b565b9250506060610cb187828801610c41565b91505092959194509250565b60008115159050919050565b610cd281610cbd565b82525050565b6000602082019050610ced6000830184610cc9565b92915050565b600082825260208201905092915050565b7f6164647265737320697320746865207a65726f20616464726573730000000000600082015250565b6000610d3a601b83610cf3565b9150610d4582610d04565b602082019050919050565b60006020820190508181036000830152610d6981610d2d565b9050919050565b7f426c6f636b41544d446566693a2063616c6c6572206973206e6f74207468652060008201527f636f6c6c65637420616464726573730000000000000000000000000000000000602082015250565b6000610dcc602f83610cf3565b9150610dd782610d70565b604082019050919050565b60006020820190508181036000830152610dfb81610dbf565b9050919050565b610e0b81610be7565b82525050565b6000819050919050565b600061ffff82169050919050565b6000819050919050565b6000610e4e610e49610e4484610e11565b610e29565b610e1b565b9050919050565b610e5e81610e33565b82525050565b6000608082019050610e796000830187610bbd565b610e866020830186610e02565b610e936040830185610bbd565b610ea06060830184610e55565b95945050505050565b610eb281610c1d565b82525050565b6000604082019050610ecd6000830185610e02565b610eda6020830184610ea9565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000610f3d602683610cf3565b9150610f4882610ee1565b604082019050919050565b60006020820190508181036000830152610f6c81610f30565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000610fa9602083610cf3565b9150610fb482610f73565b602082019050919050565b60006020820190508181036000830152610fd881610f9c565b9050919050565b6000604082019050610ff46000830185610bbd565b6110016020830184610bbd565b9392505050565b60008151905061101781610bf1565b92915050565b60006020828403121561103357611032610b2d565b5b600061104184828501611008565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061108482610be7565b915061108f83610be7565b92508282019050808211156110a7576110a661104a565b5b92915050565b60006040820190506110c26000830185610bbd565b6110cf6020830184610e02565b9392505050565b6110df81610cbd565b81146110ea57600080fd5b50565b6000815190506110fc816110d6565b92915050565b60006020828403121561111857611117610b2d565b5b6000611126848285016110ed565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b600061118b602a83610cf3565b91506111968261112f565b604082019050919050565b600060208201905081810360008301526111ba8161117e565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b600061121d602683610cf3565b9150611228826111c1565b604082019050919050565b6000602082019050818103600083015261124c81611210565b9050919050565b600081519050919050565b600081905092915050565b60005b8381101561128757808201518184015260208101905061126c565b60008484015250505050565b600061129e82611253565b6112a8818561125e565b93506112b8818560208601611269565b80840191505092915050565b60006112d08284611293565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000611311601d83610cf3565b915061131c826112db565b602082019050919050565b6000602082019050818103600083015261134081611304565b9050919050565b600081519050919050565b6000601f19601f8301169050919050565b600061136e82611347565b6113788185610cf3565b9350611388818560208601611269565b61139181611352565b840191505092915050565b600060208201905081810360008301526113b68184611363565b90509291505056fea26469706673582212200af0d220b7f071242c04332c964d420e1f34e8093b5b653ba98dfebceeaf127464736f6c6343000811003300000000000000000000000087870bca3f3fd6335c3f4ce8392d69350b4fa4e2000000000000000000000000b59ea534c027da597174fd01a8e5de5d85532563