61010060405234801562000011575f80fd5b5060405162001f1b38038062001f1b8339818101604052810190620000379190620003ca565b81816012825f90816200004b919062000684565b5081600190816200005d919062000684565b508060ff1660808160ff16815250504660c0818152505062000084620000e860201b60201c565b60e081815250503373ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050505050620000e0336be04eef7ff6825b5a4d3000006200017660201b60201c565b505062000973565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f6040516200011a919062000810565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646306040516020016200015b95949392919062000896565b60405160208183030381529060405280519060200120905090565b8060025f8282546200018991906200091e565b925050819055508060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000239919062000958565b60405180910390a35050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b620002a6826200025e565b810181811067ffffffffffffffff82111715620002c857620002c76200026e565b5b80604052505050565b5f620002dc62000245565b9050620002ea82826200029b565b919050565b5f67ffffffffffffffff8211156200030c576200030b6200026e565b5b62000317826200025e565b9050602081019050919050565b5f5b838110156200034357808201518184015260208101905062000326565b5f8484015250505050565b5f620003646200035e84620002ef565b620002d1565b9050828152602081018484840111156200038357620003826200025a565b5b6200039084828562000324565b509392505050565b5f82601f830112620003af57620003ae62000256565b5b8151620003c18482602086016200034e565b91505092915050565b5f8060408385031215620003e357620003e26200024e565b5b5f83015167ffffffffffffffff81111562000403576200040262000252565b5b620004118582860162000398565b925050602083015167ffffffffffffffff81111562000435576200043462000252565b5b620004438582860162000398565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200049c57607f821691505b602082108103620004b257620004b162000457565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620005167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004d9565b620005228683620004d9565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200056c6200056662000560846200053a565b62000543565b6200053a565b9050919050565b5f819050919050565b62000587836200054c565b6200059f620005968262000573565b848454620004e5565b825550505050565b5f90565b620005b5620005a7565b620005c28184846200057c565b505050565b5b81811015620005e957620005dd5f82620005ab565b600181019050620005c8565b5050565b601f82111562000638576200060281620004b8565b6200060d84620004ca565b810160208510156200061d578190505b620006356200062c85620004ca565b830182620005c7565b50505b505050565b5f82821c905092915050565b5f6200065a5f19846008026200063d565b1980831691505092915050565b5f62000674838362000649565b9150826002028217905092915050565b6200068f826200044d565b67ffffffffffffffff811115620006ab57620006aa6200026e565b5b620006b7825462000484565b620006c4828285620005ed565b5f60209050601f831160018114620006fa575f8415620006e5578287015190505b620006f1858262000667565b86555062000760565b601f1984166200070a86620004b8565b5f5b8281101562000733578489015182556001820191506020850194506020810190506200070c565b868310156200075357848901516200074f601f89168262000649565b8355505b6001600288020188555050505b505050505050565b5f81905092915050565b5f819050815f5260205f209050919050565b5f8154620007928162000484565b6200079e818662000768565b9450600182165f8114620007bb5760018114620007d15762000807565b60ff198316865281151582028601935062000807565b620007dc8562000772565b5f5b83811015620007ff57815481890152600182019150602081019050620007de565b838801955050505b50505092915050565b5f6200081d828462000784565b915081905092915050565b5f819050919050565b6200083c8162000828565b82525050565b6200084d816200053a565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200087e8262000853565b9050919050565b620008908162000872565b82525050565b5f60a082019050620008ab5f83018862000831565b620008ba602083018762000831565b620008c9604083018662000831565b620008d8606083018562000842565b620008e7608083018462000885565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200092a826200053a565b915062000937836200053a565b9250828201905080821115620009525762000951620008f1565b5b92915050565b5f6020820190506200096d5f83018462000842565b92915050565b60805160a05160c05160e05161156d620009ae5f395f61071e01525f6106ea01525f81816107fb015261085a01525f6106c5015261156d5ff3fe608060405234801561000f575f80fd5b50600436106100e8575f3560e01c806370a082311161008a57806399602dc21161006457806399602dc214610260578063a9059cbb1461026a578063d505accf1461029a578063dd62ed3e146102b6576100e8565b806370a08231146101e25780637ecebe001461021257806395d89b4114610242576100e8565b806323b872dd116100c657806323b872dd1461015857806330adf81f14610188578063313ce567146101a65780633644e515146101c4576100e8565b806306fdde03146100ec578063095ea7b31461010a57806318160ddd1461013a575b5f80fd5b6100f46102e6565b6040516101019190610df3565b60405180910390f35b610124600480360381019061011f9190610ea4565b610371565b6040516101319190610efc565b60405180910390f35b61014261045e565b60405161014f9190610f24565b60405180910390f35b610172600480360381019061016d9190610f3d565b610464565b60405161017f9190610efc565b60405180910390f35b61019061069f565b60405161019d9190610fa5565b60405180910390f35b6101ae6106c3565b6040516101bb9190610fd9565b60405180910390f35b6101cc6106e7565b6040516101d99190610fa5565b60405180910390f35b6101fc60048036038101906101f79190610ff2565b610743565b6040516102099190610f24565b60405180910390f35b61022c60048036038101906102279190610ff2565b610758565b6040516102399190610f24565b60405180910390f35b61024a61076d565b6040516102579190610df3565b60405180910390f35b6102686107f9565b005b610284600480360381019061027f9190610ea4565b6108c0565b6040516102919190610efc565b60405180910390f35b6102b460048036038101906102af9190611071565b6109cd565b005b6102d060048036038101906102cb919061110e565b610cbf565b6040516102dd9190610f24565b60405180910390f35b5f80546102f290611179565b80601f016020809104026020016040519081016040528092919081815260200182805461031e90611179565b80156103695780601f1061034057610100808354040283529160200191610369565b820191905f5260205f20905b81548152906001019060200180831161034c57829003601f168201915b505050505081565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161044c9190610f24565b60405180910390a36001905092915050565b60025481565b5f8060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059157828161051491906111d6565b60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b8260035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105dd91906111d6565b925050819055508260035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161068b9190610f24565b60405180910390a360019150509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f0000000000000000000000000000000000000000000000000000000000000000461461071c57610717610cdf565b61073e565b7f00000000000000000000000000000000000000000000000000000000000000005b905090565b6003602052805f5260405f205f915090505481565b6005602052805f5260405f205f915090505481565b6001805461077a90611179565b80601f01602080910402602001604051908101604052809291908181526020018280546107a690611179565b80156107f15780601f106107c8576101008083540402835291602001916107f1565b820191905f5260205f20905b8154815290600101906020018083116107d457829003601f168201915b505050505081565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610850575f80fd5b600280540260035f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282540192505081905550565b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461090d91906111d6565b925050819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516109bb9190610f24565b60405180910390a36001905092915050565b42841015610a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0790611253565b60405180910390fd5b5f610a196106e7565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c989898960055f8e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050558a604051602001610a9e96959493929190611280565b60405160208183030381529060405280519060200120604051602001610ac5929190611353565b6040516020818303038152906040528051906020012090505f6001828686866040515f8152602001604052604051610b009493929190611389565b6020604051602081039080840390855afa158015610b20573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015610b9357508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc990611416565b60405180910390fd5b8660045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051610cae9190610f24565b60405180910390a350505050505050565b6004602052815f5260405f20602052805f5260405f205f91509150505481565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f604051610d0f91906114d0565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001610d4e9594939291906114e6565b60405160208183030381529060405280519060200120905090565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610da0578082015181840152602081019050610d85565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610dc582610d69565b610dcf8185610d73565b9350610ddf818560208601610d83565b610de881610dab565b840191505092915050565b5f6020820190508181035f830152610e0b8184610dbb565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610e4082610e17565b9050919050565b610e5081610e36565b8114610e5a575f80fd5b50565b5f81359050610e6b81610e47565b92915050565b5f819050919050565b610e8381610e71565b8114610e8d575f80fd5b50565b5f81359050610e9e81610e7a565b92915050565b5f8060408385031215610eba57610eb9610e13565b5b5f610ec785828601610e5d565b9250506020610ed885828601610e90565b9150509250929050565b5f8115159050919050565b610ef681610ee2565b82525050565b5f602082019050610f0f5f830184610eed565b92915050565b610f1e81610e71565b82525050565b5f602082019050610f375f830184610f15565b92915050565b5f805f60608486031215610f5457610f53610e13565b5b5f610f6186828701610e5d565b9350506020610f7286828701610e5d565b9250506040610f8386828701610e90565b9150509250925092565b5f819050919050565b610f9f81610f8d565b82525050565b5f602082019050610fb85f830184610f96565b92915050565b5f60ff82169050919050565b610fd381610fbe565b82525050565b5f602082019050610fec5f830184610fca565b92915050565b5f6020828403121561100757611006610e13565b5b5f61101484828501610e5d565b91505092915050565b61102681610fbe565b8114611030575f80fd5b50565b5f813590506110418161101d565b92915050565b61105081610f8d565b811461105a575f80fd5b50565b5f8135905061106b81611047565b92915050565b5f805f805f805f60e0888a03121561108c5761108b610e13565b5b5f6110998a828b01610e5d565b97505060206110aa8a828b01610e5d565b96505060406110bb8a828b01610e90565b95505060606110cc8a828b01610e90565b94505060806110dd8a828b01611033565b93505060a06110ee8a828b0161105d565b92505060c06110ff8a828b0161105d565b91505092959891949750929550565b5f806040838503121561112457611123610e13565b5b5f61113185828601610e5d565b925050602061114285828601610e5d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061119057607f821691505b6020821081036111a3576111a261114c565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6111e082610e71565b91506111eb83610e71565b9250828203905081811115611203576112026111a9565b5b92915050565b7f5045524d49545f444541444c494e455f455850495245440000000000000000005f82015250565b5f61123d601783610d73565b915061124882611209565b602082019050919050565b5f6020820190508181035f83015261126a81611231565b9050919050565b61127a81610e36565b82525050565b5f60c0820190506112935f830189610f96565b6112a06020830188611271565b6112ad6040830187611271565b6112ba6060830186610f15565b6112c76080830185610f15565b6112d460a0830184610f15565b979650505050505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f61131d6002836112df565b9150611328826112e9565b600282019050919050565b5f819050919050565b61134d61134882610f8d565b611333565b82525050565b5f61135d82611311565b9150611369828561133c565b602082019150611379828461133c565b6020820191508190509392505050565b5f60808201905061139c5f830187610f96565b6113a96020830186610fca565b6113b66040830185610f96565b6113c36060830184610f96565b95945050505050565b7f494e56414c49445f5349474e45520000000000000000000000000000000000005f82015250565b5f611400600e83610d73565b915061140b826113cc565b602082019050919050565b5f6020820190508181035f83015261142d816113f4565b9050919050565b5f81905092915050565b5f819050815f5260205f209050919050565b5f815461145c81611179565b6114668186611434565b9450600182165f81146114805760018114611495576114c7565b60ff19831686528115158202860193506114c7565b61149e8561143e565b5f5b838110156114bf578154818901526001820191506020810190506114a0565b838801955050505b50505092915050565b5f6114db8284611450565b915081905092915050565b5f60a0820190506114f95f830188610f96565b6115066020830187610f96565b6115136040830186610f96565b6115206060830185610f15565b61152d6080830184611271565b969550505050505056fea2646970667358221220e0827ea9b86bad11273e97e30f6a7429d8f40dfa1dd91336b42900dc8d65d50664736f6c6343000816003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000847726f6b20426f74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000747524f4b424f5400000000000000000000000000000000000000000000000000