60806040526040518060600160405280603681526020016200470460369139600c90816200002e9190620004f7565b506040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600d9081620000759190620004f7565b50661550f7dca70000600e55611388600f55600a6011556001601260006101000a81548160ff0219169083151502179055506001601260016101000a81548160ff021916908315150217905550348015620000cf57600080fd5b506040518060400160405280600f81526020017f5375706f7473752044796e6173747900000000000000000000000000000000008152506040518060400160405280600381526020017f534544000000000000000000000000000000000000000000000000000000000081525081600290816200014d9190620004f7565b5080600390816200015f9190620004f7565b5062000170620001a660201b60201c565b6000819055505050620001986200018c620001af60201b60201c565b620001b760201b60201c565b6001600981905550620005de565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002ff57607f821691505b602082108103620003155762000314620002b7565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200037f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000340565b6200038b868362000340565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003d8620003d2620003cc84620003a3565b620003ad565b620003a3565b9050919050565b6000819050919050565b620003f483620003b7565b6200040c6200040382620003df565b8484546200034d565b825550505050565b600090565b6200042362000414565b62000430818484620003e9565b505050565b5b8181101562000458576200044c60008262000419565b60018101905062000436565b5050565b601f821115620004a75762000471816200031b565b6200047c8462000330565b810160208510156200048c578190505b620004a46200049b8562000330565b83018262000435565b50505b505050565b600082821c905092915050565b6000620004cc60001984600802620004ac565b1980831691505092915050565b6000620004e78383620004b9565b9150826002028217905092915050565b62000502826200027d565b67ffffffffffffffff8111156200051e576200051d62000288565b5b6200052a8254620002e6565b620005378282856200045c565b600060209050601f8311600181146200056f57600084156200055a578287015190505b620005668582620004d9565b865550620005d6565b601f1984166200057f866200031b565b60005b82811015620005a95784890151825560018201915060208501945060208101905062000582565b86831015620005c95784890151620005c5601f891682620004b9565b8355505b6001600288020188555050505b505050505050565b61411680620005ee6000396000f3fe6080604052600436106102255760003560e01c806370a0823111610123578063b071401b116100ab578063d5abeb011161006f578063d5abeb01146107c5578063db4bec44146107f0578063e985e9c51461082d578063efbd73f41461086a578063f2fde38b1461089357610225565b8063b071401b146106f1578063b767a0981461071a578063b88d4fde14610743578063c87b56dd1461076c578063d2cab056146107a957610225565b80638f566abb116100f25780638f566abb1461062d57806394354fd01461065657806395d89b4114610681578063a0712d68146106ac578063a22cb465146106c857610225565b806370a0823114610585578063715018a6146105c25780637cb64759146105d95780638da5cb5b1461060257610225565b80632eb4a7ab116101b15780635503a0e8116101755780635503a0e81461049c5780635c975abb146104c757806362b99ad4146104f25780636352211e1461051d5780636caede3d1461055a57610225565b80632eb4a7ab146103cb5780633ccfd60b146103f657806342842e0e1461040d578063438b63001461043657806344a0d68a1461047357610225565b806313faede6116101f857806313faede6146102f857806316c38b3c1461032357806318160ddd1461034c578063199508861461037757806323b872dd146103a257610225565b806301ffc9a71461022a57806306fdde0314610267578063081812fc14610292578063095ea7b3146102cf575b600080fd5b34801561023657600080fd5b50610251600480360381019061024c9190612ecd565b6108bc565b60405161025e9190612f15565b60405180910390f35b34801561027357600080fd5b5061027c61099e565b6040516102899190612fc9565b60405180910390f35b34801561029e57600080fd5b506102b960048036038101906102b49190613021565b610a30565b6040516102c6919061308f565b60405180910390f35b3480156102db57600080fd5b506102f660048036038101906102f191906130d6565b610aac565b005b34801561030457600080fd5b5061030d610bb6565b60405161031a9190613125565b60405180910390f35b34801561032f57600080fd5b5061034a6004803603810190610345919061316c565b610bbc565b005b34801561035857600080fd5b50610361610be1565b60405161036e9190613125565b60405180910390f35b34801561038357600080fd5b5061038c610bf8565b6040516103999190613125565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190613199565b610bfe565b005b3480156103d757600080fd5b506103e0610c0e565b6040516103ed9190613205565b60405180910390f35b34801561040257600080fd5b5061040b610c14565b005b34801561041957600080fd5b50610434600480360381019061042f9190613199565b610cf1565b005b34801561044257600080fd5b5061045d60048036038101906104589190613220565b610d11565b60405161046a919061330b565b60405180910390f35b34801561047f57600080fd5b5061049a60048036038101906104959190613021565b610f24565b005b3480156104a857600080fd5b506104b1610f36565b6040516104be9190612fc9565b60405180910390f35b3480156104d357600080fd5b506104dc610fc4565b6040516104e99190612f15565b60405180910390f35b3480156104fe57600080fd5b50610507610fd7565b6040516105149190612fc9565b60405180910390f35b34801561052957600080fd5b50610544600480360381019061053f9190613021565b611065565b604051610551919061308f565b60405180910390f35b34801561056657600080fd5b5061056f61107b565b60405161057c9190612f15565b60405180910390f35b34801561059157600080fd5b506105ac60048036038101906105a79190613220565b61108e565b6040516105b99190613125565b60405180910390f35b3480156105ce57600080fd5b506105d761115d565b005b3480156105e557600080fd5b5061060060048036038101906105fb9190613359565b611171565b005b34801561060e57600080fd5b50610617611183565b604051610624919061308f565b60405180910390f35b34801561063957600080fd5b50610654600480360381019061064f9190613386565b6111ad565b005b34801561066257600080fd5b5061066b611225565b6040516106789190613125565b60405180910390f35b34801561068d57600080fd5b5061069661122b565b6040516106a39190612fc9565b60405180910390f35b6106c660048036038101906106c19190613021565b6112bd565b005b3480156106d457600080fd5b506106ef60048036038101906106ea91906133c6565b61141d565b005b3480156106fd57600080fd5b5061071860048036038101906107139190613021565b611594565b005b34801561072657600080fd5b50610741600480360381019061073c919061316c565b6115a6565b005b34801561074f57600080fd5b5061076a6004803603810190610765919061353b565b6115cb565b005b34801561077857600080fd5b50610793600480360381019061078e9190613021565b611647565b6040516107a09190612fc9565b60405180910390f35b6107c360048036038101906107be919061361e565b6116f1565b005b3480156107d157600080fd5b506107da611a05565b6040516107e79190613125565b60405180910390f35b3480156107fc57600080fd5b5061081760048036038101906108129190613220565b611a0b565b6040516108249190612f15565b60405180910390f35b34801561083957600080fd5b50610854600480360381019061084f919061367e565b611a2b565b6040516108619190612f15565b60405180910390f35b34801561087657600080fd5b50610891600480360381019061088c9190613386565b611abf565b005b34801561089f57600080fd5b506108ba60048036038101906108b59190613220565b611b7f565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061098757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610997575061099682611c02565b5b9050919050565b6060600280546109ad906136ed565b80601f01602080910402602001604051908101604052809291908181526020018280546109d9906136ed565b8015610a265780601f106109fb57610100808354040283529160200191610a26565b820191906000526020600020905b815481529060010190602001808311610a0957829003601f168201915b5050505050905090565b6000610a3b82611c6c565b610a71576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610ab782611065565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b1e576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b3d611cba565b73ffffffffffffffffffffffffffffffffffffffff1614158015610b6f5750610b6d81610b68611cba565b611a2b565b155b15610ba6576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bb1838383611cc2565b505050565b600e5481565b610bc4611d74565b80601260006101000a81548160ff02191690831515021790555050565b6000610beb611df2565b6001546000540303905090565b60105481565b610c09838383611dfb565b505050565b600a5481565b610c1c611d74565b600260095403610c61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c589061376a565b60405180910390fd5b60026009819055506000610c73611183565b73ffffffffffffffffffffffffffffffffffffffff1647604051610c96906137bb565b60006040518083038185875af1925050503d8060008114610cd3576040519150601f19603f3d011682016040523d82523d6000602084013e610cd8565b606091505b5050905080610ce657600080fd5b506001600981905550565b610d0c838383604051806020016040528060008152506115cb565b505050565b60606000610d1e8361108e565b905060008167ffffffffffffffff811115610d3c57610d3b613410565b5b604051908082528060200260200182016040528015610d6a5781602001602082028036833780820191505090505b5090506000610d77611df2565b90506000805b8482108015610d8d575060005483105b15610f17576000600460008581526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff16151515158152505090508060400151610f0357600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610ea057806000015191505b8773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f025783858481518110610ee757610ee66137d0565b5b6020026020010181815250508280610efe9061382e565b9350505b5b8380610f0e9061382e565b94505050610d7d565b8395505050505050919050565b610f2c611d74565b80600e8190555050565b600d8054610f43906136ed565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6f906136ed565b8015610fbc5780601f10610f9157610100808354040283529160200191610fbc565b820191906000526020600020905b815481529060010190602001808311610f9f57829003601f168201915b505050505081565b601260009054906101000a900460ff1681565b600c8054610fe4906136ed565b80601f0160208091040260200160405190810160405280929190818152602001828054611010906136ed565b801561105d5780601f106110325761010080835404028352916020019161105d565b820191906000526020600020905b81548152906001019060200180831161104057829003601f168201915b505050505081565b6000611070826122af565b600001519050919050565b601260019054906101000a900460ff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110f5576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b611165611d74565b61116f600061253e565b565b611179611d74565b80600a8190555050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111b5611d74565b6000821180156111d85750600f546111cb610be1565b836111d69190613876565b105b611217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120e90613918565b60405180910390fd5b6112218183612604565b5050565b60115481565b60606003805461123a906136ed565b80601f0160208091040260200160405190810160405280929190818152602001828054611266906136ed565b80156112b35780601f10611288576101008083540402835291602001916112b3565b820191906000526020600020905b81548152906001019060200180831161129657829003601f168201915b5050505050905090565b806000811180156112d057506011548111155b61130f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130690613918565b60405180910390fd5b600f548161131b610be1565b6113259190613876565b1115611366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135d90613984565b60405180910390fd5b8180600e5461137591906139a4565b3410156113b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ae90613a4a565b60405180910390fd5b601260009054906101000a900460ff1615611407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fe90613ab6565b60405180910390fd5b611418611412611cba565b84612604565b505050565b611425611cba565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611489576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060076000611496611cba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611543611cba565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115889190612f15565b60405180910390a35050565b61159c611d74565b8060118190555050565b6115ae611d74565b80601260016101000a81548160ff02191690831515021790555050565b6115d6848484611dfb565b6115f58373ffffffffffffffffffffffffffffffffffffffff16612622565b801561160a575061160884848484612645565b155b15611641576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b606061165282611c6c565b611691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168890613b48565b60405180910390fd5b600061169b612795565b905060008151116116bb57604051806020016040528060008152506116e9565b806116c584612827565b600d6040516020016116d993929190613c3c565b6040516020818303038152906040525b915050919050565b8260008111801561170457506011548111155b611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173a90613918565b60405180910390fd5b600f548161174f610be1565b6117599190613876565b111561179a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179190613984565b60405180910390fd5b8380600e546117a991906139a4565b3410156117eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e290613a4a565b60405180910390fd5b601260019054906101000a900460ff1661183a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183190613cdf565b60405180910390fd5b600b6000611846611cba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156118ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c590613d4b565b60405180910390fd5b60006118d8611cba565b6040516020016118e89190613db3565b60405160208183030381529060405280519060200120905061194e858580806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600a5483612987565b61198d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198490613e1a565b60405180910390fd5b6001600b600061199b611cba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506119fd6119f7611cba565b87612604565b505050505050565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b81600081118015611ad257506011548111155b611b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0890613918565b60405180910390fd5b600f5481611b1d610be1565b611b279190613876565b1115611b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5f90613984565b60405180910390fd5b611b70611d74565b611b7a8284612604565b505050565b611b87611d74565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bed90613eac565b60405180910390fd5b611bff8161253e565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081611c77611df2565b11158015611c86575060005482105b8015611cb3575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b611d7c611cba565b73ffffffffffffffffffffffffffffffffffffffff16611d9a611183565b73ffffffffffffffffffffffffffffffffffffffff1614611df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de790613f18565b60405180910390fd5b565b60006001905090565b6000611e06826122af565b90508373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611e71576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff16611e92611cba565b73ffffffffffffffffffffffffffffffffffffffff161480611ec15750611ec085611ebb611cba565b611a2b565b5b80611f065750611ecf611cba565b73ffffffffffffffffffffffffffffffffffffffff16611eee84610a30565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611f3f576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611fa5576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611fb2858585600161299e565b611fbe60008487611cc2565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600460008581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060006001850190506000600460008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361223d57600054821461223c57878160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084602001518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46122a885858560016129a4565b5050505050565b6122b7612e1e565b6000829050806122c5611df2565b111580156122d4575060005481105b15612507576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050806040015161250557600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146123e9578092505050612539565b5b60011561250457818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146124ff578092505050612539565b6123ea565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61261e8282604051806020016040528060008152506129aa565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261266b611cba565b8786866040518563ffffffff1660e01b815260040161268d9493929190613f8d565b6020604051808303816000875af19250505080156126c957506040513d601f19601f820116820180604052508101906126c69190613fee565b60015b612742573d80600081146126f9576040519150601f19603f3d011682016040523d82523d6000602084013e6126fe565b606091505b50600081510361273a576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600c80546127a4906136ed565b80601f01602080910402602001604051908101604052809291908181526020018280546127d0906136ed565b801561281d5780601f106127f25761010080835404028352916020019161281d565b820191906000526020600020905b81548152906001019060200180831161280057829003601f168201915b5050505050905090565b60606000820361286e576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612982565b600082905060005b600082146128a05780806128899061382e565b915050600a82612899919061404a565b9150612876565b60008167ffffffffffffffff8111156128bc576128bb613410565b5b6040519080825280601f01601f1916602001820160405280156128ee5781602001600182028036833780820191505090505b5090505b6000851461297b57600182612907919061407b565b9150600a8561291691906140af565b60306129229190613876565b60f81b818381518110612938576129376137d0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612974919061404a565b94506128f2565b8093505050505b919050565b60008261299485846129bc565b1490509392505050565b50505050565b50505050565b6129b78383836001612a12565b505050565b60008082905060005b8451811015612a07576129f2828683815181106129e5576129e46137d0565b5b6020026020010151612ddc565b915080806129ff9061382e565b9150506129c5565b508091505092915050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612a7e576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008403612ab8576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612ac5600086838761299e565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008582019050838015612c8f5750612c8e8773ffffffffffffffffffffffffffffffffffffffff16612622565b5b15612d54575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612d046000888480600101955088612645565b612d3a576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808203612c95578260005414612d4f57600080fd5b612dbf565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808203612d55575b816000819055505050612dd560008683876129a4565b5050505050565b6000818310612df457612def8284612e07565b612dff565b612dfe8383612e07565b5b905092915050565b600082600052816020526040600020905092915050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612eaa81612e75565b8114612eb557600080fd5b50565b600081359050612ec781612ea1565b92915050565b600060208284031215612ee357612ee2612e6b565b5b6000612ef184828501612eb8565b91505092915050565b60008115159050919050565b612f0f81612efa565b82525050565b6000602082019050612f2a6000830184612f06565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f6a578082015181840152602081019050612f4f565b83811115612f79576000848401525b50505050565b6000601f19601f8301169050919050565b6000612f9b82612f30565b612fa58185612f3b565b9350612fb5818560208601612f4c565b612fbe81612f7f565b840191505092915050565b60006020820190508181036000830152612fe38184612f90565b905092915050565b6000819050919050565b612ffe81612feb565b811461300957600080fd5b50565b60008135905061301b81612ff5565b92915050565b60006020828403121561303757613036612e6b565b5b60006130458482850161300c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130798261304e565b9050919050565b6130898161306e565b82525050565b60006020820190506130a46000830184613080565b92915050565b6130b38161306e565b81146130be57600080fd5b50565b6000813590506130d0816130aa565b92915050565b600080604083850312156130ed576130ec612e6b565b5b60006130fb858286016130c1565b925050602061310c8582860161300c565b9150509250929050565b61311f81612feb565b82525050565b600060208201905061313a6000830184613116565b92915050565b61314981612efa565b811461315457600080fd5b50565b60008135905061316681613140565b92915050565b60006020828403121561318257613181612e6b565b5b600061319084828501613157565b91505092915050565b6000806000606084860312156131b2576131b1612e6b565b5b60006131c0868287016130c1565b93505060206131d1868287016130c1565b92505060406131e28682870161300c565b9150509250925092565b6000819050919050565b6131ff816131ec565b82525050565b600060208201905061321a60008301846131f6565b92915050565b60006020828403121561323657613235612e6b565b5b6000613244848285016130c1565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61328281612feb565b82525050565b60006132948383613279565b60208301905092915050565b6000602082019050919050565b60006132b88261324d565b6132c28185613258565b93506132cd83613269565b8060005b838110156132fe5781516132e58882613288565b97506132f0836132a0565b9250506001810190506132d1565b5085935050505092915050565b6000602082019050818103600083015261332581846132ad565b905092915050565b613336816131ec565b811461334157600080fd5b50565b6000813590506133538161332d565b92915050565b60006020828403121561336f5761336e612e6b565b5b600061337d84828501613344565b91505092915050565b6000806040838503121561339d5761339c612e6b565b5b60006133ab8582860161300c565b92505060206133bc858286016130c1565b9150509250929050565b600080604083850312156133dd576133dc612e6b565b5b60006133eb858286016130c1565b92505060206133fc85828601613157565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61344882612f7f565b810181811067ffffffffffffffff8211171561346757613466613410565b5b80604052505050565b600061347a612e61565b9050613486828261343f565b919050565b600067ffffffffffffffff8211156134a6576134a5613410565b5b6134af82612f7f565b9050602081019050919050565b82818337600083830152505050565b60006134de6134d98461348b565b613470565b9050828152602081018484840111156134fa576134f961340b565b5b6135058482856134bc565b509392505050565b600082601f83011261352257613521613406565b5b81356135328482602086016134cb565b91505092915050565b6000806000806080858703121561355557613554612e6b565b5b6000613563878288016130c1565b9450506020613574878288016130c1565b93505060406135858782880161300c565b925050606085013567ffffffffffffffff8111156135a6576135a5612e70565b5b6135b28782880161350d565b91505092959194509250565b600080fd5b600080fd5b60008083601f8401126135de576135dd613406565b5b8235905067ffffffffffffffff8111156135fb576135fa6135be565b5b602083019150836020820283011115613617576136166135c3565b5b9250929050565b60008060006040848603121561363757613636612e6b565b5b60006136458682870161300c565b935050602084013567ffffffffffffffff81111561366657613665612e70565b5b613672868287016135c8565b92509250509250925092565b6000806040838503121561369557613694612e6b565b5b60006136a3858286016130c1565b92505060206136b4858286016130c1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061370557607f821691505b602082108103613718576137176136be565b5b50919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000613754601f83612f3b565b915061375f8261371e565b602082019050919050565b6000602082019050818103600083015261378381613747565b9050919050565b600081905092915050565b50565b60006137a560008361378a565b91506137b082613795565b600082019050919050565b60006137c682613798565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061383982612feb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361386b5761386a6137ff565b5b600182019050919050565b600061388182612feb565b915061388c83612feb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138c1576138c06137ff565b5b828201905092915050565b7f496e76616c6964206d696e7420616d6f756e7421000000000000000000000000600082015250565b6000613902601483612f3b565b915061390d826138cc565b602082019050919050565b60006020820190508181036000830152613931816138f5565b9050919050565b7f4d617820737570706c7920657863656564656421000000000000000000000000600082015250565b600061396e601483612f3b565b915061397982613938565b602082019050919050565b6000602082019050818103600083015261399d81613961565b9050919050565b60006139af82612feb565b91506139ba83612feb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139f3576139f26137ff565b5b828202905092915050565b7f496e73756666696369656e742066756e64732100000000000000000000000000600082015250565b6000613a34601383612f3b565b9150613a3f826139fe565b602082019050919050565b60006020820190508181036000830152613a6381613a27565b9050919050565b7f54686520636f6e74726163742069732070617573656421000000000000000000600082015250565b6000613aa0601783612f3b565b9150613aab82613a6a565b602082019050919050565b60006020820190508181036000830152613acf81613a93565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613b32602f83612f3b565b9150613b3d82613ad6565b604082019050919050565b60006020820190508181036000830152613b6181613b25565b9050919050565b600081905092915050565b6000613b7e82612f30565b613b888185613b68565b9350613b98818560208601612f4c565b80840191505092915050565b60008190508160005260206000209050919050565b60008154613bc6816136ed565b613bd08186613b68565b94506001821660008114613beb5760018114613c0057613c33565b60ff1983168652811515820286019350613c33565b613c0985613ba4565b60005b83811015613c2b57815481890152600182019150602081019050613c0c565b838801955050505b50505092915050565b6000613c488286613b73565b9150613c548285613b73565b9150613c608284613bb9565b9150819050949350505050565b7f5468652077686974656c6973742073616c65206973206e6f7420656e61626c6560008201527f6421000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cc9602283612f3b565b9150613cd482613c6d565b604082019050919050565b60006020820190508181036000830152613cf881613cbc565b9050919050565b7f4164647265737320616c726561647920636c61696d6564210000000000000000600082015250565b6000613d35601883612f3b565b9150613d4082613cff565b602082019050919050565b60006020820190508181036000830152613d6481613d28565b9050919050565b60008160601b9050919050565b6000613d8382613d6b565b9050919050565b6000613d9582613d78565b9050919050565b613dad613da88261306e565b613d8a565b82525050565b6000613dbf8284613d9c565b60148201915081905092915050565b7f496e76616c69642070726f6f6621000000000000000000000000000000000000600082015250565b6000613e04600e83612f3b565b9150613e0f82613dce565b602082019050919050565b60006020820190508181036000830152613e3381613df7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e96602683612f3b565b9150613ea182613e3a565b604082019050919050565b60006020820190508181036000830152613ec581613e89565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613f02602083612f3b565b9150613f0d82613ecc565b602082019050919050565b60006020820190508181036000830152613f3181613ef5565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613f5f82613f38565b613f698185613f43565b9350613f79818560208601612f4c565b613f8281612f7f565b840191505092915050565b6000608082019050613fa26000830187613080565b613faf6020830186613080565b613fbc6040830185613116565b8181036060830152613fce8184613f54565b905095945050505050565b600081519050613fe881612ea1565b92915050565b60006020828403121561400457614003612e6b565b5b600061401284828501613fd9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061405582612feb565b915061406083612feb565b9250826140705761406f61401b565b5b828204905092915050565b600061408682612feb565b915061409183612feb565b9250828210156140a4576140a36137ff565b5b828203905092915050565b60006140ba82612feb565b91506140c583612feb565b9250826140d5576140d461401b565b5b82820690509291505056fea264697066735822122006c3050e3400c61142ec14f2dc6cdb49a36929c42bb5ece080719cf57b33283164736f6c634300080f0033697066733a2f2f516d5a37664165424d6471654b794b6a50776751635742783632634e6b777279717a55376f3778445538706e48562f