6080604052601260ff16600a61001591906103c2565b620186a0610023919061040c565b5f556064600255348015610035575f80fd5b503360015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025f54610084919061047a565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060025f546100d3919061047a565b60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516101ae91906104b9565b60405180910390a33373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460405161025091906104b9565b60405180910390a36104d2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156102df578086048111156102bb576102ba61025d565b5b60018516156102ca5780820291505b80810290506102d88561028a565b945061029f565b94509492505050565b5f826102f757600190506103b2565b81610304575f90506103b2565b816001811461031a576002811461032457610353565b60019150506103b2565b60ff8411156103365761033561025d565b5b8360020a91508482111561034d5761034c61025d565b5b506103b2565b5060208310610133831016604e8410600b84101617156103885782820a9050838111156103835761038261025d565b5b6103b2565b6103958484846001610296565b925090508184048111156103ac576103ab61025d565b5b81810290505b9392505050565b5f819050919050565b5f6103cc826103b9565b91506103d7836103b9565b92506104047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846102e8565b905092915050565b5f610416826103b9565b9150610421836103b9565b925082820261042f816103b9565b915082820484148315176104465761044561025d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610484826103b9565b915061048f836103b9565b92508261049f5761049e61044d565b5b828204905092915050565b6104b3816103b9565b82525050565b5f6020820190506104cc5f8301846104aa565b92915050565b6112ec806104df5f395ff3fe6080604052600436106100c1575f3560e01c806370a082311161007e578063a9059cbb11610058578063a9059cbb14610273578063b867ec0b146102af578063dd62ed3e146102b9578063f851a440146102f5576100c1565b806370a08231146101e35780637ff9b5961461021f57806395d89b4114610249576100c1565b806306fdde03146100c5578063095ea7b3146100ef57806318160ddd1461012b57806323b872dd14610155578063313ce567146101915780636a61e5fc146101bb575b5f80fd5b3480156100d0575f80fd5b506100d961031f565b6040516100e69190610cde565b60405180910390f35b3480156100fa575f80fd5b5061011560048036038101906101109190610d8f565b610358565b6040516101229190610de7565b60405180910390f35b348015610136575f80fd5b5061013f610445565b60405161014c9190610e0f565b60405180910390f35b348015610160575f80fd5b5061017b60048036038101906101769190610e28565b61044d565b6040516101889190610de7565b60405180910390f35b34801561019c575f80fd5b506101a561072d565b6040516101b29190610e93565b60405180910390f35b3480156101c6575f80fd5b506101e160048036038101906101dc9190610eac565b610732565b005b3480156101ee575f80fd5b5061020960048036038101906102049190610ed7565b6107cb565b6040516102169190610e0f565b60405180910390f35b34801561022a575f80fd5b50610233610811565b6040516102409190610e0f565b60405180910390f35b348015610254575f80fd5b5061025d610817565b60405161026a9190610cde565b60405180910390f35b34801561027e575f80fd5b5061029960048036038101906102949190610d8f565b610850565b6040516102a69190610de7565b60405180910390f35b6102b76109e6565b005b3480156102c4575f80fd5b506102df60048036038101906102da9190610f02565b610bc7565b6040516102ec9190610e0f565b60405180910390f35b348015610300575f80fd5b50610309610c49565b6040516103169190610f4f565b60405180910390f35b6040518060400160405280600981526020017f45434f454e45524759000000000000000000000000000000000000000000000081525081565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104339190610e0f565b60405180910390a36001905092915050565b5f8054905090565b5f8160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156104ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c590610fb2565b60405180910390fd5b8160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610589576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105809061101a565b60405180910390fd5b8160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105d59190611065565b925050819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546106289190611098565b925050819055508160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546106b69190611065565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161071a9190610e0f565b60405180910390a3600190509392505050565b601281565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b89061113b565b60405180910390fd5b8060028190555050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60025481565b6040518060400160405280600481526020017f45434f450000000000000000000000000000000000000000000000000000000081525081565b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156108d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c890610fb2565b60405180910390fd5b8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461091d9190611065565b925050819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109709190611098565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516109d49190610e0f565b60405180910390a36001905092915050565b5f3411610a28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1f906111c9565b60405180910390fd5b5f60025434610a3791906111e7565b90508060035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab090611298565b60405180910390fd5b8060035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610b059190611065565b925050819055508060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610b589190611098565b925050819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bbc9190610e0f565b60405180910390a350565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610cb082610c6e565b610cba8185610c78565b9350610cca818560208601610c88565b610cd381610c96565b840191505092915050565b5f6020820190508181035f830152610cf68184610ca6565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d2b82610d02565b9050919050565b610d3b81610d21565b8114610d45575f80fd5b50565b5f81359050610d5681610d32565b92915050565b5f819050919050565b610d6e81610d5c565b8114610d78575f80fd5b50565b5f81359050610d8981610d65565b92915050565b5f8060408385031215610da557610da4610cfe565b5b5f610db285828601610d48565b9250506020610dc385828601610d7b565b9150509250929050565b5f8115159050919050565b610de181610dcd565b82525050565b5f602082019050610dfa5f830184610dd8565b92915050565b610e0981610d5c565b82525050565b5f602082019050610e225f830184610e00565b92915050565b5f805f60608486031215610e3f57610e3e610cfe565b5b5f610e4c86828701610d48565b9350506020610e5d86828701610d48565b9250506040610e6e86828701610d7b565b9150509250925092565b5f60ff82169050919050565b610e8d81610e78565b82525050565b5f602082019050610ea65f830184610e84565b92915050565b5f60208284031215610ec157610ec0610cfe565b5b5f610ece84828501610d7b565b91505092915050565b5f60208284031215610eec57610eeb610cfe565b5b5f610ef984828501610d48565b91505092915050565b5f8060408385031215610f1857610f17610cfe565b5b5f610f2585828601610d48565b9250506020610f3685828601610d48565b9150509250929050565b610f4981610d21565b82525050565b5f602082019050610f625f830184610f40565b92915050565b7f53616c646f20696e737566696369656e746500000000000000000000000000005f82015250565b5f610f9c601283610c78565b9150610fa782610f68565b602082019050919050565b5f6020820190508181035f830152610fc981610f90565b9050919050565b7f4e6f207065726d697469646f00000000000000000000000000000000000000005f82015250565b5f611004600c83610c78565b915061100f82610fd0565b602082019050919050565b5f6020820190508181035f83015261103181610ff8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61106f82610d5c565b915061107a83610d5c565b925082820390508181111561109257611091611038565b5b92915050565b5f6110a282610d5c565b91506110ad83610d5c565b92508282019050808211156110c5576110c4611038565b5b92915050565b7f536f6c6f20656c2061646d696e2070756564652063616d6269617220656c20705f8201527f726563696f000000000000000000000000000000000000000000000000000000602082015250565b5f611125602583610c78565b9150611130826110cb565b604082019050919050565b5f6020820190508181035f83015261115281611119565b9050919050565b7f446562657320656e7669617220616c676f2064652065746865722070617261205f8201527f636f6d7072617220746f6b656e73000000000000000000000000000000000000602082015250565b5f6111b3602e83610c78565b91506111be82611159565b604082019050919050565b5f6020820190508181035f8301526111e0816111a7565b9050919050565b5f6111f182610d5c565b91506111fc83610d5c565b925082820261120a81610d5c565b9150828204841483151761122157611220611038565b5b5092915050565b7f4e6f2068617920737566696369656e746520746f6b656e7320646973706f6e695f8201527f626c657300000000000000000000000000000000000000000000000000000000602082015250565b5f611282602483610c78565b915061128d82611228565b604082019050919050565b5f6020820190508181035f8301526112af81611276565b905091905056fea2646970667358221220d42507352243e4e7478e4b662d7060f44695843aba7c9450d10437ba853bfefa64736f6c634300081a0033