60806040526000600a60146101000a81548161ffff021916908361ffff160217905550610211600a60166101000a81548161ffff021916908361ffff160217905550610212600a60186101000a81548161ffff021916908361ffff160217905550610225600a601a6101000a81548161ffff021916908361ffff160217905550610226600b553480156200009257600080fd5b506040518060400160405280601181526020017f4d6f6e6b657942726978204177617264730000000000000000000000000000008152506040518060400160405280600581526020017f4d4b425841000000000000000000000000000000000000000000000000000000815250816000908051906020019062000117929190620001f2565b50806001908051906020019062000130929190620001f2565b505050600062000145620001ea60201b60201c565b905080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35062000307565b600033905090565b8280546200020090620002a2565b90600052602060002090601f01602090048101928262000224576000855562000270565b82601f106200023f57805160ff191683800117855562000270565b8280016001018555821562000270579182015b828111156200026f57825182559160200191906001019062000252565b5b5090506200027f919062000283565b5090565b5b808211156200029e57600081600090555060010162000284565b5090565b60006002820490506001821680620002bb57607f821691505b60208210811415620002d257620002d1620002d8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6141fd80620003176000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063626d067c1161010457806395d89b41116100a2578063c87b56dd11610071578063c87b56dd1461051d578063e8f096db1461054d578063e985e9c514610569578063f2fde38b14610599576101da565b806395d89b41146104a9578063a22cb465146104c7578063b88d4fde146104e3578063c39c20e6146104ff576101da565b8063715018a6116100de578063715018a6146104475780638cab77f7146104515780638da5cb5b1461046d57806392bb79f51461048b576101da565b8063626d067c146103cb5780636352211e146103e757806370a0823114610417576101da565b806332cb6b0c1161017c5780634f6ccce71161014b5780634f6ccce71461034557806355f804b3146103755780635a4eca3014610391578063601c0a46146103ad576101da565b806332cb6b0c146102e35780633ccfd60b1461030157806342842e0e1461030b57806345a38bcd14610327576101da565b8063095ea7b3116101b8578063095ea7b31461025d57806318160ddd1461027957806323b872dd146102975780632f745c59146102b3576101da565b806301ffc9a7146101df57806306fdde031461020f578063081812fc1461022d575b600080fd5b6101f960048036038101906101f49190613034565b6105b5565b60405161020691906139ae565b60405180910390f35b61021761062f565b60405161022491906139c9565b60405180910390f35b610247600480360381019061024291906130c7565b6106c1565b6040516102549190613947565b60405180910390f35b61027760048036038101906102729190612ed6565b610746565b005b61028161085e565b60405161028e9190613ca6565b60405180910390f35b6102b160048036038101906102ac9190612dd0565b61086b565b005b6102cd60048036038101906102c89190612ed6565b6108cb565b6040516102da9190613ca6565b60405180910390f35b6102eb610970565b6040516102f89190613ca6565b60405180910390f35b610309610976565b005b61032560048036038101906103209190612dd0565b610a41565b005b61032f610a61565b60405161033c9190613c8b565b60405180910390f35b61035f600480360381019061035a91906130c7565b610a75565b60405161036c9190613ca6565b60405180910390f35b61038f600480360381019061038a9190613086565b610b0c565b005b6103ab60048036038101906103a69190612f12565b610ba2565b005b6103b5610d12565b6040516103c29190613c8b565b60405180910390f35b6103e560048036038101906103e09190612f4e565b610d26565b005b61040160048036038101906103fc91906130c7565b610dbb565b60405161040e9190613947565b60405180910390f35b610431600480360381019061042c9190612d6b565b610e6d565b60405161043e9190613ca6565b60405180910390f35b61044f610f25565b005b61046b60048036038101906104669190612f9d565b611062565b005b61047561127f565b6040516104829190613947565b60405180910390f35b6104936112a9565b6040516104a09190613c8b565b60405180910390f35b6104b16112bd565b6040516104be91906139c9565b60405180910390f35b6104e160048036038101906104dc9190612e9a565b61134f565b005b6104fd60048036038101906104f89190612e1f565b6114d0565b005b610507611532565b6040516105149190613c8b565b60405180910390f35b610537600480360381019061053291906130c7565b611546565b60405161054491906139c9565b60405180910390f35b61056760048036038101906105629190612f12565b6115ce565b005b610583600480360381019061057e9190612d94565b61173e565b60405161059091906139ae565b60405180910390f35b6105b360048036038101906105ae9190612d6b565b6117d2565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061062857506106278261197e565b5b9050919050565b60606000805461063e90613fb1565b80601f016020809104026020016040519081016040528092919081815260200182805461066a90613fb1565b80156106b75780601f1061068c576101008083540402835291602001916106b7565b820191906000526020600020905b81548152906001019060200180831161069a57829003601f168201915b5050505050905090565b60006106cc82611a60565b61070b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070290613b8b565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061075182610dbb565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b990613c0b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107e1611acc565b73ffffffffffffffffffffffffffffffffffffffff161480610810575061080f8161080a611acc565b61173e565b5b61084f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084690613b0b565b60405180910390fd5b6108598383611ad4565b505050565b6000600880549050905090565b61087c610876611acc565b82611b8d565b6108bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b290613c2b565b60405180910390fd5b6108c6838383611c6b565b505050565b60006108d683610e6d565b8210610917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090e906139eb565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600b5481565b61097e611acc565b73ffffffffffffffffffffffffffffffffffffffff1661099c61127f565b73ffffffffffffffffffffffffffffffffffffffff16146109f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e990613bab565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610a3d573d6000803e3d6000fd5b5050565b610a5c838383604051806020016040528060008152506114d0565b505050565b600a60189054906101000a900461ffff1681565b6000610a7f61085e565b8210610ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab790613c4b565b60405180910390fd5b60088281548110610afa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b610b14611acc565b73ffffffffffffffffffffffffffffffffffffffff16610b3261127f565b73ffffffffffffffffffffffffffffffffffffffff1614610b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7f90613bab565b60405180910390fd5b80600c9080519060200190610b9e929190612a4e565b5050565b610baa611acc565b73ffffffffffffffffffffffffffffffffffffffff16610bc861127f565b73ffffffffffffffffffffffffffffffffffffffff1614610c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1590613bab565b60405180910390fd5b600080600091505b8260ff168260ff161015610d0c57600a601a9054906101000a900461ffff1661ffff16600a60189054906101000a900461ffff1661ffff161115610c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9690613aeb565b60405180910390fd5b600a60189054906101000a900461ffff1690506001600a60189054906101000a900461ffff16610ccf9190613ded565b600a60186101000a81548161ffff021916908361ffff160217905550610cf9848261ffff16611ec7565b8180610d049061402c565b925050610c26565b50505050565b600a601a9054906101000a900461ffff1681565b610d2e611acc565b73ffffffffffffffffffffffffffffffffffffffff16610d4c61127f565b73ffffffffffffffffffffffffffffffffffffffff1614610da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9990613bab565b60405180910390fd5b610dac8382610ba2565b610db683836115ce565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5b90613b4b565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed590613b2b565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f2d611acc565b73ffffffffffffffffffffffffffffffffffffffff16610f4b61127f565b73ffffffffffffffffffffffffffffffffffffffff1614610fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9890613bab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61106a611acc565b73ffffffffffffffffffffffffffffffffffffffff1661108861127f565b73ffffffffffffffffffffffffffffffffffffffff16146110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d590613bab565b60405180910390fd5b8151835114611122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111990613c6b565b60405180910390fd5b8051825114611166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115d90613c6b565b60405180910390fd5b600080600080600090505b86518160ff16101561127657868160ff16815181106111b9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519150858160ff16815181106111ff577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151935061121382856115ce565b848160ff168151811061124f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015192506112638284610ba2565b808061126e9061402c565b915050611171565b50505050505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a60169054906101000a900461ffff1681565b6060600180546112cc90613fb1565b80601f01602080910402602001604051908101604052809291908181526020018280546112f890613fb1565b80156113455780601f1061131a57610100808354040283529160200191611345565b820191906000526020600020905b81548152906001019060200180831161132857829003601f168201915b5050505050905090565b611357611acc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc90613aab565b60405180910390fd5b80600560006113d2611acc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661147f611acc565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516114c491906139ae565b60405180910390a35050565b6114e16114db611acc565b83611b8d565b611520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151790613c2b565b60405180910390fd5b61152c84848484611ee5565b50505050565b600a60149054906101000a900461ffff1681565b606061155182611a60565b611590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158790613beb565b60405180910390fd5b600061159a611f41565b9050806115a684611fd3565b6040516020016115b7929190613923565b604051602081830303815290604052915050919050565b6115d6611acc565b73ffffffffffffffffffffffffffffffffffffffff166115f461127f565b73ffffffffffffffffffffffffffffffffffffffff161461164a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164190613bab565b60405180910390fd5b600080600091505b8260ff168260ff16101561173857600a60169054906101000a900461ffff1661ffff16600a60149054906101000a900461ffff1661ffff1611156116cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c290613a4b565b60405180910390fd5b600a60149054906101000a900461ffff1690506001600a60149054906101000a900461ffff166116fb9190613ded565b600a60146101000a81548161ffff021916908361ffff160217905550611725848261ffff16611ec7565b81806117309061402c565b925050611652565b50505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6117da611acc565b73ffffffffffffffffffffffffffffffffffffffff166117f861127f565b73ffffffffffffffffffffffffffffffffffffffff161461184e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184590613bab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b590613a2b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a4957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611a595750611a5882612180565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611b4783610dbb565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611b9882611a60565b611bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bce90613acb565b60405180910390fd5b6000611be283610dbb565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611c5157508373ffffffffffffffffffffffffffffffffffffffff16611c39846106c1565b73ffffffffffffffffffffffffffffffffffffffff16145b80611c625750611c61818561173e565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611c8b82610dbb565b73ffffffffffffffffffffffffffffffffffffffff1614611ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd890613bcb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4890613a8b565b60405180910390fd5b611d5c8383836121ea565b611d67600082611ad4565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611db79190613eac565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e0e9190613e25565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b611ee18282604051806020016040528060008152506122fe565b5050565b611ef0848484611c6b565b611efc84848484612359565b611f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3290613a0b565b60405180910390fd5b50505050565b6060600c8054611f5090613fb1565b80601f0160208091040260200160405190810160405280929190818152602001828054611f7c90613fb1565b8015611fc95780601f10611f9e57610100808354040283529160200191611fc9565b820191906000526020600020905b815481529060010190602001808311611fac57829003601f168201915b5050505050905090565b6060600082141561201b576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061217b565b600082905060005b6000821461204d57808061203690613fe3565b915050600a826120469190613e7b565b9150612023565b60008167ffffffffffffffff81111561208f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156120c15781602001600182028036833780820191505090505b5090505b60008514612174576001826120da9190613eac565b9150600a856120e99190614056565b60306120f59190613e25565b60f81b818381518110612131577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561216d9190613e7b565b94506120c5565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6121f58383836124f0565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561223857612233816124f5565b612277565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461227657612275838261253e565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122ba576122b5816126ab565b6122f9565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146122f8576122f782826127ee565b5b5b505050565b612308838361286d565b6123156000848484612359565b612354576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234b90613a0b565b60405180910390fd5b505050565b600061237a8473ffffffffffffffffffffffffffffffffffffffff16612a3b565b156124e3578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026123a3611acc565b8786866040518563ffffffff1660e01b81526004016123c59493929190613962565b602060405180830381600087803b1580156123df57600080fd5b505af192505050801561241057506040513d601f19601f8201168201806040525081019061240d919061305d565b60015b612493573d8060008114612440576040519150601f19603f3d011682016040523d82523d6000602084013e612445565b606091505b5060008151141561248b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248290613a0b565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506124e8565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161254b84610e6d565b6125559190613eac565b905060006007600084815260200190815260200160002054905081811461263a576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506126bf9190613eac565b9050600060096000848152602001908152602001600020549050600060088381548110612715577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050806008838154811061275d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806127d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b60006127f983610e6d565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d490613b6b565b60405180910390fd5b6128e681611a60565b15612926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291d90613a6b565b60405180910390fd5b612932600083836121ea565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129829190613e25565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054612a5a90613fb1565b90600052602060002090601f016020900481019282612a7c5760008555612ac3565b82601f10612a9557805160ff1916838001178555612ac3565b82800160010185558215612ac3579182015b82811115612ac2578251825591602001919060010190612aa7565b5b509050612ad09190612ad4565b5090565b5b80821115612aed576000816000905550600101612ad5565b5090565b6000612b04612aff84613cf2565b613cc1565b90508083825260208201905082856020860282011115612b2357600080fd5b60005b85811015612b535781612b398882612c45565b845260208401935060208301925050600181019050612b26565b5050509392505050565b6000612b70612b6b84613d1e565b613cc1565b90508083825260208201905082856020860282011115612b8f57600080fd5b60005b85811015612bbf5781612ba58882612d56565b845260208401935060208301925050600181019050612b92565b5050509392505050565b6000612bdc612bd784613d4a565b613cc1565b905082815260208101848484011115612bf457600080fd5b612bff848285613f6f565b509392505050565b6000612c1a612c1584613d7a565b613cc1565b905082815260208101848484011115612c3257600080fd5b612c3d848285613f6f565b509392505050565b600081359050612c5481614154565b92915050565b600082601f830112612c6b57600080fd5b8135612c7b848260208601612af1565b91505092915050565b600082601f830112612c9557600080fd5b8135612ca5848260208601612b5d565b91505092915050565b600081359050612cbd8161416b565b92915050565b600081359050612cd281614182565b92915050565b600081519050612ce781614182565b92915050565b600082601f830112612cfe57600080fd5b8135612d0e848260208601612bc9565b91505092915050565b600082601f830112612d2857600080fd5b8135612d38848260208601612c07565b91505092915050565b600081359050612d5081614199565b92915050565b600081359050612d65816141b0565b92915050565b600060208284031215612d7d57600080fd5b6000612d8b84828501612c45565b91505092915050565b60008060408385031215612da757600080fd5b6000612db585828601612c45565b9250506020612dc685828601612c45565b9150509250929050565b600080600060608486031215612de557600080fd5b6000612df386828701612c45565b9350506020612e0486828701612c45565b9250506040612e1586828701612d41565b9150509250925092565b60008060008060808587031215612e3557600080fd5b6000612e4387828801612c45565b9450506020612e5487828801612c45565b9350506040612e6587828801612d41565b925050606085013567ffffffffffffffff811115612e8257600080fd5b612e8e87828801612ced565b91505092959194509250565b60008060408385031215612ead57600080fd5b6000612ebb85828601612c45565b9250506020612ecc85828601612cae565b9150509250929050565b60008060408385031215612ee957600080fd5b6000612ef785828601612c45565b9250506020612f0885828601612d41565b9150509250929050565b60008060408385031215612f2557600080fd5b6000612f3385828601612c45565b9250506020612f4485828601612d56565b9150509250929050565b600080600060608486031215612f6357600080fd5b6000612f7186828701612c45565b9350506020612f8286828701612d56565b9250506040612f9386828701612d56565b9150509250925092565b600080600060608486031215612fb257600080fd5b600084013567ffffffffffffffff811115612fcc57600080fd5b612fd886828701612c5a565b935050602084013567ffffffffffffffff811115612ff557600080fd5b61300186828701612c84565b925050604084013567ffffffffffffffff81111561301e57600080fd5b61302a86828701612c84565b9150509250925092565b60006020828403121561304657600080fd5b600061305484828501612cc3565b91505092915050565b60006020828403121561306f57600080fd5b600061307d84828501612cd8565b91505092915050565b60006020828403121561309857600080fd5b600082013567ffffffffffffffff8111156130b257600080fd5b6130be84828501612d17565b91505092915050565b6000602082840312156130d957600080fd5b60006130e784828501612d41565b91505092915050565b6130f981613ee0565b82525050565b61310881613ef2565b82525050565b600061311982613daa565b6131238185613dc0565b9350613133818560208601613f7e565b61313c81614143565b840191505092915050565b600061315282613db5565b61315c8185613dd1565b935061316c818560208601613f7e565b61317581614143565b840191505092915050565b600061318b82613db5565b6131958185613de2565b93506131a5818560208601613f7e565b80840191505092915050565b60006131be602b83613dd1565b91507f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008301527f74206f6620626f756e64730000000000000000000000000000000000000000006020830152604082019050919050565b6000613224603283613dd1565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b600061328a602683613dd1565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006132f0601483613dd1565b91507f7265616368656420656e64206f66204d4554414c0000000000000000000000006000830152602082019050919050565b6000613330601c83613dd1565b91507f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006000830152602082019050919050565b6000613370602483613dd1565b91507f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006133d6601983613dd1565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b6000613416602c83613dd1565b91507f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b600061347c601683613dd1565b91507f7265616368656420656e64206f66206372797374616c000000000000000000006000830152602082019050919050565b60006134bc603883613dd1565b91507f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008301527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006020830152604082019050919050565b6000613522602a83613dd1565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b6000613588602983613dd1565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006135ee602083613dd1565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b600061362e602c83613dd1565b91507f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b6000613694602083613dd1565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006136d4602983613dd1565b91507f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008301527f73206e6f74206f776e00000000000000000000000000000000000000000000006020830152604082019050919050565b600061373a602f83613dd1565b91507f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008301527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006020830152604082019050919050565b60006137a0602183613dd1565b91507f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613806603183613dd1565b91507f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008301527f776e6572206e6f7220617070726f7665640000000000000000000000000000006020830152604082019050919050565b600061386c602c83613dd1565b91507f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008301527f7574206f6620626f756e647300000000000000000000000000000000000000006020830152604082019050919050565b60006138d2601183613dd1565b91507f6d69736d617463686564206c656e6774680000000000000000000000000000006000830152602082019050919050565b61390e81613f2a565b82525050565b61391d81613f58565b82525050565b600061392f8285613180565b915061393b8284613180565b91508190509392505050565b600060208201905061395c60008301846130f0565b92915050565b600060808201905061397760008301876130f0565b61398460208301866130f0565b6139916040830185613914565b81810360608301526139a3818461310e565b905095945050505050565b60006020820190506139c360008301846130ff565b92915050565b600060208201905081810360008301526139e38184613147565b905092915050565b60006020820190508181036000830152613a04816131b1565b9050919050565b60006020820190508181036000830152613a2481613217565b9050919050565b60006020820190508181036000830152613a448161327d565b9050919050565b60006020820190508181036000830152613a64816132e3565b9050919050565b60006020820190508181036000830152613a8481613323565b9050919050565b60006020820190508181036000830152613aa481613363565b9050919050565b60006020820190508181036000830152613ac4816133c9565b9050919050565b60006020820190508181036000830152613ae481613409565b9050919050565b60006020820190508181036000830152613b048161346f565b9050919050565b60006020820190508181036000830152613b24816134af565b9050919050565b60006020820190508181036000830152613b4481613515565b9050919050565b60006020820190508181036000830152613b648161357b565b9050919050565b60006020820190508181036000830152613b84816135e1565b9050919050565b60006020820190508181036000830152613ba481613621565b9050919050565b60006020820190508181036000830152613bc481613687565b9050919050565b60006020820190508181036000830152613be4816136c7565b9050919050565b60006020820190508181036000830152613c048161372d565b9050919050565b60006020820190508181036000830152613c2481613793565b9050919050565b60006020820190508181036000830152613c44816137f9565b9050919050565b60006020820190508181036000830152613c648161385f565b9050919050565b60006020820190508181036000830152613c84816138c5565b9050919050565b6000602082019050613ca06000830184613905565b92915050565b6000602082019050613cbb6000830184613914565b92915050565b6000604051905081810181811067ffffffffffffffff82111715613ce857613ce7614114565b5b8060405250919050565b600067ffffffffffffffff821115613d0d57613d0c614114565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613d3957613d38614114565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613d6557613d64614114565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115613d9557613d94614114565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613df882613f2a565b9150613e0383613f2a565b92508261ffff03821115613e1a57613e19614087565b5b828201905092915050565b6000613e3082613f58565b9150613e3b83613f58565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613e7057613e6f614087565b5b828201905092915050565b6000613e8682613f58565b9150613e9183613f58565b925082613ea157613ea06140b6565b5b828204905092915050565b6000613eb782613f58565b9150613ec283613f58565b925082821015613ed557613ed4614087565b5b828203905092915050565b6000613eeb82613f38565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015613f9c578082015181840152602081019050613f81565b83811115613fab576000848401525b50505050565b60006002820490506001821680613fc957607f821691505b60208210811415613fdd57613fdc6140e5565b5b50919050565b6000613fee82613f58565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561402157614020614087565b5b600182019050919050565b600061403782613f62565b915060ff82141561404b5761404a614087565b5b600182019050919050565b600061406182613f58565b915061406c83613f58565b92508261407c5761407b6140b6565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61415d81613ee0565b811461416857600080fd5b50565b61417481613ef2565b811461417f57600080fd5b50565b61418b81613efe565b811461419657600080fd5b50565b6141a281613f58565b81146141ad57600080fd5b50565b6141b981613f62565b81146141c457600080fd5b5056fea2646970667358221220d4456595591c5f234c8b86de20c992e8777dabcea4a3b2336a29bbfa42127ddc64736f6c63430008000033