60806040526001600c5534801561001557600080fd5b5033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613e06806100666000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80637464fc3d116100f9578063bc25cf7711610097578063d21220a711610071578063d21220a7146104db578063dd62ed3e146104f9578063e86dea4a14610529578063fff6cae914610547576101a9565b8063bc25cf7714610485578063c45a0155146104a1578063d0f69579146104bf576101a9565b806395d89b41116100d357806395d89b41146103fb578063a9059cbb14610419578063b0e21e8a14610449578063ba9a7a5614610467576101a9565b80637464fc3d1461037c5780637ecebe001461039a57806389afcb44146103ca576101a9565b806323b872dd116101665780635909c0d5116101405780635909c0d5146102e05780635a3d5493146102fe5780636a6278421461031c57806370a082311461034c576101a9565b806323b872dd1461027457806330adf81f146102a4578063313ce567146102c2576101a9565b8063022c0d9f146101ae57806306fdde03146101ca5780630902f1ac146101e8578063095ea7b3146102085780630dfe16811461023857806318160ddd14610256575b600080fd5b6101c860048036038101906101c39190612d4f565b610551565b005b6101d2610c69565b6040516101df9190612e70565b60405180910390f35b6101f0610ca2565b6040516101ff93929190612eda565b60405180910390f35b610222600480360381019061021d9190612f11565b610cff565b60405161022f9190612f6c565b60405180910390f35b610240610d16565b60405161024d9190612f96565b60405180910390f35b61025e610d3c565b60405161026b9190612fc0565b60405180910390f35b61028e60048036038101906102899190612fdb565b610d42565b60405161029b9190612f6c565b60405180910390f35b6102ac610f06565b6040516102b99190613047565b60405180910390f35b6102ca610f2d565b6040516102d7919061307e565b60405180910390f35b6102e8610f32565b6040516102f59190612fc0565b60405180910390f35b610306610f38565b6040516103139190612fc0565b60405180910390f35b61033660048036038101906103319190613099565b610f3e565b6040516103439190612fc0565b60405180910390f35b61036660048036038101906103619190613099565b6113bc565b6040516103739190612fc0565b60405180910390f35b6103846113d4565b6040516103919190612fc0565b60405180910390f35b6103b460048036038101906103af9190613099565b6113da565b6040516103c19190612fc0565b60405180910390f35b6103e460048036038101906103df9190613099565b6113f2565b6040516103f29291906130c6565b60405180910390f35b61040361194e565b6040516104109190612e70565b60405180910390f35b610433600480360381019061042e9190612f11565b611987565b6040516104409190612f6c565b60405180910390f35b61045161199e565b60405161045e91906130ef565b60405180910390f35b61046f6119b4565b60405161047c9190612fc0565b60405180910390f35b61049f600480360381019061049a9190613099565b6119ba565b005b6104a9611c04565b6040516104b69190612f96565b60405180910390f35b6104d960048036038101906104d49190613136565b611c2a565b005b6104e3611d84565b6040516104f09190612f96565b60405180910390f35b610513600480360381019061050e919061319d565b611daa565b6040516105209190612fc0565b60405180910390f35b610531611dcf565b60405161053e91906130ef565b60405180910390f35b61054f611de5565b005b6001600c5414610596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058d90613229565b60405180910390fd5b6000600c8190555060008511806105ad5750600084115b6105ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e3906132bb565b60405180910390fd5b6000803073ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561063557600080fd5b505afa158015610649573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066d919061331c565b5091509150816dffffffffffffffffffffffffffff16871080156106a05750806dffffffffffffffffffffffffffff1686105b6106df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d6906133e1565b60405180910390fd5b6000806000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161415801561079857508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6107d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ce9061344d565b60405180910390fd5b60008b11156107ec576107eb828a8d611fd4565b5b60008a111561080157610800818a8c611fd4565b5b6000888890501115610881578873ffffffffffffffffffffffffffffffffffffffff1663ac33cffa338d8d8c8c6040518663ffffffff1660e01b815260040161084e9594939291906134ba565b600060405180830381600087803b15801561086857600080fd5b505af115801561087c573d6000803e3d6000fd5b505050505b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108ba9190612f96565b60206040518083038186803b1580156108d257600080fd5b505afa1580156108e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090a919061351d565b93508073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109459190612f96565b60206040518083038186803b15801561095d57600080fd5b505afa158015610971573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610995919061351d565b92505050600089856dffffffffffffffffffffffffffff166109b79190613579565b83116109c45760006109ec565b89856dffffffffffffffffffffffffffff166109e09190613579565b836109eb9190613579565b5b9050600089856dffffffffffffffffffffffffffff16610a0c9190613579565b8311610a19576000610a41565b89856dffffffffffffffffffffffffffff16610a359190613579565b83610a409190613579565b5b90506000821180610a525750600081115b610a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a889061361f565b60405180910390fd5b6000610ae5610ac1600860009054906101000a900463ffffffff1663ffffffff168561210a90919063ffffffff16565b610ad7620186a08861210a90919063ffffffff16565b61217790919063ffffffff16565b90506000610b3b610b17600860009054906101000a900463ffffffff1663ffffffff168561210a90919063ffffffff16565b610b2d620186a08861210a90919063ffffffff16565b61217790919063ffffffff16565b9050610b876402540be400610b79896dffffffffffffffffffffffffffff168b6dffffffffffffffffffffffffffff1661210a90919063ffffffff16565b61210a90919063ffffffff16565b610b9a828461210a90919063ffffffff16565b1015610bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd29061368b565b60405180910390fd5b5050610be9848488886121d0565b8873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82284848f8f604051610c4c94939291906136ab565b60405180910390a35050505050506001600c819055505050505050565b6040518060400160405280601081526020017f4552433230205061697220546f6b656e0000000000000000000000000000000081525081565b6000806000600760009054906101000a90046dffffffffffffffffffffffffffff1692506007600e9054906101000a90046dffffffffffffffffffffffffffff1691506007601c9054906101000a900463ffffffff169050909192565b6000610d0c3384846124c4565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ef05781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6f9190613579565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610efb8484846125af565b600190509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b81565b601281565b60095481565b600a5481565b60006001600c5414610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c90613229565b60405180910390fd5b6000600c819055506000803073ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610fd657600080fd5b505afa158015610fea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100e919061331c565b50915091506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110709190612f96565b60206040518083038186803b15801561108857600080fd5b505afa15801561109c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c0919061351d565b90506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161111f9190612f96565b60206040518083038186803b15801561113757600080fd5b505afa15801561114b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116f919061351d565b90506000611196856dffffffffffffffffffffffffffff168461217790919063ffffffff16565b905060006111bd856dffffffffffffffffffffffffffff168461217790919063ffffffff16565b905060006111cb8787612735565b9050600080549050600081141561121f5761120b6103e86111fd6111f8868861210a90919063ffffffff16565b612947565b61217790919063ffffffff16565b985061121a60006103e86129c1565b611286565b611283886dffffffffffffffffffffffffffff16611246838761210a90919063ffffffff16565b611250919061371f565b886dffffffffffffffffffffffffffff16611274848761210a90919063ffffffff16565b61127e919061371f565b612acd565b98505b600089116112c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c0906137c2565b60405180910390fd5b6112d38a8a6129c1565b6112df86868a8a6121d0565b8115611357576113506007600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16600760009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1661210a90919063ffffffff16565b600b819055505b3373ffffffffffffffffffffffffffffffffffffffff167f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f858560405161139f9291906130c6565b60405180910390a250505050505050506001600c81905550919050565b60016020528060005260406000206000915090505481565b600b5481565b60036020528060005260406000206000915090505481565b6000806001600c541461143a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143190613229565b60405180910390fd5b6000600c819055506000803073ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561148b57600080fd5b505afa15801561149f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c3919061331c565b50915091506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115519190612f96565b60206040518083038186803b15801561156957600080fd5b505afa15801561157d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a1919061351d565b905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115de9190612f96565b60206040518083038186803b1580156115f657600080fd5b505afa15801561160a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162e919061351d565b90506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006116808888612735565b90506000805490508061169c868561210a90919063ffffffff16565b6116a6919061371f565b9a50806116bc858561210a90919063ffffffff16565b6116c6919061371f565b995060008b1180156116d8575060008a115b611717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170e90613854565b60405180910390fd5b6117213084612ae6565b61172c878d8d611fd4565b611737868d8c611fd4565b8673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117709190612f96565b60206040518083038186803b15801561178857600080fd5b505afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c0919061351d565b94508573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117fb9190612f96565b60206040518083038186803b15801561181357600080fd5b505afa158015611827573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184b919061351d565b935061185985858b8b6121d0565b81156118d1576118ca6007600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16600760009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1661210a90919063ffffffff16565b600b819055505b8b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d819364968d8d6040516119309291906130c6565b60405180910390a35050505050505050506001600c81905550915091565b6040518060400160405280600581526020017f4c50544b4e00000000000000000000000000000000000000000000000000000081525081565b60006119943384846125af565b6001905092915050565b600860049054906101000a900463ffffffff1681565b6103e881565b6001600c54146119ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f690613229565b60405180910390fd5b6000600c819055506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611b268284611b21600760009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ac39190612f96565b60206040518083038186803b158015611adb57600080fd5b505afa158015611aef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b13919061351d565b61217790919063ffffffff16565b611fd4565b611bf78184611bf26007600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b949190612f96565b60206040518083038186803b158015611bac57600080fd5b505afa158015611bc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be4919061351d565b61217790919063ffffffff16565b611fd4565b50506001600c8190555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb1906138c0565b60405180910390fd5b83600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600860006101000a81548163ffffffff021916908363ffffffff16021790555080600860046101000a81548163ffffffff021916908363ffffffff16021790555050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002602052816000526040600020602052806000526040600020600091509150505481565b600860009054906101000a900463ffffffff1681565b6001600c5414611e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2190613229565b60405180910390fd5b6000600c81905550611fca600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e909190612f96565b60206040518083038186803b158015611ea857600080fd5b505afa158015611ebc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee0919061351d565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611f3b9190612f96565b60206040518083038186803b158015611f5357600080fd5b505afa158015611f67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8b919061351d565b600760009054906101000a90046dffffffffffffffffffffffffffff166007600e9054906101000a90046dffffffffffffffffffffffffffff166121d0565b6001600c81905550565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040516024016120069291906138e0565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516120549190613950565b6000604051808303816000865af19150503d8060008114612091576040519150601f19603f3d011682016040523d82523d6000602084013e612096565b606091505b50915091508180156120c457506000815114806120c35750808060200190518101906120c29190613993565b5b5b612103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fa90613a0c565b60405180910390fd5b5050505050565b6000808214806121325750828283856121239190613a2c565b925082612130919061371f565b145b612171576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216890613ad2565b60405180910390fd5b92915050565b60008282846121869190613579565b91508111156121ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c190613b3e565b60405180910390fd5b92915050565b6dffffffffffffffffffffffffffff8016841115801561220057506dffffffffffffffffffffffffffff80168311155b61223f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223690613baa565b60405180910390fd5b6000640100000000426122529190613bca565b905060006007601c9054906101000a900463ffffffff16826122749190613bfb565b905060008163ffffffff1611801561229d57506000846dffffffffffffffffffffffffffff1614155b80156122ba57506000836dffffffffffffffffffffffffffff1614155b156123c0578063ffffffff166122ff856122d386612bf2565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16612c2690919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166123279190613a2c565b600960008282546123389190613c2f565b925050819055508063ffffffff1661237f8461235387612bf2565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16612c2690919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166123a79190613a2c565b600a60008282546123b89190613c2f565b925050819055505b85600760006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550846007600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550816007601c6101000a81548163ffffffff021916908363ffffffff1602179055507f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1600760009054906101000a90046dffffffffffffffffffffffffffff166007600e9054906101000a90046dffffffffffffffffffffffffffff166040516124b4929190613c85565b60405180910390a1505050505050565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125a29190612fc0565b60405180910390a3505050565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125fa9190613579565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126889190613c2f565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127289190612fc0565b60405180910390a3505050565b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156127a057600080fd5b505afa1580156127b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d89190613cc3565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141591506000600b549050821561292d576000811461292857600061285f61285a866dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff1661210a90919063ffffffff16565b612947565b9050600061286c83612947565b90508082111561292557600061289f61288e838561217790919063ffffffff16565b60005461210a90919063ffffffff16565b90506000826001600860049054906101000a900463ffffffff16600860009054906101000a900463ffffffff166128d69190613cf0565b6128e09190613bfb565b63ffffffff16856128f19190613a2c565b6128fb9190613c2f565b90506000818361290b919061371f565b905060008111156129215761292087826129c1565b5b5050505b50505b61293f565b6000811461293e576000600b819055505b5b505092915050565b600060038211156129ae5781905060006001600284612966919061371f565b6129709190613c2f565b90505b818110156129a857809150600281828561298d919061371f565b6129979190613c2f565b6129a1919061371f565b9050612973565b506129bc565b600082146129bb57600190505b5b919050565b806000546129cf9190613c2f565b60008190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a209190613c2f565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ac19190612fc0565b60405180910390a35050565b6000818310612adc5781612ade565b825b905092915050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b319190613579565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600054612b829190613579565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612be69190612fc0565b60405180910390a35050565b60006e010000000000000000000000000000826dffffffffffffffffffffffffffff16612c1f9190613d49565b9050919050565b6000816dffffffffffffffffffffffffffff1683612c449190613d9f565b905092915050565b600080fd5b600080fd5b6000819050919050565b612c6981612c56565b8114612c7457600080fd5b50565b600081359050612c8681612c60565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cb782612c8c565b9050919050565b612cc781612cac565b8114612cd257600080fd5b50565b600081359050612ce481612cbe565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612d0f57612d0e612cea565b5b8235905067ffffffffffffffff811115612d2c57612d2b612cef565b5b602083019150836001820283011115612d4857612d47612cf4565b5b9250929050565b600080600080600060808688031215612d6b57612d6a612c4c565b5b6000612d7988828901612c77565b9550506020612d8a88828901612c77565b9450506040612d9b88828901612cd5565b935050606086013567ffffffffffffffff811115612dbc57612dbb612c51565b5b612dc888828901612cf9565b92509250509295509295909350565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e11578082015181840152602081019050612df6565b83811115612e20576000848401525b50505050565b6000601f19601f8301169050919050565b6000612e4282612dd7565b612e4c8185612de2565b9350612e5c818560208601612df3565b612e6581612e26565b840191505092915050565b60006020820190508181036000830152612e8a8184612e37565b905092915050565b60006dffffffffffffffffffffffffffff82169050919050565b612eb581612e92565b82525050565b600063ffffffff82169050919050565b612ed481612ebb565b82525050565b6000606082019050612eef6000830186612eac565b612efc6020830185612eac565b612f096040830184612ecb565b949350505050565b60008060408385031215612f2857612f27612c4c565b5b6000612f3685828601612cd5565b9250506020612f4785828601612c77565b9150509250929050565b60008115159050919050565b612f6681612f51565b82525050565b6000602082019050612f816000830184612f5d565b92915050565b612f9081612cac565b82525050565b6000602082019050612fab6000830184612f87565b92915050565b612fba81612c56565b82525050565b6000602082019050612fd56000830184612fb1565b92915050565b600080600060608486031215612ff457612ff3612c4c565b5b600061300286828701612cd5565b935050602061301386828701612cd5565b925050604061302486828701612c77565b9150509250925092565b6000819050919050565b6130418161302e565b82525050565b600060208201905061305c6000830184613038565b92915050565b600060ff82169050919050565b61307881613062565b82525050565b6000602082019050613093600083018461306f565b92915050565b6000602082840312156130af576130ae612c4c565b5b60006130bd84828501612cd5565b91505092915050565b60006040820190506130db6000830185612fb1565b6130e86020830184612fb1565b9392505050565b60006020820190506131046000830184612ecb565b92915050565b61311381612ebb565b811461311e57600080fd5b50565b6000813590506131308161310a565b92915050565b600080600080608085870312156131505761314f612c4c565b5b600061315e87828801612cd5565b945050602061316f87828801612cd5565b935050604061318087828801613121565b925050606061319187828801613121565b91505092959194509250565b600080604083850312156131b4576131b3612c4c565b5b60006131c285828601612cd5565b92505060206131d385828601612cd5565b9150509250929050565b7f4552433230506169723a204c4f434b4544000000000000000000000000000000600082015250565b6000613213601183612de2565b915061321e826131dd565b602082019050919050565b6000602082019050818103600083015261324281613206565b9050919050565b7f4552433230506169723a20494e53554646494349454e545f4f55545055545f4160008201527f4d4f554e54000000000000000000000000000000000000000000000000000000602082015250565b60006132a5602583612de2565b91506132b082613249565b604082019050919050565b600060208201905081810360008301526132d481613298565b9050919050565b6132e481612e92565b81146132ef57600080fd5b50565b600081519050613301816132db565b92915050565b6000815190506133168161310a565b92915050565b60008060006060848603121561333557613334612c4c565b5b6000613343868287016132f2565b9350506020613354868287016132f2565b925050604061336586828701613307565b9150509250925092565b7f4552433230506169723a20494e53554646494349454e545f4c4951554944495460008201527f5900000000000000000000000000000000000000000000000000000000000000602082015250565b60006133cb602183612de2565b91506133d68261336f565b604082019050919050565b600060208201905081810360008301526133fa816133be565b9050919050565b7f4552433230506169723a20494e56414c49445f544f0000000000000000000000600082015250565b6000613437601583612de2565b915061344282613401565b602082019050919050565b600060208201905081810360008301526134668161342a565b9050919050565b600082825260208201905092915050565b82818337600083830152505050565b6000613499838561346d565b93506134a683858461347e565b6134af83612e26565b840190509392505050565b60006080820190506134cf6000830188612f87565b6134dc6020830187612fb1565b6134e96040830186612fb1565b81810360608301526134fc81848661348d565b90509695505050505050565b60008151905061351781612c60565b92915050565b60006020828403121561353357613532612c4c565b5b600061354184828501613508565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061358482612c56565b915061358f83612c56565b9250828210156135a2576135a161354a565b5b828203905092915050565b7f4552433230506169723a20494e53554646494349454e545f494e5055545f414d60008201527f4f554e5400000000000000000000000000000000000000000000000000000000602082015250565b6000613609602483612de2565b9150613614826135ad565b604082019050919050565b60006020820190508181036000830152613638816135fc565b9050919050565b7f4552433230506169723a204b0000000000000000000000000000000000000000600082015250565b6000613675600c83612de2565b91506136808261363f565b602082019050919050565b600060208201905081810360008301526136a481613668565b9050919050565b60006080820190506136c06000830187612fb1565b6136cd6020830186612fb1565b6136da6040830185612fb1565b6136e76060830184612fb1565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061372a82612c56565b915061373583612c56565b925082613745576137446136f0565b5b828204905092915050565b7f4552433230506169723a20494e53554646494349454e545f4c4951554944495460008201527f595f4d494e544544000000000000000000000000000000000000000000000000602082015250565b60006137ac602883612de2565b91506137b782613750565b604082019050919050565b600060208201905081810360008301526137db8161379f565b9050919050565b7f4552433230506169723a20494e53554646494349454e545f4c4951554944495460008201527f595f4255524e4544000000000000000000000000000000000000000000000000602082015250565b600061383e602883612de2565b9150613849826137e2565b604082019050919050565b6000602082019050818103600083015261386d81613831565b9050919050565b7f4552433230506169723a20464f5242494444454e000000000000000000000000600082015250565b60006138aa601483612de2565b91506138b582613874565b602082019050919050565b600060208201905081810360008301526138d98161389d565b9050919050565b60006040820190506138f56000830185612f87565b6139026020830184612fb1565b9392505050565b600081519050919050565b600081905092915050565b600061392a82613909565b6139348185613914565b9350613944818560208601612df3565b80840191505092915050565b600061395c828461391f565b915081905092915050565b61397081612f51565b811461397b57600080fd5b50565b60008151905061398d81613967565b92915050565b6000602082840312156139a9576139a8612c4c565b5b60006139b78482850161397e565b91505092915050565b7f4552433230506169723a205452414e534645525f4641494c4544000000000000600082015250565b60006139f6601a83612de2565b9150613a01826139c0565b602082019050919050565b60006020820190508181036000830152613a25816139e9565b9050919050565b6000613a3782612c56565b9150613a4283612c56565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a7b57613a7a61354a565b5b828202905092915050565b7f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000600082015250565b6000613abc601483612de2565b9150613ac782613a86565b602082019050919050565b60006020820190508181036000830152613aeb81613aaf565b9050919050565b7f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000600082015250565b6000613b28601583612de2565b9150613b3382613af2565b602082019050919050565b60006020820190508181036000830152613b5781613b1b565b9050919050565b7f4552433230506169723a204f564552464c4f5700000000000000000000000000600082015250565b6000613b94601383612de2565b9150613b9f82613b5e565b602082019050919050565b60006020820190508181036000830152613bc381613b87565b9050919050565b6000613bd582612c56565b9150613be083612c56565b925082613bf057613bef6136f0565b5b828206905092915050565b6000613c0682612ebb565b9150613c1183612ebb565b925082821015613c2457613c2361354a565b5b828203905092915050565b6000613c3a82612c56565b9150613c4583612c56565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c7a57613c7961354a565b5b828201905092915050565b6000604082019050613c9a6000830185612eac565b613ca76020830184612eac565b9392505050565b600081519050613cbd81612cbe565b92915050565b600060208284031215613cd957613cd8612c4c565b5b6000613ce784828501613cae565b91505092915050565b6000613cfb82612ebb565b9150613d0683612ebb565b925082613d1657613d156136f0565b5b828204905092915050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613d5482613d21565b9150613d5f83613d21565b9250817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d9457613d9361354a565b5b828202905092915050565b6000613daa82613d21565b9150613db583613d21565b925082613dc557613dc46136f0565b5b82820490509291505056fea2646970667358221220c7fae3dea48c3b00cce524f5b5bf077380335670c62913c4dacdfbed79d0d3d664736f6c63430008090033