60806040526040518060600160405280602c8152602001620045b4602c9139600a90816200002e9190620004a5565b506103e8600b55611388600c556607e3140766c000600d556000600e556000600f5560006010556001601160006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280601a81526020017f334420426173656420496e76697369626c6520467269656e64730000000000008152506040518060400160405280600781526020017f465249454e4453000000000000000000000000000000000000000000000000008152508160029081620000fb9190620004a5565b5080600390816200010d9190620004a5565b506200011e6200015460201b60201c565b6000819055505050620001466200013a6200015d60201b60201c565b6200016560201b60201c565b60016009819055506200058c565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002ad57607f821691505b602082108103620002c357620002c262000265565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200032d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002ee565b620003398683620002ee565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000386620003806200037a8462000351565b6200035b565b62000351565b9050919050565b6000819050919050565b620003a28362000365565b620003ba620003b1826200038d565b848454620002fb565b825550505050565b600090565b620003d1620003c2565b620003de81848462000397565b505050565b5b818110156200040657620003fa600082620003c7565b600181019050620003e4565b5050565b601f82111562000455576200041f81620002c9565b6200042a84620002de565b810160208510156200043a578190505b620004526200044985620002de565b830182620003e3565b50505b505050565b600082821c905092915050565b60006200047a600019846008026200045a565b1980831691505092915050565b600062000495838362000467565b9150826002028217905092915050565b620004b0826200022b565b67ffffffffffffffff811115620004cc57620004cb62000236565b5b620004d8825462000294565b620004e58282856200040a565b600060209050601f8311600181146200051d576000841562000508578287015190505b62000514858262000487565b86555062000584565b601f1984166200052d86620002c9565b60005b82811015620005575784890151825560018201915060208501945060208101905062000530565b8683101562000577578489015162000573601f89168262000467565b8355505b6001600288020188555050505b505050505050565b614018806200059c6000396000f3fe60806040526004361061020f5760003560e01c806370a0823111610118578063b88d4fde116100a0578063d5abeb011161006f578063d5abeb0114610754578063e985e9c51461077f578063efdc7788146107bc578063f2fde38b146107e5578063f6511f931461080e5761020f565b8063b88d4fde14610698578063c6a91b42146106c1578063c87b56dd146106ec578063d547cfb7146107295761020f565b8063982d669e116100e7578063982d669e146105d457806398710d1e146105ff5780639bd6e3d71461062a5780639e9fcffc14610646578063a22cb4651461066f5761020f565b806370a082311461052a578063715018a6146105675780638da5cb5b1461057e57806395d89b41146105a95761020f565b80631e84c4131161019b57806328cad13d1161016a57806328cad13d1461045b5780633ccfd60b1461048457806342842e0e1461049b57806355f804b3146104c45780636352211e146104ed5761020f565b80631e84c413146103b5578063202f298a146103e0578063228025e81461040957806323b872dd146104325761020f565b8063095ea7b3116101e2578063095ea7b3146102e45780630a00ae831461030d57806318160ddd146103365780631919fed714610361578063193ad7b41461038a5761020f565b806301ffc9a71461021457806306fdde031461025157806307e89ec01461027c578063081812fc146102a7575b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190612df9565b61084b565b6040516102489190612e41565b60405180910390f35b34801561025d57600080fd5b5061026661092d565b6040516102739190612eec565b60405180910390f35b34801561028857600080fd5b506102916109bf565b60405161029e9190612f27565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c99190612f6e565b6109c5565b6040516102db9190612fdc565b60405180910390f35b3480156102f057600080fd5b5061030b60048036038101906103069190613023565b610a41565b005b34801561031957600080fd5b50610334600480360381019061032f9190612f6e565b610b4b565b005b34801561034257600080fd5b5061034b610bd1565b6040516103589190612f27565b60405180910390f35b34801561036d57600080fd5b5061038860048036038101906103839190612f6e565b610be8565b005b34801561039657600080fd5b5061039f610c6e565b6040516103ac9190612f27565b60405180910390f35b3480156103c157600080fd5b506103ca610c74565b6040516103d79190612e41565b60405180910390f35b3480156103ec57600080fd5b5061040760048036038101906104029190612f6e565b610c87565b005b34801561041557600080fd5b50610430600480360381019061042b9190612f6e565b610d0d565b005b34801561043e57600080fd5b5061045960048036038101906104549190613063565b610d93565b005b34801561046757600080fd5b50610482600480360381019061047d91906130e2565b610da3565b005b34801561049057600080fd5b50610499610e3c565b005b3480156104a757600080fd5b506104c260048036038101906104bd9190613063565b610f19565b005b3480156104d057600080fd5b506104eb60048036038101906104e69190613244565b610f39565b005b3480156104f957600080fd5b50610514600480360381019061050f9190612f6e565b610fc8565b6040516105219190612fdc565b60405180910390f35b34801561053657600080fd5b50610551600480360381019061054c919061328d565b610fde565b60405161055e9190612f27565b60405180910390f35b34801561057357600080fd5b5061057c6110ad565b005b34801561058a57600080fd5b50610593611135565b6040516105a09190612fdc565b60405180910390f35b3480156105b557600080fd5b506105be61115f565b6040516105cb9190612eec565b60405180910390f35b3480156105e057600080fd5b506105e96111f1565b6040516105f69190612f27565b60405180910390f35b34801561060b57600080fd5b506106146111f7565b6040516106219190612f27565b60405180910390f35b610644600480360381019061063f9190612f6e565b6111fd565b005b34801561065257600080fd5b5061066d60048036038101906106689190612f6e565b61148c565b005b34801561067b57600080fd5b50610696600480360381019061069191906132ba565b611512565b005b3480156106a457600080fd5b506106bf60048036038101906106ba919061339b565b611689565b005b3480156106cd57600080fd5b506106d6611705565b6040516106e39190612f27565b60405180910390f35b3480156106f857600080fd5b50610713600480360381019061070e9190612f6e565b61170b565b6040516107209190612eec565b60405180910390f35b34801561073557600080fd5b5061073e6117b2565b60405161074b9190612eec565b60405180910390f35b34801561076057600080fd5b50610769611840565b6040516107769190612f27565b60405180910390f35b34801561078b57600080fd5b506107a660048036038101906107a1919061341e565b611846565b6040516107b39190612e41565b60405180910390f35b3480156107c857600080fd5b506107e360048036038101906107de9190612f6e565b6118da565b005b3480156107f157600080fd5b5061080c6004803603810190610807919061328d565b6119fd565b005b34801561081a57600080fd5b5061083560048036038101906108309190612f6e565b611af4565b6040516108429190612f27565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061091657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610926575061092582611b83565b5b9050919050565b60606002805461093c9061348d565b80601f01602080910402602001604051908101604052809291908181526020018280546109689061348d565b80156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b5050505050905090565b600d5481565b60006109d082611bed565b610a06576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a4c82610fc8565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ab3576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ad2611c3b565b73ffffffffffffffffffffffffffffffffffffffff1614158015610b045750610b0281610afd611c3b565b611846565b155b15610b3b576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b46838383611c43565b505050565b610b53611c3b565b73ffffffffffffffffffffffffffffffffffffffff16610b71611135565b73ffffffffffffffffffffffffffffffffffffffff1614610bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbe9061350a565b60405180910390fd5b80600e8190555050565b6000610bdb611cf5565b6001546000540303905090565b610bf0611c3b565b73ffffffffffffffffffffffffffffffffffffffff16610c0e611135565b73ffffffffffffffffffffffffffffffffffffffff1614610c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5b9061350a565b60405180910390fd5b80600d8190555050565b60105481565b601160009054906101000a900460ff1681565b610c8f611c3b565b73ffffffffffffffffffffffffffffffffffffffff16610cad611135565b73ffffffffffffffffffffffffffffffffffffffff1614610d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfa9061350a565b60405180910390fd5b80600f8190555050565b610d15611c3b565b73ffffffffffffffffffffffffffffffffffffffff16610d33611135565b73ffffffffffffffffffffffffffffffffffffffff1614610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d809061350a565b60405180910390fd5b80600b8190555050565b610d9e838383611cfe565b505050565b610dab611c3b565b73ffffffffffffffffffffffffffffffffffffffff16610dc9611135565b73ffffffffffffffffffffffffffffffffffffffff1614610e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e169061350a565b60405180910390fd5b80601160006101000a81548160ff02191690831515021790555050565b610e44611c3b565b73ffffffffffffffffffffffffffffffffffffffff16610e62611135565b73ffffffffffffffffffffffffffffffffffffffff1614610eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaf9061350a565b60405180910390fd5b600260095403610efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef490613576565b60405180910390fd5b6002600981905550610f0f33476121b2565b6001600981905550565b610f3483838360405180602001604052806000815250611689565b505050565b610f41611c3b565b73ffffffffffffffffffffffffffffffffffffffff16610f5f611135565b73ffffffffffffffffffffffffffffffffffffffff1614610fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fac9061350a565b60405180910390fd5b80600a9081610fc49190613742565b5050565b6000610fd3826122a6565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611045576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b6110b5611c3b565b73ffffffffffffffffffffffffffffffffffffffff166110d3611135565b73ffffffffffffffffffffffffffffffffffffffff1614611129576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111209061350a565b60405180910390fd5b6111336000612535565b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606003805461116e9061348d565b80601f016020809104026020016040519081016040528092919081815260200182805461119a9061348d565b80156111e75780601f106111bc576101008083540402835291602001916111e7565b820191906000526020600020905b8154815290600101906020018083116111ca57829003601f168201915b5050505050905090565b600e5481565b600f5481565b6001600b5461120c9190613843565b81611215610bd1565b61121f9190613843565b1115611260576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611257906138c3565b60405180910390fd5b600061126b82611af4565b9050600073bb203155ac1385b7827d4c80becd73fd50fad99e9050600e54836010546112979190613843565b111561132c57348211156112e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d79061392f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611326573d6000803e3d6000fd5b5061147d565b600f548361133933610fde565b6113439190613843565b111561141d573482111561138c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113839061392f565b60405180910390fd5b600c548311156113d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c8906139c1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611417573d6000803e3d6000fd5b5061147c565b600f54831115611462576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611459906139c1565b60405180910390fd5b82601060008282546114749190613843565b925050819055505b5b61148733846125fb565b505050565b611494611c3b565b73ffffffffffffffffffffffffffffffffffffffff166114b2611135565b73ffffffffffffffffffffffffffffffffffffffff1614611508576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ff9061350a565b60405180910390fd5b80600c8190555050565b61151a611c3b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361157e576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806007600061158b611c3b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611638611c3b565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161167d9190612e41565b60405180910390a35050565b611694848484611cfe565b6116b38373ffffffffffffffffffffffffffffffffffffffff16612619565b80156116c857506116c68484848461263c565b155b156116ff576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b600c5481565b606061171682611bed565b611755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174c90613a53565b60405180910390fd5b600061175f61278c565b9050600081510361177f57604051806020016040528060008152506117aa565b806117898461281e565b60405160200161179a929190613aaf565b6040516020818303038152906040525b915050919050565b600a80546117bf9061348d565b80601f01602080910402602001604051908101604052809291908181526020018280546117eb9061348d565b80156118385780601f1061180d57610100808354040283529160200191611838565b820191906000526020600020905b81548152906001019060200180831161181b57829003601f168201915b505050505081565b600b5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6118e2611c3b565b73ffffffffffffffffffffffffffffffffffffffff16611900611135565b73ffffffffffffffffffffffffffffffffffffffff1614611956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194d9061350a565b60405180910390fd5b60008111611999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199090613b1f565b60405180910390fd5b600b54816119a5610bd1565b6119af9190613843565b11156119f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e790613b8b565b60405180910390fd5b6119fa33826125fb565b50565b611a05611c3b565b73ffffffffffffffffffffffffffffffffffffffff16611a23611135565b73ffffffffffffffffffffffffffffffffffffffff1614611a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a709061350a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adf90613c1d565b60405180910390fd5b611af181612535565b50565b600060c88203611b0e57670dbd2fc137a300009050611b7e565b605a8203611b265767011c37aac67ee8009050611b7e565b60468203611b3e5767011c37aac67ee8009050611b7e565b60148203611b555766654099581940009050611b7e565b60648203611b6d5767012fc1cc084bc0009050611b7e565b81600d54611b7b9190613c3d565b90505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081611bf8611cf5565b11158015611c07575060005482105b8015611c34575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006001905090565b6000611d09826122a6565b90508373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611d74576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff16611d95611c3b565b73ffffffffffffffffffffffffffffffffffffffff161480611dc45750611dc385611dbe611c3b565b611846565b5b80611e095750611dd2611c3b565b73ffffffffffffffffffffffffffffffffffffffff16611df1846109c5565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611e42576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611ea8576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611eb5858585600161297e565b611ec160008487611c43565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600460008581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060006001850190506000600460008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361214057600054821461213f57878160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084602001518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46121ab8585856001612984565b5050505050565b804710156121f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ec90613ccb565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161221b90613d1c565b60006040518083038185875af1925050503d8060008114612258576040519150601f19603f3d011682016040523d82523d6000602084013e61225d565b606091505b50509050806122a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229890613da3565b60405180910390fd5b505050565b6122ae612d4a565b6000829050806122bc611cf5565b111580156122cb575060005481105b156124fe576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff161515151581525050905080604001516124fc57600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146123e0578092505050612530565b5b6001156124fb57818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146124f6578092505050612530565b6123e1565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61261582826040518060200160405280600081525061298a565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612662611c3b565b8786866040518563ffffffff1660e01b81526004016126849493929190613e18565b6020604051808303816000875af19250505080156126c057506040513d601f19601f820116820180604052508101906126bd9190613e79565b60015b612739573d80600081146126f0576040519150601f19603f3d011682016040523d82523d6000602084013e6126f5565b606091505b506000815103612731576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600a805461279b9061348d565b80601f01602080910402602001604051908101604052809291908181526020018280546127c79061348d565b80156128145780601f106127e957610100808354040283529160200191612814565b820191906000526020600020905b8154815290600101906020018083116127f757829003601f168201915b5050505050905090565b606060008203612865576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612979565b600082905060005b6000821461289757808061288090613ea6565b915050600a826128909190613f1d565b915061286d565b60008167ffffffffffffffff8111156128b3576128b2613119565b5b6040519080825280601f01601f1916602001820160405280156128e55781602001600182028036833780820191505090505b5090505b60008514612972576001826128fe9190613f4e565b9150600a8561290d9190613f82565b60306129199190613843565b60f81b81838151811061292f5761292e613fb3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561296b9190613f1d565b94506128e9565b8093505050505b919050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036129f6576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008303612a30576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612a3d600085838661297e565b82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008482019050612bfe8673ffffffffffffffffffffffffffffffffffffffff16612619565b15612cc3575b818673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612c73600087848060010195508761263c565b612ca9576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808203612c04578260005414612cbe57600080fd5b612d2e565b5b818060010192508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808203612cc4575b816000819055505050612d446000858386612984565b50505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612dd681612da1565b8114612de157600080fd5b50565b600081359050612df381612dcd565b92915050565b600060208284031215612e0f57612e0e612d97565b5b6000612e1d84828501612de4565b91505092915050565b60008115159050919050565b612e3b81612e26565b82525050565b6000602082019050612e566000830184612e32565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e96578082015181840152602081019050612e7b565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ebe82612e5c565b612ec88185612e67565b9350612ed8818560208601612e78565b612ee181612ea2565b840191505092915050565b60006020820190508181036000830152612f068184612eb3565b905092915050565b6000819050919050565b612f2181612f0e565b82525050565b6000602082019050612f3c6000830184612f18565b92915050565b612f4b81612f0e565b8114612f5657600080fd5b50565b600081359050612f6881612f42565b92915050565b600060208284031215612f8457612f83612d97565b5b6000612f9284828501612f59565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612fc682612f9b565b9050919050565b612fd681612fbb565b82525050565b6000602082019050612ff16000830184612fcd565b92915050565b61300081612fbb565b811461300b57600080fd5b50565b60008135905061301d81612ff7565b92915050565b6000806040838503121561303a57613039612d97565b5b60006130488582860161300e565b925050602061305985828601612f59565b9150509250929050565b60008060006060848603121561307c5761307b612d97565b5b600061308a8682870161300e565b935050602061309b8682870161300e565b92505060406130ac86828701612f59565b9150509250925092565b6130bf81612e26565b81146130ca57600080fd5b50565b6000813590506130dc816130b6565b92915050565b6000602082840312156130f8576130f7612d97565b5b6000613106848285016130cd565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61315182612ea2565b810181811067ffffffffffffffff821117156131705761316f613119565b5b80604052505050565b6000613183612d8d565b905061318f8282613148565b919050565b600067ffffffffffffffff8211156131af576131ae613119565b5b6131b882612ea2565b9050602081019050919050565b82818337600083830152505050565b60006131e76131e284613194565b613179565b90508281526020810184848401111561320357613202613114565b5b61320e8482856131c5565b509392505050565b600082601f83011261322b5761322a61310f565b5b813561323b8482602086016131d4565b91505092915050565b60006020828403121561325a57613259612d97565b5b600082013567ffffffffffffffff81111561327857613277612d9c565b5b61328484828501613216565b91505092915050565b6000602082840312156132a3576132a2612d97565b5b60006132b18482850161300e565b91505092915050565b600080604083850312156132d1576132d0612d97565b5b60006132df8582860161300e565b92505060206132f0858286016130cd565b9150509250929050565b600067ffffffffffffffff82111561331557613314613119565b5b61331e82612ea2565b9050602081019050919050565b600061333e613339846132fa565b613179565b90508281526020810184848401111561335a57613359613114565b5b6133658482856131c5565b509392505050565b600082601f8301126133825761338161310f565b5b813561339284826020860161332b565b91505092915050565b600080600080608085870312156133b5576133b4612d97565b5b60006133c38782880161300e565b94505060206133d48782880161300e565b93505060406133e587828801612f59565b925050606085013567ffffffffffffffff81111561340657613405612d9c565b5b6134128782880161336d565b91505092959194509250565b6000806040838503121561343557613434612d97565b5b60006134438582860161300e565b92505060206134548582860161300e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806134a557607f821691505b6020821081036134b8576134b761345e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006134f4602083612e67565b91506134ff826134be565b602082019050919050565b60006020820190508181036000830152613523816134e7565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000613560601f83612e67565b915061356b8261352a565b602082019050919050565b6000602082019050818103600083015261358f81613553565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026135f87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826135bb565b61360286836135bb565b95508019841693508086168417925050509392505050565b6000819050919050565b600061363f61363a61363584612f0e565b61361a565b612f0e565b9050919050565b6000819050919050565b61365983613624565b61366d61366582613646565b8484546135c8565b825550505050565b600090565b613682613675565b61368d818484613650565b505050565b5b818110156136b1576136a660008261367a565b600181019050613693565b5050565b601f8211156136f6576136c781613596565b6136d0846135ab565b810160208510156136df578190505b6136f36136eb856135ab565b830182613692565b50505b505050565b600082821c905092915050565b6000613719600019846008026136fb565b1980831691505092915050565b60006137328383613708565b9150826002028217905092915050565b61374b82612e5c565b67ffffffffffffffff81111561376457613763613119565b5b61376e825461348d565b6137798282856136b5565b600060209050601f8311600181146137ac576000841561379a578287015190505b6137a48582613726565b86555061380c565b601f1984166137ba86613596565b60005b828110156137e2578489015182556001820191506020850194506020810190506137bd565b868310156137ff57848901516137fb601f891682613708565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061384e82612f0e565b915061385983612f0e565b925082820190508082111561387157613870613814565b5b92915050565b7f4e6f206d6f726500000000000000000000000000000000000000000000000000600082015250565b60006138ad600783612e67565b91506138b882613877565b602082019050919050565b600060208201905081810360008301526138dc816138a0565b9050919050565b7f496e636f7272656374204554482076616c75652073656e740000000000000000600082015250565b6000613919601883612e67565b9150613924826138e3565b602082019050919050565b600060208201905081810360008301526139488161390c565b9050919050565b7f4d6178206d696e747320706572207472616e73616374696f6e2065786365656460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b60006139ab602283612e67565b91506139b68261394f565b604082019050919050565b600060208201905081810360008301526139da8161399e565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613a3d602f83612e67565b9150613a48826139e1565b604082019050919050565b60006020820190508181036000830152613a6c81613a30565b9050919050565b600081905092915050565b6000613a8982612e5c565b613a938185613a73565b9350613aa3818560208601612e78565b80840191505092915050565b6000613abb8285613a7e565b9150613ac78284613a7e565b91508190509392505050565b7f496e76616c6964206d696e7420616d6f756e7400000000000000000000000000600082015250565b6000613b09601383612e67565b9150613b1482613ad3565b602082019050919050565b60006020820190508181036000830152613b3881613afc565b9050919050565b7f4d6178696d756d20737570706c79206578636565646564000000000000000000600082015250565b6000613b75601783612e67565b9150613b8082613b3f565b602082019050919050565b60006020820190508181036000830152613ba481613b68565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c07602683612e67565b9150613c1282613bab565b604082019050919050565b60006020820190508181036000830152613c3681613bfa565b9050919050565b6000613c4882612f0e565b9150613c5383612f0e565b9250828202613c6181612f0e565b91508282048414831517613c7857613c77613814565b5b5092915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613cb5601d83612e67565b9150613cc082613c7f565b602082019050919050565b60006020820190508181036000830152613ce481613ca8565b9050919050565b600081905092915050565b50565b6000613d06600083613ceb565b9150613d1182613cf6565b600082019050919050565b6000613d2782613cf9565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000613d8d603a83612e67565b9150613d9882613d31565b604082019050919050565b60006020820190508181036000830152613dbc81613d80565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613dea82613dc3565b613df48185613dce565b9350613e04818560208601612e78565b613e0d81612ea2565b840191505092915050565b6000608082019050613e2d6000830187612fcd565b613e3a6020830186612fcd565b613e476040830185612f18565b8181036060830152613e598184613ddf565b905095945050505050565b600081519050613e7381612dcd565b92915050565b600060208284031215613e8f57613e8e612d97565b5b6000613e9d84828501613e64565b91505092915050565b6000613eb182612f0e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613ee357613ee2613814565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f2882612f0e565b9150613f3383612f0e565b925082613f4357613f42613eee565b5b828204905092915050565b6000613f5982612f0e565b9150613f6483612f0e565b9250828203905081811115613f7c57613f7b613814565b5b92915050565b6000613f8d82612f0e565b9150613f9883612f0e565b925082613fa857613fa7613eee565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220af49b2e41db8125b1ca6b155f32d32d8a62167d37360c87befa0e657d65a2c0264736f6c6343000811003368747470733a2f2f696e76697369626c65667269656e64732e696f2f6170692f6d657461646174612f33642f