60806040526000600755600060085562093a806009556107d06016553480156200002857600080fd5b506040516200503c3803806200503c833981810160405260e08110156200004e57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505086600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000140576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4f776e657220616464726573732063616e6e6f7420626520300000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c600082604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1506001600381905550600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415620002e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4f776e6572206d7573742062652073657400000000000000000000000000000081525060200191505060405180910390fd5b84600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601681905550600060118190555050505050505050614baa80620004926000396000f3fe6080604052600436106102865760003560e01c806353a47bb71161015a578063c6def076116100c1578063e1eb55121161007a578063e1eb551214610ee9578063ebe2b12b14610f64578063f1c4db6d14610f8f578063f60a038d14610fca578063fc5ba1a41461101b578063ffd189a71461107257610286565b8063c6def07614610d85578063c8f33c9114610ddc578063cc1a378f14610e07578063cd3daf9d14610e42578063d5d3906414610e6d578063df136d6514610ebe57610286565b806380faa57d1161011357806380faa57d14610bee57806388eeb9b514610c195780638b87634714610c705780638da5cb5b14610cd557806391b4ded914610d2c578063a694fc3a14610d5757610286565b806353a47bb714610a705780635c975abb14610ac757806370a0823114610af657806379ba509714610b5b5780637a78b6b714610b725780637b0a47ee14610bc357610286565b806319762143116101fe57806332e7c5bf116101b757806332e7c5bf146108e3578063386a95251461090e5780633c6b16ab146109395780633d18b912146109745780633fc6df6e1461097e5780635207129b146109d557610286565b806319762143146107655780631c1f78eb146107b65780631dce5b3c146107e1578063221864ba14610830578063222c97771461085e5780632e1a7d4d146108b557610286565b80630ce71e32116102505780630ce71e321461048c57806310accedb146104e3578063150b7a02146105485780631627540c146106ac57806316c38b3c146106fd57806318160ddd1461073a57610286565b80628cc2621461028b578062c5c5ce146102f0578063040172c11461031b578063057f962a146103a15780630700037d14610427575b600080fd5b34801561029757600080fd5b506102da600480360360208110156102ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110a0565b6040518082815260200191505060405180910390f35b3480156102fc57600080fd5b50610305611254565b6040518082815260200191505060405180910390f35b34801561032757600080fd5b5061039f6004803603602081101561033e57600080fd5b810190808035906020019064010000000081111561035b57600080fd5b82018360208201111561036d57600080fd5b8035906020019184602083028401116401000000008311171561038f57600080fd5b909192939192939050505061125a565b005b3480156103ad57600080fd5b50610425600480360360208110156103c457600080fd5b81019080803590602001906401000000008111156103e157600080fd5b8201836020820111156103f357600080fd5b8035906020019184602083028401116401000000008311171561041557600080fd5b909192939192939050505061141c565b005b34801561043357600080fd5b506104766004803603602081101561044a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061158c565b6040518082815260200191505060405180910390f35b34801561049857600080fd5b506104a16115a4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104ef57600080fd5b506105326004803603602081101561050657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115ca565b6040518082815260200191505060405180910390f35b34801561055457600080fd5b506106586004803603608081101561056b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156105d257600080fd5b8201836020820111156105e457600080fd5b8035906020019184600183028401116401000000008311171561060657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506115e2565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156106b857600080fd5b506106fb600480360360208110156106cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611607565b005b34801561070957600080fd5b506107386004803603602081101561072057600080fd5b810190808035151590602001909291905050506116b6565b005b34801561074657600080fd5b5061074f611763565b6040518082815260200191505060405180910390f35b34801561077157600080fd5b506107b46004803603602081101561078857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061176d565b005b3480156107c257600080fd5b506107cb6117b9565b6040518082815260200191505060405180910390f35b3480156107ed57600080fd5b5061081a6004803603602081101561080457600080fd5b81019080803590602001909291905050506117d7565b6040518082815260200191505060405180910390f35b61085c6004803603602081101561084657600080fd5b81019080803590602001909291905050506117f8565b005b34801561086a57600080fd5b50610873611fc5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108e1600480360360208110156108cb57600080fd5b8101908080359060200190929190505050611feb565b005b3480156108ef57600080fd5b506108f861271d565b6040518082815260200191505060405180910390f35b34801561091a57600080fd5b50610923612723565b6040518082815260200191505060405180910390f35b34801561094557600080fd5b506109726004803603602081101561095c57600080fd5b8101908080359060200190929190505050612729565b005b61097c612b21565b005b34801561098a57600080fd5b5061099361313a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109e157600080fd5b50610a2e600480360360408110156109f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613160565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a7c57600080fd5b50610a856131a2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ad357600080fd5b50610adc6131c8565b604051808215151515815260200191505060405180910390f35b348015610b0257600080fd5b50610b4560048036036020811015610b1957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506131db565b6040518082815260200191505060405180910390f35b348015610b6757600080fd5b50610b70613224565b005b348015610b7e57600080fd5b50610bc160048036036020811015610b9557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061344a565b005b348015610bcf57600080fd5b50610bd8613496565b6040518082815260200191505060405180910390f35b348015610bfa57600080fd5b50610c0361349c565b6040518082815260200191505060405180910390f35b348015610c2557600080fd5b50610c2e6134b6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c7c57600080fd5b50610cbf60048036036020811015610c9357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134dc565b6040518082815260200191505060405180910390f35b348015610ce157600080fd5b50610cea6134f4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d3857600080fd5b50610d41613519565b6040518082815260200191505060405180910390f35b610d8360048036036020811015610d6d57600080fd5b810190808035906020019092919050505061351f565b005b348015610d9157600080fd5b50610d9a613b80565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610de857600080fd5b50610df1613ba6565b6040518082815260200191505060405180910390f35b348015610e1357600080fd5b50610e4060048036036020811015610e2a57600080fd5b8101908080359060200190929190505050613bac565b005b348015610e4e57600080fd5b50610e57613c51565b6040518082815260200191505060405180910390f35b348015610e7957600080fd5b50610ebc60048036036020811015610e9057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613d3b565b005b348015610eca57600080fd5b50610ed3613e4b565b6040518082815260200191505060405180910390f35b348015610ef557600080fd5b50610f2260048036036020811015610f0c57600080fd5b8101908080359060200190929190505050613e51565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610f7057600080fd5b50610f79613e84565b6040518082815260200191505060405180910390f35b348015610f9b57600080fd5b50610fc860048036036020811015610fb257600080fd5b8101908080359060200190929190505050613e8a565b005b348015610fd657600080fd5b5061101960048036036020811015610fed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613f13565b005b34801561102757600080fd5b50611030613f5f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61109e6004803603602081101561108857600080fd5b8101908080359060200190929190505050613f85565b005b600061124d6110fe662386f26fc10000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461473690919063ffffffff16565b61123f670de0b6b3a764000061123161271061122361116c600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461115e613c51565b6147be90919063ffffffff16565b6112156111c3601654601560008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461484790919063ffffffff16565b61271001601060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461484790919063ffffffff16565b61484790919063ffffffff16565b6148cd90919063ffffffff16565b6148cd90919063ffffffff16565b61473690919063ffffffff16565b9050919050565b60165481565b61126261495c565b60008090505b8282905081101561138757600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e33308686868181106112bf57fe5b905060200201356040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561136257600080fd5b505af1158015611376573d6000803e3d6000fd5b505050508080600101915050611268565b507f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683839050604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b61142461495c565b60008090505b8282905081101561158757600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e333086868681811061148157fe5b905060200201356040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561152457600080fd5b505af1158015611538573d6000803e3d6000fd5b50505050601983838381811061154a57fe5b905060200201359080600181540180825580915050906001820390600052602060002001600090919290919091505550808060010191505061142a565b505050565b600d6020528060005260406000206000915090505481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60156020528060005260406000206000915090505481565b60006040518080614a91602f9139602f01905060405180910390209050949350505050565b61160f61495c565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2281604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6116be61495c565b600560009054906101000a900460ff16151581151514156116de57611760565b80600560006101000a81548160ff021916908315150217905550600560009054906101000a900460ff161561171557426004819055505b7f8fb6c181ee25a520cf3dd6565006ef91229fcfe5a989566c2a3b8c115570cec5600560009054906101000a900460ff16604051808215151515815260200191505060405180910390a15b50565b6000600f54905090565b61177561495c565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006117d260095460085461484790919063ffffffff16565b905090565b601981815481106117e457fe5b906000526020600020016000915090505481565b60016003600082825401925050819055506000600354905033611819613c51565b600b8190555061182761349c565b600a81905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146118f45761186a816110a0565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b54600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600073ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156119b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f626f6f73746572206973206e6f7420736574000000000000000000000000000081525060200191505060405180910390fd5b6000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611a6e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20626f6f7374657220746f2072656d6f766500000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1660186000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f6e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663805f7c9c3060046040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018260ff1681526020019250505060206040518083038186803b158015611c4c57600080fd5b505afa158015611c60573d6000803e3d6000fd5b505050506040513d6020811015611c7657600080fd5b81019080805190602001909291905050503414611cfb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f72656d6f766520626f6f7374657220666565206973206e6f7420656e6f75676881525060200191505060405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3033866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015611dd857600080fd5b505af1158015611dec573d6000803e3d6000fd5b50505050611e436001601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147be90919063ffffffff16565b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611eda601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546017546147be90919063ffffffff16565b601781905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611f48573d6000803e3d6000fd5b50506003548114611fc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b5050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6001600360008282540192505081905550600060035490503361200c613c51565b600b8190555061201a61349c565b600a81905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146120e75761205d816110a0565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b54600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663805f7c9c3060016040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018260ff1681526020019250505060206040518083038186803b15801561219257600080fd5b505afa1580156121a6573d6000803e3d6000fd5b505050506040513d60208110156121bc57600080fd5b81019080805190602001909291905050503414612241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f776974686472617720666565206973206e6f7420656e6f75676800000000000081525060200191505060405180910390fd5b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116122f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6e6f206e667420746f207769746864726177000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600e600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f6e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000670de0b6b3a764000090506123ec81600f546147be90919063ffffffff16565b600f8190555061244481601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147be90919063ffffffff16565b601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3033876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561256457600080fd5b505af1158015612578573d6000803e3d6000fd5b50505050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156125e4573d6000803e3d6000fd5b5061264b61263a601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361484790919063ffffffff16565b6017546147be90919063ffffffff16565b6017819055503373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d560016040518082815260200191505060405180910390a250506003548114612719576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b5050565b60175481565b60095481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146127cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614b4c602a913960400191505060405180910390fd5b60006127d9613c51565b600b819055506127e761349c565b600a81905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146128b45761282a816110a0565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b54600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60075442106128dd576128d2600954836148cd90919063ffffffff16565b60088190555061293f565b60006128f4426007546147be90919063ffffffff16565b9050600061290d6008548361484790919063ffffffff16565b9050612936600954612928838761473690919063ffffffff16565b6148cd90919063ffffffff16565b60088190555050505b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156129e057600080fd5b505afa1580156129f4573d6000803e3d6000fd5b505050506040513d6020811015612a0a57600080fd5b81019080805190602001909291905050509050612a4c600954612a3e670de0b6b3a76400008461484790919063ffffffff16565b6148cd90919063ffffffff16565b6008541115612ac3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f50726f76696465642072657761726420746f6f2068696768000000000000000081525060200191505060405180910390fd5b42600a81905550612adf6009544261473690919063ffffffff16565b6007819055507fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d836040518082815260200191505060405180910390a1505050565b60016003600082825401925050819055506000600354905033612b42613c51565b600b81905550612b5061349c565b600a81905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612c1d57612b93816110a0565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b54600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663805f7c9c3060026040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018260ff1681526020019250505060206040518083038186803b158015612cc857600080fd5b505afa158015612cdc573d6000803e3d6000fd5b505050506040513d6020811015612cf257600080fd5b81019080805190602001909291905050503414612d77576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f636c61696d20666565206973206e6f7420656e6f75676800000000000000000081525060200191505060405180910390fd5b6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000612dd8670de0b6b3a7640000836148cd90919063ffffffff16565b905060008111612e50576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f2072657761726420746f20636c61696d000000000000000000000000000081525060200191505060405180910390fd5b612e7d612e6e670de0b6b3a76400008361484790919063ffffffff16565b836147be90919063ffffffff16565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008090505b8181101561300557600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3033601960115481548110612f1d57fe5b90600052602060002001546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015612fc457600080fd5b505af1158015612fd8573d6000803e3d6000fd5b50505050612ff2600160115461473690919063ffffffff16565b6011819055508080600101915050612ec6565b50601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561306e573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486826040518082815260200191505060405180910390a25050506003548114613137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60186020528160005260406000206020528060005260406000206000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900460ff1681565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146132ca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526035815260200180614a5c6035913960400191505060405180910390fd5b7fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61345261495c565b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b600060075442106134af576007546134b1565b425b905090565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c6020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b600160036000828254019250508190555060006003549050600560009054906101000a900460ff161561359d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c815260200180614b10603c913960400191505060405180910390fd5b336135a6613c51565b600b819055506135b461349c565b600a81905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613681576135f7816110a0565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b54600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663805f7c9c3060006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018260ff1681526020019250505060206040518083038186803b15801561372c57600080fd5b505afa158015613740573d6000803e3d6000fd5b505050506040513d602081101561375657600080fd5b810190808051906020019092919050505034146137db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f7374616b6520666565206973206e6f7420656e6f75676800000000000000000081525060200191505060405180910390fd5b6000670de0b6b3a764000090506137fd81600f5461473690919063ffffffff16565b600f8190555061385581601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461473690919063ffffffff16565b601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3330876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561397557600080fd5b505af1158015613989573d6000803e3d6000fd5b50505050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156139f5573d6000803e3d6000fd5b50613a5c613a4b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361484790919063ffffffff16565b60175461473690919063ffffffff16565b60178190555033600e600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d60016040518082815260200191505060405180910390a250506003548114613b7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b5050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b613bb461495c565b6007544211613c0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526058815260200180614a046058913960600191505060405180910390fd5b806009819055507ffb46ca5a5e06d4540d6387b930a7c978bce0db5f449ec6b3f5d07c6e1d44f2d36009546040518082815260200191505060405180910390a150565b600080600f541415613c6757600b549050613d38565b6000613c8061271060085461484790919063ffffffff16565b90506000613cc3613c9e60165460175461484790919063ffffffff16565b613cb5612710600f5461484790919063ffffffff16565b61473690919063ffffffff16565b9050613d33613d2282613d1485613d06670de0b6b3a7640000613cf8600a54613cea61349c565b6147be90919063ffffffff16565b61484790919063ffffffff16565b61484790919063ffffffff16565b6148cd90919063ffffffff16565b600b5461473690919063ffffffff16565b925050505b90565b613d4361495c565b600073ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613e07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f626f6f7374657220616c7265616479207365740000000000000000000000000081525060200191505060405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b600e6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b613e9261495c565b610ce48110613f09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f726174696f206d757374206265206c657373207468616e20333325000000000081525060200191505060405180910390fd5b8060168190555050565b613f1b61495c565b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160036000828254019250508190555060006003549050600560009054906101000a900460ff1615614003576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c815260200180614b10603c913960400191505060405180910390fd5b3361400c613c51565b600b8190555061401a61349c565b600a81905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146140e75761405d816110a0565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b54600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600073ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156141ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f626f6f73746572206973206e6f7420736574000000000000000000000000000081525060200191505060405180910390fd5b6003601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410614261576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f626f6f73746572206c696d69742072656163686564000000000000000000000081525060200191505060405180910390fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663805f7c9c3060036040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018260ff1681526020019250505060206040518083038186803b15801561430c57600080fd5b505afa158015614320573d6000803e3d6000fd5b505050506040513d602081101561433657600080fd5b810190808051906020019092919050505034146143bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f61646420626f6f7374657220666565206973206e6f7420656e6f75676800000081525060200191505060405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3330866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561449857600080fd5b505af11580156144ac573d6000803e3d6000fd5b505050503360186000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506145b46001601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461473690919063ffffffff16565b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061464b601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460175461473690919063ffffffff16565b601781905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156146b9573d6000803e3d6000fd5b50506003548114614732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b5050565b6000808284019050838110156147b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600082821115614836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b60008083141561485a57600090506148c7565b600082840290508284828161486b57fe5b04146148c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614aef6021913960400191505060405180910390fd5b809150505b92915050565b6000808211614944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b600082848161494f57fe5b0490508091505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614614a01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180614ac0602f913960400191505060405180910390fd5b56fe50726576696f7573207265776172647320706572696f64206d75737420626520636f6d706c657465206265666f7265206368616e67696e6720746865206475726174696f6e20666f7220746865206e657720706572696f64596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e6572736869706f6e455243373231526563656976656428616464726573732c616464726573732c75696e743235362c6279746573294f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775468697320616374696f6e2063616e6e6f7420626520706572666f726d6564207768696c652074686520636f6e74726163742069732070617573656443616c6c6572206973206e6f742052657761726473446973747269627574696f6e20636f6e7472616374a265627a7a72315820e73edb4e27e0c15506700ea02b5f96686fdcdb97ae7ad791d0b98366e6f467c964736f6c634300051000320000000000000000000000002b3183a99a88a119a6cc30b4ff7e68f3b413d03b0000000000000000000000002b3183a99a88a119a6cc30b4ff7e68f3b413d03b000000000000000000000000b7c525370ac08e8e37656d0b3fe568ae5c72746c000000000000000000000000bff56b1359554520995beb960235bd2817f1273c0000000000000000000000005535fe2ef0063c2c551a95d517ad7d9f4513be8a0000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000c56a7f5e94b119fd64c093285a5cd6beba9db4f