60806040526040518060400160405280600a81526020017f506f70436174436f696e00000000000000000000000000000000000000000000815250600090816200004a91906200043a565b506040518060400160405280600681526020017f504f504341540000000000000000000000000000000000000000000000000000815250600190816200009191906200043a565b506be04ee0ccb27ac646ac0000006002556012600360006101000a81548160ff021916908360ff160217905550348015620000cb57600080fd5b5060405162003748380380620037488339818101604052810190620000f191906200058b565b33600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600254600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050620005bd565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200024257607f821691505b602082108103620002585762000257620001fa565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002c27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000283565b620002ce868362000283565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200031b620003156200030f84620002e6565b620002f0565b620002e6565b9050919050565b6000819050919050565b6200033783620002fa565b6200034f620003468262000322565b84845462000290565b825550505050565b600090565b6200036662000357565b620003738184846200032c565b505050565b5b818110156200039b576200038f6000826200035c565b60018101905062000379565b5050565b601f821115620003ea57620003b4816200025e565b620003bf8462000273565b81016020851015620003cf578190505b620003e7620003de8562000273565b83018262000378565b50505b505050565b600082821c905092915050565b60006200040f60001984600802620003ef565b1980831691505092915050565b60006200042a8383620003fc565b9150826002028217905092915050565b6200044582620001c0565b67ffffffffffffffff811115620004615762000460620001cb565b5b6200046d825462000229565b6200047a8282856200039f565b600060209050601f831160018114620004b257600084156200049d578287015190505b620004a985826200041c565b86555062000519565b601f198416620004c2866200025e565b60005b82811015620004ec57848901518255600182019150602085019450602081019050620004c5565b868310156200050c578489015162000508601f891682620003fc565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620005538262000526565b9050919050565b620005658162000546565b81146200057157600080fd5b50565b60008151905062000585816200055a565b92915050565b600060208284031215620005a457620005a362000521565b5b6000620005b48482850162000574565b91505092915050565b61317b80620005cd6000396000f3fe6080604052600436106101c25760003560e01c806370a08231116100f757806396c5e1ab11610095578063d21c8d5511610064578063d21c8d5514610675578063dd62ed3e146106a0578063e2daf665146106dd578063e4849b3214610708576101c2565b806396c5e1ab146105c6578063a6f2ae3a14610603578063a9059cbb1461060d578063d0fb02031461064a576101c2565b8063891e1ee0116100d1578063891e1ee0146105085780638da5cb5b14610533578063923e51d51461055e57806395d89b411461059b576101c2565b806370a0823114610477578063715018a6146104b4578063858ced35146104cb576101c2565b80632c7ee946116101645780633ef530eb1161013e5780633ef530eb146103b957806347062402146103e45780634a0af68d1461040f57806365f6a9211461044c576101c2565b80632c7ee94614610328578063313ce56714610351578063376d567c1461037c576101c2565b806316e3b09c116101a057806316e3b09c1461025857806318160ddd1461029557806323b872dd146102c05780632b14ca56146102fd576101c2565b806306fdde03146101c7578063095ea7b3146101f25780630b78f9c01461022f575b600080fd5b3480156101d357600080fd5b506101dc610731565b6040516101e991906127d0565b60405180910390f35b3480156101fe57600080fd5b506102196004803603810190610214919061288b565b6107bf565b60405161022691906128e6565b60405180910390f35b34801561023b57600080fd5b5061025660048036038101906102519190612901565b6108b1565b005b34801561026457600080fd5b5061027f600480360381019061027a9190612941565b610a28565b60405161028c91906128e6565b60405180910390f35b3480156102a157600080fd5b506102aa610ae1565b6040516102b7919061297d565b60405180910390f35b3480156102cc57600080fd5b506102e760048036038101906102e29190612998565b610ae7565b6040516102f491906128e6565b60405180910390f35b34801561030957600080fd5b5061031261124a565b60405161031f919061297d565b60405180910390f35b34801561033457600080fd5b5061034f600480360381019061034a9190612901565b611250565b005b34801561035d57600080fd5b5061036661137d565b6040516103739190612a07565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e9190612a22565b611390565b6040516103b091906128e6565b60405180910390f35b3480156103c557600080fd5b506103ce611436565b6040516103db91906128e6565b60405180910390f35b3480156103f057600080fd5b506103f96114df565b604051610406919061297d565b60405180910390f35b34801561041b57600080fd5b5061043660048036038101906104319190612a22565b6114e5565b60405161044391906128e6565b60405180910390f35b34801561045857600080fd5b5061046161158b565b60405161046e9190612a5e565b60405180910390f35b34801561048357600080fd5b5061049e60048036038101906104999190612a22565b6115b1565b6040516104ab919061297d565b60405180910390f35b3480156104c057600080fd5b506104c96115c9565b005b3480156104d757600080fd5b506104f260048036038101906104ed9190612a22565b61172e565b6040516104ff91906128e6565b60405180910390f35b34801561051457600080fd5b5061051d6117d4565b60405161052a9190612a5e565b60405180910390f35b34801561053f57600080fd5b506105486117fa565b6040516105559190612a5e565b60405180910390f35b34801561056a57600080fd5b5061058560048036038101906105809190612a22565b611820565b60405161059291906128e6565b60405180910390f35b3480156105a757600080fd5b506105b06118b8565b6040516105bd91906127d0565b60405180910390f35b3480156105d257600080fd5b506105ed60048036038101906105e89190612941565b611946565b6040516105fa91906128e6565b60405180910390f35b61060b6119b5565b005b34801561061957600080fd5b50610634600480360381019061062f919061288b565b611e1a565b60405161064191906128e6565b60405180910390f35b34801561065657600080fd5b5061065f61203a565b60405161066c9190612a5e565b60405180910390f35b34801561068157600080fd5b5061068a612060565b6040516106979190612a5e565b60405180910390f35b3480156106ac57600080fd5b506106c760048036038101906106c29190612a79565b612086565b6040516106d4919061297d565b60405180910390f35b3480156106e957600080fd5b506106f26120ab565b6040516106ff9190612a5e565b60405180910390f35b34801561071457600080fd5b5061072f600480360381019061072a9190612941565b6120d1565b005b6000805461073e90612ae8565b80601f016020809104026020016040519081016040528092919081815260200182805461076a90612ae8565b80156107b75780601f1061078c576101008083540402835291602001916107b7565b820191906000526020600020905b81548152906001019060200180831161079a57829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161089f919061297d565b60405180910390a36001905092915050565b731f490e99657cd08a058c6bb6cd81dd38f59e0e7a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061094c5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61095557600080fd5b6064821115610999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099090612b65565b60405180910390fd5b60648111156109dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d490612bd1565b60405180910390fd5b81600c8190555080600d819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a18282604051610a1c929190612bf1565b60405180910390a15050565b6000731f490e99657cd08a058c6bb6cd81dd38f59e0e7a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ac55750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610ace57600080fd5b610ad8338361242e565b60019050919050565b60025481565b600081600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610b6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6290612c66565b60405180910390fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2190612cd2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9090612d3e565b60405180910390fd5b6000610cc36064610cb5600d54866125b790919063ffffffff16565b61263190919063ffffffff16565b90506000610cda828561268990919063ffffffff16565b9050610d2e84600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268990919063ffffffff16565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dc381600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e290919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e63919061297d565b60405180910390a36000821115610f6f57610ec682600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e290919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f66919061297d565b60405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561104757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b1561123d576110db84600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268990919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051611234919061297d565b60405180910390a35b6001925050509392505050565b600d5481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112aa57600080fd5b60648211156112ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e590612b65565b60405180910390fd5b6064811115611332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132990612bd1565b60405180910390fd5b81600c8190555080600d819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a18282604051611371929190612bf1565b60405180910390a15050565b600360009054906101000a900460ff1681565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113ec57600080fd5b81600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b6000731f490e99657cd08a058c6bb6cd81dd38f59e0e7a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806114d35750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6114dc57600080fd5b90565b600c5481565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461154157600080fd5b81600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915090505481565b731f490e99657cd08a058c6bb6cd81dd38f59e0e7a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806116645750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61166d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461178a57600080fd5b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007378322d0c5768c9ca370ddfc1d44db0fef3a6e05173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461186e57600080fd5b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600180546118c590612ae8565b80601f01602080910402602001604051908101604052809291908181526020018280546118f190612ae8565b801561193e5780601f106119135761010080835404028352916020019161193e565b820191906000526020600020905b81548152906001019060200180831161192157829003601f168201915b505050505081565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119a257600080fd5b6119ac338361242e565b60019050919050565b600034116119f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ef90612dd0565b60405180910390fd5b60003490506000600c541115611cb6576000611a326064611a24600c54856125b790919063ffffffff16565b61263190919063ffffffff16565b90506000611a49828461268990919063ffffffff16565b9050611abf8160046000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e290919063ffffffff16565b60046000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ba3919061297d565b60405180910390a36000821115611caf57611c0682600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e290919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ca6919061297d565b60405180910390a35b5050611e17565b611d2a8160046000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e290919063ffffffff16565b60046000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e0e919061297d565b60405180910390a35b50565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611e6857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ea157600080fd5b611ef382600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268990919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f8882600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e290919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612028919061297d565b60405180910390a36001905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005602052816000526040600020602052806000526040600020600091509150505481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214a90612c66565b60405180910390fd5b600061217d606461216f600d54856125b790919063ffffffff16565b61263190919063ffffffff16565b90506000612194828461268990919063ffffffff16565b90506121e883600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268990919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061227d81600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e290919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161231d919061297d565b60405180910390a360008211156124295761238082600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e290919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612420919061297d565b60405180910390a35b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361249d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249490612e3c565b60405180910390fd5b6124b2816002546126e290919063ffffffff16565b60028190555061250a81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e290919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125ab919061297d565b60405180910390a35050565b60008083036125c9576000905061262b565b600082846125d79190612e8b565b90508284826125e69190612efc565b14612626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261d90612f79565b60405180910390fd5b809150505b92915050565b6000808211612675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266c90612fe5565b60405180910390fd5b81836126819190612efc565b905092915050565b6000828211156126ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c590613051565b60405180910390fd5b81836126da9190613071565b905092915050565b60008082846126f191906130a5565b905083811015612736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272d90613125565b60405180910390fd5b8091505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561277a57808201518184015260208101905061275f565b60008484015250505050565b6000601f19601f8301169050919050565b60006127a282612740565b6127ac818561274b565b93506127bc81856020860161275c565b6127c581612786565b840191505092915050565b600060208201905081810360008301526127ea8184612797565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612822826127f7565b9050919050565b61283281612817565b811461283d57600080fd5b50565b60008135905061284f81612829565b92915050565b6000819050919050565b61286881612855565b811461287357600080fd5b50565b6000813590506128858161285f565b92915050565b600080604083850312156128a2576128a16127f2565b5b60006128b085828601612840565b92505060206128c185828601612876565b9150509250929050565b60008115159050919050565b6128e0816128cb565b82525050565b60006020820190506128fb60008301846128d7565b92915050565b60008060408385031215612918576129176127f2565b5b600061292685828601612876565b925050602061293785828601612876565b9150509250929050565b600060208284031215612957576129566127f2565b5b600061296584828501612876565b91505092915050565b61297781612855565b82525050565b6000602082019050612992600083018461296e565b92915050565b6000806000606084860312156129b1576129b06127f2565b5b60006129bf86828701612840565b93505060206129d086828701612840565b92505060406129e186828701612876565b9150509250925092565b600060ff82169050919050565b612a01816129eb565b82525050565b6000602082019050612a1c60008301846129f8565b92915050565b600060208284031215612a3857612a376127f2565b5b6000612a4684828501612840565b91505092915050565b612a5881612817565b82525050565b6000602082019050612a736000830184612a4f565b92915050565b60008060408385031215612a9057612a8f6127f2565b5b6000612a9e85828601612840565b9250506020612aaf85828601612840565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612b0057607f821691505b602082108103612b1357612b12612ab9565b5b50919050565b7f427579206665652063616e6e6f74206578636565642031303025000000000000600082015250565b6000612b4f601a8361274b565b9150612b5a82612b19565b602082019050919050565b60006020820190508181036000830152612b7e81612b42565b9050919050565b7f53656c6c206665652063616e6e6f742065786365656420313030250000000000600082015250565b6000612bbb601b8361274b565b9150612bc682612b85565b602082019050919050565b60006020820190508181036000830152612bea81612bae565b9050919050565b6000604082019050612c06600083018561296e565b612c13602083018461296e565b9392505050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000612c5060148361274b565b9150612c5b82612c1a565b602082019050919050565b60006020820190508181036000830152612c7f81612c43565b9050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b6000612cbc60168361274b565b9150612cc782612c86565b602082019050919050565b60006020820190508181036000830152612ceb81612caf565b9050919050565b7f496e76616c696420726563697069656e74206164647265737300000000000000600082015250565b6000612d2860198361274b565b9150612d3382612cf2565b602082019050919050565b60006020820190508181036000830152612d5781612d1b565b9050919050565b7f45544820616d6f756e742073686f756c6420626520677265617465722074686160008201527f6e20300000000000000000000000000000000000000000000000000000000000602082015250565b6000612dba60238361274b565b9150612dc582612d5e565b604082019050919050565b60006020820190508181036000830152612de981612dad565b9050919050565b7f42455032303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612e26601f8361274b565b9150612e3182612df0565b602082019050919050565b60006020820190508181036000830152612e5581612e19565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e9682612855565b9150612ea183612855565b9250828202612eaf81612855565b91508282048414831517612ec657612ec5612e5c565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612f0782612855565b9150612f1283612855565b925082612f2257612f21612ecd565b5b828204905092915050565b7f4d756c7469706c69636174696f6e206f766572666c6f77000000000000000000600082015250565b6000612f6360178361274b565b9150612f6e82612f2d565b602082019050919050565b60006020820190508181036000830152612f9281612f56565b9050919050565b7f4469766973696f6e206279207a65726f00000000000000000000000000000000600082015250565b6000612fcf60108361274b565b9150612fda82612f99565b602082019050919050565b60006020820190508181036000830152612ffe81612fc2565b9050919050565b7f5375627472616374696f6e206f766572666c6f77000000000000000000000000600082015250565b600061303b60148361274b565b915061304682613005565b602082019050919050565b6000602082019050818103600083015261306a8161302e565b9050919050565b600061307c82612855565b915061308783612855565b925082820390508181111561309f5761309e612e5c565b5b92915050565b60006130b082612855565b91506130bb83612855565b92508282019050808211156130d3576130d2612e5c565b5b92915050565b7f4164646974696f6e206f766572666c6f77000000000000000000000000000000600082015250565b600061310f60118361274b565b915061311a826130d9565b602082019050919050565b6000602082019050818103600083015261313e81613102565b905091905056fea2646970667358221220d7c7ae7de4a246b435b4330621a65c1ccc0089df0ea2975e4734eaad596ba7a864736f6c63430008160033000000000000000000000000e23fbdff9687dbb158f8debeaf2c1147fb6f4d09