60806040526002600c55600a600d556040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600e9081620000549190620004c7565b506040518060800160405280604381526020016200473660439139600f90816200007f9190620004c7565b506364218c486010556040518060a0016040528060698152602001620047796069913960119081620000b29190620004c7565b5061029a601255348015620000c657600080fd5b506040518060400160405280600c81526020017f4b6e69676874457272616e7400000000000000000000000000000000000000008152506040518060400160405280600381526020017f4b455400000000000000000000000000000000000000000000000000000000008152508160009081620001449190620004c7565b508060019081620001569190620004c7565b505050620001796200016d6200017f60201b60201c565b6200018760201b60201c565b620005ae565b600033905090565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002cf57607f821691505b602082108103620002e557620002e462000287565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200034f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000310565b6200035b868362000310565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003a8620003a26200039c8462000373565b6200037d565b62000373565b9050919050565b6000819050919050565b620003c48362000387565b620003dc620003d382620003af565b8484546200031d565b825550505050565b600090565b620003f3620003e4565b62000400818484620003b9565b505050565b5b8181101562000428576200041c600082620003e9565b60018101905062000406565b5050565b601f82111562000477576200044181620002eb565b6200044c8462000300565b810160208510156200045c578190505b620004746200046b8562000300565b83018262000405565b50505b505050565b600082821c905092915050565b60006200049c600019846008026200047c565b1980831691505092915050565b6000620004b7838362000489565b9150826002028217905092915050565b620004d2826200024d565b67ffffffffffffffff811115620004ee57620004ed62000258565b5b620004fa8254620002b6565b620005078282856200042c565b600060209050601f8311600181146200053f57600084156200052a578287015190505b620005368582620004a9565b865550620005a6565b601f1984166200054f86620002eb565b60005b82811015620005795784890151825560018201915060208501945060208101905062000552565b8683101562000599578489015162000595601f89168262000489565b8355505b6001600288020188555050505b505050505050565b61417880620005be6000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80636871ee40116100de578063b88d4fde11610097578063d5b3621b11610071578063d5b3621b1461046d578063e8a3d48514610489578063e985e9c5146104a7578063f2fde38b146104d75761018e565b8063b88d4fde14610403578063c87b56dd1461041f578063d5abeb011461044f5761018e565b80636871ee401461036757806370a0823114610371578063715018a6146103a15780638da5cb5b146103ab57806395d89b41146103c9578063a22cb465146103e75761018e565b80632f745c591161014b57806342842e0e1161012557806342842e0e146102cf57806342966c68146102eb5780634f6ccce7146103075780636352211e146103375761018e565b80632f745c591461026757806330176e1314610297578063375a069a146102b35761018e565b806301ffc9a71461019357806306fdde03146101c3578063081812fc146101e1578063095ea7b31461021157806318160ddd1461022d57806323b872dd1461024b575b600080fd5b6101ad60048036038101906101a891906129fa565b6104f3565b6040516101ba9190612a42565b60405180910390f35b6101cb610505565b6040516101d89190612aed565b60405180910390f35b6101fb60048036038101906101f69190612b45565b610597565b6040516102089190612bb3565b60405180910390f35b61022b60048036038101906102269190612bfa565b6105dd565b005b6102356106f4565b6040516102429190612c49565b60405180910390f35b61026560048036038101906102609190612c64565b610701565b005b610281600480360381019061027c9190612bfa565b610761565b60405161028e9190612c49565b60405180910390f35b6102b160048036038101906102ac9190612dec565b610806565b005b6102cd60048036038101906102c89190612b45565b610821565b005b6102e960048036038101906102e49190612c64565b610965565b005b61030560048036038101906103009190612b45565b610985565b005b610321600480360381019061031c9190612b45565b6109e1565b60405161032e9190612c49565b60405180910390f35b610351600480360381019061034c9190612b45565b610a52565b60405161035e9190612bb3565b60405180910390f35b61036f610ad8565b005b61038b60048036038101906103869190612e35565b610c48565b6040516103989190612c49565b60405180910390f35b6103a9610cff565b005b6103b3610d13565b6040516103c09190612bb3565b60405180910390f35b6103d1610d3d565b6040516103de9190612aed565b60405180910390f35b61040160048036038101906103fc9190612e8e565b610dcf565b005b61041d60048036038101906104189190612f6f565b610de5565b005b61043960048036038101906104349190612b45565b610e47565b6040516104469190612aed565b60405180910390f35b610457610e59565b6040516104649190612c49565b60405180910390f35b61048760048036038101906104829190612b45565b610e5f565b005b610491610e71565b60405161049e9190612aed565b60405180910390f35b6104c160048036038101906104bc9190612ff2565b610f03565b6040516104ce9190612a42565b60405180910390f35b6104f160048036038101906104ec9190612e35565b610f97565b005b60006104fe8261101a565b9050919050565b60606000805461051490613061565b80601f016020809104026020016040519081016040528092919081815260200182805461054090613061565b801561058d5780601f106105625761010080835404028352916020019161058d565b820191906000526020600020905b81548152906001019060200180831161057057829003601f168201915b5050505050905090565b60006105a282611094565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006105e882610a52565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064f90613104565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166106776110df565b73ffffffffffffffffffffffffffffffffffffffff1614806106a657506106a5816106a06110df565b610f03565b5b6106e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106dc90613196565b60405180910390fd5b6106ef83836110e7565b505050565b6000600880549050905090565b61071261070c6110df565b826111a0565b610751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074890613228565b60405180910390fd5b61075c838383611235565b505050565b600061076c83610c48565b82106107ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a4906132ba565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b61080e61152e565b80600f908161081d9190613486565b5050565b61082961152e565b600061083433610c48565b905060016012546108459190613587565b61084f60136115ac565b1061088f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088690613607565b60405180910390fd5b600081600d5461089f9190613587565b9050808311156108e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108db90613673565b60405180910390fd5b60005b8381101561095f5760006108fb60136115ac565b905061090733826115ba565b61091160136115d8565b600061091c826115ee565b600e60405160200161092f929190613752565b604051602081830303815290604052905061094a82826116bc565b5050808061095790613776565b9150506108e7565b50505050565b61098083838360405180602001604052806000815250610de5565b505050565b6109966109906110df565b826111a0565b6109d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cc90613228565b60405180910390fd5b6109de81611729565b50565b60006109eb6106f4565b8210610a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2390613830565b60405180910390fd5b60088281548110610a4057610a3f613850565b5b90600052602060002001549050919050565b600080610a5e83611735565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac6906138cb565b60405180910390fd5b80915050919050565b600060105414158015610aed57506010544210155b610b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2390613937565b60405180910390fd5b60005b600c54811015610c45576000610b4560136115ac565b90506001601254610b569190613587565b8110610b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8e906139a3565b60405180910390fd5b600c54610ba333610c48565b10610be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bda90613a0f565b60405180910390fd5b610bed33826115ba565b610bf760136115d8565b6000610c02826115ee565b600e604051602001610c15929190613752565b6040516020818303038152906040529050610c3082826116bc565b50508080610c3d90613776565b915050610b2f565b50565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610caf90613aa1565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d0761152e565b610d116000611772565b565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610d4c90613061565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7890613061565b8015610dc55780601f10610d9a57610100808354040283529160200191610dc5565b820191906000526020600020905b815481529060010190602001808311610da857829003601f168201915b5050505050905090565b610de1610dda6110df565b8383611838565b5050565b610df6610df06110df565b836111a0565b610e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2c90613228565b60405180910390fd5b610e41848484846119a4565b50505050565b6060610e5282611a00565b9050919050565b60125481565b610e6761152e565b8060108190555050565b606060118054610e8090613061565b80601f0160208091040260200160405190810160405280929190818152602001828054610eac90613061565b8015610ef95780601f10610ece57610100808354040283529160200191610ef9565b820191906000526020600020905b815481529060010190602001808311610edc57829003601f168201915b5050505050905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610f9f61152e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361100e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100590613b33565b60405180910390fd5b61101781611772565b50565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061108d575061108c82611b12565b5b9050919050565b61109d81611bf4565b6110dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d3906138cb565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661115a83610a52565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806111ac83610a52565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806111ee57506111ed8185610f03565b5b8061122c57508373ffffffffffffffffffffffffffffffffffffffff1661121484610597565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661125582610a52565b73ffffffffffffffffffffffffffffffffffffffff16146112ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a290613bc5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361131a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131190613c57565b60405180910390fd5b6113278383836001611c35565b8273ffffffffffffffffffffffffffffffffffffffff1661134782610a52565b73ffffffffffffffffffffffffffffffffffffffff161461139d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139490613bc5565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46115298383836001611c47565b505050565b6115366110df565b73ffffffffffffffffffffffffffffffffffffffff16611554610d13565b73ffffffffffffffffffffffffffffffffffffffff16146115aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a190613cc3565b60405180910390fd5b565b600081600001549050919050565b6115d4828260405180602001604052806000815250611c4d565b5050565b6001816000016000828254019250508190555050565b6060600060016115fd84611ca8565b01905060008167ffffffffffffffff81111561161c5761161b612cc1565b5b6040519080825280601f01601f19166020018201604052801561164e5781602001600182028036833780820191505090505b509050600082602001820190505b6001156116b1578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816116a5576116a4613ce3565b5b0494506000850361165c575b819350505050919050565b6116c582611bf4565b611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb90613d84565b60405180910390fd5b80600a600084815260200190815260200160002090816117249190613486565b505050565b61173281611dfb565b50565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189d90613df0565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119979190612a42565b60405180910390a3505050565b6119af848484611235565b6119bb84848484611e4e565b6119fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f190613e82565b60405180910390fd5b50505050565b6060611a0b82611094565b6000600a60008481526020019081526020016000208054611a2b90613061565b80601f0160208091040260200160405190810160405280929190818152602001828054611a5790613061565b8015611aa45780601f10611a7957610100808354040283529160200191611aa4565b820191906000526020600020905b815481529060010190602001808311611a8757829003601f168201915b505050505090506000611ab5611fd5565b90506000815103611aca578192505050611b0d565b600082511115611aff578082604051602001611ae7929190613ea2565b60405160208183030381529060405292505050611b0d565b611b0884612067565b925050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611bdd57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611bed5750611bec826120cf565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16611c1683611735565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b611c4184848484612139565b50505050565b50505050565b611c578383612297565b611c646000848484611e4e565b611ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9a90613e82565b60405180910390fd5b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611d06577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611cfc57611cfb613ce3565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611d43576d04ee2d6d415b85acef81000000008381611d3957611d38613ce3565b5b0492506020810190505b662386f26fc100008310611d7257662386f26fc100008381611d6857611d67613ce3565b5b0492506010810190505b6305f5e1008310611d9b576305f5e1008381611d9157611d90613ce3565b5b0492506008810190505b6127108310611dc0576127108381611db657611db5613ce3565b5b0492506004810190505b60648310611de35760648381611dd957611dd8613ce3565b5b0492506002810190505b600a8310611df2576001810190505b80915050919050565b611e04816124b4565b6000600a60008381526020019081526020016000208054611e2490613061565b905014611e4b57600a60008281526020019081526020016000206000611e4a9190612931565b5b50565b6000611e6f8473ffffffffffffffffffffffffffffffffffffffff16612602565b15611fc8578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611e986110df565b8786866040518563ffffffff1660e01b8152600401611eba9493929190613f1b565b6020604051808303816000875af1925050508015611ef657506040513d601f19601f82011682018060405250810190611ef39190613f7c565b60015b611f78573d8060008114611f26576040519150601f19603f3d011682016040523d82523d6000602084013e611f2b565b606091505b506000815103611f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6790613e82565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611fcd565b600190505b949350505050565b6060600f8054611fe490613061565b80601f016020809104026020016040519081016040528092919081815260200182805461201090613061565b801561205d5780601f106120325761010080835404028352916020019161205d565b820191906000526020600020905b81548152906001019060200180831161204057829003601f168201915b5050505050905090565b606061207282611094565b600061207c611fd5565b9050600081511161209c57604051806020016040528060008152506120c7565b806120a6846115ee565b6040516020016120b7929190613ea2565b6040516020818303038152906040525b915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61214584848484612625565b6001811115612189576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121809061401b565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036121d0576121cb8161262b565b61220f565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461220e5761220d8582612674565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036122515761224c816127e1565b612290565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461228f5761228e84826128b2565b5b5b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fd90614087565b60405180910390fd5b61230f81611bf4565b1561234f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612346906140f3565b60405180910390fd5b61235d600083836001611c35565b61236681611bf4565b156123a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239d906140f3565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46124b0600083836001611c47565b5050565b60006124bf82610a52565b90506124cf816000846001611c35565b6124d882610a52565b90506004600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46125fe816000846001611c47565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161268184610c48565b61268b9190613587565b9050600060076000848152602001908152602001600020549050818114612770576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506127f59190613587565b905060006009600084815260200190815260200160002054905060006008838154811061282557612824613850565b5b90600052602060002001549050806008838154811061284757612846613850565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061289657612895614113565b5b6001900381819060005260206000200160009055905550505050565b60006128bd83610c48565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b50805461293d90613061565b6000825580601f1061294f575061296e565b601f01602090049060005260206000209081019061296d9190612971565b5b50565b5b8082111561298a576000816000905550600101612972565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6129d7816129a2565b81146129e257600080fd5b50565b6000813590506129f4816129ce565b92915050565b600060208284031215612a1057612a0f612998565b5b6000612a1e848285016129e5565b91505092915050565b60008115159050919050565b612a3c81612a27565b82525050565b6000602082019050612a576000830184612a33565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a97578082015181840152602081019050612a7c565b60008484015250505050565b6000601f19601f8301169050919050565b6000612abf82612a5d565b612ac98185612a68565b9350612ad9818560208601612a79565b612ae281612aa3565b840191505092915050565b60006020820190508181036000830152612b078184612ab4565b905092915050565b6000819050919050565b612b2281612b0f565b8114612b2d57600080fd5b50565b600081359050612b3f81612b19565b92915050565b600060208284031215612b5b57612b5a612998565b5b6000612b6984828501612b30565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b9d82612b72565b9050919050565b612bad81612b92565b82525050565b6000602082019050612bc86000830184612ba4565b92915050565b612bd781612b92565b8114612be257600080fd5b50565b600081359050612bf481612bce565b92915050565b60008060408385031215612c1157612c10612998565b5b6000612c1f85828601612be5565b9250506020612c3085828601612b30565b9150509250929050565b612c4381612b0f565b82525050565b6000602082019050612c5e6000830184612c3a565b92915050565b600080600060608486031215612c7d57612c7c612998565b5b6000612c8b86828701612be5565b9350506020612c9c86828701612be5565b9250506040612cad86828701612b30565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612cf982612aa3565b810181811067ffffffffffffffff82111715612d1857612d17612cc1565b5b80604052505050565b6000612d2b61298e565b9050612d378282612cf0565b919050565b600067ffffffffffffffff821115612d5757612d56612cc1565b5b612d6082612aa3565b9050602081019050919050565b82818337600083830152505050565b6000612d8f612d8a84612d3c565b612d21565b905082815260208101848484011115612dab57612daa612cbc565b5b612db6848285612d6d565b509392505050565b600082601f830112612dd357612dd2612cb7565b5b8135612de3848260208601612d7c565b91505092915050565b600060208284031215612e0257612e01612998565b5b600082013567ffffffffffffffff811115612e2057612e1f61299d565b5b612e2c84828501612dbe565b91505092915050565b600060208284031215612e4b57612e4a612998565b5b6000612e5984828501612be5565b91505092915050565b612e6b81612a27565b8114612e7657600080fd5b50565b600081359050612e8881612e62565b92915050565b60008060408385031215612ea557612ea4612998565b5b6000612eb385828601612be5565b9250506020612ec485828601612e79565b9150509250929050565b600067ffffffffffffffff821115612ee957612ee8612cc1565b5b612ef282612aa3565b9050602081019050919050565b6000612f12612f0d84612ece565b612d21565b905082815260208101848484011115612f2e57612f2d612cbc565b5b612f39848285612d6d565b509392505050565b600082601f830112612f5657612f55612cb7565b5b8135612f66848260208601612eff565b91505092915050565b60008060008060808587031215612f8957612f88612998565b5b6000612f9787828801612be5565b9450506020612fa887828801612be5565b9350506040612fb987828801612b30565b925050606085013567ffffffffffffffff811115612fda57612fd961299d565b5b612fe687828801612f41565b91505092959194509250565b6000806040838503121561300957613008612998565b5b600061301785828601612be5565b925050602061302885828601612be5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061307957607f821691505b60208210810361308c5761308b613032565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006130ee602183612a68565b91506130f982613092565b604082019050919050565b6000602082019050818103600083015261311d816130e1565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000613180603d83612a68565b915061318b82613124565b604082019050919050565b600060208201905081810360008301526131af81613173565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000613212602d83612a68565b915061321d826131b6565b604082019050919050565b6000602082019050818103600083015261324181613205565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006132a4602b83612a68565b91506132af82613248565b604082019050919050565b600060208201905081810360008301526132d381613297565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261333c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826132ff565b61334686836132ff565b95508019841693508086168417925050509392505050565b6000819050919050565b600061338361337e61337984612b0f565b61335e565b612b0f565b9050919050565b6000819050919050565b61339d83613368565b6133b16133a98261338a565b84845461330c565b825550505050565b600090565b6133c66133b9565b6133d1818484613394565b505050565b5b818110156133f5576133ea6000826133be565b6001810190506133d7565b5050565b601f82111561343a5761340b816132da565b613414846132ef565b81016020851015613423578190505b61343761342f856132ef565b8301826133d6565b50505b505050565b600082821c905092915050565b600061345d6000198460080261343f565b1980831691505092915050565b6000613476838361344c565b9150826002028217905092915050565b61348f82612a5d565b67ffffffffffffffff8111156134a8576134a7612cc1565b5b6134b28254613061565b6134bd8282856133f9565b600060209050601f8311600181146134f057600084156134de578287015190505b6134e8858261346a565b865550613550565b601f1984166134fe866132da565b60005b8281101561352657848901518255600182019150602085019450602081019050613501565b86831015613543578489015161353f601f89168261344c565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061359282612b0f565b915061359d83612b0f565b92508282039050818111156135b5576135b4613558565b5b92915050565b7f49276d20736f7272792077652072656163686564207468652063617000000000600082015250565b60006135f1601c83612a68565b91506135fc826135bb565b602082019050919050565b60006020820190508181036000830152613620816135e4565b9050919050565b7f4d617820646576204c696d697400000000000000000000000000000000000000600082015250565b600061365d600d83612a68565b915061366882613627565b602082019050919050565b6000602082019050818103600083015261368c81613650565b9050919050565b600081905092915050565b60006136a982612a5d565b6136b38185613693565b93506136c3818560208601612a79565b80840191505092915050565b600081546136dc81613061565b6136e68186613693565b94506001821660008114613701576001811461371657613749565b60ff1983168652811515820286019350613749565b61371f856132da565b60005b8381101561374157815481890152600182019150602081019050613722565b838801955050505b50505092915050565b600061375e828561369e565b915061376a82846136cf565b91508190509392505050565b600061378182612b0f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036137b3576137b2613558565b5b600182019050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b600061381a602c83612a68565b9150613825826137be565b604082019050919050565b600060208201905081810360008301526138498161380d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b60006138b5601883612a68565b91506138c08261387f565b602082019050919050565b600060208201905081810360008301526138e4816138a8565b9050919050565b7f4d696e7420686173206e6f742073746172746564207965740000000000000000600082015250565b6000613921601883612a68565b915061392c826138eb565b602082019050919050565b6000602082019050818103600083015261395081613914565b9050919050565b7f416c6c204e46542068617665206265656e206d696e7465642e00000000000000600082015250565b600061398d601983612a68565b915061399882613957565b602082019050919050565b600060208201905081810360008301526139bc81613980565b9050919050565b7f54776f206d696e74207065722070706c2e000000000000000000000000000000600082015250565b60006139f9601183612a68565b9150613a04826139c3565b602082019050919050565b60006020820190508181036000830152613a28816139ec565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000613a8b602983612a68565b9150613a9682613a2f565b604082019050919050565b60006020820190508181036000830152613aba81613a7e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b1d602683612a68565b9150613b2882613ac1565b604082019050919050565b60006020820190508181036000830152613b4c81613b10565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613baf602583612a68565b9150613bba82613b53565b604082019050919050565b60006020820190508181036000830152613bde81613ba2565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c41602483612a68565b9150613c4c82613be5565b604082019050919050565b60006020820190508181036000830152613c7081613c34565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613cad602083612a68565b9150613cb882613c77565b602082019050919050565b60006020820190508181036000830152613cdc81613ca0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b6000613d6e602e83612a68565b9150613d7982613d12565b604082019050919050565b60006020820190508181036000830152613d9d81613d61565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613dda601983612a68565b9150613de582613da4565b602082019050919050565b60006020820190508181036000830152613e0981613dcd565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613e6c603283612a68565b9150613e7782613e10565b604082019050919050565b60006020820190508181036000830152613e9b81613e5f565b9050919050565b6000613eae828561369e565b9150613eba828461369e565b91508190509392505050565b600081519050919050565b600082825260208201905092915050565b6000613eed82613ec6565b613ef78185613ed1565b9350613f07818560208601612a79565b613f1081612aa3565b840191505092915050565b6000608082019050613f306000830187612ba4565b613f3d6020830186612ba4565b613f4a6040830185612c3a565b8181036060830152613f5c8184613ee2565b905095945050505050565b600081519050613f76816129ce565b92915050565b600060208284031215613f9257613f91612998565b5b6000613fa084828501613f67565b91505092915050565b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b6000614005603583612a68565b915061401082613fa9565b604082019050919050565b6000602082019050818103600083015261403481613ff8565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000614071602083612a68565b915061407c8261403b565b602082019050919050565b600060208201905081810360008301526140a081614064565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b60006140dd601c83612a68565b91506140e8826140a7565b602082019050919050565b6000602082019050818103600083015261410c816140d0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122073b99a53bbfc7dd3ab09cc26a09cd28e2c491ec7ae2dcc8bfa92770f6323f8c264736f6c63430008120033697066733a2f2f62616679626569626e3663766f376c6666647969786b376c6c32756763366f6f376f646d617663686f7369696337737676716d71766833726978612f68747470733a2f2f6261667962656965326d6636686b61636462756c7674696976346e6d6b6365643573373533356a36786663366e6e6e6f6c656662616f68706c6c652e697066732e6e667473746f726167652e6c696e6b2f636f6e74726163745552492e6a736f6e