608060405260006007556040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600c90816200004f919062000b27565b503480156200005d57600080fd5b506040518060400160405280600881526020017f4242582d42756c6c0000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f42424200000000000000000000000000000000000000000000000000000000008152508160009081620000db919062000b27565b508060019081620000ed919062000b27565b50505062000110620001046200018060201b60201c565b6200018860201b60201c565b6040518060600160405280602581526020016200481760259139600b90816200013a919062000b27565b506000600190505b6004811162000171576200015d33826200024e60201b60201c565b80620001699062000c3d565b905062000142565b50600460098190555062001065565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002708282604051806020016040528060008152506200027460201b60201c565b5050565b620002868383620002e260201b60201c565b6200029b60008484846200052860201b60201c565b620002dd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002d49062000d11565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000354576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200034b9062000d83565b60405180910390fd5b6200036581620006d160201b60201c565b15620003a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200039f9062000df5565b60405180910390fd5b620003be6000838360016200071a60201b60201c565b620003cf81620006d160201b60201c565b1562000412576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004099062000df5565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4620005246000838360016200084760201b60201c565b5050565b6000620005568473ffffffffffffffffffffffffffffffffffffffff166200084d60201b620012371760201c565b15620006c4578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02620005886200018060201b60201c565b8786866040518563ffffffff1660e01b8152600401620005ac949392919062000f07565b6020604051808303816000875af1925050508015620005eb57506040513d601f19601f82011682018060405250810190620005e8919062000fbd565b60015b62000673573d80600081146200061e576040519150601f19603f3d011682016040523d82523d6000602084013e62000623565b606091505b5060008151036200066b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006629062000d11565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050620006c9565b600190505b949350505050565b60008073ffffffffffffffffffffffffffffffffffffffff16620006fb836200087060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60018111156200084157600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614620007b25780600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620007aa919062000fef565b925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614620008405780600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200083891906200102a565b925050819055505b5b50505050565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200092f57607f821691505b602082108103620009455762000944620008e7565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009af7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000970565b620009bb868362000970565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000a0862000a02620009fc84620009d3565b620009dd565b620009d3565b9050919050565b6000819050919050565b62000a2483620009e7565b62000a3c62000a338262000a0f565b8484546200097d565b825550505050565b600090565b62000a5362000a44565b62000a6081848462000a19565b505050565b5b8181101562000a885762000a7c60008262000a49565b60018101905062000a66565b5050565b601f82111562000ad75762000aa1816200094b565b62000aac8462000960565b8101602085101562000abc578190505b62000ad462000acb8562000960565b83018262000a65565b50505b505050565b600082821c905092915050565b600062000afc6000198460080262000adc565b1980831691505092915050565b600062000b17838362000ae9565b9150826002028217905092915050565b62000b3282620008ad565b67ffffffffffffffff81111562000b4e5762000b4d620008b8565b5b62000b5a825462000916565b62000b6782828562000a8c565b600060209050601f83116001811462000b9f576000841562000b8a578287015190505b62000b96858262000b09565b86555062000c06565b601f19841662000baf866200094b565b60005b8281101562000bd95784890151825560018201915060208501945060208101905062000bb2565b8683101562000bf9578489015162000bf5601f89168262000ae9565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c4a82620009d3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362000c7f5762000c7e62000c0e565b5b600182019050919050565b600082825260208201905092915050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600062000cf960328362000c8a565b915062000d068262000c9b565b604082019050919050565b6000602082019050818103600083015262000d2c8162000cea565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600062000d6b60208362000c8a565b915062000d788262000d33565b602082019050919050565b6000602082019050818103600083015262000d9e8162000d5c565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600062000ddd601c8362000c8a565b915062000dea8262000da5565b602082019050919050565b6000602082019050818103600083015262000e108162000dce565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e448262000e17565b9050919050565b62000e568162000e37565b82525050565b62000e6781620009d3565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562000ea957808201518184015260208101905062000e8c565b60008484015250505050565b6000601f19601f8301169050919050565b600062000ed38262000e6d565b62000edf818562000e78565b935062000ef181856020860162000e89565b62000efc8162000eb5565b840191505092915050565b600060808201905062000f1e600083018762000e4b565b62000f2d602083018662000e4b565b62000f3c604083018562000e5c565b818103606083015262000f50818462000ec6565b905095945050505050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b62000f978162000f60565b811462000fa357600080fd5b50565b60008151905062000fb78162000f8c565b92915050565b60006020828403121562000fd65762000fd562000f5b565b5b600062000fe68482850162000fa6565b91505092915050565b600062000ffc82620009d3565b91506200100983620009d3565b925082820390508181111562001024576200102362000c0e565b5b92915050565b60006200103782620009d3565b91506200104483620009d3565b92508282019050808211156200105f576200105e62000c0e565b5b92915050565b6137a280620010756000396000f3fe6080604052600436106101b75760003560e01c80638ecad721116100ec578063a22cb4651161008a578063d6960ffb11610064578063d6960ffb146105b8578063e985e9c5146105e3578063f2fde38b14610620578063f47c84c514610649576101b7565b8063a22cb46514610529578063b88d4fde14610552578063c87b56dd1461057b576101b7565b80639abc8320116100c65780639abc83201461048e578063a035b1fe146104b9578063a0712d68146104e4578063a0bcfc7f14610500576101b7565b80638ecad7211461040f57806391b7f5ed1461043a57806395d89b4114610463576101b7565b806342842e0e1161015957806370a082311161013357806370a0823114610386578063715018a6146103c3578063853828b6146103da5780638da5cb5b146103e4576101b7565b806342842e0e146102f5578063564566a81461031e5780636352211e14610349576101b7565b8063095ea7b311610195578063095ea7b31461026157806318160ddd1461028a57806323b872dd146102b557806334918dfd146102de576101b7565b806301ffc9a7146101bc57806306fdde03146101f9578063081812fc14610224575b600080fd5b3480156101c857600080fd5b506101e360048036038101906101de91906122d5565b610674565b6040516101f0919061231d565b60405180910390f35b34801561020557600080fd5b5061020e610756565b60405161021b91906123c8565b60405180910390f35b34801561023057600080fd5b5061024b60048036038101906102469190612420565b6107e8565b604051610258919061248e565b60405180910390f35b34801561026d57600080fd5b50610288600480360381019061028391906124d5565b61082e565b005b34801561029657600080fd5b5061029f610945565b6040516102ac9190612524565b60405180910390f35b3480156102c157600080fd5b506102dc60048036038101906102d7919061253f565b61094b565b005b3480156102ea57600080fd5b506102f36109ab565b005b34801561030157600080fd5b5061031c6004803603810190610317919061253f565b6109df565b005b34801561032a57600080fd5b506103336109ff565b604051610340919061231d565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190612420565b610a12565b60405161037d919061248e565b60405180910390f35b34801561039257600080fd5b506103ad60048036038101906103a89190612592565b610a98565b6040516103ba9190612524565b60405180910390f35b3480156103cf57600080fd5b506103d8610b4f565b005b6103e2610b63565b005b3480156103f057600080fd5b506103f9610bba565b604051610406919061248e565b60405180910390f35b34801561041b57600080fd5b50610424610be4565b6040516104319190612524565b60405180910390f35b34801561044657600080fd5b50610461600480360381019061045c9190612420565b610be9565b005b34801561046f57600080fd5b50610478610bfb565b60405161048591906123c8565b60405180910390f35b34801561049a57600080fd5b506104a3610c8d565b6040516104b091906123c8565b60405180910390f35b3480156104c557600080fd5b506104ce610d1b565b6040516104db9190612524565b60405180910390f35b6104fe60048036038101906104f99190612420565b610d21565b005b34801561050c57600080fd5b50610527600480360381019061052291906126f4565b610f91565b005b34801561053557600080fd5b50610550600480360381019061054b9190612769565b610fac565b005b34801561055e57600080fd5b506105796004803603810190610574919061284a565b610fc2565b005b34801561058757600080fd5b506105a2600480360381019061059d9190612420565b611024565b6040516105af91906123c8565b60405180910390f35b3480156105c457600080fd5b506105cd61108c565b6040516105da91906123c8565b60405180910390f35b3480156105ef57600080fd5b5061060a600480360381019061060591906128cd565b61111a565b604051610617919061231d565b60405180910390f35b34801561062c57600080fd5b5061064760048036038101906106429190612592565b6111ae565b005b34801561065557600080fd5b5061065e611231565b60405161066b9190612524565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061073f57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061074f575061074e8261125a565b5b9050919050565b6060600080546107659061293c565b80601f01602080910402602001604051908101604052809291908181526020018280546107919061293c565b80156107de5780601f106107b3576101008083540402835291602001916107de565b820191906000526020600020905b8154815290600101906020018083116107c157829003601f168201915b5050505050905090565b60006107f3826112c4565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061083982610a12565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a0906129df565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108c861130f565b73ffffffffffffffffffffffffffffffffffffffff1614806108f757506108f6816108f161130f565b61111a565b5b610936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092d90612a71565b60405180910390fd5b6109408383611317565b505050565b60095481565b61095c61095661130f565b826113d0565b61099b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099290612b03565b60405180910390fd5b6109a6838383611465565b505050565b6109b361175e565b600860009054906101000a900460ff1615600860006101000a81548160ff021916908315150217905550565b6109fa83838360405180602001604052806000815250610fc2565b505050565b600860009054906101000a900460ff1681565b600080610a1e836117dc565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8690612b6f565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aff90612c01565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b5761175e565b610b616000611819565b565b610b6b61175e565b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610bb6573d6000803e3d6000fd5b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a81565b610bf161175e565b8060078190555050565b606060018054610c0a9061293c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c369061293c565b8015610c835780601f10610c5857610100808354040283529160200191610c83565b820191906000526020600020905b815481529060010190602001808311610c6657829003601f168201915b5050505050905090565b600b8054610c9a9061293c565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc69061293c565b8015610d135780601f10610ce857610100808354040283529160200191610d13565b820191906000526020600020905b815481529060010190602001808311610cf657829003601f168201915b505050505081565b60075481565b600860009054906101000a900460ff16610d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6790612c6d565b60405180910390fd5b600a811115610db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dab90612cff565b60405180910390fd5b600a81600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e019190612d4e565b1115610e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3990612dce565b60405180910390fd5b600060095490506127108282610e589190612d4e565b1115610e99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9090612e3a565b60405180910390fd5b3460075483610ea89190612e5a565b1115610ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee090612ee8565b60405180910390fd5b6000600190505b828111610f1d57610f0c338284610f079190612d4e565b6118df565b80610f1690612f08565b9050610ef0565b5081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f6d9190612d4e565b925050819055508160096000828254610f869190612d4e565b925050819055505050565b610f9961175e565b80600b9081610fa891906130fc565b5050565b610fbe610fb761130f565b83836118fd565b5050565b610fd3610fcd61130f565b836113d0565b611012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100990612b03565b60405180910390fd5b61101e84848484611a69565b50505050565b606061102f826112c4565b6000611039611ac5565b905060008151116110595760405180602001604052806000815250611084565b8061106384611adc565b60405160200161107492919061320a565b6040516020818303038152906040525b915050919050565b600c80546110999061293c565b80601f01602080910402602001604051908101604052809291908181526020018280546110c59061293c565b80156111125780601f106110e757610100808354040283529160200191611112565b820191906000526020600020905b8154815290600101906020018083116110f557829003601f168201915b505050505081565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6111b661175e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c906132a0565b60405180910390fd5b61122e81611819565b50565b61271081565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6112cd81611baa565b61130c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130390612b6f565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661138a83610a12565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806113dc83610a12565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061141e575061141d818561111a565b5b8061145c57508373ffffffffffffffffffffffffffffffffffffffff16611444846107e8565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661148582610a12565b73ffffffffffffffffffffffffffffffffffffffff16146114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d290613332565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361154a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611541906133c4565b60405180910390fd5b6115578383836001611beb565b8273ffffffffffffffffffffffffffffffffffffffff1661157782610a12565b73ffffffffffffffffffffffffffffffffffffffff16146115cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c490613332565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46117598383836001611d11565b505050565b61176661130f565b73ffffffffffffffffffffffffffffffffffffffff16611784610bba565b73ffffffffffffffffffffffffffffffffffffffff16146117da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d190613430565b60405180910390fd5b565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6118f9828260405180602001604052806000815250611d17565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361196b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119629061349c565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611a5c919061231d565b60405180910390a3505050565b611a74848484611465565b611a8084848484611d72565b611abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab69061352e565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b606060006001611aeb84611ef9565b01905060008167ffffffffffffffff811115611b0a57611b096125c9565b5b6040519080825280601f01601f191660200182016040528015611b3c5781602001600182028036833780820191505090505b509050600082602001820190505b600115611b9f578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611b9357611b9261354e565b5b04945060008503611b4a575b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16611bcc836117dc565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6001811115611d0b57600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611c7f5780600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c77919061357d565b925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611d0a5780600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d029190612d4e565b925050819055505b5b50505050565b50505050565b611d21838361204c565b611d2e6000848484611d72565b611d6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d649061352e565b60405180910390fd5b505050565b6000611d938473ffffffffffffffffffffffffffffffffffffffff16611237565b15611eec578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611dbc61130f565b8786866040518563ffffffff1660e01b8152600401611dde9493929190613606565b6020604051808303816000875af1925050508015611e1a57506040513d601f19601f82011682018060405250810190611e179190613667565b60015b611e9c573d8060008114611e4a576040519150601f19603f3d011682016040523d82523d6000602084013e611e4f565b606091505b506000815103611e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8b9061352e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611ef1565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611f57577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611f4d57611f4c61354e565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611f94576d04ee2d6d415b85acef81000000008381611f8a57611f8961354e565b5b0492506020810190505b662386f26fc100008310611fc357662386f26fc100008381611fb957611fb861354e565b5b0492506010810190505b6305f5e1008310611fec576305f5e1008381611fe257611fe161354e565b5b0492506008810190505b61271083106120115761271083816120075761200661354e565b5b0492506004810190505b60648310612034576064838161202a5761202961354e565b5b0492506002810190505b600a8310612043576001810190505b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b2906136e0565b60405180910390fd5b6120c481611baa565b15612104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fb9061374c565b60405180910390fd5b612112600083836001611beb565b61211b81611baa565b1561215b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121529061374c565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612265600083836001611d11565b5050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6122b28161227d565b81146122bd57600080fd5b50565b6000813590506122cf816122a9565b92915050565b6000602082840312156122eb576122ea612273565b5b60006122f9848285016122c0565b91505092915050565b60008115159050919050565b61231781612302565b82525050565b6000602082019050612332600083018461230e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612372578082015181840152602081019050612357565b60008484015250505050565b6000601f19601f8301169050919050565b600061239a82612338565b6123a48185612343565b93506123b4818560208601612354565b6123bd8161237e565b840191505092915050565b600060208201905081810360008301526123e2818461238f565b905092915050565b6000819050919050565b6123fd816123ea565b811461240857600080fd5b50565b60008135905061241a816123f4565b92915050565b60006020828403121561243657612435612273565b5b60006124448482850161240b565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124788261244d565b9050919050565b6124888161246d565b82525050565b60006020820190506124a3600083018461247f565b92915050565b6124b28161246d565b81146124bd57600080fd5b50565b6000813590506124cf816124a9565b92915050565b600080604083850312156124ec576124eb612273565b5b60006124fa858286016124c0565b925050602061250b8582860161240b565b9150509250929050565b61251e816123ea565b82525050565b60006020820190506125396000830184612515565b92915050565b60008060006060848603121561255857612557612273565b5b6000612566868287016124c0565b9350506020612577868287016124c0565b92505060406125888682870161240b565b9150509250925092565b6000602082840312156125a8576125a7612273565b5b60006125b6848285016124c0565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6126018261237e565b810181811067ffffffffffffffff821117156126205761261f6125c9565b5b80604052505050565b6000612633612269565b905061263f82826125f8565b919050565b600067ffffffffffffffff82111561265f5761265e6125c9565b5b6126688261237e565b9050602081019050919050565b82818337600083830152505050565b600061269761269284612644565b612629565b9050828152602081018484840111156126b3576126b26125c4565b5b6126be848285612675565b509392505050565b600082601f8301126126db576126da6125bf565b5b81356126eb848260208601612684565b91505092915050565b60006020828403121561270a57612709612273565b5b600082013567ffffffffffffffff81111561272857612727612278565b5b612734848285016126c6565b91505092915050565b61274681612302565b811461275157600080fd5b50565b6000813590506127638161273d565b92915050565b600080604083850312156127805761277f612273565b5b600061278e858286016124c0565b925050602061279f85828601612754565b9150509250929050565b600067ffffffffffffffff8211156127c4576127c36125c9565b5b6127cd8261237e565b9050602081019050919050565b60006127ed6127e8846127a9565b612629565b905082815260208101848484011115612809576128086125c4565b5b612814848285612675565b509392505050565b600082601f830112612831576128306125bf565b5b81356128418482602086016127da565b91505092915050565b6000806000806080858703121561286457612863612273565b5b6000612872878288016124c0565b9450506020612883878288016124c0565b93505060406128948782880161240b565b925050606085013567ffffffffffffffff8111156128b5576128b4612278565b5b6128c18782880161281c565b91505092959194509250565b600080604083850312156128e4576128e3612273565b5b60006128f2858286016124c0565b9250506020612903858286016124c0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061295457607f821691505b6020821081036129675761296661290d565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006129c9602183612343565b91506129d48261296d565b604082019050919050565b600060208201905081810360008301526129f8816129bc565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000612a5b603d83612343565b9150612a66826129ff565b604082019050919050565b60006020820190508181036000830152612a8a81612a4e565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000612aed602d83612343565b9150612af882612a91565b604082019050919050565b60006020820190508181036000830152612b1c81612ae0565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612b59601883612343565b9150612b6482612b23565b602082019050919050565b60006020820190508181036000830152612b8881612b4c565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000612beb602983612343565b9150612bf682612b8f565b604082019050919050565b60006020820190508181036000830152612c1a81612bde565b9050919050565b7f5468652073616c65206973207061757365642e00000000000000000000000000600082015250565b6000612c57601383612343565b9150612c6282612c21565b602082019050919050565b60006020820190508181036000830152612c8681612c4a565b9050919050565b7f596f752063616e6e6f74206d696e742074686174206d616e7920696e206f6e6560008201527f207472616e73616374696f6e2e00000000000000000000000000000000000000602082015250565b6000612ce9602d83612343565b9150612cf482612c8d565b604082019050919050565b60006020820190508181036000830152612d1881612cdc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d59826123ea565b9150612d64836123ea565b9250828201905080821115612d7c57612d7b612d1f565b5b92915050565b7f596f752063616e6e6f74206d696e742074686174206d616e7920746f74616c2e600082015250565b6000612db8602083612343565b9150612dc382612d82565b602082019050919050565b60006020820190508181036000830152612de781612dab565b9050919050565b7f4578636565647320746f74616c20737570706c792e0000000000000000000000600082015250565b6000612e24601583612343565b9150612e2f82612dee565b602082019050919050565b60006020820190508181036000830152612e5381612e17565b9050919050565b6000612e65826123ea565b9150612e70836123ea565b9250828202612e7e816123ea565b91508282048414831517612e9557612e94612d1f565b5b5092915050565b7f496e73756666696369656e742066756e64732e00000000000000000000000000600082015250565b6000612ed2601383612343565b9150612edd82612e9c565b602082019050919050565b60006020820190508181036000830152612f0181612ec5565b9050919050565b6000612f13826123ea565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f4557612f44612d1f565b5b600182019050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612fb27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612f75565b612fbc8683612f75565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612ff9612ff4612fef846123ea565b612fd4565b6123ea565b9050919050565b6000819050919050565b61301383612fde565b61302761301f82613000565b848454612f82565b825550505050565b600090565b61303c61302f565b61304781848461300a565b505050565b5b8181101561306b57613060600082613034565b60018101905061304d565b5050565b601f8211156130b05761308181612f50565b61308a84612f65565b81016020851015613099578190505b6130ad6130a585612f65565b83018261304c565b50505b505050565b600082821c905092915050565b60006130d3600019846008026130b5565b1980831691505092915050565b60006130ec83836130c2565b9150826002028217905092915050565b61310582612338565b67ffffffffffffffff81111561311e5761311d6125c9565b5b613128825461293c565b61313382828561306f565b600060209050601f8311600181146131665760008415613154578287015190505b61315e85826130e0565b8655506131c6565b601f19841661317486612f50565b60005b8281101561319c57848901518255600182019150602085019450602081019050613177565b868310156131b957848901516131b5601f8916826130c2565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b60006131e482612338565b6131ee81856131ce565b93506131fe818560208601612354565b80840191505092915050565b600061321682856131d9565b915061322282846131d9565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061328a602683612343565b91506132958261322e565b604082019050919050565b600060208201905081810360008301526132b98161327d565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b600061331c602583612343565b9150613327826132c0565b604082019050919050565b6000602082019050818103600083015261334b8161330f565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006133ae602483612343565b91506133b982613352565b604082019050919050565b600060208201905081810360008301526133dd816133a1565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061341a602083612343565b9150613425826133e4565b602082019050919050565b600060208201905081810360008301526134498161340d565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613486601983612343565b915061349182613450565b602082019050919050565b600060208201905081810360008301526134b581613479565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613518603283612343565b9150613523826134bc565b604082019050919050565b600060208201905081810360008301526135478161350b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613588826123ea565b9150613593836123ea565b92508282039050818111156135ab576135aa612d1f565b5b92915050565b600081519050919050565b600082825260208201905092915050565b60006135d8826135b1565b6135e281856135bc565b93506135f2818560208601612354565b6135fb8161237e565b840191505092915050565b600060808201905061361b600083018761247f565b613628602083018661247f565b6136356040830185612515565b818103606083015261364781846135cd565b905095945050505050565b600081519050613661816122a9565b92915050565b60006020828403121561367d5761367c612273565b5b600061368b84828501613652565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006136ca602083612343565b91506136d582613694565b602082019050919050565b600060208201905081810360008301526136f9816136bd565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613736601c83612343565b915061374182613700565b602082019050919050565b6000602082019050818103600083015261376581613729565b905091905056fea2646970667358221220f40e35673dacc9e49f64acadde7cfea7bfb08c98fd91a8e56c837d13d81125b264736f6c63430008110033697066733a2f2f78787878787878787878787878787878787878787878787878787878782f