60806040526834957444b840e800006000196200001d919062000ad5565b6000196200002c919062000b3c565b6007556000600955601e600a556000600b55602d600c55600b54600d55600c54600e55600d54600f55600e5460105573f9240b24042a0280a49479f7df388b5ed94c6292601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739369412e13de65c7ad71253ee994faff286a23d2601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601660156101000a81548160ff02191690831515021790555060016016806101000a81548160ff0219169083151502179055506200017860646200016460646834957444b840e800006200092d60201b62001afc1790919060201c565b620009b160201b62001b771790919060201c565b601755620001b96064620001a560036834957444b840e800006200092d60201b62001afc1790919060201c565b620009b160201b62001b771790919060201c565b601855620001fb6103e8620001e760016834957444b840e800006200092d60201b62001afc1790919060201c565b620009b160201b62001b771790919060201c565b6019553480156200020b57600080fd5b5060006200021e62000a0360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060075460026000620002d362000a0360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003b257600080fd5b505afa158015620003c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ed919062000be1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200045057600080fd5b505afa15801562000465573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200048b919062000be1565b6040518363ffffffff1660e01b8152600401620004aa92919062000c24565b602060405180830381600087803b158015620004c557600080fd5b505af1158015620004da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000500919062000be1565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200055662000a0b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660006200070962000a0b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620008b662000a0360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6834957444b840e800006040516200091e919062000c62565b60405180910390a35062000e78565b600080831415620009425760009050620009ab565b6000828462000952919062000c7f565b905082848262000963919062000ce0565b14620009a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200099d9062000d9f565b60405180910390fd5b809150505b92915050565b6000620009fb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000a3460201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000a7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a75919062000e54565b60405180910390fd5b506000838562000a8f919062000ce0565b9050809150509392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ae28262000a9c565b915062000aef8362000a9c565b92508262000b025762000b0162000aa6565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b498262000a9c565b915062000b568362000a9c565b92508282101562000b6c5762000b6b62000b0d565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ba98262000b7c565b9050919050565b62000bbb8162000b9c565b811462000bc757600080fd5b50565b60008151905062000bdb8162000bb0565b92915050565b60006020828403121562000bfa5762000bf962000b77565b5b600062000c0a8482850162000bca565b91505092915050565b62000c1e8162000b9c565b82525050565b600060408201905062000c3b600083018562000c13565b62000c4a602083018462000c13565b9392505050565b62000c5c8162000a9c565b82525050565b600060208201905062000c79600083018462000c51565b92915050565b600062000c8c8262000a9c565b915062000c998362000a9c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000cd55762000cd462000b0d565b5b828202905092915050565b600062000ced8262000a9c565b915062000cfa8362000a9c565b92508262000d0d5762000d0c62000aa6565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062000d8760218362000d18565b915062000d948262000d29565b604082019050919050565b6000602082019050818103600083015262000dba8162000d78565b9050919050565b600081519050919050565b60005b8381101562000dec57808201518184015260208101905062000dcf565b8381111562000dfc576000848401525b50505050565b6000601f19601f8301169050919050565b600062000e208262000dc1565b62000e2c818562000d18565b935062000e3e81856020860162000dcc565b62000e498162000e02565b840191505092915050565b6000602082019050818103600083015262000e70818462000e13565b905092915050565b61462a8062000e886000396000f3fe6080604052600436106101f15760003560e01c806374010ece1161010d57806398a5c315116100a0578063c3c8cd801161006f578063c3c8cd80146106bd578063c492f046146106d4578063dd62ed3e146106fd578063ea1644d51461073a578063f2fde38b14610763576101f8565b806398a5c315146105f1578063a2a957bb1461061a578063a9059cbb14610643578063bfd7928414610680576101f8565b80638da5cb5b116100dc5780638da5cb5b146105475780638f70ccf7146105725780638f9a55c01461059b57806395d89b41146105c6576101f8565b806374010ece1461049f578063751039fc146104c85780637d1db4a5146104df5780637f2feddc1461050a576101f8565b80633654c531116101855780636d8aa8f8116101545780636d8aa8f81461040b5780636fc3eaec1461043457806370a082311461044b578063715018a614610488576101f8565b80633654c5311461037757806341c6ee381461038e57806349bd5a5e146103b75780636b999053146103e2576101f8565b806318160ddd116101c157806318160ddd146102b957806323b872dd146102e45780632fd689e314610321578063313ce5671461034c576101f8565b8062b8cf2a146101fd57806306fdde0314610226578063095ea7b3146102515780631694505e1461028e576101f8565b366101f857005b600080fd5b34801561020957600080fd5b50610224600480360381019061021f919061336e565b61078c565b005b34801561023257600080fd5b5061023b6108b6565b604051610248919061343f565b60405180910390f35b34801561025d57600080fd5b5061027860048036038101906102739190613497565b6108f3565b60405161028591906134f2565b60405180910390f35b34801561029a57600080fd5b506102a3610911565b6040516102b0919061356c565b60405180910390f35b3480156102c557600080fd5b506102ce610937565b6040516102db9190613596565b60405180910390f35b3480156102f057600080fd5b5061030b600480360381019061030691906135b1565b610948565b60405161031891906134f2565b60405180910390f35b34801561032d57600080fd5b50610336610a21565b6040516103439190613596565b60405180910390f35b34801561035857600080fd5b50610361610a27565b60405161036e9190613620565b60405180910390f35b34801561038357600080fd5b5061038c610a30565b005b34801561039a57600080fd5b506103b560048036038101906103b091906136c2565b610ac7565b005b3480156103c357600080fd5b506103cc610c01565b6040516103d99190613731565b60405180910390f35b3480156103ee57600080fd5b506104096004803603810190610404919061374c565b610c27565b005b34801561041757600080fd5b50610432600480360381019061042d9190613779565b610d17565b005b34801561044057600080fd5b50610449610dc8565b005b34801561045757600080fd5b50610472600480360381019061046d919061374c565b610e99565b60405161047f9190613596565b60405180910390f35b34801561049457600080fd5b5061049d610eea565b005b3480156104ab57600080fd5b506104c660048036038101906104c191906137a6565b61103d565b005b3480156104d457600080fd5b506104dd611109565b005b3480156104eb57600080fd5b506104f46111c0565b6040516105019190613596565b60405180910390f35b34801561051657600080fd5b50610531600480360381019061052c919061374c565b6111c6565b60405161053e9190613596565b60405180910390f35b34801561055357600080fd5b5061055c6111de565b6040516105699190613731565b60405180910390f35b34801561057e57600080fd5b5061059960048036038101906105949190613779565b611207565b005b3480156105a757600080fd5b506105b06112b9565b6040516105bd9190613596565b60405180910390f35b3480156105d257600080fd5b506105db6112bf565b6040516105e8919061343f565b60405180910390f35b3480156105fd57600080fd5b50610618600480360381019061061391906137a6565b6112fc565b005b34801561062657600080fd5b50610641600480360381019061063c91906137d3565b61139b565b005b34801561064f57600080fd5b5061066a60048036038101906106659190613497565b611596565b60405161067791906134f2565b60405180910390f35b34801561068c57600080fd5b506106a760048036038101906106a2919061374c565b6115b4565b6040516106b491906134f2565b60405180910390f35b3480156106c957600080fd5b506106d26115d4565b005b3480156106e057600080fd5b506106fb60048036038101906106f691906136c2565b6116ad565b005b34801561070957600080fd5b50610724600480360381019061071f919061383a565b6117e7565b6040516107319190613596565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c91906137a6565b61186e565b005b34801561076f57600080fd5b5061078a6004803603810190610785919061374c565b61193a565b005b610794611bc1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610821576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610818906138c6565b60405180910390fd5b60005b81518110156108b257600160116000848481518110610846576108456138e6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108aa90613944565b915050610824565b5050565b60606040518060400160405280600a81526020017f4144414d20262045544800000000000000000000000000000000000000000000815250905090565b6000610907610900611bc1565b8484611bc9565b6001905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006834957444b840e80000905090565b6000610955848484611d94565b610a1684610961611bc1565b610a11856040518060600160405280602881526020016145cd60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109c7611bc1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c39092919063ffffffff16565b611bc9565b600190509392505050565b60195481565b60006009905090565b610a38611bc1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abc906138c6565b60405180910390fd5b565b610acf611bc1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b53906138c6565b60405180910390fd5b60005b83839050811015610bfb578160066000868685818110610b8257610b816138e6565b5b9050602002016020810190610b97919061374c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610bf390613944565b915050610b5f565b50505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c2f611bc1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb3906138c6565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610d1f611bc1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da3906138c6565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e09611bc1565b73ffffffffffffffffffffffffffffffffffffffff161480610e7f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e67611bc1565b73ffffffffffffffffffffffffffffffffffffffff16145b610e8857600080fd5b6000479050610e9681612727565b50565b6000610ee3600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612848565b9050919050565b610ef2611bc1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f76906138c6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611045611bc1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c9906138c6565b60405180910390fd5b600081116110df57600080fd5b6064816834957444b840e800006110f6919061398d565b6111009190613a16565b60178190555050565b611111611bc1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461119e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611195906138c6565b60405180910390fd5b6834957444b840e800006017819055506834957444b840e80000601881905550565b60175481565b60126020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61120f611bc1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461129c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611293906138c6565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60185481565b60606040518060400160405280600781526020017f4144414d45544800000000000000000000000000000000000000000000000000815250905090565b611304611bc1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611391576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611388906138c6565b60405180910390fd5b8060198190555050565b6113a3611bc1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611430576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611427906138c6565b60405180910390fd5b60008410158015611442575060008411155b611481576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147890613ab9565b60405180910390fd5b60008210158015611493575060638211155b6114d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c990613b4b565b60405180910390fd5b600083101580156114e4575060008311155b611523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151a90613bdd565b60405180910390fd5b60008110158015611535575060638111155b611574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156b90613c6f565b60405180910390fd5b8360098190555082600b8190555081600a8190555080600c8190555050505050565b60006115aa6115a3611bc1565b8484611d94565b6001905092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611615611bc1565b73ffffffffffffffffffffffffffffffffffffffff16148061168b5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611673611bc1565b73ffffffffffffffffffffffffffffffffffffffff16145b61169457600080fd5b600061169f30610e99565b90506116aa816128b6565b50565b6116b5611bc1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611742576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611739906138c6565b60405180910390fd5b60005b838390508110156117e1578160056000868685818110611768576117676138e6565b5b905060200201602081019061177d919061374c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806117d990613944565b915050611745565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611876611bc1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa906138c6565b60405180910390fd5b6000811161191057600080fd5b6064816834957444b840e80000611927919061398d565b6119319190613a16565b60188190555050565b611942611bc1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c6906138c6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3690613d01565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080831415611b0f5760009050611b71565b60008284611b1d919061398d565b9050828482611b2c9190613a16565b14611b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6390613d93565b60405180910390fd5b809150505b92915050565b6000611bb983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b3e565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3090613e25565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca090613eb7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d879190613596565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfb90613f49565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6b90613fdb565b60405180910390fd5b60008111611eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eae9061406d565b60405180910390fd5b611ebf6111de565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f2d5750611efd6111de565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156123c257601660149054906101000a900460ff16611fbc57611f4e6111de565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb2906140ff565b60405180910390fd5b5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661205357601754811115612052576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120499061416b565b60405180910390fd5b5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120f75750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212d906141fd565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156121de5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561223b57601854816121f084610e99565b6121fa919061421d565b1061223a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612231906142e5565b60405180910390fd5b5b600061224630610e99565b90506000601954821015905060175482106122615760175491505b80801561227b5750601660159054906101000a900460ff16155b80156122d55750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156122eb575060168054906101000a900460ff165b80156123415750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123975750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123bf576123a5826128b6565b600047905060008111156123bd576123bc47612727565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124695750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061251c5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561251b5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561252a57600090506126b1565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156125d55750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156125ed57600954600d81905550600a54600e819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156126985750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156126b057600b54600d81905550600c54600e819055505b5b6126bd84848484612ba1565b50505050565b600083831115829061270b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612702919061343f565b60405180910390fd5b506000838561271a9190614305565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61278a600561277c600486611afc90919063ffffffff16565b611b7790919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156127b5573d6000803e3d6000fd5b50601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612819600561280b600186611afc90919063ffffffff16565b611b7790919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612844573d6000803e3d6000fd5b5050565b600060075482111561288f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612886906143ab565b60405180910390fd5b6000612899612bce565b90506128ae8184611b7790919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156128ee576128ed6131cd565b5b60405190808252806020026020018201604052801561291c5781602001602082028036833780820191505090505b5090503081600081518110612934576129336138e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156129d657600080fd5b505afa1580156129ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0e91906143e0565b81600181518110612a2257612a216138e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a8930601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bc9565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612aed959493929190614506565b600060405180830381600087803b158015612b0757600080fd5b505af1158015612b1b573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b60008083118290612b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7c919061343f565b60405180910390fd5b5060008385612b949190613a16565b9050809150509392505050565b80612baf57612bae612bf9565b5b612bba848484612c3c565b80612bc857612bc7612e07565b5b50505050565b6000806000612bdb612e1b565b91509150612bf28183611b7790919063ffffffff16565b9250505090565b6000600d54148015612c0d57506000600e54145b15612c1757612c3a565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b600080600080600080612c4e87612e7d565b955095509550955095509550612cac86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ee590919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d4185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f2f90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d8d81612f8d565b612d97848361304a565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612df49190613596565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b6000806000600754905060006834957444b840e800009050612e516834957444b840e80000600754611b7790919063ffffffff16565b821015612e70576007546834957444b840e80000935093505050612e79565b81819350935050505b9091565b6000806000806000806000806000612e9a8a600d54600e54613084565b9250925092506000612eaa612bce565b90506000806000612ebd8e87878761311a565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612f2783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506126c3565b905092915050565b6000808284612f3e919061421d565b905083811015612f83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7a906145ac565b60405180910390fd5b8091505092915050565b6000612f97612bce565b90506000612fae8284611afc90919063ffffffff16565b905061300281600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f2f90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61305f82600754612ee590919063ffffffff16565b60078190555061307a81600854612f2f90919063ffffffff16565b6008819055505050565b6000806000806130b060646130a2888a611afc90919063ffffffff16565b611b7790919063ffffffff16565b905060006130da60646130cc888b611afc90919063ffffffff16565b611b7790919063ffffffff16565b90506000613103826130f5858c612ee590919063ffffffff16565b612ee590919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806131338589611afc90919063ffffffff16565b9050600061314a8689611afc90919063ffffffff16565b905060006131618789611afc90919063ffffffff16565b9050600061318a8261317c8587612ee590919063ffffffff16565b612ee590919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613205826131bc565b810181811067ffffffffffffffff82111715613224576132236131cd565b5b80604052505050565b60006132376131a3565b905061324382826131fc565b919050565b600067ffffffffffffffff821115613263576132626131cd565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132a482613279565b9050919050565b6132b481613299565b81146132bf57600080fd5b50565b6000813590506132d1816132ab565b92915050565b60006132ea6132e584613248565b61322d565b9050808382526020820190506020840283018581111561330d5761330c613274565b5b835b81811015613336578061332288826132c2565b84526020840193505060208101905061330f565b5050509392505050565b600082601f830112613355576133546131b7565b5b81356133658482602086016132d7565b91505092915050565b600060208284031215613384576133836131ad565b5b600082013567ffffffffffffffff8111156133a2576133a16131b2565b5b6133ae84828501613340565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133f15780820151818401526020810190506133d6565b83811115613400576000848401525b50505050565b6000613411826133b7565b61341b81856133c2565b935061342b8185602086016133d3565b613434816131bc565b840191505092915050565b600060208201905081810360008301526134598184613406565b905092915050565b6000819050919050565b61347481613461565b811461347f57600080fd5b50565b6000813590506134918161346b565b92915050565b600080604083850312156134ae576134ad6131ad565b5b60006134bc858286016132c2565b92505060206134cd85828601613482565b9150509250929050565b60008115159050919050565b6134ec816134d7565b82525050565b600060208201905061350760008301846134e3565b92915050565b6000819050919050565b600061353261352d61352884613279565b61350d565b613279565b9050919050565b600061354482613517565b9050919050565b600061355682613539565b9050919050565b6135668161354b565b82525050565b6000602082019050613581600083018461355d565b92915050565b61359081613461565b82525050565b60006020820190506135ab6000830184613587565b92915050565b6000806000606084860312156135ca576135c96131ad565b5b60006135d8868287016132c2565b93505060206135e9868287016132c2565b92505060406135fa86828701613482565b9150509250925092565b600060ff82169050919050565b61361a81613604565b82525050565b60006020820190506136356000830184613611565b92915050565b600080fd5b60008083601f840112613656576136556131b7565b5b8235905067ffffffffffffffff8111156136735761367261363b565b5b60208301915083602082028301111561368f5761368e613274565b5b9250929050565b61369f816134d7565b81146136aa57600080fd5b50565b6000813590506136bc81613696565b92915050565b6000806000604084860312156136db576136da6131ad565b5b600084013567ffffffffffffffff8111156136f9576136f86131b2565b5b61370586828701613640565b93509350506020613718868287016136ad565b9150509250925092565b61372b81613299565b82525050565b60006020820190506137466000830184613722565b92915050565b600060208284031215613762576137616131ad565b5b6000613770848285016132c2565b91505092915050565b60006020828403121561378f5761378e6131ad565b5b600061379d848285016136ad565b91505092915050565b6000602082840312156137bc576137bb6131ad565b5b60006137ca84828501613482565b91505092915050565b600080600080608085870312156137ed576137ec6131ad565b5b60006137fb87828801613482565b945050602061380c87828801613482565b935050604061381d87828801613482565b925050606061382e87828801613482565b91505092959194509250565b60008060408385031215613851576138506131ad565b5b600061385f858286016132c2565b9250506020613870858286016132c2565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138b06020836133c2565b91506138bb8261387a565b602082019050919050565b600060208201905081810360008301526138df816138a3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061394f82613461565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561398257613981613915565b5b600182019050919050565b600061399882613461565b91506139a383613461565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139dc576139db613915565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a2182613461565b9150613a2c83613461565b925082613a3c57613a3b6139e7565b5b828204905092915050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203025000000000000000000000000000000000000000000000000000000602082015250565b6000613aa36025836133c2565b9150613aae82613a47565b604082019050919050565b60006020820190508181036000830152613ad281613a96565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203960008201527f3925000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b356022836133c2565b9150613b4082613ad9565b604082019050919050565b60006020820190508181036000830152613b6481613b28565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642030250000000000000000000000000000000000000000000000000000602082015250565b6000613bc76026836133c2565b9150613bd282613b6b565b604082019050919050565b60006020820190508181036000830152613bf681613bba565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3939250000000000000000000000000000000000000000000000000000000000602082015250565b6000613c596023836133c2565b9150613c6482613bfd565b604082019050919050565b60006020820190508181036000830152613c8881613c4c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ceb6026836133c2565b9150613cf682613c8f565b604082019050919050565b60006020820190508181036000830152613d1a81613cde565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d7d6021836133c2565b9150613d8882613d21565b604082019050919050565b60006020820190508181036000830152613dac81613d70565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613e0f6024836133c2565b9150613e1a82613db3565b604082019050919050565b60006020820190508181036000830152613e3e81613e02565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ea16022836133c2565b9150613eac82613e45565b604082019050919050565b60006020820190508181036000830152613ed081613e94565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613f336025836133c2565b9150613f3e82613ed7565b604082019050919050565b60006020820190508181036000830152613f6281613f26565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613fc56023836133c2565b9150613fd082613f69565b604082019050919050565b60006020820190508181036000830152613ff481613fb8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006140576029836133c2565b915061406282613ffb565b604082019050919050565b600060208201905081810360008301526140868161404a565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006140e9603f836133c2565b91506140f48261408d565b604082019050919050565b60006020820190508181036000830152614118816140dc565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000614155601c836133c2565b91506141608261411f565b602082019050919050565b6000602082019050818103600083015261418481614148565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006141e76023836133c2565b91506141f28261418b565b604082019050919050565b60006020820190508181036000830152614216816141da565b9050919050565b600061422882613461565b915061423383613461565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561426857614267613915565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006142cf6023836133c2565b91506142da82614273565b604082019050919050565b600060208201905081810360008301526142fe816142c2565b9050919050565b600061431082613461565b915061431b83613461565b92508282101561432e5761432d613915565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000614395602a836133c2565b91506143a082614339565b604082019050919050565b600060208201905081810360008301526143c481614388565b9050919050565b6000815190506143da816132ab565b92915050565b6000602082840312156143f6576143f56131ad565b5b6000614404848285016143cb565b91505092915050565b6000819050919050565b600061443261442d6144288461440d565b61350d565b613461565b9050919050565b61444281614417565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61447d81613299565b82525050565b600061448f8383614474565b60208301905092915050565b6000602082019050919050565b60006144b382614448565b6144bd8185614453565b93506144c883614464565b8060005b838110156144f95781516144e08882614483565b97506144eb8361449b565b9250506001810190506144cc565b5085935050505092915050565b600060a08201905061451b6000830188613587565b6145286020830187614439565b818103604083015261453a81866144a8565b90506145496060830185613722565b6145566080830184613587565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614596601b836133c2565b91506145a182614560565b602082019050919050565b600060208201905081810360008301526145c581614589565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122005ddc699a7975d256e5c2a039bd735f0e60bb98015b1600e432b251275ff91ef64736f6c63430008090033