60806040526040518060600160405280603581526020016200469a60359139600a90816200002e9190620004a5565b50611388600b5561012c600c55661c6cddbf3e4600600d556000600e556000600f5560006010556001601160006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280600781526020017f416e697a756b69000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f415a5500000000000000000000000000000000000000000000000000000000008152508160029081620000fb9190620004a5565b5080600390816200010d9190620004a5565b506200011e6200015460201b60201c565b6000819055505050620001466200013a6200015d60201b60201c565b6200016560201b60201c565b60016009819055506200058c565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002ad57607f821691505b602082108103620002c357620002c262000265565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200032d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002ee565b620003398683620002ee565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000386620003806200037a8462000351565b6200035b565b62000351565b9050919050565b6000819050919050565b620003a28362000365565b620003ba620003b1826200038d565b848454620002fb565b825550505050565b600090565b620003d1620003c2565b620003de81848462000397565b505050565b5b818110156200040657620003fa600082620003c7565b600181019050620003e4565b5050565b601f82111562000455576200041f81620002c9565b6200042a84620002de565b810160208510156200043a578190505b620004526200044985620002de565b830182620003e3565b50505b505050565b600082821c905092915050565b60006200047a600019846008026200045a565b1980831691505092915050565b600062000495838362000467565b9150826002028217905092915050565b620004b0826200022b565b67ffffffffffffffff811115620004cc57620004cb62000236565b5b620004d8825462000294565b620004e58282856200040a565b600060209050601f8311600181146200051d576000841562000508578287015190505b62000514858262000487565b86555062000584565b601f1984166200052d86620002c9565b60005b82811015620005575784890151825560018201915060208501945060208101905062000530565b8683101562000577578489015162000573601f89168262000467565b8355505b6001600288020188555050505b505050505050565b6140fe806200059c6000396000f3fe60806040526004361061020f5760003560e01c806370a0823111610118578063b88d4fde116100a0578063d5abeb011161006f578063d5abeb0114610754578063e985e9c51461077f578063efdc7788146107bc578063f2fde38b146107e5578063f6511f931461080e5761020f565b8063b88d4fde14610698578063c6a91b42146106c1578063c87b56dd146106ec578063d547cfb7146107295761020f565b8063982d669e116100e7578063982d669e146105d457806398710d1e146105ff5780639e9fcffc1461062a578063a0712d6814610653578063a22cb4651461066f5761020f565b806370a082311461052a578063715018a6146105675780638da5cb5b1461057e57806395d89b41146105a95761020f565b80631e84c4131161019b57806328cad13d1161016a57806328cad13d1461045b5780633ccfd60b1461048457806342842e0e1461049b57806355f804b3146104c45780636352211e146104ed5761020f565b80631e84c413146103b5578063202f298a146103e0578063228025e81461040957806323b872dd146104325761020f565b8063095ea7b3116101e2578063095ea7b3146102e45780630a00ae831461030d57806318160ddd146103365780631919fed714610361578063193ad7b41461038a5761020f565b806301ffc9a71461021457806306fdde031461025157806307e89ec01461027c578063081812fc146102a7575b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190612d42565b61084b565b6040516102489190612d8a565b60405180910390f35b34801561025d57600080fd5b5061026661092d565b6040516102739190612e35565b60405180910390f35b34801561028857600080fd5b506102916109bf565b60405161029e9190612e70565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c99190612eb7565b6109c5565b6040516102db9190612f25565b60405180910390f35b3480156102f057600080fd5b5061030b60048036038101906103069190612f6c565b610a41565b005b34801561031957600080fd5b50610334600480360381019061032f9190612eb7565b610b4b565b005b34801561034257600080fd5b5061034b610bd1565b6040516103589190612e70565b60405180910390f35b34801561036d57600080fd5b5061038860048036038101906103839190612eb7565b610be8565b005b34801561039657600080fd5b5061039f610c6e565b6040516103ac9190612e70565b60405180910390f35b3480156103c157600080fd5b506103ca610c74565b6040516103d79190612d8a565b60405180910390f35b3480156103ec57600080fd5b5061040760048036038101906104029190612eb7565b610c87565b005b34801561041557600080fd5b50610430600480360381019061042b9190612eb7565b610d0d565b005b34801561043e57600080fd5b5061045960048036038101906104549190612fac565b610d93565b005b34801561046757600080fd5b50610482600480360381019061047d919061302b565b610da3565b005b34801561049057600080fd5b50610499610e3c565b005b3480156104a757600080fd5b506104c260048036038101906104bd9190612fac565b610f19565b005b3480156104d057600080fd5b506104eb60048036038101906104e6919061318d565b610f39565b005b3480156104f957600080fd5b50610514600480360381019061050f9190612eb7565b610fc8565b6040516105219190612f25565b60405180910390f35b34801561053657600080fd5b50610551600480360381019061054c91906131d6565b610fde565b60405161055e9190612e70565b60405180910390f35b34801561057357600080fd5b5061057c6110ad565b005b34801561058a57600080fd5b50610593611135565b6040516105a09190612f25565b60405180910390f35b3480156105b557600080fd5b506105be61115f565b6040516105cb9190612e35565b60405180910390f35b3480156105e057600080fd5b506105e96111f1565b6040516105f69190612e70565b60405180910390f35b34801561060b57600080fd5b506106146111f7565b6040516106219190612e70565b60405180910390f35b34801561063657600080fd5b50610651600480360381019061064c9190612eb7565b6111fd565b005b61066d60048036038101906106689190612eb7565b611283565b005b34801561067b57600080fd5b5061069660048036038101906106919190613203565b611561565b005b3480156106a457600080fd5b506106bf60048036038101906106ba91906132e4565b6116d8565b005b3480156106cd57600080fd5b506106d6611754565b6040516106e39190612e70565b60405180910390f35b3480156106f857600080fd5b50610713600480360381019061070e9190612eb7565b61175a565b6040516107209190612e35565b60405180910390f35b34801561073557600080fd5b5061073e6117d6565b60405161074b9190612e35565b60405180910390f35b34801561076057600080fd5b50610769611864565b6040516107769190612e70565b60405180910390f35b34801561078b57600080fd5b506107a660048036038101906107a19190613367565b61186a565b6040516107b39190612d8a565b60405180910390f35b3480156107c857600080fd5b506107e360048036038101906107de9190612eb7565b6118fe565b005b3480156107f157600080fd5b5061080c600480360381019061080791906131d6565b611a21565b005b34801561081a57600080fd5b5061083560048036038101906108309190612eb7565b611b18565b6040516108429190612e70565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061091657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610926575061092582611b5e565b5b9050919050565b60606002805461093c906133d6565b80601f0160208091040260200160405190810160405280929190818152602001828054610968906133d6565b80156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b5050505050905090565b600d5481565b60006109d082611bc8565b610a06576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a4c82610fc8565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ab3576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ad2611c16565b73ffffffffffffffffffffffffffffffffffffffff1614158015610b045750610b0281610afd611c16565b61186a565b155b15610b3b576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b46838383611c1e565b505050565b610b53611c16565b73ffffffffffffffffffffffffffffffffffffffff16610b71611135565b73ffffffffffffffffffffffffffffffffffffffff1614610bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbe90613453565b60405180910390fd5b80600e8190555050565b6000610bdb611cd0565b6001546000540303905090565b610bf0611c16565b73ffffffffffffffffffffffffffffffffffffffff16610c0e611135565b73ffffffffffffffffffffffffffffffffffffffff1614610c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5b90613453565b60405180910390fd5b80600d8190555050565b60105481565b601160009054906101000a900460ff1681565b610c8f611c16565b73ffffffffffffffffffffffffffffffffffffffff16610cad611135565b73ffffffffffffffffffffffffffffffffffffffff1614610d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfa90613453565b60405180910390fd5b80600f8190555050565b610d15611c16565b73ffffffffffffffffffffffffffffffffffffffff16610d33611135565b73ffffffffffffffffffffffffffffffffffffffff1614610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8090613453565b60405180910390fd5b80600b8190555050565b610d9e838383611cd9565b505050565b610dab611c16565b73ffffffffffffffffffffffffffffffffffffffff16610dc9611135565b73ffffffffffffffffffffffffffffffffffffffff1614610e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1690613453565b60405180910390fd5b80601160006101000a81548160ff02191690831515021790555050565b610e44611c16565b73ffffffffffffffffffffffffffffffffffffffff16610e62611135565b73ffffffffffffffffffffffffffffffffffffffff1614610eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaf90613453565b60405180910390fd5b600260095403610efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef4906134bf565b60405180910390fd5b6002600981905550610f0f334761218d565b6001600981905550565b610f34838383604051806020016040528060008152506116d8565b505050565b610f41611c16565b73ffffffffffffffffffffffffffffffffffffffff16610f5f611135565b73ffffffffffffffffffffffffffffffffffffffff1614610fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fac90613453565b60405180910390fd5b80600a9081610fc4919061368b565b5050565b6000610fd382612281565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611045576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b6110b5611c16565b73ffffffffffffffffffffffffffffffffffffffff166110d3611135565b73ffffffffffffffffffffffffffffffffffffffff1614611129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112090613453565b60405180910390fd5b6111336000612510565b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606003805461116e906133d6565b80601f016020809104026020016040519081016040528092919081815260200182805461119a906133d6565b80156111e75780601f106111bc576101008083540402835291602001916111e7565b820191906000526020600020905b8154815290600101906020018083116111ca57829003601f168201915b5050505050905090565b600e5481565b600f5481565b611205611c16565b73ffffffffffffffffffffffffffffffffffffffff16611223611135565b73ffffffffffffffffffffffffffffffffffffffff1614611279576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127090613453565b60405180910390fd5b80600c8190555050565b601160009054906101000a900460ff166112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c9906137a9565b60405180910390fd5b6001600b546112e191906137f8565b816112ea610bd1565b6112f491906137f8565b1115611335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132c90613878565b60405180910390fd5b600061134082611b18565b9050600073365c54985c2a12efacaaabf5eecf8fbcc2908c119050600e548360105461136c91906137f8565b111561140157348211156113b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ac906138e4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156113fb573d6000803e3d6000fd5b50611552565b600f548361140e33610fde565b61141891906137f8565b11156114f25734821115611461576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611458906138e4565b60405180910390fd5b600c548311156114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d90613976565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156114ec573d6000803e3d6000fd5b50611551565b600f54831115611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152e90613976565b60405180910390fd5b826010600082825461154991906137f8565b925050819055505b5b61155c33846125d6565b505050565b611569611c16565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115cd576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600760006115da611c16565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611687611c16565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116cc9190612d8a565b60405180910390a35050565b6116e3848484611cd9565b6117028373ffffffffffffffffffffffffffffffffffffffff166125f4565b8015611717575061171584848484612617565b155b1561174e576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b600c5481565b606061176582611bc8565b6117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b90613a08565b60405180910390fd5b600a6117af83612767565b6040516020016117c0929190613b7f565b6040516020818303038152906040529050919050565b600a80546117e3906133d6565b80601f016020809104026020016040519081016040528092919081815260200182805461180f906133d6565b801561185c5780601f106118315761010080835404028352916020019161185c565b820191906000526020600020905b81548152906001019060200180831161183f57829003601f168201915b505050505081565b600b5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611906611c16565b73ffffffffffffffffffffffffffffffffffffffff16611924611135565b73ffffffffffffffffffffffffffffffffffffffff161461197a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197190613453565b60405180910390fd5b600081116119bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b490613c05565b60405180910390fd5b600b54816119c9610bd1565b6119d391906137f8565b1115611a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0b90613c71565b60405180910390fd5b611a1e33826125d6565b50565b611a29611c16565b73ffffffffffffffffffffffffffffffffffffffff16611a47611135565b73ffffffffffffffffffffffffffffffffffffffff1614611a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9490613453565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0390613d03565b60405180910390fd5b611b1581612510565b50565b600060058203611b30576549ab0c9f46009050611b59565b60648203611b485767011c387c171246009050611b59565b81600d54611b569190613d23565b90505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081611bd3611cd0565b11158015611be2575060005482105b8015611c0f575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006001905090565b6000611ce482612281565b90508373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611d4f576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff16611d70611c16565b73ffffffffffffffffffffffffffffffffffffffff161480611d9f5750611d9e85611d99611c16565b61186a565b5b80611de45750611dad611c16565b73ffffffffffffffffffffffffffffffffffffffff16611dcc846109c5565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611e1d576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611e83576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e9085858560016128c7565b611e9c60008487611c1e565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600460008581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060006001850190506000600460008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361211b57600054821461211a57878160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084602001518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461218685858560016128cd565b5050505050565b804710156121d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c790613db1565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516121f690613e02565b60006040518083038185875af1925050503d8060008114612233576040519150601f19603f3d011682016040523d82523d6000602084013e612238565b606091505b505090508061227c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227390613e89565b60405180910390fd5b505050565b612289612c93565b600082905080612297611cd0565b111580156122a6575060005481105b156124d9576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff161515151581525050905080604001516124d757600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146123bb57809250505061250b565b5b6001156124d657818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146124d157809250505061250b565b6123bc565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6125f08282604051806020016040528060008152506128d3565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261263d611c16565b8786866040518563ffffffff1660e01b815260040161265f9493929190613efe565b6020604051808303816000875af192505050801561269b57506040513d601f19601f820116820180604052508101906126989190613f5f565b60015b612714573d80600081146126cb576040519150601f19603f3d011682016040523d82523d6000602084013e6126d0565b606091505b50600081510361270c576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600082036127ae576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506128c2565b600082905060005b600082146127e05780806127c990613f8c565b915050600a826127d99190614003565b91506127b6565b60008167ffffffffffffffff8111156127fc576127fb613062565b5b6040519080825280601f01601f19166020018201604052801561282e5781602001600182028036833780820191505090505b5090505b600085146128bb576001826128479190614034565b9150600a856128569190614068565b603061286291906137f8565b60f81b81838151811061287857612877614099565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856128b49190614003565b9450612832565b8093505050505b919050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361293f576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008303612979576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61298660008583866128c7565b82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008482019050612b478673ffffffffffffffffffffffffffffffffffffffff166125f4565b15612c0c575b818673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612bbc6000878480600101955087612617565b612bf2576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808203612b4d578260005414612c0757600080fd5b612c77565b5b818060010192508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808203612c0d575b816000819055505050612c8d60008583866128cd565b50505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612d1f81612cea565b8114612d2a57600080fd5b50565b600081359050612d3c81612d16565b92915050565b600060208284031215612d5857612d57612ce0565b5b6000612d6684828501612d2d565b91505092915050565b60008115159050919050565b612d8481612d6f565b82525050565b6000602082019050612d9f6000830184612d7b565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ddf578082015181840152602081019050612dc4565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e0782612da5565b612e118185612db0565b9350612e21818560208601612dc1565b612e2a81612deb565b840191505092915050565b60006020820190508181036000830152612e4f8184612dfc565b905092915050565b6000819050919050565b612e6a81612e57565b82525050565b6000602082019050612e856000830184612e61565b92915050565b612e9481612e57565b8114612e9f57600080fd5b50565b600081359050612eb181612e8b565b92915050565b600060208284031215612ecd57612ecc612ce0565b5b6000612edb84828501612ea2565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f0f82612ee4565b9050919050565b612f1f81612f04565b82525050565b6000602082019050612f3a6000830184612f16565b92915050565b612f4981612f04565b8114612f5457600080fd5b50565b600081359050612f6681612f40565b92915050565b60008060408385031215612f8357612f82612ce0565b5b6000612f9185828601612f57565b9250506020612fa285828601612ea2565b9150509250929050565b600080600060608486031215612fc557612fc4612ce0565b5b6000612fd386828701612f57565b9350506020612fe486828701612f57565b9250506040612ff586828701612ea2565b9150509250925092565b61300881612d6f565b811461301357600080fd5b50565b60008135905061302581612fff565b92915050565b60006020828403121561304157613040612ce0565b5b600061304f84828501613016565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61309a82612deb565b810181811067ffffffffffffffff821117156130b9576130b8613062565b5b80604052505050565b60006130cc612cd6565b90506130d88282613091565b919050565b600067ffffffffffffffff8211156130f8576130f7613062565b5b61310182612deb565b9050602081019050919050565b82818337600083830152505050565b600061313061312b846130dd565b6130c2565b90508281526020810184848401111561314c5761314b61305d565b5b61315784828561310e565b509392505050565b600082601f83011261317457613173613058565b5b813561318484826020860161311d565b91505092915050565b6000602082840312156131a3576131a2612ce0565b5b600082013567ffffffffffffffff8111156131c1576131c0612ce5565b5b6131cd8482850161315f565b91505092915050565b6000602082840312156131ec576131eb612ce0565b5b60006131fa84828501612f57565b91505092915050565b6000806040838503121561321a57613219612ce0565b5b600061322885828601612f57565b925050602061323985828601613016565b9150509250929050565b600067ffffffffffffffff82111561325e5761325d613062565b5b61326782612deb565b9050602081019050919050565b600061328761328284613243565b6130c2565b9050828152602081018484840111156132a3576132a261305d565b5b6132ae84828561310e565b509392505050565b600082601f8301126132cb576132ca613058565b5b81356132db848260208601613274565b91505092915050565b600080600080608085870312156132fe576132fd612ce0565b5b600061330c87828801612f57565b945050602061331d87828801612f57565b935050604061332e87828801612ea2565b925050606085013567ffffffffffffffff81111561334f5761334e612ce5565b5b61335b878288016132b6565b91505092959194509250565b6000806040838503121561337e5761337d612ce0565b5b600061338c85828601612f57565b925050602061339d85828601612f57565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133ee57607f821691505b602082108103613401576134006133a7565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061343d602083612db0565b915061344882613407565b602082019050919050565b6000602082019050818103600083015261346c81613430565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006134a9601f83612db0565b91506134b482613473565b602082019050919050565b600060208201905081810360008301526134d88161349c565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026135417fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613504565b61354b8683613504565b95508019841693508086168417925050509392505050565b6000819050919050565b600061358861358361357e84612e57565b613563565b612e57565b9050919050565b6000819050919050565b6135a28361356d565b6135b66135ae8261358f565b848454613511565b825550505050565b600090565b6135cb6135be565b6135d6818484613599565b505050565b5b818110156135fa576135ef6000826135c3565b6001810190506135dc565b5050565b601f82111561363f57613610816134df565b613619846134f4565b81016020851015613628578190505b61363c613634856134f4565b8301826135db565b50505b505050565b600082821c905092915050565b600061366260001984600802613644565b1980831691505092915050565b600061367b8383613651565b9150826002028217905092915050565b61369482612da5565b67ffffffffffffffff8111156136ad576136ac613062565b5b6136b782546133d6565b6136c28282856135fe565b600060209050601f8311600181146136f557600084156136e3578287015190505b6136ed858261366f565b865550613755565b601f198416613703866134df565b60005b8281101561372b57848901518255600182019150602085019450602081019050613706565b868310156137485784890151613744601f891682613651565b8355505b6001600288020188555050505b505050505050565b7f5075626c69632073616c65206973206e6f74206f70656e000000000000000000600082015250565b6000613793601783612db0565b915061379e8261375d565b602082019050919050565b600060208201905081810360008301526137c281613786565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061380382612e57565b915061380e83612e57565b9250828201905080821115613826576138256137c9565b5b92915050565b7f4e6f206d6f726500000000000000000000000000000000000000000000000000600082015250565b6000613862600783612db0565b915061386d8261382c565b602082019050919050565b6000602082019050818103600083015261389181613855565b9050919050565b7f496e636f7272656374204554482076616c75652073656e740000000000000000600082015250565b60006138ce601883612db0565b91506138d982613898565b602082019050919050565b600060208201905081810360008301526138fd816138c1565b9050919050565b7f4d6178206d696e747320706572207472616e73616374696f6e2065786365656460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b6000613960602283612db0565b915061396b82613904565b604082019050919050565b6000602082019050818103600083015261398f81613953565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006139f2602f83612db0565b91506139fd82613996565b604082019050919050565b60006020820190508181036000830152613a21816139e5565b9050919050565b600081905092915050565b60008154613a40816133d6565b613a4a8186613a28565b94506001821660008114613a655760018114613a7a57613aad565b60ff1983168652811515820286019350613aad565b613a83856134df565b60005b83811015613aa557815481890152600182019150602081019050613a86565b838801955050505b50505092915050565b7f2f00000000000000000000000000000000000000000000000000000000000000600082015250565b6000613aec600183613a28565b9150613af782613ab6565b600182019050919050565b6000613b0d82612da5565b613b178185613a28565b9350613b27818560208601612dc1565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b6000613b69600583613a28565b9150613b7482613b33565b600582019050919050565b6000613b8b8285613a33565b9150613b9682613adf565b9150613ba28284613b02565b9150613bad82613b5c565b91508190509392505050565b7f496e76616c6964206d696e7420616d6f756e7400000000000000000000000000600082015250565b6000613bef601383612db0565b9150613bfa82613bb9565b602082019050919050565b60006020820190508181036000830152613c1e81613be2565b9050919050565b7f4d6178696d756d20737570706c79206578636565646564000000000000000000600082015250565b6000613c5b601783612db0565b9150613c6682613c25565b602082019050919050565b60006020820190508181036000830152613c8a81613c4e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ced602683612db0565b9150613cf882613c91565b604082019050919050565b60006020820190508181036000830152613d1c81613ce0565b9050919050565b6000613d2e82612e57565b9150613d3983612e57565b9250828202613d4781612e57565b91508282048414831517613d5e57613d5d6137c9565b5b5092915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613d9b601d83612db0565b9150613da682613d65565b602082019050919050565b60006020820190508181036000830152613dca81613d8e565b9050919050565b600081905092915050565b50565b6000613dec600083613dd1565b9150613df782613ddc565b600082019050919050565b6000613e0d82613ddf565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000613e73603a83612db0565b9150613e7e82613e17565b604082019050919050565b60006020820190508181036000830152613ea281613e66565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613ed082613ea9565b613eda8185613eb4565b9350613eea818560208601612dc1565b613ef381612deb565b840191505092915050565b6000608082019050613f136000830187612f16565b613f206020830186612f16565b613f2d6040830185612e61565b8181036060830152613f3f8184613ec5565b905095945050505050565b600081519050613f5981612d16565b92915050565b600060208284031215613f7557613f74612ce0565b5b6000613f8384828501613f4a565b91505092915050565b6000613f9782612e57565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613fc957613fc86137c9565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061400e82612e57565b915061401983612e57565b92508261402957614028613fd4565b5b828204905092915050565b600061403f82612e57565b915061404a83612e57565b9250828203905081811115614062576140616137c9565b5b92915050565b600061407382612e57565b915061407e83612e57565b92508261408e5761408d613fd4565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea264697066735822122011b77056f7ddca8993e422b2fc5ba1270673c0aa2189c38da50607feba18ae7664736f6c63430008130033697066733a2f2f516d5242544e64723747316f514532543633506b656e4d356177627344564c48597546374c664252726b44346667