608060405234801561000f575f5ffd5b506040518060400160405280600581526020017f4d794e46540000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4d4e465400000000000000000000000000000000000000000000000000000000815250815f908161008a91906102df565b50806001908161009a91906102df565b5050506103ae565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061011d57607f821691505b6020821081036101305761012f6100d9565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026101927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610157565b61019c8683610157565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6101e06101db6101d6846101b4565b6101bd565b6101b4565b9050919050565b5f819050919050565b6101f9836101c6565b61020d610205826101e7565b848454610163565b825550505050565b5f5f905090565b610224610215565b61022f8184846101f0565b505050565b5b81811015610252576102475f8261021c565b600181019050610235565b5050565b601f8211156102975761026881610136565b61027184610148565b81016020851015610280578190505b61029461028c85610148565b830182610234565b50505b505050565b5f82821c905092915050565b5f6102b75f198460080261029c565b1980831691505092915050565b5f6102cf83836102a8565b9150826002028217905092915050565b6102e8826100a2565b67ffffffffffffffff811115610301576103006100ac565b5b61030b8254610106565b610316828285610256565b5f60209050601f831160018114610347575f8415610335578287015190505b61033f85826102c4565b8655506103a6565b601f19841661035586610136565b5f5b8281101561037c57848901518255600182019150602085019450602081019050610357565b868310156103995784890151610395601f8916826102a8565b8355505b6001600288020188555050505b505050505050565b611f33806103bb5f395ff3fe608060405234801561000f575f5ffd5b50600436106100e8575f3560e01c80636352211e1161008a578063a22cb46511610064578063a22cb46514610258578063b88d4fde14610274578063c87b56dd14610290578063e985e9c5146102c0576100e8565b80636352211e146101da57806370a082311461020a57806395d89b411461023a576100e8565b8063081812fc116100c6578063081812fc14610156578063095ea7b31461018657806323b872dd146101a257806342842e0e146101be576100e8565b806301ffc9a7146100ec57806304f322791461011c57806306fdde0314610138575b5f5ffd5b6101066004803603810190610101919061147c565b6102f0565b60405161011391906114c1565b60405180910390f35b61013660048036038101906101319190611670565b6103d1565b005b610140610439565b60405161014d919061172a565b60405180910390f35b610170600480360381019061016b919061177d565b6104c8565b60405161017d91906117b7565b60405180910390f35b6101a0600480360381019061019b91906117d0565b6104e3565b005b6101bc60048036038101906101b7919061180e565b6104f9565b005b6101d860048036038101906101d3919061180e565b6105f8565b005b6101f460048036038101906101ef919061177d565b610617565b60405161020191906117b7565b60405180910390f35b610224600480360381019061021f919061185e565b610628565b6040516102319190611898565b60405180910390f35b6102426106de565b60405161024f919061172a565b60405180910390f35b610272600480360381019061026d91906118db565b61076e565b005b61028e600480360381019061028991906119b7565b610784565b005b6102aa60048036038101906102a5919061177d565b6107a9565b6040516102b7919061172a565b60405180910390f35b6102da60048036038101906102d59190611a37565b610859565b6040516102e791906114c1565b60405180910390f35b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103ba57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103ca57506103c9826108e7565b5b9050919050565b816040516020016103e29190611ad5565b60405160208183030381529060405260075f6103fe6006610950565b81526020019081526020015f2090816104179190611cf7565b5061042b816104266006610950565b61095c565b6104356006610979565b5050565b60605f805461044790611b27565b80601f016020809104026020016040519081016040528092919081815260200182805461047390611b27565b80156104be5780601f10610495576101008083540402835291602001916104be565b820191905f5260205f20905b8154815290600101906020018083116104a157829003601f168201915b5050505050905090565b5f6104d28261098d565b506104dc82610a13565b9050919050565b6104f582826104f0610a4c565b610a53565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610569575f6040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161056091906117b7565b60405180910390fd5b5f61057c8383610577610a4c565b610a65565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146105f2578382826040517f64283d7b0000000000000000000000000000000000000000000000000000000081526004016105e993929190611dc6565b60405180910390fd5b50505050565b61061283838360405180602001604052805f815250610784565b505050565b5f6106218261098d565b9050919050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610699575f6040517f89c62b6400000000000000000000000000000000000000000000000000000000815260040161069091906117b7565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6060600180546106ed90611b27565b80601f016020809104026020016040519081016040528092919081815260200182805461071990611b27565b80156107645780601f1061073b57610100808354040283529160200191610764565b820191905f5260205f20905b81548152906001019060200180831161074757829003601f168201915b5050505050905090565b610780610779610a4c565b8383610c70565b5050565b61078f8484846104f9565b6107a361079a610a4c565b85858585610dd9565b50505050565b60606107b48261098d565b505f60075f8481526020019081526020015f2080546107d290611b27565b80601f01602080910402602001604051908101604052809291908181526020018280546107fe90611b27565b80156108495780601f1061082057610100808354040283529160200191610849565b820191905f5260205f20905b81548152906001019060200180831161082c57829003601f168201915b5050505050905080915050919050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f815f01549050919050565b610975828260405180602001604052805f815250610f85565b5050565b6001815f015f828254019250508190555050565b5f5f61099883610fa8565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a0a57826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401610a019190611898565b60405180910390fd5b80915050919050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b610a608383836001610fe1565b505050565b5f5f610a7084610fa8565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610ab157610ab08184866111a0565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b3c57610af05f855f5f610fe1565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614610bbb57600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ce057816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401610cd791906117b7565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610dcc91906114c1565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b1115610f7e578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b8152600401610e379493929190611e4d565b6020604051808303815f875af1925050508015610e7257506040513d601f19601f82011682018060405250810190610e6f9190611eab565b60015b610ef3573d805f8114610ea0576040519150601f19603f3d011682016040523d82523d5f602084013e610ea5565b606091505b505f815103610eeb57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610ee291906117b7565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610f7c57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610f7391906117b7565b60405180910390fd5b505b5050505050565b610f8f8383611263565b610fa3610f9a610a4c565b5f858585610dd9565b505050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b808061101957505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561114b575f6110288461098d565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561109257508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156110a557506110a38184610859565b155b156110e757826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016110de91906117b7565b60405180910390fd5b811561114957838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360045f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6111ab838383611356565b61125e575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361121f57806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016112169190611898565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401611255929190611ed6565b60405180910390fd5b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112d3575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016112ca91906117b7565b60405180910390fd5b5f6112df83835f610a65565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611351575f6040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260040161134891906117b7565b60405180910390fd5b505050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561140d57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806113ce57506113cd8484610859565b5b8061140c57508273ffffffffffffffffffffffffffffffffffffffff166113f483610a13565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61145b81611427565b8114611465575f5ffd5b50565b5f8135905061147681611452565b92915050565b5f602082840312156114915761149061141f565b5b5f61149e84828501611468565b91505092915050565b5f8115159050919050565b6114bb816114a7565b82525050565b5f6020820190506114d45f8301846114b2565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611528826114e2565b810181811067ffffffffffffffff82111715611547576115466114f2565b5b80604052505050565b5f611559611416565b9050611565828261151f565b919050565b5f67ffffffffffffffff821115611584576115836114f2565b5b61158d826114e2565b9050602081019050919050565b828183375f83830152505050565b5f6115ba6115b58461156a565b611550565b9050828152602081018484840111156115d6576115d56114de565b5b6115e184828561159a565b509392505050565b5f82601f8301126115fd576115fc6114da565b5b813561160d8482602086016115a8565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61163f82611616565b9050919050565b61164f81611635565b8114611659575f5ffd5b50565b5f8135905061166a81611646565b92915050565b5f5f604083850312156116865761168561141f565b5b5f83013567ffffffffffffffff8111156116a3576116a2611423565b5b6116af858286016115e9565b92505060206116c08582860161165c565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6116fc826116ca565b61170681856116d4565b93506117168185602086016116e4565b61171f816114e2565b840191505092915050565b5f6020820190508181035f83015261174281846116f2565b905092915050565b5f819050919050565b61175c8161174a565b8114611766575f5ffd5b50565b5f8135905061177781611753565b92915050565b5f602082840312156117925761179161141f565b5b5f61179f84828501611769565b91505092915050565b6117b181611635565b82525050565b5f6020820190506117ca5f8301846117a8565b92915050565b5f5f604083850312156117e6576117e561141f565b5b5f6117f38582860161165c565b925050602061180485828601611769565b9150509250929050565b5f5f5f606084860312156118255761182461141f565b5b5f6118328682870161165c565b93505060206118438682870161165c565b925050604061185486828701611769565b9150509250925092565b5f602082840312156118735761187261141f565b5b5f6118808482850161165c565b91505092915050565b6118928161174a565b82525050565b5f6020820190506118ab5f830184611889565b92915050565b6118ba816114a7565b81146118c4575f5ffd5b50565b5f813590506118d5816118b1565b92915050565b5f5f604083850312156118f1576118f061141f565b5b5f6118fe8582860161165c565b925050602061190f858286016118c7565b9150509250929050565b5f67ffffffffffffffff821115611933576119326114f2565b5b61193c826114e2565b9050602081019050919050565b5f61195b61195684611919565b611550565b905082815260208101848484011115611977576119766114de565b5b61198284828561159a565b509392505050565b5f82601f83011261199e5761199d6114da565b5b81356119ae848260208601611949565b91505092915050565b5f5f5f5f608085870312156119cf576119ce61141f565b5b5f6119dc8782880161165c565b94505060206119ed8782880161165c565b93505060406119fe87828801611769565b925050606085013567ffffffffffffffff811115611a1f57611a1e611423565b5b611a2b8782880161198a565b91505092959194509250565b5f5f60408385031215611a4d57611a4c61141f565b5b5f611a5a8582860161165c565b9250506020611a6b8582860161165c565b9150509250929050565b7f697066733a2f2f00000000000000000000000000000000000000000000000000815250565b5f81905092915050565b5f611aaf826116ca565b611ab98185611a9b565b9350611ac98185602086016116e4565b80840191505092915050565b5f611adf82611a75565b600782019150611aef8284611aa5565b915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611b3e57607f821691505b602082108103611b5157611b50611afa565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302611bb37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611b78565b611bbd8683611b78565b95508019841693508086168417925050509392505050565b5f819050919050565b5f611bf8611bf3611bee8461174a565b611bd5565b61174a565b9050919050565b5f819050919050565b611c1183611bde565b611c25611c1d82611bff565b848454611b84565b825550505050565b5f5f905090565b611c3c611c2d565b611c47818484611c08565b505050565b5b81811015611c6a57611c5f5f82611c34565b600181019050611c4d565b5050565b601f821115611caf57611c8081611b57565b611c8984611b69565b81016020851015611c98578190505b611cac611ca485611b69565b830182611c4c565b50505b505050565b5f82821c905092915050565b5f611ccf5f1984600802611cb4565b1980831691505092915050565b5f611ce78383611cc0565b9150826002028217905092915050565b611d00826116ca565b67ffffffffffffffff811115611d1957611d186114f2565b5b611d238254611b27565b611d2e828285611c6e565b5f60209050601f831160018114611d5f575f8415611d4d578287015190505b611d578582611cdc565b865550611dbe565b601f198416611d6d86611b57565b5f5b82811015611d9457848901518255600182019150602085019450602081019050611d6f565b86831015611db15784890151611dad601f891682611cc0565b8355505b6001600288020188555050505b505050505050565b5f606082019050611dd95f8301866117a8565b611de66020830185611889565b611df360408301846117a8565b949350505050565b5f81519050919050565b5f82825260208201905092915050565b5f611e1f82611dfb565b611e298185611e05565b9350611e398185602086016116e4565b611e42816114e2565b840191505092915050565b5f608082019050611e605f8301876117a8565b611e6d60208301866117a8565b611e7a6040830185611889565b8181036060830152611e8c8184611e15565b905095945050505050565b5f81519050611ea581611452565b92915050565b5f60208284031215611ec057611ebf61141f565b5b5f611ecd84828501611e97565b91505092915050565b5f604082019050611ee95f8301856117a8565b611ef66020830184611889565b939250505056fea2646970667358221220ef1910d01fd4cce1f0962e012153ebf19513cc4c5b778204ef4821f1fe530b6264736f6c634300081b0033