60806040525f60075f6101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555064056cc9ca2c62010cc0620000566200028860201b60201c565b600a620000649190620004ea565b6200007091906200053a565b6200007c91906200053a565b6008553480156200008b575f80fd5b5060405162001f8838038062001f888339818101604052810190620000b19190620005e9565b620000d1620000c56200029060201b60201c565b6200029760201b60201c565b6040518060400160405280600f81526020017f4c6567696f6e2056656e747572657300000000000000000000000000000000008152506003908162000117919062000874565b506040518060400160405280600681526020017f4c4547494f4e0000000000000000000000000000000000000000000000000000815250600490816200015e919062000874565b508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001af6200028860201b60201c565b600a620001bd9190620004ea565b633b9aca00620001ce91906200053a565b60028190555060025460055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60025460405162000279919062000969565b60405180910390a35062000984565b5f6012905090565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620003e257808604811115620003ba57620003b962000358565b5b6001851615620003ca5780820291505b8081029050620003da8562000385565b94506200039a565b94509492505050565b5f82620003fc5760019050620004ce565b816200040b575f9050620004ce565b81600181146200042457600281146200042f5762000465565b6001915050620004ce565b60ff84111562000444576200044362000358565b5b8360020a9150848211156200045e576200045d62000358565b5b50620004ce565b5060208310610133831016604e8410600b84101617156200049f5782820a90508381111562000499576200049862000358565b5b620004ce565b620004ae848484600162000391565b92509050818404811115620004c857620004c762000358565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620004f682620004d5565b91506200050383620004de565b9250620005327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620003eb565b905092915050565b5f6200054682620004d5565b91506200055383620004d5565b92508282026200056381620004d5565b915082820484148315176200057d576200057c62000358565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620005b38262000588565b9050919050565b620005c581620005a7565b8114620005d0575f80fd5b50565b5f81519050620005e381620005ba565b92915050565b5f6020828403121562000601576200060062000584565b5b5f6200061084828501620005d3565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200069557607f821691505b602082108103620006ab57620006aa62000650565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200070f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006d2565b6200071b8683620006d2565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6200075c620007566200075084620004d5565b62000733565b620004d5565b9050919050565b5f819050919050565b62000777836200073c565b6200078f620007868262000763565b848454620006de565b825550505050565b5f90565b620007a562000797565b620007b28184846200076c565b505050565b5b81811015620007d957620007cd5f826200079b565b600181019050620007b8565b5050565b601f8211156200082857620007f281620006b1565b620007fd84620006c3565b810160208510156200080d578190505b620008256200081c85620006c3565b830182620007b7565b50505b505050565b5f82821c905092915050565b5f6200084a5f19846008026200082d565b1980831691505092915050565b5f62000864838362000839565b9150826002028217905092915050565b6200087f8262000619565b67ffffffffffffffff8111156200089b576200089a62000623565b5b620008a782546200067d565b620008b4828285620007dd565b5f60209050601f831160018114620008ea575f8415620008d5578287015190505b620008e1858262000857565b86555062000950565b601f198416620008fa86620006b1565b5f5b828110156200092357848901518255600182019150602085019450602081019050620008fc565b868310156200094357848901516200093f601f89168262000839565b8355505b6001600288020188555050505b505050505050565b6200096381620004d5565b82525050565b5f6020820190506200097e5f83018462000958565b92915050565b6115f680620009925f395ff3fe608060405234801561000f575f80fd5b50600436106100e8575f3560e01c806370a082311161008a5780638da5cb5b116100645780638da5cb5b1461022457806395d89b4114610242578063a9059cbb14610260578063dd62ed3e14610290576100e8565b806370a08231146101e0578063715018a614610210578063751039fc1461021a576100e8565b806323b872dd116100c657806323b872dd14610158578063313ce567146101885780635c19a95c146101a65780636f268a99146101c2576100e8565b806306fdde03146100ec578063095ea7b31461010a57806318160ddd1461013a575b5f80fd5b6100f46102c0565b6040516101019190610e9a565b60405180910390f35b610124600480360381019061011f9190610f4b565b610350565b6040516101319190610fa3565b60405180910390f35b61014261036d565b60405161014f9190610fcb565b60405180910390f35b610172600480360381019061016d9190610fe4565b610376565b60405161017f9190610fa3565b60405180910390f35b6101906103a4565b60405161019d919061104f565b60405180910390f35b6101c060048036038101906101bb9190611068565b6103ac565b005b6101ca610498565b6040516101d791906110a2565b60405180910390f35b6101fa60048036038101906101f59190611068565b6104bd565b6040516102079190610fcb565b60405180910390f35b610218610503565b005b610222610516565b005b61022c61063e565b60405161023991906110a2565b60405180910390f35b61024a610665565b6040516102579190610e9a565b60405180910390f35b61027a60048036038101906102759190610f4b565b6106f5565b6040516102879190610fa3565b60405180910390f35b6102aa60048036038101906102a591906110bb565b610712565b6040516102b79190610fcb565b60405180910390f35b6060600380546102cf90611126565b80601f01602080910402602001604051908101604052809291908181526020018280546102fb90611126565b80156103465780601f1061031d57610100808354040283529160200191610346565b820191905f5260205f20905b81548152906001019060200180831161032957829003601f168201915b5050505050905090565b5f61036361035c610794565b848461079b565b6001905092915050565b5f600254905090565b5f80610380610794565b905061038d85828561095e565b6103988585856109f2565b60019150509392505050565b5f6012905090565b600115610495576103bb610794565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610412575f80fd5b60075f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1660055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461048d9190611183565b925050819055505b50565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61050b610cd1565b6105145f610d4f565b565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610556610794565b73ffffffffffffffffffffffffffffffffffffffff160361063c57610579610794565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105d0575f80fd5b5f6105d9610794565b90505f8190505f81905060085460055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461063191906111c4565b925050819055505050505b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461067490611126565b80601f01602080910402602001604051908101604052809291908181526020018280546106a090611126565b80156106eb5780601f106106c2576101008083540402835291602001916106eb565b820191905f5260205f20905b8154815290600101906020018083116106ce57829003601f168201915b5050505050905090565b5f610708610701610794565b84846109f2565b6001905092915050565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080090611267565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086e906112f5565b60405180910390fd5b8060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109519190610fcb565b60405180910390a3505050565b5f6109698484610712565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109ec57818110156109d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cc9061135d565b60405180910390fd5b6109eb848484846109e6919061137b565b61079b565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a579061141e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac5906114ac565b60405180910390fd5b5f60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b499061153a565b60405180910390fd5b8160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610b9b919061137b565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c2591906111c4565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610cc39190610fcb565b60405180910390a350505050565b610cd9610794565b73ffffffffffffffffffffffffffffffffffffffff16610cf761063e565b73ffffffffffffffffffffffffffffffffffffffff1614610d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d44906115a2565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610e47578082015181840152602081019050610e2c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610e6c82610e10565b610e768185610e1a565b9350610e86818560208601610e2a565b610e8f81610e52565b840191505092915050565b5f6020820190508181035f830152610eb28184610e62565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610ee782610ebe565b9050919050565b610ef781610edd565b8114610f01575f80fd5b50565b5f81359050610f1281610eee565b92915050565b5f819050919050565b610f2a81610f18565b8114610f34575f80fd5b50565b5f81359050610f4581610f21565b92915050565b5f8060408385031215610f6157610f60610eba565b5b5f610f6e85828601610f04565b9250506020610f7f85828601610f37565b9150509250929050565b5f8115159050919050565b610f9d81610f89565b82525050565b5f602082019050610fb65f830184610f94565b92915050565b610fc581610f18565b82525050565b5f602082019050610fde5f830184610fbc565b92915050565b5f805f60608486031215610ffb57610ffa610eba565b5b5f61100886828701610f04565b935050602061101986828701610f04565b925050604061102a86828701610f37565b9150509250925092565b5f60ff82169050919050565b61104981611034565b82525050565b5f6020820190506110625f830184611040565b92915050565b5f6020828403121561107d5761107c610eba565b5b5f61108a84828501610f04565b91505092915050565b61109c81610edd565b82525050565b5f6020820190506110b55f830184611093565b92915050565b5f80604083850312156110d1576110d0610eba565b5b5f6110de85828601610f04565b92505060206110ef85828601610f04565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061113d57607f821691505b6020821081036111505761114f6110f9565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61118d82610f18565b915061119883610f18565b92508282026111a681610f18565b915082820484148315176111bd576111bc611156565b5b5092915050565b5f6111ce82610f18565b91506111d983610f18565b92508282019050808211156111f1576111f0611156565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611251602483610e1a565b915061125c826111f7565b604082019050919050565b5f6020820190508181035f83015261127e81611245565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6112df602283610e1a565b91506112ea82611285565b604082019050919050565b5f6020820190508181035f83015261130c816112d3565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f611347601d83610e1a565b915061135282611313565b602082019050919050565b5f6020820190508181035f8301526113748161133b565b9050919050565b5f61138582610f18565b915061139083610f18565b92508282039050818111156113a8576113a7611156565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611408602583610e1a565b9150611413826113ae565b604082019050919050565b5f6020820190508181035f830152611435816113fc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611496602383610e1a565b91506114a18261143c565b604082019050919050565b5f6020820190508181035f8301526114c38161148a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f611524602683610e1a565b915061152f826114ca565b604082019050919050565b5f6020820190508181035f83015261155181611518565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61158c602083610e1a565b915061159782611558565b602082019050919050565b5f6020820190508181035f8301526115b981611580565b905091905056fea264697066735822122043db5d8a8c5742116a311b6adfb1bc09d1c4125646bafe48c96845afed00496164736f6c63430008140033000000000000000000000000ce853c24b254baad32065bf97a279b43960c47ab