60806040525f600c5f6101000a81548160ff0219169083151502179055505f600c60016101000a81548160ff02191690831515021790555034801562000043575f80fd5b50604051620054b3380380620054b3833981810160405281019062000069919062000ca2565b733cc6cdda760b79bafa08df41ecfa224f810dceb660018585816002908162000093919062000fd9565b508060039081620000a5919062000fd9565b50620000b66200031360201b60201c565b5f819055505050620000dd620000d16200031b60201b60201c565b6200032260201b60201c565b60016009819055505f6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115620002c95780156200019a576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16637d3e3dbe30846040518363ffffffff1660e01b81526004016200016592919062001100565b5f604051808303815f87803b1580156200017d575f80fd5b505af115801562000190573d5f803e3d5ffd5b50505050620002c8565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146200024e576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663a0af290330846040518363ffffffff1660e01b81526004016200021992919062001100565b5f604051808303815f87803b15801562000231575f80fd5b505af115801562000244573d5f803e3d5ffd5b50505050620002c7565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b81526004016200029791906200112b565b5f604051808303815f87803b158015620002af575f80fd5b505af1158015620002c2573d5f803e3d5ffd5b505050505b5b5b505084600d81905550620002e382620003e560201b60201c565b620002f4816200048960201b60201c565b62000308336101f46200052d60201b60201c565b50505050506200130b565b5f6001905090565b5f33905090565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620003f56200031b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200041b6200055260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000474576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200046b90620011a4565b60405180910390fd5b80600f908162000485919062000fd9565b5050565b620004996200031b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620004bf6200055260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000518576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200050f90620011a4565b60405180910390fd5b806010908162000529919062000fd9565b5050565b6200054e828260405180602001604052805f8152506200057a60201b60201c565b5050565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200058f83838360016200059460201b60201c565b505050565b5f805490505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603620005ff576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f840362000639576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200064d5f8683876200096c60201b60201c565b8360055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f8282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508360055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508460045f8381526020019081526020015f205f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504260045f8381526020019081526020015f205f0160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505f8190505f85820190508380156200081057506200080f8773ffffffffffffffffffffffffffffffffffffffff166200097260201b60201c565b5b15620008de575b818773ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46200088c5f8884806001019550886200098360201b60201c565b620008c3576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8082036200081757825f5414620008d8575f80fd5b62000949565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808203620008df575b815f819055505050620009655f86838762000adf60201b60201c565b5050505050565b50505050565b5f80823b90505f8111915050919050565b5f8373ffffffffffffffffffffffffffffffffffffffff1663150b7a02620009b06200031b60201b60201c565b8786866040518563ffffffff1660e01b8152600401620009d494939291906200122f565b6020604051808303815f875af192505050801562000a1257506040513d601f19601f8201168201806040525081019062000a0f9190620012db565b60015b62000a8c573d805f811462000a43576040519150601f19603f3d011682016040523d82523d5f602084013e62000a48565b606091505b505f81510362000a84576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b50505050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b62000b0a8162000af6565b811462000b15575f80fd5b50565b5f8151905062000b288162000aff565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b62000b7e8262000b36565b810181811067ffffffffffffffff8211171562000ba05762000b9f62000b46565b5b80604052505050565b5f62000bb462000ae5565b905062000bc2828262000b73565b919050565b5f67ffffffffffffffff82111562000be45762000be362000b46565b5b62000bef8262000b36565b9050602081019050919050565b5f5b8381101562000c1b57808201518184015260208101905062000bfe565b5f8484015250505050565b5f62000c3c62000c368462000bc7565b62000ba9565b90508281526020810184848401111562000c5b5762000c5a62000b32565b5b62000c6884828562000bfc565b509392505050565b5f82601f83011262000c875762000c8662000b2e565b5b815162000c9984826020860162000c26565b91505092915050565b5f805f805f60a0868803121562000cbe5762000cbd62000aee565b5b5f62000ccd8882890162000b18565b955050602086015167ffffffffffffffff81111562000cf15762000cf062000af2565b5b62000cff8882890162000c70565b945050604086015167ffffffffffffffff81111562000d235762000d2262000af2565b5b62000d318882890162000c70565b935050606086015167ffffffffffffffff81111562000d555762000d5462000af2565b5b62000d638882890162000c70565b925050608086015167ffffffffffffffff81111562000d875762000d8662000af2565b5b62000d958882890162000c70565b9150509295509295909350565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000df157607f821691505b60208210810362000e075762000e0662000dac565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000e6b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000e2e565b62000e77868362000e2e565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000ec162000ebb62000eb58462000e8f565b62000e98565b62000e8f565b9050919050565b5f819050919050565b62000edc8362000ea1565b62000ef462000eeb8262000ec8565b84845462000e3a565b825550505050565b5f90565b62000f0a62000efc565b62000f1781848462000ed1565b505050565b5b8181101562000f3e5762000f325f8262000f00565b60018101905062000f1d565b5050565b601f82111562000f8d5762000f578162000e0d565b62000f628462000e1f565b8101602085101562000f72578190505b62000f8a62000f818562000e1f565b83018262000f1c565b50505b505050565b5f82821c905092915050565b5f62000faf5f198460080262000f92565b1980831691505092915050565b5f62000fc9838362000f9e565b9150826002028217905092915050565b62000fe48262000da2565b67ffffffffffffffff811115620010005762000fff62000b46565b5b6200100c825462000dd9565b6200101982828562000f42565b5f60209050601f8311600181146200104f575f84156200103a578287015190505b62001046858262000fbc565b865550620010b5565b601f1984166200105f8662000e0d565b5f5b82811015620010885784890151825560018201915060208501945060208101905062001061565b86831015620010a85784890151620010a4601f89168262000f9e565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620010e882620010bd565b9050919050565b620010fa81620010dc565b82525050565b5f604082019050620011155f830185620010ef565b620011246020830184620010ef565b9392505050565b5f602082019050620011405f830184620010ef565b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6200118c60208362001146565b9150620011998262001156565b602082019050919050565b5f6020820190508181035f830152620011bd816200117e565b9050919050565b620011cf8162000e8f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f620011fb82620011d5565b620012078185620011df565b93506200121981856020860162000bfc565b620012248162000b36565b840191505092915050565b5f608082019050620012445f830187620010ef565b620012536020830186620010ef565b620012626040830185620011c4565b8181036060830152620012768184620011ef565b905095945050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b620012b78162001281565b8114620012c2575f80fd5b50565b5f81519050620012d581620012ac565b92915050565b5f60208284031215620012f357620012f262000aee565b5b5f6200130284828501620012c5565b91505092915050565b61419a80620013195f395ff3fe608060405234801561000f575f80fd5b50600436106101f9575f3560e01c806369a6b3db11610118578063a22cb465116100ab578063c87b56dd1161007a578063c87b56dd14610588578063d5abeb01146105b8578063e985e9c5146105d6578063f12d54d814610606578063f2fde38b14610624576101f9565b8063a22cb46514610516578063b228d92514610532578063b4d1147f14610550578063b88d4fde1461056c576101f9565b80637ec4a659116100e75780637ec4a659146104a257806389f6fbe6146104be5780638da5cb5b146104da57806395d89b41146104f8576101f9565b806369a6b3db1461043057806370a082311461044c578063715018a61461047c5780637cb6475914610486576101f9565b80632a55205a1161019057806342842e0e1161015f57806342842e0e146103a85780635503a0e8146103c457806362b99ad4146103e25780636352211e14610400576101f9565b80632a55205a1461030b5780632eb4a7ab1461033c5780633cd7b1521461035a57806341f434341461038a576101f9565b806316ba10e0116101cc57806316ba10e01461029757806318160ddd146102b35780631b6e0095146102d157806323b872dd146102ef576101f9565b806301ffc9a7146101fd57806306fdde031461022d578063081812fc1461024b578063095ea7b31461027b575b5f80fd5b61021760048036038101906102129190612d69565b610640565b6040516102249190612dae565b60405180910390f35b610235610651565b6040516102429190612e51565b60405180910390f35b61026560048036038101906102609190612ea4565b6106e1565b6040516102729190612f0e565b60405180910390f35b61029560048036038101906102909190612f51565b610759565b005b6102b160048036038101906102ac91906130bb565b610772565b005b6102bb610801565b6040516102c89190613111565b60405180910390f35b6102d9610816565b6040516102e69190612dae565b60405180910390f35b6103096004803603810190610304919061312a565b610828565b005b6103256004803603810190610320919061317a565b610877565b6040516103339291906131b8565b60405180910390f35b610344610a53565b60405161035191906131f7565b60405180910390f35b610374600480360381019061036f9190613210565b610a59565b6040516103819190613111565b60405180910390f35b610392610a6e565b60405161039f9190613296565b60405180910390f35b6103c260048036038101906103bd919061312a565b610a80565b005b6103cc610acf565b6040516103d99190612e51565b60405180910390f35b6103ea610b5b565b6040516103f79190612e51565b60405180910390f35b61041a60048036038101906104159190612ea4565b610be7565b6040516104279190612f0e565b60405180910390f35b61044a600480360381019061044591906132d9565b610bfb565b005b61046660048036038101906104619190613210565b610c94565b6040516104739190613111565b60405180910390f35b610484610d5e565b005b6104a0600480360381019061049b919061332e565b610de5565b005b6104bc60048036038101906104b791906130bb565b610e6b565b005b6104d860048036038101906104d391906132d9565b610efa565b005b6104e2610f92565b6040516104ef9190612f0e565b60405180910390f35b610500610fba565b60405161050d9190612e51565b60405180910390f35b610530600480360381019061052b9190613359565b61104a565b005b61053a611063565b6040516105479190613111565b60405180910390f35b61056a6004803603810190610565919061345b565b611068565b005b61058660048036038101906105819190613540565b61138f565b005b6105a2600480360381019061059d9190612ea4565b6113e0565b6040516105af9190612e51565b60405180910390f35b6105c0611487565b6040516105cd9190613111565b60405180910390f35b6105f060048036038101906105eb91906135c0565b61148d565b6040516105fd9190612dae565b60405180910390f35b61060e61151b565b60405161061b9190612dae565b60405180910390f35b61063e60048036038101906106399190613210565b61152e565b005b5f61064a82611624565b9050919050565b6060600280546106609061362b565b80601f016020809104026020016040519081016040528092919081815260200182805461068c9061362b565b80156106d75780601f106106ae576101008083540402835291602001916106d7565b820191905f5260205f20905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b5f6106eb8261169d565b610721576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b81610763816116e6565b61076d83836117e0565b505050565b61077a6118e9565b73ffffffffffffffffffffffffffffffffffffffff16610798610f92565b73ffffffffffffffffffffffffffffffffffffffff16146107ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e5906136a5565b60405180910390fd5b80601090816107fd9190613857565b5050565b5f61080a6118f0565b6001545f540303905090565b600c5f9054906101000a900460ff1681565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461086657610865336116e6565b5b6108718484846118f8565b50505050565b5f805f600b5f8681526020019081526020015f206040518060400160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505f73ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff1603610a0057600a6040518060400160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b5f610a09611908565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff1686610a359190613953565b610a3f91906139c1565b9050815f0151819350935050509250929050565b600d5481565b600e602052805f5260405f205f915090505481565b6daaeb6d7670e522a718067333cd4e81565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610abe57610abd336116e6565b5b610ac9848484611911565b50505050565b60108054610adc9061362b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b089061362b565b8015610b535780601f10610b2a57610100808354040283529160200191610b53565b820191905f5260205f20905b815481529060010190602001808311610b3657829003601f168201915b505050505081565b600f8054610b689061362b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b949061362b565b8015610bdf5780601f10610bb657610100808354040283529160200191610bdf565b820191905f5260205f20905b815481529060010190602001808311610bc257829003601f168201915b505050505081565b5f610bf182611930565b5f01519050919050565b610c036118e9565b73ffffffffffffffffffffffffffffffffffffffff16610c21610f92565b73ffffffffffffffffffffffffffffffffffffffff1614610c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6e906136a5565b60405180910390fd5b80600c60016101000a81548160ff02191690831515021790555050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cfa576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b610d666118e9565b73ffffffffffffffffffffffffffffffffffffffff16610d84610f92565b73ffffffffffffffffffffffffffffffffffffffff1614610dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd1906136a5565b60405180910390fd5b610de35f611bac565b565b610ded6118e9565b73ffffffffffffffffffffffffffffffffffffffff16610e0b610f92565b73ffffffffffffffffffffffffffffffffffffffff1614610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e58906136a5565b60405180910390fd5b80600d8190555050565b610e736118e9565b73ffffffffffffffffffffffffffffffffffffffff16610e91610f92565b73ffffffffffffffffffffffffffffffffffffffff1614610ee7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ede906136a5565b60405180910390fd5b80600f9081610ef69190613857565b5050565b610f026118e9565b73ffffffffffffffffffffffffffffffffffffffff16610f20610f92565b73ffffffffffffffffffffffffffffffffffffffff1614610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d906136a5565b60405180910390fd5b80600c5f6101000a81548160ff02191690831515021790555050565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054610fc99061362b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff59061362b565b80156110405780601f1061101757610100808354040283529160200191611040565b820191905f5260205f20905b81548152906001019060200180831161102357829003601f168201915b5050505050905090565b81611054816116e6565b61105e8383611c6f565b505050565b600181565b6002600954036110ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a490613a3b565b60405180910390fd5b6002600981905550600c60019054906101000a900460ff1615611105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fc90613aa3565b60405180910390fd5b600c5f9054906101000a900460ff1615611154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114b90613b0b565b60405180910390fd5b6105dc6001611161610801565b61116b9190613b29565b11156111ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a390613ba6565b60405180910390fd5b6001600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460016111f89190613b29565b1115611239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123090613c34565b60405180910390fd5b5f3360405160200161124b9190612f0e565b604051602081830303815290604052805190602001206040516020016112719190613c72565b60405160208183030381529060405280519060200120905061129682600d5483611de1565b6112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc90613cd6565b60405180910390fd5b6001600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546113229190613b29565b92505081905550611334336001611df7565b3373ffffffffffffffffffffffffffffffffffffffff167fdaad2e796471df601d12042505b2a806ceb443b41e67b123268a0c7c9e6b0650600160405161137b9190613d2d565b60405180910390a250600160098190555050565b833373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146113cd576113cc336116e6565b5b6113d985858585611e14565b5050505050565b60606113eb8261169d565b61142a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142190613db6565b60405180910390fd5b5f611433611e90565b90505f8151116114515760405180602001604052805f81525061147f565b8061145b84611f20565b601060405160200161146f93929190613e8e565b6040516020818303038152906040525b915050919050565b6105dc81565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b600c60019054906101000a900460ff1681565b6115366118e9565b73ffffffffffffffffffffffffffffffffffffffff16611554610f92565b73ffffffffffffffffffffffffffffffffffffffff16146115aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a1906136a5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160f90613f2e565b60405180910390fd5b61162181611bac565b50565b5f7f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611696575061169582612079565b5b9050919050565b5f816116a76118f0565b111580156116b557505f5482105b80156116df575060045f8381526020019081526020015f205f01601c9054906101000a900460ff16155b9050919050565b5f6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b11156117dd576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430836040518363ffffffff1660e01b815260040161175c929190613f4c565b602060405180830381865afa158015611777573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061179b9190613f87565b6117dc57806040517fede71dcc0000000000000000000000000000000000000000000000000000000081526004016117d39190612f0e565b60405180910390fd5b5b50565b5f6117ea82610be7565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611851576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166118706118e9565b73ffffffffffffffffffffffffffffffffffffffff16141580156118a257506118a08161189b6118e9565b61148d565b155b156118d9576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118e483838361215a565b505050565b5f33905090565b5f6001905090565b611903838383612209565b505050565b5f612710905090565b61192b83838360405180602001604052805f81525061138f565b505050565b611938612cc3565b5f829050806119456118f0565b1115801561195357505f5481105b15611b75575f60045f8381526020019081526020015f206040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020015f8201601c9054906101000a900460ff16151515158152505090508060400151611b73575f73ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff1614611a5f578092505050611ba7565b5b600115611b725781806001900392505060045f8381526020019081526020015f206040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020015f8201601c9054906101000a900460ff16151515158152505090505f73ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff1614611b6d578092505050611ba7565b611a60565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611c776118e9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cdb576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060075f611ce76118e9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611d906118e9565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611dd59190612dae565b60405180910390a35050565b5f82611ded858461269f565b1490509392505050565b611e10828260405180602001604052805f8152506126f3565b5050565b611e1f848484612209565b611e3e8373ffffffffffffffffffffffffffffffffffffffff16612705565b8015611e535750611e5184848484612716565b155b15611e8a576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6060600f8054611e9f9061362b565b80601f0160208091040260200160405190810160405280929190818152602001828054611ecb9061362b565b8015611f165780601f10611eed57610100808354040283529160200191611f16565b820191905f5260205f20905b815481529060010190602001808311611ef957829003601f168201915b5050505050905090565b60605f8203611f66576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612074565b5f8290505f5b5f8214611f95578080611f7e90613fb2565b915050600a82611f8e91906139c1565b9150611f6c565b5f8167ffffffffffffffff811115611fb057611faf612f97565b5b6040519080825280601f01601f191660200182016040528015611fe25781602001600182028036833780820191505090505b5090505b5f851461206d57600182611ffa9190613ff9565b9150600a85612009919061402c565b60306120159190613b29565b60f81b81838151811061202b5761202a61405c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a8561206691906139c1565b9450611fe6565b8093505050505b919050565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061214357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612153575061215282612861565b5b9050919050565b8260065f8481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b5f61221382611930565b90508373ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff161461227d576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8473ffffffffffffffffffffffffffffffffffffffff1661229d6118e9565b73ffffffffffffffffffffffffffffffffffffffff1614806122cc57506122cb856122c66118e9565b61148d565b5b8061231157506122da6118e9565b73ffffffffffffffffffffffffffffffffffffffff166122f9846106e1565b73ffffffffffffffffffffffffffffffffffffffff16145b90508061234a576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036123af576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123bc85858560016128ca565b6123c75f848761215a565b600160055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f8282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f8282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505f60045f8581526020019081526020015f20905084815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042815f0160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505f6001850190505f60045f8381526020019081526020015f2090505f73ffffffffffffffffffffffffffffffffffffffff16815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361262d575f54821461262c5787815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460200151815f0160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461269885858560016128d0565b5050505050565b5f808290505f5b84518110156126e8576126d3828683815181106126c6576126c561405c565b5b60200260200101516128d6565b915080806126e090613fb2565b9150506126a6565b508091505092915050565b6127008383836001612900565b505050565b5f80823b90505f8111915050919050565b5f8373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261273b6118e9565b8786866040518563ffffffff1660e01b815260040161275d94939291906140db565b6020604051808303815f875af192505050801561279857506040513d601f19601f820116820180604052508101906127959190614139565b60015b61280e573d805f81146127c6576040519150601f19603f3d011682016040523d82523d5f602084013e6127cb565b606091505b505f815103612806576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b50505050565b50505050565b5f8183106128ed576128e88284612caf565b6128f8565b6128f78383612caf565b5b905092915050565b5f805490505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361296a576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f84036129a3576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6129af5f8683876128ca565b8360055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f8282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508360055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508460045f8381526020019081526020015f205f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504260045f8381526020019081526020015f205f0160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505f8190505f8582019050838015612b695750612b688773ffffffffffffffffffffffffffffffffffffffff16612705565b5b15612c2a575b818773ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612bdc5f888480600101955088612716565b612c12576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808203612b6f57825f5414612c25575f80fd5b612c94565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808203612c2b575b815f819055505050612ca85f8683876128d0565b5050505050565b5f825f528160205260405f20905092915050565b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f67ffffffffffffffff1681526020015f151581525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612d4881612d14565b8114612d52575f80fd5b50565b5f81359050612d6381612d3f565b92915050565b5f60208284031215612d7e57612d7d612d0c565b5b5f612d8b84828501612d55565b91505092915050565b5f8115159050919050565b612da881612d94565b82525050565b5f602082019050612dc15f830184612d9f565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612dfe578082015181840152602081019050612de3565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612e2382612dc7565b612e2d8185612dd1565b9350612e3d818560208601612de1565b612e4681612e09565b840191505092915050565b5f6020820190508181035f830152612e698184612e19565b905092915050565b5f819050919050565b612e8381612e71565b8114612e8d575f80fd5b50565b5f81359050612e9e81612e7a565b92915050565b5f60208284031215612eb957612eb8612d0c565b5b5f612ec684828501612e90565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ef882612ecf565b9050919050565b612f0881612eee565b82525050565b5f602082019050612f215f830184612eff565b92915050565b612f3081612eee565b8114612f3a575f80fd5b50565b5f81359050612f4b81612f27565b92915050565b5f8060408385031215612f6757612f66612d0c565b5b5f612f7485828601612f3d565b9250506020612f8585828601612e90565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612fcd82612e09565b810181811067ffffffffffffffff82111715612fec57612feb612f97565b5b80604052505050565b5f612ffe612d03565b905061300a8282612fc4565b919050565b5f67ffffffffffffffff82111561302957613028612f97565b5b61303282612e09565b9050602081019050919050565b828183375f83830152505050565b5f61305f61305a8461300f565b612ff5565b90508281526020810184848401111561307b5761307a612f93565b5b61308684828561303f565b509392505050565b5f82601f8301126130a2576130a1612f8f565b5b81356130b284826020860161304d565b91505092915050565b5f602082840312156130d0576130cf612d0c565b5b5f82013567ffffffffffffffff8111156130ed576130ec612d10565b5b6130f98482850161308e565b91505092915050565b61310b81612e71565b82525050565b5f6020820190506131245f830184613102565b92915050565b5f805f6060848603121561314157613140612d0c565b5b5f61314e86828701612f3d565b935050602061315f86828701612f3d565b925050604061317086828701612e90565b9150509250925092565b5f80604083850312156131905761318f612d0c565b5b5f61319d85828601612e90565b92505060206131ae85828601612e90565b9150509250929050565b5f6040820190506131cb5f830185612eff565b6131d86020830184613102565b9392505050565b5f819050919050565b6131f1816131df565b82525050565b5f60208201905061320a5f8301846131e8565b92915050565b5f6020828403121561322557613224612d0c565b5b5f61323284828501612f3d565b91505092915050565b5f819050919050565b5f61325e61325961325484612ecf565b61323b565b612ecf565b9050919050565b5f61326f82613244565b9050919050565b5f61328082613265565b9050919050565b61329081613276565b82525050565b5f6020820190506132a95f830184613287565b92915050565b6132b881612d94565b81146132c2575f80fd5b50565b5f813590506132d3816132af565b92915050565b5f602082840312156132ee576132ed612d0c565b5b5f6132fb848285016132c5565b91505092915050565b61330d816131df565b8114613317575f80fd5b50565b5f8135905061332881613304565b92915050565b5f6020828403121561334357613342612d0c565b5b5f6133508482850161331a565b91505092915050565b5f806040838503121561336f5761336e612d0c565b5b5f61337c85828601612f3d565b925050602061338d858286016132c5565b9150509250929050565b5f67ffffffffffffffff8211156133b1576133b0612f97565b5b602082029050602081019050919050565b5f80fd5b5f6133d86133d384613397565b612ff5565b905080838252602082019050602084028301858111156133fb576133fa6133c2565b5b835b818110156134245780613410888261331a565b8452602084019350506020810190506133fd565b5050509392505050565b5f82601f83011261344257613441612f8f565b5b81356134528482602086016133c6565b91505092915050565b5f602082840312156134705761346f612d0c565b5b5f82013567ffffffffffffffff81111561348d5761348c612d10565b5b6134998482850161342e565b91505092915050565b5f67ffffffffffffffff8211156134bc576134bb612f97565b5b6134c582612e09565b9050602081019050919050565b5f6134e46134df846134a2565b612ff5565b905082815260208101848484011115613500576134ff612f93565b5b61350b84828561303f565b509392505050565b5f82601f83011261352757613526612f8f565b5b81356135378482602086016134d2565b91505092915050565b5f805f806080858703121561355857613557612d0c565b5b5f61356587828801612f3d565b945050602061357687828801612f3d565b935050604061358787828801612e90565b925050606085013567ffffffffffffffff8111156135a8576135a7612d10565b5b6135b487828801613513565b91505092959194509250565b5f80604083850312156135d6576135d5612d0c565b5b5f6135e385828601612f3d565b92505060206135f485828601612f3d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061364257607f821691505b602082108103613655576136546135fe565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61368f602083612dd1565b915061369a8261365b565b602082019050919050565b5f6020820190508181035f8301526136bc81613683565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261371f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826136e4565b61372986836136e4565b95508019841693508086168417925050509392505050565b5f61375b61375661375184612e71565b61323b565b612e71565b9050919050565b5f819050919050565b61377483613741565b61378861378082613762565b8484546136f0565b825550505050565b5f90565b61379c613790565b6137a781848461376b565b505050565b5b818110156137ca576137bf5f82613794565b6001810190506137ad565b5050565b601f82111561380f576137e0816136c3565b6137e9846136d5565b810160208510156137f8578190505b61380c613804856136d5565b8301826137ac565b50505b505050565b5f82821c905092915050565b5f61382f5f1984600802613814565b1980831691505092915050565b5f6138478383613820565b9150826002028217905092915050565b61386082612dc7565b67ffffffffffffffff81111561387957613878612f97565b5b613883825461362b565b61388e8282856137ce565b5f60209050601f8311600181146138bf575f84156138ad578287015190505b6138b7858261383c565b86555061391e565b601f1984166138cd866136c3565b5f5b828110156138f4578489015182556001820191506020850194506020810190506138cf565b86831015613911578489015161390d601f891682613820565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61395d82612e71565b915061396883612e71565b925082820261397681612e71565b9150828204841483151761398d5761398c613926565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139cb82612e71565b91506139d683612e71565b9250826139e6576139e5613994565b5b828204905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f613a25601f83612dd1565b9150613a30826139f1565b602082019050919050565b5f6020820190508181035f830152613a5281613a19565b9050919050565b7f30784d61686a6f6e673a20636f6e7472616374206973207061757365640000005f82015250565b5f613a8d601d83612dd1565b9150613a9882613a59565b602082019050919050565b5f6020820190508181035f830152613aba81613a81565b9050919050565b7f30784d61686a6f6e673a2077686974656c69737453616c6520636c6f736564005f82015250565b5f613af5601f83612dd1565b9150613b0082613ac1565b602082019050919050565b5f6020820190508181035f830152613b2281613ae9565b9050919050565b5f613b3382612e71565b9150613b3e83612e71565b9250828201905080821115613b5657613b55613926565b5b92915050565b7f30784d61686a6f6e673a206d6178537570706c792065786365656465640000005f82015250565b5f613b90601d83612dd1565b9150613b9b82613b5c565b602082019050919050565b5f6020820190508181035f830152613bbd81613b84565b9050919050565b7f30784d61686a6f6e673a20757365722063616e6e6f74206d696e74206d6f72655f8201527f207468656e2031204e4654730000000000000000000000000000000000000000602082015250565b5f613c1e602c83612dd1565b9150613c2982613bc4565b604082019050919050565b5f6020820190508181035f830152613c4b81613c12565b9050919050565b5f819050919050565b613c6c613c67826131df565b613c52565b82525050565b5f613c7d8284613c5b565b60208201915081905092915050565b7f30784d61686a6f6e673a20496e76616c69642070726f6f6600000000000000005f82015250565b5f613cc0601883612dd1565b9150613ccb82613c8c565b602082019050919050565b5f6020820190508181035f830152613ced81613cb4565b9050919050565b5f819050919050565b5f613d17613d12613d0d84613cf4565b61323b565b612e71565b9050919050565b613d2781613cfd565b82525050565b5f602082019050613d405f830184613d1e565b92915050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f5f8201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b5f613da0602f83612dd1565b9150613dab82613d46565b604082019050919050565b5f6020820190508181035f830152613dcd81613d94565b9050919050565b5f81905092915050565b5f613de882612dc7565b613df28185613dd4565b9350613e02818560208601612de1565b80840191505092915050565b5f8154613e1a8161362b565b613e248186613dd4565b9450600182165f8114613e3e5760018114613e5357613e85565b60ff1983168652811515820286019350613e85565b613e5c856136c3565b5f5b83811015613e7d57815481890152600182019150602081019050613e5e565b838801955050505b50505092915050565b5f613e998286613dde565b9150613ea58285613dde565b9150613eb18284613e0e565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613f18602683612dd1565b9150613f2382613ebe565b604082019050919050565b5f6020820190508181035f830152613f4581613f0c565b9050919050565b5f604082019050613f5f5f830185612eff565b613f6c6020830184612eff565b9392505050565b5f81519050613f81816132af565b92915050565b5f60208284031215613f9c57613f9b612d0c565b5b5f613fa984828501613f73565b91505092915050565b5f613fbc82612e71565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613fee57613fed613926565b5b600182019050919050565b5f61400382612e71565b915061400e83612e71565b925082820390508181111561402657614025613926565b5b92915050565b5f61403682612e71565b915061404183612e71565b92508261405157614050613994565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f6140ad82614089565b6140b78185614093565b93506140c7818560208601612de1565b6140d081612e09565b840191505092915050565b5f6080820190506140ee5f830187612eff565b6140fb6020830186612eff565b6141086040830185613102565b818103606083015261411a81846140a3565b905095945050505050565b5f8151905061413381612d3f565b92915050565b5f6020828403121561414e5761414d612d0c565b5b5f61415b84828501614125565b9150509291505056fea26469706673582212201ab9f4f8e5694fc74fb49432d490fb3cb9e1bac2332b6de59cc2b2e07504387464736f6c63430008140033d88654810608498001de81d0551d7c8b5db7213c763044d905da879ea12ce65400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000000930784d61686a6f6e670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000930784d61686a6f6e670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c68747470733a2f2f636f6d6d6f6e2e6d6a6d6574612e696f2f30784d61686a6f6e672f6e66745f706173735f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052e6a736f6e000000000000000000000000000000000000000000000000000000