0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fe5806100606000396000f3fe6080604052600436106100435760003560e01c80633ccfd60b1461004f578063880cdc311461006657806388d695b21461008f5780638da5cb5b146100ab5761004a565b3661004a57005b600080fd5b34801561005b57600080fd5b506100646100d6565b005b34801561007257600080fd5b5061008d6004803603810190610088919061091d565b6102eb565b005b6100a960048036038101906100a49190610a05565b61042b565b005b3480156100b757600080fd5b506100c0610891565b6040516100cd9190610a95565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015b90610b33565b60405180910390fd5b6000479050600081116101ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101a390610b9f565b60405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516101f390610bf0565b60006040518083038185875af1925050503d8060008114610230576040519150601f19603f3d011682016040523d82523d6000602084013e610235565b606091505b5050905080610279576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027090610c51565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65836040516102df9190610c8a565b60405180910390a25050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161037090610b33565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036103e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103df90610cf1565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b090610b33565b60405180910390fd5b818190508484905014610501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f890610d83565b60405180910390fd5b6000805b8383905081101561054a5783838281811061052357610522610da3565b5b90506020020135826105359190610e01565b9150808061054290610e35565b915050610505565b508034101561058e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058590610eef565b60405180910390fd5b600034905060005b868690508110156107b05760008787838181106105b6576105b5610da3565b5b90506020020160208101906105cb919061091d565b73ffffffffffffffffffffffffffffffffffffffff168686848181106105f4576105f3610da3565b5b9050602002013560405161060790610bf0565b60006040518083038185875af1925050503d8060008114610644576040519150601f19603f3d011682016040523d82523d6000602084013e610649565b606091505b50509050801561070d5787878381811061066657610665610da3565b5b905060200201602081019061067b919061091d565b73ffffffffffffffffffffffffffffffffffffffff167fe4bb88acda5194aa84e6feedbb6438ffd447bdee1e1ad8dda3c32fcff9a68f088787858181106106c5576106c4610da3565b5b905060200201356040516106d99190610c8a565b60405180910390a28585838181106106f4576106f3610da3565b5b90506020020135836107069190610f0f565b925061079c565b8787838181106107205761071f610da3565b5b9050602002016020810190610735919061091d565b73ffffffffffffffffffffffffffffffffffffffff167f1c43b9761b3fba5321ca8212bfc231945f668ccc0c446f333999eea9ce8fda8187878581811061077f5761077e610da3565b5b905060200201356040516107939190610c8a565b60405180910390a25b5080806107a890610e35565b915050610596565b5060008111156108895760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161080190610bf0565b60006040518083038185875af1925050503d806000811461083e576040519150601f19603f3d011682016040523d82523d6000602084013e610843565b606091505b5050905080610887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087e90610f8f565b60405180910390fd5b505b505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006108ea826108bf565b9050919050565b6108fa816108df565b811461090557600080fd5b50565b600081359050610917816108f1565b92915050565b600060208284031215610933576109326108b5565b5b600061094184828501610908565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261096f5761096e61094a565b5b8235905067ffffffffffffffff81111561098c5761098b61094f565b5b6020830191508360208202830111156109a8576109a7610954565b5b9250929050565b60008083601f8401126109c5576109c461094a565b5b8235905067ffffffffffffffff8111156109e2576109e161094f565b5b6020830191508360208202830111156109fe576109fd610954565b5b9250929050565b60008060008060408587031215610a1f57610a1e6108b5565b5b600085013567ffffffffffffffff811115610a3d57610a3c6108ba565b5b610a4987828801610959565b9450945050602085013567ffffffffffffffff811115610a6c57610a6b6108ba565b5b610a78878288016109af565b925092505092959194509250565b610a8f816108df565b82525050565b6000602082019050610aaa6000830184610a86565b92915050565b600082825260208201905092915050565b7f556e617574686f72697a6564206163636573732e204f6e6c7920746865206f7760008201527f6e65722063616e20706572666f726d207468697320616374696f6e2e00000000602082015250565b6000610b1d603c83610ab0565b9150610b2882610ac1565b604082019050919050565b60006020820190508181036000830152610b4c81610b10565b9050919050565b7f4e6f2045544820746f2077697468647261770000000000000000000000000000600082015250565b6000610b89601283610ab0565b9150610b9482610b53565b602082019050919050565b60006020820190508181036000830152610bb881610b7c565b9050919050565b600081905092915050565b50565b6000610bda600083610bbf565b9150610be582610bca565b600082019050919050565b6000610bfb82610bcd565b9150819050919050565b7f5769746864726177206661696c65640000000000000000000000000000000000600082015250565b6000610c3b600f83610ab0565b9150610c4682610c05565b602082019050919050565b60006020820190508181036000830152610c6a81610c2e565b9050919050565b6000819050919050565b610c8481610c71565b82525050565b6000602082019050610c9f6000830184610c7b565b92915050565b7f496e76616c6964206f776e657220616464726573730000000000000000000000600082015250565b6000610cdb601583610ab0565b9150610ce682610ca5565b602082019050919050565b60006020820190508181036000830152610d0a81610cce565b9050919050565b7f4d69736d61746368656420726563697069656e747320616e6420616d6f756e7460008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000610d6d602183610ab0565b9150610d7882610d11565b604082019050919050565b60006020820190508181036000830152610d9c81610d60565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e0c82610c71565b9150610e1783610c71565b9250828201905080821115610e2f57610e2e610dd2565b5b92915050565b6000610e4082610c71565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610e7257610e71610dd2565b5b600182019050919050565b7f496e73756666696369656e74204554482073656e7420666f72207472616e736660008201527f6572730000000000000000000000000000000000000000000000000000000000602082015250565b6000610ed9602383610ab0565b9150610ee482610e7d565b604082019050919050565b60006020820190508181036000830152610f0881610ecc565b9050919050565b6000610f1a82610c71565b9150610f2583610c71565b9250828203905081811115610f3d57610f3c610dd2565b5b92915050565b7f526566756e6420746f206f776e6572206661696c656400000000000000000000600082015250565b6000610f79601683610ab0565b9150610f8482610f43565b602082019050919050565b60006020820190508181036000830152610fa881610f6c565b905091905056fea2646970667358221220393e4b93c74211efadf9b0b68f6bb9258888ce9a211312066b9f7453a47ed62f64736f6c63430008140033