60806040526b09b18ab5df7180b6b8000000600155738614300150dfda50df549084ff941268cbd2dc66600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660146101000a81548160ff0219169083151502179055506000600660156101000a81548160ff0219169083151502179055506040805190810160405280600581526020017f4f4243313900000000000000000000000000000000000000000000000000000081525060079080519060200190620000ec9291906200048b565b506040805190810160405280600581526020017f4f42433139000000000000000000000000000000000000000000000000000000815250600890805190602001906200013a9291906200048b565b5073aee493e7f91d16e8b9a82404fce1e970c73b75ee600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507325b5e6fc8e991ad475cdb26f5ffa93a93dfb38b1600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507355e88688bb1616a9c2cf90201fe5f83b20b22267600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c538673c792ee052536c044d30d3a61939a4062a600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073164ba9a86973b93823974a52ba6e717658791f47600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507325b5e6fc8e991ad475cdb26f5ffa93a93dfb38b1600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d43150f7e7c8903afe89f788dad8cb16a10099bf600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061012c6012556000601355348015620003a657600080fd5b5033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601160146101000a81548160ff0219169083151502179055506200053a565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004ce57805160ff1916838001178555620004ff565b82800160010185558215620004ff579182015b82811115620004fe578251825591602001919060010190620004e1565b5b5090506200050e919062000512565b5090565b6200053791905b808211156200053357600081600090555060010162000519565b5090565b90565b6147c0806200054a6000396000f3fe60806040526004361061031c576000357c01000000000000000000000000000000000000000000000000000000009004806370702d15116101ad578063ae683a2e116100f9578063d73dd623116100b2578063e799dbef1161008c578063e799dbef1461152c578063ec8ac4d814611583578063f2fde38b146115c7578063f6b4dfb4146116185761031c565b8063d73dd623146113dd578063dd62ed3e14611450578063e2396422146114d55761031c565b8063ae683a2e14611282578063b1ed85d8146112d7578063b3413d9f14611326578063cc664a7b14611330578063d292515d1461135b578063d4cb77cb146113865761031c565b806395d89b4111610166578063a6681b4411610140578063a6681b4414611142578063a704f4c014611191578063a9059cbb146111bc578063ad381a071461122f5761031c565b806395d89b4114610fe85780639dc29fac14611078578063a622b0b7146110eb5761031c565b806370702d1514610e2657806370a0823114610e8f5780637a6ce2e114610ef45780637d64bcb414610f4b5780638456cb5914610f7a5780638da5cb5b14610f915761031c565b80633d55ea6c1161026c57806351cff8d9116102255780635c975abb116101ff5780635c975abb14610d0457806361d02c3414610d335780636618846314610d845780636daf99d014610df75761031c565b806351cff8d914610bbc57806353a6003914610c2557806354fd4d5014610c745761031c565b80633d55ea6c146109da5780633f4ba83a14610a3157806340c10f1914610a48578063498a992914610abb5780634e716bce14610b12578063513190e714610b655761031c565b8063184464bf116102d95780631de3ac0f116102b35780631de3ac0f1461071957806323b872dd14610770578063313ce567146108035780633b2ccd5c146108345761031c565b8063184464bf1461064c5780631b1776a6146106775780631b444a8a146106ca5761031c565b806305d2035b1461032757806306fdde0314610356578063095ea7b3146103e65780630f45ef70146104595780630ffd0eb6146105ca57806318160ddd14610621575b6103253361166f565b005b34801561033357600080fd5b5061033c6116fa565b604051808215151515815260200191505060405180910390f35b34801561036257600080fd5b5061036b61170d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103ab578082015181840152602081019050610390565b50505050905090810190601f1680156103d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f257600080fd5b5061043f6004803603604081101561040957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117ab565b604051808215151515815260200191505060405180910390f35b34801561046557600080fd5b506105b06004803603604081101561047c57600080fd5b810190808035906020019064010000000081111561049957600080fd5b8201836020820111156104ab57600080fd5b803590602001918460208302840111640100000000831117156104cd57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561052d57600080fd5b82018360208201111561053f57600080fd5b8035906020019184602083028401116401000000008311171561056157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506117db565b604051808215151515815260200191505060405180910390f35b3480156105d657600080fd5b506105df6118d9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561062d57600080fd5b506106366118ff565b6040518082815260200191505060405180910390f35b34801561065857600080fd5b50610661611909565b6040518082815260200191505060405180910390f35b34801561068357600080fd5b506106b06004803603602081101561069a57600080fd5b810190808035906020019092919050505061190f565b604051808215151515815260200191505060405180910390f35b3480156106d657600080fd5b50610703600480360360208110156106ed57600080fd5b81019080803590602001909291905050506119e4565b6040518082815260200191505060405180910390f35b34801561072557600080fd5b5061072e611a07565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561077c57600080fd5b506107e96004803603606081101561079357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a2d565b604051808215151515815260200191505060405180910390f35b34801561080f57600080fd5b50610818611a5f565b604051808260ff1660ff16815260200191505060405180910390f35b34801561084057600080fd5b506109d8600480360361010081101561085857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561095557600080fd5b82018360208201111561096757600080fd5b8035906020019184602083028401116401000000008311171561098957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611a64565b005b3480156109e657600080fd5b506109ef611f36565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a3d57600080fd5b50610a46611f5c565b005b348015610a5457600080fd5b50610aa160048036036040811015610a6b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061201c565b604051808215151515815260200191505060405180910390f35b348015610ac757600080fd5b50610ad0612215565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b1e57600080fd5b50610b4b60048036036020811015610b3557600080fd5b810190808035906020019092919050505061223b565b604051808215151515815260200191505060405180910390f35b348015610b7157600080fd5b50610b7a612325565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bc857600080fd5b50610c0b60048036036020811015610bdf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061234b565b604051808215151515815260200191505060405180910390f35b348015610c3157600080fd5b50610c5e60048036036020811015610c4857600080fd5b81019080803590602001909291905050506124a4565b6040518082815260200191505060405180910390f35b348015610c8057600080fd5b50610c89612515565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610cc9578082015181840152602081019050610cae565b50505050905090810190601f168015610cf65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610d1057600080fd5b50610d1961254e565b604051808215151515815260200191505060405180910390f35b348015610d3f57600080fd5b50610d8260048036036020811015610d5657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612561565b005b348015610d9057600080fd5b50610ddd60048036036040811015610da757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506126b9565b604051808215151515815260200191505060405180910390f35b348015610e0357600080fd5b50610e0c6126e9565b604051808215151515815260200191505060405180910390f35b348015610e3257600080fd5b50610e7560048036036020811015610e4957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126fc565b604051808215151515815260200191505060405180910390f35b348015610e9b57600080fd5b50610ede60048036036020811015610eb257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612838565b6040518082815260200191505060405180910390f35b348015610f0057600080fd5b50610f09612880565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610f5757600080fd5b50610f60612888565b604051808215151515815260200191505060405180910390f35b348015610f8657600080fd5b50610f8f612950565b005b348015610f9d57600080fd5b50610fa6612a11565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ff457600080fd5b50610ffd612a37565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561103d578082015181840152602081019050611022565b50505050905090810190601f16801561106a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561108457600080fd5b506110d16004803603604081101561109b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612ad5565b604051808215151515815260200191505060405180910390f35b3480156110f757600080fd5b50611100612b9f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561114e57600080fd5b5061117b6004803603602081101561116557600080fd5b8101908080359060200190929190505050612bc5565b6040518082815260200191505060405180910390f35b34801561119d57600080fd5b506111a6612be8565b6040518082815260200191505060405180910390f35b3480156111c857600080fd5b50611215600480360360408110156111df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612bee565b604051808215151515815260200191505060405180910390f35b34801561123b57600080fd5b506112686004803603602081101561125257600080fd5b8101908080359060200190929190505050612c1e565b604051808215151515815260200191505060405180910390f35b34801561128e57600080fd5b506112bd600480360360208110156112a557600080fd5b81019080803515159060200190929190505050612cf3565b604051808215151515815260200191505060405180910390f35b3480156112e357600080fd5b50611310600480360360208110156112fa57600080fd5b8101908080359060200190929190505050612dcc565b6040518082815260200191505060405180910390f35b61132e612def565b005b34801561133c57600080fd5b50611345613369565b6040518082815260200191505060405180910390f35b34801561136757600080fd5b50611370613373565b6040518082815260200191505060405180910390f35b34801561139257600080fd5b5061139b61337d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156113e957600080fd5b506114366004803603604081101561140057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506133a3565b604051808215151515815260200191505060405180910390f35b34801561145c57600080fd5b506114bf6004803603604081101561147357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506133d3565b6040518082815260200191505060405180910390f35b3480156114e157600080fd5b506114ea61345a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561153857600080fd5b50611541613480565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6115c56004803603602081101561159957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061166f565b005b3480156115d357600080fd5b50611616600480360360208110156115ea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134a6565b005b34801561162457600080fd5b5061162d6135fe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600034905061167e8282613606565b6116888282613656565b50611691612def565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fbc9b717e64d37facf9bd4eaf188a144bd2c53b675ca7ec8b445af85586d3e382836040518082815260200191505060405180910390a35050565b600660149054906101000a900460ff1681565b60078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b505050505081565b6000600660159054906101000a900460ff161515156117c957600080fd5b6117d38383613947565b905092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806118865750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561189157600080fd5b815183511415156118a157600080fd5b82601490805190602001906118b79291906146cd565b5081601590805190602001906118ce92919061471a565b506001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600154905090565b60125481565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806119ba5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156119c557600080fd5b6000821115156119d457600080fd5b8160138190555060019050919050565b6010818154811015156119f357fe5b906000526020600020016000915090505481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660159054906101000a900460ff16151515611a4b57600080fd5b611a56848484613a39565b90509392505050565b601281565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611b0d5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611b1857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614151515611b5457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614151515611b9057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614151515611bcc57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614151515611c0857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515611c4457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611c8057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611cbc57600080fd5b600080905060008090505b8251811015611d3c5760008382815181101515611ce057fe5b9060200190602002015163ffffffff1610151515611cfd57600080fd5b611d2d8382815181101515611d0e57fe5b9060200190602002015163ffffffff1683613df390919063ffffffff16565b91508080600101915050611cc7565b506103e881141515611d4d57600080fd5b88600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160109080519060200190611f2a92919061471a565b50505050505050505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611fb857600080fd5b600660159054906101000a900460ff161515611fd357600080fd5b6000600660156101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561207a57600080fd5b600660149054906101000a900460ff1615151561209657600080fd5b6120ab82600254613df390919063ffffffff16565b600281905550600154600254111515156120c457600080fd5b612115826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613df390919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806122e65750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156122f157600080fd5b6000821015151561230157600080fd5b61231682600154613df390919063ffffffff16565b60018190555060019050919050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806123f65750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561240157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561243d57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015801561249a573d6000803e3d6000fd5b5060019050919050565b600080600090505b601480549050811015612509576014818154811015156124c857fe5b90600052602060002001548310156124fc576015818154811015156124e957fe5b9060005260206000200154915050612510565b80806001019150506124ac565b5060135490505b919050565b6040805190810160405280600381526020017f312e30000000000000000000000000000000000000000000000000000000000081525081565b600660159054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156125bd57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156125f957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660159054906101000a900460ff161515156126d757600080fd5b6126e18383613e11565b905092915050565b601160149054906101000a900460ff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806127a75750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156127b257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156127ee57600080fd5b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600033905090565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128e657600080fd5b600660149054906101000a900460ff1615151561290257600080fd5b6001600660146101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129ac57600080fd5b600660159054906101000a900460ff161515156129c857600080fd5b6001600660156101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60088054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612acd5780601f10612aa257610100808354040283529160200191612acd565b820191906000526020600020905b815481529060010190602001808311612ab057829003601f168201915b505050505081565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612b805750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612b8b57600080fd5b612b9583836140a2565b6001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601481815481101515612bd457fe5b906000526020600020016000915090505481565b60135481565b6000600660159054906101000a900460ff16151515612c0c57600080fd5b612c168383614243565b905092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612cc95750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612cd457600080fd5b600082111515612ce357600080fd5b8160128190555060019050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612d9e5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612da957600080fd5b81601160146101000a81548160ff02191690831515021790555060019050919050565b601581815481101515612ddb57fe5b906000526020600020016000915090505481565b600034905060006103e89050600080905060011515601160149054906101000a900460ff161515141561332d576000612e5d83612e4f60106000815481101515612e3557fe5b90600052602060002001548761446290919063ffffffff16565b61449d90919063ffffffff16565b9050612e728183613df390919063ffffffff16565b9150600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612edc573d6000803e3d6000fd5b50612f1c83612f0e60106001815481101515612ef457fe5b90600052602060002001548761446290919063ffffffff16565b61449d90919063ffffffff16565b9050612f318183613df390919063ffffffff16565b9150600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612f9b573d6000803e3d6000fd5b50612fdb83612fcd60106002815481101515612fb357fe5b90600052602060002001548761446290919063ffffffff16565b61449d90919063ffffffff16565b9050612ff08183613df390919063ffffffff16565b9150600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561305a573d6000803e3d6000fd5b5061309a8361308c6010600381548110151561307257fe5b90600052602060002001548761446290919063ffffffff16565b61449d90919063ffffffff16565b90506130af8183613df390919063ffffffff16565b9150600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613119573d6000803e3d6000fd5b506131598361314b6010600481548110151561313157fe5b90600052602060002001548761446290919063ffffffff16565b61449d90919063ffffffff16565b905061316e8183613df390919063ffffffff16565b9150600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156131d8573d6000803e3d6000fd5b506132188361320a601060058154811015156131f057fe5b90600052602060002001548761446290919063ffffffff16565b61449d90919063ffffffff16565b905061322d8183613df390919063ffffffff16565b9150600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613297573d6000803e3d6000fd5b506132ab82856144b890919063ffffffff16565b90506132c08183613df390919063ffffffff16565b9150600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561332a573d6000803e3d6000fd5b50505b7fbf325e6339adaf7bc6f552f10a93c83f66a785ca47d0ceab0dc79fef18d6b998836040518082815260200191505060405180910390a1505050565b6000601254905090565b6000600254905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660159054906101000a900460ff161515156133c157600080fd5b6133cb83836144d1565b905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561350257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561353e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600030905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561364257600080fd5b6000811415151561365257600080fd5b5050565b6000600660159054906101000a900460ff1615151561367457600080fd5b600060125490506000613690828561446290919063ffffffff16565b9050600061369d856124a4565b90506136d86136c96103e86136bb848661446290919063ffffffff16565b61449d90919063ffffffff16565b83613df390919063ffffffff16565b915084600080601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561374957600080fd5b61379a826000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613df390919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061384f82600080601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144b890919063ffffffff16565b600080601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001935050505092915050565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515613a7657600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515613ac357600080fd5b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515613b4e57600080fd5b613b9f826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144b890919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c32826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613df390919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d0382600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144b890919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000808284019050838110151515613e0757fe5b8091505092915050565b600080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115613f22576000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fb6565b613f3583826144b890919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156140de57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561412b57600080fd5b614140816001546144b890919063ffffffff16565b600181905550614197816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144b890919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561428057600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156142cd57600080fd5b61431e826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144b890919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506143b1826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613df390919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000808314156144755760009050614497565b6000828402905082848281151561448857fe5b0414151561449257fe5b809150505b92915050565b60008082848115156144ab57fe5b0490508091505092915050565b60008282111515156144c657fe5b818303905092915050565b600061456282600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613df390919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b828054828255906000526020600020908101928215614709579160200282015b828111156147085782518255916020019190600101906146ed565b5b509050614716919061476f565b5090565b82805482825590600052602060002090810192821561475e579160200282015b8281111561475d578251829063ffffffff1690559160200191906001019061473a565b5b50905061476b919061476f565b5090565b61479191905b8082111561478d576000816000905550600101614775565b5090565b9056fea165627a7a723058206d0f9200377a0b81d369161ced88706359733da8022cf6863dabaf846fce3b960029