60806040526101f4600a55662386f26fc10000600b55600a600c556032600d556040518060600160405280602e815260200162004c80602e9139600e9081620000499190620006a4565b506000600f60006101000a81548160ff0219169083151502179055503480156200007257600080fd5b50733cc6cdda760b79bafa08df41ecfa224f810dceb660016040518060400160405280600b81526020017f52616262697420486f6c650000000000000000000000000000000000000000008152506040518060400160405280600a81526020017f524142424954484f4c45000000000000000000000000000000000000000000008152508160029081620001079190620006a4565b508060039081620001199190620006a4565b506200012a6200035760201b60201c565b600081905550505062000152620001466200035c60201b60201c565b6200036460201b60201c565b600160098190555060006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b11156200034f57801562000215576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16637d3e3dbe30846040518363ffffffff1660e01b8152600401620001db929190620007d0565b600060405180830381600087803b158015620001f657600080fd5b505af11580156200020b573d6000803e3d6000fd5b505050506200034e565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614620002cf576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663a0af290330846040518363ffffffff1660e01b815260040162000295929190620007d0565b600060405180830381600087803b158015620002b057600080fd5b505af1158015620002c5573d6000803e3d6000fd5b505050506200034d565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b8152600401620003189190620007fd565b600060405180830381600087803b1580156200033357600080fd5b505af115801562000348573d6000803e3d6000fd5b505050505b5b5b50506200081a565b600090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004ac57607f821691505b602082108103620004c257620004c162000464565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200052c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004ed565b620005388683620004ed565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005856200057f620005798462000550565b6200055a565b62000550565b9050919050565b6000819050919050565b620005a18362000564565b620005b9620005b0826200058c565b848454620004fa565b825550505050565b600090565b620005d0620005c1565b620005dd81848462000596565b505050565b5b818110156200060557620005f9600082620005c6565b600181019050620005e3565b5050565b601f82111562000654576200061e81620004c8565b6200062984620004dd565b8101602085101562000639578190505b620006516200064885620004dd565b830182620005e2565b50505b505050565b600082821c905092915050565b6000620006796000198460080262000659565b1980831691505092915050565b600062000694838362000666565b9150826002028217905092915050565b620006af826200042a565b67ffffffffffffffff811115620006cb57620006ca62000435565b5b620006d7825462000493565b620006e482828562000609565b600060209050601f8311600181146200071c576000841562000707578287015190505b62000713858262000686565b86555062000783565b601f1984166200072c86620004c8565b60005b8281101562000756578489015182556001820191506020850194506020810190506200072f565b8683101562000776578489015162000772601f89168262000666565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007b8826200078b565b9050919050565b620007ca81620007ab565b82525050565b6000604082019050620007e76000830185620007bf565b620007f66020830184620007bf565b9392505050565b6000602082019050620008146000830184620007bf565b92915050565b614456806200082a6000396000f3fe6080604052600436106102295760003560e01c806368866c0411610123578063a0e67e2b116100ab578063e669d9d21161006f578063e669d9d2146107cf578063e985e9c5146107f8578063f2fde38b14610835578063f452472e1461085e578063f6457cee1461088757610230565b8063a0e67e2b146106ea578063a22cb46514610715578063b88d4fde1461073e578063c87b56dd14610767578063d5abeb01146107a457610230565b806387491c60116100f257806387491c60146106365780638aa0fdad1461064d5780638da5cb5b1461066957806395d89b41146106945780639943770d146106bf57610230565b806368866c041461057a578063704fe710146105a557806370a08231146105e2578063715018a61461061f57610230565b8063333171bb116101b1578063501895ae11610175578063501895ae1461047f57806354ea6585146104bc57806355234ec0146104e75780635c975abb146105125780636352211e1461053d57610230565b8063333171bb146103d45780633ccfd60b146103eb57806341f434341461040257806342842e0e1461042d5780634530a8321461045657610230565b806318160ddd116101f857806318160ddd1461030357806323b872dd1461032e57806325bdb7461461035757806328a4f630146103805780632d39416a146103ab57610230565b806301ffc9a71461023557806306fdde0314610272578063081812fc1461029d578063095ea7b3146102da57610230565b3661023057005b600080fd5b34801561024157600080fd5b5061025c60048036038101906102579190612ce4565b6108b0565b6040516102699190612d2c565b60405180910390f35b34801561027e57600080fd5b50610287610992565b6040516102949190612dd7565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf9190612e2f565b610a24565b6040516102d19190612e9d565b60405180910390f35b3480156102e657600080fd5b5061030160048036038101906102fc9190612ee4565b610aa0565b005b34801561030f57600080fd5b50610318610ab9565b6040516103259190612f33565b60405180910390f35b34801561033a57600080fd5b5061035560048036038101906103509190612f4e565b610ad0565b005b34801561036357600080fd5b5061037e600480360381019061037991906130d6565b610b1f565b005b34801561038c57600080fd5b50610395610b3a565b6040516103a29190612f33565b60405180910390f35b3480156103b757600080fd5b506103d260048036038101906103cd9190612e2f565b610b40565b005b3480156103e057600080fd5b506103e9610b52565b005b3480156103f757600080fd5b50610400610b86565b005b34801561040e57600080fd5b50610417610bd4565b604051610424919061317e565b60405180910390f35b34801561043957600080fd5b50610454600480360381019061044f9190612f4e565b610be6565b005b34801561046257600080fd5b5061047d60048036038101906104789190612e2f565b610c35565b005b34801561048b57600080fd5b506104a660048036038101906104a19190612e2f565b610c47565b6040516104b39190612dd7565b60405180910390f35b3480156104c857600080fd5b506104d1610ce7565b6040516104de9190612f33565b60405180910390f35b3480156104f357600080fd5b506104fc610cf1565b6040516105099190612f33565b60405180910390f35b34801561051e57600080fd5b50610527610d12565b6040516105349190612d2c565b60405180910390f35b34801561054957600080fd5b50610564600480360381019061055f9190612e2f565b610d25565b6040516105719190612e9d565b60405180910390f35b34801561058657600080fd5b5061058f610d3b565b60405161059c9190612dd7565b60405180910390f35b3480156105b157600080fd5b506105cc60048036038101906105c79190612e2f565b610dc9565b6040516105d99190612dd7565b60405180910390f35b3480156105ee57600080fd5b5061060960048036038101906106049190613199565b610e69565b6040516106169190612f33565b60405180910390f35b34801561062b57600080fd5b50610634610f38565b005b34801561064257600080fd5b5061064b610f4c565b005b610667600480360381019061066291906131c6565b610f6a565b005b34801561067557600080fd5b5061067e6110f5565b60405161068b9190612e9d565b60405180910390f35b3480156106a057600080fd5b506106a961111f565b6040516106b69190612dd7565b60405180910390f35b3480156106cb57600080fd5b506106d46111b1565b6040516106e19190612f33565b60405180910390f35b3480156106f657600080fd5b506106ff6111b7565b60405161070c91906132fc565b60405180910390f35b34801561072157600080fd5b5061073c6004803603810190610737919061334a565b61128f565b005b34801561074a57600080fd5b506107656004803603810190610760919061342b565b6112a8565b005b34801561077357600080fd5b5061078e60048036038101906107899190612e2f565b6112f9565b60405161079b9190612dd7565b60405180910390f35b3480156107b057600080fd5b506107b9611442565b6040516107c69190612f33565b60405180910390f35b3480156107db57600080fd5b506107f660048036038101906107f191906134ae565b611448565b005b34801561080457600080fd5b5061081f600480360381019061081a919061350a565b611475565b60405161082c9190612d2c565b60405180910390f35b34801561084157600080fd5b5061085c60048036038101906108579190613199565b611509565b005b34801561086a57600080fd5b5061088560048036038101906108809190612e2f565b61158c565b005b34801561089357600080fd5b506108ae60048036038101906108a99190613630565b61159e565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061097b57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061098b575061098a8261169d565b5b9050919050565b6060600280546109a1906136bb565b80601f01602080910402602001604051908101604052809291908181526020018280546109cd906136bb565b8015610a1a5780601f106109ef57610100808354040283529160200191610a1a565b820191906000526020600020905b8154815290600101906020018083116109fd57829003601f168201915b5050505050905090565b6000610a2f82611707565b610a65576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b81610aaa81611755565b610ab48383611852565b505050565b6000610ac361195c565b6001546000540303905090565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b0e57610b0d33611755565b5b610b19848484611961565b50505050565b610b27611971565b80600e9081610b36919061388e565b5050565b600d5481565b610b48611971565b80600d8190555050565b610b5a611971565b600f60009054906101000a900460ff1615600f60006101000a81548160ff021916908315150217905550565b610b8e611971565b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050610bd157600080fd5b50565b6daaeb6d7670e522a718067333cd4e81565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c2457610c2333611755565b5b610c2f8484846119ef565b50505050565b610c3d611971565b80600b8190555050565b60106020528060005260406000206000915090508054610c66906136bb565b80601f0160208091040260200160405190810160405280929190818152602001828054610c92906136bb565b8015610cdf5780601f10610cb457610100808354040283529160200191610cdf565b820191906000526020600020905b815481529060010190602001808311610cc257829003601f168201915b505050505081565b6000600b54905090565b600080610cfc610ab9565b600a54610d09919061398f565b90508091505090565b600f60009054906101000a900460ff1681565b6000610d3082611a0f565b600001519050919050565b600e8054610d48906136bb565b80601f0160208091040260200160405190810160405280929190818152602001828054610d74906136bb565b8015610dc15780601f10610d9657610100808354040283529160200191610dc1565b820191906000526020600020905b815481529060010190602001808311610da457829003601f168201915b505050505081565b60116020528060005260406000206000915090508054610de8906136bb565b80601f0160208091040260200160405190810160405280929190818152602001828054610e14906136bb565b8015610e615780601f10610e3657610100808354040283529160200191610e61565b820191906000526020600020905b815481529060010190602001808311610e4457829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ed0576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b610f40611971565b610f4a6000611c9e565b565b610f54611971565b6000610f5e610ab9565b905080600a8190555050565b610f72611d64565b600f60009054906101000a900460ff1615610fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb990613a0f565b60405180910390fd5b6000610fcc610ab9565b9050600a54600182610fde9190613a2f565b111561101f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101690613aaf565b60405180910390fd5b600b54341015611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105b90613b1b565b60405180910390fd5b61106f336001611db3565b8260106000838152602001908152602001600020908161108f919061388e565b50816011600083815260200190815260200160002090816110b0919061388e565b507f90ddedd5a25821bba11fbb98de02ec1f75c1be90ae147d6450ce873e7b78b5d8336040516110e09190612e9d565b60405180910390a1506110f1611dd1565b5050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606003805461112e906136bb565b80601f016020809104026020016040519081016040528092919081815260200182805461115a906136bb565b80156111a75780601f1061117c576101008083540402835291602001916111a7565b820191906000526020600020905b81548152906001019060200180831161118a57829003601f168201915b5050505050905090565b600c5481565b606060006111c3610ab9565b905060008167ffffffffffffffff8111156111e1576111e0612fab565b5b60405190808252806020026020018201604052801561120f5781602001602082028036833780820191505090505b50905060005b828110156112865761122681610d25565b82828151811061123957611238613b3b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808061127e90613b6a565b915050611215565b50809250505090565b8161129981611755565b6112a38383611ddb565b505050565b833373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146112e6576112e533611755565b5b6112f285858585611f52565b5050505050565b606061130482611707565b611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133a90613c24565b60405180910390fd5b6000600d548310611389576040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152506113c0565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b9050600061141760116000868152602001908152602001600020600e60106000888152602001908152602001600020856040516020016114039493929190613ecb565b604051602081830303815290604052611fce565b90508060405160200161142a9190613f8c565b60405160208183030381529060405292505050919050565b600a5481565b611450611971565b80601160008481526020019081526020016000209081611470919061388e565b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611511611971565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157790614020565b60405180910390fd5b61158981611c9e565b50565b611594611971565b80600c8190555050565b6115a6611971565b600d548211156115eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e29061408c565b60405180910390fd5b8051821461162e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611625906140f8565b60405180910390fd5b60005b8281101561168e5781818151811061164c5761164b613b3b565b5b602002602001015160106000611660610ab9565b8152602001908152602001600020908161167a919061388e565b50808061168690613b6a565b915050611631565b506116993383611db3565b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008161171261195c565b11158015611721575060005482105b801561174e575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b111561184f576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430836040518363ffffffff1660e01b81526004016117cc929190614118565b602060405180830381865afa1580156117e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180d9190614156565b61184e57806040517fede71dcc0000000000000000000000000000000000000000000000000000000081526004016118459190612e9d565b60405180910390fd5b5b50565b600061185d82610d25565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118c4576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166118e3612131565b73ffffffffffffffffffffffffffffffffffffffff161415801561191557506119138161190e612131565b611475565b155b1561194c576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611957838383612139565b505050565b600090565b61196c8383836121eb565b505050565b611979612131565b73ffffffffffffffffffffffffffffffffffffffff166119976110f5565b73ffffffffffffffffffffffffffffffffffffffff16146119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e4906141cf565b60405180910390fd5b565b611a0a838383604051806020016040528060008152506112a8565b505050565b611a17612c35565b600082905080611a2561195c565b11158015611a34575060005481105b15611c67576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff16151515158152505090508060400151611c6557600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611b49578092505050611c99565b5b600115611c6457818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611c5f578092505050611c99565b611b4a565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600260095403611da9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da09061423b565b60405180910390fd5b6002600981905550565b611dcd8282604051806020016040528060008152506126da565b5050565b6001600981905550565b611de3612131565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e47576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060076000611e54612131565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611f01612131565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611f469190612d2c565b60405180910390a35050565b611f5d8484846121eb565b611f7c8373ffffffffffffffffffffffffffffffffffffffff166126ec565b8015611f915750611f8f8484848461270f565b155b15611fc8576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b60606000825103611ff05760405180602001604052806000815250905061212c565b60006040518060600160405280604081526020016143e1604091399050600060036002855161201f9190613a2f565b612029919061428a565b600461203591906142bb565b67ffffffffffffffff81111561204e5761204d612fab565b5b6040519080825280601f01601f1916602001820160405280156120805781602001600182028036833780820191505090505b509050600182016020820185865187015b808210156120ec576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f8116850151845360018401935050612091565b5050600386510660018114612108576002811461211b57612123565b603d6001830353603d6002830353612123565b603d60018303535b50505080925050505b919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006121f682611a0f565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1661221d612131565b73ffffffffffffffffffffffffffffffffffffffff161480612250575061224f826000015161224a612131565b611475565b5b80612295575061225e612131565b73ffffffffffffffffffffffffffffffffffffffff1661227d84610a24565b73ffffffffffffffffffffffffffffffffffffffff16145b9050806122ce576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612337576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361239d576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123aa858585600161285f565b6123ba6000848460000151612139565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361266a576000548110156126695782600001516004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46126d38585856001612865565b5050505050565b6126e7838383600161286b565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612735612131565b8786866040518563ffffffff1660e01b81526004016127579493929190614352565b6020604051808303816000875af192505050801561279357506040513d601f19601f8201168201806040525081019061279091906143b3565b60015b61280c573d80600081146127c3576040519150601f19603f3d011682016040523d82523d6000602084013e6127c8565b606091505b506000815103612804576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036128d7576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008403612911576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61291e600086838761285f565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008582019050838015612ae85750612ae78773ffffffffffffffffffffffffffffffffffffffff166126ec565b5b15612bad575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612b5d600088848060010195508861270f565b612b93576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808203612aee578260005414612ba857600080fd5b612c18565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808203612bae575b816000819055505050612c2e6000868387612865565b5050505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612cc181612c8c565b8114612ccc57600080fd5b50565b600081359050612cde81612cb8565b92915050565b600060208284031215612cfa57612cf9612c82565b5b6000612d0884828501612ccf565b91505092915050565b60008115159050919050565b612d2681612d11565b82525050565b6000602082019050612d416000830184612d1d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d81578082015181840152602081019050612d66565b60008484015250505050565b6000601f19601f8301169050919050565b6000612da982612d47565b612db38185612d52565b9350612dc3818560208601612d63565b612dcc81612d8d565b840191505092915050565b60006020820190508181036000830152612df18184612d9e565b905092915050565b6000819050919050565b612e0c81612df9565b8114612e1757600080fd5b50565b600081359050612e2981612e03565b92915050565b600060208284031215612e4557612e44612c82565b5b6000612e5384828501612e1a565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e8782612e5c565b9050919050565b612e9781612e7c565b82525050565b6000602082019050612eb26000830184612e8e565b92915050565b612ec181612e7c565b8114612ecc57600080fd5b50565b600081359050612ede81612eb8565b92915050565b60008060408385031215612efb57612efa612c82565b5b6000612f0985828601612ecf565b9250506020612f1a85828601612e1a565b9150509250929050565b612f2d81612df9565b82525050565b6000602082019050612f486000830184612f24565b92915050565b600080600060608486031215612f6757612f66612c82565b5b6000612f7586828701612ecf565b9350506020612f8686828701612ecf565b9250506040612f9786828701612e1a565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612fe382612d8d565b810181811067ffffffffffffffff8211171561300257613001612fab565b5b80604052505050565b6000613015612c78565b90506130218282612fda565b919050565b600067ffffffffffffffff82111561304157613040612fab565b5b61304a82612d8d565b9050602081019050919050565b82818337600083830152505050565b600061307961307484613026565b61300b565b90508281526020810184848401111561309557613094612fa6565b5b6130a0848285613057565b509392505050565b600082601f8301126130bd576130bc612fa1565b5b81356130cd848260208601613066565b91505092915050565b6000602082840312156130ec576130eb612c82565b5b600082013567ffffffffffffffff81111561310a57613109612c87565b5b613116848285016130a8565b91505092915050565b6000819050919050565b600061314461313f61313a84612e5c565b61311f565b612e5c565b9050919050565b600061315682613129565b9050919050565b60006131688261314b565b9050919050565b6131788161315d565b82525050565b6000602082019050613193600083018461316f565b92915050565b6000602082840312156131af576131ae612c82565b5b60006131bd84828501612ecf565b91505092915050565b600080604083850312156131dd576131dc612c82565b5b600083013567ffffffffffffffff8111156131fb576131fa612c87565b5b613207858286016130a8565b925050602083013567ffffffffffffffff81111561322857613227612c87565b5b613234858286016130a8565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61327381612e7c565b82525050565b6000613285838361326a565b60208301905092915050565b6000602082019050919050565b60006132a98261323e565b6132b38185613249565b93506132be8361325a565b8060005b838110156132ef5781516132d68882613279565b97506132e183613291565b9250506001810190506132c2565b5085935050505092915050565b60006020820190508181036000830152613316818461329e565b905092915050565b61332781612d11565b811461333257600080fd5b50565b6000813590506133448161331e565b92915050565b6000806040838503121561336157613360612c82565b5b600061336f85828601612ecf565b925050602061338085828601613335565b9150509250929050565b600067ffffffffffffffff8211156133a5576133a4612fab565b5b6133ae82612d8d565b9050602081019050919050565b60006133ce6133c98461338a565b61300b565b9050828152602081018484840111156133ea576133e9612fa6565b5b6133f5848285613057565b509392505050565b600082601f83011261341257613411612fa1565b5b81356134228482602086016133bb565b91505092915050565b6000806000806080858703121561344557613444612c82565b5b600061345387828801612ecf565b945050602061346487828801612ecf565b935050604061347587828801612e1a565b925050606085013567ffffffffffffffff81111561349657613495612c87565b5b6134a2878288016133fd565b91505092959194509250565b600080604083850312156134c5576134c4612c82565b5b60006134d385828601612e1a565b925050602083013567ffffffffffffffff8111156134f4576134f3612c87565b5b613500858286016130a8565b9150509250929050565b6000806040838503121561352157613520612c82565b5b600061352f85828601612ecf565b925050602061354085828601612ecf565b9150509250929050565b600067ffffffffffffffff82111561356557613564612fab565b5b602082029050602081019050919050565b600080fd5b600061358e6135898461354a565b61300b565b905080838252602082019050602084028301858111156135b1576135b0613576565b5b835b818110156135f857803567ffffffffffffffff8111156135d6576135d5612fa1565b5b8086016135e389826130a8565b855260208501945050506020810190506135b3565b5050509392505050565b600082601f83011261361757613616612fa1565b5b813561362784826020860161357b565b91505092915050565b6000806040838503121561364757613646612c82565b5b600061365585828601612e1a565b925050602083013567ffffffffffffffff81111561367657613675612c87565b5b61368285828601613602565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806136d357607f821691505b6020821081036136e6576136e561368c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261374e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613711565b6137588683613711565b95508019841693508086168417925050509392505050565b600061378b61378661378184612df9565b61311f565b612df9565b9050919050565b6000819050919050565b6137a583613770565b6137b96137b182613792565b84845461371e565b825550505050565b600090565b6137ce6137c1565b6137d981848461379c565b505050565b5b818110156137fd576137f26000826137c6565b6001810190506137df565b5050565b601f82111561384257613813816136ec565b61381c84613701565b8101602085101561382b578190505b61383f61383785613701565b8301826137de565b50505b505050565b600082821c905092915050565b600061386560001984600802613847565b1980831691505092915050565b600061387e8383613854565b9150826002028217905092915050565b61389782612d47565b67ffffffffffffffff8111156138b0576138af612fab565b5b6138ba82546136bb565b6138c5828285613801565b600060209050601f8311600181146138f857600084156138e6578287015190505b6138f08582613872565b865550613958565b601f198416613906866136ec565b60005b8281101561392e57848901518255600182019150602085019450602081019050613909565b8683101561394b5784890151613947601f891682613854565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061399a82612df9565b91506139a583612df9565b92508282039050818111156139bd576139bc613960565b5b92915050565b7f4d696e74696e6720697320706175736564000000000000000000000000000000600082015250565b60006139f9601183612d52565b9150613a04826139c3565b602082019050919050565b60006020820190508181036000830152613a28816139ec565b9050919050565b6000613a3a82612df9565b9150613a4583612df9565b9250828201905080821115613a5d57613a5c613960565b5b92915050565b7f536f7272792c206e6f7420656e6f756768206c65667421000000000000000000600082015250565b6000613a99601783612d52565b9150613aa482613a63565b602082019050919050565b60006020820190508181036000830152613ac881613a8c565b9050919050565b7f536f7272792c206e6f7420656e6f75676820616d6f756e742073656e74210000600082015250565b6000613b05601e83612d52565b9150613b1082613acf565b602082019050919050565b60006020820190508181036000830152613b3481613af8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613b7582612df9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613ba757613ba6613960565b5b600182019050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613c0e602f83612d52565b9150613c1982613bb2565b604082019050919050565b60006020820190508181036000830152613c3d81613c01565b9050919050565b600081905092915050565b7f7b226e616d65223a202252616262697420486f6c65222c20226465736372697060008201527f74696f6e223a2022222c2022696d616765223a2022697066733a2f2f00000000602082015250565b6000613cab603c83613c44565b9150613cb682613c4f565b603c82019050919050565b60008154613cce816136bb565b613cd88186613c44565b94506001821660008114613cf35760018114613d0857613d3b565b60ff1983168652811515820286019350613d3b565b613d11856136ec565b60005b83811015613d3357815481890152600182019150602081019050613d14565b838801955050505b50505092915050565b7f2f7468756d622e706e67222c2022616e696d6174696f6e5f75726c223a20226960008201527f7066733a2f2f0000000000000000000000000000000000000000000000000000602082015250565b6000613da0602683613c44565b9150613dab82613d44565b602682019050919050565b7f2f3f686173683d00000000000000000000000000000000000000000000000000600082015250565b6000613dec600783613c44565b9150613df782613db6565b600782019050919050565b7f26676c61737365733d0000000000000000000000000000000000000000000000600082015250565b6000613e38600983613c44565b9150613e4382613e02565b600982019050919050565b6000613e5982612d47565b613e638185613c44565b9350613e73818560208601612d63565b80840191505092915050565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b6000613eb5600283613c44565b9150613ec082613e7f565b600282019050919050565b6000613ed682613c9e565b9150613ee28287613cc1565b9150613eed82613d93565b9150613ef98286613cc1565b9150613f0482613ddf565b9150613f108285613cc1565b9150613f1b82613e2b565b9150613f278284613e4e565b9150613f3282613ea8565b915081905095945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b6000613f76601d83613c44565b9150613f8182613f40565b601d82019050919050565b6000613f9782613f69565b9150613fa38284613e4e565b915081905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061400a602683612d52565b915061401582613fae565b604082019050919050565b6000602082019050818103600083015261403981613ffd565b9050919050565b7f546f6f206d616e7920676c617373657300000000000000000000000000000000600082015250565b6000614076601083612d52565b915061408182614040565b602082019050919050565b600060208201905081810360008301526140a581614069565b9050919050565b7f486173686573206c656e677468206d69736d6174636800000000000000000000600082015250565b60006140e2601683612d52565b91506140ed826140ac565b602082019050919050565b60006020820190508181036000830152614111816140d5565b9050919050565b600060408201905061412d6000830185612e8e565b61413a6020830184612e8e565b9392505050565b6000815190506141508161331e565b92915050565b60006020828403121561416c5761416b612c82565b5b600061417a84828501614141565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006141b9602083612d52565b91506141c482614183565b602082019050919050565b600060208201905081810360008301526141e8816141ac565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000614225601f83612d52565b9150614230826141ef565b602082019050919050565b6000602082019050818103600083015261425481614218565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061429582612df9565b91506142a083612df9565b9250826142b0576142af61425b565b5b828204905092915050565b60006142c682612df9565b91506142d183612df9565b92508282026142df81612df9565b915082820484148315176142f6576142f5613960565b5b5092915050565b600081519050919050565b600082825260208201905092915050565b6000614324826142fd565b61432e8185614308565b935061433e818560208601612d63565b61434781612d8d565b840191505092915050565b60006080820190506143676000830187612e8e565b6143746020830186612e8e565b6143816040830185612f24565b81810360608301526143938184614319565b905095945050505050565b6000815190506143ad81612cb8565b92915050565b6000602082840312156143c9576143c8612c82565b5b60006143d78482850161439e565b9150509291505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220ff61f583bf83901a57c32467c9276a356b4e9a9abc7c4706aa59c1de4ed22aee64736f6c63430008110033516d54717945527a7367535157655664384c726173635937504545396f63594d4374486848753834436b774a3873