LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KICogQGZpbGUNCiAqIEBicmllZiBMQ0QgQ29udHJvbGxlciBmb250IGFuZCBkaXNwbGF5IGxheW91dCBmb3IgRUZNMzIgZGV2ZWxvcG1lbnQgTUNVDQogKiAgICAgICAgbW9kdWxlDQogKiBAYXV0aG9yIEVuZXJneSBNaWNybyBBUw0KICogQHZlcnNpb24gMS4wLjENCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAqIEBzZWN0aW9uIExpY2Vuc2UNCiAqIDxiPihDKSBDb3B5cmlnaHQgMjAwOSBFbmVyZ3kgTWljcm8gQVMsIGh0dHA6Ly93d3cuZW5lcmd5bWljcm8uY29tPC9iPg0KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICoNCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgdGhlIHByb3BlcnR5IG9mIEVuZXJneSBNaWNybyBBUy4gVGhlIHNvdXJjZSBhbmQgY29tcGlsZWQNCiAqIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCBvbiBFbmVyZ3kgTWljcm8gIkVGTTMyIiBtaWNyb2NvbnRyb2xsZXJzLg0KICoNCiAqIFRoaXMgY29weXJpZ2h0IG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgZnJvbSB0aGUgc291cmNlIGNvZGUgbm9yIGNoYW5nZWQuDQogKg0KICogRElTQ0xBSU1FUiBPRiBXQVJSQU5UWS9MSU1JVEFUSU9OIE9GIFJFTUVESUVTOiBFbmVyZ3kgTWljcm8gQVMgaGFzIG5vDQogKiBvYmxpZ2F0aW9uIHRvIHN1cHBvcnQgdGhpcyBTb2Z0d2FyZS4gRW5lcmd5IE1pY3JvIEFTIGlzIHByb3ZpZGluZyB0aGUNCiAqIFNvZnR3YXJlICJBUyBJUyIsIHdpdGggbm8gZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnRpZXMgb2YgYW55IGtpbmQsDQogKiBpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bywgYW55IGltcGxpZWQgd2FycmFudGllcyBvZiBtZXJjaGFudGFiaWxpdHkNCiAqIG9yIGZpdG5lc3MgZm9yIGFueSBwYXJ0aWN1bGFyIHB1cnBvc2Ugb3Igd2FycmFudGllcyBhZ2FpbnN0IGluZnJpbmdlbWVudA0KICogb2YgYW55IHByb3ByaWV0YXJ5IHJpZ2h0cyBvZiBhIHRoaXJkIHBhcnR5Lg0KICoNCiAqIEVuZXJneSBNaWNybyBBUyB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBjb25zZXF1ZW50aWFsLCBpbmNpZGVudGFsLCBvcg0KICogc3BlY2lhbCBkYW1hZ2VzLCBvciBhbnkgb3RoZXIgcmVsaWVmLCBvciBmb3IgYW55IGNsYWltIGJ5IGFueSB0aGlyZCBwYXJ0eSwNCiAqIGFyaXNpbmcgZnJvbSB5b3VyIHVzZSBvZiB0aGlzIFNvZnR3YXJlLg0KICoNCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KDQojaWZuZGVmIF9MQ0RESVNQTEFZX0gNCiNkZWZpbmUgX0xDRERJU1BMQVlfSA0KDQojaW5jbHVkZSA8c3RkaW50Lmg+DQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQogKiBAYnJpZWYNCiAqIERlZmluZXMgZWFjaCB0ZXh0IHN5bWJvbCdzIHNlZ21lbnQgaW4gdGVybXMgb2YgQ09NIGFuZCBCSVQgbnVtYmVycywNCiAqIGluIGEgd2F5IHRoYXQgd2UgY2FuIGVudW1lcmF0ZSBlYWNoIGJpdCBmb3IgZWFjaCB0ZXh0IHNlZ21lbnQgaW4gdGhlDQogKiBmb2xsb3dpbmcgYml0IHBhdHRlcm46DQogKiBAdmVyYmF0aW0NCiAqICAtLS0tLS0tMC0tLS0tLQ0KICoNCiAqIHwgICBcNyAgfDggIC85IHwNCiAqIHw1ICAgXCAgfCAgLyAgIHwxDQogKg0KICogIC0tNi0tLSAgLS0tMTAtLQ0KICoNCiAqIHwgICAgLyAgfCAgXDExIHwNCiAqIHw0ICAvMTMgfDEyIFwgIHwyDQogKg0KICogIC0tLS0tLS0zLS0tLS0tDQogKiBAZW5kdmVyYmF0aW0NCiAqIEUuZy46IEZpcnN0IHRleHQgY2hhcmFjdGVyIGJpdCBwYXR0ZXJuICMzIChhYm92ZSkgaXMNCiAqICBTZWdtZW50IDFEIGZvciBEaXNwbGF5DQogKiAgTG9jYXRpb24gQ09NIDMsIEJJVCAwDQogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQp0eXBlZGVmIHN0cnVjdA0Kew0KICB1aW50MzJfdCBjb21bMTRdOyAvKio8IExDRCBDT00gbGluZSAoZm9yIG11bHRpcGxleGluZykgKi8NCiAgdWludDMyX3QgYml0WzE0XTsgLyoqPCBMQ0QgYml0IG51bWJlciAqLw0KfSBDSEFSX1R5cGVEZWY7DQoNCg0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KICogQGJyaWVmIERlZmluZXMgc2VnbWVudCBDT00gYW5kIEJJVCBmaWVsZHMgbnVtZXJpYyBkaXNwbGF5DQogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQp0eXBlZGVmIHN0cnVjdA0Kew0KICB1aW50MzJfdCBjb21bN107DQogIHVpbnQzMl90IGJpdFs3XTsNCn0gTlVNQkVSX1R5cGVEZWY7DQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCiAqIEBicmllZiBEZWZpbmVzIHNlZ21lbnQgQ09NIGFuZCBCSVQgZmllbGRzIGZvciBFbmVyZ3kgTW9kZXMgb24gZGlzcGxheQ0KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KdHlwZWRlZiBzdHJ1Y3QNCnsNCiAgdWludDMyX3QgY29tWzVdOyAvKio8IExDRCBDT00gbGluZSAoZm9yIG11bHRpcGxleGluZykgKi8NCiAgdWludDMyX3QgYml0WzVdOyAvKio8IExDRCBiaXQgbnVtYmVyICovDQp9IEVNX1R5cGVEZWY7DQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCiAqIEBicmllZiBEZWZpbmVzIHNlZ21lbnQgQ09NIGFuZCBCSVQgZmllbGRzIGZvciBBLXdoZWVsIChzdWl0ZWQgZm9yIEFuaW0pDQogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQp0eXBlZGVmIHN0cnVjdA0Kew0KICB1aW50MzJfdCBjb21bOF07IC8qKjwgTENEIENPTSBsaW5lIChmb3IgbXVsdGlwbGV4aW5nKSAqLw0KICB1aW50MzJfdCBiaXRbOF07IC8qKjwgTENEIGJpdCBudW1iZXIgKi8NCn0gQVJJTkdfVHlwZURlZjsNCg0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KICogQGJyaWVmIERlZmluZXMgc2VnbWVudCBDT00gYW5kIEJJVCBmaWVsZHMgZm9yIEEtd2hlZWwgKHN1aXRlZCBmb3IgQW5pbSkNCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCnR5cGVkZWYgc3RydWN0DQp7DQogIHVpbnQzMl90IGNvbVs0XTsgLyoqPCBMQ0QgQ09NIGxpbmUgKGZvciBtdWx0aXBsZXhpbmcpICovDQogIHVpbnQzMl90IGJpdFs0XTsgLyoqPCBMQ0QgYml0IG51bWJlciAqLw0KfSBCQVRURVJZX1R5cGVEZWY7DQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCiAqIEBicmllZiBEZWZpbmVzIHByb3RvdHlwZSBmb3IgYWxsIHNlZ21lbnRzIGluIGRpc3BsYXkNCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCnR5cGVkZWYgc3RydWN0DQp7DQogIENIQVJfVHlwZURlZiAgICBUZXh0WzddOw0KICBOVU1CRVJfVHlwZURlZiAgTnVtYmVyWzRdOw0KICBFTV9UeXBlRGVmICAgICAgRU1vZGU7DQogIEFSSU5HX1R5cGVEZWYgICBBUmluZzsNCiAgQkFUVEVSWV9UeXBlRGVmIEJhdHRlcnk7DQp9IE1DVV9ESVNQTEFZOw0KDQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQogKiBAYnJpZWYgV29ya2luZyBpbnN0YW5jZSBvZiBMQ0QgZGlzcGxheQ0KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KTUNVX0RJU1BMQVkgRUZNRGlzcGxheSA9IHsNCiAgLlRleHQgICAgICAgID0gew0KICAgIHsgLyogMSAqLw0KICAgICAgLmNvbVswXSA9IDMsIC5jb21bMV0gPSAzLCAuY29tWzJdID0gMSwgLmNvbVszXSA9IDAsDQogICAgICAuYml0WzBdID0gMTAsIC5iaXRbMV0gPSAxMiwgLmJpdFsyXSA9IDEyLCAuYml0WzNdID0gMTAsDQoNCiAgICAgIC5jb21bNF0gPSAxLCAuY29tWzVdID0gMywgLmNvbVs2XSA9IDIsIC5jb21bN10gPSAyLA0KICAgICAgLmJpdFs0XSA9IDksIC5iaXRbNV0gPSA5LCAuYml0WzZdID0gOSwgLmJpdFs3XSA9IDEwLA0KDQogICAgICAuY29tWzhdID0gMiwgLmNvbVs5XSA9IDMsIC5jb21bMTBdID0gMiwgLmNvbVsxMV0gPSAwLA0KICAgICAgLmJpdFs4XSA9IDExLCAuYml0WzldID0gMTEsIC5iaXRbMTBdID0gMTIsIC5iaXRbMTFdID0gMTEsDQoNCiAgICAgIC5jb21bMTJdID0gMSwgLmNvbVsxM10gPSAxLA0KICAgICAgLmJpdFsxMl0gPSAxMSwgLmJpdFsxM10gPSAxMA0KICAgIH0sDQogICAgeyAvKiAyICovDQogICAgICAuY29tWzBdID0gMywgLmNvbVsxXSA9IDMsIC5jb21bMl0gPSAxLCAuY29tWzNdID0gMCwNCiAgICAgIC5iaXRbMF0gPSAxNCwgLmJpdFsxXSA9IDE2LCAuYml0WzJdID0gMTYsIC5iaXRbM10gPSAxNCwNCg0KICAgICAgLmNvbVs0XSA9IDEsIC5jb21bNV0gPSAzLCAuY29tWzZdID0gMiwgLmNvbVs3XSA9IDIsDQogICAgICAuYml0WzRdID0gMTMsIC5iaXRbNV0gPSAxMywgLmJpdFs2XSA9IDEzLCAuYml0WzddID0gMTQsDQoNCiAgICAgIC5jb21bOF0gPSAyLCAuY29tWzldID0gMywgLmNvbVsxMF0gPSAyLCAuY29tWzExXSA9IDAsDQogICAgICAuYml0WzhdID0gMTUsIC5iaXRbOV0gPSAxNSwgLmJpdFsxMF0gPSAxNiwgLmJpdFsxMV0gPSAxNSwNCg0KICAgICAgLmNvbVsxMl0gPSAxLCAuY29tWzEzXSA9IDEsDQogICAgICAuYml0WzEyXSA9IDE1LCAuYml0WzEzXSA9IDE0DQogICAgfSwNCiAgICB7IC8qIDMgKi8NCiAgICAgIC5jb21bMF0gPSAzLCAuY29tWzFdID0gMywgLmNvbVsyXSA9IDEsIC5jb21bM10gPSAwLA0KICAgICAgLmJpdFswXSA9IDE4LCAuYml0WzFdID0gMjAsIC5iaXRbMl0gPSAyMCwgLmJpdFszXSA9IDE4LA0KDQogICAgICAuY29tWzRdID0gMSwgLmNvbVs1XSA9IDMsIC5jb21bNl0gPSAyLCAuY29tWzddID0gMiwNCiAgICAgIC5iaXRbNF0gPSAxNywgLmJpdFs1XSA9IDE3LCAuYml0WzZdID0gMTcsIC5iaXRbN10gPSAxOCwNCg0KICAgICAgLmNvbVs4XSA9IDIsIC5jb21bOV0gPSAzLCAuY29tWzEwXSA9IDIsIC5jb21bMTFdID0gMCwNCiAgICAgIC5iaXRbOF0gPSAxOSwgLmJpdFs5XSA9IDE5LCAuYml0WzEwXSA9IDIwLCAuYml0WzExXSA9IDE5LA0KDQogICAgICAuY29tWzEyXSA9IDEsIC5jb21bMTNdID0gMSwNCiAgICAgIC5iaXRbMTJdID0gMTksIC5iaXRbMTNdID0gMTgNCiAgICB9LA0KICAgIHsgLyogNCAqLw0KICAgICAgLmNvbVswXSA9IDMsIC5jb21bMV0gPSAzLCAuY29tWzJdID0gMSwgLmNvbVszXSA9IDAsDQogICAgICAuYml0WzBdID0gMjIsIC5iaXRbMV0gPSAyNCwgLmJpdFsyXSA9IDI0LCAuYml0WzNdID0gMjIsDQoNCiAgICAgIC5jb21bNF0gPSAxLCAuY29tWzVdID0gMywgLmNvbVs2XSA9IDIsIC5jb21bN10gPSAyLA0KICAgICAgLmJpdFs0XSA9IDIxLCAuYml0WzVdID0gMjEsIC5iaXRbNl0gPSAyMSwgLmJpdFs3XSA9IDIyLA0KDQogICAgICAuY29tWzhdID0gMiwgLmNvbVs5XSA9IDMsIC5jb21bMTBdID0gMiwgLmNvbVsxMV0gPSAwLA0KICAgICAgLmJpdFs4XSA9IDIzLCAuYml0WzldID0gMjMsIC5iaXRbMTBdID0gMjQsIC5iaXRbMTFdID0gMjMsDQoNCiAgICAgIC5jb21bMTJdID0gMSwgLmNvbVsxM10gPSAxLA0KICAgICAgLmJpdFsxMl0gPSAyMywgLmJpdFsxM10gPSAyMg0KICAgIH0sDQogICAgeyAvKiA1ICovDQogICAgICAuY29tWzBdID0gMywgLmNvbVsxXSA9IDMsIC5jb21bMl0gPSAxLCAuY29tWzNdID0gMCwNCiAgICAgIC5iaXRbMF0gPSAyNSwgLmJpdFsxXSA9IDYsIC5iaXRbMl0gPSA2LCAuYml0WzNdID0gMjUsDQoNCiAgICAgIC5jb21bNF0gPSAxLCAuY29tWzVdID0gMywgLmNvbVs2XSA9IDIsIC5jb21bN10gPSAyLA0KICAgICAgLmJpdFs0XSA9IDcsIC5iaXRbNV0gPSA3LCAuYml0WzZdID0gNywgLmJpdFs3XSA9IDI1LA0KDQogICAgICAuY29tWzhdID0gMiwgLmNvbVs5XSA9IDMsIC5jb21bMTBdID0gMiwgLmNvbVsxMV0gPSAwLA0KICAgICAgLmJpdFs4XSA9IDI2LCAuYml0WzldID0gMjYsIC5iaXRbMTBdID0gNiwgLmJpdFsxMV0gPSAyNiwNCg0KICAgICAgLmNvbVsxMl0gPSAxLCAuY29tWzEzXSA9IDEsDQogICAgICAuYml0WzEyXSA9IDI2LCAuYml0WzEzXSA9IDI1DQogICAgfSwNCiAgICB7IC8qIDYgKi8NCiAgICAgIC5jb21bMF0gPSAzLCAuY29tWzFdID0gMywgLmNvbVsyXSA9IDEsIC5jb21bM10gPSAwLA0KICAgICAgLmJpdFswXSA9IDI3LCAuYml0WzFdID0gMDQsIC5iaXRbMl0gPSAwNCwgLmJpdFszXSA9IDI3LA0KDQogICAgICAuY29tWzRdID0gMSwgLmNvbVs1XSA9IDMsIC5jb21bNl0gPSAyLCAuY29tWzddID0gMiwNCiAgICAgIC5iaXRbNF0gPSA1LCAuYml0WzVdID0gNSwgLmJpdFs2XSA9IDUsIC5iaXRbN10gPSAyNywNCg0KICAgICAgLmNvbVs4XSA9IDIsIC5jb21bOV0gPSAzLCAuY29tWzEwXSA9IDIsIC5jb21bMTFdID0gMCwNCiAgICAgIC5iaXRbOF0gPSAyOCwgLmJpdFs5XSA9IDI4LCAuYml0WzEwXSA9IDQsIC5iaXRbMTFdID0gMjgsDQoNCiAgICAgIC5jb21bMTJdID0gMSwgLmNvbVsxM10gPSAxLA0KICAgICAgLmJpdFsxMl0gPSAyOCwgLmJpdFsxM10gPSAyNw0KICAgIH0sDQogICAgeyAvKiA3ICovDQogICAgICAuY29tWzBdID0gMywgLmNvbVsxXSA9IDMsIC5jb21bMl0gPSAxLCAuY29tWzNdID0gMCwNCiAgICAgIC5iaXRbMF0gPSAyOSwgLmJpdFsxXSA9IDIsIC5iaXRbMl0gPSAyLCAuYml0WzNdID0gMjksDQoNCiAgICAgIC5jb21bNF0gPSAxLCAuY29tWzVdID0gMywgLmNvbVs2XSA9IDIsIC5jb21bN10gPSAyLA0KICAgICAgLmJpdFs0XSA9IDAzLCAuYml0WzVdID0gMywgLmJpdFs2XSA9IDMsIC5iaXRbN10gPSAyOSwNCg0KICAgICAgLmNvbVs4XSA9IDIsIC5jb21bOV0gPSAzLCAuY29tWzEwXSA9IDIsIC5jb21bMTFdID0gMCwNCiAgICAgIC5iaXRbOF0gPSAzMCwgLmJpdFs5XSA9IDMwLCAuYml0WzEwXSA9IDIsIC5iaXRbMTFdID0gMzAsDQoNCiAgICAgIC5jb21bMTJdID0gMSwgLmNvbVsxM10gPSAxLA0KICAgICAgLmJpdFsxMl0gPSAzMCwgLmJpdFsxM10gPSAyOQ0KICAgIH0NCiAgfSwNCiAgLk51bWJlciAgICAgID0gew0KICAgIHsNCiAgICAgIC5jb21bMF0gPSAzLCAuY29tWzFdID0gMiwgLmNvbVsyXSA9IDEsIC5jb21bM10gPSAwLA0KICAgICAgLmJpdFswXSA9IDMxLCAuYml0WzFdID0gMzEsIC5iaXRbMl0gPSAzMSwgLmJpdFszXSA9IDMxLA0KDQogICAgICAuY29tWzRdID0gNSwgLmNvbVs1XSA9IDcsIC5jb21bNl0gPSA2LA0KICAgICAgLmJpdFs0XSA9IDAsIC5iaXRbNV0gPSAwLCAuYml0WzZdID0gMCwNCiAgICB9LA0KICAgIHsNCiAgICAgIC5jb21bMF0gPSA3LCAuY29tWzFdID0gNiwgLmNvbVsyXSA9IDUsIC5jb21bM10gPSA0LA0KICAgICAgLmJpdFswXSA9IDEsIC5iaXRbMV0gPSAxLCAuYml0WzJdID0gMSwgLmJpdFszXSA9IDEsDQoNCiAgICAgIC5jb21bNF0gPSA1LCAuY29tWzVdID0gNywgLmNvbVs2XSA9IDYsDQogICAgICAuYml0WzRdID0gMywgLmJpdFs1XSA9IDMsIC5iaXRbNl0gPSAzLA0KICAgIH0sDQogICAgew0KICAgICAgLmNvbVswXSA9IDcsIC5jb21bMV0gPSA2LCAuY29tWzJdID0gNSwgLmNvbVszXSA9IDQsDQogICAgICAuYml0WzBdID0gNCwgLmJpdFsxXSA9IDQsIC5iaXRbMl0gPSA0LCAuYml0WzNdID0gNCwNCg0KICAgICAgLmNvbVs0XSA9IDUsIC5jb21bNV0gPSA3LCAuY29tWzZdID0gNiwNCiAgICAgIC5iaXRbNF0gPSA1LCAuYml0WzVdID0gNSwgLmJpdFs2XSA9IDUsDQogICAgfSwNCiAgICB7DQogICAgICAuY29tWzBdID0gNywgLmNvbVsxXSA9IDYsIC5jb21bMl0gPSA1LCAuY29tWzNdID0gNCwNCiAgICAgIC5iaXRbMF0gPSA2LCAuYml0WzFdID0gNiwgLmJpdFsyXSA9IDYsIC5iaXRbM10gPSA2LA0KDQogICAgICAuY29tWzRdID0gNSwgLmNvbVs1XSA9IDcsIC5jb21bNl0gPSA2LA0KICAgICAgLmJpdFs0XSA9IDcsIC5iaXRbNV0gPSA3LCAuYml0WzZdID0gNywNCiAgICB9LA0KICB9LA0KICAuRU1vZGUgICAgICAgPSB7DQogICAgLmNvbVswXSA9IDEsIC5iaXRbMF0gPSAxLA0KICAgIC5jb21bMV0gPSAyLCAuYml0WzFdID0gMSwNCiAgICAuY29tWzJdID0gMSwgLmJpdFsyXSA9IDAsDQogICAgLmNvbVszXSA9IDIsIC5iaXRbM10gPSAwLA0KICAgIC5jb21bNF0gPSAzLCAuYml0WzRdID0gMCwNCiAgfSwNCiAgLkFSaW5nICAgICAgID0gew0KICAgIC5jb21bMF0gPSAwLCAuYml0WzBdID0gMCwNCiAgICAuY29tWzFdID0gMCwgLmJpdFsxXSA9IDEsDQogICAgLmNvbVsyXSA9IDAsIC5iaXRbMl0gPSAyLA0KICAgIC5jb21bM10gPSAwLCAuYml0WzNdID0gMywNCg0KICAgIC5jb21bNF0gPSAwLCAuYml0WzRdID0gNCwNCiAgICAuY29tWzVdID0gMCwgLmJpdFs1XSA9IDUsDQogICAgLmNvbVs2XSA9IDAsIC5iaXRbNl0gPSA2LA0KICAgIC5jb21bN10gPSAwLCAuYml0WzddID0gNywNCiAgfSwNCiAgLkJhdHRlcnkgICAgID0gew0KICAgIC5jb21bMF0gPSAwLCAuYml0WzBdID0gMTIsDQogICAgLmNvbVsxXSA9IDAsIC5iaXRbMV0gPSAxNywNCiAgICAuY29tWzJdID0gMCwgLmJpdFsyXSA9IDIwLA0KICAgIC5jb21bM10gPSAwLCAuYml0WzNdID0gMTMsDQogIH0NCn07DQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCiAqIEBicmllZg0KICogRGVmaW5lcyBoaWdsaWdodGVkIHNlZ21lbnRzIGZvciB0aGUgYWxwaGFiZXQsIHN0YXJ0aW5nIGZyb20gImJsYW5rIiAoU1BBQ0UpDQogKiBVc2VzIGJpdCBwYXR0ZXJuIGFzIGRlZmluZWQgZm9yIHRleHQgc2VnbWVudHMgYWJvdmUuDQogKiBFLmcuIGEgY2FwaXRhbCBPLCB3b3VsZCBoYXZlIGJpdHMgMCAxIDIgMyA0IDUgPT4gMHgwMDNmIGRlZmluZWQNCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCnVpbnQxNl90IEVNX2FscGhhYmV0W10gPSB7DQogIDB4MDAwMCwgLyogc3BhY2UgKi8NCiAgMHgxMTAwLCAvKiAhICovDQogIDB4MDI4MCwgLyogIiAqLw0KICAweDAwMDAsIC8qICMgKi8NCiAgMHgwMDAwLCAvKiAkICovDQogIDB4MDAwMCwgLyogJSAqLw0KICAweDAwMDAsIC8qICYgKi8NCiAgMHgwMDAwLCAvKiCjICovDQogIDB4MDAzOSwgLyogKCAqLw0KICAweDAwMGYsIC8qICkgKi8NCiAgMHgwMDAwLCAvKiAqICovDQogIDB4MTU0MCwgLyogKyAqLw0KICAweDAwMDAsIC8qICwgKi8NCiAgMHgwNDQwLCAvKiAtICovDQogIDB4MDAwMCwgLyogLiAqLw0KICAweDIyMDAsIC8qIC8gKi8NCg0KICAweDAwM2YsIC8qIDAgKi8NCiAgMHgwMDA2LCAvKiAxICovDQogIDB4MDQ1YiwgLyogMiAqLw0KICAweDA0NGYsIC8qIDMgKi8NCiAgMHgwNDY2LCAvKiA0ICovDQogIDB4MDQ2ZCwgLyogNSAqLw0KICAweDA0N2QsIC8qIDYgKi8NCiAgMHgwMDA3LCAvKiA3ICovDQogIDB4MDQ3ZiwgLyogOCAqLw0KICAweDA0NmYsIC8qIDkgKi8NCg0KICAweDAwMDAsIC8qIDogKi8NCiAgMHgwMDAwLCAvKiA7ICovDQogIDB4MGEwMCwgLyogPCAqLw0KICAweDAwMDAsIC8qID0gKi8NCiAgMHgyMDgwLCAvKiA+ICovDQogIDB4MDAwMCwgLyogPyAqLw0KICAweGZmZmYsIC8qIEAgKi8NCg0KICAweDA0NzcsIC8qIEEgKi8NCiAgMHgwYTc5LCAvKiBCICovDQogIDB4MDAzOSwgLyogQyAqLw0KICAweDIwYjAsIC8qIEQgKi8NCiAgMHgwMDc5LCAvKiBFICovDQogIDB4MDA3MSwgLyogRiAqLw0KICAweDA0N2QsIC8qIEcgKi8NCiAgMHgwNDc2LCAvKiBIICovDQogIDB4MDAwNiwgLyogSSAqLw0KICAweDAwMGUsIC8qIEogKi8NCiAgMHgwYTcwLCAvKiBLICovDQogIDB4MDAzOCwgLyogTCAqLw0KICAweDAyYjYsIC8qIE0gKi8NCiAgMHgwOGI2LCAvKiBOICovDQogIDB4MDAzZiwgLyogTyAqLw0KICAweDA0NzMsIC8qIFAgKi8NCiAgMHgwODNmLCAvKiBRICovDQogIDB4MGM3MywgLyogUiAqLw0KICAweDA0NmQsIC8qIFMgKi8NCiAgMHgxMTAxLCAvKiBUICovDQogIDB4MDAzZSwgLyogVSAqLw0KICAweDIyMzAsIC8qIFYgKi8NCiAgMHgyODM2LCAvKiBXICovDQogIDB4MmE4MCwgLyogWCAqLw0KICAweDA0NmUsIC8qIFkgKi8NCiAgMHgyMjA5LCAvKiBaICovDQoNCiAgMHgwMDM5LCAvKiBbICovDQogIDB4MDg4MCwgLyogYmFja3NsYXNoICovDQogIDB4MDAwZiwgLyogXSAqLw0KICAweDAwMDEsIC8qIF4gKi8NCiAgMHgwMDA4LCAvKiBfICovDQogIDB4MDEwMCwgLyogYCAqLw0KDQogIDB4MTA1OCwgLyogYSAqLw0KICAweDA0N2MsIC8qIGIgKi8NCiAgMHgwMDU4LCAvKiBjICovDQogIDB4MDQ1ZSwgLyogZCAqLw0KICAweDIwNTgsIC8qIGUgKi8NCiAgMHgwNDcxLCAvKiBmICovDQogIDB4MGMwYywgLyogZyAqLw0KICAweDA0NzQsIC8qIGggKi8NCiAgMHgwMDA0LCAvKiBpICovDQogIDB4MDAwZSwgLyogaiAqLw0KICAweDBjNzAsIC8qIGsgKi8NCiAgMHgwMDM4LCAvKiBsICovDQogIDB4MTQ1NCwgLyogbSAqLw0KICAweDA0NTQsIC8qIG4gKi8NCiAgMHgwNDVjLCAvKiBvICovDQogIDB4MDQ3MywgLyogcCAqLw0KICAweDA0NjcsIC8qIHEgKi8NCiAgMHgwNDUwLCAvKiByICovDQogIDB4MGMwOCwgLyogcyAqLw0KICAweDAwNzgsIC8qIHQgKi8NCiAgMHgwMDFjLCAvKiB1ICovDQogIDB4MjAxMCwgLyogdiAqLw0KICAweDI4MTQsIC8qIHcgKi8NCiAgMHgyYTgwLCAvKiB4ICovDQogIDB4MDgwYywgLyogeSAqLw0KICAweDIwNDgsIC8qIHogKi8NCg0KICAweDAwMDAsDQp9Ow0KDQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQogKiBAYnJpZWYNCiAqIERlZmluZXMgaGlnbGlnaHRlZCBzZWdtZW50cyBmb3IgdGhlIG51bWVyaWMgZGlzcGxheQ0KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KdWludDE2X3QgRU1fTnVtYmVyc1tdID0NCnsNCiAgMHgwMDNmLCAvKiAwICovDQogIDB4MDAwNiwgLyogMSAqLw0KICAweDAwNWIsIC8qIDIgKi8NCiAgMHgwMDRmLCAvKiAzICovDQogIDB4MDA2NiwgLyogNCAqLw0KICAweDAwNmQsIC8qIDUgKi8NCiAgMHgwMDdkLCAvKiA2ICovDQogIDB4MDAwNywgLyogNyAqLw0KICAweDAwN2YsIC8qIDggKi8NCiAgMHgwMDZmLCAvKiA5ICovDQogIDB4MDA0MCwgLyogLSAqLw0KfTsNCg0KI2VuZGlmDQoNCg==