60806040523480156200001157600080fd5b50604051806060016040528060268152602001620040e560269139620000446301ffc9a760e01b620000b060201b60201c565b6200005581620001b960201b60201c565b6200006d63d9b67a2660e01b620000b060201b60201c565b62000085630e89341c60e01b620000b060201b60201c565b50620000aa6000801b6200009e620001d560201b60201c565b620001dd60201b60201c565b6200041b565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156200014d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b8060039080519060200190620001d19291906200036c565b5050565b600033905090565b620001ef8282620001f360201b60201c565b5050565b6200022281600460008581526020019081526020016000206000016200029760201b620036f71790919060201c565b15620002935762000238620001d560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000620002c7836000018373ffffffffffffffffffffffffffffffffffffffff1660001b620002cf60201b60201c565b905092915050565b6000620002e383836200034960201b60201c565b6200033e57826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905062000343565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003af57805160ff1916838001178555620003e0565b82800160010185558215620003e0579182015b82811115620003df578251825591602001919060010190620003c2565b5b509050620003ef9190620003f3565b5090565b6200041891905b8082111562000414576000816000905550600101620003fa565b5090565b90565b613cba806200042b6000396000f3fe608060405234801561001057600080fd5b50600436106101725760003560e01c806392ff6aea116100de578063ca15c87311610097578063e8a3d48511610071578063e8a3d48514610b5a578063e985e9c514610bdd578063f242432a14610c59578063f9e5375514610d6857610172565b8063ca15c87314610aac578063d539139314610aee578063d547741f14610b0c57610172565b806392ff6aea146108db578063a217fddf1461091d578063a22cb4651461093b578063b390c0ab1461098b578063bd85b039146109c3578063c87b56dd14610a0557610172565b80632f2ff15d116101305780632f2ff15d146105a257806336568abe146105f05780634e1273f41461063e57806358a4903f146107df5780639010d07c146107fd57806391d148541461087557610172565b8062fdd58e1461017757806301ffc9a7146101d95780630e89341c1461023e578063156e29f6146102e5578063248a9ca31461033d5780632eb2c2d61461037f575b600080fd5b6101c36004803603604081101561018d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610daa565b6040518082815260200191505060405180910390f35b610224600480360360208110156101ef57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610e8a565b604051808215151515815260200191505060405180910390f35b61026a6004803603602081101561025457600080fd5b8101908080359060200190929190505050610ef1565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102aa57808201518184015260208101905061028f565b50505050905090810190601f1680156102d75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61033b600480360360608110156102fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610fa6565b005b6103696004803603602081101561035357600080fd5b8101908080359060200190929190505050611169565b6040518082815260200191505060405180910390f35b6105a0600480360360a081101561039557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156103f257600080fd5b82018360208201111561040457600080fd5b8035906020019184602083028401116401000000008311171561042657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561048657600080fd5b82018360208201111561049857600080fd5b803590602001918460208302840111640100000000831117156104ba57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561051a57600080fd5b82018360208201111561052c57600080fd5b8035906020019184600183028401116401000000008311171561054e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611189565b005b6105ee600480360360408110156105b857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611617565b005b61063c6004803603604081101561060657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116a1565b005b6107886004803603604081101561065457600080fd5b810190808035906020019064010000000081111561067157600080fd5b82018360208201111561068357600080fd5b803590602001918460208302840111640100000000831117156106a557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561070557600080fd5b82018360208201111561071757600080fd5b8035906020019184602083028401116401000000008311171561073957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929050505061173a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156107cb5780820151818401526020810190506107b0565b505050509050019250505060405180910390f35b6107e7611918565b6040518082815260200191505060405180910390f35b6108336004803603604081101561081357600080fd5b81019080803590602001909291908035906020019092919050505061191e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108c16004803603604081101561088b57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611950565b604051808215151515815260200191505060405180910390f35b610907600480360360208110156108f157600080fd5b8101908080359060200190929190505050611982565b6040518082815260200191505060405180910390f35b61092561199a565b6040518082815260200191505060405180910390f35b6109896004803603604081101561095157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506119a1565b005b6109c1600480360360408110156109a157600080fd5b810190808035906020019092919080359060200190929190505050611b3c565b005b6109ef600480360360208110156109d957600080fd5b8101908080359060200190929190505050611b52565b6040518082815260200191505060405180910390f35b610a3160048036036020811015610a1b57600080fd5b8101908080359060200190929190505050611b6a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a71578082015181840152602081019050610a56565b50505050905090810190601f168015610a9e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610ad860048036036020811015610ac257600080fd5b8101908080359060200190929190505050611c1f565b6040518082815260200191505060405180910390f35b610af6611c46565b6040518082815260200191505060405180910390f35b610b5860048036036040811015610b2257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c7f565b005b610b62611d09565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ba2578082015181840152602081019050610b87565b50505050905090810190601f168015610bcf5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610c3f60048036036040811015610bf357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d29565b604051808215151515815260200191505060405180910390f35b610d66600480360360a0811015610c6f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190640100000000811115610ce057600080fd5b820183602082011115610cf257600080fd5b80359060200191846001830284011164010000000083111715610d1457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611dc2565b005b610d9460048036036020811015610d7e57600080fd5b8101908080359060200190929190505050612137565b6040518082815260200191505060405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613a3e602b913960400191505060405180910390fd5b6001600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6060610f9f60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f8c5780601f10610f6157610100808354040283529160200191610f8c565b820191906000526020600020905b815481529060010190602001808311610f6f57829003601f168201915b5050505050610f9a846122e8565b612415565b9050919050565b610fec60405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020610fe7612459565b611950565b61105e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f43616c6c6572206973206e6f742061206d696e7465720000000000000000000081525060200191505060405180910390fd5b600660008381526020019081526020016000205461109882600760008681526020019081526020016000205461246190919063ffffffff16565b111561110c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f546f74616c20737570706c7920726561636865642e000000000000000000000081525060200191505060405180910390fd5b61113281600760008581526020019081526020016000205461246190919063ffffffff16565b6007600084815260200190815260200160002081905550611164838383604051806020016040528060008152506124e9565b505050565b600060046000838152602001908152602001600020600201549050919050565b81518351146111e3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613c0d6028913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611269576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613b176025913960400191505060405180910390fd5b611271612459565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806112b757506112b6856112b1612459565b611d29565b5b61130c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180613b3c6032913960400191505060405180910390fd5b6000611316612459565b90506113268187878787876126ec565b60008090505b84518110156114fa57600085828151811061134357fe5b60200260200101519050600085838151811061135b57fe5b602002602001015190506113e2816040518060600160405280602a8152602001613b91602a91396001600086815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f49092919063ffffffff16565b6001600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611499816001600085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246190919063ffffffff16565b6001600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505080600101905061132c565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156115aa57808201518184015260208101905061158f565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156115ec5780820151818401526020810190506115d1565b5050505090500194505050505060405180910390a461160f8187878787876127b4565b505050505050565b61163e6004600084815260200190815260200160002060020154611639612459565b611950565b611693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806139e5602f913960400191505060405180910390fd5b61169d8282612c2c565b5050565b6116a9612459565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461172c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613c56602f913960400191505060405180910390fd5b6117368282612cc0565b5050565b60608151835114611796576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613be46029913960400191505060405180910390fd5b606083516040519080825280602002602001820160405280156117c85781602001602082028038833980820191505090505b50905060008090505b845181101561190d57600073ffffffffffffffffffffffffffffffffffffffff168582815181106117fe57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415611873576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613a696031913960400191505060405180910390fd5b6001600085838151811061188357fe5b6020026020010151815260200190815260200160002060008683815181106118a757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548282815181106118f657fe5b6020026020010181815250508060010190506117d1565b508091505092915050565b60055481565b60006119488260046000868152602001908152602001600020600001612d5490919063ffffffff16565b905092915050565b600061197a8260046000868152602001908152602001600020600001612d6e90919063ffffffff16565b905092915050565b60076020528060005260406000206000915090505481565b6000801b81565b8173ffffffffffffffffffffffffffffffffffffffff166119c0612459565b73ffffffffffffffffffffffffffffffffffffffff161415611a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613bbb6029913960400191505060405180910390fd5b8060026000611a3a612459565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611ae7612459565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b611b4e611b47612459565b8383612d9e565b5050565b60066020528060005260406000206000915090505481565b6060611c1860038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c055780601f10611bda57610100808354040283529160200191611c05565b820191906000526020600020905b815481529060010190602001808311611be857829003601f168201915b5050505050611c13846122e8565b612415565b9050919050565b6000611c3f60046000848152602001908152602001600020600001612fba565b9050919050565b60405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b611ca66004600084815260200190815260200160002060020154611ca1612459565b611950565b611cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180613ae76030913960400191505060405180910390fd5b611d058282612cc0565b5050565b60606040518060600160405280602a8152602001613a14602a9139905090565b600080839050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611e48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613b176025913960400191505060405180910390fd5b611e50612459565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611e965750611e9585611e90612459565b611d29565b5b611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613abe6029913960400191505060405180910390fd5b6000611ef5612459565b9050611f15818787611f0688612fcf565b611f0f88612fcf565b876126ec565b611f92836040518060600160405280602a8152602001613b91602a91396001600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f49092919063ffffffff16565b6001600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612049836001600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246190919063ffffffff16565b6001600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a461212f818787878787613028565b505050505050565b600061217f60405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902061217a612459565b611950565b6121f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f43616c6c6572206973206e6f742061206d696e7465720000000000000000000081525060200191505060405180910390fd5b60008211612267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4d6178696d756d20737570706c792063616e206e6f742062652030000000000081525060200191505060405180910390fd5b61227d600160055461246190919063ffffffff16565b60058190555081600660006005548152602001908152602001600020819055507f62399d91d89d6e694d41e47f3e6010c0e0b4ec78ecdddb1c02d0e321780859b060055483604051808381526020018281526020019250505060405180910390a16005549050919050565b60606000821415612330576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612410565b600082905060005b6000821461235a578080600101915050600a828161235257fe5b049150612338565b6060816040519080825280601f01601f19166020018201604052801561238f5781602001600182028038833980820191505090505b50905060006001830390505b6000861461240857600a86816123ad57fe5b0660300160f81b828280600190039350815181106123c757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a868161240057fe5b04955061239b565b819450505050505b919050565b6060612451838360405180602001604052806000815250604051806020016040528060008152506040518060200160405280600081525061341e565b905092915050565b600033905090565b6000808284019050838110156124df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561256f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613c356021913960400191505060405180910390fd5b6000612579612459565b905061259a8160008761258b88612fcf565b61259488612fcf565b876126ec565b6125fd836001600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246190919063ffffffff16565b6001600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a46126e581600087878787613028565b5050505050565b505050505050565b60008383111582906127a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561276657808201518184015260208101905061274b565b50505050905090810190601f1680156127935780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6127d38473ffffffffffffffffffffffffffffffffffffffff166136e4565b15612c24578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156128b757808201518184015260208101905061289c565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156128f95780820151818401526020810190506128de565b50505050905001848103825285818151815260200191508051906020019080838360005b8381101561293857808201518184015260208101905061291d565b50505050905090810190601f1680156129655780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561298a57600080fd5b505af19250505080156129be57506040513d60208110156129aa57600080fd5b810190808051906020019092919050505060015b612b85576000604051905060008152600115612a875760443d10156129e65760009050612a87565b60046000803e60005160e01c6308c379a08114612a07576000915050612a87565b60043d036004833e81513d602482011167ffffffffffffffff82111715612a3357600092505050612a87565b808301805167ffffffffffffffff811115612a55576000945050505050612a87565b8060208301013d8601811115612a7357600095505050505050612a87565b601f19601f82011660405282955050505050505b80612a925750612b34565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612af9578082015181840152602081019050612ade565b50505050905090810190601f168015612b265780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806139676034913960400191505060405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612c22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806139bd6028913960400191505060405180910390fd5b505b505050505050565b612c5481600460008581526020019081526020016000206000016136f790919063ffffffff16565b15612cbc57612c61612459565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b612ce8816004600085815260200190815260200160002060000161372790919063ffffffff16565b15612d5057612cf5612459565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000612d638360000183613757565b60001c905092915050565b6000612d96836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6137da565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613b6e6023913960400191505060405180910390fd5b6000612e2e612459565b9050612e5e81856000612e4087612fcf565b612e4987612fcf565b604051806020016040528060008152506126ec565b612edb82604051806060016040528060248152602001613a9a602491396001600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f49092919063ffffffff16565b6001600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051808381526020018281526020019250505060405180910390a450505050565b6000612fc8826000016137fd565b9050919050565b60608060016040519080825280602002602001820160405280156130025781602001602082028038833980820191505090505b509050828160008151811061301357fe5b60200260200101818152505080915050919050565b6130478473ffffffffffffffffffffffffffffffffffffffff166136e4565b15613416578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561312c578082015181840152602081019050613111565b50505050905090810190601f1680156131595780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561317c57600080fd5b505af19250505080156131b057506040513d602081101561319c57600080fd5b810190808051906020019092919050505060015b6133775760006040519050600081526001156132795760443d10156131d85760009050613279565b60046000803e60005160e01c6308c379a081146131f9576000915050613279565b60043d036004833e81513d602482011167ffffffffffffffff8211171561322557600092505050613279565b808301805167ffffffffffffffff811115613247576000945050505050613279565b8060208301013d860181111561326557600095505050505050613279565b601f19601f82011660405282955050505050505b806132845750613326565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156132eb5780820151818401526020810190506132d0565b50505050905090810190601f1680156133185780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806139676034913960400191505060405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614613414576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806139bd6028913960400191505060405180910390fd5b505b505050505050565b6060808690506060869050606086905060608690506060869050606081518351855187518951010101016040519080825280601f01601f19166020018201604052801561347a5781602001600182028038833980820191505090505b5090506060819050600080905060008090505b88518110156134fb578881815181106134a257fe5b602001015160f81c60f81b8383806001019450815181106134bf57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061348d565b5060008090505b87518110156135705787818151811061351757fe5b602001015160f81c60f81b83838060010194508151811061353457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050613502565b5060008090505b86518110156135e55786818151811061358c57fe5b602001015160f81c60f81b8383806001019450815181106135a957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050613577565b5060008090505b855181101561365a5785818151811061360157fe5b602001015160f81c60f81b83838060010194508151811061361e57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506135ec565b5060008090505b84518110156136cf5784818151811061367657fe5b602001015160f81c60f81b83838060010194508151811061369357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050613661565b50819850505050505050505095945050505050565b600080823b905060008111915050919050565b600061371f836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61380e565b905092915050565b600061374f836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61387e565b905092915050565b6000818360000180549050116137b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061399b6022913960400191505060405180910390fd5b8260000182815481106137c757fe5b9060005260206000200154905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b600081600001805490509050919050565b600061381a83836137da565b613873578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613878565b600090505b92915050565b6000808360010160008481526020019081526020016000205490506000811461395a57600060018203905060006001866000018054905003905060008660000182815481106138c957fe5b90600052602060002001549050808760000184815481106138e657fe5b906000526020600020018190555060018301876001016000838152602001908152602001600020819055508660000180548061391e57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050613960565b60009150505b9291505056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e7468747470733a2f2f7777772e6e6f627261696e65722e66696e616e63652f6170692f6e66742e6a736f6e455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2062617463682062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368455243313135353a206d696e7420746f20746865207a65726f2061646472657373416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a26469706673582212208211375a9e1ea10d978284ed6528f638ff9ee8336e0cecf2f2c6eccf23bc9c3264736f6c6343000602003368747470733a2f2f7777772e6e6f627261696e65722e66696e616e63652f6170692f4e46542f