60806040526001600860156101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506040516200390f3803806200390f833981018060405260c08110156200005257600080fd5b8101908080516401000000008111156200006b57600080fd5b828101905060208101848111156200008257600080fd5b8151856001820283011164010000000082111715620000a057600080fd5b50509291906020018051640100000000811115620000bd57600080fd5b82810190506020810184811115620000d457600080fd5b8151856001820283011164010000000082111715620000f257600080fd5b505092919060200180519060200190929190805190602001909291908051906020019092919080519060200190929190505050858585336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38260069080519060200190620001fc929190620008b6565b50816007908051906020019062000215929190620008b6565b5080600860006101000a81548160ff021916908360ff1602179055505050506200024533620002bf60201b60201c565b6000600a60006101000a81548160ff0219169083151502179055506200027281836200032060201b60201c565b82600860016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505062000965565b620002da8160096200047360201b62002c561790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b6200033782826200052960201b62002e1a1760201c565b6200039f6200034c836200068c60201b60201c565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020620006d560201b620028581790919060201c565b620003c9620003b3620007d860201b60201c565b6005620006d560201b620028581790919060201c565b438273ffffffffffffffffffffffffffffffffffffffff167f3c9804bd4ed58a4d26976be3767c732c59125bdbddbe3b8ed0a247b2640b810b62000413856200068c60201b60201c565b6040518082815260200191505060405180910390a3437fd4ef7e49cf313a9bb432e970a127e18e988925c846b38265a3cfa2787fc3b7f16200045a620007d860201b60201c565b6040518082815260200191505060405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620004ae57600080fd5b620004c08282620007e260201b60201c565b15620004cb57600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200056457600080fd5b62000580816003546200087560201b620029481790919060201c565b600381905550620005df81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200087560201b620029481790919060201c565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008260000180549050905060008114806200072b575043836000016200070c6001846200089560201b6200230b1790919060201c565b815481106200071757fe5b906000526020600020906002020160000154105b15620007925782600001604051806040016040528043815260200184815250908060018154018082558091505090600182039060005260206000209060020201600090919290919091506000820151816000015560208201518160010155505050620007d3565b8183600001620007b26001846200089560201b6200230b1790919060201c565b81548110620007bd57fe5b9060005260206000209060020201600101819055505b505050565b6000600354905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200081e57600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000808284019050838110156200088b57600080fd5b8091505092915050565b600082821115620008a557600080fd5b600082840390508091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620008f957805160ff19168380011785556200092a565b828001600101855582156200092a579182015b82811115620009295782518255916020019190600101906200090c565b5b5090506200093991906200093d565b5090565b6200096291905b808211156200095e57600081600090555060010162000944565b5090565b90565b612f9a80620009756000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c80637a53bcfc1161012557806395d89b41116100ad578063a9059cbb1161007c578063a9059cbb14610a8b578063dd62ed3e14610af1578063f2fde38b14610b69578063f740e04514610bad578063fcb343b314610c2657610211565b806395d89b4114610942578063981b24d0146109c5578063a457c2d714610a07578063a5b16b2e14610a6d57610211565b80638456cb59116100f45780638456cb59146108605780638da5cb5b1461086a5780638f32d59b146108b4578063914f5207146108d657806393e59dc1146108f857610211565b80637a53bcfc146107225780637b62ab6c146107f05780637e15144b1461081257806382dc1ec41461081c57610211565b80633f9b250a116101a85780635c975abb116101775780635c975abb146106465780636ef8d66d1461066857806370a0823114610672578063715018a6146106ca57806379cc6790146106d457610211565b80633f9b250a146104a557806342966c681461055a57806346fbf68e146105885780634ee2cd7e146105e457610211565b8063313ce567116101e4578063313ce567146103a357806333bebb77146103c757806339509351146104355780633f4ba83a1461049b57610211565b806306fdde0314610216578063095ea7b31461029957806318160ddd146102ff57806323b872dd1461031d575b600080fd5b61021e610cb7565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561025e578082015181840152602081019050610243565b50505050905090810190601f16801561028b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e5600480360360408110156102af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d59565b604051808215151515815260200191505060405180910390f35b610307610d87565b6040518082815260200191505060405180910390f35b6103896004803603606081101561033357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d91565b604051808215151515815260200191505060405180910390f35b6103ab610dc1565b604051808260ff1660ff16815260200191505060405180910390f35b610433600480360360608110156103dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dd8565b005b6104816004803603604081101561044b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e5e565b604051808215151515815260200191505060405180910390f35b6104a3610e8c565b005b6104d1600480360360208110156104bb57600080fd5b8101908080359060200190929190505050610f37565b6040518084815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561051d578082015181840152602081019050610502565b50505050905090810190601f16801561054a5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b6105866004803603602081101561057057600080fd5b810190808035906020019092919050505061108a565b005b6105ca6004803603602081101561059e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611097565b604051808215151515815260200191505060405180910390f35b610630600480360360408110156105fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110b4565b6040518082815260200191505060405180910390f35b61064e61110f565b604051808215151515815260200191505060405180910390f35b610670611126565b005b6106b46004803603602081101561068857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611131565b6040518082815260200191505060405180910390f35b6106d261117a565b005b610720600480360360408110156106ea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061124a565b005b6107ee6004803603604081101561073857600080fd5b810190808035906020019064010000000081111561075557600080fd5b82018360208201111561076757600080fd5b8035906020019184602083028401116401000000008311171561078957600080fd5b9091929391929390803590602001906401000000008111156107aa57600080fd5b8201836020820111156107bc57600080fd5b803590602001918460208302840111640100000000831117156107de57600080fd5b9091929391929390505050611258565b005b6107f8611343565b604051808215151515815260200191505060405180910390f35b61081a611414565b005b61085e6004803603602081101561083257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114d1565b005b6108686114ef565b005b61087261159b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108bc6115c4565b604051808215151515815260200191505060405180910390f35b6108de61161b565b604051808215151515815260200191505060405180910390f35b61090061162e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61094a611654565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561098a57808201518184015260208101905061096f565b50505050905090810190601f1680156109b75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109f1600480360360208110156109db57600080fd5b81019080803590602001909291905050506116f6565b6040518082815260200191505060405180910390f35b610a5360048036036040811015610a1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611713565b604051808215151515815260200191505060405180910390f35b610a75611741565b6040518082815260200191505060405180910390f35b610ad760048036036040811015610aa157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061174e565b604051808215151515815260200191505060405180910390f35b610b5360048036036040811015610b0757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061177c565b6040518082815260200191505060405180910390f35b610bab60048036036020811015610b7f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611803565b005b610c2460048036036020811015610bc357600080fd5b8101908080359060200190640100000000811115610be057600080fd5b820183602082011115610bf257600080fd5b80359060200191846001830284011164010000000083111715610c1457600080fd5b9091929391929390505050611820565b005b610c2e6119e6565b6040518084815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015610c7a578082015181840152602081019050610c5f565b50505050905090810190601f168015610ca75780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d4f5780601f10610d2457610100808354040283529160200191610d4f565b820191906000526020600020905b815481529060010190602001808311610d3257829003601f168201915b5050505050905090565b6000600a60009054906101000a900460ff1615610d7557600080fd5b610d7f8383611b55565b905092915050565b6000600354905090565b6000600a60009054906101000a900460ff1615610dad57600080fd5b610db8848484611b6c565b90509392505050565b6000600860009054906101000a900460ff16905090565b610de06115c4565b610de957600080fd5b610df4838383611ba2565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fa11ae3f873795da36b88189b71a9310742245b9d6e0bc5c3463bf8fb260281af836040518082815260200191505060405180910390a3505050565b6000600a60009054906101000a900460ff1615610e7a57600080fd5b610e848383611d12565b905092915050565b610e9533611097565b610e9e57600080fd5b600a60009054906101000a900460ff16610eb757600080fd5b6000600a60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600060606000600b805490508410610fb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f696e76616c696420696e6465780000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600b8581548110610fc657fe5b9060005260206000209060020201905080600001548160010186818054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110755780601f1061104a57610100808354040283529160200191611075565b820191906000526020600020905b81548152906001019060200180831161105857829003601f168201915b50505050509150935093509350509193909250565b6110943382611db7565b50565b60006110ad826009611ecf90919063ffffffff16565b9050919050565b600061110782600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611f6190919063ffffffff16565b905092915050565b6000600a60009054906101000a900460ff16905090565b61112f33611fdf565b565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111826115c4565b61118b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6112548282612039565b5050565b8181905084849050146112d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6d69736d617463686564206172726179206c656e67746873000000000000000081525060200191505060405180910390fd5b600084849050905060008090505b8181101561133b5761132d8686838181106112f857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1685858481811061132157fe5b9050602002013561174e565b5080806001019150506112e1565b505050505050565b6000600860159054906101000a900460ff161561140c57600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663914f52076040518163ffffffff1660e01b815260040160206040518083038186803b1580156113c257600080fd5b505afa1580156113d6573d6000803e3d6000fd5b505050506040513d60208110156113ec57600080fd5b81019080805190602001909291905050501561140b5760019050611411565b5b600090505b90565b61141c6115c4565b61142557600080fd5b600860159054906101000a900460ff16611440576001611443565b60005b600860156101000a81548160ff021916908315150217905550600860159054906101000a900460ff16156114a2577f0619aa5871528c196a8bee5d141b8471e0b31151f1c84c2f9330633a829b88cb60405160405180910390a16114cf565b7fefba29f8b62985a2fe3482b460d5bf4e0986196764b5a4a52ee894caa1d9d2cb60405160405180910390a15b565b6114da33611097565b6114e357600080fd5b6114ec816120e0565b50565b6114f833611097565b61150157600080fd5b600a60009054906101000a900460ff161561151b57600080fd5b6001600a60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600860159054906101000a900460ff1681565b600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116ec5780601f106116c1576101008083540402835291602001916116ec565b820191906000526020600020905b8154815290600101906020018083116116cf57829003601f168201915b5050505050905090565b600061170c826005611f6190919063ffffffff16565b9050919050565b6000600a60009054906101000a900460ff161561172f57600080fd5b611739838361213a565b905092915050565b6000600b80549050905090565b6000600a60009054906101000a900460ff161561176a57600080fd5b61177483836121df565b905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61180b6115c4565b61181457600080fd5b61181d81612213565b50565b6118286115c4565b61183157600080fd5b600082829050116118aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420646f63756d656e745572690000000000000000000000000081525060200191505060405180910390fd5b6118b2612d5b565b604051806040016040528042815260200184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152509050600b8190806001815401808255809150509060018203906000526020600020906002020160009091929091909150600082015181600001556020820151816001019080519060200190611961929190612d75565b5050505061197e6001600b8054905061230b90919063ffffffff16565b7f6a8f0ee5a5300087347ba2a68d54d3c5ddb7584a54dcd25e04685a7e9257f56f848460405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a2505050565b60006060600080600b8054905011611a66576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6e6f20646f63756d656e7473206578697374000000000000000000000000000081525060200191505060405180910390fd5b6000611a816001600b8054905061230b90919063ffffffff16565b90506000600b8281548110611a9257fe5b9060005260206000209060020201905080600001548160010183818054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b415780601f10611b1657610100808354040283529160200191611b41565b820191906000526020600020905b815481529060010190602001808311611b2457829003601f168201915b505050505091509450945094505050909192565b6000611b6233848461232b565b6001905092915050565b6000611b76611343565b15611b8e57611b848461248a565b611b8d8361248a565b5b611b998484846125d9565b90509392505050565b611bad83838361268a565b611c06611bb984611131565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061285890919063ffffffff16565b611c5f611c1283611131565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061285890919063ffffffff16565b438373ffffffffffffffffffffffffffffffffffffffff167f3c9804bd4ed58a4d26976be3767c732c59125bdbddbe3b8ed0a247b2640b810b611ca186611131565b6040518082815260200191505060405180910390a3438273ffffffffffffffffffffffffffffffffffffffff167f3c9804bd4ed58a4d26976be3767c732c59125bdbddbe3b8ed0a247b2640b810b611cf885611131565b6040518082815260200191505060405180910390a3505050565b6000611dad3384611da885600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294890919063ffffffff16565b61232b565b6001905092915050565b611dc18282612967565b611e1a611dcd83611131565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061285890919063ffffffff16565b611e35611e25610d87565b600561285890919063ffffffff16565b438273ffffffffffffffffffffffffffffffffffffffff167f3c9804bd4ed58a4d26976be3767c732c59125bdbddbe3b8ed0a247b2640b810b611e7785611131565b6040518082815260200191505060405180910390a3437fd4ef7e49cf313a9bb432e970a127e18e988925c846b38265a3cfa2787fc3b7f1611eb6610d87565b6040518082815260200191505060405180910390a25050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f0a57600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60008083600001805490501480611f98575082600001600081548110611f8357fe5b90600052602060002090600202016000015482105b15611fa65760009050611fd9565b6000611fb28484612abb565b9050836000018181548110611fc357fe5b9060005260206000209060020201600101549150505b92915050565b611ff3816009612bab90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b6120438282611db7565b6120dc82336120d784600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461230b90919063ffffffff16565b61232b565b5050565b6120f4816009612c5690919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b60006121d533846121d085600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461230b90919063ffffffff16565b61232b565b6001905092915050565b60006121e9611343565b15612201576121f73361248a565b6122008361248a565b5b61220b8383612d02565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561224d57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008282111561231a57600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561236557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561239f57600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633af32abf826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561252957600080fd5b505afa15801561253d573d6000803e3d6000fd5b505050506040513d602081101561255357600080fd5b81019080805190602001909291905050506125d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6e6f742077686974656c6973746564000000000000000000000000000000000081525060200191505060405180910390fd5b50565b60006125e6848484611ba2565b61267f843361267a85600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461230b90919063ffffffff16565b61232b565b600190509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126c457600080fd5b61271681600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461230b90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127ab81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294890919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008260000180549050905060008114806128a55750438360000161288760018461230b90919063ffffffff16565b8154811061289157fe5b906000526020600020906002020160000154105b1561290a5782600001604051806040016040528043815260200184815250908060018154018082558091505090600182039060005260206000209060020201600090919290919091506000820151816000015560208201518160010155505050612943565b818360000161292360018461230b90919063ffffffff16565b8154811061292d57fe5b9060005260206000209060020201600101819055505b505050565b60008082840190508381101561295d57600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129a157600080fd5b6129b68160035461230b90919063ffffffff16565b600381905550612a0e81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461230b90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080836000018054905090508284600001612ae160018461230b90919063ffffffff16565b81548110612aeb57fe5b90600052602060002090600202016000015411612b1e57612b1660018261230b90919063ffffffff16565b915050612ba5565b60008090506000612b3960018461230b90919063ffffffff16565b90505b612b5060018261230b90919063ffffffff16565b821015612b9e576000612b638383612d19565b905085876000018281548110612b7557fe5b90600052602060002090600202016000015411612b9457809250612b98565b8091505b50612b3c565b8193505050505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612be557600080fd5b612bef8282611ecf565b612bf857600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c9057600080fd5b612c9a8282611ecf565b15612ca457600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000612d0f338484611ba2565b6001905092915050565b60006002808381612d2657fe5b0660028581612d3157fe5b060181612d3a57fe5b0460028381612d4557fe5b0460028581612d5057fe5b040101905092915050565b604051806040016040528060008152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612db657805160ff1916838001178555612de4565b82800160010185558215612de4579182015b82811115612de3578251825591602001919060010190612dc8565b5b509050612df19190612df5565b5090565b612e1791905b80821115612e13576000816000905550600101612dfb565b5090565b90565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e5457600080fd5b612e698160035461294890919063ffffffff16565b600381905550612ec181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294890919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505056fea165627a7a72305820a2cbccdc05b6b9db80b37eb9b7c1784bddfe3c222d937aaa9866e0b50923d625002900000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009b585642bbe960d5278b0827451416d33be83287000000000000000000000000000000000000000000000000000000000013e1d800000000000000000000000084fc5ac6b70dbc2ed9f9217482df9d3e4e6a375c000000000000000000000000000000000000000000000000000000000000000c4558503230342d546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064558503230340000000000000000000000000000000000000000000000000000