6080604052662386f26fc100006009553480156200001c57600080fd5b506040518060400160405280601281526020017f446547656e6572617469766541706570657300000000000000000000000000008152506040518060400160405280600b81526020017f444547454e4150455045530000000000000000000000000000000000000000008152508160029080519060200190620000a1929190620001cc565b508060039080519060200190620000ba929190620001cc565b50620000cb620000f960201b60201c565b6000819055505050620000f3620000e7620000fe60201b60201c565b6200010660201b60201c565b620002e1565b600090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001da90620002ab565b90600052602060002090601f016020900481019282620001fe57600085556200024a565b82601f106200021957805160ff19168380011785556200024a565b828001600101855582156200024a579182015b82811115620002495782518255916020019190600101906200022c565b5b5090506200025991906200025d565b5090565b5b80821115620002785760008160009055506001016200025e565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002c457607f821691505b60208210811415620002db57620002da6200027c565b5b50919050565b614c4b80620002f16000396000f3fe6080604052600436106102725760003560e01c806363b136c91161014f578063a22cb465116100c1578063cfda71851161007a578063cfda7185146108e8578063d5abeb0114610925578063dc33e68114610950578063e985e9c51461098d578063f2fde38b146109ca578063fd2d2c70146109f357610272565b8063a22cb465146107dc578063a2e575b414610805578063b4dd677714610830578063b64b21ca14610859578063b88d4fde14610882578063c87b56dd146108ab57610272565b80637cb64759116101135780637cb64759146106c757806384115e78146106f0578063847b48201461070c5780638da5cb5b1461074957806395d89b41146107745780639c0a01bc1461079f57610272565b806363b136c914610610578063660ebff61461061a57806367539cac1461065757806370a0823114610673578063715018a6146106b057610272565b806323b872dd116101e857806342842e0e116101ac57806342842e0e146104f057806342b188251461051957806344a0d68a14610556578063518302271461057f5780635e1e1004146105aa5780636352211e146105d357610272565b806323b872dd1461045257806328e31e421461047b5780633b95c10e146104925780633c68eb81146104ae5780633f2981cf146104c557610272565b8063095ea7b31161023a578063095ea7b314610363578063103aa8a11461038c57806311eb3047146103a857806313faede6146103bf57806318160ddd146103ea5780631b5acb8b1461041557610272565b806301ffc9a71461027757806303aa0391146102b457806306fdde03146102be578063081812fc146102e9578063095725e514610326575b600080fd5b34801561028357600080fd5b5061029e600480360381019061029991906138b1565b610a1e565b6040516102ab91906138f9565b60405180910390f35b6102bc610b00565b005b3480156102ca57600080fd5b506102d3610c96565b6040516102e091906139ad565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b9190613a05565b610d28565b60405161031d9190613a73565b60405180910390f35b34801561033257600080fd5b5061034d60048036038101906103489190613aba565b610da4565b60405161035a9190613af6565b60405180910390f35b34801561036f57600080fd5b5061038a60048036038101906103859190613b11565b610dbc565b005b6103a660048036038101906103a19190613a05565b610ec7565b005b3480156103b457600080fd5b506103bd6110b0565b005b3480156103cb57600080fd5b506103d461116b565b6040516103e19190613af6565b60405180910390f35b3480156103f657600080fd5b506103ff611171565b60405161040c9190613af6565b60405180910390f35b34801561042157600080fd5b5061043c60048036038101906104379190613aba565b611188565b6040516104499190613af6565b60405180910390f35b34801561045e57600080fd5b5061047960048036038101906104749190613b51565b6111a0565b005b34801561048757600080fd5b506104906111b0565b005b6104ac60048036038101906104a79190613a05565b61120a565b005b3480156104ba57600080fd5b506104c36113ae565b005b3480156104d157600080fd5b506104da611487565b6040516104e791906138f9565b60405180910390f35b3480156104fc57600080fd5b5061051760048036038101906105129190613b51565b61149a565b005b34801561052557600080fd5b50610540600480360381019061053b9190613aba565b6114ba565b60405161054d9190613af6565b60405180910390f35b34801561056257600080fd5b5061057d60048036038101906105789190613a05565b6114d2565b005b34801561058b57600080fd5b506105946114e4565b6040516105a191906138f9565b60405180910390f35b3480156105b657600080fd5b506105d160048036038101906105cc9190613aba565b6114f7565b005b3480156105df57600080fd5b506105fa60048036038101906105f59190613a05565b611543565b6040516106079190613a73565b60405180910390f35b610618611559565b005b34801561062657600080fd5b50610641600480360381019061063c9190613aba565b611734565b60405161064e9190613af6565b60405180910390f35b610671600480360381019061066c9190613d22565b61193a565b005b34801561067f57600080fd5b5061069a60048036038101906106959190613aba565b611b94565b6040516106a79190613af6565b60405180910390f35b3480156106bc57600080fd5b506106c5611c64565b005b3480156106d357600080fd5b506106ee60048036038101906106e99190613d7e565b611c78565b005b61070a60048036038101906107059190613d22565b611c8a565b005b34801561071857600080fd5b50610733600480360381019061072e9190613aba565b611ef0565b6040516107409190613af6565b60405180910390f35b34801561075557600080fd5b5061075e611f08565b60405161076b9190613a73565b60405180910390f35b34801561078057600080fd5b50610789611f32565b60405161079691906139ad565b60405180910390f35b3480156107ab57600080fd5b506107c660048036038101906107c19190613aba565b611fc4565b6040516107d39190613af6565b60405180910390f35b3480156107e857600080fd5b5061080360048036038101906107fe9190613dd7565b611fdc565b005b34801561081157600080fd5b5061081a612154565b6040516108279190613af6565b60405180910390f35b34801561083c57600080fd5b5061085760048036038101906108529190613b11565b61215a565b005b34801561086557600080fd5b50610880600480360381019061087b9190613e72565b612210565b005b34801561088e57600080fd5b506108a960048036038101906108a49190613f87565b612269565b005b3480156108b757600080fd5b506108d260048036038101906108cd9190613a05565b6122e5565b6040516108df91906139ad565b60405180910390f35b3480156108f457600080fd5b5061090f600480360381019061090a9190613aba565b612409565b60405161091c9190613af6565b60405180910390f35b34801561093157600080fd5b5061093a612421565b6040516109479190613af6565b60405180910390f35b34801561095c57600080fd5b5061097760048036038101906109729190613aba565b612427565b6040516109849190613af6565b60405180910390f35b34801561099957600080fd5b506109b460048036038101906109af919061400a565b612439565b6040516109c191906138f9565b60405180910390f35b3480156109d657600080fd5b506109f160048036038101906109ec9190613aba565b6124cd565b005b3480156109ff57600080fd5b50610a08612551565b604051610a1591906138f9565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ae957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610af95750610af882612564565b5b9050919050565b6000610b0a611171565b90506105dc600182610b1c9190614079565b1115610b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b549061411b565b60405180910390fd5b601260009054906101000a900460ff16610bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba390614187565b60405180910390fd5b600180600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bf99190614079565b1115610c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c31906141f3565b60405180910390fd5b6001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550610c933360016125ce565b50565b606060028054610ca590614242565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd190614242565b8015610d1e5780601f10610cf357610100808354040283529160200191610d1e565b820191906000526020600020905b815481529060010190602001808311610d0157829003601f168201915b5050505050905090565b6000610d33826125ec565b610d69576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600c6020528060005260406000206000915090505481565b6000610dc782611543565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e2f576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e4e61263a565b73ffffffffffffffffffffffffffffffffffffffff1614158015610e805750610e7e81610e7961263a565b612439565b155b15610eb7576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ec2838383612642565b505050565b610ed033611734565b600a819055506000610ee0611171565b90506105dc8282610ef19190614079565b1115610f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f299061411b565b60405180910390fd5b601260019054906101000a900460ff16610f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f78906142c0565b60405180910390fd5b600a5482600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fcf9190614079565b1115611010576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110079061432c565b60405180910390fd5b600954341015611055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104c90614398565b60405180910390fd5b81600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506110ac33836125ce565b5050565b6110b86126f4565b601260029054906101000a900460ff166110e8576001601260026101000a81548160ff0219169083151502179055505b601260019054906101000a900460ff1615611119576000601260016101000a81548160ff0219169083151502179055505b601260009054906101000a900460ff161561114d576000601260006101000a81548160ff0219169083151502179055611168565b6001601260006101000a81548160ff02191690831515021790555b50565b60095481565b600061117b612772565b6001546000540303905090565b600b6020528060005260406000206000915090505481565b6111ab838383612777565b505050565b6111b86126f4565b601260019054906101000a900460ff16156111ec576000601260016101000a81548160ff0219169083151502179055611207565b6001601260016101000a81548160ff02191690831515021790555b50565b61121333611734565b600a819055506000611223611171565b90506105dc82826112349190614079565b1115611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126c9061411b565b60405180910390fd5b601260019054906101000a900460ff166112c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bb906142c0565b60405180910390fd5b600a5482600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113129190614079565b1115611353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134a90614404565b60405180910390fd5b81600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506113aa33836125ce565b5050565b6113b66126f4565b6000601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516113fe90614455565b60006040518083038185875af1925050503d806000811461143b576040519150601f19603f3d011682016040523d82523d6000602084013e611440565b606091505b5050905080611484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147b906144b6565b60405180910390fd5b50565b601260009054906101000a900460ff1681565b6114b583838360405180602001604052806000815250612269565b505050565b60106020528060005260406000206000915090505481565b6114da6126f4565b8060098190555050565b601460009054906101000a900460ff1681565b6114ff6126f4565b80601460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061154e82612c2d565b600001519050919050565b6000611563611171565b90506105dc6001826115759190614079565b11156115b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ad9061411b565b60405180910390fd5b601260009054906101000a900460ff16611605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fc90614187565b60405180910390fd5b60095434101561164a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164190614398565b60405180910390fd5b600180601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116979190614079565b11156116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf90614522565b60405180910390fd5b6001601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506117313360016125ce565b50565b6000807391c8b5c50a35e461dc7d7ffbc301c365b83f01f873ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b81526004016117849190613a73565b60206040518083038186803b15801561179c57600080fd5b505afa1580156117b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d49190614557565b7377640cf3f89a4f1b5ca3a1e5c87f3f5b12ebf87e73ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b81526004016118219190613a73565b60206040518083038186803b15801561183957600080fd5b505afa15801561184d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118719190614557565b73b5596d75c727559463836eb67aa5cd574a43c7f073ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b81526004016118be9190613a73565b60206040518083038186803b1580156118d657600080fd5b505afa1580156118ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190e9190614557565b6119189190614079565b6119229190614079565b90506001811061193157600290505b80915050919050565b6000611944611171565b90506105dc6001826119569190614079565b1115611997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198e9061411b565b60405180910390fd5b60006119a161263a565b6040516020016119b191906145cc565b6040516020818303038152906040528051906020012090506119d68460115483612ebc565b611a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0c90614633565b60405180910390fd5b601260019054906101000a900460ff16611a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5b906142c0565b60405180910390fd5b600954341015611aa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa090614398565b60405180910390fd5b600283600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611af69190614079565b1115611b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2e9061469f565b60405180910390fd5b82600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550611b8e33846125ce565b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bfc576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b611c6c6126f4565b611c766000612ed3565b565b611c806126f4565b8060118190555050565b6000611c94611171565b90506105dc600182611ca69190614079565b1115611ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cde9061411b565b60405180910390fd5b6000611cf161263a565b604051602001611d0191906145cc565b604051602081830303815290604052805190602001209050611d268460115483612ebc565b611d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5c90614633565b60405180910390fd5b601260019054906101000a900460ff16611db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dab906142c0565b60405180910390fd5b6105dc600183611dc49190614079565b1115611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc9061411b565b60405180910390fd5b600283600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e529190614079565b1115611e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8a9061470b565b60405180910390fd5b82600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550611eea33846125ce565b50505050565b600e6020528060005260406000206000915090505481565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054611f4190614242565b80601f0160208091040260200160405190810160405280929190818152602001828054611f6d90614242565b8015611fba5780601f10611f8f57610100808354040283529160200191611fba565b820191906000526020600020905b815481529060010190602001808311611f9d57829003601f168201915b5050505050905090565b600d6020528060005260406000206000915090505481565b611fe461263a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612049576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806007600061205661263a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661210361263a565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161214891906138f9565b60405180910390a35050565b600a5481565b6121626126f4565b600061216c611171565b90506105dc828261217d9190614079565b11156121be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b59061411b565b60405180910390fd5b60008211612201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f890614777565b60405180910390fd5b61220b83836125ce565b505050565b6122186126f4565b601460009054906101000a900460ff161580156122325750805b156122525780601460006101000a81548160ff0219169083151502179055505b82826013919061226392919061375f565b50505050565b612274848484612777565b6122938373ffffffffffffffffffffffffffffffffffffffff16612f99565b80156122a857506122a684848484612fbc565b155b156122df576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b60606122f0826125ec565b61232f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612326906147e3565b60405180910390fd5b601460009054906101000a900460ff161561237657601361234f8361311c565b6040516020016123609291906148d3565b6040516020818303038152906040529050612404565b6013805461238390614242565b80601f01602080910402602001604051908101604052809291908181526020018280546123af90614242565b80156123fc5780601f106123d1576101008083540402835291602001916123fc565b820191906000526020600020905b8154815290600101906020018083116123df57829003601f168201915b505050505090505b919050565b600f6020528060005260406000206000915090505481565b6105dc81565b60006124328261327d565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6124d56126f4565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253c90614969565b60405180910390fd5b61254e81612ed3565b50565b601260019054906101000a900460ff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6125e88282604051806020016040528060008152506132e7565b5050565b6000816125f7612772565b11158015612606575060005482105b8015612633575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6126fc61263a565b73ffffffffffffffffffffffffffffffffffffffff1661271a611f08565b73ffffffffffffffffffffffffffffffffffffffff1614612770576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612767906149d5565b60405180910390fd5b565b600090565b600061278282612c2d565b90508373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146127ed576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff1661280e61263a565b73ffffffffffffffffffffffffffffffffffffffff16148061283d575061283c8561283761263a565b612439565b5b80612882575061284b61263a565b73ffffffffffffffffffffffffffffffffffffffff1661286a84610d28565b73ffffffffffffffffffffffffffffffffffffffff16145b9050806128bb576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612922576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61292f85858560016132f9565b61293b60008487612642565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600460008581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060006001850190506000600460008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612bbb576000548214612bba57878160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084602001518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612c2685858560016132ff565b5050505050565b612c356137e5565b600082905080612c43612772565b11158015612c52575060005481105b15612e85576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff16151515158152505090508060400151612e8357600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612d67578092505050612eb7565b5b600115612e8257818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612e7d578092505050612eb7565b612d68565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b600082612ec98584613305565b1490509392505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612fe261263a565b8786866040518563ffffffff1660e01b81526004016130049493929190614a4a565b602060405180830381600087803b15801561301e57600080fd5b505af192505050801561304f57506040513d601f19601f8201168201806040525081019061304c9190614aab565b60015b6130c9573d806000811461307f576040519150601f19603f3d011682016040523d82523d6000602084013e613084565b606091505b506000815114156130c1576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60606000821415613164576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613278565b600082905060005b6000821461319657808061317f90614ad8565b915050600a8261318f9190614b50565b915061316c565b60008167ffffffffffffffff8111156131b2576131b1613ba9565b5b6040519080825280601f01601f1916602001820160405280156131e45781602001600182028036833780820191505090505b5090505b60008514613271576001826131fd9190614b81565b9150600a8561320c9190614bb5565b60306132189190614079565b60f81b81838151811061322e5761322d614be6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561326a9190614b50565b94506131e8565b8093505050505b919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b6132f4838383600161337a565b505050565b50505050565b50505050565b60008082905060005b845181101561336f57600085828151811061332c5761332b614be6565b5b6020026020010151905080831161334e576133478382613748565b925061335b565b6133588184613748565b92505b50808061336790614ad8565b91505061330e565b508091505092915050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156133e7576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000841415613422576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61342f60008683876132f9565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000819050600085820190508380156135f957506135f88773ffffffffffffffffffffffffffffffffffffffff16612f99565b5b156136bf575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461366e6000888480600101955088612fbc565b6136a4576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808214156135ff5782600054146136ba57600080fd5b61372b565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808214156136c0575b81600081905550505061374160008683876132ff565b5050505050565b600082600052816020526040600020905092915050565b82805461376b90614242565b90600052602060002090601f01602090048101928261378d57600085556137d4565b82601f106137a657803560ff19168380011785556137d4565b828001600101855582156137d4579182015b828111156137d35782358255916020019190600101906137b8565b5b5090506137e19190613828565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b80821115613841576000816000905550600101613829565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61388e81613859565b811461389957600080fd5b50565b6000813590506138ab81613885565b92915050565b6000602082840312156138c7576138c661384f565b5b60006138d58482850161389c565b91505092915050565b60008115159050919050565b6138f3816138de565b82525050565b600060208201905061390e60008301846138ea565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561394e578082015181840152602081019050613933565b8381111561395d576000848401525b50505050565b6000601f19601f8301169050919050565b600061397f82613914565b613989818561391f565b9350613999818560208601613930565b6139a281613963565b840191505092915050565b600060208201905081810360008301526139c78184613974565b905092915050565b6000819050919050565b6139e2816139cf565b81146139ed57600080fd5b50565b6000813590506139ff816139d9565b92915050565b600060208284031215613a1b57613a1a61384f565b5b6000613a29848285016139f0565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a5d82613a32565b9050919050565b613a6d81613a52565b82525050565b6000602082019050613a886000830184613a64565b92915050565b613a9781613a52565b8114613aa257600080fd5b50565b600081359050613ab481613a8e565b92915050565b600060208284031215613ad057613acf61384f565b5b6000613ade84828501613aa5565b91505092915050565b613af0816139cf565b82525050565b6000602082019050613b0b6000830184613ae7565b92915050565b60008060408385031215613b2857613b2761384f565b5b6000613b3685828601613aa5565b9250506020613b47858286016139f0565b9150509250929050565b600080600060608486031215613b6a57613b6961384f565b5b6000613b7886828701613aa5565b9350506020613b8986828701613aa5565b9250506040613b9a868287016139f0565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613be182613963565b810181811067ffffffffffffffff82111715613c0057613bff613ba9565b5b80604052505050565b6000613c13613845565b9050613c1f8282613bd8565b919050565b600067ffffffffffffffff821115613c3f57613c3e613ba9565b5b602082029050602081019050919050565b600080fd5b6000819050919050565b613c6881613c55565b8114613c7357600080fd5b50565b600081359050613c8581613c5f565b92915050565b6000613c9e613c9984613c24565b613c09565b90508083825260208201905060208402830185811115613cc157613cc0613c50565b5b835b81811015613cea5780613cd68882613c76565b845260208401935050602081019050613cc3565b5050509392505050565b600082601f830112613d0957613d08613ba4565b5b8135613d19848260208601613c8b565b91505092915050565b60008060408385031215613d3957613d3861384f565b5b600083013567ffffffffffffffff811115613d5757613d56613854565b5b613d6385828601613cf4565b9250506020613d74858286016139f0565b9150509250929050565b600060208284031215613d9457613d9361384f565b5b6000613da284828501613c76565b91505092915050565b613db4816138de565b8114613dbf57600080fd5b50565b600081359050613dd181613dab565b92915050565b60008060408385031215613dee57613ded61384f565b5b6000613dfc85828601613aa5565b9250506020613e0d85828601613dc2565b9150509250929050565b600080fd5b60008083601f840112613e3257613e31613ba4565b5b8235905067ffffffffffffffff811115613e4f57613e4e613e17565b5b602083019150836001820283011115613e6b57613e6a613c50565b5b9250929050565b600080600060408486031215613e8b57613e8a61384f565b5b600084013567ffffffffffffffff811115613ea957613ea8613854565b5b613eb586828701613e1c565b93509350506020613ec886828701613dc2565b9150509250925092565b600080fd5b600067ffffffffffffffff821115613ef257613ef1613ba9565b5b613efb82613963565b9050602081019050919050565b82818337600083830152505050565b6000613f2a613f2584613ed7565b613c09565b905082815260208101848484011115613f4657613f45613ed2565b5b613f51848285613f08565b509392505050565b600082601f830112613f6e57613f6d613ba4565b5b8135613f7e848260208601613f17565b91505092915050565b60008060008060808587031215613fa157613fa061384f565b5b6000613faf87828801613aa5565b9450506020613fc087828801613aa5565b9350506040613fd1878288016139f0565b925050606085013567ffffffffffffffff811115613ff257613ff1613854565b5b613ffe87828801613f59565b91505092959194509250565b600080604083850312156140215761402061384f565b5b600061402f85828601613aa5565b925050602061404085828601613aa5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614084826139cf565b915061408f836139cf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156140c4576140c361404a565b5b828201905092915050565b7f43616e7420676f206f76657220737570706c7900000000000000000000000000600082015250565b600061410560138361391f565b9150614110826140cf565b602082019050919050565b60006020820190508181036000830152614134816140f8565b9050919050565b7f5055424c49435f494e4143544956450000000000000000000000000000000000600082015250565b6000614171600f8361391f565b915061417c8261413b565b602082019050919050565b600060208201905081810360008301526141a081614164565b9050919050565b7f5055424c4943465245455f4d4158454400000000000000000000000000000000600082015250565b60006141dd60108361391f565b91506141e8826141a7565b602082019050919050565b6000602082019050818103600083015261420c816141d0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061425a57607f821691505b6020821081141561426e5761426d614213565b5b50919050565b7f5052494f524954594c4953545f494e4143544956450000000000000000000000600082015250565b60006142aa60158361391f565b91506142b582614274565b602082019050919050565b600060208201905081810360008301526142d98161429d565b9050919050565b7f5052494f524954594c495354504149445f4d4158454400000000000000000000600082015250565b600061431660168361391f565b9150614321826142e0565b602082019050919050565b6000602082019050818103600083015261434581614309565b9050919050565b7f494e434f52524543545f45544800000000000000000000000000000000000000600082015250565b6000614382600d8361391f565b915061438d8261434c565b602082019050919050565b600060208201905081810360008301526143b181614375565b9050919050565b7f5052494f524954594c495354465245455f4d4158454400000000000000000000600082015250565b60006143ee60168361391f565b91506143f9826143b8565b602082019050919050565b6000602082019050818103600083015261441d816143e1565b9050919050565b600081905092915050565b50565b600061443f600083614424565b915061444a8261442f565b600082019050919050565b600061446082614432565b9150819050919050565b7f5452414e534645525f4641494c45440000000000000000000000000000000000600082015250565b60006144a0600f8361391f565b91506144ab8261446a565b602082019050919050565b600060208201905081810360008301526144cf81614493565b9050919050565b7f5055424c4943504149445f4d4158454400000000000000000000000000000000600082015250565b600061450c60108361391f565b9150614517826144d6565b602082019050919050565b6000602082019050818103600083015261453b816144ff565b9050919050565b600081519050614551816139d9565b92915050565b60006020828403121561456d5761456c61384f565b5b600061457b84828501614542565b91505092915050565b60008160601b9050919050565b600061459c82614584565b9050919050565b60006145ae82614591565b9050919050565b6145c66145c182613a52565b6145a3565b82525050565b60006145d882846145b5565b60148201915081905092915050565b7f496e76616c69642070726f6f6621000000000000000000000000000000000000600082015250565b600061461d600e8361391f565b9150614628826145e7565b602082019050919050565b6000602082019050818103600083015261464c81614610565b9050919050565b7f574c504149445f4d415845440000000000000000000000000000000000000000600082015250565b6000614689600c8361391f565b915061469482614653565b602082019050919050565b600060208201905081810360008301526146b88161467c565b9050919050565b7f574c465245455f4d415845440000000000000000000000000000000000000000600082015250565b60006146f5600c8361391f565b9150614700826146bf565b602082019050919050565b60006020820190508181036000830152614724816146e8565b9050919050565b7f494e56414c49445f5155414e5449545900000000000000000000000000000000600082015250565b600061476160108361391f565b915061476c8261472b565b602082019050919050565b6000602082019050818103600083015261479081614754565b9050919050565b7f43616e6e6f74207175657279206e6f6e2d6578697374656e7420746f6b656e00600082015250565b60006147cd601f8361391f565b91506147d882614797565b602082019050919050565b600060208201905081810360008301526147fc816147c0565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b6000815461483081614242565b61483a8186614803565b94506001821660008114614855576001811461486657614899565b60ff19831686528186019350614899565b61486f8561480e565b60005b8381101561489157815481890152600182019150602081019050614872565b838801955050505b50505092915050565b60006148ad82613914565b6148b78185614803565b93506148c7818560208601613930565b80840191505092915050565b60006148df8285614823565b91506148eb82846148a2565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061495360268361391f565b915061495e826148f7565b604082019050919050565b6000602082019050818103600083015261498281614946565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006149bf60208361391f565b91506149ca82614989565b602082019050919050565b600060208201905081810360008301526149ee816149b2565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000614a1c826149f5565b614a268185614a00565b9350614a36818560208601613930565b614a3f81613963565b840191505092915050565b6000608082019050614a5f6000830187613a64565b614a6c6020830186613a64565b614a796040830185613ae7565b8181036060830152614a8b8184614a11565b905095945050505050565b600081519050614aa581613885565b92915050565b600060208284031215614ac157614ac061384f565b5b6000614acf84828501614a96565b91505092915050565b6000614ae3826139cf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614b1657614b1561404a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614b5b826139cf565b9150614b66836139cf565b925082614b7657614b75614b21565b5b828204905092915050565b6000614b8c826139cf565b9150614b97836139cf565b925082821015614baa57614ba961404a565b5b828203905092915050565b6000614bc0826139cf565b9150614bcb836139cf565b925082614bdb57614bda614b21565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212200a4e163c704c5daf23aaa68a20c4a68f303fd05a9bceefb086184e7c07e2f27164736f6c63430008090033