RGV2ZWxvcGVyIExvZwo9PT09PT09PT09PT09CgpUaGlzIGZpbGUgaXMgYSBydW5uaW5nIGxvZyBvZiBkZXZlbG9wZXJzIGdpdmVuIHBlcm1pc3Npb25zIG9uIFNvdXJjZUZvcmdlLgoKVGhlIHB1cnBvc2UgaXMgdG8gcHJvdmlkZSBzb21lIGluc3RpdHV0aW9uYWwgbWVtb3J5IG9mIHdobyB3YXMgZ2l2ZW4gYWNjZXNzCmFuZCB3aHkuCgpUaGUgZmlyc3QgZW50cnkgc3RhcnRzIGluIEFwcmlsIDIwMDUuICBJbiBrZWVwaW5nIHdpdGggdGhlIHN0eWxlIG9mCk1pc2MvTkVXUywgbmV3ZXIgZW50cmllcyBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIHRvcC4gIEFueSBtYXJrdXAgc2hvdWxkCmJlIGluIHRoZSBmb3JtIG9mIFJlU1QuICBFbnRyaWVzIHNob3VsZCBpbmNsdWRlIHRoZSBpbml0aWFscyBvZiB0aGUKcHJvamVjdCBhZG1pbiB3aG8gbWFkZSB0aGUgY2hhbmdlIG9yIGdyYW50ZWQgYWNjZXNzLiAgRmVlbCBmcmVlIHRvIHJldmlzZQp0aGUgZm9ybWF0IHRvIGFjY29tbW9kYXRlIGRvY3VtZW50YXRpb24gbmVlZHMgYXMgdGhleSBhcmlzZS4KCgoKUGVybWlzc2lvbnMgSGlzdG9yeQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIDIwMDYgU3VtbWVyIG9mIENvZGUgZW50cmllczogU29DIGRldmVsb3BlcnMgYXJlIGV4cGVjdGVkIHRvIHdvcmsKICBwcmltYXJpbHkgaW4gbm9uZGlzdC9zYW5kYm94IG9yIG9uIGEgYnJhbmNoIG9mIHRoZWlyIG93biwgYW5kIHdpbGwKICBoYXZlIHRoZWlyIHdvcmsgcmV2aWV3ZWQgYmVmb3JlIGNoYW5nZXMgYXJlIGFjY2VwdGVkIGludG8gdGhlIHRydW5rLgoKICAtIE1hdHQgRmxlbWluZyB3YXMgYWRkZWQgb24gMjUgTWF5IDIwMDYgYnkgQU1LOyBoZSdsbCBiZSB3b3JraW5nIG9uCiAgICBlbmhhbmNpbmcgdGhlIFB5dGhvbiBkZWJ1Z2dlci4gICAKCiAgLSBKYWNraWx5biBIb3h3b3J0aCB3YXMgYWRkZWQgb24gMjUgTWF5IDIwMDYgYnkgQU1LOyBzaGUnbGwgYmUgYWRkaW5nIGxvZ2dpbmcKICAgIHRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LiAgCgogIC0gTWF0ZXVzeiBSdWtvd2ljeiB3YXMgYWRkZWQgb24gMzAgTWF5IDIwMDYgYnkgQU1LOyBoZSdsbCBiZSAKICAgIHRyYW5zbGF0aW5nIHRoZSBkZWNpbWFsIG1vZHVsZSBpbnRvIEMuCgotIFNWTiBhY2Nlc3MgZ3JhbnRlZCB0byB0aGUgIk5lZWQgZm9yIFNwZWVkIiBJY2VsYW5kIHNwcmludCBhdHRlbmRlZXMsCiAgYmV0d2VlbiBNYXkgMTcgYW5kIDIxLCAyMDA2LCBieSBUaW0gUGV0ZXJzLiAgQWxsIHdvcmsgaXMgdG8gYmUgZG9uZQogIGluIG5ldyBzYW5kYm94IHByb2plY3RzIG9yIG9uIG5ldyBicmFuY2hlcywgd2l0aCBtZXJnaW5nIHRvIHRoZQogIHRydW5rIGFzIGFwcHJvdmVkOgoKICBBbmRyZXcgRGFsa2UKICBDaHJpc3RpYW4gVGlzbWVyCiAgSmFjayBEaWVkZXJpY2gKICBKb2huIEJlbmVkaWt0c3NvbgogIEtyaXN0auFuIFYuIErzbnNzb24KICBNYXJ0aW4gQmxhaXMKICBSaWNoYXJkIEVtc2xpZQogIFJpY2hhcmQgSm9uZXMKICBSdW5hciBQZXR1cnNzb24KICBTdGV2ZSBIb2xkZW4KICBSaWNoYXJkIE0uIFRldwoKLSBTdGV2ZW4gQmV0aGFyZCB3YXMgZ2l2ZW4gU1ZOIGFjY2VzcyBvbiAyNyBBcHIgMjAwNiBieSBESkcsIGZvciBQRVAKICB1cGRhdGUgYWNjZXNzLgoKLSBUYWxpbiB3YXMgZ2l2ZW4gU1ZOIGFjY2VzcyBvbiAyNyBBcHIgMjAwNiBieSBESkcsIGZvciBQRVAgdXBkYXRlCiAgYWNjZXNzLgoKLSBHZW9yZ2UgWW9zaGlkYSAoU0YgbmFtZSAicXVpdmVyIikgYWRkZWQgdG8gdGhlIFNvdXJjZUZvcmdlIFB5dGhvbgogIHByb2plY3QgMTQgQXByIDIwMDYsIGJ5IFRpbSBQZXRlcnMsIGFzIGEgdHJhY2tlciBhZG1pbi4gIFNlZQogIGNvbnRlbXBvcmFuZW91cyBweXRob24tY2hlY2tpbnMgdGhyZWFkIHdpdGggdGhlIHVubGlrZWx5IFN1YmplY3Q6CgogICAgICByNDUzMjkgLSBweXRob24vdHJ1bmsvRG9jL3doYXRzbmV3L3doYXRzbmV3MjUudGV4CgotIFJvbmFsZCBPdXNzb3JlbiB3YXMgZ2l2ZW4gU1ZOIGFjY2VzcyBvbiAzIE1hciAyMDA2IGJ5IE5DTiwgZm9yIE1hYwogIHJlbGF0ZWQgd29yay4KCi0gQm9iIElwcG9saXRvIHdhcyBnaXZlbiBTVk4gYWNjZXNzIG9uIDIgTWFyIDIwMDYgYnkgTkNOLCBmb3IgTWFjCiAgcmVsYXRlZCB3b3JrLgoKLSBOaWNrIENvZ2hsYW4gcmVxdWVzdGVkIENWUyBhY2Nlc3Mgc28gaGUgY291bGQgdXBkYXRlIGhpcyBQRVAgZGlyZWN0bHkuCiAgR3JhbnRlZCBieSBHdlIgb24gMTYgT2N0IDIwMDUuCgotIEFkZGVkIHR3byBuZXcgZGV2ZWxvcGVycyBmb3IgdGhlIFN1bW1lciBvZiBDb2RlIHByb2plY3QuIDggSnVseSAyMDA1CiAgYnkgUkRILiAgQW5kcmV3IEt1Y2hsaW5nIHdpbGwgYmUgbWVudG9yaW5nIEdyZWdvcnkgSyBKb2huc29uIGZvciBhCiAgcHJvamVjdCB0byBlbmhhbmNlIG1haWxib3guICBCcmV0dCBDYW5ub24gcmVxdWVzdGVkIGFjY2VzcyBmb3IgRmxvdmlzCiAgQnJ1eW5vb2doZSAoc2lyb2xmKSB0byB3b3JrIG9uIHBzdGF0cywgcHJvZmlsZSwgYW5kIGhvdHNob3QuICBCb3RoIHVzZXJzCiAgYXJlIGV4cGVjdGVkIHRvIHdvcmsgcHJpbWFyaWx5IGluIG5vbmRpc3Qvc2FuZGJveCBhbmQgaGF2ZSB0aGVpciB3b3JrCiAgcmV2aWV3ZWQgYmVmb3JlIG1ha2luZyB1cGRhdGVzIHRvIGFjdGl2ZSBjb2RlLgoKLSBHZW9yZyBCcmFuZGwgd2FzIGdpdmVuIFNGIHRyYWNrZXIgcGVybWlzc2lvbnMgb24gMjggTWF5IDIwMDUKICBieSBSREguICBTaW5jZSB0aGUgYmVnaW5uaW5nIG9mIDIwMDUsIGhlIGhhcyBiZWVuIGFjdGl2ZSBpbiBkaXNjdXNzaW9ucwogIG9uIHB5dGhvbi1kZXYgYW5kIGhhcyBzdWJtaXR0ZWQgYSBkb3plbiBwYXRjaCByZXZpZXdzLiAgVGhlIHBlcm1pc3Npb25zCiAgYWRkIHRoZSBhYmlsaXR5IHRvIGNoYW5nZSB0cmFja2VyIHN0YXR1cyBhbmQgdG8gYXR0YWNoIHBhdGNoZXMuICBPbgogIDMgSnVuZSAyMDA1LCB0aGlzIHdhcyBleHBhbmRlZCBieSBSREggdG8gaW5jbHVkZSBjaGVja2luIHBlcm1pc3Npb25zLgoKLSBUZXJyeSBSZWVkeSB3YXMgZ2l2ZW4gU0YgdHJhY2tlciBwZXJtaXNzaW9ucyBvbiA3IEFwciAyMDA1IGJ5IFJESC4KCi0gTmljayBDb2dobGFuIHdhcyBnaXZlbiBTRiB0cmFja2VyIHBlcm1pc3Npb25zIG9uIDUgQXByIDIwMDUgYnkgUkRILgogIEZvciBzZXZlcmFsIG1vbnRocywgaGUgaGFzIGJlZW4gYWN0aXZlIGluIHJldmlld2luZyBhbmQgY29udHJpYnV0aW5nCiAgcGF0Y2hlcy4gIFRoZSBhZGRlZCBwZXJtaXNzaW9ucyBnaXZlIGhpbSBncmVhdGVyIGZsZXhpYmlsaXR5IGluCiAgd29ya2luZyB3aXRoIHRoZSB0cmFja2VyLgoKLSBFcmljIFByaWNlIHdhcyBtYWRlIGEgZGV2ZWxvcGVyIG9uIDIgTWF5IDIwMDMgYnkgVEdQLiAgVGhpcyB3YXMKICBzcGVjaWZpY2FsbHkgdG8gd29yayBvbiB0aGUgbmV3IGBgZGVjaW1hbGBgIHBhY2thZ2UsIHdoaWNoIGxpdmVkIGluCiAgYGBub25kaXN0L3NhbmRib3gvZGVjaW1hbC9gYCBhdCB0aGUgdGltZS4KCi0gRXJpYyBTLiBSYXltb25kIHdhcyBtYWRlIGEgZGV2ZWxvcGVyIG9uIDIgSnVsIDIwMDAgYnkgVEdQLCBmb3IgZ2VuZXJhbAogIGxpYnJhcnkgd29yay4gIEhpcyByZXF1ZXN0IGlzIGFyY2hpdmVkIGhlcmU6CgogICAgICBodHRwOi8vbWFpbC5weXRob24ub3JnL3BpcGVybWFpbC9weXRob24tZGV2LzIwMDAtSnVseS8wMDUzMTQuaHRtbAoKClBlcm1pc3Npb25zIERyb3BwZWQgb24gUmVxdWVzdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gUGVyIG5vdGUgZnJvbSBBbmRyZXcgS3VjaGxpbmcsIHRoZSBwZXJtaXNzaW9ucyBmb3IgR3JlZ29yeSBLIEpvaG5zb24KICBhbmQgdGhlIFN1bW1lciBPZiBDb2RlIHByb2plY3QgYXJlIG5vIGxvbmdlciBuZWVkZWQuICBBTUsgd2lsbCBtYWtlCiAgYW55IGZ1dHVyZSBjaGVja2lucyBkaXJlY3RseS4gIDE2IE9jdCAyMDA1IFJESAoKLSBKb2hhbm5lcyBHaWpzYmVycyBzZW50IGEgZHJvcCByZXF1ZXN0LiAgMjcgSnVseSAyMDA1IFJESAoKLSBGbG92aXMgQnJ1eW5vb2doZSBzZW50IGEgZHJvcCByZXF1ZXN0LiAgMTQgSnVseSAyMDA1IFJESAoKLSBQYXVsIFByZXNjb2Qgc2VudCBhIGRyb3AgcmVxdWVzdC4gIDMwIEFwciAyMDA1IFJESAoKLSBGaW5uIEJvY2sgc2VudCBhIGRyb3AgcmVxdWVzdC4gIDEzIEFwciAyMDA1IFJESAoKLSBFcmljIFByaWNlIHNlbnQgYSBkcm9wIHJlcXVlc3QuICAxMCBBcHIgMjAwNSBSREgKCi0gSXJtZW4gZGUgSm9uZyByZXF1ZXN0ZWQgZHJvcHBpbmcgQ1ZTIGFjY2VzcyB3aGlsZSBrZWVwaW5nIHRyYWNrZXIKICBhY2Nlc3MuICAxMCBBcHIgMjAwNSBSREgKCi0gTW9zaGUgWmFka2EgYW5kIEtlbiBNYW5oZWltZXIgc2VudCBkcm9wIHJlcXVlc3RzLiAgOCBBcHIgMjAwNSBieSBSREgKCi0gU3RldmUgSG9sZGVuLCBHZXJoYXJkIEhhcmluZywgYW5kIERhdmlkIENvbGUgc2VudCBlbWFpbCBzdGF0aW5nIHRoYXQKICB0aGV5IG5vIGxvbmdlciB1c2UgdGhlaXIgYWNjZXNzLiAgIDcgQXByIDIwMDUgUkRICgoKUGVybWlzc2lvbnMgRHJvcHBlZCBhZnRlciBMb3NzIG9mIENvbnRhY3QKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gU2V2ZXJhbCB1bnN1Y2Nlc3NmdWwgZWZmb3J0cyB3ZXJlIG1hZGUgdG8gY29udGFjdCBDaGFybGVzIEcgV2FsZG1hbi4KICBSZW1vdmVkIG9uIDggQXByIDIwMDUgYnkgUkRILgoKCkluaXRpYWxzIG9mIFByb2plY3QgQWRtaW5zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpHdlI6ICBHdWlkbyB2YW4gUm9zc3VtCk5DTjogIE5lYWwgTm9yd2l0egpSREg6ICBSYXltb25kIEhldHRpbmdlcgpUR1A6ICBUaW0gUGV0ZXJzCkRKRzogIERhdmlkIEdvb2RnZXIK