LyoKICogQ29weXJpZ2h0IDIwMTAgo3VrYXN6IFdvam5ps293aWN6CiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNpbmNsdWRlICJyZXNvdXJjZS5oIgoKTEFOR1VBR0UgTEFOR19QT0xJU0gsIFNVQkxBTkdfREVGQVVMVAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKewogICAgSURTX1RPX1BSSU1JVElWRSAgICAgICAgIkKzuWQgcHJ6eSBwcnpla3N6dGGzY2FuaXUgb2JpZWt0dSBkbyB0eXB1IHBvZHN0YXdvd2VnbyIKICAgIElEU19JTlZBTElEX0NBTExfQVJHICAgICJOaWV3s2GcY2l3ZSB3eXdvs2FuaWUgcHJvY2VkdXJ5IGx1YiBhcmd1bWVudCIKICAgIElEU19DUkVBVEVfT0JKX0VSUk9SICAgICJTZXJ3ZXIgYXV0b21hdHl6YWNqaSBuaWUgbW+/ZSBzdHdvcnp55iBvYmlla3R1IgogICAgSURTX05PX1BST1BFUlRZICAgICAgICAgIk9iaWVrdCBuaWUgd3NwaWVyYSB0ZWogd7NhnGNpd2+cY2kgbHViIG1ldG9keSIKICAgIElEU19BUkdfTk9UX09QVCAgICAgICAgICJBcmd1bWVudCBuaWVvcGNqb25hbG55IgogICAgSURTX1NZTlRBWF9FUlJPUiAgICAgICAgIkKzuWQgc2uzYWRuaSIKICAgIElEU19TRU1JQ09MT04gICAgICAgICAgICJPY3pla2l3YW5lICc7JyIKICAgIElEU19MQlJBQ0tFVCAgICAgICAgICAgICJPY3pla2l3YW5lICcoJyIKICAgIElEU19SQlJBQ0tFVCAgICAgICAgICAgICJPY3pla2l3YW5lICcpJyIKICAgIElEU19VTlRFUk1JTkFURURfU1RSICAgICJOaWV6YWtv8WN6b25hIHN0YbNhIHpuYWtvd2EiCiAgICBJRFNfTk9UX0ZVTkMgICAgICAgICAgICAiT2N6ZWtpd2FuYSBmdW5rY2phIgogICAgSURTX05PVF9EQVRFICAgICAgICAgICAgIidbb2JpZWt0XScgbmllIGplc3Qgb2JpZWt0ZW0gZGF0eSIKICAgIElEU19OT1RfTlVNICAgICAgICAgICAgICJPY3pla2l3YW5hIGxpY3piYSIKICAgIElEU19PQkpFQ1RfRVhQRUNURUQgICAgICJPY3pla2l3YW55IG9iaWVrdCIKICAgIElEU19JTExFR0FMX0FTU0lHTiAgICAgICJOaWVwb3ByYXduZSBwcnp5cGlzYW5pZSIKICAgIElEU19VTkRFRklORUQgICAgICAgICAgICInfCcgamVzdCBuaWV6ZGVmaW5pb3dhbnkiCiAgICBJRFNfTk9UX0JPT0wgICAgICAgICAgICAiT2N6ZWtpd2FueSBvYmlla3QgYm9vbGVhbiIKICAgIElEU19KU0NSSVBUX0VYUEVDVEVEICAgICJPY3pla2l3YW55IG9iaWVrdCBKU2NyaXB0IgogICAgSURTX1JFR0VYUF9TWU5UQVhfRVJST1IgIkKzuWQgc2uzYWRuaSB3IHJlZ3VsYXJueW0gd3lyYb9lbml1IgogICAgSURTX1VSSV9JTlZBTElEX0NIQVIgICAgIktvZG93YW5lIFVSSSB6YXdpZXJhIG5pZXezYZxjaXdlIHpuYWtpIgogICAgSURTX0lOVkFMSURfTEVOR1RIICAgICAgIkSzdWdvnOYgdGFibGljeSBtdXNpIGJ55iBza2/xY3pvbrkgZG9kYXRuabkgbGljemK5IHN0YbO5IgogICAgSURTX0FSUkFZX0VYUEVDVEVEICAgICAgIk9jemVraXdhbnkgb2JpZWt0IHRhYmxpY293eSIKfQo=