QVBBQ0hFIERFUkJZIFNUQVRVUzoKTGFzdCBtb2RpZmllZCBhdCBbJERhdGUkXSBieSAkQXV0aG9yJC4KCldlYiBzaXRlOiBodHRwOi8vZGIuYXBhY2hlLm9yZy9kZXJieS8KClByb2plY3QgU3RhdHVzCgogIERlc2NyaXB0aW9uCgogICJEZXJieSIgYmVnYW4gYXMgYSBzbmFwc2hvdCBvZiB0aGUgSUJNJ3MgQ2xvdWRzY2FwZSBKYXZhIHJlbGF0aW9uYWwgZGF0YWJhc2UuIElCTQogIGNvbnRyaWJ1dGVkIHRoZSBjb2RlIHRvIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiBhbmQgCiAgYmFzZXMgZnV0dXJlIHZlcnNpb25zIG9mIElCTSBDbG91ZHNjYXBlIG9uIHRoZSBBcGFjaGUtbWFuYWdlZCBjb2RlLgoKICBUbyBwYXJ0aWNpcGF0ZSBpbiBEZXJieSwgeW91IHNob3VsZCBqb2luIHRoZSBtYWlsaW5nIGxpc3QuIEp1c3QgCiAgc2VuZCBhbiBlbXB0eSBtZXNzYWdlIHRvIGRlcmJ5LWRldi1zdWJzY3JpYmVAZGIuYXBhY2hlLm9yZy4KClByb2plY3QgaW5mbwoKICAqIEFzIGEgc3VicHJvamVjdCBvZiB0aGUgQXBhY2hlIERCIHByb2plY3QsIERlcmJ5IGZvbGxvd3MgdGhlIGRpcmVjdGlvbiBvZgogICAgdGhlIEFwYWNoZSBEQiBQTUMuIFNpZ25pZmljYW50IGNvbnRyaWJ1dGlvbnMgb3ZlciBhIHN1c3RhaW5lZAogICAgcGVyaW9kIG9mIHRpbWUgY2FuIGVhcm4gYSBjb250cmlidXRvciBjb21taXQgYWNjZXNzIHRvIHRoZSBjb2RlYmFzZS4KCk9mZmljaWFsIHJlbGVhc2VzOgogKiAxMC4xNC4yLjAgOiBSZWxlYXNlZCAyMDE4LTA1LTAzCiAqIDEwLjE0LjEuMCA6IFJlbGVhc2VkIDIwMTctMTAtMjIKICogMTAuMTMuMS4xIDogUmVsZWFzZWQgMjAxNi0xMC0yNgogKiAxMC4xMi4xLjEgOiBSZWxlYXNlZCAyMDE1LTEwLTExCiAqIDEwLjExLjEuMSA6IFJlbGVhc2VkIDIwMTQtMDgtMjcKICogMTAuMTAuMi4wIDogUmVsZWFzZWQgMjAxNC0wNC0xNQogKiAxMC4xMC4xLjEgOiBSZWxlYXNlZCAyMDEzLTA0LTE1CiAqIDEwLjguMy4wIDogUmVsZWFzZWQgMjAxMi0xMS0xNgogKiAxMC45LjEuMCA6IFJlbGVhc2VkIDIwMTItMDYtMjUKICogMTAuOC4yLjIgOiBSZWxlYXNlZCAyMDExLTEwLTI0CiAqIDEwLjguMS4yIDogUmVsZWFzZWQgMjAxMS0wNC0yOQogKiAxMC43LjEuMSA6IFJlbGVhc2VkIDIwMTAtMTItMTQKICogMTAuNi4yLjEgOiBSZWxlYXNlZCAyMDEwLTEwLTA2CiAqIDEwLjYuMS4wIDogUmVsZWFzZWQgMjAxMC0wNS0xOAogKiAxMC41LjMuMCA6IFJlbGVhc2VkIDIwMDktMDgtMjEKICogMTAuNS4yLjAgOiBSZWxlYXNlZCAyMDA5LTA3LTMwIChEZXByZWNhdGVkKQogKiAxMC41LjEuMSA6IFJlbGVhc2VkIDIwMDktMDQtMjgKICogMTAuNC4yLjAgOiBSZWxlYXNlZCAyMDA4LTA5LTA1CiAqIDEwLjQuMS4zIDogUmVsZWFzZWQgMjAwOC0wNC0yNAogKiAxMC4zLjMuMCA6IFJlbGVhc2VkIDIwMDgtMDUtMTIKICogMTAuMy4yLjEgOiBSZWxlYXNlZCAyMDA3LTEyLTEwCiAqIDEwLjMuMS40IDogUmVsZWFzZWQgMjAwNy0wOC0xMAogKiAxMC4yLjIuMCA6IFJlbGVhc2VkIDIwMDYtMTItMTkKICogMTAuMi4xLjYgOiBSZWxlYXNlZCAyMDA2LTEwLTAyCiAqIDEwLjEuMy4xIDogUmVsZWFzZWQgMjAwNi0wNi0zMAogKiAxMC4xLjIuMSA6IFJlbGVhc2VkIDIwMDUtMTEtMTgKICogMTAuMS4xLjAgOiBSZWxlYXNlZCAyMDA1LTA4LTAzCiAqIDEwLjAuMi4xIDogUmVsZWFzZWQgMjAwNC0xMi0wNgoKUEVORElORyBJU1NVRVMKPT09PT09PT09PT09PT0KCk5vbmUuCgpSRVNPTFZFRCBJU1NVRVMgU0lOQ0UgTEFTVCBTVEFUVVMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpOb25lLgoKUkVDRU5UIFZPVEVTCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKVGhlIGNvbW11bml0eSB2b3RlZCB0byBzdW5zZXQgc3VwcG9ydCBmb3IgSmF2YSBTRSA4LiBUaGUgdm90ZSBjbG9zZWQgb24gMjAxNy0wNy0wOS4KVGhlIGNvbW11bml0eSB2b3RlZCB0byBzdW5zZXQgc3VwcG9ydCBmb3IgSmF2YSBTRSA3LiBUaGUgdm90ZSBjbG9zZWQgb24gMjAxNS0wOS0xMi4KVGhlIGNvbW11bml0eSB2b3RlZCB0byBzdW5zZXQgc3VwcG9ydCBmb3IgSmF2YSBTRSA2LiBUaGUgdm90ZSBjbG9zZWQgb24gMjAxNC0wOS0xNS4KUmVsZWFzZSAxMC4xNC4yLjAgd2FzIGFwcHJvdmVkIGFzIGEgcmVsZWFzZSBvbiAyMDE4LTA0LTI5LCBwdWJsaXNoZWQgb24gMjAxOC0wNS0wMywgYW5kIGFubm91bmNlZCBvbiAyMDE4LTA1LTA1LgpSZWxlYXNlIDEwLjE0LjEuMCB3YXMgYXBwcm92ZWQgYXMgYSByZWxlYXNlIG9uIDIwMTctMTAtMTEsIHB1Ymxpc2hlZCBvbiAyMDE3LTEwLTE0LCBhbmQgYW5ub3VuY2VkIG9uIDIwMTctMTAtMjIuClJlbGVhc2UgMTAuMTMuMS4xIHdhcyBhcHByb3ZlZCBhcyBhIHJlbGVhc2Ugb24gMjAxNi0xMC0yNCwgcHVibGlzaGVkIG9uIDIwMTYtMTAtMjYsIGFuZCBhbm5vdW5jZWQgb24gMjAxNi0xMC0yOS4KUmVsZWFzZSAxMC4xMi4xLjEgd2FzIGFwcHJvdmVkIGFzIGEgcmVsZWFzZSBvbiAyMDE1LTEwLTA1LCBwdWJsaXNoZWQgb24gMjAxNS0xMC0xMCwgYW5kIGFubm91bmNlZCBvbiAyMDE1LTEwLTExLgpSZWxlYXNlIDEwLjExLjEuMSB3YXMgYXBwcm92ZWQgYXMgYSByZWxlYXNlIG9uIDIwMTQtMDgtMjUsIHB1Ymxpc2hlZCBvbiAyMDE0LTA4LTI2LCBhbmQgYW5ub3VuY2VkIG9uIDIwMTQtMDgtMjcuClJlbGVhc2UgMTAuMTAuMi4wIHdhcyBhcHByb3ZlZCBhcyBhIHJlbGVhc2Ugb24gMjAxNC0wNC0xMSwgcHVibGlzaGVkIG9uIDIwMTQtMDQtMTUsIGFuZCBhbm5vdW5jZWQgb24gMjAxNC0wNC0xNy4KUmVsZWFzZSAxMC4xMC4xLjEgd2FzIGFwcHJvdmVkIGFzIGEgcmVsZWFzZSBvbiAyMDEzLTA0LTE1LCBwdWJsaXNoZWQgb24gMjAxMy0wNC0xNiwgYW5kIGFubm91bmNlZCBvbiAyMDEzLTA0LTE3LgpSZWxlYXNlIDEwLjguMy4wIHdhcyBhcHByb3ZlZCBhcyBhIHJlbGVhc2Ugb24gMjAxMi0xMS0xNiwgcHVibGlzaGVkIG9uIDIwMTItMTItMTMsIGFuZCBhbm5vdW5jZWQgb24gMjAxMy0wMS0zMC4KUmVsZWFzZSAxMC45LjEuMCB3YXMgYXBwcm92ZWQgYXMgYSByZWxlYXNlIG9uIDIwMTItMDYtMjEsIHB1Ymxpc2hlZCBvbiAyMDEyLTA2LTIyLCBhbmQgYW5ub3VuY2VkIG9uIDIwMTItMDYtMjUuClJlbGVhc2UgMTAuOC4yLjIgd2FzIGFwcHJvdmVkIGFzIGEgcmVsZWFzZSBvbiAyMDExLTEwLTI0LCBwdWJsaXNoZWQgb24gMjAxMS0xMC0yNCwgYW5kIGFubm91bmNlZCBvbiAyMDExLTEwLTI2LgpSZWxlYXNlIDEwLjguMS4yIHdhcyBhcHByb3ZlZCBhcyBhIHJlbGVhc2Ugb24gMjAxMS0wNC0yOCwgcHVibGlzaGVkIG9uIDIwMTEtMDQtMjksIGFuZCBhbm5vdW5jZWQgb24gMjAxMS0wNS0wMi4KUmVsZWFzZSAxMC43LjEuMSB3YXMgYXBwcm92ZWQgYXMgYSByZWxlYXNlIG9uIDIwMTAtMTItMTMsIHB1Ymxpc2hlZCBvbiAyMDEwLTEyLTE0LCBhbmQgYW5ub3VuY2VkIG9uIDIwMTAtMTItMTUuClJlbGVhc2UgMTAuNi4yLjEgd2FzIGFwcHJvdmVkIGFzIGEgcmVsZWFzZSBvbiAyMDEwLTEwLTA2LCBwdWJsaXNoZWQgb24gMjAxMC0xMC0wOCwgYW5kIGFubm91bmNlZCBvbiAyMDEwLTEwLTEyLgoKT1RIRVIgTkVXUwo9PT09PT09PT09CgpSRUxFQVNFIFNUQVRVUwo9PT09PT09PT09PT09PQoKVGhlIGNvbW11bml0eSBpcyB3b3JraW5nIG9uIGRldmVsb3BtZW50IGluIHRoZSB0cnVuay4KCgoKCgpSZWZlcmVuY2VzOgogCml0ZW0gICAgICAgICAgICB0eXBlICAgICAgcmVmZXJlbmNlClN0YXR1cyBmaWxlICAgICB3d3cgICAgICAgaHR0cDovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9kYi9kZXJieS9jb2RlL3RydW5rL1NUQVRVUwpXZWJzaXRlICAgICAgICAgd3d3ICAgICAgIGh0dHA6Ly9kYi5hcGFjaGUub3JnL2RlcmJ5LwpNYWlsaW5nIGxpc3QgICAgZGV2ICAgICAgIGRlcmJ5LWRldkBkYi5hcGFjaGUub3JnCk1haWxpbmcgbGlzdCAgICB1c2VycyAgICAgZGVyYnktdXNlckBkYi5hcGFjaGUub3JnClNvdXJjZSBjb2RlICAgICBTVk4gICAgICAgL3JlcG9zL2FzZi9kYi9kZXJieS9jb2RlL3RydW5rLwpDb21taXR0ZXJzICAgICAganRhICAgICAgICAgICAgICAgICAgSmVhbiBBbmRlcnNvbiAoQ0xBIG9uIGZpbGUpCkNvbW1pdHRlcnMgICAgICBrYWhhdGxlbiAgICAgICAgICAgICBLbnV0IEFuZGVycyBIYXRsZW4gKENMQSBvbiBmaWxlKQpDb21taXR0ZXJzICAgICAgb3l2aW5kICAgICAgICAgICAgICAg2Hl2aW5kIEJha2tzavggKENMQSBvbiBmaWxlKQpDb21taXR0ZXJzICAgICAgc2F0aGVlc2ggICAgICAgICAgICAgU2F0aGVlc2ggQmFuZGFyYW0gKENMQSBvbiBmaWxlKQpDb21taXR0ZXJzICAgICAgamJveW5lcyAgICAgICAgICAgICAgSmVyZW15IEJveW5lcyAoQ0xBIG9uIGZpbGUpCkNvbW1pdHRlcnMgICAgICBhYnJvd24gICAgICAgICAgICAgICBBcm15IEJyb3duIChDTEEgb24gZmlsZSkKQ29tbWl0dGVycyAgICAgIGNvYXIgICAgICAgICAgICAgICAgIEtlbiBDb2FyIChDTEEgb24gZmlsZSkKQ29tbWl0dGVycyAgICAgIGRqZCAgICAgICAgICAgICAgICAgIERhbmllbCBEZWJydW5uZXIgKENMQSBvbiBmaWxlKQpDb21taXR0ZXJzICAgICAgcmhpbGxlZ2FzICAgICAgICAgICAgUmljayBIaWxsZWdhcyAoQ0xBIG9uIGZpbGUpCkNvbW1pdHRlcnMgICAgICBiZXJudCAgICAgICAgICAgICAgICBCZXJudCBNLiBKb2huc2VuIChDTEEgb24gZmlsZSkKQ29tbWl0dGVycyAgICAgIGFuZHJlYXNrICAgICAgICAgICAgIEFuZHJlYXMgS29ybmVsaXVzc2VuIChDTEEgb24gZmlsZSkKQ29tbWl0dGVycyAgICAgIGttYXJzZGVuICAgICAgICAgICAgIEthdGhlcmluZSBNYXJzZGVuIChDTEEgb24gZmlsZSkKQ29tbWl0dGVycyAgICAgIG1pa2VtICAgICAgICAgICAgICAgIE1pa2UgTWF0cmlnYWxpIChDTEEgb24gZmlsZSkKQ29tbWl0dGVycyAgICAgIG1jaW50eXJlICAgICAgICAgICAgIFNhbXVlbCBNY0ludHlyZSAoQ0xBIG9uIGZpbGUpCkNvbW1pdHRlcnMgICAgICB0bW5rICAgICAgICAgICAgICAgICBUb21vaGl0byBOYWtheWFtYSAoQ0xBIG9uIGZpbGUpCkNvbW1pdHRlcnMgICAgICBicnlhbnBlbmRsZXRvbiAgICAgICBCcnlhbiBQZW5kbGV0b24gKENMQSBvbiBmaWxlKQpDb21taXR0ZXJzICAgICAgZmVybmFuZGEgICAgICAgICAgICAgRmVybmFuZGEgUGl6em9ybm8gKENMQSBvbiBmaWxlKQpDb21taXR0ZXJzICAgICAgc3VyZXNodCAgICAgICAgICAgICAgU3VyZXNoIFRoYWxhbWF0aSAoQ0xBIG9uIGZpbGUpCkNvbW1pdHRlcnMgICAgICBkYXZpZHZjICAgICAgICAgICAgICBEYXZpZCBWYW4gQ291dmVyaW5nIChDTEEgb24gZmlsZSkKQ29tbWl0dGVycyAgICAgIG15cm5hdmwgICAgICAgICAgICAgIE15cm5hIFZhbiBMdW50ZXJlbiAoQ0xBIG9uIGZpbGUpCkNvbW1pdHRlcnMgICAgICBtYW10YSAgICAgICAgICAgICAgICBNYW10YSBTYXRvb3IgKENMQSBvbiBmaWxlKQpDb21taXR0ZXJzICAgICAgc2NvdHNtYXRyaXggICAgICAgICAgTGF1cmEgU3Rld2FydCAoQ0xBIG9uIGZpbGUpCkNvbW1pdHRlcnMgICAgICBrcmlzdHdhYSAgICAgICAgICAgICBLcmlzdGlhbiBXYWFnYW4gKENMQSBvbiBmaWxlKQpDb21taXR0ZXJzICAgICAgZGFnICAgICAgICAgICAgICAgICAgRGFnIEguIFdhbnZpayAoQ0xBIG9uIGZpbGUpCkNvbW1pdHRlcnMgICAgICBveXN0ZWluZyAgICAgICAgICAgICDYeXN0ZWluIEdy+HZsZW4gKENMQSBvbiBmaWxlKQpDb21taXR0ZXJzICAgICAgZHlyZSAgICAgICAgICAgICAgICAgRHlyZSBUamVsZHZvbGwgKENMQSBvbiBmaWxlKQpDb21taXR0ZXJzICAgICAgY2hhYXNlMyAgICAgICAgICAgICAgQ2FtaWxsYSBIYWFzZSAoQ0xBIG9uIGZpbGUpCkNvbW1pdHRlcnMgICAgICB2bmFyYXlhbmFuICAgICAgICAgICBWIE5hcmF5YW5hbiAoQ0xBIG9uIGZpbGUpCkNvbW1pdHRlcnMgICAgICBqb3JnZW5sbyAgICAgICAgICAgICBK+HJnZW4gTPhsYW5kIChDTEEgb24gZmlsZSkKQ29tbWl0dGVycyAgICAgIHRob21hbmllICAgICAgICAgICAgIFRob21hcyBOaWVsc2VuIChDTEEgb24gZmlsZSkKQ29tbWl0dGVycyAgICAgIGpvaG5lbWIgICAgICAgICAgICAgIEpvaG4gRW1icmV0c2VuIChDTEEgb24gZmlsZSkKQ29tbWl0dGVycyAgICAgIG9sZSAgICAgICAgICAgICAgICAgIE9sZSBTb2xiZXJnIChDTEEgb24gZmlsZSkKQ29tbWl0dGVycyAgICAgIGxpbHl3ZWkgICAgICAgICAgICAgIExpbHkgV2VpIChDTEEgb24gZmlsZSkKQ29tbWl0dGVycyAgICAgIHRpYWdvICAgICAgICAgICAgICAgIFRpYWdvIEVzcGluaGEgKENMQSBvbiBmaWxlKQo=