0x60806040526040518060400160405280600d81526020017f44796e616d696320546f6b656e000000000000000000000000000000000000008152505f90816100479190610519565b506040518060400160405280600381526020017f44594e00000000000000000000000000000000000000000000000000000000008152506001908161008c9190610519565b50601260025f6101000a81548160ff021916908360ff1602179055503480156100b3575f80fd5b5060405161201138038061201183398181016040528101906100d59190610646565b33600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550436008819055505f60025f9054906101000a900460ff1660ff16600a61019e91906107e0565b6207a1206101ac919061082a565b90505f60025f9054906101000a900460ff1660ff16600a6101cd91906107e0565b6203d0906101db919061082a565b90508160045f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080816102d0919061086b565b6006819055505050505061089e565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061035a57607f821691505b60208210810361036d5761036c610316565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103cf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610394565b6103d98683610394565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61041d610418610413846103f1565b6103fa565b6103f1565b9050919050565b5f819050919050565b61043683610403565b61044a61044282610424565b8484546103a0565b825550505050565b5f90565b61045e610452565b61046981848461042d565b505050565b5b8181101561048c576104815f82610456565b60018101905061046f565b5050565b601f8211156104d1576104a281610373565b6104ab84610385565b810160208510156104ba578190505b6104ce6104c685610385565b83018261046e565b50505b505050565b5f82821c905092915050565b5f6104f15f19846008026104d6565b1980831691505092915050565b5f61050983836104e2565b9150826002028217905092915050565b610522826102df565b67ffffffffffffffff81111561053b5761053a6102e9565b5b6105458254610343565b610550828285610490565b5f60209050601f831160018114610581575f841561056f578287015190505b61057985826104fe565b8655506105e0565b601f19841661058f86610373565b5f5b828110156105b657848901518255600182019150602085019450602081019050610591565b868310156105d357848901516105cf601f8916826104e2565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610615826105ec565b9050919050565b6106258161060b565b811461062f575f80fd5b50565b5f815190506106408161061c565b92915050565b5f806040838503121561065c5761065b6105e8565b5b5f61066985828601610632565b925050602061067a85828601610632565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610706578086048111156106e2576106e1610684565b5b60018516156106f15780820291505b80810290506106ff856106b1565b94506106c6565b94509492505050565b5f8261071e57600190506107d9565b8161072b575f90506107d9565b8160018114610741576002811461074b5761077a565b60019150506107d9565b60ff84111561075d5761075c610684565b5b8360020a91508482111561077457610773610684565b5b506107d9565b5060208310610133831016604e8410600b84101617156107af5782820a9050838111156107aa576107a9610684565b5b6107d9565b6107bc84848460016106bd565b925090508184048111156107d3576107d2610684565b5b81810290505b9392505050565b5f6107ea826103f1565b91506107f5836103f1565b92506108227fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461070f565b905092915050565b5f610834826103f1565b915061083f836103f1565b925082820261084d816103f1565b9150828204841483151761086457610863610684565b5b5092915050565b5f610875826103f1565b9150610880836103f1565b925082820190508082111561089857610897610684565b5b92915050565b611766806108ab5f395ff3fe608060405234801561000f575f80fd5b50600436106100fe575f3560e01c806370a0823111610095578063a9059cbb11610064578063a9059cbb146102a0578063b97dd9e2146102d0578063beaa602d146102ee578063dd62ed3e1461030c576100fe565b806370a0823114610216578063810da780146102465780638da5cb5b1461026457806395d89b4114610282576100fe565b8063313ce567116100d1578063313ce5671461019e5780633a98ef39146101bc57806348cd4cb1146101da5780634ff0876a146101f8576100fe565b806306fdde0314610102578063095ea7b31461012057806318160ddd1461015057806323b872dd1461016e575b5f80fd5b61010a61033c565b6040516101179190611243565b60405180910390f35b61013a600480360381019061013591906112f4565b6103c7565b604051610147919061134c565b60405180910390f35b6101586104b4565b6040516101659190611374565b60405180910390f35b6101886004803603810190610183919061138d565b61054b565b604051610195919061134c565b60405180910390f35b6101a6610ab6565b6040516101b391906113f8565b60405180910390f35b6101c4610ac8565b6040516101d19190611374565b60405180910390f35b6101e2610ace565b6040516101ef9190611374565b60405180910390f35b610200610ad4565b60405161020d9190611374565b60405180910390f35b610230600480360381019061022b9190611411565b610ad9565b60405161023d9190611374565b60405180910390f35b61024e610bde565b60405161025b919061144b565b60405180910390f35b61026c610c03565b604051610279919061144b565b60405180910390f35b61028a610c29565b6040516102979190611243565b60405180910390f35b6102ba60048036038101906102b591906112f4565b610cb5565b6040516102c7919061134c565b60405180910390f35b6102d86110d6565b6040516102e59190611374565b60405180910390f35b6102f6611109565b6040516103039190611374565b60405180910390f35b61032660048036038101906103219190611464565b61112d565b6040516103339190611374565b60405180910390f35b5f8054610348906114cf565b80601f0160208091040260200160405190810160405280929190818152602001828054610374906114cf565b80156103bf5780601f10610396576101008083540402835291602001916103bf565b820191905f5260205f20905b8154815290600101906020018083116103a257829003601f168201915b505050505081565b5f8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104a29190611374565b60405180910390a36001905092915050565b5f670de0b6b3a76400006104c6611109565b6006546104d3919061152c565b6104dd919061159a565b60045f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461054691906115ca565b905090565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610678578160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610620576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061790611647565b60405180910390fd5b8160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461066c9190611665565b925050819055506107b6565b5f610681611109565b90505f670de0b6b3a76400008260055f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106d6919061152c565b6106e0919061159a565b905083811015610725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071c90611647565b60405180910390fd5b5f82670de0b6b3a76400008661073b919061152c565b610745919061159a565b90508060055f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107939190611665565b925050819055508060065f8282546107ab9190611665565b925050819055505050505b8160075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610871576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610868906116e2565b60405180910390fd5b8160075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108f89190611665565b9250508190555060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109ab578160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461099f91906115ca565b92505081905550610a46565b5f6109b4611109565b90505f81670de0b6b3a7640000856109cc919061152c565b6109d6919061159a565b90508060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a2491906115ca565b925050819055508060065f828254610a3c91906115ca565b9250508190555050505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610aa39190611374565b60405180910390a3600190509392505050565b60025f9054906101000a900460ff1681565b60065481565b60085481565b600181565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b735760045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050610bd9565b670de0b6b3a7640000610b84611109565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610bcc919061152c565b610bd6919061159a565b90505b919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054610c36906114cf565b80601f0160208091040260200160405190810160405280929190818152602001828054610c62906114cf565b8015610cad5780601f10610c8457610100808354040283529160200191610cad565b820191905f5260205f20905b815481529060010190602001808311610c9057829003601f168201915b505050505081565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610de2578160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8190611647565b60405180910390fd5b8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610dd69190611665565b92505081905550610f20565b5f610deb611109565b90505f670de0b6b3a76400008260055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e40919061152c565b610e4a919061159a565b905083811015610e8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8690611647565b60405180910390fd5b5f82670de0b6b3a764000086610ea5919061152c565b610eaf919061159a565b90508060055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610efd9190611665565b925050819055508060065f828254610f159190611665565b925050819055505050505b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fcc578160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610fc091906115ca565b92505081905550611067565b5f610fd5611109565b90505f81670de0b6b3a764000085610fed919061152c565b610ff7919061159a565b90508060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461104591906115ca565b925050819055508060065f82825461105d91906115ca565b9250508190555050505b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110c49190611374565b60405180910390a36001905092915050565b5f6008544310156110e9575f9050611106565b6001600854436110f99190611665565b611103919061159a565b90505b90565b5f806111136110d6565b90506111276706f05b59d3b200008261114d565b91505090565b6007602052815f5260405f20602052805f5260405f205f91509150505481565b5f670de0b6b3a764000090505b5f8211156111cd5760016002836111719190611700565b0361119857670de0b6b3a7640000838261118b919061152c565b611195919061159a565b90505b670de0b6b3a764000083846111ad919061152c565b6111b7919061159a565b92506002826111c6919061159a565b915061115a565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611215826111d3565b61121f81856111dd565b935061122f8185602086016111ed565b611238816111fb565b840191505092915050565b5f6020820190508181035f83015261125b818461120b565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61129082611267565b9050919050565b6112a081611286565b81146112aa575f80fd5b50565b5f813590506112bb81611297565b92915050565b5f819050919050565b6112d3816112c1565b81146112dd575f80fd5b50565b5f813590506112ee816112ca565b92915050565b5f806040838503121561130a57611309611263565b5b5f611317858286016112ad565b9250506020611328858286016112e0565b9150509250929050565b5f8115159050919050565b61134681611332565b82525050565b5f60208201905061135f5f83018461133d565b92915050565b61136e816112c1565b82525050565b5f6020820190506113875f830184611365565b92915050565b5f805f606084860312156113a4576113a3611263565b5b5f6113b1868287016112ad565b93505060206113c2868287016112ad565b92505060406113d3868287016112e0565b9150509250925092565b5f60ff82169050919050565b6113f2816113dd565b82525050565b5f60208201905061140b5f8301846113e9565b92915050565b5f6020828403121561142657611425611263565b5b5f611433848285016112ad565b91505092915050565b61144581611286565b82525050565b5f60208201905061145e5f83018461143c565b92915050565b5f806040838503121561147a57611479611263565b5b5f611487858286016112ad565b9250506020611498858286016112ad565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806114e657607f821691505b6020821081036114f9576114f86114a2565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611536826112c1565b9150611541836112c1565b925082820261154f816112c1565b91508282048414831517611566576115656114ff565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6115a4826112c1565b91506115af836112c1565b9250826115bf576115be61156d565b5b828204905092915050565b5f6115d4826112c1565b91506115df836112c1565b92508282019050808211156115f7576115f66114ff565b5b92915050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f6116316014836111dd565b915061163c826115fd565b602082019050919050565b5f6020820190508181035f83015261165e81611625565b9050919050565b5f61166f826112c1565b915061167a836112c1565b9250828203905081811115611692576116916114ff565b5b92915050565b7f416c6c6f77616e636520657863656564656400000000000000000000000000005f82015250565b5f6116cc6012836111dd565b91506116d782611698565b602082019050919050565b5f6020820190508181035f8301526116f9816116c0565b9050919050565b5f61170a826112c1565b9150611715836112c1565b9250826117255761172461156d565b5b82820690509291505056fea264697066735822122067ec1cf5330dcab38ec3477fad0cb8f7a9f640862d6926e49906b523a91305a364736f6c634300081a0033000000000000000000000000208041d2d66ffe3f5ff333fa7554d2bb174abd8d000000000000000000000000c26f9c9f622de200314b86b0c97f93b7c72c5d18