6080604052664a9b63844880005f196200001a9190620006fa565b5f196200002891906200075e565b6006555f60085560146009555f600a556063600b55600a54600c55600b54600d55600c54600e55600d54600f5573e9d6a5cf35ce6221c838eec6a81285600607a3ee60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e9d6a5cf35ce6221c838eec6a81285600607a3ee60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066017dfcdece400060165566017dfcdece4000601755651319718a500060185534801562000177575f80fd5b505f620001896200069660201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f6200023b6200069660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003409190620007fd565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003cc9190620007fd565b6040518363ffffffff1660e01b8152600401620003eb9291906200083e565b6020604051808303815f875af115801562000408573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200042e9190620007fd565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f620004826200069d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620006226200069660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef664a9b63844880006040516200068791906200087a565b60405180910390a35062000895565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200070682620006c4565b91506200071383620006c4565b925082620007265762000725620006cd565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200076a82620006c4565b91506200077783620006c4565b925082820390508181111562000792576200079162000731565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620007c7826200079c565b9050919050565b620007d981620007bb565b8114620007e4575f80fd5b50565b5f81519050620007f781620007ce565b92915050565b5f6020828403121562000815576200081462000798565b5b5f6200082484828501620007e7565b91505092915050565b6200083881620007bb565b82525050565b5f604082019050620008535f8301856200082d565b6200086260208301846200082d565b9392505050565b6200087481620006c4565b82525050565b5f6020820190506200088f5f83018462000869565b92915050565b6141b880620008a35f395ff3fe6080604052600436106101da575f3560e01c806374010ece11610101578063a9059cbb11610094578063c6616ba111610063578063c6616ba11461064f578063dd62ed3e14610677578063ea1644d5146106b3578063f2fde38b146106db576101e1565b8063a9059cbb14610599578063bfd79284146105d5578063c3c8cd8014610611578063c492f04614610627576101e1565b80638da5cb5b116100d05780638da5cb5b146104f35780638f9a55c01461051d57806395d89b411461054757806398a5c31514610571576101e1565b806374010ece1461044f578063751039fc146104775780637d1db4a51461048d5780637f2feddc146104b7576101e1565b80632fd689e3116101795780636d8aa8f8116101485780636d8aa8f8146103bf5780636fc3eaec146103e757806370a08231146103fd578063715018a614610439576101e1565b80632fd689e314610319578063313ce5671461034357806349bd5a5e1461036d5780636b99905314610397576101e1565b80630bd05b69116101b55780630bd05b69146102735780631694505e1461028957806318160ddd146102b357806323b872dd146102dd576101e1565b8062b8cf2a146101e557806306fdde031461020d578063095ea7b314610237576101e1565b366101e157005b5f80fd5b3480156101f0575f80fd5b5061020b60048036038101906102069190612d40565b610703565b005b348015610218575f80fd5b50610221610828565b60405161022e9190612e01565b60405180910390f35b348015610242575f80fd5b5061025d60048036038101906102589190612e54565b61084b565b60405161026a9190612eac565b60405180910390f35b34801561027e575f80fd5b50610287610868565b005b348015610294575f80fd5b5061029d610919565b6040516102aa9190612f20565b60405180910390f35b3480156102be575f80fd5b506102c761093e565b6040516102d49190612f48565b60405180910390f35b3480156102e8575f80fd5b5061030360048036038101906102fe9190612f61565b61094c565b6040516103109190612eac565b60405180910390f35b348015610324575f80fd5b5061032d610a20565b60405161033a9190612f48565b60405180910390f35b34801561034e575f80fd5b50610357610a26565b6040516103649190612fcc565b60405180910390f35b348015610378575f80fd5b50610381610a2e565b60405161038e9190612ff4565b60405180910390f35b3480156103a2575f80fd5b506103bd60048036038101906103b8919061300d565b610a53565b005b3480156103ca575f80fd5b506103e560048036038101906103e09190613062565b610b3e565b005b3480156103f2575f80fd5b506103fb610bef565b005b348015610408575f80fd5b50610423600480360381019061041e919061300d565b610cbc565b6040516104309190612f48565b60405180910390f35b348015610444575f80fd5b5061044d610d0a565b005b34801561045a575f80fd5b506104756004803603810190610470919061308d565b610e58565b005b348015610482575f80fd5b5061048b610ef6565b005b348015610498575f80fd5b506104a1610fa8565b6040516104ae9190612f48565b60405180910390f35b3480156104c2575f80fd5b506104dd60048036038101906104d8919061300d565b610fae565b6040516104ea9190612f48565b60405180910390f35b3480156104fe575f80fd5b50610507610fc3565b6040516105149190612ff4565b60405180910390f35b348015610528575f80fd5b50610531610fea565b60405161053e9190612f48565b60405180910390f35b348015610552575f80fd5b5061055b610ff0565b6040516105689190612e01565b60405180910390f35b34801561057c575f80fd5b506105976004803603810190610592919061308d565b61102d565b005b3480156105a4575f80fd5b506105bf60048036038101906105ba9190612e54565b6110cb565b6040516105cc9190612eac565b60405180910390f35b3480156105e0575f80fd5b506105fb60048036038101906105f6919061300d565b6110e8565b6040516106089190612eac565b60405180910390f35b34801561061c575f80fd5b50610625611105565b005b348015610632575f80fd5b5061064d60048036038101906106489190613111565b6111da565b005b34801561065a575f80fd5b506106756004803603810190610670919061316e565b61130f565b005b348015610682575f80fd5b5061069d600480360381019061069891906131d2565b6113f5565b6040516106aa9190612f48565b60405180910390f35b3480156106be575f80fd5b506106d960048036038101906106d4919061308d565b611477565b005b3480156106e6575f80fd5b5061070160048036038101906106fc919061300d565b611515565b005b61070b6116d2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078e9061325a565b60405180910390fd5b5f5b815181101561082457600160105f8484815181106107ba576107b9613278565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061081c906132d2565b915050610799565b5050565b60606040518061050001604052806104cc8152602001613c8f6104cc9139905090565b5f61085e6108576116d2565b84846116d9565b6001905092915050565b6108706116d2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f39061325a565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f664a9b6384488000905090565b5f61095884848461189c565b610a15846109646116d2565b610a108560405180606001604052806028815260200161415b6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109c76116d2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120fc9092919063ffffffff16565b6116d9565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a5b6116d2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ade9061325a565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610b466116d2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc99061325a565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c2f6116d2565b73ffffffffffffffffffffffffffffffffffffffff161480610ca4575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c8c6116d2565b73ffffffffffffffffffffffffffffffffffffffff16145b610cac575f80fd5b5f479050610cb98161215e565b50565b5f610d0360025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121c6565b9050919050565b610d126116d2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d959061325a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e606116d2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee39061325a565b60405180910390fd5b8060168190555050565b610efe6116d2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f819061325a565b60405180910390fd5b664a9b6384488000601681905550664a9b6384488000601781905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600381526020017fe282bf0000000000000000000000000000000000000000000000000000000000815250905090565b6110356116d2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b89061325a565b60405180910390fd5b8060188190555050565b5f6110de6110d76116d2565b848461189c565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111456116d2565b73ffffffffffffffffffffffffffffffffffffffff1614806111ba575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111a26116d2565b73ffffffffffffffffffffffffffffffffffffffff16145b6111c2575f80fd5b5f6111cc30610cbc565b90506111d781612232565b50565b6111e26116d2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112659061325a565b60405180910390fd5b5f5b83839050811015611309578160055f86868581811061129257611291613278565b5b90506020020160208101906112a7919061300d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080611301906132d2565b915050611270565b50505050565b6113176116d2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a9061325a565b60405180910390fd5b601982856113b19190613319565b11156113bb575f80fd5b602881846113c99190613319565b11156113d3575f80fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61147f6116d2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461150b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115029061325a565b60405180910390fd5b8060178190555050565b61151d6116d2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a09061325a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160e906133bc565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173e9061344a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ac906134d8565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161188f9190612f48565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361190a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190190613566565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196f906135f4565b60405180910390fd5b5f81116119ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b190613682565b60405180910390fd5b6119c2610fc3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a305750611a00610fc3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e0957601560149054906101000a900460ff16611abf57611a51610fc3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab590613710565b60405180910390fd5b5b601654811115611b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afb90613778565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ba2575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd890613806565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c8d5760175481611c4284610cbc565b611c4c9190613319565b10611c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8390613894565b60405180910390fd5b5b5f611c9730610cbc565b90505f60185482101590506016548210611cb15760165491505b808015611cc9575060158054906101000a900460ff16155b8015611d22575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d3a5750601560169054906101000a900460ff165b8015611d8d575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611de0575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e0657611dee82612232565b5f4790505f811115611e0457611e034761215e565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611ea9575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611f5a575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f59575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611f67575f90506120ea565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612010575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561202857600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120d1575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156120e957600a54600c81905550600b54600d819055505b5b6120f68484848461249b565b50505050565b5f838311158290612143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213a9190612e01565b60405180910390fd5b505f838561215191906138b2565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156121c2573d5f803e3d5ffd5b5050565b5f60065482111561220c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220390613955565b60405180910390fd5b5f6122156124c8565b905061222a81846124f190919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561226857612267612baa565b5b6040519080825280602002602001820160405280156122965781602001602082028036833780820191505090505b50905030815f815181106122ad576122ac613278565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612351573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123759190613987565b8160018151811061238957612388613278565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123ef3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846116d9565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612451959493929190613aa2565b5f604051808303815f87803b158015612468575f80fd5b505af115801561247a573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b806124a9576124a861253a565b5b6124b4848484612573565b806124c2576124c1612733565b5b50505050565b5f805f6124d3612747565b915091506124ea81836124f190919063ffffffff16565b9250505090565b5f61253283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127a0565b905092915050565b5f600c5414801561254c57505f600d54145b61257157600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061258287612801565b9550955095509550955095506125de8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461286190919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061266f8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128aa90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126b981612907565b6126c384836129be565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127209190612f48565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f664a9b63844880009050612776664a9b63844880006006546124f190919063ffffffff16565b82101561279357600654664a9b638448800093509350505061279c565b81819350935050505b9091565b5f80831182906127e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127dd9190612e01565b60405180910390fd5b505f83856127f49190613b27565b9050809150509392505050565b5f805f805f805f805f6128198a600c54600d546129f8565b9250925092505f6128286124c8565b90505f805f6128398e878787612a8a565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f6128a283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120fc565b905092915050565b5f8082846128b89190613319565b9050838110156128fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f490613ba1565b60405180910390fd5b8091505092915050565b5f6129106124c8565b90505f6129268284612b0e90919063ffffffff16565b90506129788160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128aa90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6129d38260065461286190919063ffffffff16565b6006819055506129ee816007546128aa90919063ffffffff16565b6007819055505050565b5f805f80612a226064612a14888a612b0e90919063ffffffff16565b6124f190919063ffffffff16565b90505f612a4b6064612a3d888b612b0e90919063ffffffff16565b6124f190919063ffffffff16565b90505f612a7382612a65858c61286190919063ffffffff16565b61286190919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612aa18589612b0e90919063ffffffff16565b90505f612ab78689612b0e90919063ffffffff16565b90505f612acd8789612b0e90919063ffffffff16565b90505f612af582612ae7858761286190919063ffffffff16565b61286190919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612b1e575f9050612b7f565b5f8284612b2b9190613bbf565b9050828482612b3a9190613b27565b14612b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7190613c70565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612be082612b9a565b810181811067ffffffffffffffff82111715612bff57612bfe612baa565b5b80604052505050565b5f612c11612b85565b9050612c1d8282612bd7565b919050565b5f67ffffffffffffffff821115612c3c57612c3b612baa565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c7a82612c51565b9050919050565b612c8a81612c70565b8114612c94575f80fd5b50565b5f81359050612ca581612c81565b92915050565b5f612cbd612cb884612c22565b612c08565b90508083825260208201905060208402830185811115612ce057612cdf612c4d565b5b835b81811015612d095780612cf58882612c97565b845260208401935050602081019050612ce2565b5050509392505050565b5f82601f830112612d2757612d26612b96565b5b8135612d37848260208601612cab565b91505092915050565b5f60208284031215612d5557612d54612b8e565b5b5f82013567ffffffffffffffff811115612d7257612d71612b92565b5b612d7e84828501612d13565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612dbe578082015181840152602081019050612da3565b5f8484015250505050565b5f612dd382612d87565b612ddd8185612d91565b9350612ded818560208601612da1565b612df681612b9a565b840191505092915050565b5f6020820190508181035f830152612e198184612dc9565b905092915050565b5f819050919050565b612e3381612e21565b8114612e3d575f80fd5b50565b5f81359050612e4e81612e2a565b92915050565b5f8060408385031215612e6a57612e69612b8e565b5b5f612e7785828601612c97565b9250506020612e8885828601612e40565b9150509250929050565b5f8115159050919050565b612ea681612e92565b82525050565b5f602082019050612ebf5f830184612e9d565b92915050565b5f819050919050565b5f612ee8612ee3612ede84612c51565b612ec5565b612c51565b9050919050565b5f612ef982612ece565b9050919050565b5f612f0a82612eef565b9050919050565b612f1a81612f00565b82525050565b5f602082019050612f335f830184612f11565b92915050565b612f4281612e21565b82525050565b5f602082019050612f5b5f830184612f39565b92915050565b5f805f60608486031215612f7857612f77612b8e565b5b5f612f8586828701612c97565b9350506020612f9686828701612c97565b9250506040612fa786828701612e40565b9150509250925092565b5f60ff82169050919050565b612fc681612fb1565b82525050565b5f602082019050612fdf5f830184612fbd565b92915050565b612fee81612c70565b82525050565b5f6020820190506130075f830184612fe5565b92915050565b5f6020828403121561302257613021612b8e565b5b5f61302f84828501612c97565b91505092915050565b61304181612e92565b811461304b575f80fd5b50565b5f8135905061305c81613038565b92915050565b5f6020828403121561307757613076612b8e565b5b5f6130848482850161304e565b91505092915050565b5f602082840312156130a2576130a1612b8e565b5b5f6130af84828501612e40565b91505092915050565b5f80fd5b5f8083601f8401126130d1576130d0612b96565b5b8235905067ffffffffffffffff8111156130ee576130ed6130b8565b5b60208301915083602082028301111561310a57613109612c4d565b5b9250929050565b5f805f6040848603121561312857613127612b8e565b5b5f84013567ffffffffffffffff81111561314557613144612b92565b5b613151868287016130bc565b935093505060206131648682870161304e565b9150509250925092565b5f805f806080858703121561318657613185612b8e565b5b5f61319387828801612e40565b94505060206131a487828801612e40565b93505060406131b587828801612e40565b92505060606131c687828801612e40565b91505092959194509250565b5f80604083850312156131e8576131e7612b8e565b5b5f6131f585828601612c97565b925050602061320685828601612c97565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613244602083612d91565b915061324f82613210565b602082019050919050565b5f6020820190508181035f83015261327181613238565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6132dc82612e21565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361330e5761330d6132a5565b5b600182019050919050565b5f61332382612e21565b915061332e83612e21565b9250828201905080821115613346576133456132a5565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6133a6602683612d91565b91506133b18261334c565b604082019050919050565b5f6020820190508181035f8301526133d38161339a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613434602483612d91565b915061343f826133da565b604082019050919050565b5f6020820190508181035f83015261346181613428565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134c2602283612d91565b91506134cd82613468565b604082019050919050565b5f6020820190508181035f8301526134ef816134b6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613550602583612d91565b915061355b826134f6565b604082019050919050565b5f6020820190508181035f83015261357d81613544565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6135de602383612d91565b91506135e982613584565b604082019050919050565b5f6020820190508181035f83015261360b816135d2565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61366c602983612d91565b915061367782613612565b604082019050919050565b5f6020820190508181035f83015261369981613660565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f6136fa603f83612d91565b9150613705826136a0565b604082019050919050565b5f6020820190508181035f830152613727816136ee565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613762601c83612d91565b915061376d8261372e565b602082019050919050565b5f6020820190508181035f83015261378f81613756565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f6137f0602383612d91565b91506137fb82613796565b604082019050919050565b5f6020820190508181035f83015261381d816137e4565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f61387e602383612d91565b915061388982613824565b604082019050919050565b5f6020820190508181035f8301526138ab81613872565b9050919050565b5f6138bc82612e21565b91506138c783612e21565b92508282039050818111156138df576138de6132a5565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61393f602a83612d91565b915061394a826138e5565b604082019050919050565b5f6020820190508181035f83015261396c81613933565b9050919050565b5f8151905061398181612c81565b92915050565b5f6020828403121561399c5761399b612b8e565b5b5f6139a984828501613973565b91505092915050565b5f819050919050565b5f6139d56139d06139cb846139b2565b612ec5565b612e21565b9050919050565b6139e5816139bb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613a1d81612c70565b82525050565b5f613a2e8383613a14565b60208301905092915050565b5f602082019050919050565b5f613a50826139eb565b613a5a81856139f5565b9350613a6583613a05565b805f5b83811015613a95578151613a7c8882613a23565b9750613a8783613a3a565b925050600181019050613a68565b5085935050505092915050565b5f60a082019050613ab55f830188612f39565b613ac260208301876139dc565b8181036040830152613ad48186613a46565b9050613ae36060830185612fe5565b613af06080830184612f39565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b3182612e21565b9150613b3c83612e21565b925082613b4c57613b4b613afa565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613b8b601b83612d91565b9150613b9682613b57565b602082019050919050565b5f6020820190508181035f830152613bb881613b7f565b9050919050565b5f613bc982612e21565b9150613bd483612e21565b9250828202613be281612e21565b91508282048414831517613bf957613bf86132a5565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c5a602183612d91565b9150613c6582613c00565b604082019050919050565b5f6020820190508181035f830152613c8781613c4e565b905091905056fee2a080e2a080e2a080e2a080e2a080f09f9fa7f09f9fa7e2a080e2a080e2a080f09f9fa7f09f9fa70ae2a080e2a080e2a080e2a080e2a080f09f9fa7f09f9fa7e2a080e2a080e2a080f09f9fa7f09f9fa70af09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa70af09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa70af09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa70ae2a080e2a080e2a080e2a080e2a080f09f9fa7f09f9fa7f09f9fa7e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080f09f9fa7f09f9fa7f09f9fa70ae2a080e2a080e2a080e2a080e2a080f09f9fa7f09f9fa7f09f9fa7e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080f09f9fa7f09f9fa7f09f9fa70ae2a080e2a080e2a080e2a080e2a080f09f9fa7f09f9fa7f09f9fa7e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080f09f9fa7f09f9fa7f09f9fa70ae2a080e2a080e2a080e2a080e2a080f09f9fa7f09f9fa7f09f9fa7e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080f09f9fa7f09f9fa70ae2a080e2a080e2a080e2a080e2a080f09f9fa7f09f9fa7f09f9fa7e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080f09f9fa7f09f9fa70ae2a080e2a080e2a080e2a080e2a080f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa70ae2a080e2a080e2a080e2a080e2a080f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa70ae2a080e2a080e2a080e2a080e2a080f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa70ae2a080e2a080e2a080e2a080e2a080f09f9fa7f09f9fa7f09f9fa7e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080f09f9fa7f09f9fa7f09f9fa70ae2a080e2a080e2a080e2a080e2a080f09f9fa7f09f9fa7f09f9fa7e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080f09f9fa7f09f9fa7f09f9fa70ae2a080e2a080e2a080e2a080e2a080f09f9fa7f09f9fa7f09f9fa7e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080f09f9fa7f09f9fa7f09f9fa7f09f9fa70af09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa70af09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa7f09f9fa70ae2a080e2a080e2a080e2a080e2a080f09f9fa7f09f9fa7e2a080e2a080e2a080f09f9fa7f09f9fa70ae2a080e2a080e2a080e2a080e2a080f09f9fa7f09f9fa7e2a080e2a080e2a080f09f9fa7f09f9fa745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a15e53965d2b225a7a8e95a6f38bec74182fd7f83a70c55430c7ba09d756582364736f6c63430008140033