60806040526040518060400160405280600a81526020017f476f647a696c6c61616100000000000000000000000000000000000000000000815250600190816200004a919062000609565b506040518060400160405280600481526020017f47445a41000000000000000000000000000000000000000000000000000000008152506002908162000091919062000609565b506009600355600354600a620000a891906200086a565b633b9aca00620000b99190620008ba565b600455737a250d5630b4cf539739df2c5dacb4c659f2488d60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60085f6101000a81548160ff02191690831515021790555034801562000135575f80fd5b50335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a373dba09ae7862508da2e44deeb19becb09fa137ad460055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002526200039e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a5f620002b36200039e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051620002fc919062000915565b60405180910390a3600454600a5f6200031a6200039e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555033600860016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000930565b5f33905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200042157607f821691505b602082108103620004375762000436620003dc565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200049b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200045e565b620004a786836200045e565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620004f1620004eb620004e584620004bf565b620004c8565b620004bf565b9050919050565b5f819050919050565b6200050c83620004d1565b620005246200051b82620004f8565b8484546200046a565b825550505050565b5f90565b6200053a6200052c565b6200054781848462000501565b505050565b5b818110156200056e57620005625f8262000530565b6001810190506200054d565b5050565b601f821115620005bd5762000587816200043d565b62000592846200044f565b81016020851015620005a2578190505b620005ba620005b1856200044f565b8301826200054c565b50505b505050565b5f82821c905092915050565b5f620005df5f1984600802620005c2565b1980831691505092915050565b5f620005f98383620005ce565b9150826002028217905092915050565b6200061482620003a5565b67ffffffffffffffff81111562000630576200062f620003af565b5b6200063c825462000409565b6200064982828562000572565b5f60209050601f8311600181146200067f575f84156200066a578287015190505b620006768582620005ec565b865550620006e5565b601f1984166200068f866200043d565b5f5b82811015620006b85784890151825560018201915060208501945060208101905062000691565b86831015620006d85784890151620006d4601f891682620005ce565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000777578086048111156200074f576200074e620006ed565b5b60018516156200075f5780820291505b80810290506200076f856200071a565b94506200072f565b94509492505050565b5f8262000791576001905062000863565b81620007a0575f905062000863565b8160018114620007b95760028114620007c457620007fa565b600191505062000863565b60ff841115620007d957620007d8620006ed565b5b8360020a915084821115620007f357620007f2620006ed565b5b5062000863565b5060208310610133831016604e8410600b8410161715620008345782820a9050838111156200082e576200082d620006ed565b5b62000863565b62000843848484600162000726565b925090508184048111156200085d576200085c620006ed565b5b81810290505b9392505050565b5f6200087682620004bf565b91506200088383620004bf565b9250620008b27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000780565b905092915050565b5f620008c682620004bf565b9150620008d383620004bf565b9250828202620008e381620004bf565b91508282048414831517620008fd57620008fc620006ed565b5b5092915050565b6200090f81620004bf565b82525050565b5f6020820190506200092a5f83018462000904565b92915050565b611d1a806200093e5f395ff3fe608060405234801561000f575f80fd5b506004361061011f575f3560e01c806370a08231116100ab578063a457c2d71161006f578063a457c2d7146102f9578063a9059cbb14610329578063cc7a9acc14610359578063dd62ed3e14610377578063f22857a8146103a75761011f565b806370a0823114610267578063715018a6146102975780638da5cb5b146102a157806394b918de146102bf57806395d89b41146102db5761011f565b8063313ce567116100f2578063313ce567146101bf57806332424aa3146101dd57806339509351146101fb5780633eaaf86b1461022b5780636f268a99146102495761011f565b806306fdde0314610123578063095ea7b31461014157806318160ddd1461017157806323b872dd1461018f575b5f80fd5b61012b6103b1565b6040516101389190611403565b60405180910390f35b61015b600480360381019061015691906114b4565b610441565b604051610168919061150c565b60405180910390f35b610179610457565b6040516101869190611534565b60405180910390f35b6101a960048036038101906101a4919061154d565b610460565b6040516101b6919061150c565b60405180910390f35b6101c7610502565b6040516101d49190611534565b60405180910390f35b6101e561050b565b6040516101f29190611534565b60405180910390f35b610215600480360381019061021091906114b4565b610511565b604051610222919061150c565b60405180910390f35b6102336105b1565b6040516102409190611534565b60405180910390f35b6102516105b7565b60405161025e91906115ac565b60405180910390f35b610281600480360381019061027c91906115c5565b6105dd565b60405161028e9190611534565b60405180910390f35b61029f610623565b005b6102a9610752565b6040516102b691906115ac565b60405180910390f35b6102d960048036038101906102d491906115f0565b610779565b005b6102e3610a3c565b6040516102f09190611403565b60405180910390f35b610313600480360381019061030e91906114b4565b610acc565b604051610320919061150c565b60405180910390f35b610343600480360381019061033e91906114b4565b610bf0565b604051610350919061150c565b60405180910390f35b610361610c0d565b60405161036e91906115ac565b60405180910390f35b610391600480360381019061038c919061161b565b610c32565b60405161039e9190611534565b60405180910390f35b6103af610cb4565b005b6060600180546103c090611686565b80601f01602080910402602001604051908101604052809291908181526020018280546103ec90611686565b80156104375780601f1061040e57610100808354040283529160200191610437565b820191905f5260205f20905b81548152906001019060200180831161041a57829003601f168201915b5050505050905090565b5f61044d338484610d45565b6001905092915050565b5f600454905090565b5f61046c848484610f08565b8160095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6104b3611241565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156104f7575f80fd5b600190509392505050565b5f600354905090565b60035481565b5f6105a761051d611241565b848460095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546105a291906116e3565b610d45565b6001905092915050565b60045481565b600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610642610752565b73ffffffffffffffffffffffffffffffffffffffff1614610698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068f90611760565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610781611248565b15610a33576107b23060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683610d45565b80600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f600267ffffffffffffffff8111156108105761080f61177e565b5b60405190808252806020026020018201604052801561083e5781602001602082028036833780820191505090505b5090505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d091906117bf565b905030825f815181106108e6576108e56117ea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508082600181518110610935576109346117ea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f85600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166020426109df91906116e3565b6040518663ffffffff1660e01b81526004016109ff959493929190611910565b5f604051808303815f87803b158015610a16575f80fd5b505af1158015610a28573d5f803e3d5ffd5b505050505050610a38565b610a39565b5b50565b606060028054610a4b90611686565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7790611686565b8015610ac25780601f10610a9957610100808354040283529160200191610ac2565b820191905f5260205f20905b815481529060010190602001808311610aa557829003601f168201915b5050505050905090565b5f8160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610b51575f80fd5b610be6610b5c611241565b848460095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610be19190611968565b610d45565b6001905092915050565b5f610c03610bfc611241565b8484610f08565b6001905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16610cd3610752565b73ffffffffffffffffffffffffffffffffffffffff1614610d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2090611760565b60405180910390fd5b600160085f6101000a81548160ff021916908315150217905550565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daa90611a0b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1890611a99565b60405180910390fd5b8060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610efb9190611534565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f3f575f80fd5b600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054811115610f88575f80fd5b5f8060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1685604051602401610fd391906115ac565b6040516020818303038152906040527f70a08231000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161105d9190611afb565b5f604051808303815f865af19150503d805f8114611096576040519150601f19603f3d011682016040523d82523d5f602084013e61109b565b606091505b50915091505f818060200190518101906110b59190611b25565b90505f6110de60646110d084886112a690919063ffffffff16565b61131d90919063ffffffff16565b905084600a5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546111299190611968565b600a5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080856111769190611968565b600a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546111c191906116e3565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83886112239190611968565b6040516112309190611534565b60405180910390a350505050505050565b5f33905090565b5f600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661128a611241565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b5f8083036112b6575f9050611317565b5f82846112c39190611b50565b90508284826112d29190611bbe565b14611312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130990611c5e565b60405180910390fd5b809150505b92915050565b5f808211611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135790611cc6565b60405180910390fd5b5f828461136d9190611bbe565b90508091505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156113b0578082015181840152602081019050611395565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6113d582611379565b6113df8185611383565b93506113ef818560208601611393565b6113f8816113bb565b840191505092915050565b5f6020820190508181035f83015261141b81846113cb565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61145082611427565b9050919050565b61146081611446565b811461146a575f80fd5b50565b5f8135905061147b81611457565b92915050565b5f819050919050565b61149381611481565b811461149d575f80fd5b50565b5f813590506114ae8161148a565b92915050565b5f80604083850312156114ca576114c9611423565b5b5f6114d78582860161146d565b92505060206114e8858286016114a0565b9150509250929050565b5f8115159050919050565b611506816114f2565b82525050565b5f60208201905061151f5f8301846114fd565b92915050565b61152e81611481565b82525050565b5f6020820190506115475f830184611525565b92915050565b5f805f6060848603121561156457611563611423565b5b5f6115718682870161146d565b93505060206115828682870161146d565b9250506040611593868287016114a0565b9150509250925092565b6115a681611446565b82525050565b5f6020820190506115bf5f83018461159d565b92915050565b5f602082840312156115da576115d9611423565b5b5f6115e78482850161146d565b91505092915050565b5f6020828403121561160557611604611423565b5b5f611612848285016114a0565b91505092915050565b5f806040838503121561163157611630611423565b5b5f61163e8582860161146d565b925050602061164f8582860161146d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061169d57607f821691505b6020821081036116b0576116af611659565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6116ed82611481565b91506116f883611481565b92508282019050808211156117105761170f6116b6565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61174a602083611383565b915061175582611716565b602082019050919050565b5f6020820190508181035f8301526117778161173e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506117b981611457565b92915050565b5f602082840312156117d4576117d3611423565b5b5f6117e1848285016117ab565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f61184361183e61183984611817565b611820565b611481565b9050919050565b61185381611829565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61188b81611446565b82525050565b5f61189c8383611882565b60208301905092915050565b5f602082019050919050565b5f6118be82611859565b6118c88185611863565b93506118d383611873565b805f5b838110156119035781516118ea8882611891565b97506118f5836118a8565b9250506001810190506118d6565b5085935050505092915050565b5f60a0820190506119235f830188611525565b611930602083018761184a565b818103604083015261194281866118b4565b9050611951606083018561159d565b61195e6080830184611525565b9695505050505050565b5f61197282611481565b915061197d83611481565b9250828203905081811115611995576119946116b6565b5b92915050565b7f4945524332303a20617070726f76652066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6119f5602583611383565b9150611a008261199b565b604082019050919050565b5f6020820190508181035f830152611a22816119e9565b9050919050565b7f4945524332303a20617070726f766520746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611a83602383611383565b9150611a8e82611a29565b604082019050919050565b5f6020820190508181035f830152611ab081611a77565b9050919050565b5f81519050919050565b5f81905092915050565b5f611ad582611ab7565b611adf8185611ac1565b9350611aef818560208601611393565b80840191505092915050565b5f611b068284611acb565b915081905092915050565b5f81519050611b1f8161148a565b92915050565b5f60208284031215611b3a57611b39611423565b5b5f611b4784828501611b11565b91505092915050565b5f611b5a82611481565b9150611b6583611481565b9250828202611b7381611481565b91508282048414831517611b8a57611b896116b6565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611bc882611481565b9150611bd383611481565b925082611be357611be2611b91565b5b828204905092915050565b7f536166654d6174683a20206d756c7469706c69636174696f6e206f766572666c5f8201527f6f77000000000000000000000000000000000000000000000000000000000000602082015250565b5f611c48602283611383565b9150611c5382611bee565b604082019050919050565b5f6020820190508181035f830152611c7581611c3c565b9050919050565b7f536166654d6174683a20206469766973696f6e206279207a65726f00000000005f82015250565b5f611cb0601b83611383565b9150611cbb82611c7c565b602082019050919050565b5f6020820190508181035f830152611cdd81611ca4565b905091905056fea264697066735822122041fab1e68e4e2aebf3079dbe687ef39a1e4a9cbda7a626df1954a821cb1b69b064736f6c63430008150033