60806040526000600460146101000a81548160ff0219169083151502179055506000600660006101000a81548160ff0219169083151502179055506001600960006101000a81548160ff0219169083151502179055503480156200006257600080fd5b5060405162004479380380620044798339810180604052810190808051820192919060200180518201929190602001805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505060008060003333600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508c600a90805190602001906200022992919062000a87565b508b600b90805190602001906200024292919062000a87565b5089600c60006101000a81548160ff021916908360ff16021790555087600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008b111562000648576000600a8c811515620003bc57fe5b0614151562000459576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f5f696e697469616c537570706c792068617320746f2062652061206d756c697481526020017f706c65206f66203130000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b620004a060646200048360198e620007456401000000000262003829179091906401000000009004565b620007816401000000000262003861179091906401000000009004565b9250620004e9600a620004cc60028e620007456401000000000262003829179091906401000000009004565b620007816401000000000262003861179091906401000000009004565b91506200050f600a8c620007816401000000000262003861179091906401000000009004565b90506200054e600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168362000798640100000000026401000000009004565b506200058c600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168462000798640100000000026401000000009004565b50620005ca600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168462000798640100000000026401000000009004565b5062000608600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168362000798640100000000026401000000009004565b5062000646601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168262000798640100000000026401000000009004565b505b881515620007325762000669620009a0640100000000026401000000009004565b50600060015411151562000731576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260448152602001807f546f74616c20737570706c7920697320726571756972656420746f206265206181526020017f626f766520302069662074686520746f6b656e206973206e6f74206d696e746181526020017f626c652e0000000000000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b5b5050505050505050505050505062000b36565b6000808314156200075a57600090506200077b565b81830290508183828115156200076c57fe5b041415156200077757fe5b8090505b92915050565b600081838115156200078f57fe5b04905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515620007f757600080fd5b600660009054906101000a900460ff161515156200081457600080fd5b620008398260015462000a6a64010000000002620033d2179091906401000000009004565b600181905550620008a0826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000a6a64010000000002620033d2179091906401000000009004565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515620009ff57600080fd5b600660009054906101000a900460ff1615151562000a1c57600080fd5b6001600660006101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b6000818301905082811015151562000a7e57fe5b80905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000aca57805160ff191683800117855562000afb565b8280016001018555821562000afb579182015b8281111562000afa57825182559160200191906001019062000add565b5b50905062000b0a919062000b0e565b5090565b62000b3391905b8082111562000b2f57600081600090555060010162000b15565b5090565b90565b6139338062000b466000396000f3006080604052600436106101c2576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806302f652a3146101c7578063038bd44c1461021657806305d2035b1461026d57806306fdde031461029c578063095ea7b31461032c578063178261d41461039157806318160ddd146103e857806323b872dd1461041357806329ff4f5314610498578063313ce567146104db57806340c10f191461050c57806345977d03146105715780635de4ccb01461059e5780635f412d4f146105f5578063600440cb1461060c578063661884631461066357806370a08231146106c8578063715018a61461071f5780637d64bcb4146107365780638444b39114610765578063867c28571461079e5780638da5cb5b146107f957806395d89b411461085057806396132521146108e05780639738968c1461090f5780639f81db281461093e578063a9059cbb14610995578063adf403ad146109fa578063bdf1138714610a51578063c752ff6214610aa8578063d1f276d314610ad3578063d73dd62314610b2a578063d7e7088a14610b8f578063dd62ed3e14610bd2578063f2fde38b14610c49578063ffeb7d7514610c8c575b600080fd5b3480156101d357600080fd5b50610214600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610ccf565b005b34801561022257600080fd5b5061022b610e5f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561027957600080fd5b50610282610e85565b604051808215151515815260200191505060405180910390f35b3480156102a857600080fd5b506102b1610e98565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f15780820151818401526020810190506102d6565b50505050905090810190601f16801561031e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033857600080fd5b50610377600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f36565b604051808215151515815260200191505060405180910390f35b34801561039d57600080fd5b506103a6611028565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103f457600080fd5b506103fd61104e565b6040518082815260200191505060405180910390f35b34801561041f57600080fd5b5061047e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110a8565b604051808215151515815260200191505060405180910390f35b3480156104a457600080fd5b506104d9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061120a565b005b3480156104e757600080fd5b506104f0611383565b604051808260ff1660ff16815260200191505060405180910390f35b34801561051857600080fd5b50610557600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611396565b604051808215151515815260200191505060405180910390f35b34801561057d57600080fd5b5061059c6004803603810190808035906020019092919050505061157c565b005b3480156105aa57600080fd5b506105b361190a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060157600080fd5b5061060a611930565b005b34801561061857600080fd5b50610621611a40565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561066f57600080fd5b506106ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a66565b604051808215151515815260200191505060405180910390f35b3480156106d457600080fd5b50610709600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cf8565b6040518082815260200191505060405180910390f35b34801561072b57600080fd5b50610734611d40565b005b34801561074257600080fd5b5061074b611e45565b604051808215151515815260200191505060405180910390f35b34801561077157600080fd5b5061077a611f0d565b6040518082600381111561078a57fe5b60ff16815260200191505060405180910390f35b3480156107aa57600080fd5b506107df600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f8e565b604051808215151515815260200191505060405180910390f35b34801561080557600080fd5b5061080e611fae565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561085c57600080fd5b50610865611fd4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108a557808201518184015260208101905061088a565b50505050905090810190601f1680156108d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108ec57600080fd5b506108f5612072565b604051808215151515815260200191505060405180910390f35b34801561091b57600080fd5b50610924612085565b604051808215151515815260200191505060405180910390f35b34801561094a57600080fd5b506109536120ac565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109a157600080fd5b506109e0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506120d2565b604051808215151515815260200191505060405180910390f35b348015610a0657600080fd5b50610a0f612232565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a5d57600080fd5b50610a66612258565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ab457600080fd5b50610abd61227e565b6040518082815260200191505060405180910390f35b348015610adf57600080fd5b50610ae8612284565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b3657600080fd5b50610b75600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506122aa565b604051808215151515815260200191505060405180910390f35b348015610b9b57600080fd5b50610bd0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124a6565b005b348015610bde57600080fd5b50610c33600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cc9565b6040518082815260200191505060405180910390f35b348015610c5557600080fd5b50610c8a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d50565b005b348015610c9857600080fd5b50610ccd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612db8565b005b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d2b57600080fd5b6000600460149054906101000a900460ff161515811515141515610e03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260448152602001807f4974277320726571756972656420746861742074686520737461746520746f2081526020017f636865636b20616c69676e732077697468207468652072656c6561736564206681526020017f6c61672e0000000000000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900460ff1681565b600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f2e5780601f10610f0357610100808354040283529160200191610f2e565b820191906000526020600020905b815481529060010190602001808311610f1157829003601f168201915b505050505081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006110a36000808073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600154612ffe90919063ffffffff16565b905090565b600083600460149054906101000a900460ff168061110f5750600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15156111f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252607f8152602001807f466f722074686520746f6b656e20746f2062652061626c6520746f207472616e81526020017f736665723a20697427732072657175697265642074686174207468652063726f81526020017f776473616c6520697320696e2072656c65617365642073746174653b206f722081526020017f7468652073656e6465722069732061207472616e73666572206167656e742e0081525060800191505060405180910390fd5b611200858585613017565b9150509392505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561126657600080fd5b6000600460149054906101000a900460ff16151581151514151561133e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260448152602001807f4974277320726571756972656420746861742074686520737461746520746f2081526020017f636865636b20616c69676e732077697468207468652072656c6561736564206681526020017f6c61672e0000000000000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b81600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600c60009054906101000a900460ff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113f457600080fd5b600660009054906101000a900460ff1615151561141057600080fd5b611425826001546133d290919063ffffffff16565b60018190555061147c826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133d290919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000611586611f0d565b905060038081111561159457fe5b8160038111156115a057fe5b14151561163b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f497427732072657175697265642074686174207468652075706772616465207381526020017f746174652069732072656164792e00000000000000000000000000000000000081525060400191505060405180910390fd5b6000821115156116d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f54686520757067726164652076616c756520697320726571756972656420746f81526020017f2062652061626f766520302e000000000000000000000000000000000000000081525060400191505060405180910390fd5b61172a826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ffe90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061178182600154612ffe90919063ffffffff16565b60018190555061179c826008546133d290919063ffffffff16565b600881905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663753e88e533846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561186757600080fd5b505af115801561187b573d6000803e3d6000fd5b50505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f7e5c344a8141a805725cb476f76c6953b842222b967edd1f78ddb6e8b3f397ac846040518082815260200191505060405180910390a35050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a1b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001807f4d6573736167652073656e64657220697320726571756972656420746f20626581526020017f20612072656c65617365206167656e742e00000000000000000000000000000081525060400191505060405180910390fd5b6001600660006101000a81548160ff021916908315150217905550611a3e6133ee565b565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083101515611b78576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c0c565b611b8b8382612ffe90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d9c57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ea357600080fd5b600660009054906101000a900460ff16151515611ebf57600080fd5b6001600660006101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b6000611f17612085565b1515611f265760019050611f8b565b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611f865760029050611f8b565b600390505b90565b60056020528060005260406000206000915054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561206a5780601f1061203f5761010080835404028352916020019161206a565b820191906000526020600020905b81548152906001019060200180831161204d57829003601f168201915b505050505081565b600460149054906101000a900460ff1681565b6000600460149054906101000a900460ff1680156120a757506120a66134f6565b5b905090565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033600460149054906101000a900460ff16806121395750600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b151561221f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252607f8152602001807f466f722074686520746f6b656e20746f2062652061626c6520746f207472616e81526020017f736665723a20697427732072657175697265642074686174207468652063726f81526020017f776473616c6520697320696e2072656c65617365642073746174653b206f722081526020017f7468652073656e6465722069732061207472616e73666572206167656e742e0081525060800191505060405180910390fd5b612229848461350d565b91505092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061233b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133d290919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6124ae612085565b151561256e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260498152602001807f4974277320726571756972656420746f20626520696e2063616e55706772616481526020017f65282920636f6e646974696f6e207768656e2073657474696e6720757067726181526020017f6465206167656e742e000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561265f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260488152602001807f4167656e7420697320726571756972656420746f20626520616e206e6f6e2d6581526020017f6d7074792061646472657373207768656e2073657474696e672075706772616481526020017f65206167656e742e00000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604e8152602001807f4d6573736167652073656e64657220697320726571756972656420746f20626581526020017f2074686520757067726164654d6173746572207768656e2073657474696e672081526020017f75706772616465206167656e742e00000000000000000000000000000000000081525060600191505060405180910390fd5b60038081111561277c57fe5b612784611f0d565b600381111561278f57fe5b14151515612851576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260498152602001807f5570677261646520737461746520697320726571756972656420746f206e6f7481526020017f20626520757067726164696e67207768656e2073657474696e6720757067726181526020017f6465206167656e742e000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561293d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f757067726164654167656e74206f6e6365207365742c2063616e6e6f7420626581526020017f207265736574000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166361d3d7a66040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015612a0457600080fd5b505af1158015612a18573d6000803e3d6000fd5b505050506040513d6020811015612a2e57600080fd5b81019080805190602001909291905050501515612b25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252607e8152602001807f5468652070726f7669646564207570646174654167656e7420636f6e7472616381526020017f7420697320726571756972656420746f20626520636f6d706c69616e7420746f81526020017f2074686520557067726164654167656e7420696e74657266616365206d65746881526020017f6f64207768656e2073657474696e672075706772616465206167656e742e000081525060800191505060405180910390fd5b600154600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b2ba0dd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015612bae57600080fd5b505af1158015612bc2573d6000803e3d6000fd5b505050506040513d6020811015612bd857600080fd5b8101908080519060200190929190505050141515612c41576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260908152602001806138786090913960a00191505060405180910390fd5b7f7845d5aa74cc410e35571258d954f23b82276e160fe8c188fa80566580f279cc600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612dac57600080fd5b612db58161372d565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612ea9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252605d8152602001807f5468652070726f766964656420757067726164654d617374657220697320726581526020017f71756972656420746f2062652061206e6f6e2d656d707479206164647265737381526020017f207768656e2073657474696e672075706772616465206d61737465722e00000081525060600191505060405180910390fd5b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612fba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252605e8152602001807f4d6573736167652073656e64657220697320726571756972656420746f20626581526020017f20746865206f726967696e616c20757067726164654d6173746572207768656e81526020017f2073657474696e6720286e6577292075706772616465206d61737465722e000081525060600191505060405180910390fd5b80600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600082821115151561300c57fe5b818303905092915050565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561306657600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156130f157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561312d57600080fd5b61317e826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ffe90919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613211826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133d290919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132e282600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ffe90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600081830190508281101515156133e557fe5b80905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156134d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001807f4d6573736167652073656e64657220697320726571756972656420746f20626581526020017f20612072656c65617365206167656e742e00000000000000000000000000000081525060400191505060405180910390fd5b6001600460146101000a81548160ff021916908315150217905550565b6000600960009054906101000a900460ff16905090565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561355c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561359857600080fd5b6135e9826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ffe90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061367c826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133d290919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561376957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083141561383c576000905061385b565b818302905081838281151561384d57fe5b0414151561385757fe5b8090505b92915050565b6000818381151561386e57fe5b0490509291505056005468652070726f766964656420757067726164654167656e7420636f6e74726163742773206f726967696e616c537570706c7920697320726571756972656420746f206265206571756976616c656e7420746f206578697374696e6720636f6e7472616374277320746f74616c537570706c795f207768656e2073657474696e672075706772616465206167656e742ea165627a7a72305820da466092365f16b39bcba7524047ec228eb4317d957ca6b505893ebb1f576c0f002900000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000002386f26fc1000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dd4f51e28d88e849c3625e825f2265f3ae69a3cd000000000000000000000000498c6639195e7ded677e970233dd6b8439bc15b50000000000000000000000001595d18e0704c88590c1c84226f7b553909ec7f90000000000000000000000006b84b0ac2c1860573396323e31fd3eaacdd9e661000000000000000000000000111ca2edaf982be2ab7ffb2c49b2cc227119f75600000000000000000000000000000000000000000000000000000000000000084a6f62636861696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034a4f420000000000000000000000000000000000000000000000000000000000