60806040526040518060400160405280600481526020017f62696774000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f6269677400000000000000000000000000000000000000000000000000000000815250816003908161007f9190610627565b50806004908161008f9190610627565b5050506100ae6100a36100e360201b60201c565b6100eb60201b60201c565b60006c01431e0fae6d7217caa000000090506100dd6100d16101b160201b60201c565b826101db60201b60201c565b5061086f565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361024a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024190610756565b60405180910390fd5b61025c6000838361037460201b60201c565b6102718160025461037960201b90919060201c565b6002819055506102c8816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461037960201b90919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516103689190610785565b60405180910390a35050565b505050565b600080828461038891906107cf565b9050838110156103cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c49061084f565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061045857607f821691505b60208210810361046b5761046a610411565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026104d37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610496565b6104dd8683610496565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600061052461051f61051a846104f5565b6104ff565b6104f5565b9050919050565b6000819050919050565b61053e83610509565b61055261054a8261052b565b8484546104a3565b825550505050565b600090565b61056761055a565b610572818484610535565b505050565b5b818110156105965761058b60008261055f565b600181019050610578565b5050565b601f8211156105db576105ac81610471565b6105b584610486565b810160208510156105c4578190505b6105d86105d085610486565b830182610577565b50505b505050565b600082821c905092915050565b60006105fe600019846008026105e0565b1980831691505092915050565b600061061783836105ed565b9150826002028217905092915050565b610630826103d7565b67ffffffffffffffff811115610649576106486103e2565b5b6106538254610440565b61065e82828561059a565b600060209050601f831160018114610691576000841561067f578287015190505b610689858261060b565b8655506106f1565b601f19841661069f86610471565b60005b828110156106c7578489015182556001820191506020850194506020810190506106a2565b868310156106e457848901516106e0601f8916826105ed565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000610740601f836106f9565b915061074b8261070a565b602082019050919050565b6000602082019050818103600083015261076f81610733565b9050919050565b61077f816104f5565b82525050565b600060208201905061079a6000830184610776565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006107da826104f5565b91506107e5836104f5565b92508282019050808211156107fd576107fc6107a0565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000610839601b836106f9565b915061084482610803565b602082019050919050565b600060208201905081810360008301526108688161082c565b9050919050565b6116728061087e6000396000f3fe6080604052600436106100c65760003560e01c806370a082311161007f57806395d89b411161005957806395d89b4114610286578063a457c2d7146102b1578063a9059cbb146102ee578063dd62ed3e1461032b576100cd565b806370a0823114610207578063715018a6146102445780638da5cb5b1461025b576100cd565b806306fdde03146100cf578063095ea7b3146100fa57806318160ddd1461013757806323b872dd14610162578063313ce5671461019f57806339509351146101ca576100cd565b366100cd57005b005b3480156100db57600080fd5b506100e4610368565b6040516100f19190610f36565b60405180910390f35b34801561010657600080fd5b50610121600480360381019061011c9190610ff1565b6103fa565b60405161012e919061104c565b60405180910390f35b34801561014357600080fd5b5061014c610418565b6040516101599190611076565b60405180910390f35b34801561016e57600080fd5b5061018960048036038101906101849190611091565b610422565b604051610196919061104c565b60405180910390f35b3480156101ab57600080fd5b506101b46104fb565b6040516101c19190611100565b60405180910390f35b3480156101d657600080fd5b506101f160048036038101906101ec9190610ff1565b610504565b6040516101fe919061104c565b60405180910390f35b34801561021357600080fd5b5061022e6004803603810190610229919061111b565b6105b7565b60405161023b9190611076565b60405180910390f35b34801561025057600080fd5b506102596105ff565b005b34801561026757600080fd5b50610270610687565b60405161027d9190611157565b60405180910390f35b34801561029257600080fd5b5061029b6106b1565b6040516102a89190610f36565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d39190610ff1565b610743565b6040516102e5919061104c565b60405180910390f35b3480156102fa57600080fd5b5061031560048036038101906103109190610ff1565b610810565b604051610322919061104c565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d9190611172565b61082e565b60405161035f9190611076565b60405180910390f35b606060038054610377906111e1565b80601f01602080910402602001604051908101604052809291908181526020018280546103a3906111e1565b80156103f05780601f106103c5576101008083540402835291602001916103f0565b820191906000526020600020905b8154815290600101906020018083116103d357829003601f168201915b5050505050905090565b600061040e6104076108b5565b84846108bd565b6001905092915050565b6000600254905090565b600061042f848484610a86565b6104f08461043b6108b5565b6104eb856040518060600160405280602881526020016115f060289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104a16108b5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d199092919063ffffffff16565b6108bd565b600190509392505050565b60006012905090565b60006105ad6105116108b5565b846105a885600160006105226108b5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d7d90919063ffffffff16565b6108bd565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106076108b5565b73ffffffffffffffffffffffffffffffffffffffff16610625610687565b73ffffffffffffffffffffffffffffffffffffffff161461067b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106729061125e565b60405180910390fd5b6106856000610ddb565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546106c0906111e1565b80601f01602080910402602001604051908101604052809291908181526020018280546106ec906111e1565b80156107395780601f1061070e57610100808354040283529160200191610739565b820191906000526020600020905b81548152906001019060200180831161071c57829003601f168201915b5050505050905090565b60006108066107506108b5565b8461080185604051806060016040528060258152602001611618602591396001600061077a6108b5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d199092919063ffffffff16565b6108bd565b6001905092915050565b600061082461081d6108b5565b8484610a86565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361092c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610923906112f0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361099b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099290611382565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a799190611076565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aec90611414565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5b906114a6565b60405180910390fd5b610b6f838383610ea1565b610bda816040518060600160405280602681526020016115ca602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d199092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c6d816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d7d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d0c9190611076565b60405180910390a3505050565b6000838311158290610d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d589190610f36565b60405180910390fd5b5060008385610d7091906114f5565b9050809150509392505050565b6000808284610d8c9190611529565b905083811015610dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc8906115a9565b60405180910390fd5b8091505092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ee0578082015181840152602081019050610ec5565b60008484015250505050565b6000601f19601f8301169050919050565b6000610f0882610ea6565b610f128185610eb1565b9350610f22818560208601610ec2565b610f2b81610eec565b840191505092915050565b60006020820190508181036000830152610f508184610efd565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f8882610f5d565b9050919050565b610f9881610f7d565b8114610fa357600080fd5b50565b600081359050610fb581610f8f565b92915050565b6000819050919050565b610fce81610fbb565b8114610fd957600080fd5b50565b600081359050610feb81610fc5565b92915050565b6000806040838503121561100857611007610f58565b5b600061101685828601610fa6565b925050602061102785828601610fdc565b9150509250929050565b60008115159050919050565b61104681611031565b82525050565b6000602082019050611061600083018461103d565b92915050565b61107081610fbb565b82525050565b600060208201905061108b6000830184611067565b92915050565b6000806000606084860312156110aa576110a9610f58565b5b60006110b886828701610fa6565b93505060206110c986828701610fa6565b92505060406110da86828701610fdc565b9150509250925092565b600060ff82169050919050565b6110fa816110e4565b82525050565b600060208201905061111560008301846110f1565b92915050565b60006020828403121561113157611130610f58565b5b600061113f84828501610fa6565b91505092915050565b61115181610f7d565b82525050565b600060208201905061116c6000830184611148565b92915050565b6000806040838503121561118957611188610f58565b5b600061119785828601610fa6565b92505060206111a885828601610fa6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806111f957607f821691505b60208210810361120c5761120b6111b2565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611248602083610eb1565b915061125382611212565b602082019050919050565b600060208201905081810360008301526112778161123b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006112da602483610eb1565b91506112e58261127e565b604082019050919050565b60006020820190508181036000830152611309816112cd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061136c602283610eb1565b915061137782611310565b604082019050919050565b6000602082019050818103600083015261139b8161135f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006113fe602583610eb1565b9150611409826113a2565b604082019050919050565b6000602082019050818103600083015261142d816113f1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611490602383610eb1565b915061149b82611434565b604082019050919050565b600060208201905081810360008301526114bf81611483565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061150082610fbb565b915061150b83610fbb565b9250828203905081811115611523576115226114c6565b5b92915050565b600061153482610fbb565b915061153f83610fbb565b9250828201905080821115611557576115566114c6565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611593601b83610eb1565b915061159e8261155d565b602082019050919050565b600060208201905081810360008301526115c281611586565b905091905056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220be3c317421cca836c53726eba1212a814e39131140b5572d3a3163c97872425a64736f6c634300081a0033