608060405260036009556001600a60006101000a81548160ff0219169083151502179055506009600a62000034919062000c67565b620f424062000044919062000cb8565b600c556009600a62000057919062000c67565b61138862000066919062000cb8565b600d556009600a62000079919062000c67565b614e2062000088919062000cb8565b600e556009600a6200009b919062000c67565b614e20620000aa919062000cb8565b600f556040518060400160405280600e60ff168152602001600160ff16815250601260008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555050506040518060400160405280603f60ff168152602001600260ff16815250601360008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555050507392c9b45594034bab65f21653ccec7390b4a755bc601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005601555348015620001da57600080fd5b50620001fb620001ef6200080760201b60201c565b6200080f60201b60201c565b600c5460036000620002126200080760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dd919062000d6d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000345573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036b919062000d6d565b6040518363ffffffff1660e01b81526004016200038a92919062000db0565b6020604051808303816000875af1158015620003aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d0919062000d6d565b905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200049a62000468620008d360201b60201c565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600019620008fc60201b60201c565b600160056000620004b0620008d360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000620005e9620008d360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620007966200080760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c54604051620007f7919062000dee565b60405180910390a3505062000f4c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200096e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009659062000e92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009d79062000f2a565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000ac0919062000dee565b60405180910390a3505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b5b5780860481111562000b335762000b3262000acd565b5b600185161562000b435780820291505b808102905062000b538562000afc565b945062000b13565b94509492505050565b60008262000b76576001905062000c49565b8162000b86576000905062000c49565b816001811462000b9f576002811462000baa5762000be0565b600191505062000c49565b60ff84111562000bbf5762000bbe62000acd565b5b8360020a91508482111562000bd95762000bd862000acd565b5b5062000c49565b5060208310610133831016604e8410600b841016171562000c1a5782820a90508381111562000c145762000c1362000acd565b5b62000c49565b62000c29848484600162000b09565b9250905081840481111562000c435762000c4262000acd565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000c748262000c50565b915062000c818362000c5a565b925062000cb07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b64565b905092915050565b600062000cc58262000c50565b915062000cd28362000c50565b925082820262000ce28162000c50565b9150828204841483151762000cfc5762000cfb62000acd565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d358262000d08565b9050919050565b62000d478162000d28565b811462000d5357600080fd5b50565b60008151905062000d678162000d3c565b92915050565b60006020828403121562000d865762000d8562000d03565b5b600062000d968482850162000d56565b91505092915050565b62000daa8162000d28565b82525050565b600060408201905062000dc7600083018562000d9f565b62000dd6602083018462000d9f565b9392505050565b62000de88162000c50565b82525050565b600060208201905062000e05600083018462000ddd565b92915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062000e7a60248362000e0b565b915062000e878262000e1c565b604082019050919050565b6000602082019050818103600083015262000ead8162000e6b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600062000f1260228362000e0b565b915062000f1f8262000eb4565b604082019050919050565b6000602082019050818103600083015262000f458162000f03565b9050919050565b613fe58062000f5c6000396000f3fe60806040526004361061021e5760003560e01c80638c0b5e2211610123578063cfe9dde0116100ab578063f2fde38b1161006f578063f2fde38b14610830578063f837ae0714610859578063f887ea4014610882578063f8b45b05146108ad578063f9d0ee94146108d857610225565b8063cfe9dde014610737578063dd62ed3e14610760578063e0a877c81461079d578063ee9a5d82146107c8578063ef07a1821461080557610225565b8063a8aa1b31116100f2578063a8aa1b3114610651578063a9059cbb1461067c578063cb0e6f7b146106b9578063cc1776d3146106e2578063cf9b22e71461070e57610225565b80638c0b5e22146105935780638da5cb5b146105be57806395d89b41146105e9578063a457c2d71461061457610225565b806339509351116101a65780635966c81e116101755780635966c81e146104ae57806370a08231146104d7578063715018a61461051457806375f0a8741461052b578063768dc7101461055657610225565b806339509351146103f35780634ba422bc146104305780634cf27997146104595780634f7041a51461048257610225565b80631b0f9381116101ed5780631b0f9381146102e85780631cdd3be31461031157806323b872dd1461034e57806328c61f411461038b578063313ce567146103c857610225565b80630445b6671461022a57806306fdde0314610255578063095ea7b31461028057806318160ddd146102bd57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f610904565b60405161024c9190612b1a565b60405180910390f35b34801561026157600080fd5b5061026a61090a565b6040516102779190612bc5565b60405180910390f35b34801561028c57600080fd5b506102a760048036038101906102a29190612c85565b610947565b6040516102b49190612ce0565b60405180910390f35b3480156102c957600080fd5b506102d2610965565b6040516102df9190612b1a565b60405180910390f35b3480156102f457600080fd5b5061030f600480360381019061030a9190612d34565b61096f565b005b34801561031d57600080fd5b5061033860048036038101906103339190612d74565b610ad5565b6040516103459190612ce0565b60405180910390f35b34801561035a57600080fd5b5061037560048036038101906103709190612da1565b610af5565b6040516103829190612ce0565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad9190612d74565b610bad565b6040516103bf9190612ce0565b60405180910390f35b3480156103d457600080fd5b506103dd610bcd565b6040516103ea9190612e03565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190612c85565b610bd6565b6040516104279190612ce0565b60405180910390f35b34801561043c57600080fd5b5061045760048036038101906104529190612e1e565b610c82565b005b34801561046557600080fd5b50610480600480360381019061047b9190612c85565b610dc8565b005b34801561048e57600080fd5b50610497610e97565b6040516104a5929190612e5e565b60405180910390f35b3480156104ba57600080fd5b506104d560048036038101906104d09190612e87565b610ec3565b005b3480156104e357600080fd5b506104fe60048036038101906104f99190612d74565b610fcc565b60405161050b9190612b1a565b60405180910390f35b34801561052057600080fd5b50610529611015565b005b34801561053757600080fd5b5061054061109d565b60405161054d9190612ec3565b60405180910390f35b34801561056257600080fd5b5061057d60048036038101906105789190612d74565b6110c3565b60405161058a9190612ce0565b60405180910390f35b34801561059f57600080fd5b506105a86110e3565b6040516105b59190612b1a565b60405180910390f35b3480156105ca57600080fd5b506105d36110e9565b6040516105e09190612ec3565b60405180910390f35b3480156105f557600080fd5b506105fe611112565b60405161060b9190612bc5565b60405180910390f35b34801561062057600080fd5b5061063b60048036038101906106369190612c85565b61114f565b6040516106489190612ce0565b60405180910390f35b34801561065d57600080fd5b506106666111fb565b6040516106739190612ec3565b60405180910390f35b34801561068857600080fd5b506106a3600480360381019061069e9190612c85565b611221565b6040516106b09190612ce0565b60405180910390f35b3480156106c557600080fd5b506106e060048036038101906106db9190612d34565b61123f565b005b3480156106ee57600080fd5b506106f76113a5565b604051610705929190612e5e565b60405180910390f35b34801561071a57600080fd5b5061073560048036038101906107309190612f0a565b6113d1565b005b34801561074357600080fd5b5061075e6004803603810190610759919061307f565b61146a565b005b34801561076c57600080fd5b50610787600480360381019061078291906130db565b61157b565b6040516107949190612b1a565b60405180910390f35b3480156107a957600080fd5b506107b2611602565b6040516107bf9190612ce0565b60405180910390f35b3480156107d457600080fd5b506107ef60048036038101906107ea9190612d74565b611615565b6040516107fc9190612b1a565b60405180910390f35b34801561081157600080fd5b5061081a61162d565b6040516108279190612b1a565b60405180910390f35b34801561083c57600080fd5b5061085760048036038101906108529190612d74565b611633565b005b34801561086557600080fd5b50610880600480360381019061087b919061311b565b61172a565b005b34801561088e57600080fd5b50610897611801565b6040516108a491906131ba565b60405180910390f35b3480156108b957600080fd5b506108c2611827565b6040516108cf9190612b1a565b60405180910390f35b3480156108e457600080fd5b506108ed61182d565b6040516108fb9291906131d5565b60405180910390f35b600d5481565b60606040518060400160405280601481526020017f5465682048616e642d447261776e20436f636b73000000000000000000000000815250905090565b600061095b61095461183f565b8484611847565b6001905092915050565b6000600c54905090565b61097761183f565b73ffffffffffffffffffffffffffffffffffffffff166109956110e9565b73ffffffffffffffffffffffffffffffffffffffff16146109eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e29061324a565b60405180910390fd5b600081836109f99190613299565b60ff1690506014811115610a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a399061331a565b60405180910390fd5b60405180604001604052808460ff1681526020018360ff16815250601260008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff1602179055509050507ff305e997be174eb1fbb444c89b9f4089de693e9b3b40486accc62ae99885e48060405160405180910390a1505050565b60076020528060005260406000206000915054906101000a900460ff1681565b6000610b02848484611a10565b610ba284610b0e61183f565b84600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b5861183f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b9d919061333a565b611847565b600190509392505050565b60066020528060005260406000206000915054906101000a900460ff1681565b60006009905090565b6000610c78610be361183f565b848460046000610bf161183f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c73919061336e565b611847565b6001905092915050565b610c8a61183f565b73ffffffffffffffffffffffffffffffffffffffff16610ca86110e9565b73ffffffffffffffffffffffffffffffffffffffff1614610cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf59061324a565b60405180910390fd5b60006009600a610d0e91906134d5565b6103e86005600c54610d209190613520565b610d2a9190613591565b610d349190613591565b9050808310158015610d465750808210155b610d85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7c9061360e565b60405180910390fd5b6009600a610d9391906134d5565b83610d9e9190613520565b600e819055506009600a610db291906134d5565b82610dbd9190613520565b600f81905550505050565b610dd061183f565b73ffffffffffffffffffffffffffffffffffffffff16610dee6110e9565b73ffffffffffffffffffffffffffffffffffffffff1614610e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3b9061324a565b60405180910390fd5b8042610e50919061336e565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60128060000160009054906101000a900460ff16908060000160019054906101000a900460ff16905082565b610ecb61183f565b73ffffffffffffffffffffffffffffffffffffffff16610ee96110e9565b73ffffffffffffffffffffffffffffffffffffffff1614610f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f369061324a565b60405180910390fd5b80471015610f82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f799061367a565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610fc8573d6000803e3d6000fd5b5050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61101d61183f565b73ffffffffffffffffffffffffffffffffffffffff1661103b6110e9565b73ffffffffffffffffffffffffffffffffffffffff1614611091576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110889061324a565b60405180910390fd5b61109b600061220d565b565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f2454484300000000000000000000000000000000000000000000000000000000815250905090565b60006111f161115c61183f565b84846004600061116a61183f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111ec919061333a565b611847565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061123561122e61183f565b8484611a10565b6001905092915050565b61124761183f565b73ffffffffffffffffffffffffffffffffffffffff166112656110e9565b73ffffffffffffffffffffffffffffffffffffffff16146112bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b29061324a565b60405180910390fd5b600081836112c99190613299565b60ff1690506055811115611312576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113099061331a565b60405180910390fd5b60405180604001604052808460ff1681526020018360ff16815250601360008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff1602179055509050507ff305e997be174eb1fbb444c89b9f4089de693e9b3b40486accc62ae99885e48060405160405180910390a1505050565b60138060000160009054906101000a900460ff16908060000160019054906101000a900460ff16905082565b6113d961183f565b73ffffffffffffffffffffffffffffffffffffffff166113f76110e9565b73ffffffffffffffffffffffffffffffffffffffff161461144d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114449061324a565b60405180910390fd5b80600a60006101000a81548160ff02191690831515021790555050565b61147261183f565b73ffffffffffffffffffffffffffffffffffffffff166114906110e9565b73ffffffffffffffffffffffffffffffffffffffff16146114e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dd9061324a565b60405180910390fd5b60005b825181101561157657816007600085848151811061150a5761150961369a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061156e906136c9565b9150506114e9565b505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a60009054906101000a900460ff1681565b60086020528060005260406000206000915090505481565b600b5481565b61163b61183f565b73ffffffffffffffffffffffffffffffffffffffff166116596110e9565b73ffffffffffffffffffffffffffffffffffffffff16146116af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a69061324a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361171e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171590613783565b60405180910390fd5b6117278161220d565b50565b61173261183f565b73ffffffffffffffffffffffffffffffffffffffff166117506110e9565b73ffffffffffffffffffffffffffffffffffffffff16146117a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179d9061324a565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b60108060000154908060010154905082565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ad90613815565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191c906138a7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a039190612b1a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7690613939565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae5906139cb565b60405180910390fd5b60008111611b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2890613a5d565b60405180910390fd5b600e5481111580611b8b5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc190613aef565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c6e5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca490613b5b565b60405180910390fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d5757600f5481611d0b84610fcc565b611d15919061336e565b1115611d56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4d90613bed565b60405180910390fd5b5b600d54611d6330610fcc565b10158015611d805750601554601654611d7c919061336e565b4210155b8015611d97575060148054906101000a900460ff16155b8015611df15750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e305750611e006110e9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e6f5750611e3f6110e9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e7d57611e7c6122d1565b5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ecc919061333a565b925050819055506000819050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f7c5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561214c57611fdc8285600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614612443565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036120b757600a60009054906101000a900460ff16156120b257600b600081548092919061205b906136c9565b91905055506009544261206e919061336e565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61214b565b6000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461214a57600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054421061214957600080fd5b5b5b5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461219b919061336e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121ff9190612b1a565b60405180910390a350505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60016014806101000a81548160ff0219169083151502179055506000601060000154111561238b57600061230960106000015461265f565b9050600081111561238957601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561237c573d6000803e3d6000fd5b5060006010600001819055505b505b600060106001015411156123f457600060026010600101546123ad9190613591565b90506000816010600101546123c2919061333a565b905060006123cf8361265f565b905060008111156123e5576123e482826128b9565b5b60006010600101819055505050505b7fd9f20192eafa060dc85f5f8b3b0a5b9c106b02d5d1503335b857e50c2bb7003060405160405180910390a14260168190555060006014806101000a81548160ff021916908315150217905550565b60008060126040518060400160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681525050905082156124df5760136040518060400160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff168152505090505b60006064826000015160ff16876124f69190613520565b6125009190613591565b905060006064836020015160ff16886125199190613520565b6125239190613591565b9050600082111561254b578160106000016000828254612543919061336e565b925050819055505b6000811115612571578060106001016000828254612569919061336e565b925050819055505b6000818361257f919061336e565b905080600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125d0919061336e565b925050819055506000811115612646573073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161263d9190612b1a565b60405180910390a35b8088612652919061333a565b9450505050509392505050565b6000804790506000600267ffffffffffffffff81111561268257612681612f3c565b5b6040519080825280602002602001820160405280156126b05781602001602082028036833780820191505090505b50905030816000815181106126c8576126c761369a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561276f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127939190613c22565b816001815181106127a7576127a661369a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061280e30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686611847565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b8152600401612872959493929190613d48565b600060405180830381600087803b15801561288c57600080fd5b505af11580156128a0573d6000803e3d6000fd5b5050505081476128b0919061333a565b92505050919050565b6128e630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611847565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330866000806129346110e9565b426040518863ffffffff1660e01b815260040161295696959493929190613da2565b60606040518083038185885af1158015612974573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129999190613e18565b50915050600081836129ab919061333a565b1115612a0857612a0781836129c0919061333a565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a0d90919063ffffffff16565b5b505050565b80471015612a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4790613eb7565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612a7690613f08565b60006040518083038185875af1925050503d8060008114612ab3576040519150601f19603f3d011682016040523d82523d6000602084013e612ab8565b606091505b5050905080612afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af390613f8f565b60405180910390fd5b505050565b6000819050919050565b612b1481612b01565b82525050565b6000602082019050612b2f6000830184612b0b565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b6f578082015181840152602081019050612b54565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b9782612b35565b612ba18185612b40565b9350612bb1818560208601612b51565b612bba81612b7b565b840191505092915050565b60006020820190508181036000830152612bdf8184612b8c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c2682612bfb565b9050919050565b612c3681612c1b565b8114612c4157600080fd5b50565b600081359050612c5381612c2d565b92915050565b612c6281612b01565b8114612c6d57600080fd5b50565b600081359050612c7f81612c59565b92915050565b60008060408385031215612c9c57612c9b612bf1565b5b6000612caa85828601612c44565b9250506020612cbb85828601612c70565b9150509250929050565b60008115159050919050565b612cda81612cc5565b82525050565b6000602082019050612cf56000830184612cd1565b92915050565b600060ff82169050919050565b612d1181612cfb565b8114612d1c57600080fd5b50565b600081359050612d2e81612d08565b92915050565b60008060408385031215612d4b57612d4a612bf1565b5b6000612d5985828601612d1f565b9250506020612d6a85828601612d1f565b9150509250929050565b600060208284031215612d8a57612d89612bf1565b5b6000612d9884828501612c44565b91505092915050565b600080600060608486031215612dba57612db9612bf1565b5b6000612dc886828701612c44565b9350506020612dd986828701612c44565b9250506040612dea86828701612c70565b9150509250925092565b612dfd81612cfb565b82525050565b6000602082019050612e186000830184612df4565b92915050565b60008060408385031215612e3557612e34612bf1565b5b6000612e4385828601612c70565b9250506020612e5485828601612c70565b9150509250929050565b6000604082019050612e736000830185612df4565b612e806020830184612df4565b9392505050565b600060208284031215612e9d57612e9c612bf1565b5b6000612eab84828501612c70565b91505092915050565b612ebd81612c1b565b82525050565b6000602082019050612ed86000830184612eb4565b92915050565b612ee781612cc5565b8114612ef257600080fd5b50565b600081359050612f0481612ede565b92915050565b600060208284031215612f2057612f1f612bf1565b5b6000612f2e84828501612ef5565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612f7482612b7b565b810181811067ffffffffffffffff82111715612f9357612f92612f3c565b5b80604052505050565b6000612fa6612be7565b9050612fb28282612f6b565b919050565b600067ffffffffffffffff821115612fd257612fd1612f3c565b5b602082029050602081019050919050565b600080fd5b6000612ffb612ff684612fb7565b612f9c565b9050808382526020820190506020840283018581111561301e5761301d612fe3565b5b835b8181101561304757806130338882612c44565b845260208401935050602081019050613020565b5050509392505050565b600082601f83011261306657613065612f37565b5b8135613076848260208601612fe8565b91505092915050565b6000806040838503121561309657613095612bf1565b5b600083013567ffffffffffffffff8111156130b4576130b3612bf6565b5b6130c085828601613051565b92505060206130d185828601612ef5565b9150509250929050565b600080604083850312156130f2576130f1612bf1565b5b600061310085828601612c44565b925050602061311185828601612c44565b9150509250929050565b6000806040838503121561313257613131612bf1565b5b600061314085828601612c44565b925050602061315185828601612ef5565b9150509250929050565b6000819050919050565b600061318061317b61317684612bfb565b61315b565b612bfb565b9050919050565b600061319282613165565b9050919050565b60006131a482613187565b9050919050565b6131b481613199565b82525050565b60006020820190506131cf60008301846131ab565b92915050565b60006040820190506131ea6000830185612b0b565b6131f76020830184612b0b565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613234602083612b40565b915061323f826131fe565b602082019050919050565b6000602082019050818103600083015261326381613227565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132a482612cfb565b91506132af83612cfb565b9250828201905060ff8111156132c8576132c761326a565b5b92915050565b7f43616e2774207365742074617820746f6f206869676800000000000000000000600082015250565b6000613304601683612b40565b915061330f826132ce565b602082019050919050565b60006020820190508181036000830152613333816132f7565b9050919050565b600061334582612b01565b915061335083612b01565b92508282039050818111156133685761336761326a565b5b92915050565b600061337982612b01565b915061338483612b01565b925082820190508082111561339c5761339b61326a565b5b92915050565b60008160011c9050919050565b6000808291508390505b60018511156133f9578086048111156133d5576133d461326a565b5b60018516156133e45780820291505b80810290506133f2856133a2565b94506133b9565b94509492505050565b60008261341257600190506134ce565b8161342057600090506134ce565b816001811461343657600281146134405761346f565b60019150506134ce565b60ff8411156134525761345161326a565b5b8360020a9150848211156134695761346861326a565b5b506134ce565b5060208310610133831016604e8410600b84101617156134a45782820a90508381111561349f5761349e61326a565b5b6134ce565b6134b184848460016133af565b925090508184048111156134c8576134c761326a565b5b81810290505b9392505050565b60006134e082612b01565b91506134eb83612cfb565b92506135187fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613402565b905092915050565b600061352b82612b01565b915061353683612b01565b925082820261354481612b01565b9150828204841483151761355b5761355a61326a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061359c82612b01565b91506135a783612b01565b9250826135b7576135b6613562565b5b828204905092915050565b7f496e76616c69642053657474696e677300000000000000000000000000000000600082015250565b60006135f8601083612b40565b9150613603826135c2565b602082019050919050565b60006020820190508181036000830152613627816135eb565b9050919050565b7f496e73756666696369656e74204554482062616c616e63650000000000000000600082015250565b6000613664601883612b40565b915061366f8261362e565b602082019050919050565b6000602082019050818103600083015261369381613657565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006136d482612b01565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036137065761370561326a565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061376d602683612b40565b915061377882613711565b604082019050919050565b6000602082019050818103600083015261379c81613760565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006137ff602483612b40565b915061380a826137a3565b604082019050919050565b6000602082019050818103600083015261382e816137f2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613891602283612b40565b915061389c82613835565b604082019050919050565b600060208201905081810360008301526138c081613884565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613923602583612b40565b915061392e826138c7565b604082019050919050565b6000602082019050818103600083015261395281613916565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006139b5602383612b40565b91506139c082613959565b604082019050919050565b600060208201905081810360008301526139e4816139a8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613a47602983612b40565b9150613a52826139eb565b604082019050919050565b60006020820190508181036000830152613a7681613a3a565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865205f6d617860008201527f5478416d6f756e742e0000000000000000000000000000000000000000000000602082015250565b6000613ad9602983612b40565b9150613ae482613a7d565b604082019050919050565b60006020820190508181036000830152613b0881613acc565b9050919050565b7f426c61636b6c69737465642c2063616e27742074726164650000000000000000600082015250565b6000613b45601883612b40565b9150613b5082613b0f565b602082019050919050565b60006020820190508181036000830152613b7481613b38565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785760008201527f616c6c65742e0000000000000000000000000000000000000000000000000000602082015250565b6000613bd7602683612b40565b9150613be282613b7b565b604082019050919050565b60006020820190508181036000830152613c0681613bca565b9050919050565b600081519050613c1c81612c2d565b92915050565b600060208284031215613c3857613c37612bf1565b5b6000613c4684828501613c0d565b91505092915050565b6000819050919050565b6000613c74613c6f613c6a84613c4f565b61315b565b612b01565b9050919050565b613c8481613c59565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613cbf81612c1b565b82525050565b6000613cd18383613cb6565b60208301905092915050565b6000602082019050919050565b6000613cf582613c8a565b613cff8185613c95565b9350613d0a83613ca6565b8060005b83811015613d3b578151613d228882613cc5565b9750613d2d83613cdd565b925050600181019050613d0e565b5085935050505092915050565b600060a082019050613d5d6000830188612b0b565b613d6a6020830187613c7b565b8181036040830152613d7c8186613cea565b9050613d8b6060830185612eb4565b613d986080830184612b0b565b9695505050505050565b600060c082019050613db76000830189612eb4565b613dc46020830188612b0b565b613dd16040830187613c7b565b613dde6060830186613c7b565b613deb6080830185612eb4565b613df860a0830184612b0b565b979650505050505050565b600081519050613e1281612c59565b92915050565b600080600060608486031215613e3157613e30612bf1565b5b6000613e3f86828701613e03565b9350506020613e5086828701613e03565b9250506040613e6186828701613e03565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613ea1601d83612b40565b9150613eac82613e6b565b602082019050919050565b60006020820190508181036000830152613ed081613e94565b9050919050565b600081905092915050565b50565b6000613ef2600083613ed7565b9150613efd82613ee2565b600082019050919050565b6000613f1382613ee5565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000613f79603a83612b40565b9150613f8482613f1d565b604082019050919050565b60006020820190508181036000830152613fa881613f6c565b905091905056fea26469706673582212208369afa2c6b81cf43a149c2bb64e74d343158eedbc9b6b6da0f591d834f36c5664736f6c63430008110033