60806040526014600e55662386f26fc100006010553480156200002157600080fd5b506040516200454f3803806200454f83398181016040528101906200004791906200041a565b6040518060400160405280600781526020017f736b79426c7565000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f534b5900000000000000000000000000000000000000000000000000000000008152508160009081620000c49190620006cb565b508060019081620000d69190620006cb565b505050620000f9620000ed6200015460201b60201c565b6200015c60201b60201c565b81600b90816200010a9190620006cb565b5080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620007b2565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200028b8262000240565b810181811067ffffffffffffffff82111715620002ad57620002ac62000251565b5b80604052505050565b6000620002c262000222565b9050620002d0828262000280565b919050565b600067ffffffffffffffff821115620002f357620002f262000251565b5b620002fe8262000240565b9050602081019050919050565b60005b838110156200032b5780820151818401526020810190506200030e565b60008484015250505050565b60006200034e6200034884620002d5565b620002b6565b9050828152602081018484840111156200036d576200036c6200023b565b5b6200037a8482856200030b565b509392505050565b600082601f8301126200039a576200039962000236565b5b8151620003ac84826020860162000337565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620003e282620003b5565b9050919050565b620003f481620003d5565b81146200040057600080fd5b50565b6000815190506200041481620003e9565b92915050565b600080604083850312156200043457620004336200022c565b5b600083015167ffffffffffffffff81111562000455576200045462000231565b5b620004638582860162000382565b9250506020620004768582860162000403565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004d357607f821691505b602082108103620004e957620004e86200048b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005537fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000514565b6200055f868362000514565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005ac620005a6620005a08462000577565b62000581565b62000577565b9050919050565b6000819050919050565b620005c8836200058b565b620005e0620005d782620005b3565b84845462000521565b825550505050565b600090565b620005f7620005e8565b62000604818484620005bd565b505050565b5b818110156200062c5762000620600082620005ed565b6001810190506200060a565b5050565b601f8211156200067b576200064581620004ef565b620006508462000504565b8101602085101562000660578190505b620006786200066f8562000504565b83018262000609565b50505b505050565b600082821c905092915050565b6000620006a06000198460080262000680565b1980831691505092915050565b6000620006bb83836200068d565b9150826002028217905092915050565b620006d68262000480565b67ffffffffffffffff811115620006f257620006f162000251565b5b620006fe8254620004ba565b6200070b82828562000630565b600060209050601f8311600181146200074357600084156200072e578287015190505b6200073a8582620006ad565b865550620007aa565b601f1984166200075386620004ef565b60005b828110156200077d5784890151825560018201915060208501945060208101905062000756565b868310156200079d578489015162000799601f8916826200068d565b8355505b6001600288020188555050505b505050505050565b613d8d80620007c26000396000f3fe6080604052600436106101d15760003560e01c80634f6ccce7116100f75780638da5cb5b11610095578063c87b56dd11610064578063c87b56dd1461061a578063e580b2b014610657578063e985e9c514610682578063f2fde38b146106bf576101d8565b80638da5cb5b1461057257806395d89b411461059d578063a22cb465146105c8578063b88d4fde146105f1576101d8565b80636352211e116100d15780636352211e146104b657806370a08231146104f3578063714cff5614610530578063715018a61461055b576101d8565b80634f6ccce71461044457806359533d6c146104815780635f7696211461048b576101d8565b806316c38b3c1161016f57806323b872dd1161013e57806323b872dd1461039e5780632f745c59146103c75780633ccfd60b1461040457806342842e0e1461041b576101d8565b806316c38b3c146102f457806316c61ccc1461031d57806318160ddd14610348578063235b6ea114610373576101d8565b806306fdde03116101ab57806306fdde0314610259578063081812fc14610284578063095ea7b3146102c15780631249c58b146102ea576101d8565b806301ffc9a7146101da57806304549d6f1461021757806304c98b2b14610242576101d8565b366101d857005b005b3480156101e657600080fd5b5061020160048036038101906101fc9190612937565b6106e8565b60405161020e919061297f565b60405180910390f35b34801561022357600080fd5b5061022c610762565b604051610239919061297f565b60405180910390f35b34801561024e57600080fd5b50610257610775565b005b34801561026557600080fd5b5061026e6107ae565b60405161027b9190612a2a565b60405180910390f35b34801561029057600080fd5b506102ab60048036038101906102a69190612a82565b610840565b6040516102b89190612af0565b60405180910390f35b3480156102cd57600080fd5b506102e860048036038101906102e39190612b37565b610886565b005b6102f261099d565b005b34801561030057600080fd5b5061031b60048036038101906103169190612ba3565b610afd565b005b34801561032957600080fd5b50610332610b22565b60405161033f919061297f565b60405180910390f35b34801561035457600080fd5b5061035d610b35565b60405161036a9190612bdf565b60405180910390f35b34801561037f57600080fd5b50610388610b42565b6040516103959190612bdf565b60405180910390f35b3480156103aa57600080fd5b506103c560048036038101906103c09190612bfa565b610b48565b005b3480156103d357600080fd5b506103ee60048036038101906103e99190612b37565b610ba8565b6040516103fb9190612bdf565b60405180910390f35b34801561041057600080fd5b50610419610c4d565b005b34801561042757600080fd5b50610442600480360381019061043d9190612bfa565b610d17565b005b34801561045057600080fd5b5061046b60048036038101906104669190612a82565b610d37565b6040516104789190612bdf565b60405180910390f35b610489610da8565b005b34801561049757600080fd5b506104a0610fe2565b6040516104ad9190612bdf565b60405180910390f35b3480156104c257600080fd5b506104dd60048036038101906104d89190612a82565b610fe8565b6040516104ea9190612af0565b60405180910390f35b3480156104ff57600080fd5b5061051a60048036038101906105159190612c4d565b61106e565b6040516105279190612bdf565b60405180910390f35b34801561053c57600080fd5b50610545611125565b6040516105529190612bdf565b60405180910390f35b34801561056757600080fd5b5061057061112b565b005b34801561057e57600080fd5b5061058761113f565b6040516105949190612af0565b60405180910390f35b3480156105a957600080fd5b506105b2611169565b6040516105bf9190612a2a565b60405180910390f35b3480156105d457600080fd5b506105ef60048036038101906105ea9190612c7a565b6111fb565b005b3480156105fd57600080fd5b5061061860048036038101906106139190612def565b611211565b005b34801561062657600080fd5b50610641600480360381019061063c9190612a82565b611273565b60405161064e9190612a2a565b60405180910390f35b34801561066357600080fd5b5061066c6112db565b6040516106799190612bdf565b60405180910390f35b34801561068e57600080fd5b506106a960048036038101906106a49190612e72565b6112e1565b6040516106b6919061297f565b60405180910390f35b3480156106cb57600080fd5b506106e660048036038101906106e19190612c4d565b611375565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061075b575061075a826113f8565b5b9050919050565b600c60149054906101000a900460ff1681565b61077d6114da565b6001600c60146101000a81548160ff02191690831515021790555061012c426107a69190612ee1565b600d81905550565b6060600080546107bd90612f44565b80601f01602080910402602001604051908101604052809291908181526020018280546107e990612f44565b80156108365780601f1061080b57610100808354040283529160200191610836565b820191906000526020600020905b81548152906001019060200180831161081957829003601f168201915b5050505050905090565b600061084b82611558565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061089182610fe8565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f890612fe7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166109206115a3565b73ffffffffffffffffffffffffffffffffffffffff16148061094f575061094e816109496115a3565b6112e1565b5b61098e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098590613079565b60405180910390fd5b61099883836115ab565b505050565b601160009054906101000a900460ff16156109ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e4906130e5565b60405180910390fd5b600c60149054906101000a900460ff168015610a0b5750600d544210155b610a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4190613151565b60405180910390fd5b600e54600f5410610a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a87906131bd565b60405180910390fd5b601054341015610ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acc90613229565b60405180910390fd5b6001600f6000828254610ae89190612ee1565b92505081905550610afb33600f54611664565b565b610b056114da565b80601160006101000a81548160ff02191690831515021790555050565b601160009054906101000a900460ff1681565b6000600880549050905090565b60105481565b610b59610b536115a3565b82611682565b610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f906132bb565b60405180910390fd5b610ba3838383611717565b505050565b6000610bb38361106e565b8210610bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610beb9061334d565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610c556114da565b6000610c5f61113f565b9050600047905060008273ffffffffffffffffffffffffffffffffffffffff1682604051610c8c9061339e565b60006040518083038185875af1925050503d8060008114610cc9576040519150601f19603f3d011682016040523d82523d6000602084013e610cce565b606091505b5050905080610d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d09906133ff565b60405180910390fd5b505050565b610d3283838360405180602001604052806000815250611211565b505050565b6000610d41610b35565b8210610d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7990613491565b60405180910390fd5b60088281548110610d9657610d956134b1565b5b90600052602060002001549050919050565b601160009054906101000a900460ff1615610df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610def906130e5565b60405180910390fd5b600c60149054906101000a900460ff168015610e155750600d5442105b610e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4b9061352c565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306c933d8336040518263ffffffff1660e01b8152600401610eaf9190612af0565b602060405180830381865afa158015610ecc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef09190613561565b610f2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f26906135da565b60405180910390fd5b600e54600f5410610f75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6c906131bd565b60405180910390fd5b601054341015610fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb190613229565b60405180910390fd5b6001600f6000828254610fcd9190612ee1565b92505081905550610fe033600f54611664565b565b600e5481565b600080610ff483611a10565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c90613646565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d5906136d8565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600f5481565b6111336114da565b61113d6000611a4d565b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461117890612f44565b80601f01602080910402602001604051908101604052809291908181526020018280546111a490612f44565b80156111f15780601f106111c6576101008083540402835291602001916111f1565b820191906000526020600020905b8154815290600101906020018083116111d457829003601f168201915b5050505050905090565b61120d6112066115a3565b8383611b13565b5050565b61122261121c6115a3565b83611682565b611261576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611258906132bb565b60405180910390fd5b61126d84848484611c7f565b50505050565b606061127e82611558565b6000611288611cdb565b905060008151116112a857604051806020016040528060008152506112d3565b806112b284611d6d565b6040516020016112c3929190613734565b6040516020818303038152906040525b915050919050565b600d5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61137d6114da565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e3906137ca565b60405180910390fd5b6113f581611a4d565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806114c357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806114d357506114d282611e3b565b5b9050919050565b6114e26115a3565b73ffffffffffffffffffffffffffffffffffffffff1661150061113f565b73ffffffffffffffffffffffffffffffffffffffff1614611556576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154d90613836565b60405180910390fd5b565b61156181611ea5565b6115a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159790613646565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661161e83610fe8565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b61167e828260405180602001604052806000815250611ee6565b5050565b60008061168e83610fe8565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806116d057506116cf81856112e1565b5b8061170e57508373ffffffffffffffffffffffffffffffffffffffff166116f684610840565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661173782610fe8565b73ffffffffffffffffffffffffffffffffffffffff161461178d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611784906138c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f39061395a565b60405180910390fd5b6118098383836001611f41565b8273ffffffffffffffffffffffffffffffffffffffff1661182982610fe8565b73ffffffffffffffffffffffffffffffffffffffff161461187f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611876906138c8565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a0b838383600161209f565b505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b78906139c6565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c72919061297f565b60405180910390a3505050565b611c8a848484611717565b611c96848484846120a5565b611cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccc90613a58565b60405180910390fd5b50505050565b6060600b8054611cea90612f44565b80601f0160208091040260200160405190810160405280929190818152602001828054611d1690612f44565b8015611d635780601f10611d3857610100808354040283529160200191611d63565b820191906000526020600020905b815481529060010190602001808311611d4657829003601f168201915b5050505050905090565b606060006001611d7c8461222c565b01905060008167ffffffffffffffff811115611d9b57611d9a612cc4565b5b6040519080825280601f01601f191660200182016040528015611dcd5781602001600182028036833780820191505090505b509050600082602001820190505b600115611e30578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611e2457611e23613a78565b5b04945060008503611ddb575b819350505050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16611ec783611a10565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b611ef0838361237f565b611efd60008484846120a5565b611f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3390613a58565b60405180910390fd5b505050565b611f4d8484848461259c565b6001811115611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8890613b19565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611fd857611fd3816125a2565b612017565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146120165761201585826125eb565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036120595761205481612758565b612098565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612097576120968482612829565b5b5b5050505050565b50505050565b60006120c68473ffffffffffffffffffffffffffffffffffffffff166128a8565b1561221f578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026120ef6115a3565b8786866040518563ffffffff1660e01b81526004016121119493929190613b8e565b6020604051808303816000875af192505050801561214d57506040513d601f19601f8201168201806040525081019061214a9190613bef565b60015b6121cf573d806000811461217d576040519150601f19603f3d011682016040523d82523d6000602084013e612182565b606091505b5060008151036121c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121be90613a58565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612224565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061228a577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816122805761227f613a78565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106122c7576d04ee2d6d415b85acef810000000083816122bd576122bc613a78565b5b0492506020810190505b662386f26fc1000083106122f657662386f26fc1000083816122ec576122eb613a78565b5b0492506010810190505b6305f5e100831061231f576305f5e100838161231557612314613a78565b5b0492506008810190505b612710831061234457612710838161233a57612339613a78565b5b0492506004810190505b60648310612367576064838161235d5761235c613a78565b5b0492506002810190505b600a8310612376576001810190505b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e590613c68565b60405180910390fd5b6123f781611ea5565b15612437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242e90613cd4565b60405180910390fd5b612445600083836001611f41565b61244e81611ea5565b1561248e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248590613cd4565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461259860008383600161209f565b5050565b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016125f88461106e565b6126029190613cf4565b90506000600760008481526020019081526020016000205490508181146126e7576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061276c9190613cf4565b905060006009600084815260200190815260200160002054905060006008838154811061279c5761279b6134b1565b5b9060005260206000200154905080600883815481106127be576127bd6134b1565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061280d5761280c613d28565b5b6001900381819060005260206000200160009055905550505050565b60006128348361106e565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612914816128df565b811461291f57600080fd5b50565b6000813590506129318161290b565b92915050565b60006020828403121561294d5761294c6128d5565b5b600061295b84828501612922565b91505092915050565b60008115159050919050565b61297981612964565b82525050565b60006020820190506129946000830184612970565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129d45780820151818401526020810190506129b9565b60008484015250505050565b6000601f19601f8301169050919050565b60006129fc8261299a565b612a0681856129a5565b9350612a168185602086016129b6565b612a1f816129e0565b840191505092915050565b60006020820190508181036000830152612a4481846129f1565b905092915050565b6000819050919050565b612a5f81612a4c565b8114612a6a57600080fd5b50565b600081359050612a7c81612a56565b92915050565b600060208284031215612a9857612a976128d5565b5b6000612aa684828501612a6d565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ada82612aaf565b9050919050565b612aea81612acf565b82525050565b6000602082019050612b056000830184612ae1565b92915050565b612b1481612acf565b8114612b1f57600080fd5b50565b600081359050612b3181612b0b565b92915050565b60008060408385031215612b4e57612b4d6128d5565b5b6000612b5c85828601612b22565b9250506020612b6d85828601612a6d565b9150509250929050565b612b8081612964565b8114612b8b57600080fd5b50565b600081359050612b9d81612b77565b92915050565b600060208284031215612bb957612bb86128d5565b5b6000612bc784828501612b8e565b91505092915050565b612bd981612a4c565b82525050565b6000602082019050612bf46000830184612bd0565b92915050565b600080600060608486031215612c1357612c126128d5565b5b6000612c2186828701612b22565b9350506020612c3286828701612b22565b9250506040612c4386828701612a6d565b9150509250925092565b600060208284031215612c6357612c626128d5565b5b6000612c7184828501612b22565b91505092915050565b60008060408385031215612c9157612c906128d5565b5b6000612c9f85828601612b22565b9250506020612cb085828601612b8e565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612cfc826129e0565b810181811067ffffffffffffffff82111715612d1b57612d1a612cc4565b5b80604052505050565b6000612d2e6128cb565b9050612d3a8282612cf3565b919050565b600067ffffffffffffffff821115612d5a57612d59612cc4565b5b612d63826129e0565b9050602081019050919050565b82818337600083830152505050565b6000612d92612d8d84612d3f565b612d24565b905082815260208101848484011115612dae57612dad612cbf565b5b612db9848285612d70565b509392505050565b600082601f830112612dd657612dd5612cba565b5b8135612de6848260208601612d7f565b91505092915050565b60008060008060808587031215612e0957612e086128d5565b5b6000612e1787828801612b22565b9450506020612e2887828801612b22565b9350506040612e3987828801612a6d565b925050606085013567ffffffffffffffff811115612e5a57612e596128da565b5b612e6687828801612dc1565b91505092959194509250565b60008060408385031215612e8957612e886128d5565b5b6000612e9785828601612b22565b9250506020612ea885828601612b22565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612eec82612a4c565b9150612ef783612a4c565b9250828201905080821115612f0f57612f0e612eb2565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f5c57607f821691505b602082108103612f6f57612f6e612f15565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fd16021836129a5565b9150612fdc82612f75565b604082019050919050565b6000602082019050818103600083015261300081612fc4565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000613063603d836129a5565b915061306e82613007565b604082019050919050565b6000602082019050818103600083015261309281613056565b9050919050565b7f636f6e74726163742063757272656e746c792070617573656400000000000000600082015250565b60006130cf6019836129a5565b91506130da82613099565b602082019050919050565b600060208201905081810360008301526130fe816130c2565b9050919050565b7f70726573616c6520686173206e6f742079657420656e64656400000000000000600082015250565b600061313b6019836129a5565b915061314682613105565b602082019050919050565b6000602082019050818103600083015261316a8161312e565b9050919050565b7f457863656564656420746865206c696d69740000000000000000000000000000600082015250565b60006131a76012836129a5565b91506131b282613171565b602082019050919050565b600060208201905081810360008301526131d68161319a565b9050919050565b7f65746865722073656e74206973206e6f7420636f727265637400000000000000600082015250565b60006132136019836129a5565b915061321e826131dd565b602082019050919050565b6000602082019050818103600083015261324281613206565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b60006132a5602d836129a5565b91506132b082613249565b604082019050919050565b600060208201905081810360008301526132d481613298565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000613337602b836129a5565b9150613342826132db565b604082019050919050565b600060208201905081810360008301526133668161332a565b9050919050565b600081905092915050565b50565b600061338860008361336d565b915061339382613378565b600082019050919050565b60006133a98261337b565b9150819050919050565b7f66616c69656420746f2073656e64206574686572000000000000000000000000600082015250565b60006133e96014836129a5565b91506133f4826133b3565b602082019050919050565b60006020820190508181036000830152613418816133dc565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b600061347b602c836129a5565b91506134868261341f565b604082019050919050565b600060208201905081810360008301526134aa8161346e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f70726573616c6520656e64656400000000000000000000000000000000000000600082015250565b6000613516600d836129a5565b9150613521826134e0565b602082019050919050565b6000602082019050818103600083015261354581613509565b9050919050565b60008151905061355b81612b77565b92915050565b600060208284031215613577576135766128d5565b5b60006135858482850161354c565b91505092915050565b7f796f7520617265206e6f7420696e2077686974656c6973740000000000000000600082015250565b60006135c46018836129a5565b91506135cf8261358e565b602082019050919050565b600060208201905081810360008301526135f3816135b7565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b60006136306018836129a5565b915061363b826135fa565b602082019050919050565b6000602082019050818103600083015261365f81613623565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006136c26029836129a5565b91506136cd82613666565b604082019050919050565b600060208201905081810360008301526136f1816136b5565b9050919050565b600081905092915050565b600061370e8261299a565b61371881856136f8565b93506137288185602086016129b6565b80840191505092915050565b60006137408285613703565b915061374c8284613703565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006137b46026836129a5565b91506137bf82613758565b604082019050919050565b600060208201905081810360008301526137e3816137a7565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138206020836129a5565b915061382b826137ea565b602082019050919050565b6000602082019050818103600083015261384f81613813565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006138b26025836129a5565b91506138bd82613856565b604082019050919050565b600060208201905081810360008301526138e1816138a5565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006139446024836129a5565b915061394f826138e8565b604082019050919050565b6000602082019050818103600083015261397381613937565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006139b06019836129a5565b91506139bb8261397a565b602082019050919050565b600060208201905081810360008301526139df816139a3565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613a426032836129a5565b9150613a4d826139e6565b604082019050919050565b60006020820190508181036000830152613a7181613a35565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b6000613b036035836129a5565b9150613b0e82613aa7565b604082019050919050565b60006020820190508181036000830152613b3281613af6565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613b6082613b39565b613b6a8185613b44565b9350613b7a8185602086016129b6565b613b83816129e0565b840191505092915050565b6000608082019050613ba36000830187612ae1565b613bb06020830186612ae1565b613bbd6040830185612bd0565b8181036060830152613bcf8184613b55565b905095945050505050565b600081519050613be98161290b565b92915050565b600060208284031215613c0557613c046128d5565b5b6000613c1384828501613bda565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613c526020836129a5565b9150613c5d82613c1c565b602082019050919050565b60006020820190508181036000830152613c8181613c45565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613cbe601c836129a5565b9150613cc982613c88565b602082019050919050565b60006020820190508181036000830152613ced81613cb1565b9050919050565b6000613cff82612a4c565b9150613d0a83612a4c565b9250828203905081811115613d2257613d21612eb2565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212203d74b5801c607b10f91a0b38931a5aa599c5160a2a5378049e26e2d8a9bef1af64736f6c63430008120033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000088a80fc20029764268bdc978ea195271c8ca6cb3000000000000000000000000000000000000000000000000000000000000002f68747470733a2f2f6e66742d636f6c6c656374696f6e2d70692d73657069612e76657263656c2e6170702f6170692f0000000000000000000000000000000000