60806040523480156200001157600080fd5b506040518060400160405280600581526020017f44554d4d590000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f646d790000000000000000000000000000000000000000000000000000000000815250816003908051906020019062000096929190620000b8565b508060049080519060200190620000af929190620000b8565b505050620001cd565b828054620000c69062000197565b90600052602060002090601f016020900481019282620000ea576000855562000136565b82601f106200010557805160ff191683800117855562000136565b8280016001018555821562000136579182015b828111156200013557825182559160200191906001019062000118565b5b50905062000145919062000149565b5090565b5b80821115620001645760008160009055506001016200014a565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620001b057607f821691505b60208210811415620001c757620001c662000168565b5b50919050565b6114e080620001dd6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806340c10f191161008c57806395d89b411161006657806395d89b4114610228578063a457c2d714610246578063a9059cbb14610276578063dd62ed3e146102a6576100cf565b806340c10f19146101be57806370a08231146101da5780638da5cb5b1461020a576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063313ce56714610170578063395093511461018e575b600080fd5b6100dc6102d6565b6040516100e99190610d04565b60405180910390f35b61010c60048036038101906101079190610dbf565b610368565b6040516101199190610e1a565b60405180910390f35b61012a61038b565b6040516101379190610e44565b60405180910390f35b61015a60048036038101906101559190610e5f565b610395565b6040516101679190610e1a565b60405180910390f35b6101786103c4565b6040516101859190610ece565b60405180910390f35b6101a860048036038101906101a39190610dbf565b6103cd565b6040516101b59190610e1a565b60405180910390f35b6101d860048036038101906101d39190610dbf565b610404565b005b6101f460048036038101906101ef9190610ee9565b610412565b6040516102019190610e44565b60405180910390f35b61021261045a565b60405161021f9190610f25565b60405180910390f35b610230610480565b60405161023d9190610d04565b60405180910390f35b610260600480360381019061025b9190610dbf565b610512565b60405161026d9190610e1a565b60405180910390f35b610290600480360381019061028b9190610dbf565b610589565b60405161029d9190610e1a565b60405180910390f35b6102c060048036038101906102bb9190610f40565b6105ac565b6040516102cd9190610e44565b60405180910390f35b6060600380546102e590610faf565b80601f016020809104026020016040519081016040528092919081815260200182805461031190610faf565b801561035e5780601f106103335761010080835404028352916020019161035e565b820191906000526020600020905b81548152906001019060200180831161034157829003601f168201915b5050505050905090565b600080610373610633565b905061038081858561063b565b600191505092915050565b6000600254905090565b6000806103a0610633565b90506103ad858285610806565b6103b8858585610892565b60019150509392505050565b60006012905090565b6000806103d8610633565b90506103f98185856103ea85896105ac565b6103f49190611010565b61063b565b600191505092915050565b61040e8282610b0a565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461048f90610faf565b80601f01602080910402602001604051908101604052809291908181526020018280546104bb90610faf565b80156105085780601f106104dd57610100808354040283529160200191610508565b820191906000526020600020905b8154815290600101906020018083116104eb57829003601f168201915b5050505050905090565b60008061051d610633565b9050600061052b82866105ac565b905083811015610570576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610567906110d8565b60405180910390fd5b61057d828686840361063b565b60019250505092915050565b600080610594610633565b90506105a1818585610892565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156106ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a29061116a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561071b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610712906111fc565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107f99190610e44565b60405180910390a3505050565b600061081284846105ac565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461088c578181101561087e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087590611268565b60405180910390fd5b61088b848484840361063b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f9906112fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610972576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109699061138c565b60405180910390fd5b61097d838383610c61565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fa9061141e565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610af19190610e44565b60405180910390a3610b04848484610c66565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b719061148a565b60405180910390fd5b610b8660008383610c61565b8060026000828254610b989190611010565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c499190610e44565b60405180910390a3610c5d60008383610c66565b5050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ca5578082015181840152602081019050610c8a565b83811115610cb4576000848401525b50505050565b6000601f19601f8301169050919050565b6000610cd682610c6b565b610ce08185610c76565b9350610cf0818560208601610c87565b610cf981610cba565b840191505092915050565b60006020820190508181036000830152610d1e8184610ccb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d5682610d2b565b9050919050565b610d6681610d4b565b8114610d7157600080fd5b50565b600081359050610d8381610d5d565b92915050565b6000819050919050565b610d9c81610d89565b8114610da757600080fd5b50565b600081359050610db981610d93565b92915050565b60008060408385031215610dd657610dd5610d26565b5b6000610de485828601610d74565b9250506020610df585828601610daa565b9150509250929050565b60008115159050919050565b610e1481610dff565b82525050565b6000602082019050610e2f6000830184610e0b565b92915050565b610e3e81610d89565b82525050565b6000602082019050610e596000830184610e35565b92915050565b600080600060608486031215610e7857610e77610d26565b5b6000610e8686828701610d74565b9350506020610e9786828701610d74565b9250506040610ea886828701610daa565b9150509250925092565b600060ff82169050919050565b610ec881610eb2565b82525050565b6000602082019050610ee36000830184610ebf565b92915050565b600060208284031215610eff57610efe610d26565b5b6000610f0d84828501610d74565b91505092915050565b610f1f81610d4b565b82525050565b6000602082019050610f3a6000830184610f16565b92915050565b60008060408385031215610f5757610f56610d26565b5b6000610f6585828601610d74565b9250506020610f7685828601610d74565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610fc757607f821691505b60208210811415610fdb57610fda610f80565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061101b82610d89565b915061102683610d89565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561105b5761105a610fe1565b5b828201905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006110c2602583610c76565b91506110cd82611066565b604082019050919050565b600060208201905081810360008301526110f1816110b5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611154602483610c76565b915061115f826110f8565b604082019050919050565b6000602082019050818103600083015261118381611147565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006111e6602283610c76565b91506111f18261118a565b604082019050919050565b60006020820190508181036000830152611215816111d9565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611252601d83610c76565b915061125d8261121c565b602082019050919050565b6000602082019050818103600083015261128181611245565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006112e4602583610c76565b91506112ef82611288565b604082019050919050565b60006020820190508181036000830152611313816112d7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611376602383610c76565b91506113818261131a565b604082019050919050565b600060208201905081810360008301526113a581611369565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611408602683610c76565b9150611413826113ac565b604082019050919050565b60006020820190508181036000830152611437816113fb565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611474601f83610c76565b915061147f8261143e565b602082019050919050565b600060208201905081810360008301526114a381611467565b905091905056fea2646970667358221220e57fc8b87476a19ed8d09f2e9aaf928ee2bd19ee834e2ceac84d4b6ba8c4b1fb64736f6c63430008090033