PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIHNpbmNlIFUtQm9vdCAwLjIuMjoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKKiBQYXRjaGVzIGJ5IFJvYmVydCBTY2h3ZWJlbCwgMDYgTWFyIDIwMDM6CiAgLSBmaXggYnVnIGluIEJPT1RQIGNvZGUgKG11c3QgdXNlIE5ldENvcHlJUCkKICAtIHVwZGF0ZSBvZiBDU0IyMjYgcG9ydAogIC0gY2xlYXIgQlNTIHNlZ21lbnQgb24gWFNjYWxlCiAgLSBhZGRlZCBzdXBwb3J0IGZvciBpMmNfaW5pdF9ib2FyZCgpIGZ1bmN0aW9uCiAgLSB1cGRhdGUgdG8gdGhlIElubm9rb20gcGxhdHRmb3JtCgoqIEV4dGVuZCBzdXBwb3J0IGZvciByZWR1bmRhbmQgZW52aXJvbm1lbnRzIGZvciBjb25maWd1cmF0aW9ucyB3aGVyZQogIGVudmlyb25tZW50IHNpemUgPCBzZWN0b3Igc2l6ZQoKKiBQYXRjaCBieSBSdW5lIFRvcmdlcnNlbiwgMTMgRmViIDIwMDM6CiAgQWRkIHN1cHBvcnQgZm9yIE1vdG9yb2xhIE1QQzgyNjZBRFMgYm9hcmQKCiogUGF0Y2ggYnkgS3lsZSBIYXJyaXMsIDE5IEZlYiAyMDAzOgogIHBhdGNoZXMgZm9yIHRoZSBJbnRlbCBsdWJib2NrIGJvYXJkOgogIG1lbXNldHVwLlMgLSBnZW5lcmFsIGNsZWFudXAgKGJhc2VkIG9uIFJvYmVydCdzIGNzYjIyNiBjb2RlKQogIGZsYXNoLmMgLSBvdmVyaGF1bCwgYWN0dWFsbHkgd29ya3Mgbm93CiAgbHViYm9jay5jIC0gZml4IGluaXQgZnVuY3MgdG8gcmV0dXJuIHByb3BlciB2YWx1ZQoKKiBQYXRjaCBieSBLZW5uZXRoIEpvaGFuc3NvbiwgMjYgRmViIDIwMDM6CiAgLSBGaXhlZCBvZmYgYnkgb25lIGluIFJGVEEgY2FsY3VsYXRpb24uIAogIC0gTm8gbmVlZCB0byBhYm9ydCB3aGVuIExERiBpcyBsb3dlciB0aGFuIHdlIGNhbiBwcm9ncmFtIGl0J3Mgb25seQogICAgbWluaW11bSB0aW1pbmcgc28gY2xhbXAgaXQgdG8gd2hhdCB3ZSBjYW4gZG8uIAogIC0gVGFrZXMgZnVuY3Rpb24gcG9pbnRlciB0byBmdW5jdGlvbiBmb3IgcmVhZGluZyB0aGUgc3BkX252cmFtLiBVc2VmdWxsCiAgICBmb3IgZmFraW5nIGRhdGEgb3IgaGFyZGNvZGUgYSBtb2R1bGUgd2l0aG91dCB0aGUgbnZyYW0uCiAgLSBmaXggb3RoZXIgdXNlciBmb3IgYWJvdmUgY2hhbmdlCiAgLSBmaXggc29tZSBjb21tZW50cy4KCiogUGF0Y2hlcyBieSBCcmlhbiBXYWl0ZSwgMjYgRmViIDIwMDM6CiAgLSBmaXggcG9ydCBmb3IgZXZiNjQyNjAgYm9hcmQKICAtIGZpeCBQQ0kgZm9yIGV2YjY0MjYwIGJvYXJkCiAgLSBmaXggUENJIHNjYW4KCiogUGF0Y2ggYnkgUmVpbmhhcmQgTWV5ZXIsIDEgTWFyIDIwMDM6CiAgQWRkIHN1cHBvcnQgZm9yIEVNSyBUT1A4NjAgTW9kdWxlCgoqIFBhdGNoIGJ5IFl1bGkgQmFyY29oZW4sIDAyIE1hciAyMDAzOgogIEFkZCBTUEQgRUVQUk9NIHN1cHBvcnQgZm9yIE1QQzgyNjBBRFMgYm9hcmQKCiogUGF0Y2ggYnkgUm9iZXJ0IFNjaHdlYmVsLCAyMSBKYW4gMjAwMzoKICAtIEFkZCBzdXBwb3J0IGZvciBJbm5va29tIGJvYXJkCiAgLSBEb24ndCBjb21wbGFpbiBpZiAiaW5zdGFsbCIgZmFpbHMKICAtIFJFQURNRSBjbGVhbnVwIChyZW1vdmUgZHVwbGljYXRlZCBsaW5lcykKICAtIFVwZGF0ZSBQWEEgaGVhZGVyIGZpbGVzCgoqIEFkZCBkb2N1bWVudGF0aW9uIGZvciBleGlzdGluZyBQT1NUIGNvZGUgKGRvYy9SRUFETUUuUE9TVCkKCiogUGF0Y2ggYnkgTGF1ZG5leSBSZW4sIDE1IEphbiAyMDAzOgogIEZpeCBoYW5kbGluZyBvZiByZWR1bmRhbmQgZW52aXJvbm1lbnQgaW4gInRvb2xzL2VudmNyYy5jIgoKKiBQYXRjaCBieSBEZXRsZXYgWnVuZGVsLCAyOCBGZWIgMjAwMzoKICBBZGQgYmVkYnVnIHN1cHBvcnQgZm9yIDgyNHggc3lzdGVtcwoKKiBBZGQgc3VwcG9ydCBmb3IgMTYgTUIgZmxhc2ggY29uZmlndXJhdGlvbiBvZiBUUkFCIGJvYXJkCgoqIFBhdGNoIGJ5IEVyd2luIFJvbCwgMjcgRmViIDIwMDM6CiAgQWRkIHN1cHBvcnQgZm9yIFJURU1TCgoqIEFkZCBpbWFnZSBpbmZvcm1hdGlvbiB0byBSRUFETUUKCiogUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAxOCBGZWIgMjAwMzoKICBDUENJSVNFUjQgY29uZmlndXJhdGlvbiB1cGRhdGVkLgoKKiBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDE3IEZlYiAyMDAzOgogIEZpeGVkIGJ1ZyBpbiBleHQuIHNlcmlhbCBjbG9jayBzZXR1cCBvbiBQUEM0MDUgKHNpbmNlIFBQQzQ0MCBwb3J0KS4KCiogUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAxMyBGZWIgMjAwMzoKICBBZGQgInBjaWRlbGF5IiBlbnZpcm9ubWVudCB2YXJpYWJsZSAoaW4gbXMsIGVuYWJsZWQgdmlhCiAgQ09ORklHX1BDSV9CT09UREVMQVkpLgogIFBDSSBzcGVjIDIuMiBkZWZpbmVzLCB0aGF0IGEgcGNpIHRhcmdldCBoYXMgMl4yNSBwY2kgY2xvY2tzIGFmdGVyCiAgUlNUIyB0byByZXNwb25kIHRvIGNvbmZpZ3VyYXRpb24gY3ljbGVzICgzM01IeiAtPiAxcykuCgoqIEZpeCBkdWFsIFBDTUNJQSBzbG90IHN1cHBvcnQgKHdoZW4gcnVubmluZyB3aXRoIGp1c3Qgb25lCiAgc2xvdCBwb3B1bGF0ZWQpCgoqIEFkZCBWRkQgdHlwZSBkZXRlY3Rpb24gdG8gdHJhYiBib2FyZAoKKiBleHRlbmQgZHJpdmVycy9jczg5MDAuYyBkcml2ZXIgdG8gc3luY2hyb25pemUgIGV0aGFkZHIgIGVudmlyb25tZW50CiAgdmFyaWFibGUgd2l0aCB2YWx1ZSBpbiB0aGUgRUVQUk9NCgoqIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMTAgRmViIDIwMDM6CiAgQWRkIHN1cHBvcnQgZm9yIDRNQiBhbmQgMTI4TUIgb25ib2FyZCBTRFJBTSAoY3B1L3BwYzR4eC9zZHJhbS5jKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBVLUJvb3QgMC4yLjI6Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiogQWRkIGR1YWwgZXRoZXJuZXQgc3VwcG9ydCBvbiBQTTgyNgoKKiBBZGQgc3VwcG9ydCBmb3IgTFhUOTcxIFBIWSBvbiBQTTgyNgoKKiBQYXRjaCBieSBUb3JkIEFuZGVyc3NvbiwgMTYgSmFuIDIwMDM6CiAgRml4IGZsYXNoIHNlY3RvciBjb3VudCBmb3IgVFFNOHh4TAoKKiBGaXggSTJDIEVFUFJPTSBwcm9ibGVtIG9uIElDVTg2MiBib2FyZCAod291bGQgb25seSB3cml0ZSB0aGUgZmlyc3QKICAxNiBieXRlcyBvdXQgb2YgZWFjaCAzMiBieXRlIGJsb2NrKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBVLUJvb3QgMC4yLjE6Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiogQWRkIHN1cHBvcnQgZm9yIFYzNyBib2FyZAogIChwYXRjaCBieSBK824gQmVuZWRpa3Rzc29uLCAxMSBEZWMgMjAwMikKCiogVXBkYXRlIGJhdWRyYXRlIGluIGJkX2luZm8gd2hlbiBpdCBnZXRzIGNoYW5nZWQKCiogQWRkIHdhdGNoZG9nIHRyaWdnZXIgcG9pbnRzIHdoaWxlIHdhaXRpbmcgZm9yIHNlcmlhbCBwb3J0CiAgKHNvIGZhciBvbmx5IDh4eCAtLSBuZWVkZWQgb24gTFdNT04gd2l0aCAxMDBtcyB3YXRjaGRvZykKCiogSW1wcm92ZSBjb21tYW5kIGxpbmUgdG9vbCB0byBhY2Nlc3MgdGhlIFUtQm9vdCdzIGVudmlyb25tZW50CiAgKGZpZ3VyYXRpb24gb2YgdGhlIHV0aWxpdHksIHVzaW5nIGEgY29uZmlnIGZpbGUpCgoqIEFkZCBzaW5nbGUgcXVvdGUgc3VwcG9ydCBmb3IgKG9sZCkgY29tbWFuZCBsaW5lIHBhcnNlcgoKKiBTd2l0Y2ggTFdNT04gYm9hcmQgZGVmYXVsdCBjb25maWcgZnJvbSBGUkFNIHRvIEVFUFJPTTsKICBpbiBQT1NULCBFRVBST00gc2hvd3MgdXAgb24gOCBhZGRyZXNzZXMKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgVS1Cb290IDAuMi4wOgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgoqIFVzZSAxLWJ5dGUtcmVhZCBpbnN0ZWFkIG9mIC13cml0ZSBmb3IgaXByb2JlKCkgZnVuY3Rpb24KICBBZGQgaTJjIGNvbW1hbmRzIHRvIFBNODI2IGNvbmZpZwoKKiBleHRlbmQgSTJDIFBPU1QgY29kZTogY2hlY2sgZm9yIGxpc3Qgb24ga25vd24gYWRkcmVzc2VzCgoqIEltcHJvdmUgbG9nIGJ1ZmZlciBjb2RlOyB1c2UgImxvZ2xldmVsIiB0byBkZWNpZGUgd2hpY2ggbWVzc2FnZXMKICB0byBsb2cgb24gdGhlIGNvbnNvbGUsIHRvbyAobGlrZSBpbiBMaW51eCk7IGdldCByaWQgb2YgImxvZ3N0YXJ0IgoKKiBBZGQgY29tbWFuZCBsaW5lIHRvb2wgdG8gYWNjZXNzIHRoZSBVLUJvb3QncyBlbnZpcm9ubWVudAogIChib2FyZC1zcGVjaWZpYyBmb3IgVFJBQiBub3csIHRvIGJlIGZpeGVkIGxhdGVyKQoKKiBQYXRjaCBieSBIYW5zLUpvZXJnIEZyaWVkZW4sIDA2IERlYyAyMDAyCiAgRml4IG1pc2MgcHJvYmxlbXMgd2l0aCBBbWlnYU9uZSBzdXBwb3J0CgoqIFBhdGNoIGJ5IENocmlzIEhhbGxpbmFuLCAzIERlYyAyMDAyOgogIG1pbm9yIGNsZWFudXAgdG8gdGhlIE1QQzgyNDUgRVBJQyBkcml2ZXIKCiogUGF0Y2ggYnkgUGllcnJlIEF1YmVydCAsIDI4IE5vdiAyMDAyCiAgQWRkIHN1cHBvcnQgZm9yIGV4dGVybmFsIChTSVUpIGludGVycnVwdHMgb24gTVBDOHh4CgoqIFBhdGNoIGJ5IFBpZXJyZSBBdWJlcnQgLCAyOCBOb3YgMjAwMgogIEZpeCBuZXN0ZWQgc3lzY2FsbHMgYnVnIGluIHN0YW5kYWxvbmUgYXBwbGljYXRpb25zCgoqIFBhdGNoIGJ5IERhdmlkIE38bGxlciwgMjcgTm92IDIwMDI6CiAgZml4IG91dHB1dCBvZiAicGNpaW5mbyIgY29tbWFuZCBmb3IgQ2FyZEJ1cyBicmlkZ2UgZGV2aWNlcy4KCiogRml4IGJ1ZyBpbiBUUU04MjYwIGJvYXJkIGRldGVjdGlvbiAtIGJvYXJkcyBnb3Qgc3R1Y2sgd2hlbiBib2FyZCBJRAogIHdhcyBub3QgcmVhZGFibGUKCiogQWRkIExFRCBpbmRpY2F0aW9uIGZvciBJREUgYWN0aXZpdHkgb24gS1VQNEsgYm9hcmQKCiogRml4IHN0YXJ0dXAgcHJvYmxlbXMgd2l0aCBWRkQgZGlzcGxheSBvbiBUUkFCCgoqIFBhdGNoIGJ5IFBpZXJyZSBBdWJlcnQsIDIwIE5vdiAyMDAyCiAgQWRkIGRyaXZlciBmb3IgRXBzb24gU0VEMTM4MDYgZ3JhcGhpYyBjb250cm9sbGVyLgogIEFkZCBzdXBwb3J0IGZvciBCTVAgbG9nb3MgaW4gY2ZiX2NvbnNvbGUgZHJpdmVyLgoKKiBBZGRlZCBzdXBwb3J0IGZvciBib3RoIFBDTUNJQSBzbG90cyAoYXQgdGhlIHNhbWUgdGltZSEpIG9uIE1QQzh4eAoKKiBQYXRjaCBieSBSb2QgQm95Y2UsIDIxIE5vdiAyMDAyOgogIGZpeCBQQ01DSUEgb24gTUJYOHh4IGJvYXJkCgoqIFBhdGNoIGJ5IFBpZXJyZSBBdWJlcnQgLCAyMSBOb3YgMjAwMgogIEFkZCBDRkdfQ1BNX1BPU1RfV09SRF9BRERSIHRvIG1ha2UgdGhlIG9mZnNldCBvZiB0aGUKICBib290bW9kZSB3b3JkIGluIERQUkFNIGNvbmZpZ3VyYWJsZQoKKiBQYXRjaCBieSBEYW5pZWwgRW5nc3Ry9m0sIDE4IE5vdiAyMDAyOgogIEZpeGVzIGZvciB4ODYgcG9ydCAobW9zdGx5IHN0cmluZ3MgaXNzdWVzKQoKKiBQYXRjaCBieSBLZW4gQ2hvdSwgMTggTm92IDIwMDI6CiAgRml4IGZvciBuYXRzZW1pIE5JQyBjYXJkcyAoRFA4MzgxNSkKCiogUGF0Y2ggYnkgUGllcnJlIEF1YmVydCwgMTkgTm92IDIwMDI6CiAgZml4IGEgYnVnIGZvciB0aGUgTUlJIGNvbmZpZ3VyYXRpb24sIGFuZCBzb21lIHdhcm5pbmdzCgoqIFBhdGNoIGJ5IFRob21hcyBGcmllZGVuLCAxMyBOb3YgMjAwMjoKICBBZGQgY29kZSBmb3IgQW1pZ2FPbmUgYm9hcmQKICAocHJlbGltaW5hcnkgbWVyZ2UgdG8gVS1Cb290LCBzdGlsbCBXSVApCgoqIFBhdGNoIGJ5IEpvbiBEaWVrZW1hLCAxMiBOb3YgMjAwMjoKICAtIEFkZGluZyBVUkwgZm9yIElFRUUgT1VJIGxvb2t1cAogIC0gTWFraW5nIHRoZSBhdXRvYm9vdCAjZGVmaW5lcyBkZXBlbmRlbnQgb24gQ09ORklHX0FVVE9CT09UX0tFWUVECiAgICBiZWluZyBkZWZpbmVkLgogIC0gSW4gdGhlIENPTkZJR19FWFRSQV9FTlZfU0VUVElOR1MgI2RlZmluZSwgdGhlIHJvb3Qtb24taW5pdHJkIGFuZAogICAgcm9vdC1vbi1uZnMgbWFjcm9zIGFyZSBkZXNpZ25lZCB0byBzd2l0Y2ggaG93IHRoZSBkZWZhdWx0IGJvb3QKICAgIG1ldGhvZCBnZXRzIGRlZmluZWQuCgoqIFBhdGNoIGJ5IERhbmllbCBFbmdzdHL2bSwgMTMgTm92IDIwMDI6CiAgQWRkIHN1cHBvcnQgZm9yIGkzODYgYXJjaGl0ZWN0dXJlIGFuZCBBTUQgU0M1MjAgYm9hcmQKCiogUGF0Y2ggYnkgUGllcnJlIEF1YmVydCwgMTIgTm92IDIwMDI6CiAgQWRkIHN1cHBvcnQgZm9yIERPUyBmaWxlc3lzdGVtIGFuZCBib290aW5nIGZyb20gRE9TIGZsb3BweSBkaXNrCgoqIFBhdGNoIGJ5IEppbSBTYW5kb3osIDA3IE5vdiAyMDAyOgogIEluY3JlYXNlIG51bWJlciBvZiBuZXR3b3JrIFJYIGJ1ZmZlcnMgKFBLVEJVRlNSWCBpbgogICJpbmNsdWRlL25ldC5oIikgZm9yIEVFUFJPMTAwIGJhc2VkIGJvYXJkcyAoZXNwZWNpYWxseSBTUDgyNDApCiAgd2hpY2ggc2hvd2VkICJSZWNlaXZlciBpcyBub3QgcmVhZHkiIGVycm9ycyB3aGVuIFUtQm9vdCB3YXMKICBwcm9jZXNzaW5nIHRoZSByZWNlaXZlIGJ1ZmZlcnMgc2xvd2VyIHRoYW4gdGhlIG5ldHdvcmsgY29udHJvbGxlcgogIHdhcyBmaWxsaW5nIHRoZW0uCgoqIFBhdGNoIGJ5IEFuZHJlYXMgT2JlcnJpdHRlciwgMDkgTm92IDIwMDI6CiAgQ2hhbmdlIGJlaGF2aW91ciBvZiBOZXRMb29wKCk6IHJldHVybiAtMSBmb3IgZXJyb3JzLCBmaWxlc2l6ZQogIG90aGVyd2lzZTsgcmV0dXJuIGNvZGUgMCBpcyB2YWxpZCBhbiBtZWFucyBubyBmaWxlIGxvYWRlZCAtIGluIHRoaXMKICBjYXNlIHRoZSBlbnZpcm9ubWVudCBzdGlsbCBnZXRzIHVwZGF0ZWQhCgoqIFBhdGNoZXMgYnkgSm9uIERpZWtlbWEsIDkgTm92IDIwMDI6CiAgLSBpbXByb3ZlIEFEQy9EQUMgY2xvY2tpbmcgb24gdGhlIFNBQ1NuZyBib2FyZCB0byBhbGlnbgogICAgdGhlIGZhaWxpbmcgZWRnZXMgb2YgTFJDTEsgYW5kIFNDTEsKICAtIHNiYzgyNjAgY29uZmlndXJhdGlvbiB0d2Vha3MKICAtIGFkZCBzdGF0dXMgTEVEIHN1cHBvcnQgZm9yIDgyeHggc3lzdGVtcwogIC0gd2lyZSBzc3BpL3NzcG8gY29tbWFuZHMgaW50byBjb21tYW5kIGhhbmRsZXI7IGltcHJvdmVkIGVycm9yCiAgICBoYW5kbGVyaW5nCiAgLSBhZGQgdGltZXN0YW1wIHN1cHBvcnQgYW5kIGFsdGVybmF0ZSBtZW1vcnkgdGVzdCB0byB0aGUKICAgIFNBQ1NuZyBjb25maWd1cmF0aW9uCgoqIFBhdGNoIGJ5IFZpbmNlIEh1c292c2t5LCA3IE5vdiAyMDAyOgogIEFkZCAiLW4iIHRvIGxpbmtlciBvcHRpb25zIHRvIGdldCByaWQgb2YgIk5vdCBlbm91Z2ggcm9vbSBmb3IKICBwcm9ncmFtIGhlYWRlcnMiIHByb2JsZW0KCiogUGF0Y2ggYnkgRGF2aWQgTfxsbGVyLCAwNSBOb3YgMjAwMgogIFJlbmFtZSBDT05GSUdfUExMX0lOUFVUX0ZSRVEgdG8gQ09ORklHX1NZU19DTEtfRlJFUQogIHNvIHdlIGNhbiB1c2UgYW4gYWxyZWFkeSBleGlzdGluZyBuYW1lCgoqIFBhdGNoIGJ5IFBpZXJyZSBBdWJlcnQsIDA1IE5vdiAyMDAyCiAgSGFyZHdhcmUgcmVsYXRpZWQgaW1wcm92bWVudHMgaW4gRkRDIGJvb3QgY29kZQoKKiBQYXRjaCBieSBIb2xnZXIgU2NodXJpZywgNSBOb3YgMjAwMjoKICBNYWtlIHRoZSBQWEEgcmVhbGx5IGNoYW5nZSBpdCdzIGZyZXF1ZW5jeQoKKiBQYXRjaCBieSBQaWVycmUgQXViZXJ0LCAwNSBOb3YgMjAwMgogIEFkZCBzdXBwb3J0IGZvciBzbGF2ZSBzZXJpYWwgU3BhcnRhbiAyIEZQR0FzCgoqIEZpeCB1bmluaXRpYWxpemVkIG1lbW9yeSAoTUFDICBhZGRyZXNzKSAgaW4gIDh4eCAgU0NDL0ZFQyAgZXRoZXJuZXQKICBkcml2ZXJzCgoqIEFkZCBzdXBwb3J0IGZvciBsb2cgYnVmZmVyIHdoaWNoIGNhbiBiZSBwYXNzZWQgdG8gTGludXgga2VybmVsJ3MKICBzeXNsb2cgbWVjaGFuaXNtOyB1c2VkIGVzcGVjaWFsbHkgZm9yIFBPU1QgcmVzdWx0cy4KCiogUGF0Y2ggYnkgS2xhdXMgSGV5ZGVjaywgMzEgT2N0IDIwMDI6CiAgQWRkIGluaXRpYWwgc3VwcG9ydCBmb3Iga3VwNGsgYm9hcmQKCiogUGF0Y2ggYnkgUm9iZXJ0IFNjaHdlYmVsLCAwNCBOb3YgMjAwMjoKICAtIHVzZSB3YXRjaGRvZyB0byByZXNldCBQWEEyNTAgc3lzdGVtcwogIC0gYWRkZWQgcHJvZ3Jlc3MgY2FsbGJhY2tzIHRvIChzb21lIG9mIHRoZSkgQVJNIGNvZGUKICAtIHVwZGF0ZSBmb3IgQ29nZW50IENTQjIyNiBib2FyZAoKKiBBZGQgc3VwcG9ydCBmb3IgRlBTODYwIGJvYXJkCgoqIFBhdGNoIGJ5IEd1aWxsYXVtZSBBbGV4YW5kcmUsLCAwNCBOb3YgMjAwMjoKICBJbXByb3ZlIFBDSSBhY2Nlc3Mgb24gMzItYml0cyBDb21wYWN0IFBDSSBidXMKCiogRml4IG1kZWxheSgpIG9uIFRSQUIgLSB0aGlzIHdhcyBzdGlsbCB0aGUgZGVidWdnaW5nIHZlcnNpb24gd2l0aAogIHNlY29uZHMgaW5zdGVhZCBvZiBtcy4KCiogUGF0Y2ggYnkgUm9iZXJ0IFNjaHdlYmVsLCAxIE5vdiAyMDAyOgogIFhTY2FsZSByZWxhdGVkIGNsZWFudXAgKGFmZmVjdHMgYWxsIEFSTSBib2FyZHMpCgoqIENsZWFudXAgb2YgbmFtZXMgYW5kIFJFQURNRS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KTm90ZXMgZm9yIFUtQm9vdCAwLjEuMDoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKVGhpcyBpcyB0aGUgaW5pdGlhbCB2ZXJzaW9uIG9mICJEYXMgVS1Cb290IiwgdGhlIFVuaXZlcnNhbCBCb290IExvYWRlci4KCkl0IGlzIGJhc2VkIG9uIHZlcnNpb24gMi4wLjAgKHRoZSAiSGFsbG93ZWVuIFJlbGVhc2UiKSBvZiBQUENCb290LgpGb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGhpc3Rvcnkgb2YgdGhlIHByb2plY3QgcGxlYXNlIHNlZSB0aGUKUFBDQm9vdCBwcm9qZWN0IHBhZ2UgYXQgaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9wcGNib290Cgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cg==