60806040525f60055f6101000a81548160ff021916908315150217905550601260065560126007556103e8600a6012600a6200003c91906200063c565b6305f5e1006200004d91906200068c565b6200005991906200068c565b62000065919062000703565b6008556103e8600a6012600a6200007d91906200063c565b6305f5e1006200008e91906200068c565b6200009a91906200068c565b620000a6919062000703565b6009556103e860026012600a620000be91906200063c565b6305f5e100620000cf91906200068c565b620000db91906200068c565b620000e7919062000703565b600a555f600c60156101000a81548160ff0219169083151502179055505f600c60166101000a81548160ff0219169083151502179055503480156200012a575f80fd5b506040516200414c3803806200414c83398181016040528101906200015091906200079f565b5f620001616200047c60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a6200024e91906200063c565b6305f5e1006200025f91906200068c565b60015f620002726200047c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002c46200048360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003ef6200047c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6200044d91906200063c565b6305f5e1006200045e91906200068c565b6040516200046d9190620007e0565b60405180910390a350620007fb565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000534578086048111156200050c576200050b620004aa565b5b60018516156200051c5780820291505b80810290506200052c85620004d7565b9450620004ec565b94509492505050565b5f826200054e576001905062000620565b816200055d575f905062000620565b81600181146200057657600281146200058157620005b7565b600191505062000620565b60ff841115620005965762000595620004aa565b5b8360020a915084821115620005b057620005af620004aa565b5b5062000620565b5060208310610133831016604e8410600b8410161715620005f15782820a905083811115620005eb57620005ea620004aa565b5b62000620565b620006008484846001620004e3565b925090508184048111156200061a5762000619620004aa565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620006488262000627565b9150620006558362000630565b9250620006847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200053d565b905092915050565b5f620006988262000627565b9150620006a58362000627565b9250828202620006b58162000627565b91508282048414831517620006cf57620006ce620004aa565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200070f8262000627565b91506200071c8362000627565b9250826200072f576200072e620006d6565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000769826200073e565b9050919050565b6200077b816200075d565b811462000786575f80fd5b50565b5f81519050620007998162000770565b92915050565b5f60208284031215620007b757620007b66200073a565b5b5f620007c68482850162000789565b91505092915050565b620007da8162000627565b82525050565b5f602082019050620007f55f830184620007cf565b92915050565b61394380620008095f395ff3fe608060405260043610610184575f3560e01c806389d73132116100d0578063a9c706f211610089578063c9567bf911610063578063c9567bf91461053f578063ca9ec19914610555578063dd62ed3e1461057f578063fee85fd4146105bb5761018b565b8063a9c706f2146104c5578063aaf6741e146104ed578063bf474bed146105155761018b565b806389d73132146103a75780638da5cb5b146103e35780638f9a55c01461040d57806395d89b4114610437578063a8346b9b14610461578063a9059cbb146104895761018b565b8063511b5f611161013d578063715018a611610117578063715018a61461033d578063751039fc146103535780637d7ab9a3146103695780637efd4be71461037f5761018b565b8063511b5f61146102af578063625d1618146102d957806370a08231146103015761018b565b806306fdde031461018f578063095ea7b3146101b957806318160ddd146101f557806323b872dd1461021f578063313ce5671461025b57806342a11095146102855761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105e3565b6040516101b0919061286b565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da919061291c565b610620565b6040516101ec9190612974565b60405180910390f35b348015610200575f80fd5b5061020961063d565b604051610216919061299c565b60405180910390f35b34801561022a575f80fd5b50610245600480360381019061024091906129b5565b610660565b6040516102529190612974565b60405180910390f35b348015610266575f80fd5b5061026f610734565b60405161027c9190612a20565b60405180910390f35b348015610290575f80fd5b5061029961073c565b6040516102a6919061299c565b60405180910390f35b3480156102ba575f80fd5b506102c3610742565b6040516102d0919061299c565b60405180910390f35b3480156102e4575f80fd5b506102ff60048036038101906102fa9190612a39565b610748565b005b34801561030c575f80fd5b5061032760048036038101906103229190612a64565b61081a565b604051610334919061299c565b60405180910390f35b348015610348575f80fd5b50610351610860565b005b34801561035e575f80fd5b506103676109ae565b005b348015610374575f80fd5b5061037d610af6565b005b34801561038a575f80fd5b506103a560048036038101906103a09190612a39565b610b7c565b005b3480156103b2575f80fd5b506103cd60048036038101906103c8919061291c565b610ccc565b6040516103da9190612974565b60405180910390f35b3480156103ee575f80fd5b506103f7610e8e565b6040516104049190612a9e565b60405180910390f35b348015610418575f80fd5b50610421610eb5565b60405161042e919061299c565b60405180910390f35b348015610442575f80fd5b5061044b610ebb565b604051610458919061286b565b60405180910390f35b34801561046c575f80fd5b5061048760048036038101906104829190612a39565b610ef8565b005b348015610494575f80fd5b506104af60048036038101906104aa919061291c565b610fda565b6040516104bc9190612974565b60405180910390f35b3480156104d0575f80fd5b506104eb60048036038101906104e69190612a39565b610ff7565b005b3480156104f8575f80fd5b50610513600480360381019061050e9190612a39565b6110e7565b005b348015610520575f80fd5b506105296111c9565b604051610536919061299c565b60405180910390f35b34801561054a575f80fd5b506105536111cf565b005b348015610560575f80fd5b506105696116f1565b604051610576919061299c565b60405180910390f35b34801561058a575f80fd5b506105a560048036038101906105a09190612ab7565b6116f7565b6040516105b2919061299c565b60405180910390f35b3480156105c6575f80fd5b506105e160048036038101906105dc9190612a39565b611779565b005b60606040518060400160405280600b81526020017f536f6c616e657874204149000000000000000000000000000000000000000000815250905090565b5f61063361062c61184b565b8484611852565b6001905092915050565b5f6012600a61064c9190612c51565b6305f5e10061065b9190612c9b565b905090565b5f61066c848484611a15565b6107298461067861184b565b610724856040518060600160405280602881526020016138e66028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106db61184b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461232b9092919063ffffffff16565b611852565b600190509392505050565b5f6012905090565b60065481565b60085481565b61075061184b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d390612d26565b60405180910390fd5b6103e8816012600a6107ee9190612c51565b6305f5e1006107fd9190612c9b565b6108079190612c9b565b6108119190612d71565b60098190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61086861184b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108eb90612d26565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109b661184b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3990612d26565b60405180910390fd5b6012600a610a509190612c51565b6305f5e100610a5f9190612c9b565b6008819055506012600a610a739190612c51565b6305f5e100610a829190612c9b565b6009819055505f60055f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610ad09190612c51565b6305f5e100610adf9190612c9b565b604051610aec919061299c565b60405180910390a1565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b3761184b565b73ffffffffffffffffffffffffffffffffffffffff1614610b56575f80fd5b5f610b603061081a565b90505f811115610b7457610b738161238d565b5b5f4790505050565b610b8461184b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0790612d26565b60405180910390fd5b6103e8811115610c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4c90612e37565b60405180910390fd5b6103e8816012600a610c679190612c51565b6305f5e100610c769190612c9b565b610c809190612c9b565b610c8a9190612d71565b600a819055507f17189f2f6a412549aa02ac15113cc51505ce2d076c8cbda6fa1454fd7cfdadab600a54604051610cc1919061299c565b60405180910390a150565b5f610cd561184b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5890612d26565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d9b9190612a9e565b602060405180830381865afa158015610db6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dda9190612e69565b905082811115610e83578373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b8152600401610e41929190612eef565b6020604051808303815f875af1158015610e5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e819190612f40565b505b600191505092915050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60095481565b60606040518060400160405280600381526020017f5341490000000000000000000000000000000000000000000000000000000000815250905090565b610f0061184b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8390612d26565b60405180910390fd5b602d811115610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc790612fdb565b60405180910390fd5b8060068190555050565b5f610fed610fe661184b565b8484611a15565b6001905092915050565b610fff61184b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461108b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108290612d26565b60405180910390fd5b5f479050818111156110e35761109f61184b565b73ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f193505050501580156110e1573d5f803e3d5ffd5b505b5050565b6110ef61184b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461117b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117290612d26565b60405180910390fd5b602d8111156111bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b690612fdb565b60405180910390fd5b8060078190555050565b600a5481565b6111d761184b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a90612d26565b60405180910390fd5b600c60149054906101000a900460ff16156112b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112aa90613043565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061134f30600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a61133b9190612c51565b6305f5e10061134a9190612c9b565b611852565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113dd9190613075565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611463573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114879190613075565b6040518363ffffffff1660e01b81526004016114a49291906130a0565b6020604051808303815f875af11580156114c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e49190613075565b600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061156b3061081a565b5f80611575610e8e565b426040518863ffffffff1660e01b815260040161159796959493929190613100565b60606040518083038185885af11580156115b3573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906115d8919061315f565b505050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016116789291906131af565b6020604051808303815f875af1158015611694573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b89190612f40565b506001600c60166101000a81548160ff0219169083151502179055506001600c60146101000a81548160ff021916908315150217905550565b60075481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61178161184b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461180d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180490612d26565b60405180910390fd5b6103e8816012600a61181f9190612c51565b6305f5e10061182e9190612c9b565b6118389190612c9b565b6118429190612d71565b60088190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b790613246565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361192e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611925906132d4565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a08919061299c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7a90613362565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae8906133f0565b60405180910390fd5b5f8111611b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2a9061347e565b60405180910390fd5b5f611b3c610e8e565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611baa5750611b7a610e8e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561207b5760055f9054906101000a900460ff1615611d3557600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c6d5750600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d34574360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce890613532565b60405180910390fd5b4360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611dde5750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e31575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611efe57611e5e6064611e506006548561261a90919063ffffffff16565b61269190919063ffffffff16565b9050600854821115611ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9c9061359a565b60405180910390fd5b60095482611eb28561081a565b611ebc91906135b8565b1115611efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef490613635565b60405180910390fd5b5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f8657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fb657611fb36064611fa56007548561261a90919063ffffffff16565b61269190919063ffffffff16565b90505b5f611fc03061081a565b9050600c60159054906101000a900460ff1615801561202b5750600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156120435750600c60169054906101000a900460ff165b80156120505750600a5481115b1561207957600a54831061206e57612069600a5461238d565b612078565b6120778361238d565b5b5b505b5f81111561217a576120d38160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126da90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612171919061299c565b60405180910390a35b6121ca8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461273790919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061226d612221828461273790919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126da90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612310848661273790919063ffffffff16565b60405161231d919061299c565b60405180910390a350505050565b5f838311158290612372576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612369919061286b565b60405180910390fd5b505f83856123809190613653565b9050809150509392505050565b6001600c60156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156123c4576123c3613686565b5b6040519080825280602002602001820160405280156123f25781602001602082028036833780820191505090505b50905030815f81518110612409576124086136b3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124d19190613075565b816001815181106124e5576124e46136b3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061254b30600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611852565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f84600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016125cf959493929190613797565b5f604051808303815f87803b1580156125e6575f80fd5b505af11580156125f8573d5f803e3d5ffd5b50505050505f600c60156101000a81548160ff02191690831515021790555050565b5f80830361262a575f905061268b565b5f82846126379190612c9b565b90508284826126469190612d71565b14612686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267d9061385f565b60405180910390fd5b809150505b92915050565b5f6126d283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612780565b905092915050565b5f8082846126e891906135b8565b90508381101561272d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612724906138c7565b60405180910390fd5b8091505092915050565b5f61277883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061232b565b905092915050565b5f80831182906127c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bd919061286b565b60405180910390fd5b505f83856127d49190612d71565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156128185780820151818401526020810190506127fd565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61283d826127e1565b61284781856127eb565b93506128578185602086016127fb565b61286081612823565b840191505092915050565b5f6020820190508181035f8301526128838184612833565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128b88261288f565b9050919050565b6128c8816128ae565b81146128d2575f80fd5b50565b5f813590506128e3816128bf565b92915050565b5f819050919050565b6128fb816128e9565b8114612905575f80fd5b50565b5f81359050612916816128f2565b92915050565b5f80604083850312156129325761293161288b565b5b5f61293f858286016128d5565b925050602061295085828601612908565b9150509250929050565b5f8115159050919050565b61296e8161295a565b82525050565b5f6020820190506129875f830184612965565b92915050565b612996816128e9565b82525050565b5f6020820190506129af5f83018461298d565b92915050565b5f805f606084860312156129cc576129cb61288b565b5b5f6129d9868287016128d5565b93505060206129ea868287016128d5565b92505060406129fb86828701612908565b9150509250925092565b5f60ff82169050919050565b612a1a81612a05565b82525050565b5f602082019050612a335f830184612a11565b92915050565b5f60208284031215612a4e57612a4d61288b565b5b5f612a5b84828501612908565b91505092915050565b5f60208284031215612a7957612a7861288b565b5b5f612a86848285016128d5565b91505092915050565b612a98816128ae565b82525050565b5f602082019050612ab15f830184612a8f565b92915050565b5f8060408385031215612acd57612acc61288b565b5b5f612ada858286016128d5565b9250506020612aeb858286016128d5565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612b7757808604811115612b5357612b52612af5565b5b6001851615612b625780820291505b8081029050612b7085612b22565b9450612b37565b94509492505050565b5f82612b8f5760019050612c4a565b81612b9c575f9050612c4a565b8160018114612bb25760028114612bbc57612beb565b6001915050612c4a565b60ff841115612bce57612bcd612af5565b5b8360020a915084821115612be557612be4612af5565b5b50612c4a565b5060208310610133831016604e8410600b8410161715612c205782820a905083811115612c1b57612c1a612af5565b5b612c4a565b612c2d8484846001612b2e565b92509050818404811115612c4457612c43612af5565b5b81810290505b9392505050565b5f612c5b826128e9565b9150612c6683612a05565b9250612c937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612b80565b905092915050565b5f612ca5826128e9565b9150612cb0836128e9565b9250828202612cbe816128e9565b91508282048414831517612cd557612cd4612af5565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612d106020836127eb565b9150612d1b82612cdc565b602082019050919050565b5f6020820190508181035f830152612d3d81612d04565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612d7b826128e9565b9150612d86836128e9565b925082612d9657612d95612d44565b5b828204905092915050565b7f6368616e6765546178537761705468726573686f6c643a2050657263656e74615f8201527f67652073686f756c64206265206c657373207468616e206f7220657175616c2060208201527f746f203130303000000000000000000000000000000000000000000000000000604082015250565b5f612e216047836127eb565b9150612e2c82612da1565b606082019050919050565b5f6020820190508181035f830152612e4e81612e15565b9050919050565b5f81519050612e63816128f2565b92915050565b5f60208284031215612e7e57612e7d61288b565b5b5f612e8b84828501612e55565b91505092915050565b5f819050919050565b5f612eb7612eb2612ead8461288f565b612e94565b61288f565b9050919050565b5f612ec882612e9d565b9050919050565b5f612ed982612ebe565b9050919050565b612ee981612ecf565b82525050565b5f604082019050612f025f830185612ee0565b612f0f602083018461298d565b9392505050565b612f1f8161295a565b8114612f29575f80fd5b50565b5f81519050612f3a81612f16565b92915050565b5f60208284031215612f5557612f5461288b565b5b5f612f6284828501612f2c565b91505092915050565b7f5461782073686f756c64206265206c657373207468616e206f7220657175616c5f8201527f20746f2034350000000000000000000000000000000000000000000000000000602082015250565b5f612fc56026836127eb565b9150612fd082612f6b565b604082019050919050565b5f6020820190508181035f830152612ff281612fb9565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61302d6017836127eb565b915061303882612ff9565b602082019050919050565b5f6020820190508181035f83015261305a81613021565b9050919050565b5f8151905061306f816128bf565b92915050565b5f6020828403121561308a5761308961288b565b5b5f61309784828501613061565b91505092915050565b5f6040820190506130b35f830185612a8f565b6130c06020830184612a8f565b9392505050565b5f819050919050565b5f6130ea6130e56130e0846130c7565b612e94565b6128e9565b9050919050565b6130fa816130d0565b82525050565b5f60c0820190506131135f830189612a8f565b613120602083018861298d565b61312d60408301876130f1565b61313a60608301866130f1565b6131476080830185612a8f565b61315460a083018461298d565b979650505050505050565b5f805f606084860312156131765761317561288b565b5b5f61318386828701612e55565b935050602061319486828701612e55565b92505060406131a586828701612e55565b9150509250925092565b5f6040820190506131c25f830185612a8f565b6131cf602083018461298d565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6132306024836127eb565b915061323b826131d6565b604082019050919050565b5f6020820190508181035f83015261325d81613224565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132be6022836127eb565b91506132c982613264565b604082019050919050565b5f6020820190508181035f8301526132eb816132b2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61334c6025836127eb565b9150613357826132f2565b604082019050919050565b5f6020820190508181035f83015261337981613340565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6133da6023836127eb565b91506133e582613380565b604082019050919050565b5f6020820190508181035f830152613407816133ce565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134686029836127eb565b91506134738261340e565b604082019050919050565b5f6020820190508181035f8301526134958161345c565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f61351c6049836127eb565b91506135278261349c565b606082019050919050565b5f6020820190508181035f83015261354981613510565b9050919050565b7f4578636565647320746865205f6d6178547853697a652e0000000000000000005f82015250565b5f6135846017836127eb565b915061358f82613550565b602082019050919050565b5f6020820190508181035f8301526135b181613578565b9050919050565b5f6135c2826128e9565b91506135cd836128e9565b92508282019050808211156135e5576135e4612af5565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61361f601a836127eb565b915061362a826135eb565b602082019050919050565b5f6020820190508181035f83015261364c81613613565b9050919050565b5f61365d826128e9565b9150613668836128e9565b92508282039050818111156136805761367f612af5565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613712816128ae565b82525050565b5f6137238383613709565b60208301905092915050565b5f602082019050919050565b5f613745826136e0565b61374f81856136ea565b935061375a836136fa565b805f5b8381101561378a5781516137718882613718565b975061377c8361372f565b92505060018101905061375d565b5085935050505092915050565b5f60a0820190506137aa5f83018861298d565b6137b760208301876130f1565b81810360408301526137c9818661373b565b90506137d86060830185612a8f565b6137e5608083018461298d565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138496021836127eb565b9150613854826137ef565b604082019050919050565b5f6020820190508181035f8301526138768161383d565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6138b1601b836127eb565b91506138bc8261387d565b602082019050919050565b5f6020820190508181035f8301526138de816138a5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b3badbfba1cc6084e7b60d6f6df869beef4c70783c5e1223cac97f7a169ae39f64736f6c634300081700330000000000000000000000008b0dfe427b3bd3ec06517d7c16169ff2ee676560