608060405260dc60075560dc60085560dc60095560dc600a555f600b555f600c55601e600d556028600e55601e600f55602860105560286011555f6012555f6013555f6014556009600a6100539190610660565b6301312d0061006291906106aa565b6015556009600a6100739190610660565b6301312d0061008291906106aa565b6016556009600a6100939190610660565b622625a06100a191906106aa565b6017556009600a6100b29190610660565b622625a06100c091906106aa565b6018556002601b555f601c5f6101000a81548160ff0219169083151502179055505f601c60016101000a81548160ff0219169083151502179055506001601c60026101000a81548160ff021916908315150217905550348015610121575f80fd5b505f6101316104c160201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35072e3c67d5134dce2c3f8292080edefe34ed5997160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a61022e9190610660565b633b9aca0061023d91906106aa565b60015f61024e6104c160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61029e6104c860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061043c6104c160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6104989190610660565b633b9aca006104a791906106aa565b6040516104b491906106fa565b60405180910390a3610713565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156105715780860481111561054d5761054c6104ef565b5b600185161561055c5780820291505b808102905061056a8561051c565b9450610531565b94509492505050565b5f826105895760019050610644565b81610596575f9050610644565b81600181146105ac57600281146105b6576105e5565b6001915050610644565b60ff8411156105c8576105c76104ef565b5b8360020a9150848211156105df576105de6104ef565b5b50610644565b5060208310610133831016604e8410600b841016171561061a5782820a905083811115610615576106146104ef565b5b610644565b6106278484846001610528565b9250905081840481111561063e5761063d6104ef565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f61066a8261064b565b915061067583610654565b92506106a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461057a565b905092915050565b5f6106b48261064b565b91506106bf8361064b565b92508282026106cd8161064b565b915082820484148315176106e4576106e36104ef565b5b5092915050565b6106f48161064b565b82525050565b5f60208201905061070d5f8301846106eb565b92915050565b613a2d806107205f395ff3fe60806040526004361061019f575f3560e01c80637ab3c762116100eb578063a9059cbb11610089578063e68d0b0511610063578063e68d0b0514610588578063ee10b87d146105b0578063f2fde38b146105d8578063f5b3c3bf14610600576101a6565b8063a9059cbb146104e6578063bf474bed14610522578063dd62ed3e1461054c576101a6565b80638da5cb5b116100c55780638da5cb5b146104405780638f9a55c01461046a57806390d49b9d1461049457806395d89b41146104bc576101a6565b80637ab3c762146103d65780637d1db4a5146104005780638a8c523c1461042a576101a6565b806349bd5a5e1161015857806370a082311161013257806370a0823114610346578063715018a614610382578063751039fc146103985780637a117553146103ae576101a6565b806349bd5a5e146102ca57806353bc13dc146102f45780635bb9162c1461031c576101a6565b806306fdde03146101aa578063095ea7b3146101d45780630faee56f1461021057806318160ddd1461023a57806323b872dd14610264578063313ce567146102a0576101a6565b366101a657005b5f80fd5b3480156101b5575f80fd5b506101be61063c565b6040516101cb9190612a35565b60405180910390f35b3480156101df575f80fd5b506101fa60048036038101906101f59190612ae6565b610679565b6040516102079190612b3e565b60405180910390f35b34801561021b575f80fd5b50610224610696565b6040516102319190612b66565b60405180910390f35b348015610245575f80fd5b5061024e61069c565b60405161025b9190612b66565b60405180910390f35b34801561026f575f80fd5b5061028a60048036038101906102859190612b7f565b6106bf565b6040516102979190612b3e565b60405180910390f35b3480156102ab575f80fd5b506102b4610793565b6040516102c19190612bea565b60405180910390f35b3480156102d5575f80fd5b506102de61079b565b6040516102eb9190612c12565b60405180910390f35b3480156102ff575f80fd5b5061031a60048036038101906103159190612c2b565b6107c0565b005b348015610327575f80fd5b506103306108ac565b60405161033d9190612b66565b60405180910390f35b348015610351575f80fd5b5061036c60048036038101906103679190612c2b565b6108b2565b6040516103799190612b66565b60405180910390f35b34801561038d575f80fd5b506103966108f8565b005b3480156103a3575f80fd5b506103ac610a46565b005b3480156103b9575f80fd5b506103d460048036038101906103cf9190612c80565b610b75565b005b3480156103e1575f80fd5b506103ea610c26565b6040516103f79190612b3e565b60405180910390f35b34801561040b575f80fd5b50610414610c39565b6040516104219190612b66565b60405180910390f35b348015610435575f80fd5b5061043e610c3f565b005b34801561044b575f80fd5b50610454611254565b6040516104619190612c12565b60405180910390f35b348015610475575f80fd5b5061047e61127b565b60405161048b9190612b66565b60405180910390f35b34801561049f575f80fd5b506104ba60048036038101906104b59190612c2b565b611281565b005b3480156104c7575f80fd5b506104d0611358565b6040516104dd9190612a35565b60405180910390f35b3480156104f1575f80fd5b5061050c60048036038101906105079190612ae6565b611395565b6040516105199190612b3e565b60405180910390f35b34801561052d575f80fd5b506105366113b2565b6040516105439190612b66565b60405180910390f35b348015610557575f80fd5b50610572600480360381019061056d9190612cab565b6113b8565b60405161057f9190612b66565b60405180910390f35b348015610593575f80fd5b506105ae60048036038101906105a99190612ce9565b61143a565b005b3480156105bb575f80fd5b506105d660048036038101906105d19190612d27565b6114f3565b005b3480156105e3575f80fd5b506105fe60048036038101906105f99190612c2b565b611591565b005b34801561060b575f80fd5b5061062660048036038101906106219190612c2b565b61174e565b6040516106339190612b3e565b60405180910390f35b60606040518060400160405280600581526020017f574f4a414b000000000000000000000000000000000000000000000000000000815250905090565b5f61068c61068561176b565b8484611772565b6001905092915050565b60185481565b5f6009600a6106ab9190612eae565b633b9aca006106ba9190612ef8565b905090565b5f6106cb848484611935565b610788846106d761176b565b610783856040518060600160405280602881526020016139d06028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61073a61176b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124a29092919063ffffffff16565b611772565b600190509392505050565b5f6009905090565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107c861176b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084b90612f83565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b601b5481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61090061176b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461098c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098390612f83565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a4e61176b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad190612f83565b60405180910390fd5b6009600a610ae89190612eae565b633b9aca00610af79190612ef8565b6015819055506009600a610b0b9190612eae565b633b9aca00610b1a9190612ef8565b6016819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610b4f9190612eae565b633b9aca00610b5e9190612ef8565b604051610b6b9190612b66565b60405180910390a1565b610b7d61176b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0090612f83565b60405180910390fd5b80601c60026101000a81548160ff02191690831515021790555050565b601c60029054906101000a900460ff1681565b60155481565b610c4761176b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cca90612f83565b60405180910390fd5b601a60149054906101000a900460ff1615610d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1a90612feb565b60405180910390fd5b734752ba5dbc23f44d87826276bf6fd6b1c372ad2460195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610dbf3060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610dab9190612eae565b633b9aca00610dba9190612ef8565b611772565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e29573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e4d919061301d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ed3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ef7919061301d565b6040518363ffffffff1660e01b8152600401610f14929190613048565b6020604051808303815f875af1158015610f30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f54919061301d565b601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110c7306108b2565b5f806110d1611254565b426040518863ffffffff1660e01b81526004016110f3969594939291906130b1565b60606040518083038185885af115801561110f573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111349190613124565b505050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016111d4929190613174565b6020604051808303815f875af11580156111f0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061121491906131af565b506001601c60016101000a81548160ff0219169083151502179055506001601a60146101000a81548160ff02191690831515021790555043600681905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b61128961176b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130c90612f83565b60405180910390fd5b8060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600581526020017f574f4a414b000000000000000000000000000000000000000000000000000000815250905090565b5f6113a86113a161176b565b8484611935565b6001905092915050565b60175481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61144261176b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c590612f83565b60405180910390fd5b81601c60016101000a81548160ff021916908315150217905550806018819055505050565b6114fb61176b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157e90612f83565b60405180910390fd5b80601b8190555050565b61159961176b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90612f83565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168a9061324a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6004602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d7906132d8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361184e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184590613366565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119289190612b66565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199a906133f4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0890613482565b60405180910390fd5b5f8111611a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4a90613510565b60405180910390fd5b5f611a5c611254565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611aca5750611a9a611254565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121f257611b206103e8611b12600e5460125411611aff57600d5460125411611af657600754611afa565b6008545b611b03565b600b545b8561250490919063ffffffff16565b61257b90919063ffffffff16565b905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611bc5575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c18575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611cfb57601554821115611c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5990613578565b60405180910390fd5b60165482611c6f856108b2565b611c799190613596565b1115611cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb190613613565b60405180910390fd5b436003600654611cca9190613596565b1115611ce357611cd9836125c4565b15611ce2575f80fd5b5b60125f815480929190611cf590613631565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611d99575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611df75760165482611dab856108b2565b611db59190613596565b1115611df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ded90613613565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611e7957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ed257611ecf6103e8611ec160105460125411611eae57600f5460125411611ea557600954611ea9565b600a545b611eb2565b600c545b8561250490919063ffffffff16565b61257b90919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611f70575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611fa857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fb1575f90505b5f611fbb306108b2565b9050601c60029054906101000a900460ff168015611fe55750601c5f9054906101000a900460ff16155b8015612037575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561204f5750601c60019054906101000a900460ff165b801561205c575060175481115b801561206b5750601154601254115b1561211f57601454431115612082575f6013819055505b601b54601354106120c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bf906136c2565b60405180910390fd5b6120e56120e0846120db846018546125d5565b6125d5565b6125ed565b5f4790505f8111156120fb576120fa47612856565b5b60135f81548092919061210d90613631565b919050555043601481905550506121f0565b601c5f9054906101000a900460ff16158015612181575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156121995750601c60019054906101000a900460ff165b80156121a6575060175481115b80156121b55750601154601254115b156121ef576121d76121d2846121cd846018546125d5565b6125d5565b6125ed565b5f4790505f8111156121ed576121ec47612856565b5b505b5b505b5f8111156122f15761224a8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128be90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122e89190612b66565b60405180910390a35b6123418260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291b90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506123e4612398828461291b90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128be90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612487848661291b90919063ffffffff16565b6040516124949190612b66565b60405180910390a350505050565b5f8383111582906124e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e09190612a35565b60405180910390fd5b505f83856124f791906136e0565b9050809150509392505050565b5f808303612514575f9050612575565b5f82846125219190612ef8565b90508284826125309190613740565b14612570576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612567906137e0565b60405180910390fd5b809150505b92915050565b5f6125bc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612964565b905092915050565b5f80823b90505f8111915050919050565b5f8183116125e357826125e5565b815b905092915050565b6001601c5f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115612623576126226137fe565b5b6040519080825280602002602001820160405280156126515781602001602082028036833780820191505090505b50905030815f815181106126685761266761382b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561270c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612730919061301d565b816001815181106127445761274361382b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127aa3060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611772565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161280c95949392919061390f565b5f604051808303815f87803b158015612823575f80fd5b505af1158015612835573d5f803e3d5ffd5b50505050505f601c5f6101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156128ba573d5f803e3d5ffd5b5050565b5f8082846128cc9190613596565b905083811015612911576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612908906139b1565b60405180910390fd5b8091505092915050565b5f61295c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124a2565b905092915050565b5f80831182906129aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a19190612a35565b60405180910390fd5b505f83856129b89190613740565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612a07826129c5565b612a1181856129cf565b9350612a218185602086016129df565b612a2a816129ed565b840191505092915050565b5f6020820190508181035f830152612a4d81846129fd565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612a8282612a59565b9050919050565b612a9281612a78565b8114612a9c575f80fd5b50565b5f81359050612aad81612a89565b92915050565b5f819050919050565b612ac581612ab3565b8114612acf575f80fd5b50565b5f81359050612ae081612abc565b92915050565b5f8060408385031215612afc57612afb612a55565b5b5f612b0985828601612a9f565b9250506020612b1a85828601612ad2565b9150509250929050565b5f8115159050919050565b612b3881612b24565b82525050565b5f602082019050612b515f830184612b2f565b92915050565b612b6081612ab3565b82525050565b5f602082019050612b795f830184612b57565b92915050565b5f805f60608486031215612b9657612b95612a55565b5b5f612ba386828701612a9f565b9350506020612bb486828701612a9f565b9250506040612bc586828701612ad2565b9150509250925092565b5f60ff82169050919050565b612be481612bcf565b82525050565b5f602082019050612bfd5f830184612bdb565b92915050565b612c0c81612a78565b82525050565b5f602082019050612c255f830184612c03565b92915050565b5f60208284031215612c4057612c3f612a55565b5b5f612c4d84828501612a9f565b91505092915050565b612c5f81612b24565b8114612c69575f80fd5b50565b5f81359050612c7a81612c56565b92915050565b5f60208284031215612c9557612c94612a55565b5b5f612ca284828501612c6c565b91505092915050565b5f8060408385031215612cc157612cc0612a55565b5b5f612cce85828601612a9f565b9250506020612cdf85828601612a9f565b9150509250929050565b5f8060408385031215612cff57612cfe612a55565b5b5f612d0c85828601612c6c565b9250506020612d1d85828601612ad2565b9150509250929050565b5f60208284031215612d3c57612d3b612a55565b5b5f612d4984828501612ad2565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612dd457808604811115612db057612daf612d52565b5b6001851615612dbf5780820291505b8081029050612dcd85612d7f565b9450612d94565b94509492505050565b5f82612dec5760019050612ea7565b81612df9575f9050612ea7565b8160018114612e0f5760028114612e1957612e48565b6001915050612ea7565b60ff841115612e2b57612e2a612d52565b5b8360020a915084821115612e4257612e41612d52565b5b50612ea7565b5060208310610133831016604e8410600b8410161715612e7d5782820a905083811115612e7857612e77612d52565b5b612ea7565b612e8a8484846001612d8b565b92509050818404811115612ea157612ea0612d52565b5b81810290505b9392505050565b5f612eb882612ab3565b9150612ec383612bcf565b9250612ef07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612ddd565b905092915050565b5f612f0282612ab3565b9150612f0d83612ab3565b9250828202612f1b81612ab3565b91508282048414831517612f3257612f31612d52565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612f6d6020836129cf565b9150612f7882612f39565b602082019050919050565b5f6020820190508181035f830152612f9a81612f61565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612fd56017836129cf565b9150612fe082612fa1565b602082019050919050565b5f6020820190508181035f83015261300281612fc9565b9050919050565b5f8151905061301781612a89565b92915050565b5f6020828403121561303257613031612a55565b5b5f61303f84828501613009565b91505092915050565b5f60408201905061305b5f830185612c03565b6130686020830184612c03565b9392505050565b5f819050919050565b5f819050919050565b5f61309b6130966130918461306f565b613078565b612ab3565b9050919050565b6130ab81613081565b82525050565b5f60c0820190506130c45f830189612c03565b6130d16020830188612b57565b6130de60408301876130a2565b6130eb60608301866130a2565b6130f86080830185612c03565b61310560a0830184612b57565b979650505050505050565b5f8151905061311e81612abc565b92915050565b5f805f6060848603121561313b5761313a612a55565b5b5f61314886828701613110565b935050602061315986828701613110565b925050604061316a86828701613110565b9150509250925092565b5f6040820190506131875f830185612c03565b6131946020830184612b57565b9392505050565b5f815190506131a981612c56565b92915050565b5f602082840312156131c4576131c3612a55565b5b5f6131d18482850161319b565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6132346026836129cf565b915061323f826131da565b604082019050919050565b5f6020820190508181035f83015261326181613228565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6132c26024836129cf565b91506132cd82613268565b604082019050919050565b5f6020820190508181035f8301526132ef816132b6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6133506022836129cf565b915061335b826132f6565b604082019050919050565b5f6020820190508181035f83015261337d81613344565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133de6025836129cf565b91506133e982613384565b604082019050919050565b5f6020820190508181035f83015261340b816133d2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61346c6023836129cf565b915061347782613412565b604082019050919050565b5f6020820190508181035f83015261349981613460565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134fa6029836129cf565b9150613505826134a0565b604082019050919050565b5f6020820190508181035f830152613527816134ee565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6135626019836129cf565b915061356d8261352e565b602082019050919050565b5f6020820190508181035f83015261358f81613556565b9050919050565b5f6135a082612ab3565b91506135ab83612ab3565b92508282019050808211156135c3576135c2612d52565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6135fd601a836129cf565b9150613608826135c9565b602082019050919050565b5f6020820190508181035f83015261362a816135f1565b9050919050565b5f61363b82612ab3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361366d5761366c612d52565b5b600182019050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f6136ac600f836129cf565b91506136b782613678565b602082019050919050565b5f6020820190508181035f8301526136d9816136a0565b9050919050565b5f6136ea82612ab3565b91506136f583612ab3565b925082820390508181111561370d5761370c612d52565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61374a82612ab3565b915061375583612ab3565b92508261376557613764613713565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137ca6021836129cf565b91506137d582613770565b604082019050919050565b5f6020820190508181035f8301526137f7816137be565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61388a81612a78565b82525050565b5f61389b8383613881565b60208301905092915050565b5f602082019050919050565b5f6138bd82613858565b6138c78185613862565b93506138d283613872565b805f5b838110156139025781516138e98882613890565b97506138f4836138a7565b9250506001810190506138d5565b5085935050505092915050565b5f60a0820190506139225f830188612b57565b61392f60208301876130a2565b818103604083015261394181866138b3565b90506139506060830185612c03565b61395d6080830184612b57565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61399b601b836129cf565b91506139a682613967565b602082019050919050565b5f6020820190508181035f8301526139c88161398f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205a05ac912ac7db259a0ecb8614283af663a12f23dacc45328e3271a9a0d2377c64736f6c63430008190033