6080604052612710600a556109c4600b556005600c60026101000a81548161ffff021916908361ffff16021790555063629908b0600d556000600e55660aa87bee538000600f556000601160006101000a81548160ff0219169083151502179055506040518060600160405280602a815260200162004837602a9139601290805190602001906200009292919062000879565b50604051806060016040528060358152602001620048616035913960139080519060200190620000c492919062000879565b50348015620000d257600080fd5b506040518060400160405280600f81526020017f476f67676c696e67676f626c696e7300000000000000000000000000000000008152506040518060400160405280600f81526020017f476f67676c696e67676f626c696e7300000000000000000000000000000000008152506200015f62000153620001ca60201b60201c565b620001d260201b60201c565b81600390805190602001906200017792919062000879565b5080600490805190602001906200019092919062000879565b50620001a16200029660201b60201c565b60018190555050506001600981905550620001c43360016200029b60201b60201c565b62000b6f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600090565b620002bd828260405180602001604052806000815250620002c160201b60201c565b5050565b620002d68383836001620002db60201b60201c565b505050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156200034a576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084141562000386576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200039b6000868387620006d860201b60201c565b83600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846005600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426005600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008582019050838015620005735750620005728773ffffffffffffffffffffffffffffffffffffffff16620006de60201b62001b321760201c565b5b1562000646575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4620005f160008884806001019550886200070160201b60201c565b62000628576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808214156200057a5782600154146200064057600080fd5b620006b3565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48082141562000647575b816001819055505050620006d160008683876200087360201b60201c565b5050505050565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026200072f620001ca60201b60201c565b8786866040518563ffffffff1660e01b8152600401620007539493929190620009cf565b602060405180830381600087803b1580156200076e57600080fd5b505af1925050508015620007a257506040513d601f19601f820116820180604052508101906200079f919062000940565b60015b62000820573d8060008114620007d5576040519150601f19603f3d011682016040523d82523d6000602084013e620007da565b606091505b5060008151141562000818576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b50505050565b828054620008879062000adf565b90600052602060002090601f016020900481019282620008ab5760008555620008f7565b82601f10620008c657805160ff1916838001178555620008f7565b82800160010185558215620008f7579182015b82811115620008f6578251825591602001919060010190620008d9565b5b5090506200090691906200090a565b5090565b5b80821115620009255760008160009055506001016200090b565b5090565b6000815190506200093a8162000b55565b92915050565b6000602082840312156200095357600080fd5b6000620009638482850162000929565b91505092915050565b620009778162000a3f565b82525050565b60006200098a8262000a23565b62000996818562000a2e565b9350620009a881856020860162000aa9565b620009b38162000b44565b840191505092915050565b620009c98162000a9f565b82525050565b6000608082019050620009e660008301876200096c565b620009f560208301866200096c565b62000a046040830185620009be565b818103606083015262000a1881846200097d565b905095945050505050565b600081519050919050565b600082825260208201905092915050565b600062000a4c8262000a7f565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000ac957808201518184015260208101905062000aac565b8381111562000ad9576000848401525b50505050565b6000600282049050600182168062000af857607f821691505b6020821081141562000b0f5762000b0e62000b15565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b62000b608162000a53565b811462000b6c57600080fd5b50565b613cb88062000b7f6000396000f3fe60806040526004361061020f5760003560e01c806370e6e96211610118578063b88d4fde116100a0578063dbddb26a1161006f578063dbddb26a14610781578063e62a1f2d146107ac578063e8a3d485146107d7578063e985e9c514610802578063f2fde38b1461083f5761020f565b8063b88d4fde146106b0578063c87b56dd146106d9578063c9bd530514610716578063ccfe2c371461073f5761020f565b806390061a0a116100e757806390061a0a146105df57806391b7f5ed1461060a578063938e3d7b1461063357806395d89b411461065c578063a22cb465146106875761020f565b806370e6e96214610556578063715018a6146105815780637c928fe9146105985780638da5cb5b146105b45761020f565b80633ccfd60b1161019b5780635a2d6dd51161016a5780635a2d6dd5146104495780635e1a2636146104745780636352211e1461049f5780636693af12146104dc57806370a08231146105195761020f565b80633ccfd60b146103b557806342842e0e146103cc57806355f804b3146103f557806356b4f6731461041e5761020f565b80630ad1405e116101e25780630ad1405e146102e257806314fa59da1461030b57806318160ddd1461033657806323b872dd146103615780633bff9e701461038a5761020f565b806301ffc9a71461021457806306fdde0314610251578063081812fc1461027c578063095ea7b3146102b9575b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190612fdc565b610868565b60405161024891906133ff565b60405180910390f35b34801561025d57600080fd5b5061026661094a565b604051610273919061341a565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e919061306f565b6109dc565b6040516102b09190613398565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db9190612f77565b610a58565b005b3480156102ee57600080fd5b506103096004803603810190610304919061306f565b610b63565b005b34801561031757600080fd5b50610320610be9565b60405161032d9190613557565b60405180910390f35b34801561034257600080fd5b5061034b610bef565b6040516103589190613557565b60405180910390f35b34801561036d57600080fd5b5061038860048036038101906103839190612e71565b610c06565b005b34801561039657600080fd5b5061039f610c16565b6040516103ac9190613557565b60405180910390f35b3480156103c157600080fd5b506103ca610c1c565b005b3480156103d857600080fd5b506103f360048036038101906103ee9190612e71565b610da4565b005b34801561040157600080fd5b5061041c6004803603810190610417919061302e565b610dc4565b005b34801561042a57600080fd5b50610433610e5a565b604051610440919061341a565b60405180910390f35b34801561045557600080fd5b5061045e610ee8565b60405161046b9190613557565b60405180910390f35b34801561048057600080fd5b50610489610eee565b604051610496919061353c565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c1919061306f565b610f02565b6040516104d39190613398565b60405180910390f35b3480156104e857600080fd5b5061050360048036038101906104fe9190612e0c565b610f18565b6040516105109190613557565b60405180910390f35b34801561052557600080fd5b50610540600480360381019061053b9190612e0c565b610f30565b60405161054d9190613557565b60405180910390f35b34801561056257600080fd5b5061056b611000565b6040516105789190613557565b60405180910390f35b34801561058d57600080fd5b50610596611006565b005b6105b260048036038101906105ad919061306f565b61108e565b005b3480156105c057600080fd5b506105c96112ee565b6040516105d69190613398565b60405180910390f35b3480156105eb57600080fd5b506105f4611317565b604051610601919061353c565b60405180910390f35b34801561061657600080fd5b50610631600480360381019061062c919061306f565b61132b565b005b34801561063f57600080fd5b5061065a6004803603810190610655919061302e565b6113b1565b005b34801561066857600080fd5b50610671611447565b60405161067e919061341a565b60405180910390f35b34801561069357600080fd5b506106ae60048036038101906106a99190612f3b565b6114d9565b005b3480156106bc57600080fd5b506106d760048036038101906106d29190612ec0565b611651565b005b3480156106e557600080fd5b5061070060048036038101906106fb919061306f565b6116cd565b60405161070d919061341a565b60405180910390f35b34801561072257600080fd5b5061073d60048036038101906107389190612fb3565b611701565b005b34801561074b57600080fd5b5061076660048036038101906107619190612e0c565b61179a565b60405161077896959493929190613572565b60405180910390f35b34801561078d57600080fd5b50610796611880565b6040516107a3919061341a565b60405180910390f35b3480156107b857600080fd5b506107c161190e565b6040516107ce9190613557565b60405180910390f35b3480156107e357600080fd5b506107ec611914565b6040516107f9919061341a565b60405180910390f35b34801561080e57600080fd5b5061082960048036038101906108249190612e35565b6119a6565b60405161083691906133ff565b60405180910390f35b34801561084b57600080fd5b5061086660048036038101906108619190612e0c565b611a3a565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061093357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610943575061094282611b55565b5b9050919050565b60606003805461095990613896565b80601f016020809104026020016040519081016040528092919081815260200182805461098590613896565b80156109d25780601f106109a7576101008083540402835291602001916109d2565b820191906000526020600020905b8154815290600101906020018083116109b557829003601f168201915b5050505050905090565b60006109e782611bbf565b610a1d576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a6382610f02565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610acb576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610aea611c0d565b73ffffffffffffffffffffffffffffffffffffffff1614158015610b1c5750610b1a81610b15611c0d565b6119a6565b155b15610b53576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b5e838383611c15565b505050565b610b6b611c0d565b73ffffffffffffffffffffffffffffffffffffffff16610b896112ee565b73ffffffffffffffffffffffffffffffffffffffff1614610bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd6906134dc565b60405180910390fd5b80600d8190555050565b600a5481565b6000610bf9611cc7565b6002546001540303905090565b610c11838383611ccc565b505050565b600f5481565b610c24611c0d565b73ffffffffffffffffffffffffffffffffffffffff16610c426112ee565b73ffffffffffffffffffffffffffffffffffffffff1614610c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8f906134dc565b60405180910390fd5b60026009541415610cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd59061351c565b60405180910390fd5b60026009819055506000610cf06112ee565b73ffffffffffffffffffffffffffffffffffffffff1647604051610d1390613383565b60006040518083038185875af1925050503d8060008114610d50576040519150601f19603f3d011682016040523d82523d6000602084013e610d55565b606091505b5050905080610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d90906134fc565b60405180910390fd5b506001600981905550565b610dbf83838360405180602001604052806000815250611651565b505050565b610dcc611c0d565b73ffffffffffffffffffffffffffffffffffffffff16610dea6112ee565b73ffffffffffffffffffffffffffffffffffffffff1614610e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e37906134dc565b60405180910390fd5b8060129080519060200190610e56929190612bed565b5050565b60138054610e6790613896565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9390613896565b8015610ee05780601f10610eb557610100808354040283529160200191610ee0565b820191906000526020600020905b815481529060010190602001808311610ec357829003601f168201915b505050505081565b600b5481565b600c60009054906101000a900461ffff1681565b6000610f0d82612182565b600001519050919050565b60106020528060005260406000206000915090505481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f98576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b600d5481565b61100e611c0d565b73ffffffffffffffffffffffffffffffffffffffff1661102c6112ee565b73ffffffffffffffffffffffffffffffffffffffff1614611082576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611079906134dc565b60405180910390fd5b61108c6000612411565b565b600b54611099610bef565b106110f357600f54816110ac9190613744565b3410156110ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e59061349c565b60405180910390fd5b611144565b600e54816111019190613744565b341015611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113a9061349c565b60405180910390fd5b5b601160009054906101000a900460ff16611193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118a9061343c565b60405180910390fd5b600c60029054906101000a900461ffff1661ffff1681601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111f391906136bd565b1115611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b9061347c565b60405180910390fd5b600a5481611240610bef565b61124a91906136bd565b111561128b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611282906134bc565b60405180910390fd5b80601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112da91906136bd565b925050819055506112eb33826124d5565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c60029054906101000a900461ffff1681565b611333611c0d565b73ffffffffffffffffffffffffffffffffffffffff166113516112ee565b73ffffffffffffffffffffffffffffffffffffffff16146113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e906134dc565b60405180910390fd5b80600e8190555050565b6113b9611c0d565b73ffffffffffffffffffffffffffffffffffffffff166113d76112ee565b73ffffffffffffffffffffffffffffffffffffffff161461142d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611424906134dc565b60405180910390fd5b8060139080519060200190611443929190612bed565b5050565b60606004805461145690613896565b80601f016020809104026020016040519081016040528092919081815260200182805461148290613896565b80156114cf5780601f106114a4576101008083540402835291602001916114cf565b820191906000526020600020905b8154815290600101906020018083116114b257829003601f168201915b5050505050905090565b6114e1611c0d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611546576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060086000611553611c0d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611600611c0d565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161164591906133ff565b60405180910390a35050565b61165c848484611ccc565b61167b8373ffffffffffffffffffffffffffffffffffffffff16611b32565b8015611690575061168e848484846124f3565b155b156116c7576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b606060126116da83612653565b6040516020016116eb929190613354565b6040516020818303038152906040529050919050565b611709611c0d565b73ffffffffffffffffffffffffffffffffffffffff166117276112ee565b73ffffffffffffffffffffffffffffffffffffffff161461177d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611774906134dc565b60405180910390fd5b80601160006101000a81548160ff02191690831515021790555050565b600080600080600080600b546117ae610bef565b1061181757600a546117be610bef565b600f54600d546000601060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054955095509550955095509550611877565b600a54611822610bef565b600e54600d546000601060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549550955095509550955095505b91939550919395565b6012805461188d90613896565b80601f01602080910402602001604051908101604052809291908181526020018280546118b990613896565b80156119065780601f106118db57610100808354040283529160200191611906565b820191906000526020600020905b8154815290600101906020018083116118e957829003601f168201915b505050505081565b600e5481565b60606013805461192390613896565b80601f016020809104026020016040519081016040528092919081815260200182805461194f90613896565b801561199c5780601f106119715761010080835404028352916020019161199c565b820191906000526020600020905b81548152906001019060200180831161197f57829003601f168201915b5050505050905090565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611a42611c0d565b73ffffffffffffffffffffffffffffffffffffffff16611a606112ee565b73ffffffffffffffffffffffffffffffffffffffff1614611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad906134dc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1d9061345c565b60405180910390fd5b611b2f81612411565b50565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081611bca611cc7565b11158015611bd9575060015482105b8015611c06575060056000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826007600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600090565b6000611cd782612182565b90508373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611d42576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff16611d63611c0d565b73ffffffffffffffffffffffffffffffffffffffff161480611d925750611d9185611d8c611c0d565b6119a6565b5b80611dd75750611da0611c0d565b73ffffffffffffffffffffffffffffffffffffffff16611dbf846109dc565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611e10576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611e77576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e848585856001612800565b611e9060008487611c15565b6001600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600560008581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060006001850190506000600560008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561211057600154821461210f57878160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084602001518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461217b8585856001612806565b5050505050565b61218a612c73565b600082905080612198611cc7565b111580156121a7575060015481105b156123da576000600560008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff161515151581525050905080604001516123d857600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146122bc57809250505061240c565b5b6001156123d757818060019003925050600560008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146123d257809250505061240c565b6122bd565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6124ef82826040518060200160405280600081525061280c565b5050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612519611c0d565b8786866040518563ffffffff1660e01b815260040161253b94939291906133b3565b602060405180830381600087803b15801561255557600080fd5b505af192505050801561258657506040513d601f19601f820116820180604052508101906125839190613005565b60015b612600573d80600081146125b6576040519150601f19603f3d011682016040523d82523d6000602084013e6125bb565b606091505b506000815114156125f8576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600082141561269b576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506127fb565b600082905060005b600082146126cd5780806126b6906138f9565b915050600a826126c69190613713565b91506126a3565b60008167ffffffffffffffff81111561270f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156127415781602001600182028036833780820191505090505b5090505b600085146127f45760018261275a919061379e565b9150600a856127699190613942565b603061277591906136bd565b60f81b8183815181106127b1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856127ed9190613713565b9450612745565b8093505050505b919050565b50505050565b50505050565b612819838383600161281e565b505050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561288c576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008414156128c7576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128d46000868387612800565b83600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846005600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426005600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008582019050838015612a9e5750612a9d8773ffffffffffffffffffffffffffffffffffffffff16611b32565b5b15612b64575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612b1360008884806001019550886124f3565b612b49576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80821415612aa4578260015414612b5f57600080fd5b612bd0565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480821415612b65575b816001819055505050612be66000868387612806565b5050505050565b828054612bf990613896565b90600052602060002090601f016020900481019282612c1b5760008555612c62565b82601f10612c3457805160ff1916838001178555612c62565b82800160010185558215612c62579182015b82811115612c61578251825591602001919060010190612c46565b5b509050612c6f9190612cb6565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b80821115612ccf576000816000905550600101612cb7565b5090565b6000612ce6612ce1846135f8565b6135d3565b905082815260208101848484011115612cfe57600080fd5b612d09848285613854565b509392505050565b6000612d24612d1f84613629565b6135d3565b905082815260208101848484011115612d3c57600080fd5b612d47848285613854565b509392505050565b600081359050612d5e81613c26565b92915050565b600081359050612d7381613c3d565b92915050565b600081359050612d8881613c54565b92915050565b600081519050612d9d81613c54565b92915050565b600082601f830112612db457600080fd5b8135612dc4848260208601612cd3565b91505092915050565b600082601f830112612dde57600080fd5b8135612dee848260208601612d11565b91505092915050565b600081359050612e0681613c6b565b92915050565b600060208284031215612e1e57600080fd5b6000612e2c84828501612d4f565b91505092915050565b60008060408385031215612e4857600080fd5b6000612e5685828601612d4f565b9250506020612e6785828601612d4f565b9150509250929050565b600080600060608486031215612e8657600080fd5b6000612e9486828701612d4f565b9350506020612ea586828701612d4f565b9250506040612eb686828701612df7565b9150509250925092565b60008060008060808587031215612ed657600080fd5b6000612ee487828801612d4f565b9450506020612ef587828801612d4f565b9350506040612f0687828801612df7565b925050606085013567ffffffffffffffff811115612f2357600080fd5b612f2f87828801612da3565b91505092959194509250565b60008060408385031215612f4e57600080fd5b6000612f5c85828601612d4f565b9250506020612f6d85828601612d64565b9150509250929050565b60008060408385031215612f8a57600080fd5b6000612f9885828601612d4f565b9250506020612fa985828601612df7565b9150509250929050565b600060208284031215612fc557600080fd5b6000612fd384828501612d64565b91505092915050565b600060208284031215612fee57600080fd5b6000612ffc84828501612d79565b91505092915050565b60006020828403121561301757600080fd5b600061302584828501612d8e565b91505092915050565b60006020828403121561304057600080fd5b600082013567ffffffffffffffff81111561305a57600080fd5b61306684828501612dcd565b91505092915050565b60006020828403121561308157600080fd5b600061308f84828501612df7565b91505092915050565b6130a1816137d2565b82525050565b6130b0816137e4565b82525050565b60006130c18261366f565b6130cb8185613685565b93506130db818560208601613863565b6130e481613a2f565b840191505092915050565b60006130fa8261367a565b61310481856136a1565b9350613114818560208601613863565b61311d81613a2f565b840191505092915050565b60006131338261367a565b61313d81856136b2565b935061314d818560208601613863565b80840191505092915050565b6000815461316681613896565b61317081866136b2565b9450600182166000811461318b576001811461319c576131cf565b60ff198316865281860193506131cf565b6131a58561365a565b60005b838110156131c7578154818901526001820191506020810190506131a8565b838801955050505b50505092915050565b60006131e56022836136a1565b91506131f082613a40565b604082019050919050565b60006132086026836136a1565b915061321382613a8f565b604082019050919050565b600061322b6039836136a1565b915061323682613ade565b604082019050919050565b600061324e6018836136a1565b915061325982613b2d565b602082019050919050565b60006132716012836136a1565b915061327c82613b56565b602082019050919050565b60006132946005836136b2565b915061329f82613b7f565b600582019050919050565b60006132b76020836136a1565b91506132c282613ba8565b602082019050919050565b60006132da600083613696565b91506132e582613bd1565b600082019050919050565b60006132fd600f836136a1565b915061330882613bd4565b602082019050919050565b6000613320601f836136a1565b915061332b82613bfd565b602082019050919050565b61333f8161381c565b82525050565b61334e8161384a565b82525050565b60006133608285613159565b915061336c8284613128565b915061337782613287565b91508190509392505050565b600061338e826132cd565b9150819050919050565b60006020820190506133ad6000830184613098565b92915050565b60006080820190506133c86000830187613098565b6133d56020830186613098565b6133e26040830185613345565b81810360608301526133f481846130b6565b905095945050505050565b600060208201905061341460008301846130a7565b92915050565b6000602082019050818103600083015261343481846130ef565b905092915050565b60006020820190508181036000830152613455816131d8565b9050919050565b60006020820190508181036000830152613475816131fb565b9050919050565b600060208201905081810360008301526134958161321e565b9050919050565b600060208201905081810360008301526134b581613241565b9050919050565b600060208201905081810360008301526134d581613264565b9050919050565b600060208201905081810360008301526134f5816132aa565b9050919050565b60006020820190508181036000830152613515816132f0565b9050919050565b6000602082019050818103600083015261353581613313565b9050919050565b60006020820190506135516000830184613336565b92915050565b600060208201905061356c6000830184613345565b92915050565b600060c0820190506135876000830189613345565b6135946020830188613345565b6135a16040830187613345565b6135ae6060830186613345565b6135bb6080830185613345565b6135c860a0830184613345565b979650505050505050565b60006135dd6135ee565b90506135e982826138c8565b919050565b6000604051905090565b600067ffffffffffffffff82111561361357613612613a00565b5b61361c82613a2f565b9050602081019050919050565b600067ffffffffffffffff82111561364457613643613a00565b5b61364d82613a2f565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006136c88261384a565b91506136d38361384a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561370857613707613973565b5b828201905092915050565b600061371e8261384a565b91506137298361384a565b925082613739576137386139a2565b5b828204905092915050565b600061374f8261384a565b915061375a8361384a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561379357613792613973565b5b828202905092915050565b60006137a98261384a565b91506137b48361384a565b9250828210156137c7576137c6613973565b5b828203905092915050565b60006137dd8261382a565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613881578082015181840152602081019050613866565b83811115613890576000848401525b50505050565b600060028204905060018216806138ae57607f821691505b602082108114156138c2576138c16139d1565b5b50919050565b6138d182613a2f565b810181811067ffffffffffffffff821117156138f0576138ef613a00565b5b80604052505050565b60006139048261384a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561393757613936613973565b5b600182019050919050565b600061394d8261384a565b91506139588361384a565b925082613968576139676139a2565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f46726565206d7573742062652061637469766520746f206d696e7420746f6b6560008201527f6e73000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f507572636861736520776f756c6420657863656564206d6178206e756d62657260008201527f206f66206d6574616361726473207065722077616c6c65742e00000000000000602082015250565b7f446964206e6f742073656e6420656e6f756768206574682e0000000000000000600082015250565b7f72656163686564206d617820737570706c790000000000000000000000000000600082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f7472616e73666572206661696c65640000000000000000000000000000000000600082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613c2f816137d2565b8114613c3a57600080fd5b50565b613c46816137e4565b8114613c5157600080fd5b50565b613c5d816137f0565b8114613c6857600080fd5b50565b613c748161384a565b8114613c7f57600080fd5b5056fea2646970667358221220bd2d0daf8da496bdc0fc895ff6c6270fb219b788be80b6572fabac4e21d04b3364736f6c6343000804003368747470733a2f2f646174612e676f67676c696e67676f626c696e732e636f6d2f6d657461646174612f68747470733a2f2f646174612e676f67676c696e67676f626c696e732e636f6d2f6170692f636f6e747261637475726c2e6a736f6e