60806040526106376007556106546008556040518060600160405280602181526020016200452a60219139600990816200003a919062000de8565b5060016007546008546200004f919062000efe565b6200005b919062000f39565b600b5567063eb89da4ed0000600d553480156200007757600080fd5b50733cc6cdda760b79bafa08df41ecfa224f810dceb66001600980546200009e9062000bd7565b80601f0160208091040260200160405190810160405280929190818152602001828054620000cc9062000bd7565b80156200011d5780601f10620000f1576101008083540402835291602001916200011d565b820191906000526020600020905b815481529060010190602001808311620000ff57829003601f168201915b50505050506040518060400160405280600f81526020017f4b657920546f2054686520436974790000000000000000000000000000000000815250816000908162000169919062000de8565b5080600190816200017b919062000de8565b5050506200019e620001926200044160201b60201c565b6200044960201b60201c565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b11156200039357801562000259576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16637d3e3dbe30846040518363ffffffff1660e01b81526004016200021f92919062000fb9565b600060405180830381600087803b1580156200023a57600080fd5b505af11580156200024f573d6000803e3d6000fd5b5050505062000392565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462000313576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663a0af290330846040518363ffffffff1660e01b8152600401620002d992919062000fb9565b600060405180830381600087803b158015620002f457600080fd5b505af115801562000309573d6000803e3d6000fd5b5050505062000391565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b81526004016200035c919062000fe6565b600060405180830381600087803b1580156200037757600080fd5b505af11580156200038c573d6000803e3d6000fd5b505050505b5b5b505060005b600b548110156200043a576001600854620003b4919062000f39565b60075410620003fa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003f19062001064565b60405180910390fd5b620004243360076000815480929190620004149062001086565b919050556200050f60201b60201c565b8080620004319062001086565b91505062000398565b50620013e2565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005318282604051806020016040528060008152506200053560201b60201c565b5050565b620005478383620005a360201b60201c565b6200055c6000848484620007e960201b60201c565b6200059e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005959062001149565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000615576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200060c90620011bb565b60405180910390fd5b62000626816200099260201b60201c565b1562000669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000660906200122d565b60405180910390fd5b6200067f600083836001620009db60201b60201c565b62000690816200099260201b60201c565b15620006d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006ca906200122d565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4620007e560008383600162000b0860201b60201c565b5050565b6000620008178473ffffffffffffffffffffffffffffffffffffffff1662000b0e60201b62000ce21760201c565b1562000985578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02620008496200044160201b60201c565b8786866040518563ffffffff1660e01b81526004016200086d9493929190620012fa565b6020604051808303816000875af1925050508015620008ac57506040513d601f19601f82011682018060405250810190620008a99190620013b0565b60015b62000934573d8060008114620008df576040519150601f19603f3d011682016040523d82523d6000602084013e620008e4565b606091505b5060008151036200092c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009239062001149565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506200098a565b600190505b949350505050565b60008073ffffffffffffffffffffffffffffffffffffffff16620009bc8362000b3160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600181111562000b0257600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161462000a735780600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a6b919062000efe565b925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161462000b015780600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000af9919062000f39565b925050819055505b5b50505050565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bf057607f821691505b60208210810362000c065762000c0562000ba8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c707fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c31565b62000c7c868362000c31565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000cc962000cc362000cbd8462000c94565b62000c9e565b62000c94565b9050919050565b6000819050919050565b62000ce58362000ca8565b62000cfd62000cf48262000cd0565b84845462000c3e565b825550505050565b600090565b62000d1462000d05565b62000d2181848462000cda565b505050565b5b8181101562000d495762000d3d60008262000d0a565b60018101905062000d27565b5050565b601f82111562000d985762000d628162000c0c565b62000d6d8462000c21565b8101602085101562000d7d578190505b62000d9562000d8c8562000c21565b83018262000d26565b50505b505050565b600082821c905092915050565b600062000dbd6000198460080262000d9d565b1980831691505092915050565b600062000dd8838362000daa565b9150826002028217905092915050565b62000df38262000b6e565b67ffffffffffffffff81111562000e0f5762000e0e62000b79565b5b62000e1b825462000bd7565b62000e2882828562000d4d565b600060209050601f83116001811462000e60576000841562000e4b578287015190505b62000e57858262000dca565b86555062000ec7565b601f19841662000e708662000c0c565b60005b8281101562000e9a5784890151825560018201915060208501945060208101905062000e73565b8683101562000eba578489015162000eb6601f89168262000daa565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000f0b8262000c94565b915062000f188362000c94565b925082820390508181111562000f335762000f3262000ecf565b5b92915050565b600062000f468262000c94565b915062000f538362000c94565b925082820190508082111562000f6e5762000f6d62000ecf565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000fa18262000f74565b9050919050565b62000fb38162000f94565b82525050565b600060408201905062000fd0600083018562000fa8565b62000fdf602083018462000fa8565b9392505050565b600060208201905062000ffd600083018462000fa8565b92915050565b600082825260208201905092915050565b7f6d617820737570706c7920657863656564000000000000000000000000000000600082015250565b60006200104c60118362001003565b9150620010598262001014565b602082019050919050565b600060208201905081810360008301526200107f816200103d565b9050919050565b6000620010938262000c94565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620010c857620010c762000ecf565b5b600182019050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006200113160328362001003565b91506200113e82620010d3565b604082019050919050565b60006020820190508181036000830152620011648162001122565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000620011a360208362001003565b9150620011b0826200116b565b602082019050919050565b60006020820190508181036000830152620011d68162001194565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600062001215601c8362001003565b91506200122282620011dd565b602082019050919050565b60006020820190508181036000830152620012488162001206565b9050919050565b6200125a8162000c94565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156200129c5780820151818401526020810190506200127f565b60008484015250505050565b6000601f19601f8301169050919050565b6000620012c68262001260565b620012d281856200126b565b9350620012e48185602086016200127c565b620012ef81620012a8565b840191505092915050565b600060808201905062001311600083018762000fa8565b62001320602083018662000fa8565b6200132f60408301856200124f565b8181036060830152620013438184620012b9565b905095945050505050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6200138a8162001353565b81146200139657600080fd5b50565b600081519050620013aa816200137f565b92915050565b600060208284031215620013c957620013c86200134e565b5b6000620013d98482850162001399565b91505092915050565b61313880620013f26000396000f3fe6080604052600436106101405760003560e01c806370a08231116100b6578063a22cb4651161006f578063a22cb46514610429578063b88d4fde14610452578063c002d23d1461047b578063c87b56dd146104a6578063e985e9c5146104e3578063f2fde38b1461052057610140565b806370a0823114610338578063715018a6146103755780638d5fce881461038c5780638da5cb5b146103b757806395d89b41146103e257806396b35a341461040d57610140565b80631d2e5a3a116101085780631d2e5a3a1461023e57806323b872dd146102675780633ccfd60b1461029057806341f43434146102a757806342842e0e146102d25780636352211e146102fb57610140565b806301ffc9a71461014557806306fdde0314610182578063081812fc146101ad578063095ea7b3146101ea5780630bae328814610213575b600080fd5b34801561015157600080fd5b5061016c60048036038101906101679190612095565b610549565b60405161017991906120dd565b60405180910390f35b34801561018e57600080fd5b5061019761062b565b6040516101a49190612188565b60405180910390f35b3480156101b957600080fd5b506101d460048036038101906101cf91906121e0565b6106bd565b6040516101e1919061224e565b60405180910390f35b3480156101f657600080fd5b50610211600480360381019061020c9190612295565b610703565b005b34801561021f57600080fd5b5061022861071c565b60405161023591906120dd565b60405180910390f35b34801561024a57600080fd5b5061026560048036038101906102609190612301565b61073b565b005b34801561027357600080fd5b5061028e6004803603810190610289919061232e565b610760565b005b34801561029c57600080fd5b506102a56107af565b005b3480156102b357600080fd5b506102bc610800565b6040516102c991906123e0565b60405180910390f35b3480156102de57600080fd5b506102f960048036038101906102f4919061232e565b610812565b005b34801561030757600080fd5b50610322600480360381019061031d91906121e0565b610861565b60405161032f919061224e565b60405180910390f35b34801561034457600080fd5b5061035f600480360381019061035a91906123fb565b6108e7565b60405161036c9190612437565b60405180910390f35b34801561038157600080fd5b5061038a61099e565b005b34801561039857600080fd5b506103a16109b2565b6040516103ae9190612437565b60405180910390f35b3480156103c357600080fd5b506103cc6109c2565b6040516103d9919061224e565b60405180910390f35b3480156103ee57600080fd5b506103f76109ec565b6040516104049190612188565b60405180910390f35b610427600480360381019061042291906121e0565b610a7e565b005b34801561043557600080fd5b50610450600480360381019061044b9190612452565b610b12565b005b34801561045e57600080fd5b50610479600480360381019061047491906125c7565b610b2b565b005b34801561048757600080fd5b50610490610b7c565b60405161049d9190612437565b60405180910390f35b3480156104b257600080fd5b506104cd60048036038101906104c891906121e0565b610b82565b6040516104da9190612188565b60405180910390f35b3480156104ef57600080fd5b5061050a6004803603810190610505919061264a565b610bcb565b60405161051791906120dd565b60405180910390f35b34801561052c57600080fd5b50610547600480360381019061054291906123fb565b610c5f565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061061457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610624575061062382610d05565b5b9050919050565b60606000805461063a906126b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610666906126b9565b80156106b35780601f10610688576101008083540402835291602001916106b3565b820191906000526020600020905b81548152906001019060200180831161069657829003601f168201915b5050505050905090565b60006106c882610d6f565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8161070d81610dba565b6107178383610eb7565b505050565b6000610726610fce565b600a60009054906101000a900460ff16905090565b610743610fce565b80600a60006101000a81548160ff02191690831515021790555050565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461079e5761079d33610dba565b5b6107a984848461104c565b50505050565b6107b7610fce565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156107fd573d6000803e3d6000fd5b50565b6daaeb6d7670e522a718067333cd4e81565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108505761084f33610dba565b5b61085b8484846110ac565b50505050565b60008061086d836110cc565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d590612736565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e906127c8565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109a6610fce565b6109b06000611109565b565b60006109bc610fce565b47905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546109fb906126b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610a27906126b9565b8015610a745780601f10610a4957610100808354040283529160200191610a74565b820191906000526020600020905b815481529060010190602001808311610a5757829003601f168201915b5050505050905090565b60005b81811015610b0e576001600854610a989190612817565b60075410610adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad290612897565b60405180910390fd5b610afb3360076000815480929190610af2906128b7565b919050556111cf565b8080610b06906128b7565b915050610a81565b5050565b81610b1c81610dba565b610b2683836111ed565b505050565b833373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b6957610b6833610dba565b5b610b7585858585611203565b5050505050565b600d5481565b6060610b8d82610d6f565b6000610b97611265565b905080610ba384611285565b604051602001610bb492919061293b565b604051602081830303815290604052915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610c67610fce565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccd906129d1565b60405180910390fd5b610cdf81611109565b50565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610d7881611353565b610db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dae90612736565b60405180910390fd5b50565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115610eb4576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430836040518363ffffffff1660e01b8152600401610e319291906129f1565b602060405180830381865afa158015610e4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e729190612a2f565b610eb357806040517fede71dcc000000000000000000000000000000000000000000000000000000008152600401610eaa919061224e565b60405180910390fd5b5b50565b6000610ec282610861565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2990612ace565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610f51611394565b73ffffffffffffffffffffffffffffffffffffffff161480610f805750610f7f81610f7a611394565b610bcb565b5b610fbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb690612b60565b60405180910390fd5b610fc9838361139c565b505050565b610fd6611394565b73ffffffffffffffffffffffffffffffffffffffff16610ff46109c2565b73ffffffffffffffffffffffffffffffffffffffff161461104a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104190612bcc565b60405180910390fd5b565b61105d611057611394565b82611455565b61109c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109390612c5e565b60405180910390fd5b6110a78383836114ea565b505050565b6110c783838360405180602001604052806000815250610b2b565b505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6111e98282604051806020016040528060008152506117e3565b5050565b6111ff6111f8611394565b838361183e565b5050565b61121461120e611394565b83611455565b611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124a90612c5e565b60405180910390fd5b61125f848484846119aa565b50505050565b60606040518060800160405280604481526020016130bf60449139905090565b60606000600161129484611a06565b01905060008167ffffffffffffffff8111156112b3576112b261249c565b5b6040519080825280601f01601f1916602001820160405280156112e55781602001600182028036833780820191505090505b509050600082602001820190505b600115611348578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161133c5761133b612c7e565b5b049450600085036112f3575b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16611375836110cc565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661140f83610861565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061146183610861565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806114a357506114a28185610bcb565b5b806114e157508373ffffffffffffffffffffffffffffffffffffffff166114c9846106bd565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661150a82610861565b73ffffffffffffffffffffffffffffffffffffffff1614611560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155790612d1f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c690612db1565b60405180910390fd5b6115dc8383836001611b59565b8273ffffffffffffffffffffffffffffffffffffffff166115fc82610861565b73ffffffffffffffffffffffffffffffffffffffff1614611652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164990612d1f565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46117de8383836001611c7f565b505050565b6117ed8383611c85565b6117fa6000848484611ea2565b611839576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183090612e43565b60405180910390fd5b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a390612eaf565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161199d91906120dd565b60405180910390a3505050565b6119b58484846114ea565b6119c184848484611ea2565b611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f790612e43565b60405180910390fd5b50505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611a64577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611a5a57611a59612c7e565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611aa1576d04ee2d6d415b85acef81000000008381611a9757611a96612c7e565b5b0492506020810190505b662386f26fc100008310611ad057662386f26fc100008381611ac657611ac5612c7e565b5b0492506010810190505b6305f5e1008310611af9576305f5e1008381611aef57611aee612c7e565b5b0492506008810190505b6127108310611b1e576127108381611b1457611b13612c7e565b5b0492506004810190505b60648310611b415760648381611b3757611b36612c7e565b5b0492506002810190505b600a8310611b50576001810190505b80915050919050565b6001811115611c7957600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611bed5780600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611be59190612ecf565b925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611c785780600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c709190612817565b925050819055505b5b50505050565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ceb90612f4f565b60405180910390fd5b611cfd81611353565b15611d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3490612fbb565b60405180910390fd5b611d4b600083836001611b59565b611d5481611353565b15611d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8b90612fbb565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611e9e600083836001611c7f565b5050565b6000611ec38473ffffffffffffffffffffffffffffffffffffffff16610ce2565b1561201c578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611eec611394565b8786866040518563ffffffff1660e01b8152600401611f0e9493929190613030565b6020604051808303816000875af1925050508015611f4a57506040513d601f19601f82011682018060405250810190611f479190613091565b60015b611fcc573d8060008114611f7a576040519150601f19603f3d011682016040523d82523d6000602084013e611f7f565b606091505b506000815103611fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbb90612e43565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612021565b600190505b949350505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6120728161203d565b811461207d57600080fd5b50565b60008135905061208f81612069565b92915050565b6000602082840312156120ab576120aa612033565b5b60006120b984828501612080565b91505092915050565b60008115159050919050565b6120d7816120c2565b82525050565b60006020820190506120f260008301846120ce565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612132578082015181840152602081019050612117565b60008484015250505050565b6000601f19601f8301169050919050565b600061215a826120f8565b6121648185612103565b9350612174818560208601612114565b61217d8161213e565b840191505092915050565b600060208201905081810360008301526121a2818461214f565b905092915050565b6000819050919050565b6121bd816121aa565b81146121c857600080fd5b50565b6000813590506121da816121b4565b92915050565b6000602082840312156121f6576121f5612033565b5b6000612204848285016121cb565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006122388261220d565b9050919050565b6122488161222d565b82525050565b6000602082019050612263600083018461223f565b92915050565b6122728161222d565b811461227d57600080fd5b50565b60008135905061228f81612269565b92915050565b600080604083850312156122ac576122ab612033565b5b60006122ba85828601612280565b92505060206122cb858286016121cb565b9150509250929050565b6122de816120c2565b81146122e957600080fd5b50565b6000813590506122fb816122d5565b92915050565b60006020828403121561231757612316612033565b5b6000612325848285016122ec565b91505092915050565b60008060006060848603121561234757612346612033565b5b600061235586828701612280565b935050602061236686828701612280565b9250506040612377868287016121cb565b9150509250925092565b6000819050919050565b60006123a66123a161239c8461220d565b612381565b61220d565b9050919050565b60006123b88261238b565b9050919050565b60006123ca826123ad565b9050919050565b6123da816123bf565b82525050565b60006020820190506123f560008301846123d1565b92915050565b60006020828403121561241157612410612033565b5b600061241f84828501612280565b91505092915050565b612431816121aa565b82525050565b600060208201905061244c6000830184612428565b92915050565b6000806040838503121561246957612468612033565b5b600061247785828601612280565b9250506020612488858286016122ec565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6124d48261213e565b810181811067ffffffffffffffff821117156124f3576124f261249c565b5b80604052505050565b6000612506612029565b905061251282826124cb565b919050565b600067ffffffffffffffff8211156125325761253161249c565b5b61253b8261213e565b9050602081019050919050565b82818337600083830152505050565b600061256a61256584612517565b6124fc565b90508281526020810184848401111561258657612585612497565b5b612591848285612548565b509392505050565b600082601f8301126125ae576125ad612492565b5b81356125be848260208601612557565b91505092915050565b600080600080608085870312156125e1576125e0612033565b5b60006125ef87828801612280565b945050602061260087828801612280565b9350506040612611878288016121cb565b925050606085013567ffffffffffffffff81111561263257612631612038565b5b61263e87828801612599565b91505092959194509250565b6000806040838503121561266157612660612033565b5b600061266f85828601612280565b925050602061268085828601612280565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806126d157607f821691505b6020821081036126e4576126e361268a565b5b50919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612720601883612103565b915061272b826126ea565b602082019050919050565b6000602082019050818103600083015261274f81612713565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006127b2602983612103565b91506127bd82612756565b604082019050919050565b600060208201905081810360008301526127e1816127a5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612822826121aa565b915061282d836121aa565b9250828201905080821115612845576128446127e8565b5b92915050565b7f6d617820737570706c7920657863656564000000000000000000000000000000600082015250565b6000612881601183612103565b915061288c8261284b565b602082019050919050565b600060208201905081810360008301526128b081612874565b9050919050565b60006128c2826121aa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128f4576128f36127e8565b5b600182019050919050565b600081905092915050565b6000612915826120f8565b61291f81856128ff565b935061292f818560208601612114565b80840191505092915050565b6000612947828561290a565b9150612953828461290a565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006129bb602683612103565b91506129c68261295f565b604082019050919050565b600060208201905081810360008301526129ea816129ae565b9050919050565b6000604082019050612a06600083018561223f565b612a13602083018461223f565b9392505050565b600081519050612a29816122d5565b92915050565b600060208284031215612a4557612a44612033565b5b6000612a5384828501612a1a565b91505092915050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ab8602183612103565b9150612ac382612a5c565b604082019050919050565b60006020820190508181036000830152612ae781612aab565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000612b4a603d83612103565b9150612b5582612aee565b604082019050919050565b60006020820190508181036000830152612b7981612b3d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612bb6602083612103565b9150612bc182612b80565b602082019050919050565b60006020820190508181036000830152612be581612ba9565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000612c48602d83612103565b9150612c5382612bec565b604082019050919050565b60006020820190508181036000830152612c7781612c3b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000612d09602583612103565b9150612d1482612cad565b604082019050919050565b60006020820190508181036000830152612d3881612cfc565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612d9b602483612103565b9150612da682612d3f565b604082019050919050565b60006020820190508181036000830152612dca81612d8e565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000612e2d603283612103565b9150612e3882612dd1565b604082019050919050565b60006020820190508181036000830152612e5c81612e20565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000612e99601983612103565b9150612ea482612e63565b602082019050919050565b60006020820190508181036000830152612ec881612e8c565b9050919050565b6000612eda826121aa565b9150612ee5836121aa565b9250828203905081811115612efd57612efc6127e8565b5b92915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000612f39602083612103565b9150612f4482612f03565b602082019050919050565b60006020820190508181036000830152612f6881612f2c565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000612fa5601c83612103565b9150612fb082612f6f565b602082019050919050565b60006020820190508181036000830152612fd481612f98565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061300282612fdb565b61300c8185612fe6565b935061301c818560208601612114565b6130258161213e565b840191505092915050565b6000608082019050613045600083018761223f565b613052602083018661223f565b61305f6040830185612428565b81810360608301526130718184612ff7565b905095945050505050565b60008151905061308b81612069565b92915050565b6000602082840312156130a7576130a6612033565b5b60006130b58482850161307c565b9150509291505056fe68747470733a2f2f697066732e696f2f697066732f516d57616f75753458665974627a6f6b4e55556159617956465155795a5a517146624b64514d59504c34594b45732fa2646970667358221220518e243431f1a515fb2ffaf3971cb5a3171f8a088b6aecd0968690fe4e415de964736f6c634300081100334d4d41492050757265576f726c64204b657920546f205468652043697479204332