60806040523480156200001157600080fd5b506040518060400160405280601b81526020017f4d4d4f2050726f706f73616c20313520576869746520506170657200000000008152506040518060400160405280600581526020017f4d4d4f313500000000000000000000000000000000000000000000000000000081525081600090816200008f9190620006e4565b508060019081620000a19190620006e4565b505050604051620000b2906200045c565b604051809103906000f080158015620000cf573d6000803e3d6000fd5b50600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860006105b3815260200190815260200160002060006101000a81548160ff021916908315150217905550620001e67341d3d86a84c8507a7bc14f2491ec4d188fa944e773ffffffffffffffffffffffffffffffffffffffff16636352211e6105b36040518263ffffffff1660e01b81526004016200019391906200080e565b602060405180830381865afa158015620001b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d7919062000895565b6006546200020660201b60201c565b60066000815480929190620001fb90620008f6565b919050555062000a73565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000278576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200026f90620009a4565b60405180910390fd5b6200028981620003eb60201b60201c565b15620002cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002c39062000a16565b60405180910390fd5b620002e0600083836200045760201b60201c565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000332919062000a38565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b61163c806200320c83390190565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004ec57607f821691505b602082108103620005025762000501620004a4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200056c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200052d565b6200057886836200052d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005c5620005bf620005b98462000590565b6200059a565b62000590565b9050919050565b6000819050919050565b620005e183620005a4565b620005f9620005f082620005cc565b8484546200053a565b825550505050565b600090565b6200061062000601565b6200061d818484620005d6565b505050565b5b8181101562000645576200063960008262000606565b60018101905062000623565b5050565b601f82111562000694576200065e8162000508565b62000669846200051d565b8101602085101562000679578190505b6200069162000688856200051d565b83018262000622565b50505b505050565b600082821c905092915050565b6000620006b96000198460080262000699565b1980831691505092915050565b6000620006d48383620006a6565b9150826002028217905092915050565b620006ef826200046a565b67ffffffffffffffff8111156200070b576200070a62000475565b5b620007178254620004d3565b6200072482828562000649565b600060209050601f8311600181146200075c576000841562000747578287015190505b620007538582620006c6565b865550620007c3565b601f1984166200076c8662000508565b60005b8281101562000796578489015182556001820191506020850194506020810190506200076f565b86831015620007b65784890151620007b2601f891682620006a6565b8355505b6001600288020188555050505b505050505050565b6000819050919050565b6000620007f6620007f0620007ea84620007cb565b6200059a565b62000590565b9050919050565b6200080881620007d5565b82525050565b6000602082019050620008256000830184620007fd565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200085d8262000830565b9050919050565b6200086f8162000850565b81146200087b57600080fd5b50565b6000815190506200088f8162000864565b92915050565b600060208284031215620008ae57620008ad6200082b565b5b6000620008be848285016200087e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620009038262000590565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620009385762000937620008c7565b5b600182019050919050565b600082825260208201905092915050565b7f4d696e7420746f20746865207a65726f20616464726573730000000000000000600082015250565b60006200098c60188362000943565b9150620009998262000954565b602082019050919050565b60006020820190508181036000830152620009bf816200097d565b9050919050565b7f416c7265616479206d696e746564000000000000000000000000000000000000600082015250565b6000620009fe600e8362000943565b915062000a0b82620009c6565b602082019050919050565b6000602082019050818103600083015262000a3181620009ef565b9050919050565b600062000a458262000590565b915062000a528362000590565b925082820190508082111562000a6d5762000a6c620008c7565b5b92915050565b6127898062000a836000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063698f87be116100ad578063a22cb46511610071578063a22cb46514610357578063b88d4fde14610373578063c87b56dd1461038f578063e5c40545146103bf578063e985e9c5146103db5761012c565b8063698f87be146102b157806370a08231146102cf57806395d89b41146102ff578063a0712d681461031d578063a0740cf7146103395761012c565b806318160ddd116100f457806318160ddd146101fb57806323b872dd1461021957806342842e0e146102355780634f558e79146102515780636352211e146102815761012c565b806301ffc9a71461013157806306fdde0314610161578063081812fc1461017f578063095ea7b3146101af57806310652ee0146101cb575b600080fd5b61014b6004803603810190610146919061183b565b61040b565b6040516101589190611883565b60405180910390f35b6101696104ed565b604051610176919061192e565b60405180910390f35b61019960048036038101906101949190611986565b61057f565b6040516101a691906119f4565b60405180910390f35b6101c960048036038101906101c49190611a3b565b610604565b005b6101e560048036038101906101e09190611986565b6106ad565b6040516101f29190611883565b60405180910390f35b6102036106cd565b6040516102109190611a8a565b60405180910390f35b610233600480360381019061022e9190611aa5565b6106d3565b005b61024f600480360381019061024a9190611aa5565b610733565b005b61026b60048036038101906102669190611986565b610753565b6040516102789190611883565b60405180910390f35b61029b60048036038101906102969190611986565b610765565b6040516102a891906119f4565b60405180910390f35b6102b9610816565b6040516102c69190611b57565b60405180910390f35b6102e960048036038101906102e49190611b72565b61083c565b6040516102f69190611a8a565b60405180910390f35b610307610885565b604051610314919061192e565b60405180910390f35b61033760048036038101906103329190611986565b610917565b005b610341610ba3565b60405161034e9190611bc0565b60405180910390f35b610371600480360381019061036c9190611c07565b610bbb565b005b61038d60048036038101906103889190611d7c565b610cc6565b005b6103a960048036038101906103a49190611986565b610d28565b6040516103b6919061192e565b60405180910390f35b6103d960048036038101906103d49190611b72565b610dd2565b005b6103f560048036038101906103f09190611dff565b610f12565b6040516104029190611883565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104d657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104e657506104e582610fa6565b5b9050919050565b6060600080546104fc90611e6e565b80601f016020809104026020016040519081016040528092919081815260200182805461052890611e6e565b80156105755780601f1061054a57610100808354040283529160200191610575565b820191906000526020600020905b81548152906001019060200180831161055857829003601f168201915b5050505050905090565b600061058a82611010565b6105c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c090611eeb565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061060f82610765565b90508073ffffffffffffffffffffffffffffffffffffffff1661063061107c565b73ffffffffffffffffffffffffffffffffffffffff16148061065f575061065e8161065961107c565b610f12565b5b61069e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069590611f57565b60405180910390fd5b6106a88383611084565b505050565b60086020528060005260406000206000915054906101000a900460ff1681565b60065481565b6106e46106de61107c565b8261113d565b610723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071a90611fc3565b60405180910390fd5b61072e83838361121b565b505050565b61074e83838360405180602001604052806000815250610cc6565b505050565b600061075e82611010565b9050919050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361080d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080490611eeb565b60405180910390fd5b80915050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606001805461089490611e6e565b80601f01602080910402602001604051908101604052809291908181526020018280546108c090611e6e565b801561090d5780601f106108e25761010080835404028352916020019161090d565b820191906000526020600020905b8154815290600101906020018083116108f057829003601f168201915b5050505050905090565b600015156008600083815260200190815260200160002060009054906101000a900460ff1615151461097e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109759061202f565b60405180910390fd5b600115157341d3d86a84c8507a7bc14f2491ec4d188fa944e773ffffffffffffffffffffffffffffffffffffffff1663c6e36a3283600f6040518363ffffffff1660e01b81526004016109d292919061208a565b602060405180830381865afa1580156109ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1391906120c8565b151514610a55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4c90612167565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167341d3d86a84c8507a7bc14f2491ec4d188fa944e773ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401610ab99190611a8a565b602060405180830381865afa158015610ad6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afa919061219c565b73ffffffffffffffffffffffffffffffffffffffff1614610b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4790612215565b60405180910390fd5b60016008600083815260200190815260200160002060006101000a81548160ff021916908315150217905550610b8833600654611407565b60066000815480929190610b9b90612264565b919050555050565b7341d3d86a84c8507a7bc14f2491ec4d188fa944e781565b8060056000610bc861107c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610c7561107c565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610cba9190611883565b60405180910390a35050565b610cd7610cd161107c565b8361113d565b610d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0d90611fc3565b60405180910390fd5b610d22848484846115d4565b50505050565b6060600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c87b56dd836040518263ffffffff1660e01b8152600401610d859190611a8a565b600060405180830381865afa158015610da2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610dcb919061234d565b9050919050565b7341d3d86a84c8507a7bc14f2491ec4d188fa944e773ffffffffffffffffffffffffffffffffffffffff16636352211e60006040518263ffffffff1660e01b8152600401610e2091906123d1565b602060405180830381865afa158015610e3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e61919061219c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec590612438565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166110f783610765565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061114882611010565b611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117e90611eeb565b60405180910390fd5b600061119283610765565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061120157508373ffffffffffffffffffffffffffffffffffffffff166111e98461057f565b73ffffffffffffffffffffffffffffffffffffffff16145b8061121257506112118185610f12565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661123b82610765565b73ffffffffffffffffffffffffffffffffffffffff1614611291576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611288906124a4565b60405180910390fd5b61129c838383611630565b6112a7600082611084565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112f791906124c4565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461134e91906124f8565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146d90612578565b60405180910390fd5b61147f81611010565b156114bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b6906125e4565b60405180910390fd5b6114cb60008383611630565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461151b91906124f8565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6115df84848461121b565b6115eb84848484611635565b61162a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162190612650565b60405180910390fd5b50505050565b505050565b60006116568473ffffffffffffffffffffffffffffffffffffffff166117bc565b156117af578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261167f61107c565b8786866040518563ffffffff1660e01b81526004016116a194939291906126c5565b6020604051808303816000875af19250505080156116dd57506040513d601f19601f820116820180604052508101906116da9190612726565b60015b61175f573d806000811461170d576040519150601f19603f3d011682016040523d82523d6000602084013e611712565b606091505b506000815103611757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174e90612650565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506117b4565b600190505b949350505050565b600080823b905060008111915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611818816117e3565b811461182357600080fd5b50565b6000813590506118358161180f565b92915050565b600060208284031215611851576118506117d9565b5b600061185f84828501611826565b91505092915050565b60008115159050919050565b61187d81611868565b82525050565b60006020820190506118986000830184611874565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156118d85780820151818401526020810190506118bd565b60008484015250505050565b6000601f19601f8301169050919050565b60006119008261189e565b61190a81856118a9565b935061191a8185602086016118ba565b611923816118e4565b840191505092915050565b6000602082019050818103600083015261194881846118f5565b905092915050565b6000819050919050565b61196381611950565b811461196e57600080fd5b50565b6000813590506119808161195a565b92915050565b60006020828403121561199c5761199b6117d9565b5b60006119aa84828501611971565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006119de826119b3565b9050919050565b6119ee816119d3565b82525050565b6000602082019050611a0960008301846119e5565b92915050565b611a18816119d3565b8114611a2357600080fd5b50565b600081359050611a3581611a0f565b92915050565b60008060408385031215611a5257611a516117d9565b5b6000611a6085828601611a26565b9250506020611a7185828601611971565b9150509250929050565b611a8481611950565b82525050565b6000602082019050611a9f6000830184611a7b565b92915050565b600080600060608486031215611abe57611abd6117d9565b5b6000611acc86828701611a26565b9350506020611add86828701611a26565b9250506040611aee86828701611971565b9150509250925092565b6000819050919050565b6000611b1d611b18611b13846119b3565b611af8565b6119b3565b9050919050565b6000611b2f82611b02565b9050919050565b6000611b4182611b24565b9050919050565b611b5181611b36565b82525050565b6000602082019050611b6c6000830184611b48565b92915050565b600060208284031215611b8857611b876117d9565b5b6000611b9684828501611a26565b91505092915050565b6000611baa82611b24565b9050919050565b611bba81611b9f565b82525050565b6000602082019050611bd56000830184611bb1565b92915050565b611be481611868565b8114611bef57600080fd5b50565b600081359050611c0181611bdb565b92915050565b60008060408385031215611c1e57611c1d6117d9565b5b6000611c2c85828601611a26565b9250506020611c3d85828601611bf2565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611c89826118e4565b810181811067ffffffffffffffff82111715611ca857611ca7611c51565b5b80604052505050565b6000611cbb6117cf565b9050611cc78282611c80565b919050565b600067ffffffffffffffff821115611ce757611ce6611c51565b5b611cf0826118e4565b9050602081019050919050565b82818337600083830152505050565b6000611d1f611d1a84611ccc565b611cb1565b905082815260208101848484011115611d3b57611d3a611c4c565b5b611d46848285611cfd565b509392505050565b600082601f830112611d6357611d62611c47565b5b8135611d73848260208601611d0c565b91505092915050565b60008060008060808587031215611d9657611d956117d9565b5b6000611da487828801611a26565b9450506020611db587828801611a26565b9350506040611dc687828801611971565b925050606085013567ffffffffffffffff811115611de757611de66117de565b5b611df387828801611d4e565b91505092959194509250565b60008060408385031215611e1657611e156117d9565b5b6000611e2485828601611a26565b9250506020611e3585828601611a26565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611e8657607f821691505b602082108103611e9957611e98611e3f565b5b50919050565b7f4e6f6e6578697374656e74000000000000000000000000000000000000000000600082015250565b6000611ed5600b836118a9565b9150611ee082611e9f565b602082019050919050565b60006020820190508181036000830152611f0481611ec8565b9050919050565b7f43616c6c6572206973206e6f7420617070726f76656420666f7220616c6c0000600082015250565b6000611f41601e836118a9565b9150611f4c82611f0b565b602082019050919050565b60006020820190508181036000830152611f7081611f34565b9050919050565b7f43616c6c6572206973206e6f7420617070726f76656400000000000000000000600082015250565b6000611fad6016836118a9565b9150611fb882611f77565b602082019050919050565b60006020820190508181036000830152611fdc81611fa0565b9050919050565b7f4d4d4f20746f6b656e2068617320616c7265616479206265656e207573656400600082015250565b6000612019601f836118a9565b915061202482611fe3565b602082019050919050565b600060208201905081810360008301526120488161200c565b9050919050565b6000819050919050565b600061207461206f61206a8461204f565b611af8565b611950565b9050919050565b61208481612059565b82525050565b600060408201905061209f6000830185611a7b565b6120ac602083018461207b565b9392505050565b6000815190506120c281611bdb565b92915050565b6000602082840312156120de576120dd6117d9565b5b60006120ec848285016120b3565b91505092915050565b7f4d4d4f20746f6b656e20646964206e6f7420766f74652079617920666f72205060008201527f726f703135000000000000000000000000000000000000000000000000000000602082015250565b60006121516025836118a9565b915061215c826120f5565b604082019050919050565b6000602082019050818103600083015261218081612144565b9050919050565b60008151905061219681611a0f565b92915050565b6000602082840312156121b2576121b16117d9565b5b60006121c084828501612187565b91505092915050565b7f5369676e657220646f6573206e6f74206f776e204d4d4f20746f6b656e000000600082015250565b60006121ff601d836118a9565b915061220a826121c9565b602082019050919050565b6000602082019050818103600083015261222e816121f2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061226f82611950565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036122a1576122a0612235565b5b600182019050919050565b600067ffffffffffffffff8211156122c7576122c6611c51565b5b6122d0826118e4565b9050602081019050919050565b60006122f06122eb846122ac565b611cb1565b90508281526020810184848401111561230c5761230b611c4c565b5b6123178482856118ba565b509392505050565b600082601f83011261233457612333611c47565b5b81516123448482602086016122dd565b91505092915050565b600060208284031215612363576123626117d9565b5b600082015167ffffffffffffffff811115612381576123806117de565b5b61238d8482850161231f565b91505092915050565b6000819050919050565b60006123bb6123b66123b184612396565b611af8565b611950565b9050919050565b6123cb816123a0565b82525050565b60006020820190506123e660008301846123c2565b92915050565b7f43616e6e6f742075706461746500000000000000000000000000000000000000600082015250565b6000612422600d836118a9565b915061242d826123ec565b602082019050919050565b6000602082019050818103600083015261245181612415565b9050919050565b7f5472616e73666572206e6f74206f776e00000000000000000000000000000000600082015250565b600061248e6010836118a9565b915061249982612458565b602082019050919050565b600060208201905081810360008301526124bd81612481565b9050919050565b60006124cf82611950565b91506124da83611950565b92508282039050818111156124f2576124f1612235565b5b92915050565b600061250382611950565b915061250e83611950565b925082820190508082111561252657612525612235565b5b92915050565b7f4d696e7420746f20746865207a65726f20616464726573730000000000000000600082015250565b60006125626018836118a9565b915061256d8261252c565b602082019050919050565b6000602082019050818103600083015261259181612555565b9050919050565b7f416c7265616479206d696e746564000000000000000000000000000000000000600082015250565b60006125ce600e836118a9565b91506125d982612598565b602082019050919050565b600060208201905081810360008301526125fd816125c1565b9050919050565b7f5472616e7366657220746f206e6f6e20696d706c656d656e7465720000000000600082015250565b600061263a601b836118a9565b915061264582612604565b602082019050919050565b600060208201905081810360008301526126698161262d565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061269782612670565b6126a1818561267b565b93506126b18185602086016118ba565b6126ba816118e4565b840191505092915050565b60006080820190506126da60008301876119e5565b6126e760208301866119e5565b6126f46040830185611a7b565b8181036060830152612706818461268c565b905095945050505050565b6000815190506127208161180f565b92915050565b60006020828403121561273c5761273b6117d9565b5b600061274a84828501612711565b9150509291505056fea2646970667358221220b0e79125c2402edbb1f730cc062b15dc1090dc5d18df138f1f411e2e00504e9264736f6c6343000811003360806040526040518060800160405280604d8152602001620015ef604d9139600090816200002e9190620002bd565b503480156200003c57600080fd5b50620003a4565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620000c557607f821691505b602082108103620000db57620000da6200007d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000106565b62000151868362000106565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200019e62000198620001928462000169565b62000173565b62000169565b9050919050565b6000819050919050565b620001ba836200017d565b620001d2620001c982620001a5565b84845462000113565b825550505050565b600090565b620001e9620001da565b620001f6818484620001af565b505050565b5b818110156200021e5762000212600082620001df565b600181019050620001fc565b5050565b601f8211156200026d576200023781620000e1565b6200024284620000f6565b8101602085101562000252578190505b6200026a6200026185620000f6565b830182620001fb565b50505b505050565b600082821c905092915050565b6000620002926000198460080262000272565b1980831691505092915050565b6000620002ad83836200027f565b9150826002028217905092915050565b620002c88262000043565b67ffffffffffffffff811115620002e457620002e36200004e565b5b620002f08254620000ac565b620002fd82828562000222565b600060209050601f83116001811462000335576000841562000320578287015190505b6200032c85826200029f565b8655506200039c565b601f1984166200034586620000e1565b60005b828110156200036f5784890151825560018201915060208501945060208101905062000348565b868310156200038f57848901516200038b601f8916826200027f565b8355505b6001600288020188555050505b505050505050565b61123b80620003b46000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80638d77c3ff1461005c578063a0740cf71461007a578063b92cab2114610098578063c87b56dd146100b6578063ecef6580146100e6575b600080fd5b610064610102565b60405161007191906103d8565b60405180910390f35b610082610121565b60405161008f9190610479565b60405180910390f35b6100a0610139565b6040516100ad91906103d8565b60405180910390f35b6100d060048036038101906100cb91906104de565b6101c7565b6040516100dd91906103d8565b60405180910390f35b61010060048036038101906100fb9190610640565b610239565b005b60405180610260016040528061023c8152602001610fca61023c913981565b7341d3d86a84c8507a7bc14f2491ec4d188fa944e781565b60008054610146906106b8565b80601f0160208091040260200160405190810160405280929190818152602001828054610172906106b8565b80156101bf5780601f10610194576101008083540402835291602001916101bf565b820191906000526020600020905b8154815290600101906020018083116101a257829003601f168201915b505050505081565b6060600060405180610260016040528061023c8152602001610fca61023c91396040516020016101f791906107e3565b6040516020818303038152906040529050600081600060405160200161021e929190610bc1565b60405160208183030381529060405290508092505050919050565b7341d3d86a84c8507a7bc14f2491ec4d188fa944e773ffffffffffffffffffffffffffffffffffffffff16636352211e60006040518263ffffffff1660e01b81526004016102879190610c78565b602060405180830381865afa1580156102a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c89190610cd1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161032c90610d4a565b60405180910390fd5b80600090816103449190610ef7565b5050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610382578082015181840152602081019050610367565b60008484015250505050565b6000601f19601f8301169050919050565b60006103aa82610348565b6103b48185610353565b93506103c4818560208601610364565b6103cd8161038e565b840191505092915050565b600060208201905081810360008301526103f2818461039f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061043f61043a610435846103fa565b61041a565b6103fa565b9050919050565b600061045182610424565b9050919050565b600061046382610446565b9050919050565b61047381610458565b82525050565b600060208201905061048e600083018461046a565b92915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6104bb816104a8565b81146104c657600080fd5b50565b6000813590506104d8816104b2565b92915050565b6000602082840312156104f4576104f361049e565b5b6000610502848285016104c9565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61054d8261038e565b810181811067ffffffffffffffff8211171561056c5761056b610515565b5b80604052505050565b600061057f610494565b905061058b8282610544565b919050565b600067ffffffffffffffff8211156105ab576105aa610515565b5b6105b48261038e565b9050602081019050919050565b82818337600083830152505050565b60006105e36105de84610590565b610575565b9050828152602081018484840111156105ff576105fe610510565b5b61060a8482856105c1565b509392505050565b600082601f8301126106275761062661050b565b5b81356106378482602086016105d0565b91505092915050565b6000602082840312156106565761065561049e565b5b600082013567ffffffffffffffff811115610674576106736104a3565b5b61068084828501610612565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806106d057607f821691505b6020821081036106e3576106e2610689565b5b50919050565b600081905092915050565b7f22696d616765223a2022646174613a696d6167652f7376672b786d6c3b62617360008201527f6536342c00000000000000000000000000000000000000000000000000000000602082015250565b60006107506024836106e9565b915061075b826106f4565b602482019050919050565b600061077182610348565b61077b81856106e9565b935061078b818560208601610364565b80840191505092915050565b7f222c000000000000000000000000000000000000000000000000000000000000600082015250565b60006107cd6002836106e9565b91506107d882610797565b600282019050919050565b60006107ee82610743565b91506107fa8284610766565b9150610805826107c0565b915081905092915050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b757466382c0000000000600082015250565b6000610846601b836106e9565b915061085182610810565b601b82019050919050565b7f7b226e616d65223a20224d4d4f2050726f706f73616c2031352057686974652060008201527f5061706572222c00000000000000000000000000000000000000000000000000602082015250565b60006108b86027836106e9565b91506108c38261085c565b602782019050919050565b7f2273796d626f6c223a20224d4d4f3135222c0000000000000000000000000000600082015250565b60006109046012836106e9565b915061090f826108ce565b601282019050919050565b7f226465736372697074696f6e223a20225468652057686974652050617065722060008201527f666f72204d6f6e6579204d616b696e67204f70706f7274756e6974792050726f60208201527f706f73616c20233135222c000000000000000000000000000000000000000000604082015250565b600061099c604b836106e9565b91506109a78261091a565b604b82019050919050565b600081519050919050565b600081905092915050565b60006109d3826109b2565b6109dd81856109bd565b93506109ed818560208601610364565b80840191505092915050565b7f226c6963656e7365223a2022434330222c22616e696d6174696f6e5f75726c2260008201527f3a20220000000000000000000000000000000000000000000000000000000000602082015250565b6000610a556023836106e9565b9150610a60826109f9565b602382019050919050565b60008190508160005260206000209050919050565b60008154610a8d816106b8565b610a9781866106e9565b94506001821660008114610ab25760018114610ac757610afa565b60ff1983168652811515820286019350610afa565b610ad085610a6b565b60005b83811015610af257815481890152600182019150602081019050610ad3565b838801955050505b50505092915050565b7f2265787465726e616c5f75726c223a202268747470733a2f2f7374657669657060008201527f2e78797a2f6d6f6e65796d616b696e676f70706f7274756e6974792f31352200602082015250565b6000610b5f603f836106e9565b9150610b6a82610b03565b603f82019050919050565b7f7d00000000000000000000000000000000000000000000000000000000000000600082015250565b6000610bab6001836106e9565b9150610bb682610b75565b600182019050919050565b6000610bcc82610839565b9150610bd7826108ab565b9150610be2826108f7565b9150610bed8261098f565b9150610bf982856109c8565b9150610c0482610a48565b9150610c108284610a80565b9150610c1b826107c0565b9150610c2682610b52565b9150610c3182610b9e565b91508190509392505050565b6000819050919050565b6000610c62610c5d610c5884610c3d565b61041a565b6104a8565b9050919050565b610c7281610c47565b82525050565b6000602082019050610c8d6000830184610c69565b92915050565b6000610c9e826103fa565b9050919050565b610cae81610c93565b8114610cb957600080fd5b50565b600081519050610ccb81610ca5565b92915050565b600060208284031215610ce757610ce661049e565b5b6000610cf584828501610cbc565b91505092915050565b7f43616e6e6f742075706461746500000000000000000000000000000000000000600082015250565b6000610d34600d83610353565b9150610d3f82610cfe565b602082019050919050565b60006020820190508181036000830152610d6381610d27565b9050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302610db77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610d7a565b610dc18683610d7a565b95508019841693508086168417925050509392505050565b6000610df4610def610dea846104a8565b61041a565b6104a8565b9050919050565b6000819050919050565b610e0e83610dd9565b610e22610e1a82610dfb565b848454610d87565b825550505050565b600090565b610e37610e2a565b610e42818484610e05565b505050565b5b81811015610e6657610e5b600082610e2f565b600181019050610e48565b5050565b601f821115610eab57610e7c81610a6b565b610e8584610d6a565b81016020851015610e94578190505b610ea8610ea085610d6a565b830182610e47565b50505b505050565b600082821c905092915050565b6000610ece60001984600802610eb0565b1980831691505092915050565b6000610ee78383610ebd565b9150826002028217905092915050565b610f0082610348565b67ffffffffffffffff811115610f1957610f18610515565b5b610f2382546106b8565b610f2e828285610e6a565b600060209050601f831160018114610f615760008415610f4f578287015190505b610f598582610edb565b865550610fc1565b601f198416610f6f86610a6b565b60005b82811015610f9757848901518255600182019150602085019450602081019050610f72565b86831015610fb45784890151610fb0601f891682610ebd565b8355505b6001600288020188555050505b50505050505056fe50484e325a79423261575633516d393450534977494441674f445577494445784d444169494868746247357a50534a6f644852774f693876643364334c6e637a4c6d39795a7938794d4441774c334e325a79492b50484e306557786c506e526c654852375a6d3975644470696232786b4944557763486767633246756379317a5a584a705a6a746d615778734f694d774d4441376447563464433168626d4e6f62334936494731705a4752735a5830384c334e306557786c506a78795a574e30494864705a48526f505349344e5441694947686c6157646f644430694d5445774d434967654430694d434967655430694d4349675a6d6c736244306949325a6d5a694967633352796232746c50534a756232356c496a34384c334a6c5933512b50484a6c59335167654430694d54557749694235505349784e544169494864705a48526f505349314e5441694947686c6157646f644430694f4441774969427a64486c735a5430695a6d6c73624470756232356c4f334e30636d39725a546f6a4d4441774f334e30636d39725a5331336157523061446f334c6a56776543492b504339795a574e30506a78305a58683049486739496a51794e534967655430694d7a4931496a3551556b395149444531504339305a586830506a78305a58683049486739496a51794e534967655430694e545577496a355853456c555254777664475634644434386447563464434234505349304d6a556949486b39496a63334e53492b55454651525649384c33526c6548512b5043397a646d632ba26469706673582212209d7076532923280984bff2fb678d0f7fa1b20f511439fa9ec93e303efb41bb5c64736f6c63430008110033697066733a2f2f62616679626569623376756635767568656c6f7a3273676a7478743333796a34327165737537666a76717a3470737464787868796c75377a7a69342f696e6465782e68746d6c