60806040525f60075f6101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555064056cc9ca2c62010cc0620000566200028960201b60201c565b600a620000649190620004eb565b6200007091906200053b565b6200007c91906200053b565b6008553480156200008b575f80fd5b5060405162001f8938038062001f898339818101604052810190620000b19190620005ea565b620000d1620000c56200029160201b60201c565b6200029860201b60201c565b6040518060400160405280600481526020017f4d6f6465000000000000000000000000000000000000000000000000000000008152506003908162000117919062000875565b506040518060400160405280600481526020017f4d4f444500000000000000000000000000000000000000000000000000000000815250600490816200015e919062000875565b508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001af6200028960201b60201c565b600a620001bd9190620004eb565b6402540be400620001cf91906200053b565b60028190555060025460055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6002546040516200027a91906200096a565b60405180910390a35062000985565b5f6012905090565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620003e357808604811115620003bb57620003ba62000359565b5b6001851615620003cb5780820291505b8081029050620003db8562000386565b94506200039b565b94509492505050565b5f82620003fd5760019050620004cf565b816200040c575f9050620004cf565b8160018114620004255760028114620004305762000466565b6001915050620004cf565b60ff84111562000445576200044462000359565b5b8360020a9150848211156200045f576200045e62000359565b5b50620004cf565b5060208310610133831016604e8410600b8410161715620004a05782820a9050838111156200049a576200049962000359565b5b620004cf565b620004af848484600162000392565b92509050818404811115620004c957620004c862000359565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620004f782620004d6565b91506200050483620004df565b9250620005337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620003ec565b905092915050565b5f6200054782620004d6565b91506200055483620004d6565b92508282026200056481620004d6565b915082820484148315176200057e576200057d62000359565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620005b48262000589565b9050919050565b620005c681620005a8565b8114620005d1575f80fd5b50565b5f81519050620005e481620005bb565b92915050565b5f6020828403121562000602576200060162000585565b5b5f6200061184828501620005d4565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200069657607f821691505b602082108103620006ac57620006ab62000651565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620007107fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006d3565b6200071c8683620006d3565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6200075d620007576200075184620004d6565b62000734565b620004d6565b9050919050565b5f819050919050565b62000778836200073d565b62000790620007878262000764565b848454620006df565b825550505050565b5f90565b620007a662000798565b620007b38184846200076d565b505050565b5b81811015620007da57620007ce5f826200079c565b600181019050620007b9565b5050565b601f8211156200082957620007f381620006b2565b620007fe84620006c4565b810160208510156200080e578190505b620008266200081d85620006c4565b830182620007b8565b50505b505050565b5f82821c905092915050565b5f6200084b5f19846008026200082e565b1980831691505092915050565b5f6200086583836200083a565b9150826002028217905092915050565b62000880826200061a565b67ffffffffffffffff8111156200089c576200089b62000624565b5b620008a882546200067e565b620008b5828285620007de565b5f60209050601f831160018114620008eb575f8415620008d6578287015190505b620008e2858262000858565b86555062000951565b601f198416620008fb86620006b2565b5f5b828110156200092457848901518255600182019150602085019450602081019050620008fd565b8683101562000944578489015162000940601f8916826200083a565b8355505b6001600288020188555050505b505050505050565b6200096481620004d6565b82525050565b5f6020820190506200097f5f83018462000959565b92915050565b6115f680620009935f395ff3fe608060405234801561000f575f80fd5b50600436106100e8575f3560e01c806370a082311161008a5780638da5cb5b116100645780638da5cb5b1461022457806395d89b4114610242578063a9059cbb14610260578063dd62ed3e14610290576100e8565b806370a08231146101e0578063715018a614610210578063751039fc1461021a576100e8565b806323b872dd116100c657806323b872dd14610158578063313ce567146101885780635c19a95c146101a65780636f268a99146101c2576100e8565b806306fdde03146100ec578063095ea7b31461010a57806318160ddd1461013a575b5f80fd5b6100f46102c0565b6040516101019190610e9a565b60405180910390f35b610124600480360381019061011f9190610f4b565b610350565b6040516101319190610fa3565b60405180910390f35b61014261036d565b60405161014f9190610fcb565b60405180910390f35b610172600480360381019061016d9190610fe4565b610376565b60405161017f9190610fa3565b60405180910390f35b6101906103a4565b60405161019d919061104f565b60405180910390f35b6101c060048036038101906101bb9190611068565b6103ac565b005b6101ca610498565b6040516101d791906110a2565b60405180910390f35b6101fa60048036038101906101f59190611068565b6104bd565b6040516102079190610fcb565b60405180910390f35b610218610503565b005b610222610516565b005b61022c61063e565b60405161023991906110a2565b60405180910390f35b61024a610665565b6040516102579190610e9a565b60405180910390f35b61027a60048036038101906102759190610f4b565b6106f5565b6040516102879190610fa3565b60405180910390f35b6102aa60048036038101906102a591906110bb565b610712565b6040516102b79190610fcb565b60405180910390f35b6060600380546102cf90611126565b80601f01602080910402602001604051908101604052809291908181526020018280546102fb90611126565b80156103465780601f1061031d57610100808354040283529160200191610346565b820191905f5260205f20905b81548152906001019060200180831161032957829003601f168201915b5050505050905090565b5f61036361035c610794565b848461079b565b6001905092915050565b5f600254905090565b5f80610380610794565b905061038d85828561095e565b6103988585856109f2565b60019150509392505050565b5f6012905090565b600115610495576103bb610794565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610412575f80fd5b60075f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1660055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461048d9190611183565b925050819055505b50565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61050b610cd1565b6105145f610d4f565b565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610556610794565b73ffffffffffffffffffffffffffffffffffffffff160361063c57610579610794565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105d0575f80fd5b5f6105d9610794565b90505f8190505f81905060085460055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461063191906111c4565b925050819055505050505b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461067490611126565b80601f01602080910402602001604051908101604052809291908181526020018280546106a090611126565b80156106eb5780601f106106c2576101008083540402835291602001916106eb565b820191905f5260205f20905b8154815290600101906020018083116106ce57829003601f168201915b5050505050905090565b5f610708610701610794565b84846109f2565b6001905092915050565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080090611267565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086e906112f5565b60405180910390fd5b8060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109519190610fcb565b60405180910390a3505050565b5f6109698484610712565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109ec57818110156109d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cc9061135d565b60405180910390fd5b6109eb848484846109e6919061137b565b61079b565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a579061141e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac5906114ac565b60405180910390fd5b5f60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b499061153a565b60405180910390fd5b8160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610b9b919061137b565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c2591906111c4565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610cc39190610fcb565b60405180910390a350505050565b610cd9610794565b73ffffffffffffffffffffffffffffffffffffffff16610cf761063e565b73ffffffffffffffffffffffffffffffffffffffff1614610d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d44906115a2565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610e47578082015181840152602081019050610e2c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610e6c82610e10565b610e768185610e1a565b9350610e86818560208601610e2a565b610e8f81610e52565b840191505092915050565b5f6020820190508181035f830152610eb28184610e62565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610ee782610ebe565b9050919050565b610ef781610edd565b8114610f01575f80fd5b50565b5f81359050610f1281610eee565b92915050565b5f819050919050565b610f2a81610f18565b8114610f34575f80fd5b50565b5f81359050610f4581610f21565b92915050565b5f8060408385031215610f6157610f60610eba565b5b5f610f6e85828601610f04565b9250506020610f7f85828601610f37565b9150509250929050565b5f8115159050919050565b610f9d81610f89565b82525050565b5f602082019050610fb65f830184610f94565b92915050565b610fc581610f18565b82525050565b5f602082019050610fde5f830184610fbc565b92915050565b5f805f60608486031215610ffb57610ffa610eba565b5b5f61100886828701610f04565b935050602061101986828701610f04565b925050604061102a86828701610f37565b9150509250925092565b5f60ff82169050919050565b61104981611034565b82525050565b5f6020820190506110625f830184611040565b92915050565b5f6020828403121561107d5761107c610eba565b5b5f61108a84828501610f04565b91505092915050565b61109c81610edd565b82525050565b5f6020820190506110b55f830184611093565b92915050565b5f80604083850312156110d1576110d0610eba565b5b5f6110de85828601610f04565b92505060206110ef85828601610f04565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061113d57607f821691505b6020821081036111505761114f6110f9565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61118d82610f18565b915061119883610f18565b92508282026111a681610f18565b915082820484148315176111bd576111bc611156565b5b5092915050565b5f6111ce82610f18565b91506111d983610f18565b92508282019050808211156111f1576111f0611156565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611251602483610e1a565b915061125c826111f7565b604082019050919050565b5f6020820190508181035f83015261127e81611245565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6112df602283610e1a565b91506112ea82611285565b604082019050919050565b5f6020820190508181035f83015261130c816112d3565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f611347601d83610e1a565b915061135282611313565b602082019050919050565b5f6020820190508181035f8301526113748161133b565b9050919050565b5f61138582610f18565b915061139083610f18565b92508282039050818111156113a8576113a7611156565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611408602583610e1a565b9150611413826113ae565b604082019050919050565b5f6020820190508181035f830152611435816113fc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611496602383610e1a565b91506114a18261143c565b604082019050919050565b5f6020820190508181035f8301526114c38161148a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f611524602683610e1a565b915061152f826114ca565b604082019050919050565b5f6020820190508181035f83015261155181611518565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61158c602083610e1a565b915061159782611558565b602082019050919050565b5f6020820190508181035f8301526115b981611580565b905091905056fea2646970667358221220251640b01d406bb742bd9a130cf78df04045a341b9f705f0565978dede472d5664736f6c6343000814003300000000000000000000000085868b457a8e05121c0ad2594956f0684839bb7c