Loading
60806040526000600d556000600e556000601060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506040518060200160405280600081525060149081620000609190620007ef565b506001601560006101000a81548160ff0219169083151502179055506001601560016101000a81548160ff0219169083151502179055506000601560026101000a81548160ff021916908315150217905550348015620000bf57600080fd5b5060405162004cdc38038062004cdc8339818101604052810190620000e5919062000ca5565b806000015181602001518160029081620001009190620007ef565b508060039081620001129190620007ef565b5062000123620002c760201b60201c565b60008190555050506200014b6200013f620002d060201b60201c565b620002d860201b60201c565b8060e0015160119081620001609190620007ef565b508060400151600d819055508060600151600f819055508060800151601290816200018c9190620007ef565b508060a001516013819055508060c0015160149081620001ad9190620007ef565b50806101200151601560006101000a81548160ff021916908315150217905550620001f3620001e16200039e60201b60201c565b826101000151620003c860201b60201c565b806101000151601060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506040516020016200023a9062000d2b565b604051602081830303815290604052805190602001208160c0015160405160200162000267919062000d79565b6040516020818303038152906040528051906020012003620002a4576000601560026101000a81548160ff021916908315150217905550620002c0565b6001601560026101000a81548160ff0219169083151502179055505b5062000ead565b60006001905090565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620003d86200056b60201b60201c565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff16111562000439576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004309062000e19565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004ab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004a29062000e8b565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600860008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b6000612710905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005f757607f821691505b6020821081036200060d576200060c620005af565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000638565b62000683868362000638565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620006d0620006ca620006c4846200069b565b620006a5565b6200069b565b9050919050565b6000819050919050565b620006ec83620006af565b62000704620006fb82620006d7565b84845462000645565b825550505050565b600090565b6200071b6200070c565b62000728818484620006e1565b505050565b5b8181101562000750576200074460008262000711565b6001810190506200072e565b5050565b601f8211156200079f57620007698162000613565b620007748462000628565b8101602085101562000784578190505b6200079c620007938562000628565b8301826200072d565b50505b505050565b600082821c905092915050565b6000620007c460001984600802620007a4565b1980831691505092915050565b6000620007df8383620007b1565b9150826002028217905092915050565b620007fa8262000575565b67ffffffffffffffff81111562000816576200081562000580565b5b620008228254620005de565b6200082f82828562000754565b600060209050601f83116001811462000867576000841562000852578287015190505b6200085e8582620007d1565b865550620008ce565b601f198416620008778662000613565b60005b82811015620008a1578489015182556001820191506020850194506020810190506200087a565b86831015620008c15784890151620008bd601f891682620007b1565b8355505b6001600288020188555050505b505050505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200090b82620008ef565b810181811067ffffffffffffffff821117156200092d576200092c62000580565b5b80604052505050565b600062000942620008d6565b905062000950828262000900565b919050565b600080fd5b600080fd5b600080fd5b600067ffffffffffffffff82111562000982576200098162000580565b5b6200098d82620008ef565b9050602081019050919050565b60005b83811015620009ba5780820151818401526020810190506200099d565b60008484015250505050565b6000620009dd620009d78462000964565b62000936565b905082815260208101848484011115620009fc57620009fb6200095f565b5b62000a098482856200099a565b509392505050565b600082601f83011262000a295762000a286200095a565b5b815162000a3b848260208601620009c6565b91505092915050565b62000a4f816200069b565b811462000a5b57600080fd5b50565b60008151905062000a6f8162000a44565b92915050565b60006bffffffffffffffffffffffff82169050919050565b62000a988162000a75565b811462000aa457600080fd5b50565b60008151905062000ab88162000a8d565b92915050565b60008115159050919050565b62000ad58162000abe565b811462000ae157600080fd5b50565b60008151905062000af58162000aca565b92915050565b6000610140828403121562000b155762000b14620008ea565b5b62000b2261014062000936565b9050600082015167ffffffffffffffff81111562000b455762000b4462000955565b5b62000b538482850162000a11565b600083015250602082015167ffffffffffffffff81111562000b7a5762000b7962000955565b5b62000b888482850162000a11565b602083015250604062000b9e8482850162000a5e565b604083015250606062000bb48482850162000a5e565b606083015250608082015167ffffffffffffffff81111562000bdb5762000bda62000955565b5b62000be98482850162000a11565b60808301525060a062000bff8482850162000a5e565b60a08301525060c082015167ffffffffffffffff81111562000c265762000c2562000955565b5b62000c348482850162000a11565b60c08301525060e082015167ffffffffffffffff81111562000c5b5762000c5a62000955565b5b62000c698482850162000a11565b60e08301525061010062000c808482850162000aa7565b6101008301525061012062000c988482850162000ae4565b6101208301525092915050565b60006020828403121562000cbe5762000cbd620008e0565b5b600082015167ffffffffffffffff81111562000cdf5762000cde620008e5565b5b62000ced8482850162000afb565b91505092915050565b600081905092915050565b50565b600062000d1360008362000cf6565b915062000d208262000d01565b600082019050919050565b600062000d388262000d04565b9150819050919050565b600062000d4f8262000575565b62000d5b818562000cf6565b935062000d6d8185602086016200099a565b80840191505092915050565b600062000d87828462000d42565b915081905092915050565b600082825260208201905092915050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b600062000e01602a8362000d92565b915062000e0e8262000da3565b604082019050919050565b6000602082019050818103600083015262000e348162000df2565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b600062000e7360198362000d92565b915062000e808262000e3b565b602082019050919050565b6000602082019050818103600083015262000ea68162000e64565b9050919050565b613e1f8062000ebd6000396000f3fe6080604052600436106102515760003560e01c80636352211e11610139578063ad4746db116100b6578063ce40b03f1161007a578063ce40b03f14610894578063cf82ea2d146108bf578063e8789f99146108e8578063e985e9c514610925578063f2fde38b14610962578063f7ea7a3d1461098b57610251565b8063ad4746db146107bc578063b2b8fd90146107e7578063b5c19df314610812578063b88d4fde1461083b578063c87b56dd1461085757610251565b80638da5cb5b116100fd5780638da5cb5b146106eb57806391b7f5ed1461071657806395d89b411461073f5780639cd237071461076a578063a22cb4651461079357610251565b80636352211e1461061557806370a0823114610652578063715018a61461068f57806377097fc8146106a657806388459f9a146106c257610251565b806323b872dd116101d2578063358981f911610196578063358981f914610514578063380b4df014610551578063391176681461058e5780633ccfd60b146105b757806342842e0e146105ce578063434d276f146105ea57610251565b806323b872dd146104275780632a55205a14610443578063324536eb146104815780633406c726146104ac5780633523ad6b146104e957610251565b80630eb7b352116102195780630eb7b352146103405780631675f4551461036b57806318160ddd146103a8578063224ecd19146103d3578063228336d1146103fc57610251565b806301ffc9a71461025657806302fa7c471461029357806306fdde03146102bc578063081812fc146102e7578063095ea7b314610324575b600080fd5b34801561026257600080fd5b5061027d60048036038101906102789190612932565b6109b4565b60405161028a919061297a565b60405180910390f35b34801561029f57600080fd5b506102ba60048036038101906102b59190612a37565b6109c6565b005b3480156102c857600080fd5b506102d1610a0d565b6040516102de9190612b07565b60405180910390f35b3480156102f357600080fd5b5061030e60048036038101906103099190612b5f565b610a9f565b60405161031b9190612b9b565b60405180910390f35b61033e60048036038101906103399190612bb6565b610b1e565b005b34801561034c57600080fd5b50610355610c62565b604051610362919061297a565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190612b5f565b610c75565b60405161039f9190612b07565b60405180910390f35b3480156103b457600080fd5b506103bd610d15565b6040516103ca9190612c05565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f59190612d55565b610d2c565b005b34801561040857600080fd5b50610411610dd4565b60405161041e9190612dad565b60405180910390f35b610441600480360381019061043c9190612dc8565b610df2565b005b34801561044f57600080fd5b5061046a60048036038101906104659190612e1b565b611114565b604051610478929190612e5b565b60405180910390f35b34801561048d57600080fd5b506104966112fe565b6040516104a39190612c05565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce9190612e84565b611304565b6040516104e09190612c05565b60405180910390f35b3480156104f557600080fd5b506104fe61131c565b60405161050b9190612c05565b60405180910390f35b34801561052057600080fd5b5061053b60048036038101906105369190612b5f565b611322565b6040516105489190612c05565b60405180910390f35b34801561055d57600080fd5b5061057860048036038101906105739190612b5f565b611346565b6040516105859190612b9b565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b09190612b5f565b611385565b005b3480156105c357600080fd5b506105cc611397565b005b6105e860048036038101906105e39190612dc8565b611448565b005b3480156105f657600080fd5b506105ff611468565b60405161060c919061297a565b60405180910390f35b34801561062157600080fd5b5061063c60048036038101906106379190612b5f565b61147b565b6040516106499190612b9b565b60405180910390f35b34801561065e57600080fd5b5061067960048036038101906106749190612e84565b61148d565b6040516106869190612c05565b60405180910390f35b34801561069b57600080fd5b506106a4611545565b005b6106c060048036038101906106bb9190612eb1565b611559565b005b3480156106ce57600080fd5b506106e960048036038101906106e49190612f39565b6118c4565b005b3480156106f757600080fd5b506107006118e9565b60405161070d9190612b9b565b60405180910390f35b34801561072257600080fd5b5061073d60048036038101906107389190612b5f565b611913565b005b34801561074b57600080fd5b50610754611925565b6040516107619190612b07565b60405180910390f35b34801561077657600080fd5b50610791600480360381019061078c9190612f39565b6119b7565b005b34801561079f57600080fd5b506107ba60048036038101906107b59190612f66565b6119dc565b005b3480156107c857600080fd5b506107d1611ae7565b6040516107de9190612c05565b60405180910390f35b3480156107f357600080fd5b506107fc611aed565b604051610809919061297a565b60405180910390f35b34801561081e57600080fd5b5061083960048036038101906108349190612d55565b611b00565b005b61085560048036038101906108509190613047565b611b1b565b005b34801561086357600080fd5b5061087e60048036038101906108799190612b5f565b611b8e565b60405161088b9190612b07565b60405180910390f35b3480156108a057600080fd5b506108a9611c67565b6040516108b69190612c05565b60405180910390f35b3480156108cb57600080fd5b506108e660048036038101906108e19190613108565b611c6d565b005b3480156108f457600080fd5b5061090f600480360381019061090a9190612b5f565b611d05565b60405161091c919061297a565b60405180910390f35b34801561093157600080fd5b5061094c60048036038101906109479190613148565b611d25565b604051610959919061297a565b60405180910390f35b34801561096e57600080fd5b5061098960048036038101906109849190612e84565b611db9565b005b34801561099757600080fd5b506109b260048036038101906109ad9190612b5f565b611e3c565b005b60006109bf82611e92565b9050919050565b6109ce611f0c565b6109d88282611f8a565b80601060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505050565b606060028054610a1c906131b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610a48906131b7565b8015610a955780601f10610a6a57610100808354040283529160200191610a95565b820191906000526020600020905b815481529060010190602001808311610a7857829003601f168201915b5050505050905090565b6000610aaa8261211f565b610ae0576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610b298261147b565b90508073ffffffffffffffffffffffffffffffffffffffff16610b4a61217e565b73ffffffffffffffffffffffffffffffffffffffff1614610bad57610b7681610b7161217e565b611d25565b610bac576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b601560029054906101000a900460ff1681565b60186020528060005260406000206000915090508054610c94906131b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc0906131b7565b8015610d0d5780601f10610ce257610100808354040283529160200191610d0d565b820191906000526020600020905b815481529060010190602001808311610cf057829003601f168201915b505050505081565b6000610d1f612186565b6001546000540303905090565b610d34611f0c565b8060149081610d439190613394565b50604051602001610d5390613497565b6040516020818303038152906040528051906020012081604051602001610d7a91906134dd565b6040516020818303038152906040528051906020012003610db5576000601560026101000a81548160ff021916908315150217905550610dd1565b6001601560026101000a81548160ff0219169083151502179055505b50565b601060009054906101000a90046bffffffffffffffffffffffff1681565b6000610dfd8261218f565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610e64576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610e708461225b565b91509150610e868187610e8161217e565b612282565b610ed257610e9b86610e9661217e565b611d25565b610ed1576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610f38576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f4586868660016122c6565b8015610f5057600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001019190508190555061101e85610ffa888887612350565b7c020000000000000000000000000000000000000000000000000000000017612378565b600460008681526020019081526020016000208190555060007c02000000000000000000000000000000000000000000000000000000008416036110a457600060018501905060006004600083815260200190815260200160002054036110a25760005481146110a1578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461110c86868660016123a3565b505050505050565b6000806000600960008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036112a95760086040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b60006112b36123a9565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff16866112df9190613523565b6112e99190613594565b90508160000151819350935050509250929050565b600d5481565b60166020528060005260406000206000915090505481565b600e5481565b600c818154811061133257600080fd5b906000526020600020016000915090505481565b600b818154811061135657600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61138d611f0c565b8060138190555050565b61139f611f0c565b600047905060005b600b8054905081101561144457611431600b82815481106113cb576113ca6135c5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166064600c848154811061140c5761140b6135c5565b5b9060005260206000200154856114229190613523565b61142c9190613594565b6123b3565b808061143c906135f4565b9150506113a7565b5050565b61146383838360405180602001604052806000815250611b1b565b505050565b601560009054906101000a900460ff1681565b60006114868261218f565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114f4576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b61154d611f0c565b611557600061245b565b565b601560019054906101000a900460ff166115a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159f90613688565b60405180910390fd5b6000600d541180156115c85750600d5482600e546115c691906136a8565b115b15611608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ff90613728565b60405180910390fd5b6000600f54118015611626575081600f546116239190613523565b34105b15611666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165d90613794565b60405180910390fd5b60146040516020016116789190613837565b604051602081830303815290604052805190602001208160405160200161169f91906134dd565b60405160208183030381529060405280519060200120146116f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ec9061389a565b60405180910390fd5b6000601354118015611752575060135482601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461175091906136a8565b115b15611792576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178990613906565b60405180910390fd5b600061179c612521565b90506117a8338461252a565b82601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117f791906136a8565b9250508190555082600e600082825461181091906136a8565b9250508190555060005b8381101561186a57600160176000838561183491906136a8565b815260200190815260200160002060006101000a81548160ff02191690831515021790555080611863906135f4565b905061181a565b503373ffffffffffffffffffffffffffffffffffffffff167f4411934e9ab359a4ca0ae11d139ac4ba177bf696dc51ed033139a5e9100a345e600f5483866040516118b793929190613926565b60405180910390a2505050565b6118cc611f0c565b80601560016101000a81548160ff02191690831515021790555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61191b611f0c565b80600f8190555050565b606060038054611934906131b7565b80601f0160208091040260200160405190810160405280929190818152602001828054611960906131b7565b80156119ad5780601f10611982576101008083540402835291602001916119ad565b820191906000526020600020905b81548152906001019060200180831161199057829003601f168201915b5050505050905090565b6119bf611f0c565b80601560006101000a81548160ff02191690831515021790555050565b80600760006119e961217e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611a9661217e565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611adb919061297a565b60405180910390a35050565b60135481565b601560019054906101000a900460ff1681565b611b08611f0c565b8060119081611b179190613394565b5050565b611b26848484610df2565b60008373ffffffffffffffffffffffffffffffffffffffff163b14611b8857611b51848484846126e5565b611b87576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b6060600e54821115611bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcc906139a9565b60405180910390fd5b60118054611be2906131b7565b80601f0160208091040260200160405190810160405280929190818152602001828054611c0e906131b7565b8015611c5b5780601f10611c3057610100808354040283529160200191611c5b565b820191906000526020600020905b815481529060010190602001808311611c3e57829003601f168201915b50505050509050919050565b600f5481565b611c75611f0c565b600b829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c8190806001815401808255809150506001900390600052602060002001600090919091909150555050565b60176020528060005260406000206000915054906101000a900460ff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611dc1611f0c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2790613a3b565b60405180910390fd5b611e398161245b565b50565b611e44611f0c565b600e548111611e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7f90613acd565b60405180910390fd5b80600d8190555050565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611f055750611f0482612835565b5b9050919050565b611f1461289f565b73ffffffffffffffffffffffffffffffffffffffff16611f326118e9565b73ffffffffffffffffffffffffffffffffffffffff1614611f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7f90613b39565b60405180910390fd5b565b611f926123a9565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115611ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe790613bcb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361205f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205690613c37565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600860008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b60008161212a612186565b11158015612139575060005482105b8015612177575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b60006001905090565b6000808290508061219e612186565b11612224576000548110156122235760006004600083815260200190815260200160002054905060007c0100000000000000000000000000000000000000000000000000000000821603612221575b600081036122175760046000836001900393508381526020019081526020016000205490506121ed565b8092505050612256565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b6122d2848484846128a7565b601560009054906101000a900460ff168061230b57506017600083815260200190815260200160002060009054906101000a900460ff16155b61234a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234190613ca3565b60405180910390fd5b50505050565b60008060e883901c905060e86123678686846128ad565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b6000612710905090565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516123d990613cf1565b60006040518083038185875af1925050503d8060008114612416576040519150601f19603f3d011682016040523d82523d6000602084013e61241b565b606091505b5050905080612456576040517f750b219c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008054905090565b6000805490506000820361256a576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61257760008483856122c6565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506125ee836125df6000866000612350565b6125e8856128b6565b17612378565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b81811461268f57808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600181019050612654565b50600082036126ca576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060008190555050506126e060008483856123a3565b505050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261270b61217e565b8786866040518563ffffffff1660e01b815260040161272d9493929190613d5b565b6020604051808303816000875af192505050801561276957506040513d601f19601f820116820180604052508101906127669190613dbc565b60015b6127e2573d8060008114612799576040519150601f19603f3d011682016040523d82523d6000602084013e61279e565b606091505b5060008151036127da576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b50505050565b60009392505050565b60006001821460e11b9050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61290f816128da565b811461291a57600080fd5b50565b60008135905061292c81612906565b92915050565b600060208284031215612948576129476128d0565b5b60006129568482850161291d565b91505092915050565b60008115159050919050565b6129748161295f565b82525050565b600060208201905061298f600083018461296b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129c082612995565b9050919050565b6129d0816129b5565b81146129db57600080fd5b50565b6000813590506129ed816129c7565b92915050565b60006bffffffffffffffffffffffff82169050919050565b612a14816129f3565b8114612a1f57600080fd5b50565b600081359050612a3181612a0b565b92915050565b60008060408385031215612a4e57612a4d6128d0565b5b6000612a5c858286016129de565b9250506020612a6d85828601612a22565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ab1578082015181840152602081019050612a96565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ad982612a77565b612ae38185612a82565b9350612af3818560208601612a93565b612afc81612abd565b840191505092915050565b60006020820190508181036000830152612b218184612ace565b905092915050565b6000819050919050565b612b3c81612b29565b8114612b4757600080fd5b50565b600081359050612b5981612b33565b92915050565b600060208284031215612b7557612b746128d0565b5b6000612b8384828501612b4a565b91505092915050565b612b95816129b5565b82525050565b6000602082019050612bb06000830184612b8c565b92915050565b60008060408385031215612bcd57612bcc6128d0565b5b6000612bdb858286016129de565b9250506020612bec85828601612b4a565b9150509250929050565b612bff81612b29565b82525050565b6000602082019050612c1a6000830184612bf6565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c6282612abd565b810181811067ffffffffffffffff82111715612c8157612c80612c2a565b5b80604052505050565b6000612c946128c6565b9050612ca08282612c59565b919050565b600067ffffffffffffffff821115612cc057612cbf612c2a565b5b612cc982612abd565b9050602081019050919050565b82818337600083830152505050565b6000612cf8612cf384612ca5565b612c8a565b905082815260208101848484011115612d1457612d13612c25565b5b612d1f848285612cd6565b509392505050565b600082601f830112612d3c57612d3b612c20565b5b8135612d4c848260208601612ce5565b91505092915050565b600060208284031215612d6b57612d6a6128d0565b5b600082013567ffffffffffffffff811115612d8957612d886128d5565b5b612d9584828501612d27565b91505092915050565b612da7816129f3565b82525050565b6000602082019050612dc26000830184612d9e565b92915050565b600080600060608486031215612de157612de06128d0565b5b6000612def868287016129de565b9350506020612e00868287016129de565b9250506040612e1186828701612b4a565b9150509250925092565b60008060408385031215612e3257612e316128d0565b5b6000612e4085828601612b4a565b9250506020612e5185828601612b4a565b9150509250929050565b6000604082019050612e706000830185612b8c565b612e7d6020830184612bf6565b9392505050565b600060208284031215612e9a57612e996128d0565b5b6000612ea8848285016129de565b91505092915050565b60008060408385031215612ec857612ec76128d0565b5b6000612ed685828601612b4a565b925050602083013567ffffffffffffffff811115612ef757612ef66128d5565b5b612f0385828601612d27565b9150509250929050565b612f168161295f565b8114612f2157600080fd5b50565b600081359050612f3381612f0d565b92915050565b600060208284031215612f4f57612f4e6128d0565b5b6000612f5d84828501612f24565b91505092915050565b60008060408385031215612f7d57612f7c6128d0565b5b6000612f8b858286016129de565b9250506020612f9c85828601612f24565b9150509250929050565b600067ffffffffffffffff821115612fc157612fc0612c2a565b5b612fca82612abd565b9050602081019050919050565b6000612fea612fe584612fa6565b612c8a565b90508281526020810184848401111561300657613005612c25565b5b613011848285612cd6565b509392505050565b600082601f83011261302e5761302d612c20565b5b813561303e848260208601612fd7565b91505092915050565b60008060008060808587031215613061576130606128d0565b5b600061306f878288016129de565b9450506020613080878288016129de565b935050604061309187828801612b4a565b925050606085013567ffffffffffffffff8111156130b2576130b16128d5565b5b6130be87828801613019565b91505092959194509250565b60006130d582612995565b9050919050565b6130e5816130ca565b81146130f057600080fd5b50565b600081359050613102816130dc565b92915050565b6000806040838503121561311f5761311e6128d0565b5b600061312d858286016130f3565b925050602061313e85828601612b4a565b9150509250929050565b6000806040838503121561315f5761315e6128d0565b5b600061316d858286016129de565b925050602061317e858286016129de565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806131cf57607f821691505b6020821081036131e2576131e1613188565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261324a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261320d565b613254868361320d565b95508019841693508086168417925050509392505050565b6000819050919050565b600061329161328c61328784612b29565b61326c565b612b29565b9050919050565b6000819050919050565b6132ab83613276565b6132bf6132b782613298565b84845461321a565b825550505050565b600090565b6132d46132c7565b6132df8184846132a2565b505050565b5b81811015613303576132f86000826132cc565b6001810190506132e5565b5050565b601f82111561334857613319816131e8565b613322846131fd565b81016020851015613331578190505b61334561333d856131fd565b8301826132e4565b50505b505050565b600082821c905092915050565b600061336b6000198460080261334d565b1980831691505092915050565b6000613384838361335a565b9150826002028217905092915050565b61339d82612a77565b67ffffffffffffffff8111156133b6576133b5612c2a565b5b6133c082546131b7565b6133cb828285613307565b600060209050601f8311600181146133fe57600084156133ec578287015190505b6133f68582613378565b86555061345e565b601f19841661340c866131e8565b60005b828110156134345784890151825560018201915060208501945060208101905061340f565b86831015613451578489015161344d601f89168261335a565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b50565b6000613481600083613466565b915061348c82613471565b600082019050919050565b60006134a282613474565b9150819050919050565b60006134b782612a77565b6134c18185613466565b93506134d1818560208601612a93565b80840191505092915050565b60006134e982846134ac565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061352e82612b29565b915061353983612b29565b925082820261354781612b29565b9150828204841483151761355e5761355d6134f4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061359f82612b29565b91506135aa83612b29565b9250826135ba576135b9613565565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006135ff82612b29565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613631576136306134f4565b5b600182019050919050565b7f4d696e74696e6720656e64656400000000000000000000000000000000000000600082015250565b6000613672600d83612a82565b915061367d8261363c565b602082019050919050565b600060208201905081810360008301526136a181613665565b9050919050565b60006136b382612b29565b91506136be83612b29565b92508282019050808211156136d6576136d56134f4565b5b92915050565b7f546f6b656e204f766572666c6f77000000000000000000000000000000000000600082015250565b6000613712600e83612a82565b915061371d826136dc565b602082019050919050565b6000602082019050818103600083015261374181613705565b9050919050565b7f496e73756666696369656e74205061796d656e7420416d6f756e740000000000600082015250565b600061377e601b83612a82565b915061378982613748565b602082019050919050565b600060208201905081810360008301526137ad81613771565b9050919050565b600081546137c1816131b7565b6137cb8186613466565b945060018216600081146137e657600181146137fb5761382e565b60ff198316865281151582028601935061382e565b613804856131e8565b60005b8381101561382657815481890152600182019150602081019050613807565b838801955050505b50505092915050565b600061384382846137b4565b915081905092915050565b7f4e6f2061636365737320636f64652070726f7669646564000000000000000000600082015250565b6000613884601783612a82565b915061388f8261384e565b602082019050919050565b600060208201905081810360008301526138b381613877565b9050919050565b7f6f766572206c696d697420666f72206d617850657257616c6c65740000000000600082015250565b60006138f0601b83612a82565b91506138fb826138ba565b602082019050919050565b6000602082019050818103600083015261391f816138e3565b9050919050565b600060608201905061393b6000830186612bf6565b6139486020830185612bf6565b6139556040830184612bf6565b949350505050565b7f546f6b656e206e6f7420666f756e640000000000000000000000000000000000600082015250565b6000613993600f83612a82565b915061399e8261395d565b602082019050919050565b600060208201905081810360008301526139c281613986565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a25602683612a82565b9150613a30826139c9565b604082019050919050565b60006020820190508181036000830152613a5481613a18565b9050919050565b7f546f74616c20537570706c792063616e206f6e6c7920626520696e637265617360008201527f656420616e64206e6f7420726564756365640000000000000000000000000000602082015250565b6000613ab7603283612a82565b9150613ac282613a5b565b604082019050919050565b60006020820190508181036000830152613ae681613aaa565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b23602083612a82565b9150613b2e82613aed565b602082019050919050565b60006020820190508181036000830152613b5281613b16565b9050919050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b6000613bb5602a83612a82565b9150613bc082613b59565b604082019050919050565b60006020820190508181036000830152613be481613ba8565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b6000613c21601983612a82565b9150613c2c82613beb565b602082019050919050565b60006020820190508181036000830152613c5081613c14565b9050919050565b7f746f6b656e206973206e6f74207472616e736665727261626c65000000000000600082015250565b6000613c8d601a83612a82565b9150613c9882613c57565b602082019050919050565b60006020820190508181036000830152613cbc81613c80565b9050919050565b600081905092915050565b6000613cdb600083613cc3565b9150613ce682613471565b600082019050919050565b6000613cfc82613cce565b9150819050919050565b600081519050919050565b600082825260208201905092915050565b6000613d2d82613d06565b613d378185613d11565b9350613d47818560208601612a93565b613d5081612abd565b840191505092915050565b6000608082019050613d706000830187612b8c565b613d7d6020830186612b8c565b613d8a6040830185612bf6565b8181036060830152613d9c8184613d22565b905095945050505050565b600081519050613db681612906565b92915050565b600060208284031215613dd257613dd16128d0565b5b6000613de084828501613da7565b9150509291505056fea26469706673582212200be8a3f1ad263e11f9ad463722161e9518f92db19620c6514ba473a5c6f1718264736f6c6343000811003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000005af3107a400000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000115465736c61204f776e65727320436c75620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544f43000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e85468652067617465206973206f70656e2e20544f43206861732070726f6772657373656420746f207075626c6963206265746120616e64206973206e6f772061636365737369626c652062792070656f706c6520776974686f757420746865204561726c792041646f70746572205061737321200a496e2074686520766173746e657373206f6620737061636520616e642074686520696d6d656e73697479206f662074696d652c206974206973206d79206a6f7920746f207368617265206120706c616e657420616e6420616e2065706f6368207769746820796f752c4368656572732055702100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050697066733a2f2f62616679726569616e7636646b3337376a773765656a376d74753535667734676a667562797061356c696564776e656271687364636c757471686d2f6d657461646174612e6a736f6e00000000000000000000000000000000