ZGlmZiAtLWdpdCBhL1RPRE8gYi9UT0RPCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NGIzY2NlLi4wMDAwMDAwCi0tLSBhL1RPRE8KKysrIC9kZXYvbnVsbApAQCAtMSwxODEgKzAsMCBAQAotKiB4LWZvcndhcmRlZC1mb3IKLSogaW1wbOltZW50ZXIgbCdvcHRpb24gImxvZyBnbG9iYWwiIGF1IG5pdmVhdSBwcm94eSBwb3VyIHV0aWxpc2VyIGxlcyBsb2dzCi0gIGdsb2JhdXguCi0qIG1hdGNoaW5nIGNhc2UtaW5zZW5zaXRpdmUKLSogaW1wbOltZW50ZXIgb3V0Z29pbmcgYWRkcgotKiBsb2d1ZXIgdF9jbngsIHRfZGF0YSwgdF90b3RhbAotKyBmYWN0b3Jpc2VyIGxhIGZvbmN0aW9uIGRlIGxvZyAoc2VuZF9sb2cgPSBzZW5kX3N5c2xvZyt3YXJuaW5nK2FsZXJ0KQotKyBk6XNhY3RpdmF0aW9uIGR1IGtlZXAtYWxpdmUgKHN1cHByZXNzaW9uIGRlcyBeQ29ubmVjdGlvbjogZXQgYWpvdXQgZGVzIENvbm5lY3Rpb246IGNsb3NlKQotICAtPiA0IGxpZ25lcyAoMiBkZWwsIDIgYWRkKSBzdWZmaXNlbnQuCi0rIG5lIHBhcyBsb2d1ZXIgY2VydGFpbmVzIGFkcmVzc2VzIElQIHNvdXJjZXMKLSAgLT4gcG91ciBsZXMgaGVhbHRoLWNoZWNrcyB1bmlxdWVtZW50IC0+IHBhcyBkZSBsb2cgcG91ciBsZXMgcmVxdep0ZXMKLSAgICAgdmlkZXMgKG9wdGlvbiBkb250bG9nbnVsbCkKLS0gbWVzdXJlciBsZSB0cHMgY29uc29tbekgZW50cmUgZGV1eCBzZWxlY3QsIGV0IGZvdXJuaXIgbGEgY29uc28gQ1BVIDoKLSAgJWNwdSA9IDEwMCAqICh0cHJlc2VsZWN0KG4rMSktdHBvc3RzZWxlY3QobikpIC8gKHRwcmVzZWxlY3QobisxKS10cHJlc2VsZWN0KG4pKQotKiBpbXBs6W1lbnRlciBsaW1pdGF0aW9uIGZkIGRhbnMgbGEgY29uZiA6IHNldHJsaW1pdChSTElNSVRfTk9GSUxFLCAuLi4pCi0tIGltcGzpbWVudGVyIGNvcmUvbm8tY29yZSBkYW5zIGxhIGNvbmYgOiBzZXRybGltaXQoUkxJTUlUX0NPUkUsIC4uLikKLS0gb3B0aW1pc2VyIGxlcyByZWdleCBwb3VyIGFjY+ls6XJlciBsZXMgbWF0Y2hlcyA6Ci0gIC0gY29tcHRlciBsZXMgbWF0Y2hlcwotICAtIHNpIG1hdGNoKG4pICYgKFtuXS5jcHQgPiBbbi0xXS5jcHQpICYgKFtuXS5hY3Rpb24gPT0gW24tMV0uYWN0aW9uKSwgc3dhcChuLG4tMSkKLSAgLSBy6Wd1bGnocmVtZW50LCBkaXZpc2VyIHRvdXMgbGVzIGNvbXB0ZXVycyAobG9ycyBkJ3VuIGTpcGFzc2VtZW50IHBhciBleGVtcGxlKQotLSBmaWx0cmFnZSBzdXIgbCdhZHJlc3NlIElQIHNvdXJjZSwgZXQgc3RvY2tlciBsZSBwb2ludGV1ciBzdXIgbGEgZGVybmnocmUgcmVnZXgKLSAgbWF0Y2jpZSBkYW5zIGxhICJzZXNzaW9uIiBwb3VyIGFjY+ls6XJlciBsZXMgcmVnZXguCi0tIGdlc3Rpb24ga2VlcC1hbGl2ZQotCi0rIGhhbmRsZSBwYXJhbWV0cmFibGUgSFRUUCBoZWFsdGgtY2hlY2tzIHJlcGxpZXMKLS0gZGlmZmVyZW50aWF0ZSBodHRwIGhlYWRlcnMgYW5kIGh0dHAgdXJpcwotLSBzdXBwb3J0IGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiBjb25maWcgZmlsZQotLSBzdXBwb3J0IGtlZXAtYWxpdmUKLS0gc3VwcG9ydCBTU0wKLQotPT09PT09PT09PT09PT09PT09PT09IGRlbWFuZGVzID09PT09PT09PT09PT09PT09PT09PT09PT09Ci1vaz4gMSkg6WNvdXRlIHN1ciB1bmUgcGxhZ2UgZGUgcG9ydHMgOgotb2s+ICAgbGlzdGVuIFhYWCAxLjIuMy40OjIxMDAwLTIxMDYwCi1vaz4gCi1vaz4gMikg6WNvdXRlcyBtdWx0aXBsZXMgOgotb2s+ICAgbGlzdGVuIFhYWCAxLjIuMy40OjIxMDAwCi1vaz4gICBiaW5kIDIuMy40LjU6MjEwMDEKLW9rPiAgIGJpbmQgMi4zLjQuNToyMTAwMC0yMTA2MAotb2s+IAotb2s+ID0+IG9uIGVuIGFycml2ZSDgIGNlY2kgOgotb2s+IAotb2s+IGxpc3RlbiBYWFggWyBhZGRyZXNzOnBvcnQgXQotb2s+ICAgIGJpbmQgYWRkcjpwbGFnZS1wb3J0WyxbYWRkcjpdcGxhZ2UtcG9ydF0qCi1vaz4gICAgYmluZCAuLi4KLW9rPiAgICAuLi4KLW9rPiAKLW9rPiAgICA9PiBwcm94eS0+bGlzdGVuX2ZkIGV0IHByb3h5LT5saXN0ZW5fYWRkciBkb2l2ZW50IOp0cmUKLW9rPiAJICBtaXMgZGFucyBkZXMgbGlzdGVzCi1vaz4gICAgPT4gT0sgcG91ciBsaXN0ZW4sIGltcGzpbWVudGVyIGxlIEJJTkQuCi1vaz4gCi1vaz4gMykgcmVjb25uZXhpb24gc3VyIGxlIG3qbWUgcG9ydCBzdXIgbGUgc2VydmV1ciA6Ci1vaz4gCi1vaz4gICAgc2VydmVyIFhYWCAxLjIuMy40Wzpwb3J0XQotb2s+ICAgIHNpIDxwb3J0PiBuJ2VzdCBwYXMgc3DpY2lmaeksIG9uIHV0aWxpc2UgbGUgbeptZSBwb3J0IHF1ZSBjZWx1aSBxdWkgYSByZed1Ci1vaz4gICAgbGEgY29ubmV4aW9uLiBEYW5zIGNlIGNhcywgaWwgZmF1dCBwb3V2b2lyIGZvcmNlciBsZSBwb3J0IGR1IGhlYWx0aC1jaGVjawotb2s+ICAgIHBhciB1biBub3V2ZWF1IHBhcmFtZXRyZSAicG9ydCIuCi1vaz4gCi1vaz4gPT4g52EgcGVybWV0IGxlcyBmb3J3YXJkaW5ncyBkZSBwbGFnZXMgOgotb2s+IAotb2s+IGxpc3RlbiBYWFgKLW9rPiAgICBiaW5kIDEuMi4zLjQ6MTAwMDAtMTEwMDAKLW9rPiAgICBzZXJ2ZXIgMS4yLjMuNQotb2s+IAotNCkgcGFyYW3odHJlcyBwYXIgZOlmYXV0IDoKLSAgIGNy6WVyIHVuZSBzZWN0aW9uICJkZWZhdWx0cyIgcXVpIHBy6WNpc2UgbGVzIHBhcmFt6HRyZXMgcGFyIGTpZmF1dCBwb3VyIGxlcwotICAgc2VjdGlvbnMgc3VpdmFudGVzLCBjb25jZXJuYW50IGxlcyBwYXJhbeh0cmVzIHN1aXZhbnRzIDoKLSAgICAgb2stIGxlcyBsb2dzCi0gICAgIG9rLSBsZXMgbW9kZXMgKHRjcC9odHRwKQotICAgICBvay0gbGUgYmFsYW5jaW5nIChyb3VuZC1yb2Jpbi9zb3VyY2UpCi0gICAgIG9rLSBsZXMgdGltZS1vdXRzCi0gICAgIG9rLSBtYXhjb25uCi0gICAgIG9rLSByZWRpc3AKLSAgICAgb2stIGxlcyBvcHRpb25zCi0gICAgIG9rLSBsZSByZXRyeQotICAgICBvay0gbGVzIGNoZWNrcwotICAgICBvay0gbGVzIGNvb2tpZXMvY2FwdHVyZXMKLSAgICAgICAtIGxlcyBvcHRpb25zIGRlcyBzZXJ2ZXVycyA/Ci0gICAgICAgLSBsZXMgZmlsdHJlcyBldCByZWdleCA/Ci0KLSogIGltcGzpbWVudGVyICJiYWxhbmNlIHNvdXJjZSIgcG91ciBmYWlyZSB1biBoYXNoIHN1ciBsYSBzb3VyY2UuCi0gICBwZXJtZXR0cmUgZGUgc3DpY2lmaWVyIHVuIG1hc3F1ZSBzdXIgbGVxdWVsIHMnYXBwbGlxdWUgbGUgaGFjaGFnZSwKLSAgIGFpbnNpIHF1J3VuZSBvcHRpb24gcG91ciBoYWNoZXIgZW4gZm9uY3Rpb24gZGUgbCdhZHJlc3NlIGRhbnMgbGUKLSAgIGNoYW1wICJ4LWZvcndhcmRlZC1mb3IiLiBQcm9ibOhtZSBwb3VyIGxlIHN1cHBvcnQgZGVzIHBhbm5lczogY2UKLSAgIHR5cGUgZGUgaGFzaCBlc3QgdXRpbGUgbOAgb/kgbGEgcGVyc2lzdGVuY2UgcGFyIGNvb2tpZSBuZSBwZXV0IHBhcwotICAgcydhcHBsaXF1ZXIsIGRvbmMgY29tbWVudCBmYWlyZSBwb3VyIGFzc3VyZXIgdW4gbWF4aW11bSBkZSBwZXJzaXN0ZW5jZQotICAgZW4gY2FzIGRlIHBhbm5lID8KLQotNikgcG9zc2liaWxpdOkgZCd1biBwcm9jZXNzIHPpcGFy6SBwYXIgbGlzdGVuIDoKLSAgIGxpc3RlbiBYWFgKLSAgICAgIGZvcmsgWyBncm91cF9pZCBdCi0KLSAgIGxlIGZhaXQgZGUgc3DpY2lmaWVyIGdyb3VwX2lkIGZlcmEgcXVlIHRvdXRlcyBsZXMgaW5zdGFuY2VzIHV0aWxpc2FudCBsZQotICAgbeptZSBpZGVudGlmaWFudCBkZSBncm91cGUgc2Vyb250IGfpcullcyBwYXIgdW4gbeptZSBwcm9jZXNzdXMuCi0KLSAgIC0+IHBsdXMgc291cGxlIGV0IHBsdXMgY29tcHLpaGVuc2libGUgZGUgZmFpcmUgZGVzIHNlY3Rpb25zIHBhciBwcm9jZXNzdXMsCi0gICAgICBjZSBxdWkgculzb3VkIOlnYWxlbWVudCBsZSBjYXMgY2ktZGVzc291cy4gRXg6Ci0gICBwcm9jZXNzX2dyb3VwIFgKLSAgICAgIG5icHJvYyBYCi0gICAgICB1aWQgWAotICAgICAgY2hyb290IFgKLSAgICAgIGxpc3RlbiAuLi4KLQotNykgZ+lyZXIgdW4gY2hyb290L3VpZC9naWQgZGlmZulyZW50cyBwYXIgcHJvY2VzcyA6Ci0gICBsaXN0ZW4gWFhYCi0gICAgICBjaHJvb3QgL3RydWMKLSAgICAgIHVpZCAxMjMKLSAgICAgIGdpZCA0NTYKLQotOCkgYmVhdWNvdXAgZGUgcGFyYW3odHJlcyBwb3VycmFpZW50IOp0cmUgc3DpY2lmaXF1ZXMgYXV4IHNlcnZldXJzIGV0IG5vbgotICAgYXV4IGluc3RhbmNlcy4gRXhlbXBsZXMgOgotICAgKiBhZHJlc3NlIElQIHNvdXJjZSBwb3VyIGF0dGVpbmRyZSBsZSBzZXJ2ZXVyCi0gICAtIG3pdGhvZGUgZGUgaGVhbHRoLWNoZWNrIChwcm90bywgLi4uKQotICAgKiBt6XRob2RlIGRlIGhlYWx0aC1jaGVjayAocG9ydCkKLSAgIC0gcG9pZHMKLSAgIC0gYWxlcnRlIGVuIGNhcyBkZSBkaXNwYXJpdGlvbgotICAgLSBsZSBub21icmUgbWF4IGRlIHNlc3Npb25zIOAgbHVpIGVudm95ZXIKLQotb2s+IDkpIGFqb3V0ZXIgZGVzIHBhcmFt6HRyZXMgb3B0aW9ubmVscyDgIGwnb3B0aW9uICJodHRwY2hrIiBwZXJtZXR0YW50Ci1vaz4gICAgZGUgZm9yY2VyIGxhIG3pdGhvZGUsIGxhIHZlcnNpb24gSFRUUCBldCBkZXMgaGVhZGVycy4KLW9rPiAgICBleDogb3B0aW9uIGh0dHBjaGsgICAgICAgIC0+IE9QVElPTlMgLyBIVFRQLzEuMAotb2s+IAkgICBvcHRpb24gaHR0cGNoayAvdGVzdCAgLT4gT1BUSU9OUyAvdGVzdCBIVFRQLzEuMAotb2s+IAkgICBvcHRpb24gaHR0cGNoayBIRUFEIC8gSFRUUC8xLjBcbkhvc3Q6XCB3d3cgICAtPiB0ZWwgcXVlbAotCi1Ub2RvIGZvciAxLjEKLT09PT09PT09PT09PQotKiAibm8gbW9yZSBzZXJ2ZXIiIGFsZXJ0Ci0qIGNvbmZpZyBjaGVjawotLSBhbnRpLWZsYXBwaW5nCi0KLVRvZG8gZm9yIDEuMgotPT09PT09PT09PT09Ci0tIGRpcmVjdCA8c2VydmVyPiA8cmVnZXg+IDxtYXRjaD4KLS0gbmV3IGNvbmZpZyBzeW50YXggYWxsb3dpbmcgYnJhY2VzIHRvIGJlIGFibGUgdG8gc2hvcnRlbiBsaW5lcwotLSBpbnNlcnQvbGVhcm4vY2hlY2svbG9nIHVuaXF1ZSByZXF1ZXN0IElELCBhbmQgYWRkIHRoZSBhYmlsaXR5Ci0gIHRvIGJsb2NrIGJhZCByZXNwb25zZXMuCi0tIElQdjYgOgotKiBsaXN0ZW4gW2lwNC5pcDQuaXA0LmlwNF06cG9ydFstcG9ydF0KLSogbGlzdGVuIFtpcDY6Oi4uLmlwNl0vcG9ydFstcG9ydF0KLS0gc2VydmVyIHh4eCBpcHY0IHwgaXB2NDogfCBpcHY0OnBvcnRbLXBvcnRdIHwgaXB2Ni8gfCBpcHY2L3BvcnRbLXBvcnRdCi0qIGFwcGNvb2tpZQotKiB3ZWlnaHRlZCByb3VuZCByb2JpbgotLSBvcHRpb24gdG8gc2h1dGRvd24obGlzdGVuX3NvY2spIHdoZW4gbWF4IGNvbm5lY3Rpb25zIHJlYWNoZWQKLSogZXBvbGwKLS0gcmVwbGFjZSB0aGUgZXZlbnQgc2NoZWR1bGVyIHdpdGggYW4gTyhsb2coTikpIG9uZS4gVGhlIHRpbWVyIHF1ZXVlIHdpbGwKLSAgbmVlZCBhIHRyZWUgd2l0aCBhIGtub3duIGVuZCAodG8gc3BlZWQgdXAgcXVldWVpbmcgb2YgbGF0ZXN0IGV2ZW50cyksIGFuZAotICBubyBlbnRyeSBmb3IgZXRlcm5pdHkuCi0tIHJlZmluZSBtZW1vcnkgbWFuYWdlbWVudCBzbyB0aGF0IHRoZSByZXF1ZXN0IGJ1ZmZlciBpcyBvbmx5IGFsbG9jYXRlZCBpbgotICBjbGlfcmVhZCgpIGFuZCByZXNwb25zZSBidWZmZXIgZHVyaW5nIHNydl9yZWFkKCkuIFRoaXMgd291bGQgcHJvdGVjdCBhZ2FpbnN0Ci0gIGF0dGFja3Mgd2l0aCB0aG91c2FuZHMgY29ubmVjdGlvbnMgOiAyMDAwMCBjb25uZWN0aW9ucyBjb25zdW1lIDM0MCBNQiBSU1MgYW5kCi0gIDEuMyBHQiBWU1ogb24gTGludXguIERhdGEgc2hvdWxkIGJlIGluIGEgc2VwYXJhdGUgYnVmZmVyIHRvIHByZXZlbnQgYW55Ci0gIGFjdGl2aXR5IG9uIHRoZSBidWZmZXIncyBwb2ludGVycyBmcm9tIHRvdWNoaW5nIHRoZSBidWZmZXIgcGFnZSBpdHNlbGYuCi0tIG1ha2UgYnVmZmVyIHNpemUgY29uZmlndXJhYmxlIGluIGdsb2JhbCBvcHRpb25zCi0qIG1vbml0b3IgbnVtYmVyIG9mIHNpbXVsdGFuZW91cyBzZXNzaW9ucyBpbiBsb2dzIChwZXIgc3J2L2luc3QvZ2xvYmFsKQotKiBpZ25vcmUgbGVhZGluZyBlbXB0eSBsaW5lcyBpbiBIVFRQIHJlcXVlc3RzCi0rIGxpbWl0IHRoZSBwZXItc2VydmVyIG51bWJlciBvZiBzZXNzaW9ucyBhbmQgcXVldWUgaW5jb21pbmcgY29ubmVjdGlvbnMKLSAgPT4gc3RpbGwgbmVlZHMgcmVmaW5lbWVudCAoYWN0aW9ucyBhdCBzZXJ2ZXJzIFVQL0RPV04sIHRpbWVvdXRzKQotLSBuZXcgJ3RpbWVvdXQnIGtleXdvcmQgdG8gc2V0IGFsbCB0aW1lb3V0cyAoaW5jbHVkaW5nIHRoZSBxdWV1ZSkKLS0gYWJpbGl0eSB0byBpbnRlcmNlcHQgYW4gVVJJIHRvIHJlcG9ydCBzdGF0aXN0aWNzCi0tIGFiaWxpdHkgdG8gaW50ZXJjZXB0IGFuIFVSSSB0byByZXR1cm4gNDA0Ci0tIGVtYmVkZGVkIGVycm9yIHBhZ2VzIGxvYWRlZCBpbiBtZW1vcnkgYXQgc3RhcnR1cCB0aW1lIChlZzogZm9yIGV4cGlyZWQgdGltZQotICBpbiBjb25uZWN0aW9uIHF1ZXVlKQotCi0KLVRPRE8gZm9yIDEuMwotPT09PT09PT09PT09Ci0gIC0gY2hlY2sgYWxsIGNvcHlyaWdodHMKLSAgLSBmaXggTWFrZWZpbGUuYnNkCi0gIC0gc2VwYXJhdGUgaW5saW5lIGZ1bmN0aW9ucyB0byBwdXQgdGhlbSBpbiBmaWxlcyBjb3ZlcmVkIGJ5IEdQTAotICAtIGltcGxlbWVudCBIVFRQIHN0YXR1cyA0MTQgLSByZXF1ZXN0IFVSSSB0b28gbG9uZwotICAtIGltcGxlbWVudCAndXNlX2ZpbHRlcnMgPHByb3h5PicgYW5kICd1c2VfYmFja2VuZCA8cHJveHk+JwotICAtIGZpeCB0aGUgbG9ncy4gVGhlIGxvZ3MgbWlnaHQgYmUgZGVmaW5lZCBmcm9tIHRoZSBmcm9udGVuZCBhbmQKLSAgICBhdWdtZW50ZWQgZGVwZW5kaW5nIG9uIHRoZSBiYWNrZW5kcycgb3B0aW9ucy4gQW5vdGhlciBzb2x1dGlvbgotICAgIHdvdWxkIGJlIHRvIHN1cHBvcnQgYSAnbG9nJyB0eXBlIGVudGl0eSBqdXN0IGxpa2UgdGhlIGZyb250ZW5kLAotICAgIGZpbHRlcnMgYW5kIGJhY2tlbmQsIG9uIHdoaWNoIGV2ZXJ5IGVudGl0eSBjb3VsZCByZWx5LgotICAtIGltcGxlbWVudCAnb24gdXJpIDx1cmk+IDxwcm94eT4nLCAnb24gaG9zdCA8aG9zdD4gPHByb3h5PicKLSAgLSByZW1vdmUgdGhlIGZpcnN0IG5vdyB1c2VsZXNzIGhvcCBpbiBoZHJfaWR4Ci0gIC0gYmFsYW5jZSBvbiBVUkkgaGFzaCAoc3BlY2lmeSBsZW5ndGggb3IgZGVwdGgpCi0gIC0gYmFsYW5jZSBvbiBhbnkgaGVhZGVyIGhhc2ggKGVnOiBob3N0KQotICAtIGJhbGFuY2Ugd2l0aCByZWRpcmVjdGlvbnMgdG8gcmVhbCBzZXJ2ZXJzCi0gIC0gbXVsdGktc2l0ZSBMQiB3aXRoIHdlaWdodGVkIHJlZGlyZWN0aW9ucyB0byB0aGUgcmVtb3RlIG9uZQotCg==