60806040526040518060400160405280600781526020017f53686962322e3000000000000000000000000000000000000000000000000000815250600190816200004a919062000dc2565b506040518060400160405280600581526020017f53686962320000000000000000000000000000000000000000000000000000008152506002908162000091919062000dc2565b50600660035f6101000a81548160ff021916908360ff16021790555060035f9054906101000a900460ff16600a620000ca91906200102f565b633b9aca00620000db91906200107f565b600d556200010c6103e8620000fd600f600d546200095f60201b90919060201c565b620009df60201b90919060201c565b600e556200013d6103e86200012e600f600d546200095f60201b90919060201c565b620009df60201b90919060201c565b600f556200016d60646200015e6001600d546200095f60201b90919060201c565b620009df60201b90919060201c565b6010556001601160146101000a81548160ff0219169083151502179055506001601160156101000a81548160ff0219169083151502179055506001601160166101000a81548160ff0219169083151502179055506001601160176101000a81548160ff021916908315150217905550348015620001e8575f80fd5b5062000209620001fd62000a3060201b60201c565b62000a3760201b60201c565b3360115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ab573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002d191906200112e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000337573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200035d91906200112e565b6040518363ffffffff1660e01b81526004016200037c9291906200116f565b6020604051808303815f875af115801562000399573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003bf91906200112e565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550602860048190555060286005819055506001601360156101000a81548160ff021916908315150217905550600d5460065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d54604051620009509190620011ab565b60405180910390a3506200136a565b5f80830362000971575f9050620009d9565b5f82846200098091906200107f565b9050828482620009919190620011f3565b14620009d4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009cb90620012ae565b60405180910390fd5b809150505b92915050565b5f62000a2883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000af860201b60201c565b905092915050565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f808311829062000b41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b38919062001348565b60405180910390fd5b505f838562000b519190620011f3565b9050809150509392505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000bda57607f821691505b60208210810362000bf05762000bef62000b95565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000c547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c17565b62000c60868362000c17565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000caa62000ca462000c9e8462000c78565b62000c81565b62000c78565b9050919050565b5f819050919050565b62000cc58362000c8a565b62000cdd62000cd48262000cb1565b84845462000c23565b825550505050565b5f90565b62000cf362000ce5565b62000d0081848462000cba565b505050565b5b8181101562000d275762000d1b5f8262000ce9565b60018101905062000d06565b5050565b601f82111562000d765762000d408162000bf6565b62000d4b8462000c08565b8101602085101562000d5b578190505b62000d7362000d6a8562000c08565b83018262000d05565b50505b505050565b5f82821c905092915050565b5f62000d985f198460080262000d7b565b1980831691505092915050565b5f62000db2838362000d87565b9150826002028217905092915050565b62000dcd8262000b5e565b67ffffffffffffffff81111562000de95762000de862000b68565b5b62000df5825462000bc2565b62000e0282828562000d2b565b5f60209050601f83116001811462000e38575f841562000e23578287015190505b62000e2f858262000da5565b86555062000e9e565b601f19841662000e488662000bf6565b5f5b8281101562000e715784890151825560018201915060208501945060208101905062000e4a565b8683101562000e91578489015162000e8d601f89168262000d87565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000f305780860481111562000f085762000f0762000ea6565b5b600185161562000f185780820291505b808102905062000f288562000ed3565b945062000ee8565b94509492505050565b5f8262000f4a57600190506200101c565b8162000f59575f90506200101c565b816001811462000f72576002811462000f7d5762000fb3565b60019150506200101c565b60ff84111562000f925762000f9162000ea6565b5b8360020a91508482111562000fac5762000fab62000ea6565b5b506200101c565b5060208310610133831016604e8410600b841016171562000fed5782820a90508381111562000fe75762000fe662000ea6565b5b6200101c565b62000ffc848484600162000edf565b9250905081840481111562001016576200101562000ea6565b5b81810290505b9392505050565b5f60ff82169050919050565b5f6200103b8262000c78565b9150620010488362001023565b9250620010777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f39565b905092915050565b5f6200108b8262000c78565b9150620010988362000c78565b9250828202620010a88162000c78565b91508282048414831517620010c257620010c162000ea6565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620010f882620010cd565b9050919050565b6200110a81620010ec565b811462001115575f80fd5b50565b5f815190506200112881620010ff565b92915050565b5f60208284031215620011465762001145620010c9565b5b5f620011558482850162001118565b91505092915050565b6200116981620010ec565b82525050565b5f604082019050620011845f8301856200115e565b6200119360208301846200115e565b9392505050565b620011a58162000c78565b82525050565b5f602082019050620011c05f8301846200119a565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620011ff8262000c78565b91506200120c8362000c78565b9250826200121f576200121e620011c6565b5b828204905092915050565b5f82825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f620012966021836200122a565b9150620012a3826200123a565b604082019050919050565b5f6020820190508181035f830152620012c78162001288565b9050919050565b5f5b83811015620012ed578082015181840152602081019050620012d0565b5f8484015250505050565b5f601f19601f8301169050919050565b5f620013148262000b5e565b6200132081856200122a565b935062001332818560208601620012ce565b6200133d81620012f8565b840191505092915050565b5f6020820190508181035f83015262001362818462001308565b905092915050565b613f4f80620013785f395ff3fe608060405260043610610275575f3560e01c8063728d41c91161014e578063a9059cbb116100c0578063df8408fe11610079578063df8408fe1461094a578063e6b2603b14610972578063e9fd339414610988578063ea1ce5a8146109b2578063f242ab41146109dc578063f2fde38b14610a065761027c565b8063a9059cbb1461081c578063ae85ade614610858578063b94b0aef14610880578063c867d60b146108a8578063cc1776d3146108e4578063dd62ed3e1461090e5761027c565b80638a8c523c116101125780638a8c523c146107245780638b42507f1461073a5780638da5cb5b1461077657806395d89b41146107a057806395fc8fdf146107ca5780639a212943146107f25761027c565b8063728d41c914610668578063751039fc1461069057806375f0a874146106a65780637d1db4a5146106d0578063807c2d9c146106fa5761027c565b806352f7c988116101e75780635da0a467116101ab5780635da0a4671461055e5780635e42358c1461059a578063651a8987146105c45780636ddd1713146105ec57806370a0823114610616578063715018a6146106525761027c565b806352f7c988146104825780635342acb4146104aa57806357376198146104e65780635c85974f1461050e5780635d098b38146105365761027c565b806318160ddd1161023957806318160ddd14610364578063230358521461038e57806323b872dd146103b6578063313ce567146103f25780633ecad2711461041c5780634f7041a5146104585761027c565b80630445b6671461028057806306fdde03146102aa5780630758d924146102d4578063095ea7b3146102fe5780631693e8d41461033a5761027c565b3661027c57005b5f80fd5b34801561028b575f80fd5b50610294610a2e565b6040516102a19190613115565b60405180910390f35b3480156102b5575f80fd5b506102be610a34565b6040516102cb91906131b8565b60405180910390f35b3480156102df575f80fd5b506102e8610ac4565b6040516102f59190613252565b60405180910390f35b348015610309575f80fd5b50610324600480360381019061031f91906132d8565b610ae9565b6040516103319190613330565b60405180910390f35b348015610345575f80fd5b5061034e610b06565b60405161035b9190613330565b60405180910390f35b34801561036f575f80fd5b50610378610b19565b6040516103859190613115565b60405180910390f35b348015610399575f80fd5b506103b460048036038101906103af9190613373565b610b22565b005b3480156103c1575f80fd5b506103dc60048036038101906103d7919061339e565b610bbb565b6040516103e99190613330565b60405180910390f35b3480156103fd575f80fd5b50610406610cad565b6040516104139190613409565b60405180910390f35b348015610427575f80fd5b50610442600480360381019061043d9190613422565b610cc2565b60405161044f9190613330565b60405180910390f35b348015610463575f80fd5b5061046c610cdf565b6040516104799190613115565b60405180910390f35b34801561048d575f80fd5b506104a860048036038101906104a3919061344d565b610ce5565b005b3480156104b5575f80fd5b506104d060048036038101906104cb9190613422565b610d73565b6040516104dd9190613330565b60405180910390f35b3480156104f1575f80fd5b5061050c600480360381019061050791906132d8565b610d90565b005b348015610519575f80fd5b50610534600480360381019061052f919061348b565b610f7c565b005b348015610541575f80fd5b5061055c60048036038101906105579190613422565b611002565b005b348015610569575f80fd5b50610584600480360381019061057f9190613422565b6110c1565b6040516105919190613330565b60405180910390f35b3480156105a5575f80fd5b506105ae6110de565b6040516105bb9190613330565b60405180910390f35b3480156105cf575f80fd5b506105ea60048036038101906105e591906134b6565b6110f1565b005b3480156105f7575f80fd5b506106006111c5565b60405161060d9190613330565b60405180910390f35b348015610621575f80fd5b5061063c60048036038101906106379190613422565b6111d8565b6040516106499190613115565b60405180910390f35b34801561065d575f80fd5b5061066661121e565b005b348015610673575f80fd5b5061068e6004803603810190610689919061348b565b6112a5565b005b34801561069b575f80fd5b506106a461132b565b005b3480156106b1575f80fd5b506106ba611361565b6040516106c79190613503565b60405180910390f35b3480156106db575f80fd5b506106e4611386565b6040516106f19190613115565b60405180910390f35b348015610705575f80fd5b5061070e61138c565b60405161071b9190613115565b60405180910390f35b34801561072f575f80fd5b50610738611392565b005b348015610745575f80fd5b50610760600480360381019061075b9190613422565b61147b565b60405161076d9190613330565b60405180910390f35b348015610781575f80fd5b5061078a611498565b6040516107979190613503565b60405180910390f35b3480156107ab575f80fd5b506107b46114bf565b6040516107c191906131b8565b60405180910390f35b3480156107d5575f80fd5b506107f060048036038101906107eb919061357d565b61154f565b005b3480156107fd575f80fd5b50610806611666565b6040516108139190613330565b60405180910390f35b348015610827575f80fd5b50610842600480360381019061083d91906132d8565b611679565b60405161084f9190613330565b60405180910390f35b348015610863575f80fd5b5061087e600480360381019061087991906134b6565b611697565b005b34801561088b575f80fd5b506108a660048036038101906108a191906135da565b61176b565b005b3480156108b3575f80fd5b506108ce60048036038101906108c99190613422565b611827565b6040516108db9190613330565b60405180910390f35b3480156108ef575f80fd5b506108f8611844565b6040516109059190613115565b60405180910390f35b348015610919575f80fd5b50610934600480360381019061092f919061362a565b61184a565b6040516109419190613115565b60405180910390f35b348015610955575f80fd5b50610970600480360381019061096b91906134b6565b6118cc565b005b34801561097d575f80fd5b506109866119a0565b005b348015610993575f80fd5b5061099c611afb565b6040516109a99190613330565b60405180910390f35b3480156109bd575f80fd5b506109c6611b0e565b6040516109d39190613330565b60405180910390f35b3480156109e7575f80fd5b506109f0611b21565b6040516109fd9190613503565b60405180910390f35b348015610a11575f80fd5b50610a2c6004803603810190610a279190613422565b611b46565b005b60105481565b606060018054610a4390613695565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6f90613695565b8015610aba5780601f10610a9157610100808354040283529160200191610aba565b820191905f5260205f20905b815481529060010190602001808311610a9d57829003601f168201915b5050505050905090565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610afc610af5611c3c565b8484611c43565b6001905092915050565b601360149054906101000a900460ff1681565b5f600d54905090565b610b2a611c3c565b73ffffffffffffffffffffffffffffffffffffffff16610b48611498565b73ffffffffffffffffffffffffffffffffffffffff1614610b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b959061370f565b60405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b5f610bc7848484611e0a565b50610ca284610bd4611c3c565b610c9d856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e6365000000000000000081525060075f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610c54611c3c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461253d9092919063ffffffff16565b611c43565b600190509392505050565b5f60035f9054906101000a900460ff16905090565b6009602052805f5260405f205f915054906101000a900460ff1681565b60045481565b610ced611c3c565b73ffffffffffffffffffffffffffffffffffffffff16610d0b611498565b73ffffffffffffffffffffffffffffffffffffffff1614610d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d589061370f565b60405180910390fd5b81600481905550806005819055505050565b6008602052805f5260405f205f915054906101000a900460ff1681565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1690613777565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1660115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683604051602401610e6b929190613795565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610ef59190613800565b5f604051808303815f865af19150503d805f8114610f2e576040519150601f19603f3d011682016040523d82523d5f602084013e610f33565b606091505b5050905080610f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6e90613860565b60405180910390fd5b505050565b610f84611c3c565b73ffffffffffffffffffffffffffffffffffffffff16610fa2611498565b73ffffffffffffffffffffffffffffffffffffffff1614610ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fef9061370f565b60405180910390fd5b80600e8190555050565b61100a611c3c565b73ffffffffffffffffffffffffffffffffffffffff16611028611498565b73ffffffffffffffffffffffffffffffffffffffff161461107e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110759061370f565b60405180910390fd5b8060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c602052805f5260405f205f915054906101000a900460ff1681565b601160169054906101000a900460ff1681565b6110f9611c3c565b73ffffffffffffffffffffffffffffffffffffffff16611117611498565b73ffffffffffffffffffffffffffffffffffffffff161461116d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111649061370f565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601160149054906101000a900460ff1681565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611226611c3c565b73ffffffffffffffffffffffffffffffffffffffff16611244611498565b73ffffffffffffffffffffffffffffffffffffffff161461129a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112919061370f565b60405180910390fd5b6112a35f61259f565b565b6112ad611c3c565b73ffffffffffffffffffffffffffffffffffffffff166112cb611498565b73ffffffffffffffffffffffffffffffffffffffff1614611321576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113189061370f565b60405180910390fd5b80600f8190555050565b5f601160166101000a81548160ff0219169083151502179055505f601160176101000a81548160ff021916908315150217905550565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b600f5481565b61139a611c3c565b73ffffffffffffffffffffffffffffffffffffffff166113b8611498565b73ffffffffffffffffffffffffffffffffffffffff161461140e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114059061370f565b60405180910390fd5b601360149054906101000a900460ff161561145e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611455906138c8565b60405180910390fd5b6001601360146101000a81548160ff021916908315150217905550565b600b602052805f5260405f205f915054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546114ce90613695565b80601f01602080910402602001604051908101604052809291908181526020018280546114fa90613695565b80156115455780601f1061151c57610100808354040283529160200191611545565b820191905f5260205f20905b81548152906001019060200180831161152857829003601f168201915b5050505050905090565b611557611c3c565b73ffffffffffffffffffffffffffffffffffffffff16611575611498565b73ffffffffffffffffffffffffffffffffffffffff16146115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c29061370f565b60405180910390fd5b5f5b838390508110156116605781600c5f8686858181106115ef576115ee6138e6565b5b90506020020160208101906116049190613422565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506115cd565b50505050565b601160179054906101000a900460ff1681565b5f61168c611685611c3c565b8484611e0a565b506001905092915050565b61169f611c3c565b73ffffffffffffffffffffffffffffffffffffffff166116bd611498565b73ffffffffffffffffffffffffffffffffffffffff1614611713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170a9061370f565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611773611c3c565b73ffffffffffffffffffffffffffffffffffffffff16611791611498565b73ffffffffffffffffffffffffffffffffffffffff16146117e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117de9061370f565b60405180910390fd5b81601160146101000a81548160ff02191690831515021790555080601160156101000a81548160ff02191690831515021790555082601081905550505050565b600a602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6118d4611c3c565b73ffffffffffffffffffffffffffffffffffffffff166118f2611498565b73ffffffffffffffffffffffffffffffffffffffff1614611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193f9061370f565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2690613777565b60405180910390fd5b5f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051611a7590613936565b5f6040518083038185875af1925050503d805f8114611aaf576040519150601f19603f3d011682016040523d82523d5f602084013e611ab4565b606091505b5050905080611af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aef90613994565b60405180910390fd5b50565b601160159054906101000a900460ff1681565b601360159054906101000a900460ff1681565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b4e611c3c565b73ffffffffffffffffffffffffffffffffffffffff16611b6c611498565b73ffffffffffffffffffffffffffffffffffffffff1614611bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb99061370f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2790613a22565b60405180910390fd5b611c398161259f565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cb3575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611caa9190613503565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d23575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611d1a9190613503565b60405180910390fd5b8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611dfd9190613115565b60405180910390a3505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611e7b575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611e729190613503565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611eeb575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611ee29190613503565b60405180910390fd5b5f8203611f24576040517f67c8957700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601360169054906101000a900460ff1615611f4b57611f44848484612660565b9050612536565b600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611fe95750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561203557601360149054906101000a900460ff16612034576040517ff27f64e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5f61203f306111d8565b90505f60105482101590508080156120645750601360169054906101000a900460ff16155b80156120b7575060095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156120cf5750601160149054906101000a900460ff165b8015612122575060085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612175575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612184576121838261282a565b5b600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156122225750600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561223a5750601160169054906101000a900460ff165b1561228557600e54841115612284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227b90613a8a565b60405180910390fd5b5b61230c846040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461253d9092919063ffffffff16565b60065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f6123588787612910565b61236c57612367878787612a6c565b61236e565b845b9050601160179054906101000a900460ff1680156123d35750600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561243857600f546123f6826123e8896111d8565b612cc790919063ffffffff16565b1115612437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242e90613af2565b60405180910390fd5b5b6124888160065f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612cc790919063ffffffff16565b60065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125269190613115565b60405180910390a3600193505050505b9392505050565b5f838311158290612584576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257b91906131b8565b60405180910390fd5b505f83856125929190613b3d565b9050809150509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6126e8826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461253d9092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127798260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612cc790919063ffffffff16565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128179190613115565b60405180910390a3600190509392505050565b6001601360166101000a81548160ff021916908315150217905550601160159054906101000a900460ff16156128605760105490505b5f47905061286d82612d24565b5f6128818247612f9390919063ffffffff16565b90505f8111156128f15760115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156128ef573d5f803e3d5ffd5b505b50505f601360166101000a81548160ff02191690831515021790555050565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806129ac575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156129ba5760019050612a66565b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612a55575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612a62575f9050612a66565b5f90505b92915050565b5f8060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612aec57612ae56064612ad760045486612fdc90919063ffffffff16565b61305390919063ffffffff16565b9050612bab565b60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612b6a57612b636064612b5560055486612fdc90919063ffffffff16565b61305390919063ffffffff16565b9050612baa565b601360159054906101000a900460ff1615612ba957612ba66064612b98606386612fdc90919063ffffffff16565b61305390919063ffffffff16565b90505b5b5b5f811115612caa57612c038160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612cc790919063ffffffff16565b60065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ca19190613115565b60405180910390a35b612cbd8184612f9390919063ffffffff16565b9150509392505050565b5f808284612cd59190613b70565b905083811015612d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1190613bed565b60405180910390fd5b8091505092915050565b5f600267ffffffffffffffff811115612d4057612d3f613c0b565b5b604051908082528060200260200182016040528015612d6e5781602001602082028036833780820191505090505b50905030815f81518110612d8557612d846138e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e29573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e4d9190613c4c565b81600181518110612e6157612e606138e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ec73060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c43565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612f29959493929190613d67565b5f604051808303815f87803b158015612f40575f80fd5b505af1158015612f52573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612f87929190613dbf565b60405180910390a15050565b5f612fd483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061253d565b905092915050565b5f808303612fec575f905061304d565b5f8284612ff99190613ded565b90508284826130089190613e5b565b14613048576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303f90613efb565b60405180910390fd5b809150505b92915050565b5f61309483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061309c565b905092915050565b5f80831182906130e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d991906131b8565b60405180910390fd5b505f83856130f09190613e5b565b9050809150509392505050565b5f819050919050565b61310f816130fd565b82525050565b5f6020820190506131285f830184613106565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561316557808201518184015260208101905061314a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61318a8261312e565b6131948185613138565b93506131a4818560208601613148565b6131ad81613170565b840191505092915050565b5f6020820190508181035f8301526131d08184613180565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61321a613215613210846131d8565b6131f7565b6131d8565b9050919050565b5f61322b82613200565b9050919050565b5f61323c82613221565b9050919050565b61324c81613232565b82525050565b5f6020820190506132655f830184613243565b92915050565b5f80fd5b5f80fd5b5f61327d826131d8565b9050919050565b61328d81613273565b8114613297575f80fd5b50565b5f813590506132a881613284565b92915050565b6132b7816130fd565b81146132c1575f80fd5b50565b5f813590506132d2816132ae565b92915050565b5f80604083850312156132ee576132ed61326b565b5b5f6132fb8582860161329a565b925050602061330c858286016132c4565b9150509250929050565b5f8115159050919050565b61332a81613316565b82525050565b5f6020820190506133435f830184613321565b92915050565b61335281613316565b811461335c575f80fd5b50565b5f8135905061336d81613349565b92915050565b5f602082840312156133885761338761326b565b5b5f6133958482850161335f565b91505092915050565b5f805f606084860312156133b5576133b461326b565b5b5f6133c28682870161329a565b93505060206133d38682870161329a565b92505060406133e4868287016132c4565b9150509250925092565b5f60ff82169050919050565b613403816133ee565b82525050565b5f60208201905061341c5f8301846133fa565b92915050565b5f602082840312156134375761343661326b565b5b5f6134448482850161329a565b91505092915050565b5f80604083850312156134635761346261326b565b5b5f613470858286016132c4565b9250506020613481858286016132c4565b9150509250929050565b5f602082840312156134a05761349f61326b565b5b5f6134ad848285016132c4565b91505092915050565b5f80604083850312156134cc576134cb61326b565b5b5f6134d98582860161329a565b92505060206134ea8582860161335f565b9150509250929050565b6134fd81613273565b82525050565b5f6020820190506135165f8301846134f4565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261353d5761353c61351c565b5b8235905067ffffffffffffffff81111561355a57613559613520565b5b60208301915083602082028301111561357657613575613524565b5b9250929050565b5f805f604084860312156135945761359361326b565b5b5f84013567ffffffffffffffff8111156135b1576135b061326f565b5b6135bd86828701613528565b935093505060206135d08682870161335f565b9150509250925092565b5f805f606084860312156135f1576135f061326b565b5b5f6135fe868287016132c4565b935050602061360f8682870161335f565b92505060406136208682870161335f565b9150509250925092565b5f80604083850312156136405761363f61326b565b5b5f61364d8582860161329a565b925050602061365e8582860161329a565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806136ac57607f821691505b6020821081036136bf576136be613668565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6136f9602083613138565b9150613704826136c5565b602082019050919050565b5f6020820190508181035f830152613726816136ed565b9050919050565b7f556e617574686f72697a656400000000000000000000000000000000000000005f82015250565b5f613761600c83613138565b915061376c8261372d565b602082019050919050565b5f6020820190508181035f83015261378e81613755565b9050919050565b5f6040820190506137a85f8301856134f4565b6137b56020830184613106565b9392505050565b5f81519050919050565b5f81905092915050565b5f6137da826137bc565b6137e481856137c6565b93506137f4818560208601613148565b80840191505092915050565b5f61380b82846137d0565b915081905092915050565b7f546f6b656e207061796d656e74206661696c65640000000000000000000000005f82015250565b5f61384a601483613138565b915061385582613816565b602082019050919050565b5f6020820190508181035f8301526138778161383e565b9050919050565b7f547261646520456e61626c6564210000000000000000000000000000000000005f82015250565b5f6138b2600e83613138565b91506138bd8261387e565b602082019050919050565b5f6020820190508181035f8301526138df816138a6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b50565b5f6139215f836137c6565b915061392c82613913565b5f82019050919050565b5f61394082613916565b9150819050919050565b7f5472616e73616374696f6e204661696c656421210000000000000000000000005f82015250565b5f61397e601483613138565b91506139898261394a565b602082019050919050565b5f6020820190508181035f8301526139ab81613972565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613a0c602683613138565b9150613a17826139b2565b604082019050919050565b5f6020820190508181035f830152613a3981613a00565b9050919050565b7f45786365656473206d61785478416d6f756e74000000000000000000000000005f82015250565b5f613a74601383613138565b9150613a7f82613a40565b602082019050919050565b5f6020820190508181035f830152613aa181613a68565b9050919050565b7f457863656564732057616c6c65740000000000000000000000000000000000005f82015250565b5f613adc600e83613138565b9150613ae782613aa8565b602082019050919050565b5f6020820190508181035f830152613b0981613ad0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613b47826130fd565b9150613b52836130fd565b9250828203905081811115613b6a57613b69613b10565b5b92915050565b5f613b7a826130fd565b9150613b85836130fd565b9250828201905080821115613b9d57613b9c613b10565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613bd7601b83613138565b9150613be282613ba3565b602082019050919050565b5f6020820190508181035f830152613c0481613bcb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050613c4681613284565b92915050565b5f60208284031215613c6157613c6061326b565b5b5f613c6e84828501613c38565b91505092915050565b5f819050919050565b5f613c9a613c95613c9084613c77565b6131f7565b6130fd565b9050919050565b613caa81613c80565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613ce281613273565b82525050565b5f613cf38383613cd9565b60208301905092915050565b5f602082019050919050565b5f613d1582613cb0565b613d1f8185613cba565b9350613d2a83613cca565b805f5b83811015613d5a578151613d418882613ce8565b9750613d4c83613cff565b925050600181019050613d2d565b5085935050505092915050565b5f60a082019050613d7a5f830188613106565b613d876020830187613ca1565b8181036040830152613d998186613d0b565b9050613da860608301856134f4565b613db56080830184613106565b9695505050505050565b5f604082019050613dd25f830185613106565b8181036020830152613de48184613d0b565b90509392505050565b5f613df7826130fd565b9150613e02836130fd565b9250828202613e10816130fd565b91508282048414831517613e2757613e26613b10565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e65826130fd565b9150613e70836130fd565b925082613e8057613e7f613e2e565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ee5602183613138565b9150613ef082613e8b565b604082019050919050565b5f6020820190508181035f830152613f1281613ed9565b905091905056fea26469706673582212205f94edd41ce488ca674e11da0cff2698170279d707c4ff3dcd06e82345927f0c64736f6c63430008170033