608060405261dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200005357600080fd5b50600062000066620002bb60201b60201c565b905080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f7699c77f2404f9b6bbd003861bb4af8ae70b205e19e73d7ec7fe4590db59a6b760405160405180910390a3506012600760006101000a81548160ff021916908360ff1602179055506040518060400160405280600c81526020017f537061636558706c6f7265720000000000000000000000000000000000000000815250600590816200016791906200053d565b506040518060400160405280600c81526020017f537061636558706c6f726572000000000000000000000000000000000000000081525060069081620001ae91906200053d565b50600760009054906101000a900460ff1660ff16600a620001d09190620007a7565b6305f5e100620001e19190620007f8565b60088190555060085460036000620001fe620002bb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200024c620002bb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600854604051620002ad919062000854565b60405180910390a362000871565b600033905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200034557607f821691505b6020821081036200035b576200035a620002fd565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003c57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000386565b620003d1868362000386565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200041e620004186200041284620003e9565b620003f3565b620003e9565b9050919050565b6000819050919050565b6200043a83620003fd565b62000452620004498262000425565b84845462000393565b825550505050565b600090565b620004696200045a565b620004768184846200042f565b505050565b5b818110156200049e57620004926000826200045f565b6001810190506200047c565b5050565b601f821115620004ed57620004b78162000361565b620004c28462000376565b81016020851015620004d2578190505b620004ea620004e18562000376565b8301826200047b565b50505b505050565b600082821c905092915050565b60006200051260001984600802620004f2565b1980831691505092915050565b60006200052d8383620004ff565b9150826002028217905092915050565b6200054882620002c3565b67ffffffffffffffff811115620005645762000563620002ce565b5b6200057082546200032c565b6200057d828285620004a2565b600060209050601f831160018114620005b55760008415620005a0578287015190505b620005ac85826200051f565b8655506200061c565b601f198416620005c58662000361565b60005b82811015620005ef57848901518255600182019150602085019450602081019050620005c8565b868310156200060f57848901516200060b601f891682620004ff565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620006b2578086048111156200068a576200068962000624565b5b60018516156200069a5780820291505b8081029050620006aa8562000653565b94506200066a565b94509492505050565b600082620006cd5760019050620007a0565b81620006dd5760009050620007a0565b8160018114620006f65760028114620007015762000737565b6001915050620007a0565b60ff84111562000716576200071562000624565b5b8360020a91508482111562000730576200072f62000624565b5b50620007a0565b5060208310610133831016604e8410600b8410161715620007715782820a9050838111156200076b576200076a62000624565b5b620007a0565b62000780848484600162000660565b925090508184048111156200079a576200079962000624565b5b81810290505b9392505050565b6000620007b482620003e9565b9150620007c183620003e9565b9250620007f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006bb565b905092915050565b60006200080582620003e9565b91506200081283620003e9565b92508282026200082281620003e9565b915082820484148315176200083c576200083b62000624565b5b5092915050565b6200084e81620003e9565b82525050565b60006020820190506200086b600083018462000843565b92915050565b6119c180620008816000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a9059cbb11610066578063a9059cbb1461029c578063c2af913b146102cc578063dd62ed3e146102d6578063eb5a662e14610306576100f5565b806370a08231146102005780638da5cb5b1461023057806395d89b411461024e578063a457c2d71461026c576100f5565b806323b872dd116100d357806323b872dd14610166578063313ce5671461019657806339509351146101b45780636f6c6d78146101e4576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b610102610336565b60405161010f919061118e565b60405180910390f35b610132600480360381019061012d9190611249565b6103c8565b60405161013f91906112a4565b60405180910390f35b6101506103e6565b60405161015d91906112ce565b60405180910390f35b610180600480360381019061017b91906112e9565b6103f0565b60405161018d91906112a4565b60405180910390f35b61019e6104c9565b6040516101ab9190611358565b60405180910390f35b6101ce60048036038101906101c99190611249565b6104e0565b6040516101db91906112a4565b60405180910390f35b6101fe60048036038101906101f99190611249565b610593565b005b61021a60048036038101906102159190611373565b610672565b60405161022791906112ce565b60405180910390f35b6102386106bb565b60405161024591906113af565b60405180910390f35b6102566106e5565b604051610263919061118e565b60405180910390f35b61028660048036038101906102819190611249565b610777565b60405161029391906112a4565b60405180910390f35b6102b660048036038101906102b19190611249565b610844565b6040516102c391906112a4565b60405180910390f35b6102d4610867565b005b6102f060048036038101906102eb91906113ca565b6109fd565b6040516102fd91906112ce565b60405180910390f35b610320600480360381019061031b9190611373565b610a84565b60405161032d91906112ce565b60405180910390f35b60606005805461034590611439565b80601f016020809104026020016040519081016040528092919081815260200182805461037190611439565b80156103be5780601f10610393576101008083540402835291602001916103be565b820191906000526020600020905b8154815290600101906020018083116103a157829003601f168201915b5050505050905090565b60006103dc6103d5610acd565b8484610ad5565b6001905092915050565b6000600854905090565b60006103fd848484610c9e565b6104be84610409610acd565b6104b98560405180606001604052806021815260200161194660219139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061046f610acd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff29092919063ffffffff16565b610ad5565b600190509392505050565b6000600760009054906101000a900460ff16905090565b60006105896104ed610acd565b8461058485600260006104fe610acd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461105690919063ffffffff16565b610ad5565b6001905092915050565b61059b610acd565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461062a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610621906114b6565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600680546106f490611439565b80601f016020809104026020016040519081016040528092919081815260200182805461072090611439565b801561076d5780601f106107425761010080835404028352916020019161076d565b820191906000526020600020905b81548152906001019060200180831161075057829003601f168201915b5050505050905090565b600061083a610784610acd565b846108358560405180606001604052806025815260200161196760259139600260006107ae610acd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff29092919063ffffffff16565b610ad5565b6001905092915050565b60008061084f610acd565b905061085c818585610c9e565b600191505092915050565b61086f610acd565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f5906114b6565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7699c77f2404f9b6bbd003861bb4af8ae70b205e19e73d7ec7fe4590db59a6b760405160405180910390a360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3b90611548565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baa906115da565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610c9191906112ce565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d049061166c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d73906116fe565b60405180910390fd5b6000610d8784610a84565b90506000811115610dd557808211610dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcb90611790565b60405180910390fd5b5b6000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5390611822565b60405180910390fd5b610eae83600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461105690919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f4383600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110b490919063ffffffff16565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610fe391906112ce565b60405180910390a35050505050565b600083831115829061103a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611031919061118e565b60405180910390fd5b50600083856110499190611871565b9050809150509392505050565b600080828461106591906118a5565b9050838110156110aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a190611925565b60405180910390fd5b8091505092915050565b60006110f683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ff2565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561113857808201518184015260208101905061111d565b60008484015250505050565b6000601f19601f8301169050919050565b6000611160826110fe565b61116a8185611109565b935061117a81856020860161111a565b61118381611144565b840191505092915050565b600060208201905081810360008301526111a88184611155565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006111e0826111b5565b9050919050565b6111f0816111d5565b81146111fb57600080fd5b50565b60008135905061120d816111e7565b92915050565b6000819050919050565b61122681611213565b811461123157600080fd5b50565b6000813590506112438161121d565b92915050565b600080604083850312156112605761125f6111b0565b5b600061126e858286016111fe565b925050602061127f85828601611234565b9150509250929050565b60008115159050919050565b61129e81611289565b82525050565b60006020820190506112b96000830184611295565b92915050565b6112c881611213565b82525050565b60006020820190506112e360008301846112bf565b92915050565b600080600060608486031215611302576113016111b0565b5b6000611310868287016111fe565b9350506020611321868287016111fe565b925050604061133286828701611234565b9150509250925092565b600060ff82169050919050565b6113528161133c565b82525050565b600060208201905061136d6000830184611349565b92915050565b600060208284031215611389576113886111b0565b5b6000611397848285016111fe565b91505092915050565b6113a9816111d5565b82525050565b60006020820190506113c460008301846113a0565b92915050565b600080604083850312156113e1576113e06111b0565b5b60006113ef858286016111fe565b9250506020611400858286016111fe565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061145157607f821691505b6020821081036114645761146361140a565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006114a0602083611109565b91506114ab8261146a565b602082019050919050565b600060208201905081810360008301526114cf81611493565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f72657373206973206e6f7420616c6c6f77656400000000000000000000000000602082015250565b6000611532603383611109565b915061153d826114d6565b604082019050919050565b6000602082019050818103600083015261156181611525565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373206973206e6f7420616c6c6f776564000000000000000000000000000000602082015250565b60006115c4603183611109565b91506115cf82611568565b604082019050919050565b600060208201905081810360008301526115f3816115b7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f657373206973206e6f7420616c6c6f7765640000000000000000000000000000602082015250565b6000611656603283611109565b9150611661826115fa565b604082019050919050565b6000602082019050818103600083015261168581611649565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373206973206e6f7420616c6c6f776564000000000000000000000000602082015250565b60006116e8603483611109565b91506116f38261168c565b604082019050919050565b60006020820190508181036000830152611717816116db565b9050919050565b7f45524332303a207472616e73666572206578636565647320616c6c6f77616e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b600061177a602183611109565b91506117858261171e565b604082019050919050565b600060208201905081810360008301526117a98161176d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656465642060008201527f62616c616e636500000000000000000000000000000000000000000000000000602082015250565b600061180c602783611109565b9150611817826117b0565b604082019050919050565b6000602082019050818103600083015261183b816117ff565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061187c82611213565b915061188783611213565b925082820390508181111561189f5761189e611842565b5b92915050565b60006118b082611213565b91506118bb83611213565b92508282019050808211156118d3576118d2611842565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061190f601b83611109565b915061191a826118d9565b602082019050919050565b6000602082019050818103600083015261193e81611902565b905091905056fe45524332303a207472616e73666572206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d716f6ac3b4097401ac1fea34569adf0b75619b80813bef8aa062e2476537eba64736f6c63430008120033