60806040526000600360146101000a81548160ff0219169083151502179055506000600455734dd013b9e784c459fe5f82aa926534506ce25eaf600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506305f5e100600655601260ff16600a0a600755606460085573f880d3c6dcda42a7b2f6640703c5748557865b35600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60146101000a81548161ffff021916908361ffff160217905550675b8d408c2f408000600f556683185ac03640006010556200016662000146600654601054620002f96401000000000262003275179091906401000000009004565b600f54620002f96401000000000262003275179091906401000000009004565b6011556000601260006101000a81548160ff0219169083151502179055506000601260016101000a81548160ff021916908315150217905550610b28601260026101000a81548161ffff021916908361ffff1602179055506000601260046101000a81548160ff021916908315150217905550348015620001e657600080fd5b5033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060018190555030600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000310565b600081838115156200030757fe5b04905092915050565b61402a80620003206000396000f300608060405260043610610272576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305d2035b1461027757806306fdde03146102a657806307989d5a14610336578063095ea7b31461038d57806312b27e3e146103f257806314bd63e61461042157806318160ddd146104785780631ef3755d146104a35780631f68f20a146104ba57806323b872dd146104e5578063254a46f41461056a578063313ce5671461059557806333a95d18146105c6578063382d4fc5146106095780633c4cd4b31461066057806340c10f19146106b157806342966c68146107165780634ae8ef06146107435780635338b3e4146107745780636140ca781461079f57806366188463146107ce5780636b8c926f1461083357806370a082311461088a578063715018a6146108e15780637159db81146108f8578063753868e31461092b578063790b855a146109425780637d64bcb41461096d5780637f99e11a1461099c5780638da5cb5b146109cb5780638f28397014610a225780639284280214610a6557806394b918de14610aa857806395d89b4114610ad5578063a30872db14610b65578063a9059cbb14610bbc578063ab27be2014610c21578063ba93d98014610c6e578063bc77edc214610c9d578063c4c39ba714610cf8578063d1b39ae514610d23578063d555654414610d4e578063d679677a14610d79578063d73dd62314610dac578063d98e299714610e11578063dd62ed3e14610e5e578063e05f64c714610ed5578063e733169614610f42578063efebc72014610f99578063f2fde38b14610fc4578063f851a44014611007578063f9f8bdb71461105e575b600080fd5b34801561028357600080fd5b5061028c611089565b604051808215151515815260200191505060405180910390f35b3480156102b257600080fd5b506102bb61109c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102fb5780820151818401526020810190506102e0565b50505050905090810190601f1680156103285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034257600080fd5b50610377600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d5565b6040518082815260200191505060405180910390f35b34801561039957600080fd5b506103d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110ed565b604051808215151515815260200191505060405180910390f35b3480156103fe57600080fd5b506104076111df565b604051808215151515815260200191505060405180910390f35b34801561042d57600080fd5b50610462600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111f2565b6040518082815260200191505060405180910390f35b34801561048457600080fd5b5061048d61120a565b6040518082815260200191505060405180910390f35b3480156104af57600080fd5b506104b8611214565b005b3480156104c657600080fd5b506104cf6114f3565b6040518082815260200191505060405180910390f35b3480156104f157600080fd5b50610550600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114f9565b604051808215151515815260200191505060405180910390f35b34801561057657600080fd5b5061057f6118b4565b6040518082815260200191505060405180910390f35b3480156105a157600080fd5b506105aa6118ba565b604051808260ff1660ff16815260200191505060405180910390f35b3480156105d257600080fd5b50610607600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118bf565b005b34801561061557600080fd5b5061061e61197b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561066c57600080fd5b506106af600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803561ffff1690602001909291905050506119a1565b005b3480156106bd57600080fd5b506106fc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bb4565b604051808215151515815260200191505060405180910390f35b34801561072257600080fd5b5061074160048036038101908080359060200190929190505050611d9a565b005b34801561074f57600080fd5b50610772600480360381019080803561ffff169060200190929190505050611da7565b005b34801561078057600080fd5b50610789611e3e565b6040518082815260200191505060405180910390f35b3480156107ab57600080fd5b506107cc600480360381019080803515159060200190929190505050611e44565b005b3480156107da57600080fd5b50610819600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ebd565b604051808215151515815260200191505060405180910390f35b34801561083f57600080fd5b50610874600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061214f565b6040518082815260200191505060405180910390f35b34801561089657600080fd5b506108cb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612167565b6040518082815260200191505060405180910390f35b3480156108ed57600080fd5b506108f66121af565b005b34801561090457600080fd5b5061090d6122b4565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561093757600080fd5b506109406122c8565b005b34801561094e57600080fd5b50610957612383565b6040518082815260200191505060405180910390f35b34801561097957600080fd5b50610982612389565b604051808215151515815260200191505060405180910390f35b3480156109a857600080fd5b506109b1612451565b604051808215151515815260200191505060405180910390f35b3480156109d757600080fd5b506109e0612464565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a2e57600080fd5b50610a63600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061248a565b005b348015610a7157600080fd5b50610aa6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061252a565b005b348015610ab457600080fd5b50610ad3600480360381019080803590602001909291905050506125ca565b005b348015610ae157600080fd5b50610aea612718565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b2a578082015181840152602081019050610b0f565b50505050905090810190601f168015610b575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b7157600080fd5b50610b7a612751565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bc857600080fd5b50610c07600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612777565b604051808215151515815260200191505060405180910390f35b348015610c2d57600080fd5b50610c6c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612997565b005b348015610c7a57600080fd5b50610c83612a92565b604051808215151515815260200191505060405180910390f35b348015610ca957600080fd5b50610cf6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803561ffff169060200190929190505050612aa5565b005b348015610d0457600080fd5b50610d0d612c39565b6040518082815260200191505060405180910390f35b348015610d2f57600080fd5b50610d38612c4a565b6040518082815260200191505060405180910390f35b348015610d5a57600080fd5b50610d63612c50565b6040518082815260200191505060405180910390f35b348015610d8557600080fd5b50610d8e612c56565b604051808261ffff1661ffff16815260200191505060405180910390f35b348015610db857600080fd5b50610df7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c6a565b604051808215151515815260200191505060405180910390f35b348015610e1d57600080fd5b50610e5c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612e66565b005b348015610e6a57600080fd5b50610ebf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130f0565b6040518082815260200191505060405180910390f35b348015610ee157600080fd5b50610f0060048036038101908080359060200190929190505050613177565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610f4e57600080fd5b50610f576131b5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610fa557600080fd5b50610fae6131db565b6040518082815260200191505060405180910390f35b348015610fd057600080fd5b50611005600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506131e1565b005b34801561101357600080fd5b5061101c613249565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561106a57600080fd5b5061107361326f565b6040518082815260200191505060405180910390f35b600360149054906101000a900460ff1681565b6040805190810160405280600e81526020017f467574657265756d20425443203100000000000000000000000000000000000081525081565b60146020528060005260406000206000915090505481565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b601260019054906101000a900460ff1681565b600a6020528060005260406000206000915090505481565b6000600154905090565b6000806000601260049054906101000a900460ff16151561123457600080fd5b60135442118061124657506000600454145b151561125157600080fd5b60006004819055506000601260046101000a81548160ff02191690831515021790555060006013819055506001601260006101000a81548160ff021916908315150217905550600092505b600b805490508361ffff16101561143357600b8361ffff168154811015156112c057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561138857600080fd5b505af115801561139c573d6000803e3d6000fd5b505050506040513d60208110156113b257600080fd5b81019080805190602001909291905050509050611425600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166113ff60058461327590919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff1661328b9092919063ffffffff16565b50828060010193505061129c565b6001600e60146101000a81548161ffff021916908361ffff160217905550675b8d408c2f408000600f819055506683185ac036400060108190555061149961148860065460105461327590919063ffffffff16565b600f5461327590919063ffffffff16565b6011819055507f7c21b0680bbd6c26c90041bb7a12b28c6c59067ff32b59fccf5ab16b2a76f0da600e60149054906101000a900461ffff16604051808261ffff1661ffff16815260200191505060405180910390a1505050565b60085481565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561154857600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156115d357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561160f57600080fd5b611660826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116f3826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133b790919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117c482600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60045481565b601281565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561191b57600080fd5b601260019054906101000a900460ff1615151561193757600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119fd57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600b8261ffff16815481101515611a2757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611a7457600080fd5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b6001600b8054905003815481101515611ad057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b8261ffff16815481101515611b0e57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b6001600b8054905003815481101515611b6d57fe5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600b805480919060019003611baf9190613fad565b505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c1257600080fd5b600360149054906101000a900460ff16151515611c2e57600080fd5b611c43826001546133b790919063ffffffff16565b600181905550611c9a826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133b790919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b611da433826133d3565b50565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e0357600080fd5b601260049054906101000a900460ff161515611e1e57600080fd5b80601260026101000a81548161ffff021916908361ffff16021790555050565b60105481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ea057600080fd5b80601260006101000a81548160ff02191690831515021790555050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083101515611fcf576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612063565b611fe2838261339e90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60096020528060005260406000206000915090505481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561220b57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601260029054906101000a900461ffff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561232457600080fd5b601260019054906101000a900460ff16151561233f57600080fd5b6000600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123e757600080fd5b600360149054906101000a900460ff1615151561240357600080fd5b6001600360146101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b601260009054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124e657600080fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561258657600080fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080601260049054906101000a900460ff1680156125eb57506000600454115b15156125f657600080fd5b6004548311156126065760045492505b8260046000828254039250508190555061261f83611d9a565b600091505b600b805490508261ffff16101561271357600b8261ffff1681548110151561264857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612705336126df6007546126d1601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548861358690919063ffffffff16565b61327590919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff1661328b9092919063ffffffff16565b508180600101925050612624565b505050565b6040805190810160405280600581526020017f465554423100000000000000000000000000000000000000000000000000000081525081565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156127c657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561280257600080fd5b612853826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128e6826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133b790919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b601260009054906101000a900460ff1615156129b257600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156129d95750600081115b15156129e457600080fd5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015612a415750601260ff16600a0a6301406f4002600454105b1515612a4c57600080fd5b612a793330838573ffffffffffffffffffffffffffffffffffffffff166135be909392919063ffffffff16565b1515612a8457600080fd5b612a8e828261372c565b5050565b601260049054906101000a900460ff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b0157600080fd5b8273ffffffffffffffffffffffffffffffffffffffff16600b8261ffff16815481101515612b2b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612b7a575061271082105b1515612b8557600080fd5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f872923cd0be004fcfa809f0ac261cfd47842a03ffb0a22a3beb3dcd0fa410a938383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050565b601260ff16600a0a6301406f400281565b60075481565b60065481565b600e60149054906101000a900461ffff1681565b6000612cfb82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133b790919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612ec557600080fd5b6000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148015612f145750600083115b8015612f21575061271083105b1515612f2c57600080fd5b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060009150600090505b600b805490508161ffff161015613011578373ffffffffffffffffffffffffffffffffffffffff16600b8261ffff16815481101515612fb457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156130045760019150613011565b8080600101915050612f79565b81151561307f57600b8490806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b7f1e09227a907110e3a9dc0325bfc6b253af956f5d8c1a9d17c2f147654d1196de8484604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a150505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b8181548110151561318657fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561323d57600080fd5b61324681613c1e565b50565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b6000818381151561328257fe5b04905092915050565b600061329684613d1a565b8373ffffffffffffffffffffffffffffffffffffffff1660405180807f7472616e7366657228616464726573732c75696e743235362900000000000000815250601901905060405180910390207c0100000000000000000000000000000000000000000000000000000000900484846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506000604051808303816000875af192505050151561338d57600080fd5b613395613d2a565b90509392505050565b60008282111515156133ac57fe5b818303905092915050565b600081830190508281101515156133ca57fe5b80905092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561342057600080fd5b613471816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134c88160015461339e90919063ffffffff16565b6001819055508173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008083141561359957600090506135b8565b81830290508183828115156135aa57fe5b041415156135b457fe5b8090505b92915050565b60006135c985613d1a565b8473ffffffffffffffffffffffffffffffffffffffff1660405180807f7472616e7366657246726f6d28616464726573732c616464726573732c75696e81526020017f7432353629000000000000000000000000000000000000000000000000000000815250602501905060405180910390207c010000000000000000000000000000000000000000000000000000000090048585856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506000604051808303816000875af192505050151561371a57600080fd5b613722613d2a565b9050949350505050565b6000806000806000601260019054906101000a900460ff161515613766576001601260016101000a81548160ff0219169083151502179055505b600094506137d06008546137c2600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548961358690919063ffffffff16565b61327590919063ffffffff16565b93506137e660028761327590919063ffffffff16565b92505b6000841115613ad857601054841015156138205760105484039350600f548501945060006010819055506000600f81905550613875565b61384960065461383b8660115461358690919063ffffffff16565b61327590919063ffffffff16565b9150818501945081600f6000828254039250508190555083601060008282540392505081905550600093505b60006010541415613ad357601260029054906101000a900461ffff1661ffff16600e60149054906101000a900461ffff1661ffff16141561398757600454601260ff16600a0a6301406f4002039450600084111561397a57613933600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139256008548761358690919063ffffffff16565b61327590919063ffffffff16565b905061394960028261327590919063ffffffff16565b8303925061397833828973ffffffffffffffffffffffffffffffffffffffff1661328b9092919063ffffffff16565b505b613982613d5b565b613ad8565b600e601481819054906101000a900461ffff168092919060010191906101000a81548161ffff021916908361ffff16021790555050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663576c3de7600e60149054906101000a900461ffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808261ffff1661ffff168152602001915050606060405180830381600087803b158015613a6557600080fd5b505af1158015613a79573d6000803e3d6000fd5b505050506040513d6060811015613a8f57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050600f600060106000601160008691905055859190505584919050555050505b6137e9565b846004600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff166340c10f1933876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613b8b57600080fd5b505af1158015613b9f573d6000803e3d6000fd5b505050506040513d6020811015613bb557600080fd5b810190808051906020019092919050505050613c14600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848973ffffffffffffffffffffffffffffffffffffffff1661328b9092919063ffffffff16565b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515613c5a57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b803b1515613d2757600080fd5b50565b60003d60008114613d425760208114613d4b57600080fd5b60019150613d57565b60206000803e60005191505b5090565b600080600062278d0042016013819055506001601260046101000a81548160ff0219169083151502179055506000601260006101000a81548160ff0219169083151502179055506000601260016101000a81548160ff021916908315150217905550600092505b600b805490508361ffff161015613f6f57600b8361ffff16815481101515613de657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015613eae57600080fd5b505af1158015613ec2573d6000803e3d6000fd5b505050506040513d6020811015613ed857600080fd5b81019080805190602001909291905050509050613f1f613f10600754601260ff16600a0a6301406f400261327590919063ffffffff16565b8261327590919063ffffffff16565b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508280600101935050613dc2565b7f4ebcdc2b14eacac39cf3ffaa28fc33f98e82cb4ce5d3002187b611b4d7a8b3986013546040518082815260200191505060405180910390a1505050565b815481835581811115613fd457818360005260206000209182019101613fd39190613fd9565b5b505050565b613ffb91905b80821115613ff7576000816000905550600101613fdf565b5090565b905600a165627a7a723058204d3849858211e7f42a8158ff5fb60dfac28fd4c1a90b6dd2ae14c1ba9469b5e60029