60806040523480156200001157600080fd5b506040518060400160405280600481526020017f54494d45000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f54494d450000000000000000000000000000000000000000000000000000000081525081600390816200008f9190620005d9565b508060049081620000a19190620005d9565b50505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000620000f76200013260201b60201c565b600a62000105919062000850565b6401aef10b80620001179190620008a1565b90506200012b33826200013b60201b60201c565b5062000a4a565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620001ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001a4906200094d565b60405180910390fd5b620001c160008383620002a860201b60201c565b8060026000828254620001d591906200096f565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002889190620009bb565b60405180910390a3620002a4600083836200035560201b60201c565b5050565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161562000338576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200032f9062000a28565b60405180910390fd5b620003508383836200035a60201b6200090f1760201c565b505050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003e157607f821691505b602082108103620003f757620003f662000399565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004617fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000422565b6200046d868362000422565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004ba620004b4620004ae8462000485565b6200048f565b62000485565b9050919050565b6000819050919050565b620004d68362000499565b620004ee620004e582620004c1565b8484546200042f565b825550505050565b600090565b62000505620004f6565b62000512818484620004cb565b505050565b5b818110156200053a576200052e600082620004fb565b60018101905062000518565b5050565b601f82111562000589576200055381620003fd565b6200055e8462000412565b810160208510156200056e578190505b620005866200057d8562000412565b83018262000517565b50505b505050565b600082821c905092915050565b6000620005ae600019846008026200058e565b1980831691505092915050565b6000620005c983836200059b565b9150826002028217905092915050565b620005e4826200035f565b67ffffffffffffffff8111156200060057620005ff6200036a565b5b6200060c8254620003c8565b620006198282856200053e565b600060209050601f8311600181146200065157600084156200063c578287015190505b620006488582620005bb565b865550620006b8565b601f1984166200066186620003fd565b60005b828110156200068b5784890151825560018201915060208501945060208101905062000664565b86831015620006ab5784890151620006a7601f8916826200059b565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200074e57808604811115620007265762000725620006c0565b5b6001851615620007365780820291505b80810290506200074685620006ef565b945062000706565b94509492505050565b6000826200076957600190506200083c565b816200077957600090506200083c565b81600181146200079257600281146200079d57620007d3565b60019150506200083c565b60ff841115620007b257620007b1620006c0565b5b8360020a915084821115620007cc57620007cb620006c0565b5b506200083c565b5060208310610133831016604e8410600b84101617156200080d5782820a905083811115620008075762000806620006c0565b5b6200083c565b6200081c8484846001620006fc565b92509050818404811115620008365762000835620006c0565b5b81810290505b9392505050565b600060ff82169050919050565b60006200085d8262000485565b91506200086a8362000843565b9250620008997fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000757565b905092915050565b6000620008ae8262000485565b9150620008bb8362000485565b9250828202620008cb8162000485565b91508282048414831517620008e557620008e4620006c0565b5b5092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000935601f83620008ec565b91506200094282620008fd565b602082019050919050565b60006020820190508181036000830152620009688162000926565b9050919050565b60006200097c8262000485565b9150620009898362000485565b9250828201905080821115620009a457620009a3620006c0565b5b92915050565b620009b58162000485565b82525050565b6000602082019050620009d26000830184620009aa565b92915050565b7f416d6f756e74206973206c6f776572207468616e207265717569726564000000600082015250565b600062000a10601d83620008ec565b915062000a1d82620009d8565b602082019050919050565b6000602082019050818103600083015262000a438162000a01565b9050919050565b611aee8062000a5a6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a2578063a457c2d711610071578063a457c2d7146102cc578063a4609d71146102fc578063a9059cbb14610318578063dd62ed3e14610348578063f851a440146103785761010b565b806370a082311461023257806379cc6790146102625780638e9c66cb1461027e57806395d89b41146102ae5761010b565b8063313ce567116100de578063313ce567146101ac57806339509351146101ca57806342966c68146101fa5780636fd5d123146102165761010b565b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015e57806323b872dd1461017c575b600080fd5b610118610396565b60405161012591906110e6565b60405180910390f35b610148600480360381019061014391906111a1565b610428565b60405161015591906111fc565b60405180910390f35b61016661044b565b6040516101739190611226565b60405180910390f35b61019660048036038101906101919190611241565b610455565b6040516101a391906111fc565b60405180910390f35b6101b4610484565b6040516101c191906112b0565b60405180910390f35b6101e460048036038101906101df91906111a1565b61048d565b6040516101f191906111fc565b60405180910390f35b610214600480360381019061020f91906112cb565b6104c4565b005b610230600480360381019061022b91906112f8565b6104d8565b005b61024c600480360381019061024791906112f8565b6105c3565b6040516102599190611226565b60405180910390f35b61027c600480360381019061027791906111a1565b61060b565b005b610298600480360381019061029391906112f8565b61062b565b6040516102a591906111fc565b60405180910390f35b6102b661064b565b6040516102c391906110e6565b60405180910390f35b6102e660048036038101906102e191906111a1565b6106dd565b6040516102f391906111fc565b60405180910390f35b610316600480360381019061031191906112f8565b610754565b005b610332600480360381019061032d91906111a1565b61083f565b60405161033f91906111fc565b60405180910390f35b610362600480360381019061035d9190611325565b610862565b60405161036f9190611226565b60405180910390f35b6103806108e9565b60405161038d9190611374565b60405180910390f35b6060600380546103a5906113be565b80601f01602080910402602001604051908101604052809291908181526020018280546103d1906113be565b801561041e5780601f106103f35761010080835404028352916020019161041e565b820191906000526020600020905b81548152906001019060200180831161040157829003601f168201915b5050505050905090565b600080610433610914565b905061044081858561091c565b600191505092915050565b6000600254905090565b600080610460610914565b905061046d858285610ae5565b610478858585610b71565b60019150509392505050565b60006012905090565b600080610498610914565b90506104b98185856104aa8589610862565b6104b4919061141e565b61091c565b600191505092915050565b6104d56104cf610914565b82610de7565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055f906114c4565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61061d82610617610914565b83610ae5565b6106278282610de7565b5050565b60066020528060005260406000206000915054906101000a900460ff1681565b60606004805461065a906113be565b80601f0160208091040260200160405190810160405280929190818152602001828054610686906113be565b80156106d35780601f106106a8576101008083540402835291602001916106d3565b820191906000526020600020905b8154815290600101906020018083116106b657829003601f168201915b5050505050905090565b6000806106e8610914565b905060006106f68286610862565b90508381101561073b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073290611556565b60405180910390fd5b610748828686840361091c565b60019250505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107db906115c2565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008061084a610914565b9050610857818585610b71565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361098b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098290611654565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f1906116e6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ad89190611226565b60405180910390a3505050565b6000610af18484610862565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b6b5781811015610b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5490611752565b60405180910390fd5b610b6a848484840361091c565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd7906117e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4690611876565b60405180910390fd5b610c5a838383610fb4565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd790611908565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610dce9190611226565b60405180910390a3610de1848484611051565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4d9061199a565b60405180910390fd5b610e6282600083610fb4565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf90611a2c565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f9b9190611226565b60405180910390a3610faf83600084611051565b505050565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103890611a98565b60405180910390fd5b61104c83838361090f565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611090578082015181840152602081019050611075565b60008484015250505050565b6000601f19601f8301169050919050565b60006110b882611056565b6110c28185611061565b93506110d2818560208601611072565b6110db8161109c565b840191505092915050565b6000602082019050818103600083015261110081846110ad565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006111388261110d565b9050919050565b6111488161112d565b811461115357600080fd5b50565b6000813590506111658161113f565b92915050565b6000819050919050565b61117e8161116b565b811461118957600080fd5b50565b60008135905061119b81611175565b92915050565b600080604083850312156111b8576111b7611108565b5b60006111c685828601611156565b92505060206111d78582860161118c565b9150509250929050565b60008115159050919050565b6111f6816111e1565b82525050565b600060208201905061121160008301846111ed565b92915050565b6112208161116b565b82525050565b600060208201905061123b6000830184611217565b92915050565b60008060006060848603121561125a57611259611108565b5b600061126886828701611156565b935050602061127986828701611156565b925050604061128a8682870161118c565b9150509250925092565b600060ff82169050919050565b6112aa81611294565b82525050565b60006020820190506112c560008301846112a1565b92915050565b6000602082840312156112e1576112e0611108565b5b60006112ef8482850161118c565b91505092915050565b60006020828403121561130e5761130d611108565b5b600061131c84828501611156565b91505092915050565b6000806040838503121561133c5761133b611108565b5b600061134a85828601611156565b925050602061135b85828601611156565b9150509250929050565b61136e8161112d565b82525050565b60006020820190506113896000830184611365565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806113d657607f821691505b6020821081036113e9576113e861138f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006114298261116b565b91506114348361116b565b925082820190508082111561144c5761144b6113ef565b5b92915050565b7f4f6e6c792061646d696e2063616e2072656d6f76652066726f6d20626c61636b60008201527f6c69737400000000000000000000000000000000000000000000000000000000602082015250565b60006114ae602483611061565b91506114b982611452565b604082019050919050565b600060208201905081810360008301526114dd816114a1565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611540602583611061565b915061154b826114e4565b604082019050919050565b6000602082019050818103600083015261156f81611533565b9050919050565b7f4f6e6c792061646d696e2063616e2061646420746f20626c61636b6c69737400600082015250565b60006115ac601f83611061565b91506115b782611576565b602082019050919050565b600060208201905081810360008301526115db8161159f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061163e602483611061565b9150611649826115e2565b604082019050919050565b6000602082019050818103600083015261166d81611631565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006116d0602283611061565b91506116db82611674565b604082019050919050565b600060208201905081810360008301526116ff816116c3565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061173c601d83611061565b915061174782611706565b602082019050919050565b6000602082019050818103600083015261176b8161172f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006117ce602583611061565b91506117d982611772565b604082019050919050565b600060208201905081810360008301526117fd816117c1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611860602383611061565b915061186b82611804565b604082019050919050565b6000602082019050818103600083015261188f81611853565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006118f2602683611061565b91506118fd82611896565b604082019050919050565b60006020820190508181036000830152611921816118e5565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611984602183611061565b915061198f82611928565b604082019050919050565b600060208201905081810360008301526119b381611977565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611a16602283611061565b9150611a21826119ba565b604082019050919050565b60006020820190508181036000830152611a4581611a09565b9050919050565b7f416d6f756e74206973206c6f776572207468616e207265717569726564000000600082015250565b6000611a82601d83611061565b9150611a8d82611a4c565b602082019050919050565b60006020820190508181036000830152611ab181611a75565b905091905056fea2646970667358221220ffb753ae599e2a7e763b519da6cf925d21ab356078ee48d484d20c5ba339d59164736f6c63430008120033