608060405260008060006101000a81548160ff0219169083151502179055503480156200002b57600080fd5b5060405162003e5138038062003e51833981810160405260408110156200005157600080fd5b81019080805160405193929190846401000000008211156200007257600080fd5b838201915060208201858111156200008957600080fd5b8251866001820283011164010000000082111715620000a757600080fd5b8083526020830192505050908051906020019080838360005b83811015620000dd578082015181840152602081019050620000c0565b50505050905090810190601f1680156200010b5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200012f57600080fd5b838201915060208201858111156200014657600080fd5b82518660018202830111640100000000821117156200016457600080fd5b8083526020830192505050908051906020019080838360005b838110156200019a5780820151818401526020810190506200017d565b50505050905090810190601f168015620001c85780820380516001836020036101000a031916815260200191505b5060405250505081816a115eec47f6cf7e350000008282601273b00c8c4967e0d6aa30f8e35872ba8bb0608466ba80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050826004908051906020019062000250929190620008b9565b50816005908051906020019062000269929190620008b9565b5080600660006101000a81548160ff021916908360ff16021790555050505062000299336200047b60201b60201c565b620002aa33620004dc60201b60201c565b60008111620002b857600080fd5b806009819055505033600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36200039b336a115eec47f6cf7e350000006200053d60201b60201c565b30604051620003aa9062000940565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080158015620003fd573d6000803e3d6000fd5b50600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000471600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200059060201b60201c565b5050505062000976565b62000496816007620005bf60201b62002c541790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f86e57fd2b90329052917118de7c3f521f400d439b9650deaa906a25b08b9456060405160405180910390a250565b620004f7816008620005bf60201b62002c541790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b6009546200056982620005556200067560201b60201c565b6200067f60201b62001d0b1790919060201c565b11156200057557600080fd5b6200058c82826200069f60201b6200296f1760201c565b5050565b620005a1336200080260201b60201c565b620005ab57600080fd5b620005bc816200047b60201b60201c565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620005fa57600080fd5b6200060c82826200082660201b60201c565b156200061757600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600354905090565b6000808284019050838110156200069557600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620006da57600080fd5b620006f6816003546200067f60201b62001d0b1790919060201c565b6003819055506200075581600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200067f60201b62001d0b1790919060201c565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60006200081f8260076200082660201b62001eb41790919060201c565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200086257600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620008fc57805160ff19168380011785556200092d565b828001600101855582156200092d579182015b828111156200092c5782518255916020019190600101906200090f565b5b5090506200093c91906200094e565b5090565b6105f4806200385d83390190565b6200097391905b808211156200096f57600081600090555060010162000955565b5090565b90565b612ed780620009866000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c8063715018a611610125578063a9059cbb116100ad578063dd62ed3e1161007c578063dd62ed3e14610afd578063e9ec9e8b14610b75578063f2fde38b14610b7f578063f44637ba14610bc3578063fc81868414610c0757610211565b8063a9059cbb1461098c578063aa271e1a146109f2578063c4ff027614610a4e578063d879726214610a9f57610211565b806395d89b41116100f457806395d89b411461080b57806395ddbe891461088e578063983b2d56146108d8578063986502751461091c578063a457c2d71461092657610211565b8063715018a6146106fc57806375ee8389146107065780638da5cb5b1461079f5780638f32d59b146107e957610211565b8063355274ea116101a857806342966c681161017757806342966c68146105675780634334614a146105ad5780635300f82b146106095780635fdb86f91461062b57806370a08231146106a457610211565b8063355274ea14610473578063395093511461049157806340c10f19146104f7578063421dd7c71461055d57610211565b80631f69fcb9116101e45780631f69fcb91461036757806323b872dd146103ab5780632ff2e9dc14610431578063313ce5671461044f57610211565b806306fdde0314610216578063095ea7b31461029957806318160ddd146102ff5780631c0973a41461031d575b600080fd5b61021e610c35565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561025e578082015181840152602081019050610243565b50505050905090810190601f16801561028b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e5600480360360408110156102af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cd7565b604051808215151515815260200191505060405180910390f35b610307610cee565b6040518082815260200191505060405180910390f35b610325610cf8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103a96004803603602081101561037d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d1e565b005b610417600480360360608110156103c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d6a565b604051808215151515815260200191505060405180910390f35b610439610e1b565b6040518082815260200191505060405180910390f35b610457610e2a565b604051808260ff1660ff16815260200191505060405180910390f35b61047b610e41565b6040518082815260200191505060405180910390f35b6104dd600480360360408110156104a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e4b565b604051808215151515815260200191505060405180910390f35b6105436004803603604081101561050d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ef0565b604051808215151515815260200191505060405180910390f35b610565610f18565b005b6105936004803603602081101561057d57600080fd5b8101908080359060200190929190505050610f3c565b604051808215151515815260200191505060405180910390f35b6105ef600480360360208110156105c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f63565b604051808215151515815260200191505060405180910390f35b610611610f80565b604051808215151515815260200191505060405180910390f35b6106a26004803603602081101561064157600080fd5b810190808035906020019064010000000081111561065e57600080fd5b82018360208201111561067057600080fd5b8035906020019184602083028401116401000000008311171561069257600080fd5b9091929391929390505050610f9e565b005b6106e6600480360360208110156106ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110e9565b6040518082815260200191505060405180910390f35b610704611132565b005b61079d6004803603604081101561071c57600080fd5b810190808035906020019064010000000081111561073957600080fd5b82018360208201111561074b57600080fd5b8035906020019184602083028401116401000000008311171561076d57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611204565b005b6107a761141b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107f1611445565b604051808215151515815260200191505060405180910390f35b61081361149d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610853578082015181840152602081019050610838565b50505050905090810190601f1680156108805780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61089661153f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61091a600480360360208110156108ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611647565b005b610924611665565b005b6109726004803603604081101561093c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611670565b604051808215151515815260200191505060405180910390f35b6109d8600480360360408110156109a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611715565b604051808215151515815260200191505060405180910390f35b610a3460048036036020811015610a0857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118b8565b604051808215151515815260200191505060405180910390f35b610a9d60048036036040811015610a6457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506118d5565b005b610ae160048036036020811015610ab557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119cf565b604051808260ff1660ff16815260200191505060405180910390f35b610b5f60048036036040811015610b1357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119ef565b6040518082815260200191505060405180910390f35b610b7d611a76565b005b610bc160048036036020811015610b9557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a81565b005b610c0560048036036020811015610bd957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a9e565b005b610c3360048036036020811015610c1d57600080fd5b8101908080359060200190929190505050611abc565b005b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ccd5780601f10610ca257610100808354040283529160200191610ccd565b820191906000526020600020905b815481529060010190602001808311610cb057829003601f168201915b5050505050905090565b6000610ce4338484611b5e565b6001905092915050565b6000600354905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d26611cbd565b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610d77848484611cd0565b610e108433610e0b85600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ceb90919063ffffffff16565b611b5e565b600190509392505050565b6a115eec47f6cf7e3500000081565b6000600660009054906101000a900460ff16905090565b6000600954905090565b6000610ee63384610ee185600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d0b90919063ffffffff16565b611b5e565b6001905092915050565b6000610efb336118b8565b610f0457600080fd5b610f0e8383611d2a565b6001905092915050565b610f20611cbd565b60016000806101000a81548160ff021916908315150217905550565b6000610f4733610f63565b610f5057600080fd5b610f5a3383611d60565b60019050919050565b6000610f79826007611eb490919063ffffffff16565b9050919050565b6000610f996000809054906101000a900460ff16611f46565b905090565b610fa6611cbd565b610fae611f51565b611003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526033815260200180612e0a6033913960400191505060405180910390fd5b600061100d61153f565b9050611017611f65565b73ffffffffffffffffffffffffffffffffffffffff16634a2ae6658285856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925060200280828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b1580156110cc57600080fd5b505af11580156110e0573d6000803e3d6000fd5b50505050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61113a611445565b61114357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61120c611cbd565b611214610f80565b611269576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526033815260200180612e0a6033913960400191505060405180910390fd5b60008060009054906101000a900460ff16905060016000806101000a81548160ff02191690831515021790555060006112a061153f565b905060008090505b858590508110156113fa5760008686838181106112c157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1690506112e8611f65565b73ffffffffffffffffffffffffffffffffffffffff166386c58d3e84836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561139857600080fd5b505afa1580156113ac573d6000803e3d6000fd5b505050506040513d60208110156113c257600080fd5b8101908080519060200190929190505050156113ec576113eb81866113e684611f8e565b611fa0565b5b5080806001019150506112a8565b50816000806101000a81548160ff0219169083151502179055505050505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115355780601f1061150a57610100808354040283529160200191611535565b820191906000526020600020905b81548152906001019060200180831161151857829003601f168201915b5050505050905090565b600080600181111561154d57fe5b611555611fb0565b600181111561156057fe5b141561158e57611587611571611fb8565b611579611fe3565b30611582611fff565b61201b565b9050611644565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f60001b6115ba611fb8565b14611610576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526041815260200180612e3d6041913960600191505060405180910390fd5b61164161161b611fe3565b61163c30611627611fff565b611637611632612157565b612160565b6121bf565b61225b565b90505b90565b611650336118b8565b61165957600080fd5b611662816123fd565b50565b61166e33612457565b565b600061170b338461170685600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ceb90919063ffffffff16565b611b5e565b6001905092915050565b60006001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614156117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f66726f6d2061646472657373206973206c696d697465642e000000000000000081525060200191505060405180910390fd5b6002600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614156118a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f746f2061646472657373206973206c696d697465642e0000000000000000000081525060200191505060405180910390fd5b6118ae338484611cd0565b6001905092915050565b60006118ce826008611eb490919063ffffffff16565b9050919050565b6118dd611445565b6118e657600080fd5b60008160ff1614806118fb575060018160ff16145b80611909575060028160ff16145b61191257600080fd5b60008160ff16141561197257600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690556119cb565b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505b5050565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a7f336124b1565b565b611a89611445565b611a9257600080fd5b611a9b8161250b565b50565b611aa733610f63565b611ab057600080fd5b611ab981612605565b50565b611ac533610f63565b611ace57600080fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611b4357600080fd5b505af1158015611b57573d6000803e3d6000fd5b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b9857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bd257600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b611cc5611445565b611cce57600080fd5b565b611cdb83838361265f565b611ce68383836127a1565b505050565b600082821115611cfa57600080fd5b600082840390508091505092915050565b600080828401905083811015611d2057600080fd5b8091505092915050565b600954611d4782611d39610cee565b611d0b90919063ffffffff16565b1115611d5257600080fd5b611d5c828261296f565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d9a57600080fd5b611daf81600354611ceb90919063ffffffff16565b600381905550611e0781600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ceb90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611eef57600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600081159050919050565b6000611f6063618dae7f612ac3565b905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000611f99826110e9565b9050919050565b611fab838383611cd0565b505050565b600080905090565b60007f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f60001b905090565b6000735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f905090565b600073dac17f958d2ee523a2206206994597c13d831ec7905090565b600080600061202a8585612add565b91509150858282604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001208860405160200180807fff000000000000000000000000000000000000000000000000000000000000008152506001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140183815260200182815260200193505050506040516020818303038152906040528051906020012060001c92505050949350505050565b60006001905090565b60006001600281111561216f57fe5b82600281111561217b57fe5b141561218b57610bb890506121ba565b6000600281111561219857fe5b8260028111156121a457fe5b14156121b4576101f490506121ba565b61271090505b919050565b6121c7612db7565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16111561220657828480945081955050505b60405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018362ffffff1681525090509392505050565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff161061229d57600080fd5b82826000015183602001518460400151604051602001808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018262ffffff1662ffffff1681526020019350505050604051602081830303815290604052805190602001207fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460001b60405160200180807fff000000000000000000000000000000000000000000000000000000000000008152506001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140183815260200182815260200193505050506040516020818303038152906040528051906020012060001c905092915050565b612411816008612c5490919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b61246b816008612d0090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b6124c5816007612d0090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f90eabbc0c667db2a5029ed6bc0f5fe9f356d11684a4ca9fcfaec0e53f12b9c8e60405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561254557600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612619816007612c5490919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f86e57fd2b90329052917118de7c3f521f400d439b9650deaa906a25b08b9456060405160405180910390a250565b612667611f51565b1561279b576000809054906101000a900460ff16156126855761279c565b61268d611f65565b73ffffffffffffffffffffffffffffffffffffffff16630336a3306126b061153f565b8585856040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b15801561278257600080fd5b505af1158015612796573d6000803e3d6000fd5b505050505b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127db57600080fd5b61282d81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ceb90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128c281600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d0b90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129a957600080fd5b6129be81600354611d0b90919063ffffffff16565b600381905550612a1681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d0b90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000612ad6612ad183612dab565b611f46565b9050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612e7e6025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610612b9f578284612ba2565b83835b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f556e697377617056324c6962726172793a205a45524f5f41444452455353000081525060200191505060405180910390fd5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c8e57600080fd5b612c988282611eb4565b15612ca257600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612d3a57600080fd5b612d448282611eb4565b612d4d57600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60004282109050919050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600062ffffff168152509056fe5573696e674c697175696469747950726f74656374696f6e536572766963653a2070726f74656374696f6e2072656d6f7665644c697175696469747950726f74656374696f6e3a20756e69737761705661726965747928292063616e206f6e6c7920626520554e495357415020666f722056332e556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553a265627a7a723158200348f0c974282f544a1153fec921169116971b95a54930412dd3f2b5c6bea50e64736f6c63430005110032608060405234801561001057600080fd5b506040516105f43803806105f48339818101604052602081101561003357600080fd5b8101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506104a3806101516000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806342966c681461005c578063715018a61461008a5780638da5cb5b146100945780638f32d59b146100de578063f2fde38b14610100575b600080fd5b6100886004803603602081101561007257600080fd5b8101908080359060200190929190505050610144565b005b610092610209565b005b61009c6102d9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100e6610302565b604051808215151515815260200191505060405180910390f35b6101426004803603602081101561011657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610359565b005b61014c610302565b61015557600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68826040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156101ca57600080fd5b505af11580156101de573d6000803e3d6000fd5b505050506040513d60208110156101f457600080fd5b81019080805190602001909291905050505050565b610211610302565b61021a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b610361610302565b61036a57600080fd5b61037381610376565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156103b057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fea265627a7a723158203c3d26e6c2f86575c264402024847fb70bb611a65579390833da9bbf421cb15964736f6c6343000511003200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001452616e676572732050726f746f636f6c2047617300000000000000000000000000000000000000000000000000000000000000000000000000000000000000035250470000000000000000000000000000000000000000000000000000000000