60806040526000600660146101000a81548160ff0219169083151502179055506000600660156101000a81548160ff0219169083151502179055506000600660166101000a81548160ff02191690831515021790555066038d7ea4c6800060075565b5e620f48000600855655af3107a40006009556064600c556064600d5560c8600e5560c8600f55600f54600e54600d54600c54620000a0919062000e7b565b620000ac919062000e7b565b620000b8919062000e7b565b6010556064601155606460125560c860135560c8601455601454601354601254601154620000e7919062000e7b565b620000f3919062000e7b565b620000ff919062000e7b565b601555612710601a60006101000a81548161ffff021916908361ffff1602179055506002601154600c5462000135919062000e7b565b62000141919062000ed8565b601b556002601254600d5462000158919062000e7b565b62000164919062000ed8565b601c556002601354600e546200017b919062000e7b565b62000187919062000ed8565b601d556002601454600f546200019e919062000e7b565b620001aa919062000ed8565b601e55348015620001ba57600080fd5b50620001db620001cf62000c0d60201b60201c565b62000c1560201b60201c565b600660149054906101000a900460ff16156200022e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002259062000e2b565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002cf57600080fd5b505afa158015620002e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030a919062000d30565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200036d57600080fd5b505afa15801562000382573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a8919062000d30565b6040518363ffffffff1660e01b8152600401620003c792919062000dd1565b602060405180830381600087803b158015620003e257600080fd5b505af1158015620003f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041d919062000d30565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620004a457600080fd5b505afa158015620004b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004df919062000d30565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200054257600080fd5b505afa15801562000557573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200057d919062000d30565b6040518363ffffffff1660e01b81526004016200059c92919062000dd1565b60206040518083038186803b158015620005b557600080fd5b505afa158015620005ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005f0919062000d30565b601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730d0d6e490d5e30ce51f260c159d6ff24c6a3963c600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c5095ec43e15c67c49e4b161cc18cb5e5f7d01f4600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060075460016000620006f162000cd960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360006200074562000cd960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000620008f862000cd960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040162000b3692919062000dfe565b602060405180830381600087803b15801562000b5157600080fd5b505af115801562000b66573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b8c919062000d5c565b5062000b9d62000cd960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60075460405162000bfe919062000e4d565b60405180910390a35062001015565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008151905062000d138162000fe1565b92915050565b60008151905062000d2a8162000ffb565b92915050565b60006020828403121562000d4357600080fd5b600062000d538482850162000d02565b91505092915050565b60006020828403121562000d6f57600080fd5b600062000d7f8482850162000d19565b91505092915050565b62000d938162000f10565b82525050565b600062000da860178362000e6a565b915062000db58262000fb8565b602082019050919050565b62000dcb8162000f50565b82525050565b600060408201905062000de8600083018562000d88565b62000df7602083018462000d88565b9392505050565b600060408201905062000e15600083018562000d88565b62000e24602083018462000dc0565b9392505050565b6000602082019050818103600083015262000e468162000d99565b9050919050565b600060208201905062000e64600083018462000dc0565b92915050565b600082825260208201905092915050565b600062000e888262000f50565b915062000e958362000f50565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000ecd5762000ecc62000f5a565b5b828201905092915050565b600062000ee58262000f50565b915062000ef28362000f50565b92508262000f055762000f0462000f89565b5b828204905092915050565b600062000f1d8262000f30565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b62000fec8162000f10565b811462000ff857600080fd5b50565b620010068162000f24565b81146200101257600080fd5b50565b6139f780620010256000396000f3fe6080604052600436106102345760003560e01c80637bce5a041161012e578063b9e93700116100ab578063d0a398141161006f578063d0a398141461080e578063dd2afc4114610839578063dd62ed3e14610864578063ea2f0b37146108a1578063f2fde38b146108ca5761023b565b8063b9e937001461074d578063c24ad66c14610778578063c9567bf9146107a1578063c99f2fed146107b8578063cc70acee146107e35761023b565b80639f71146d116100f25780639f71146d146106665780639fccce321461068f578063a0d82dc5146106ba578063a8b08982146106e5578063a9059cbb146107105761023b565b80637bce5a041461058f5780638da5cb5b146105ba57806392136913146105e557806395d89b41146106105780639c3b4fdc1461063b5761023b565b8063313ce567116101bc578063521748801161018057806352174880146104ba5780636c288791146104e557806370a0823114610510578063711806f21461054d578063715018a6146105785761023b565b8063313ce567146103e75780633722355c1461041257806340b585521461043b578063437823ec1461046657806347afcbfe1461048f5761023b565b806318160ddd1161020357806318160ddd146102fe5780631d6167ac146103295780631e26e8b8146103545780631f3fed8f1461037f57806323b872dd146103aa5761023b565b806303fd2a451461024057806306fdde031461026b578063095ea7b3146102965780630b298e11146102d35761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b506102556108f3565b6040516102629190612f83565b60405180910390f35b34801561027757600080fd5b506102806108f9565b60405161028d9190613005565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b89190612c4f565b610936565b6040516102ca9190612f9e565b60405180910390f35b3480156102df57600080fd5b506102e8610954565b6040516102f591906131c2565b60405180910390f35b34801561030a57600080fd5b5061031361095a565b60405161032091906131c2565b60405180910390f35b34801561033557600080fd5b5061033e610964565b60405161034b91906131a7565b60405180910390f35b34801561036057600080fd5b50610369610978565b60405161037691906131c2565b60405180910390f35b34801561038b57600080fd5b5061039461097e565b6040516103a191906131c2565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc9190612c00565b610984565b6040516103de9190612f9e565b60405180910390f35b3480156103f357600080fd5b506103fc610a85565b6040516104099190613237565b60405180910390f35b34801561041e57600080fd5b5061043960048036038101906104349190612b72565b610a8e565b005b34801561044757600080fd5b50610450610b65565b60405161045d91906131c2565b60405180910390f35b34801561047257600080fd5b5061048d60048036038101906104889190612b72565b610b6b565b005b34801561049b57600080fd5b506104a4610c42565b6040516104b191906131c2565b60405180910390f35b3480156104c657600080fd5b506104cf610c48565b6040516104dc91906131c2565b60405180910390f35b3480156104f157600080fd5b506104fa610c4e565b60405161050791906131c2565b60405180910390f35b34801561051c57600080fd5b5061053760048036038101906105329190612b72565b610c54565b60405161054491906131c2565b60405180910390f35b34801561055957600080fd5b50610562610c9d565b60405161056f91906131c2565b60405180910390f35b34801561058457600080fd5b5061058d610ca3565b005b34801561059b57600080fd5b506105a4610d2b565b6040516105b191906131c2565b60405180910390f35b3480156105c657600080fd5b506105cf610d31565b6040516105dc9190612f83565b60405180910390f35b3480156105f157600080fd5b506105fa610d5a565b60405161060791906131c2565b60405180910390f35b34801561061c57600080fd5b50610625610d60565b6040516106329190613005565b60405180910390f35b34801561064757600080fd5b50610650610d9d565b60405161065d91906131c2565b60405180910390f35b34801561067257600080fd5b5061068d60048036038101906106889190612b72565b610da3565b005b34801561069b57600080fd5b506106a4610e7a565b6040516106b191906131c2565b60405180910390f35b3480156106c657600080fd5b506106cf610e80565b6040516106dc91906131c2565b60405180910390f35b3480156106f157600080fd5b506106fa610e86565b6040516107079190612f83565b60405180910390f35b34801561071c57600080fd5b5061073760048036038101906107329190612c4f565b610eac565b6040516107449190612f9e565b60405180910390f35b34801561075957600080fd5b50610762610eca565b60405161076f91906131c2565b60405180910390f35b34801561078457600080fd5b5061079f600480360381019061079a9190612c8b565b610ed0565b005b3480156107ad57600080fd5b506107b6610f8e565b005b3480156107c457600080fd5b506107cd611042565b6040516107da91906131c2565b60405180910390f35b3480156107ef57600080fd5b506107f8611048565b60405161080591906131c2565b60405180910390f35b34801561081a57600080fd5b5061082361104e565b60405161083091906131c2565b60405180910390f35b34801561084557600080fd5b5061084e611054565b60405161085b91906131c2565b60405180910390f35b34801561087057600080fd5b5061088b60048036038101906108869190612bc4565b61105a565b60405161089891906131c2565b60405180910390f35b3480156108ad57600080fd5b506108c860048036038101906108c39190612b72565b6110e1565b005b3480156108d657600080fd5b506108f160048036038101906108ec9190612b72565b6111b8565b005b61dead81565b60606040518060400160405280600d81526020017f436861696e20427265616b657200000000000000000000000000000000000000815250905090565b600061094a6109436112b0565b84846112b8565b6001905092915050565b601b5481565b6000600754905090565b601a60009054906101000a900461ffff1681565b60175481565b60185481565b6000610991848484611483565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109dc6112b0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a53906130c7565b60405180910390fd5b610a7985610a686112b0565b8584610a7491906134f9565b6112b8565b60019150509392505050565b60006009905090565b610a966112b0565b73ffffffffffffffffffffffffffffffffffffffff16610ab4610d31565b73ffffffffffffffffffffffffffffffffffffffff1614610b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b01906130e7565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601c5481565b610b736112b0565b73ffffffffffffffffffffffffffffffffffffffff16610b91610d31565b73ffffffffffffffffffffffffffffffffffffffff1614610be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bde906130e7565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60115481565b60125481565b601e5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601d5481565b610cab6112b0565b73ffffffffffffffffffffffffffffffffffffffff16610cc9610d31565b73ffffffffffffffffffffffffffffffffffffffff1614610d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d16906130e7565b60405180910390fd5b610d296000611b0a565b565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b60606040518060400160405280600681526020017f46656e7269720000000000000000000000000000000000000000000000000000815250905090565b600f5481565b610dab6112b0565b73ffffffffffffffffffffffffffffffffffffffff16610dc9610d31565b73ffffffffffffffffffffffffffffffffffffffff1614610e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e16906130e7565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60195481565b60145481565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ec0610eb96112b0565b8484611483565b6001905092915050565b60105481565b610ed86112b0565b73ffffffffffffffffffffffffffffffffffffffff16610ef6610d31565b73ffffffffffffffffffffffffffffffffffffffff1614610f4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f43906130e7565b60405180910390fd5b6009600a610f5a9190613381565b82610f65919061349f565b6009819055506009600a610f799190613381565b81610f84919061349f565b6008819055505050565b610f966112b0565b73ffffffffffffffffffffffffffffffffffffffff16610fb4610d31565b73ffffffffffffffffffffffffffffffffffffffff161461100a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611001906130e7565b60405180910390fd5b6001600660166101000a81548160ff0219169083151502179055506001600660146101000a81548160ff021916908315150217905550565b600c5481565b60165481565b60155481565b600d5481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110e96112b0565b73ffffffffffffffffffffffffffffffffffffffff16611107610d31565b73ffffffffffffffffffffffffffffffffffffffff161461115d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611154906130e7565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6111c06112b0565b73ffffffffffffffffffffffffffffffffffffffff166111de610d31565b73ffffffffffffffffffffffffffffffffffffffff1614611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b906130e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129b90613067565b60405180910390fd5b6112ad81611b0a565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131f90613147565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138f90613087565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161147691906131c2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ea90613127565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155a90613027565b60405180910390fd5b600081116115a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159d90613107565b60405180910390fd5b6115af83610c54565b8111156115f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e890613047565b60405180910390fd5b600660149054906101000a900460ff16806116555750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806116a95750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6116e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116df90613167565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156117935750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156117e95750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561183457600954811115611833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182a90613187565b60405180910390fd5b5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118df5750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119355750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119935760085461194683610c54565b8261195191906132a7565b1115611992576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611989906130a7565b60405180910390fd5b5b600061199e30610c54565b9050600660159054906101000a900460ff16158015611a0b5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611a235750600660169054906101000a900460ff165b8015611a2f5750600081115b15611a5757611a3d81611bce565b60004790506000811115611a5557611a5447612071565b5b505b611b04848484600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611afe5750600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156120dd565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600660156101000a81548160ff0219169083151502179055506000601e54601d54601c54601b54611c0191906132a7565b611c0b91906132a7565b611c1591906132a7565b90506000811415611c265750612053565b60004790506000600267ffffffffffffffff811115611c6e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611c9c5781602001602082028036833780820191505090505b5090503081600081518110611cda577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611d7c57600080fd5b505afa158015611d90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db49190612b9b565b81600181518110611dee577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e5530600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866112b8565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b8152600401611eb99594939291906131dd565b600060405180830381600087803b158015611ed357600080fd5b505af1158015611ee7573d6000803e3d6000fd5b5050505060008247611ef991906134f9565b9050600084601c5483611f0c919061349f565b611f1691906132fd565b90506000811115611f2b57611f2a816122c7565b5b600085601d5484611f3c919061349f565b611f4691906132fd565b90506000811115611fbb57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611fb9573d6000803e3d6000fd5b505b600086601e5485611fcc919061349f565b611fd691906132fd565b9050600081111561204b57600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612049573d6000803e3d6000fd5b505b505050505050505b6000600660156101000a81548160ff02191690831515021790555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120d9573d6000803e3d6000fd5b5050565b600061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156121955782905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461216791906134f9565b925050819055508060075461217c91906134f9565b60078190555061218a61095a565b60078190555061225b565b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121e491906134f9565b92505081905550816121f65782612202565b612201858585612562565b5b905080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461225391906132a7565b925050819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122b891906131c2565b60405180910390a35050505050565b6000600267ffffffffffffffff81111561230a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156123385781602001602082028036833780820191505090505b509050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156123a357600080fd5b505afa1580156123b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123db9190612b9b565b81600081518110612415577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061248a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008461dead426040518663ffffffff1660e01b81526004016125299493929190612fb9565b6000604051808303818588803b15801561254257600080fd5b505af193505050508015612554575060015b61255d5761255e565b5b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156125c357506000601054115b1561269957601a60009054906101000a900461ffff1661ffff16600c54836125eb919061349f565b6125f591906132fd565b601681905550601a60009054906101000a900461ffff1661ffff16600d548361261e919061349f565b61262891906132fd565b601781905550601a60009054906101000a900461ffff1661ffff16600e5483612651919061349f565b61265b91906132fd565b601881905550601a60009054906101000a900461ffff1661ffff16600f5483612684919061349f565b61268e91906132fd565b6019819055506127cb565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156126f857506000601554115b156127ca57601a60009054906101000a900461ffff1661ffff1660115483612720919061349f565b61272a91906132fd565b601681905550601a60009054906101000a900461ffff1661ffff1660125483612753919061349f565b61275d91906132fd565b601781905550601a60009054906101000a900461ffff1661ffff1660135483612786919061349f565b61279091906132fd565b601881905550601a60009054906101000a900461ffff1661ffff16601454836127b9919061349f565b6127c391906132fd565b6019819055505b5b6016546001600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461281e91906132a7565b9250508190555060165460075461283591906134f9565b60078190555061284361095a565b60078190555061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6016546040516128aa91906131c2565b60405180910390a3601754600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461290391906132a7565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60175460405161296991906131c2565b60405180910390a3601854600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129c291906132a7565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601854604051612a2891906131c2565b60405180910390a3601954600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a8191906132a7565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601954604051612ae791906131c2565b60405180910390a36000601954601854601754601654612b0791906132a7565b612b1191906132a7565b612b1b91906132a7565b90508083612b2991906134f9565b9150509392505050565b600081359050612b4281613993565b92915050565b600081519050612b5781613993565b92915050565b600081359050612b6c816139aa565b92915050565b600060208284031215612b8457600080fd5b6000612b9284828501612b33565b91505092915050565b600060208284031215612bad57600080fd5b6000612bbb84828501612b48565b91505092915050565b60008060408385031215612bd757600080fd5b6000612be585828601612b33565b9250506020612bf685828601612b33565b9150509250929050565b600080600060608486031215612c1557600080fd5b6000612c2386828701612b33565b9350506020612c3486828701612b33565b9250506040612c4586828701612b5d565b9150509250925092565b60008060408385031215612c6257600080fd5b6000612c7085828601612b33565b9250506020612c8185828601612b5d565b9150509250929050565b60008060408385031215612c9e57600080fd5b6000612cac85828601612b5d565b9250506020612cbd85828601612b5d565b9150509250929050565b6000612cd38383612cdf565b60208301905092915050565b612ce88161352d565b82525050565b612cf78161352d565b82525050565b6000612d0882613262565b612d128185613285565b9350612d1d83613252565b8060005b83811015612d4e578151612d358882612cc7565b9750612d4083613278565b925050600181019050612d21565b5085935050505092915050565b612d648161353f565b82525050565b612d7381613590565b82525050565b6000612d848261326d565b612d8e8185613296565b9350612d9e8185602086016135a2565b612da781613633565b840191505092915050565b6000612dbf602383613296565b9150612dca82613651565b604082019050919050565b6000612de2603183613296565b9150612ded826136a0565b604082019050919050565b6000612e05602683613296565b9150612e10826136ef565b604082019050919050565b6000612e28602283613296565b9150612e338261373e565b604082019050919050565b6000612e4b602283613296565b9150612e568261378d565b604082019050919050565b6000612e6e602883613296565b9150612e79826137dc565b604082019050919050565b6000612e91602083613296565b9150612e9c8261382b565b602082019050919050565b6000612eb4602983613296565b9150612ebf82613854565b604082019050919050565b6000612ed7602583613296565b9150612ee2826138a3565b604082019050919050565b6000612efa602483613296565b9150612f05826138f2565b604082019050919050565b6000612f1d601783613296565b9150612f2882613941565b602082019050919050565b6000612f40601883613296565b9150612f4b8261396a565b602082019050919050565b612f5f8161354b565b82525050565b612f6e81613579565b82525050565b612f7d81613583565b82525050565b6000602082019050612f986000830184612cee565b92915050565b6000602082019050612fb36000830184612d5b565b92915050565b6000608082019050612fce6000830187612d6a565b8181036020830152612fe08186612cfd565b9050612fef6040830185612cee565b612ffc6060830184612f65565b95945050505050565b6000602082019050818103600083015261301f8184612d79565b905092915050565b6000602082019050818103600083015261304081612db2565b9050919050565b6000602082019050818103600083015261306081612dd5565b9050919050565b6000602082019050818103600083015261308081612df8565b9050919050565b600060208201905081810360008301526130a081612e1b565b9050919050565b600060208201905081810360008301526130c081612e3e565b9050919050565b600060208201905081810360008301526130e081612e61565b9050919050565b6000602082019050818103600083015261310081612e84565b9050919050565b6000602082019050818103600083015261312081612ea7565b9050919050565b6000602082019050818103600083015261314081612eca565b9050919050565b6000602082019050818103600083015261316081612eed565b9050919050565b6000602082019050818103600083015261318081612f10565b9050919050565b600060208201905081810360008301526131a081612f33565b9050919050565b60006020820190506131bc6000830184612f56565b92915050565b60006020820190506131d76000830184612f65565b92915050565b600060a0820190506131f26000830188612f65565b6131ff6020830187612d6a565b81810360408301526132118186612cfd565b90506132206060830185612cee565b61322d6080830184612f65565b9695505050505050565b600060208201905061324c6000830184612f74565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006132b282613579565b91506132bd83613579565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132f2576132f16135d5565b5b828201905092915050565b600061330882613579565b915061331383613579565b92508261332357613322613604565b5b828204905092915050565b6000808291508390505b600185111561337857808604811115613354576133536135d5565b5b60018516156133635780820291505b808102905061337185613644565b9450613338565b94509492505050565b600061338c82613579565b915061339783613583565b92506133c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846133cc565b905092915050565b6000826133dc5760019050613498565b816133ea5760009050613498565b8160018114613400576002811461340a57613439565b6001915050613498565b60ff84111561341c5761341b6135d5565b5b8360020a915084821115613433576134326135d5565b5b50613498565b5060208310610133831016604e8410600b841016171561346e5782820a905083811115613469576134686135d5565b5b613498565b61347b848484600161332e565b92509050818404811115613492576134916135d5565b5b81810290505b9392505050565b60006134aa82613579565b91506134b583613579565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134ee576134ed6135d5565b5b828202905092915050565b600061350482613579565b915061350f83613579565b925082821015613522576135216135d5565b5b828203905092915050565b600061353882613559565b9050919050565b60008115159050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061359b82613579565b9050919050565b60005b838110156135c05780820151818401526020810190506135a5565b838111156135cf576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f526563697069656e742065786365656473206d61782077616c6c65742073697a60008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f7420656e61626c656420796574000000000000000000600082015250565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b61399c8161352d565b81146139a757600080fd5b50565b6139b381613579565b81146139be57600080fd5b5056fea26469706673582212207b053abf02b75fce01a8c253106801c17d79402e12f4aa7bb978c9db0b7f8fd264736f6c63430008040033