MjAwNS0wNy0wNyAgUmVsZWFzZSBNYW5hZ2VyCgoJKiBHQ0MgNC4wLjEgcmVsZWFzZWQuCgoyMDA1LTA2LTA2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGp2LXNjYW4uYyAoZmF0YWxfZXJyb3IsIHdhcm5pbmcpOiBVc2UgZ21zZ2lkIGluc3RlYWQgb2YgbXNnaWQgZm9yCglhcmd1bWVudCBuYW1lLgoJKiBnamF2YWguYyAoZXJyb3IpOiBMaWtld2lzZS4KCSogamF2YS10cmVlLmggKHBhcnNlX2Vycm9yX2NvbnRleHQpOiBMaWtld2lzZS4KCSogcGFyc2UueSAocGFyc2VfZXJyb3JfY29udGV4dCwgcGFyc2Vfd2FybmluZ19jb250ZXh0LAoJaXNzdWVfd2FybmluZ19lcnJvcl9mcm9tX2NvbnRleHQpOiBMaWtld2lzZS4KCjIwMDUtMDYtMDIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzIxNzIyOgoJKiBjbGFzcy5jIChidWlsZF9zdGF0aWNfZmllbGRfcmVmKTogRG9uJ3QgZm9sZCBjb25zdGFudCBmaWVsZHMgaWYKCWN1cnJlbnQgY2xhc3MgaXMgZnJvbSBhIC5jbGFzcyBmaWxlIGFuZCB3ZSdyZSB1c2luZyBpbmRpcmVjdAoJZGlzcGF0Y2guCgoyMDA1LTA1LTI2ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKEdDSl9CSU5BUllDT01QQVRfQURESVRJT04sIAoJR0NKX0JPT1RTVFJBUF9MT0FERVJfQURESVRJT04pOiBSZW1vdmVkLgoJKEZMQUdfQklOQVJZQ09NUEFUX0FCSSwgTUlOT1JfQklOQVJZQ09NUEFUX0FCSV9WRVJTSU9OKTogTmV3LgoJKEdDSl9DVVJSRU5UX0JDX0FCSV9WRVJTSU9OKTogVXNlIG5ldyBtZXRob2QgdG8gY2FsY3VsYXRlIHZlcnNpb24gSUQuCgkocGFyc2VfdmVyc2lvbik6IENhbGN1bGF0ZSB2ZXJzaW9uIElEIHVzaW5nIG5ldyBtZXRob2QuIFVzZSBiaXQtZmxhZwoJZm9yIGZsYWdfaW5kaXJlY3RfZGlzcGF0Y2guCgoyMDA1LTA1LTE1ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8yMTUxOToKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKSA8U0FWRV9FWFBSPjogRG9uJ3QgY2FsbAoJTk9URV9QVVNILgoKMjAwNS0wNS0xMyAgQWFyb24gTHVjaGtvIDxhbHVjaGtvQHJlZGhhdC5jb20+CgoJKiBnY2oudGV4aTogQWRkICctdmVyaWZ5JywgJy1ub3ZlcmlmeScsIGFuZCAnLXZlcmlmeXJlbW90ZScuCgoyMDA1LTA0LTI4ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE5Mjg1CgkqIGphdmEtdHJlZS5oIChzb2Z0X3Jlc29sdmVwb29sZW50cnlfbm9kZSk6IE5ldy4KCShhbGxvY19jb25zdGFudF9maWVsZHJlZik6IERlY2xhcmUuCgkqIGV4cHIuYyAoZXhwYW5kX2phdmFfZmllbGRfb3ApOiBEb24ndCBjYWxsIGNsYXNzX2luaXQgZm9yCglhY2Nlc3NlcyB0byBzdGF0aWMgZmllbGRzIHdpdGggaW5kaXJlY3QgZGlzcGF0Y2guCgkqIGJ1aWx0aW5zLmMgKGluaXRpYWxpemVfYnVpbHRpbnMpOiBBZGQgIl9fYnVpbHRpbl9leHBlY3QiLgoJKiBkZWNsLmMgKHNvZnRfcmVzb2x2ZXBvb2xlbnRyeV9ub2RlKTogTmV3IHZhcmlhYmxlLgoJKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDcmVhdGUgYSBkZWNsIGZvcgoJIl9Kdl9SZXNvbHZlUG9vbEVudHJ5Ii4KCSogY2xhc3MuYyAoYnVpbGRfZmllbGRyZWZfY2FjaGVfZW50cnkpOiBOZXcgZnVuY3Rpb24uCgkqIGNsYXNzLmMgKGJ1aWxkX3N0YXRpY19maWVsZF9yZWYpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfc3RhdGljX2ZpZWxkX3JlZik6IFJld3JpdGUgZm9yIGluZGlyZWN0IGRpc3BhdGNoLgoJKiBjb25zdGFudHMuYyAoZmluZF9uYW1lX2FuZF90eXBlX2NvbnN0YW50X3RyZWUpOiBOZXcgZnVuY3Rpb24uCgkoYWxsb2NfY29uc3RhbnRfZmllbGRyZWYpOiBMaWtld2lzZS4KCShidWlsZF9jb25zdGFudHNfY29uc3RydWN0b3IpOiBIYW5kbGUgQ09OU1RBTlRfRmllbGRyZWYgYW5kCglDT05TVEFOVF9OYW1lQW5kVHlwZS4KCjIwMDUtMDUtMDYgIFRob21hcyBGaXR6c2ltbW9ucyAgPGZpdHpzaW1AcmVkaGF0LmNvbT4KCglQUiBqYXZhLzIwMzA5CgkqIE1ha2UtbGFuZy5pbiAoamF2YSk6IEFkZCBnam5paC4KCShKQVZBX1RBUkdFVF9JTkRFUEVOREVOVF9CSU5fVE9PTFMpOiBMaWtld2lzZS4KCShHSk5JSF9PQkpTKTogTmV3IHZhcmlhYmxlLgoJKGdqbmloJChleGVleHQpKTogTmV3IHRhcmdldC4KCShKQVZBX01BTkZJTEVTKTogQWRkIGdqbmloLjEuCgkoamF2YS51bmluc3RhbGwpOiBBZGQgZ2puaWguMS4KCShqYXZhLm1vc3RseWNsZWFuKTogQWRkIGdqbmloLgoJKGphdmEubWFpbnRhaW5lci1jbGVhbik6IEFkZCBnam5paC4xLgoJKGphdmEvZ2phdmFoLWpuaS5vKTogTmV3IHRhcmdldC4KCSguSU5URVJNRURJQVRFKTogQWRkIGdqbmloLnBvZC4KCShnam5paC5wb2QpOiBOZXcgdGFyZ2V0LgoJKiBjb25maWctbGFuZy5pbiAoc3RhZ2VzdHVmZik6IEFkZCBnam5paC4KCSogZ2NqLnRleGkgKFRvcCk6IEFkZCBnam5paCBub2RlLgoJKEludm9raW5nIGdjamgpOiBBZGQgZGVzY3JpcHRpb25zIG9mIC1mb3JjZSwgLW9sZCwgLXRyYWNlLCAtSiBhbmQKCS1ib290Y2xhc3NwYXRoIG9wdGlvbnMuCgkoSW52b2tpbmcgZ2puaWgpOiBOZXcgbm9kZS4KCSogZ2phdmFoLmMgSW5pdGlhbGl6ZSBmbGFnX2puaSB0byAxIGlmIEpOSV9ERUZBVUxUIGlzIGRlZmluZWQuCgkoVE9PTE5BTUUpOiBOZXcgbWFjcm8uCgkoZXJyb3IpOiBSZXBsYWNlIGhhcmQtY29kZWQgZ2NqaCB3aXRoIFRPT0xOQU1FLgoJKHByb2Nlc3NfZmlsZSk6IExpa2V3aXNlLgoJKHVzYWdlKTogTGlrZXdpc2UuCgkodmVyc2lvbik6IExpa2V3aXNlLgoJKGhlbHApOiBMaWtld2lzZS4gIEFkZCBoZWxwIG91dHB1dCBmb3IgLWZvcmNlLCAtb2xkLCAtdHJhY2UgYW5kIC1KCglvcHRpb25zLgoJKE9QVF9GT1JDRSwgT1BUX09MRCwgT1BUX1RSQUNFKTogTmV3IG1hY3Jvcy4KCShvcHRpb25zKTogQWRkIGZvcmNlLCBvbGQsIHRyYWNlIGFuZCBKIGZpZWxkcy4KCShtYWluKTogSGFuZGxlIC1mb3JjZSwgLW9sZCwgLXRyYWNlIGFuZCAtSiBvcHRpb25zLgoKMjAwNS0wNC0yOCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgamF2YS8yMTExNQoJKiBleHByLmMgKGZvcmNlX2V2YWx1YXRpb25fb3JkZXIpOiBDb252ZXJ0IG91dGdvaW5nIGFyZ3Mgc21hbGxlcgoJdGhhbiBpbnRlZ2VyLgoKCVBSIGphdmEvMjA3NjgKICAgICAgICAqIGphdmEtZXhjZXB0LmggKHN0cnVjdCBlaF9yYW5nZS5oYW5kbGVyKTogUmVtb3ZlIHVudXNlZCBmaWVsZC4KICAgICAgICAoaGFuZGxlX25lc3RlZF9yYW5nZXMpOiBSZW1vdmUgZnVuY3Rpb24gZGVjbGFyYXRpb24uCiAgICAgICAgKHNhbml0eV9jaGVja19leGNlcHRpb25fcmFuZ2UpOiBBZGQgZnVuY3Rpb24gZGVjbGFyYXRpb24uCiAgICAgICAgKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiBSZW1vdmUgY2FsbCB0bwogICAgICAgIGhhbmRsZV9uZXN0ZWRfcmFuZ2VzLgoJKHN0YXJ0X3BjX2NtcCk6IFJlbW92ZSBmdW5jdGlvbi4KCSh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6IFJlbW92ZSBQQyBzb3J0aW5nIG9mIGV4Y2VwdGlvbiByZWdpb25zLgogICAgICAgICogdmVyaWZ5LWdsdWUuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnNfbmV3KTogQ2FsbAogICAgICAgIHNhbml0eV9jaGVja19leGNlcHRpb25fcmFuZ2UuCiAgICAgICAgKiBleGNlcHQuYyAobGlua19oYW5kbGVyLCBlaF9yYW5nZV9mcmVlbGlzdCwgbGlua19oYW5kbGVyLAogICAgICAgIGhhbmRsZV9uZXN0ZWRfcmFuZ2VzKTogUmVtb3ZlLgogICAgICAgIChhZGRfaGFuZGxlcik6IFJld3JpdGUuCiAgICAgICAgKHNhbml0eV9jaGVja19leGNlcHRpb25fcmFuZ2UpOiBOZXcgZnVuY3Rpb24uCiAgICAgICAgKHByaW50X3Jhbmdlcyk6IE5ldyBmdW5jdGlvbi4KCjIwMDUtMDQtMjUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGdqYXZhaC5jLCBqY2YtZHVtcC5jLCBqdi1zY2FuLmMsIGp2Z2VubWFpbi5jOiBSZXBsYWNlIGNhbGxzCgl0byBgdW5sb2NrX3N0cmVhbScgd2l0aCBgdW5sb2NrX3N0ZF9zdHJlYW1zJy4KCjIwMDUtMDQtMjQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGdqYXZhaC5jIChtYWluKTogVW5sb2NrIHRoZSBzdGRpbyBzdHJlYW1zLgoJKiBqY2YtZHVtcC5jIChtYWluKTogTGlrZXdpc2UuCgkqIGp2LXNjYW4uYyAobWFpbik6IExpa2V3aXNlLgoJKiBqdmdlbm1haW4uYyAobWFpbik6IExpa2V3aXNlLgoKMjAwNS0wNC0yNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEvZGVjbC5vLCBqYXZhL3Jlc291cmNlLm8pOiBEZXBlbmQgb24gJChFWFBSX0gpCglpbnN0ZWFkIG9mIGp1c3QgZXhwci5oLgoKMjAwNS0wNC0yMCAgUmVsZWFzZSBNYW5hZ2VyCgoJKiBHQ0MgNC4wLjAgcmVsZWFzZWQuCgoyMDA1LTA0LTA3ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGdjai50ZXhpOiBDb3JyZWN0IGdjai1kYnRvb2wgaW5zdHJ1Y3Rpb25zLgoKMjAwNS0wNC0wNiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKGxpYmdjaiBSdW50aW1lIFByb3BlcnRpZXMpOiBEb2N1bWVudAoJZ251Lmdjai5ydW50aW1lLmVuZG9yc2VkLmRpcnMuCgoyMDA1LTA0LTAxICBUaG9tYXMgRml0enNpbW1vbnMgIDxmaXR6c2ltQHJlZGhhdC5jb20+CgoJKiBnY2oudGV4aSAoSW52b2tpbmcgZ2lqKTogQWRkIGRlc2NyaXB0aW9ucyBvZiBuZXcgLVggb3B0aW9ucy4KCU1lbnRpb24gcmVjb2duaXplZC1hbmQtaWdub3JlZCBjb21wYXRpYmlsaXR5IG9wdGlvbnMuCgkoTWVtb3J5IGFsbG9jYXRpb24pOiBBZGQgZGVzY3JpcHRpb25zIG9mIEp2TWFsbG9jLCBKdlJlYWxsb2MgYW5kCglKdkZyZWUuCgkoQWJvdXQgQ05JKTogQWRkIE1lbW9yeSBhbGxvY2F0aW9uIHNlY3Rpb24uCgoyMDA1LTA0LTAxICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBGaXggdHlwZXMgb2YKCV9Kdl9Nb25pdG9yRW50ZXIsIF9Kdl9Nb25pdG9yRXhpdCwgX0p2X0FsbG9jT2JqZWN0LAoJX0p2X0FsbG9jT2JqZWN0Tm9GaW5hbGl6ZXIsIF9Kdl9UaHJvdywgX0p2X05ld1ByaW1BcnJheSwKCV9Kdl9KTklfUG9wU3lzdGVtRnJhbWUsIF9Kdl9kaXZJLCBfSnZfcmVtSSwgX0p2X2RpdkosIF9Kdl9yZW1KLgoKMjAwNS0wMy0yNCAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQHJlZGhhdC5jb20+CgoJKiBnY2oudGV4aSAoSW52b2tpbmcgZ2NqLWRidG9vbCk6IERvY3VtZW50IG5ldyBMSUJESVIgb3B0aW9uIHRvCgknZ2NqLWRidG9vbCAtcCcuCgoyMDA1LTAzLTE4ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzIwNTIyCgkqIGRlY2wuYyAodXBkYXRlX2FsaWFzZXMpOiBEb24ndCB1cGRhdGUgdmFyaWFibGVzIHRoYXQgYXJlIGFib3V0Cgl0byBkaWUuCgkobWF5YmVfcG9wbGV2ZWxzKTogQWRkIGNvbW1lbnQuCgoyMDA1LTAzLTE2ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCiAgICAgICAgKiBleHByLmMgKGV4cGFuZF9qYXZhX2FycmF5bG9hZCk6IERvbid0IGdlbmVyYXRlIGEKICAgICAgICBOdWxsUG9pbnRlckV4Y2VwdGlvbiBiYXNlZCBvbiB0aGUgdHlwZSBvZiB0aGUgbm9kZS4KICAgICAgICAoYnVpbGRfamF2YV9hcnJheV9sZW5ndGhfYWNjZXNzKTogTGlrZXdpc2UuCgoyMDA1LTAzLTExICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBqY2YtaW8uYyAoY2FjaGluZ19zdGF0KTogVXNlIF9fZXh0ZW5zaW9uX18gdG8gYXZvaWQgcGVkYW50aWMKCXdhcm5pbmcuCgkqIE1ha2UtbGFuZy5pbjogRG9uJ3QgZWxpZGUgd2FybmluZ3MgaW4gamNmLWlvLmMuCgoyMDA1LTAzLTEwICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBnY2oudGV4aSAoSW52b2tpbmcgZ2NqLWRidG9vbCk6IERvY3VtZW50ICdnY2otZGJ0b29sIC1wJy4KCShsaWJnY2ogUnVudGltZSBQcm9wZXJ0aWVzKTogRG9jdW1lbnQgdGhlIGRlZmF1bHQgLmRiLgoKMjAwNS0wMy0wNyAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogdmVyaWZ5LWdsdWUuYyAodmZ5X2lzX2Fzc2lnbmFibGVfZnJvbSk6IFBlcmZvcm0gc3RhdGljIGNoZWNrIHVzaW5nCgljYW5fd2lkZW5fcmVmZXJlbmNlX3RvIGlmIHRoZSBDKysgQUJJIGlzIGluIHVzZS4KCSh2ZnlfZ2V0X2ludGVyZmFjZV9jb3VudCwgdmZ5X2dldF9pbnRlcmZhY2UpOiBSZW1vdmUgdW51c2VkIGZ1bmN0aW9ucy4KCSogdmVyaWZ5LWltcGwuYyAoZGVidWdfcHJpbnQsIG1ha2VfdXRmOF9jb25zdCwgaW5pdF90eXBlLCBjb3B5X3R5cGUsCgl0eXBlX2lzcmVzb2x2ZWQsIGluaXRfc3RhdGUsIHNldF9wYywgc3RhdGVfZ2V0X3BjLAoJX0p2X0J5dGVjb2RlVmVyaWZpZXIpOiBDbGVhbiB1cCB1bnVzZWQgYW5kIGRpc2FibGVkIGZ1bmN0aW9ucy4KCSh2ZXJpZnlfZmFpbCk6IFJlcG9ydCB0aGUgY3VycmVudCBQQyBmcm9tIHRoZSB2ZXJpZmllciBjb250ZXh0LgoJKGZyZWVfc3RhdGUpOiBSZW1vdmUgI2lmIDAgYmxvY2sgdG8gZW5hYmxlIHRoaXMgZnVuY3Rpb24uCgkoZnJlZV92ZXJpZmllcl9jb250ZXh0KTogQ2FsbCBmcmVlX3N0YXRlIG9uIHN0YXRlX2xpc3QgaXRlcmF0b3IKCXZhbHVlcyBiZWZvcmUgZnJlZWluZyB0aGVtLgoJKiBleHByLmMgKHBvcF90eXBlXzApOiBQb3AgY29ycmVjdCB0eXBlIGZvciBlcnJvciBtZXNzYWdlIHdoZW4gc3RhY2sKCWNvbnRhaW5zIGEgbXVsdGktd29yZCB0eXBlLgoKMjAwNS0wMy0wNyAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJKiBleHByLmMgKGJ1aWxkX2phdmFfYXJyYXlfbGVuZ3RoX2FjY2Vzcyk6IFJlbW92ZSAhZmxhZ19uZXdfdmVyaWZpZXIKCWZvciBrbm93biBOVUxMIGFycmF5IGxlbmd0aCBhY2Nlc3MuCgoyMDA1LTAzLTA3ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBnY2oudGV4aSAoSW52b2tpbmcgZ2NqLWRidG9vbCk6IERvY3VtZW50ICctZicuCgoyMDA1LTAzLTA0ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE4MzYyCgkqIGNsYXNzLmMgKHNldF9tZXRob2RfaW5kZXgpOiBEb24ndCBzZXQgbWV0aG9kX2luZGV4IGlmIGl0IGlzCglOVUxMX1RSRUUuCgkobGF5b3V0X2NsYXNzX21ldGhvZCk6IERvbid0IGNvbXBsYWluIGFib3V0ICJub24tc3RhdGljIG1ldGhvZCBmb28KCW92ZXJyaWRlcyBzdGF0aWMgbWV0aG9kIiBpbiB0aGUgY2FzZSBvZiBpbmRpcmVjdCBkaXNwYXRjaC4KCjIwMDUtMDItMjMgIFRob21hcyBGaXR6c2ltbW9ucyAgPGZpdHpzaW1AcmVkaGF0LmNvbT4KCglQUiBsaWJnY2ovMTY5MjMKCSogZ2NqLnRleGkgKEludm9jYXRpb24pOiBBZGQgZGVzY3JpcHRpb25zIG9mIEp2Vk1Jbml0QXJncyBhbmQKCUp2Vk1PcHRpb24uCgoyMDA1LTAyLTIyICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8yMDA1NjoKCSogdmVyaWZ5LWltcGwuYyAoRUlUSEVSKTogTmV3IGRlZmluZS4KCSh0eXBlc19jb21wYXRpYmxlKTogSGFuZGxlIGl0LgoJKGNoZWNrX2ZpZWxkX2NvbnN0YW50KTogVXNlIGl0LgoKMjAwNS0wMi0xOCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGphdmEvMjAwNTY6CgkqIHZlcmlmeS1pbXBsLmMgKHR5cGVzX2VxdWFsKTogRml4ZWQgdGVzdC4KCglQUiBqYXZhLzIwMDU2OgoJKiB2ZXJpZnktZ2x1ZS5jICh2ZnlfY2xhc3NfaGFzX2ZpZWxkKTogTmV3IGZ1bmN0aW9uLgoJKiB2ZXJpZnkuaCAodmZ5X2NsYXNzX2hhc19maWVsZCk6IERlY2xhcmUuCgkqIHZlcmlmeS1pbXBsLmMgKGNoZWNrX2ZpZWxkX2NvbnN0YW50KTogQWRkZWQgJ3B1dGZpZWxkJwoJYXJndW1lbnQuCgkodmVyaWZ5X2luc3RydWN0aW9uc18wKTogVXBkYXRlZC4KCSh0eXBlc19lcXVhbCk6IE5ldyBmdW5jdGlvbi4KCjIwMDUtMDItMTQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE5OTIxOgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpIDxDQUxMX0VYUFI+OiBOb3RlIHRoZQoJc3RhY2sgZWZmZWN0IG9mIG11bHRpYW5ld2FycmF5LgoKMjAwNS0wMi0xNCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgamF2YS8xOTkwNwoJKiBleHByLmMgKGV4cGFuZF9ieXRlX2NvZGUpOiBDYWxsIHByb21vdGVfYXJndW1lbnRzKCkuCgkocHJvbW90ZV9hcmd1bWVudHMpOiBOZXcgZnVuY3Rpb24uCgkqIGRlY2wuYyAoY2hlY2tfbG9jYWxfdW5uYW1lZF92YXJpYWJsZSk6IFJlbXZlIHNwZWNpYWwgY2FzZSBmb3IKCW5ldyB2ZXJpZmllci4KCShmaW5kX2xvY2FsX3ZhcmlhYmxlKTogUHJvbW90ZSBhbGwgYm9vbGVhbiB0eXBlcyB0byBpbnQKCXdoZW4gc2VhcmNoaW5nIGZvciBsb2NhbCB2YXJpYWJsZSBkZWNscy4KCQoyMDA1LTAyLTEyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYnVpbHRpbnMuYywgamF2YS1leGNlcHQuaCwgamNmLXBhcnNlLmMsIGp2LXNjYW4uYywgbGV4LmMsCglwYXJzZS1zY2FuLnk6IFVwZGF0ZSBjb3B5cmlnaHQuCgoyMDA1LTAyLTExICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCglQUiBqYXZhLzE1NTQzCgkqIHBhcnNlLXNjYW4ueSAoaW5wdXRfbG9jYXRpb24pOiBSZW1vdmUgdmFyaWFibGUuCgkobWFpbl9pbnB1dF9maWxlbmFtZSk6IE5ldyAtIHJlcGxhY2VzIGlucHV0X2ZpbGVuYW1lLCB3aGljaCBpc24ndAoJc2V0dGFibGUgaWYgVVNFX01BUFBFRF9MT0NBVElPTi4KCSogbGV4LmMgKGphdmFfaW5pdF9sZXgpOiBXcmFwIHNvbWUgbW9yZSBwbGFjZXMgaW4gI2lmbmRlZiBKQzEtTElURSwKCXNvIHdlIGRvbid0IHJlZmVyZW5jZSBpbnB1dF9sb2NhdGlvbiBvciB3Zmxfb3BlcmF0b3IgaW4gdGhhdCBjYXNlLgoJKiBqdi1zY2FuLmMgKGV4cGFuZF9sb2NhdGlvbik6IFJlbW92ZSAtIG5vIGxvbmdlciB1c2VkLgoJKG1haW4pOiBTZXQgbWFpbl9pbnB1dF9maWxlbmFtZSByYXRoZXIgdGhhbiBpbnB1dF9maWxlbmFtZS4KCjIwMDUtMDItMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5jIChpbml0aWFsaXplX2J1aWx0aW5zKTogQ2FsbCBidWlsZF9jb21tb25fYnVpbHRpbl9ub2Rlcy4KCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBjb25zdF9wdHJfdHlwZV9ub2RlLgoKMjAwNS0wMi0wOCAgTWFyY2luIERhbGVja2kgIDxtYXJ0aW5AZGFsZWNraS5kZT4KCgkqIGV4cHIuYyAoYWRkX3R5cGVfYXNzZXJ0aW9uKTogVXNlIHRoZSBwcm9wZXIgZW51bWVyYXRpb24gdHlwZSwKCXNpbmNlIHRoaXMgaXMgd2hhdCBodGFiX2ZpbmRfc2xvdCgpIGlzIGV4cGVjdGluZy4KCjIwMDUtMDItMDYgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogZ2NqLnRleGk6IFVwZGF0ZSBjb3B5cmlnaHQgZGF0ZXMuCgoyMDA1LTAyLTAyICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBnY2oudGV4aSAobGliZ2NqIFJ1bnRpbWUgUHJvcGVydGllcyk6IERlZmF1bHQgbGlicmFyeV9jb250cm9sCgl0byAnY2FjaGUnLgoKMjAwNS0wMi0wMiAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJUFIgamF2YS8xNTU0MwoJKiBwYXJzZS1zY2FuLnkgKGZvcm1hbF9wYXJhbWV0ZXIpOiBVc2UgJDIgKHR5cGUpIGluc3RlYWQgb2YgJCQKCShtb2RpZmllcnMpIHdoZW4gc3F1YXJlIGJyYWNrZXRzIGFyZSBwcmVzZW50IGluIGEgZGVjbGFyYXRpb24gZm9yCglhIGZpbmFsIHBhcmFtdGVyLgoJKiBqdi1zY2FuLmMgKG1haW4pOiBTZXQgaW5wdXRfZmlsZW5hbWUgYW5kIGlucHV0X2xpbmUuCgoyMDA1LTAyLTAxICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8xOTc0MjoKCSogZ2phdmFoLmMgKGdldF9maWVsZF9uYW1lKTogRG9uJ3Qgb3ZlcnJpZGUgbmFtZSBmb3IgSk5JIGhlYWRlci4KCjIwMDUtMDItMDEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogSW1wbGVtZW50IFJTSElGVF9FWFBSCglvZiB1bnNpZ25lZCB0eXBlcyB1c2luZyBpdXNociBhbmQgbHVzaHIgSlZNIGJ5dGVjb2Rlcy4KCjIwMDUtMDItMDEgIFJhbmppdCBNYXRoZXcgIDxybWF0aGV3QGhvdG1haWwuY29tPgoKCVBSIGphdmEvMTk3MzgKCSogZ2phdmFoLmMgKGpuaV9wcmludF9mbG9hdCk6IERvIG5vdCBlbWl0IGZsb2F0aW5nLXBvaW50Cglpbml0aWFsaXNlciBmb3IgYSBzdGF0aWMgZmluYWwgZmllbGQuCgkoam5pX3ByaW50X2RvdWJsZSk6IExpa2V3aXNlLgoKMjAwNS0wMi0wMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglSZXZlcnQ6CgkyMDA1LTAxLTMxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoJKiBnamF2YWguYyAocHJpbnRfZmllbGRfaW5mbyk6IE1hcmsgc3RhdGljIGRhdGEgbWVtYmVycyBvZgoJZmxvYXRpbmctcG9pbnQgdHlwZSB3aXRoICJfX2V4dGVuc2lvbl9fIi4KCjIwMDUtMDEtMzEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnamF2YWguYyAocHJpbnRfZmllbGRfaW5mbyk6IE1hcmsgc3RhdGljIGRhdGEgbWVtYmVycyBvZgoJZmxvYXRpbmctcG9pbnQgdHlwZSB3aXRoICJfX2V4dGVuc2lvbl9fIi4KCjIwMDUtMDItMDEgIFJhbmppdCBNYXRoZXcgIDxybWF0aGV3QGhvdG1haWwuY29tPgoKCVBSIGphdmEvOTE1NwoJKiBwYXJzZS55IChidWlsZF9zdHJpbmdfY29uY2F0ZW5hdGlvbik6IFJlbW92ZSByZWR1bmRhbnQgaWYuCgkocGF0Y2hfY29uZGl0aW9uYWxfZXhwcik6IEF0dGVtcHQgdG8gcGF0Y2hfc3RyaW5nKCkgdGhlIGNvbmRpdGlvbgoJb2YgYSA/OiBhcyB3ZWxsLCBpbiBhZGRpdGlvbiB0byBpdHMgb3RoZXIgb3BlcmFuZHMuCgoyMDA1LTAxLTI1ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEvamF2YS10cmVlLWlubGluZS5vKTogUmVtb3ZlZC4KCjIwMDUtMDEtMjUgIFJhbmppdCBNYXRoZXcgIDxybWF0aGV3QGhvdG1haWwuY29tPgoKCVBSIGphdmEvMTkwNzAKCSogcGFyc2UueSAocGF0Y2hfYmlub3ApOiBBbGxvdyBjb21wYXJpc29ucyBhZ2FpbnN0IE5VTEwgb25seQoJaWYgdGhlIG90aGVyIG9wZXJhbmQgaXMgb2YgYSByZWZlcmVuY2UgdHlwZS4KCjIwMDUtMDEtMjQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGphdmEtdHJlZS5oIChnY2pfYWJpX3ZlcnNpb24pOiBEZWNsYXJlLgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzX2RhdGEpOiBQdXNoIGdjal9hYmlfdmVyc2lvbiBpbnRvICJuZXh0IgoJZmllbGQuICBSZW5hbWVkIGZpZWxkLgoJKiBkZWNsLmMgKGdjal9hYmlfdmVyc2lvbik6IE5ldyBnbG9iYWwuCgkocGFyc2VfdmVyc2lvbik6IE5ldyBmdW5jdGlvbi4KCShqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogQ2FsbCBpdC4gIFJlbmFtZWQgJ25leHQnIGZpZWxkLgoJSW5jbHVkZSB2ZXJzaW9uLmguCgkoR0NKX0JJTkFSWUNPTVBBVF9BRERJVElPTik6IE5ldyBkZWZpbmUuCgoyMDA1LTAxLTI0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBqYXZhLzE5Mjk1CgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6IENvbnZlcnNpb25zIGJldHdlZW4KCWludGVnZXIgdHlwZXMgb2YgdGhlIHNhbWUgcHJlY2lzaW9uIHNob3VsZG4ndCBnZW5lcmF0ZSB3aWRlbmluZwoJb3IgbmFycm93aW5nIGNvbnZlcnNpb24gYnl0ZWNvZGVzLgoKMjAwNS0wMS0yMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGphdmEtZXhjZXB0LmgsIGphdmEtdHJlZS5oOiBSZW1vdmUgdW51c2VkIHByb3RvdHlwZXMuCgoyMDA1LTAxLTIwICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBnY2MuZ251Lm9yZz4KCglQUiBqYXZhLzE4MDkxOgoJKiBqY2Ytd3JpdGUuYyAocGVyZm9ybV9yZWxvY2F0aW9ucyk6IERvbid0IGNhbGwgbWVtY3B5IGlmIHNvdXJjZQoJYW5kIGRlc3RpbmF0aW9uIGFyZSB0aGUgc2FtZS4KCjIwMDUtMDEtMTcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHZlcmlmeS1pbXBsLmMgKGdldF9zaG9ydCk6IFNpZ24gZXh0ZW5kLgoJKGdldF9pbnQpOiBMaWtld2lzZS4KCjIwMDUtMDEtMTIgIFJhbmppdCBNYXRoZXcgIDxybWF0aGV3QGhvdG1haWwuY29tPgoKCSogZXhwci5jIChidWlsZF9qbmlfc3R1Yik6IFJlcGxhY2UgbWlzdGFrZW4gdXNlIG9mIFRZUEVfU0laRV9VTklUCgl3aXRoIFRZUEVfU0laRS4KCjIwMDUtMDEtMTAgIFJhbmppdCBNYXRoZXcgIDxybWF0aGV3QGhvdG1haWwuY29tPgoKCSogdmVyaWZ5LmM6IFJldmVydCB0byB0aGUgdmVyc2lvbiBiZWZvcmUgdGhlIEJDLUFCSSBtZXJnZS4KCjIwMDUtMDEtMTAgIFJhbmppdCBNYXRoZXcgIDxybWF0aGV3QGhvdG1haWwuY29tPgoKCVBSIGphdmEvMTkyNzcKCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KTogVGFrZSBjYXJlIG9mIHJlZmVyZW5jZXMgdGhhdCBkbyBub3QKCWhhdmUgYW4gZXhwbGljaXQgZmluYWwgdmFyaWFibGUgZGVjbGFyYXRpb24gKGUuZy4gYXJyYXkgbGVuZ3RoCglhY2Nlc3MpIGZvciBwcmUvcG9zdCBpbi9kZS1jcmVtZW50IG9wZXJhdG9ycy4KCjIwMDUtMDEtMDggIE1hcmsgV2llbGFhcmQgIDxtYXJrQGtsb21wLm9yZz4KCgkqIHBhcnNlLnkgKHByb2Nlc3NfaW1wb3J0cyk6IEFsbG9jYXRlIChhbmQgZnJlZSkgb3JpZ2luYWxfbmFtZSBvbmx5Cgl3aGVuIG5vdCBhbHJlYWR5IGRlZmluZWQuCgkqIGpjZi1wYXJzZS5jIChyZWFkX2NsYXNzKTogRnJlZSByZXN1bHRzIG9mIGZpbmRfY2xhc3MoKSBhbmQKCWxyZWFscGF0aCgpLgoJKGphdmFfcGFyc2VfZmlsZSk6IEtlZXAgcG9pbnRlciB0byBoZWFkIG9mIGZpbGVfbGlzdCBhbmQgZnJlZSB3aGVuCglkb25lLiBGcmVlIHJlc3VsdCBvZiBscmVhbHBhdGgoKS4KCjIwMDUtMDEtMDUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGdjai50ZXhpIChTdGFuZGFyZCBQcm9wZXJ0aWVzKTogamF2YS5leHQuZGlycyBpcyBub3cgdXNlZC4KCjIwMDQtMTItMjAgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogdHlwZWNrLmM6IFVzZSBmb2xkX2NvbnZlcnQgZm9yIGludHMgYW5kIGJvb2xlYW5zLgoKMjAwNC0xMi0xNyAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgamF2YS8xODkzMQoJKiB0eXBlY2suYyAoY29udmVydCk6IFVzZSBhIENPTlZFUlRfRVhQUiB3aGVuIGNvbnZlcnRpbmcgdG8KCUJPT0xFQU5fVFlQRSBvciBDSEFSX1RZUEUuCgkoY29udmVydF90b19ib29sZWFuLCBjb252ZXJ0X3RvX2NoYXIpIDogUmVtb3ZlLgoJKiBjb252ZXJ0LmggKGNvbnZlcnRfdG9fYm9vbGVhbiwgY29udmVydF90b19jaGFyKSA6IFJlbW92ZS4KCSogZXhwci5jIChleHBhbmRfbG9hZF9pbnRlcm5hbCk6IERvIHR5cGUgY29udmVyc2lvbiBpZiB0eXBlIGlzIG5vdAoJYXMgcmVxdWlyZWQuCgkKMjAwNC0xMi0xMyAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiB0YXJnZXQvMTg0NTkKCSogY2xhc3MuYyAoZW1pdF9yZWdpc3Rlcl9jbGFzc2VzKTogVXNlIFRBUkdFVF9VU0VfSkNSX1NFQ1RJT04uCglVcGRhdGUgY29tbWVudC4KCjIwMDQtMTItMDcgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCVBSIGphdmEvMTg4MTE6CgkqIGpjZi1wYXJzZS5jIChsb2FkX2NsYXNzKTogUmVtb3ZlIHNhbml0eSB0ZXN0IGZvciBtaXNzaW5nIGlubmVyCgljbGFzcyBmaWxlLgoJCjIwMDQtMTItMDYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoSkFWQV9NQU5GSUxFUyk6IEFkZGVkIGdjai1kYnRvb2wuCgkoamF2YS51bmluc3RhbGwpOiBMaWtld2lzZS4KCShqYXZhLm1haW50YWluZXItY2xlYW4pOiBMaWtld2lzZS4KCSguSU5URVJNRURJQVRFKTogTGlrZXdpc2UuCgkoamF2YS5pbnN0YWxsLW1hbik6IExpa2V3aXNlLgoJKGdjai1kYnRvb2wucG9kKTogTmV3IHRhcmdldC4KCSogZ2NqLnRleGkgKENvZGUgR2VuZXJhdGlvbik6IERvY3VtZW50IC1maW5kaXJlY3QtZGlzcGF0Y2guCgkobGliZ2NqIFJ1bnRpbWUgUHJvcGVydGllcyk6IERvY3VtZW50CglnbnUuZ2NqLnByZWNvbXBpbGVkLmRiLnBhdGguCgkoVG9wKTogTGluayB0byAiSW52b2tpbmcgZ2NqLWRidG9vbCIuCgoyMDA0LTEyLTA2ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8xNDg1MzoKCSogamF2YS10cmVlLmggKGV4dHJhY3RfZmllbGRfZGVjbCk6IERlY2xhcmUuCgkqIHBhcnNlLnkgKGV4dHJhY3RfZmllbGRfZGVjbCk6IFJlbmFtZWQgZnJvbQoJc3RyaXBfb3V0X3N0YXRpY19maWVsZF9hY2Nlc3NfZGVjbC4gIE5vIGxvbmdlciBzdGF0aWMuCgkqIGNoZWNrLWluaXQuYyAoZ2V0X3ZhcmlhYmxlX2RlY2wpOiBVbndyYXAgQ09NUE9VTkRfRVhQUnMuCgoyMDA0LTEyLTAzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBsYW5nLmMgKGZsYWdfbmV3X3ZlcmlmaWVyKTogRGVmaW5lLgoJKGphdmFfcG9zdF9vcHRpb25zKTogU2V0IGZsYWdfbmV3X3ZlcmlmaWVyIGlmIGluZGlyZWN0IGRpc3BhdGNoCglpcyBiZWluZyB1c2VkLgoJKiBsYW5nLm9wdCAoZm5ldy12ZXJpZmllcik6IFJlbW92ZWQuCgoyMDA0LTEyLTAzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgYm9vdHN0cmFwLzE0NjE0OgoJKiBNYWtlLWxhbmcuaW4gKGphdmEuaW5zdGFsbC1jb21tb24pOiBPbmx5IGluc3RhbGwgdHJhbnNmb3JtZWQKCWdjamggaWYgZ2NqLWNyb3NzIGV4aXN0cy4KCjIwMDQtMTItMDMgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCVBSIGphdmEvMTg4MTIKCSogZXhjZXB0LmMgKGxpbmtfaGFuZGxlcik6IFBhdGNoICdvdXRlcicgZmllbGQgb2Ygc2libGluZ3Mgb2YgdGhlCglyYW5nZSB3ZSdyZSBkZW1vdGluZy4KCjIwMDQtMTItMDMgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoJCglQUiBqYXZhLzE4Njk3IAoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3NfbWV0aG9kKTogRG9uJ3QgZmFpbCB0byBvdmVycmlkZSBhIG1ldGhvZAoJc2ltcGx5IGJlY2F1c2UgaXQgaGFzIERFQ0xfQVJUSUZJQ0lBTCBzZXQuCgoyMDA0LTEyLTAyICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8xNjY3NToKCSogcGFyc2UueSAoY3JhZnRfY29uc3RydWN0b3IpOiBTcGVjaWFsIGNhc2UgbnVsbF9wb2ludGVyX25vZGUuCgoyMDA0LTEyLTAyICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8xODc0MToKCSogamF2YS1naW1wbGlmeS5jIChqYXZhX2dpbXBsaWZ5X2V4cHIpOiBEb24ndCBjYWxsCglTRVRfRVhQUl9MT0NBVElPTiB1bmxlc3Mgd3JhcHBlZCB0cmVlIGlzIGFuIGV4cHJlc3Npb24uCgoyMDA0LTExLTI3ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGpjZi1wYXJzZS5jIChzZXRfc291cmNlX2ZpbGVuYW1lKTogIEltcHJvdmVtZW50IHRvIEFuZHJldydzIGZpeDoKCUZpeCBmZW5jZXBvc3QgZXJyb3IgaW4gJ2knLCB3aGljaCBnb3QgZXhlY3V0ZWQgb25lIHRvbyBtYW55IHRpbWVzLgoJQWxzbywgZm9sZCBtZW1jcHkgaW50byBleHBsaWNpdCBsb29wLCBhcyBvcmlnaW5hbGx5IGludGVuZGVkLgoJQWxzbywgZnJlZSB0ZW1wb3JhcnkgJ2J1Zicgd2hpY2ggb3RoZXJ3aXNlIGxlYWtzLgoKMjAwNC0xMS0yNyAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBleHByLmMgKGJ1aWxkX2V4cHJfd2ZsKTogT25seSBkZWNsYXJlIGxhc3RfZmlsZSBhbmQgbGFzdF9maWxlbm9kZQoJbG9jYWwgc3RhdGljIHZhcmlhYmxlcyBpZiBub3QgVVNFX01BUFBFRF9MT0NBVElPTi4KCjIwMDQtMTEtMjcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjbGFzcy5jLCBkZWNsLmMsIGV4cHIuYzogRml4IGNvbW1lbnQgdHlwb3MuCgoyMDA0LTExLTI2ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBqYXZhLzE4MzA1CgkqIGRlY2wuYyAoZW5kX2phdmFfbWV0aG9kKTogQ2FsbAoJYXR0YWNoX2luaXRfdGVzdF9pbml0aWFsaXphdGlvbl9mbGFncyBvbiBhbGwgdGhlIGluaXRfZGVjbHMuCgkqIHBhcnNlLnkgKGF0dGFjaF9pbml0X3Rlc3RfaW5pdGlhbGl6YXRpb25fZmxhZ3MpOiBNb3ZlIHRvIC4uLgoJKiBleHByLmMgKGF0dGFjaF9pbml0X3Rlc3RfaW5pdGlhbGl6YXRpb25fZmxhZ3MpOiBoZXJlIGFuZAoJc3VwcG9ydCBCSU5EX0VYUFIgYWxzby4KCSogamF2YS10cmVlLmggKGF0dGFjaF9pbml0X3Rlc3RfaW5pdGlhbGl6YXRpb25fZmxhZ3MpOiBQcm90b3R5cGUuCgkqIGpjZi1wYXJzZS5jIChwYXJzZV9jbGFzc19maWxlKTogRG9uJ3QgZGlzYWJsZSBjbGFzcyBpbml0CglvcHRpbWl6YXRpb24uCgoyMDA0LTExLTI1ICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdqYXZhaC5jLCBqY2YtZHVtcC5jLCBqdi1zY2FuLmMsIGp2c3BlYy5jOiBBdm9pZCBgIGFzIGxlZnQgcXVvdGUKCWluIGRpYWdub3N0aWNzLgoKMjAwNC0xMS0yNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHZlcmlmeS1nbHVlLmMgKHZmeV9pbml0X25hbWUsIHZmeV9jbGluaXRfbmFtZSwgdmZ5X29iamVjdF90eXBlLAoJdmZ5X3N0cmluZ190eXBlLCB2ZnlfdGhyb3dhYmxlX3R5cGUpOiBVc2UgQU5TSSBkZWNsYXJhdGlvbiBmb3JtLgoKMjAwNC0xMS0yNCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogdmVyaWZ5LmMgKGRlZmVyX21lcmdpbmcpOiBEb24ndCB1c2UgQysrLXN0eWxlIGNvbW1lbnQuCgkqIHZlcmlmeS5oIChqYXZhX29wY29kZSk6IEFkZGVkIGphdmFfb3Bjb2RlX2VuZC4KCSogY2xhc3MuYyAoYnVpbGRfY2xhc3NfcmVmKTogUmVtb3ZlIEMrKyBjb21tZW50IGFuZCBvbGQgRklYTUUuCgoJKiB2ZXJpZnktaW1wbC5jICh2ZnlfcHVzaF90eXBlKTogUmVtb3ZlZCBib2d1cyAicmV0dXJuIi4KCShpbml0aWFsaXplX3N0YWNrKTogVXNlIHZmeV9hbGxvYyBhbmQgdmZ5X2ZyZWUuCgkodmVyaWZ5X2luc3RydWN0aW9uc18wKTogTGlrZXdpc2UuCgoJKiBNZXJnZWQgZ2NqLWFiaS0yLWRldi1icmFuY2ggdG8gdHJ1bmsuCgoyMDA0LTExLTI0ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGpjZi1wYXJzZS5jIChwYXJzZV9jbGFzc19maWxlKTogU2V0IGZpbGVfc3RhcnRfbG9jYXRpb24uCgoyMDA0LTExLTEwICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChtYWtlX2ZpZWxkX3ZhbHVlKTogRG9uJ3QgY2FsbCBidWlsZF9zdGF0aWNfZmllbGRfcmVmLgoJKGJ1aWxkX3N0YXRpY19maWVsZF9yZWYpOiBEb24ndCBlbWl0IGRpcmVjdCByZWZlcmVuY2VzIHdoZW4gdXNpbmcKCWluZGlyZWN0IGRpc3BhdGNoLgoKCSogZ2NqLnRleGkgKEludm9raW5nIGdpaik6IERvY3VtZW50IC12ZXJib3NlLiAgUHV0IC12ZXJib3NlIGFuZAoJLXZlcmJvc2U6Y2xhc3MgaW50byBtYW4gcGFnZSBzeW5vcHNpcy4KCjIwMDQtMTEtMDkgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9hcnJheXN0b3JlX2NoZWNrKTogU3RpbGwgZ2VuZXJhdGUgY2hlY2sgaWYKCWVsZW1lbnQgdHlwZSBpcyBpdHNlbGYgYW4gYXJyYXkuCgoyMDA0LTExLTA4ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBqYXZhLXRyZWUuaCAoc29mdF9jaGVja19hc3NpZ25tZW50X25vZGUpOiBSZW1vdmVkLgoJKGVudW0gamF2YV90cmVlX2luZGV4KTogUmVtb3ZlZCBKVElfU09GVF9DSEVDS19BU1NJR05NRU5UX05PREUuCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IERvbid0IGluaXRpYWxpemUKCXNvZnRfY2hlY2tfYXNzaWdubWVudF9ub2RlLgoKMjAwNC0xMS0wNSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAobGF5b3V0X2NsYXNzX21ldGhvZHMpOiBEb24ndCBhZGQgTWlyYW5kYSBtZXRob2RzIHdoZW4KCXVzaW5nIGluZGlyZWN0IGRpc3BhdGNoLgoKMjAwNC0xMS0wNSAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAobWFrZV9jbGFzc19kYXRhKTogQ2FsbCBlbWl0X2Fzc2VydGlvbl90YWJsZSB0byBzZXQgdGhlCgknYXNzZXJ0aW9uX3RhYmxlJyBmaWVsZC4KCShidWlsZF9zaWduYXR1cmVfZm9yX2xpYmdjaik6IE1vdmUgaGVyZSBmcm9tIGV4cHIuYy4KCShhZGRfYXNzZXJ0aW9uX3RhYmxlX2VudHJ5KTogTmV3IGZ1bmN0aW9uLiBDYWxsYmFjayBmb3IgYXNzZXJ0aW9uCgloYXNodGFibGUgdHJhdmVyc2FsLgoJKGVtaXRfYXNzZXJ0aW9uX3RhYmxlKTogTmV3LiBUYWtlIGNsYXNzIGFyZ3VtZW50LCBhbmQgZ2VuZXJhdGUgCglhc3NlcnRpb24gdGFibGUgREVDTCBiYXNlZCBvbiB0aGUgVFlQRV9BU1NFUlRJT05TIGhhc2h0YWJsZS4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IERlZmluZSBhc3NlcnRpb25fZW50cnlfdHlwZSByZWNvcmQuCglQdXNoICdhc3NlcnRpb25fdGFibGUnIGNsYXNzIGZpZWxkIGluc3RlYWQgb2YgJ3ZlcmlmeScuCgkqIGV4cHIuYyAodHlwZV9hc3NlcnRpb25fZXEpOiBDb21wYXJlICdhc3NlcnRpb25fY29kZScgZmllbGQuCgkodHlwZV9hc3NlcnRpb25faGFzaCk6IEluY2x1ZGUgJ2Fzc2VydGlvbl9jb2RlJyBpbiBoYXNoLgoJKGFkZF90eXBlX2Fzc2VydGlvbik6IFJld3JpdHRlbi4gVGFrZSBjbGFzcyBhbmQgYXNzZXJ0aW9uX2NvZGUKCWFyZ3VtZW50cy4gQWRkIGFzc2VydGlvbnMgdG8gdGhlIFRZUEVfQVNTRVJUSU9OUyBoYXNodGFibGUuCgkoY2FuX3dpZGVuX3JlZmVyZW5jZV90byk6IFVzZSBuZXcgYWRkX3R5cGVfYXNzZXJ0aW9uKCkgYXJndW1lbnRzLgoJKiBqYXZhLXRyZWUuaCAoamF2YV90cmVlX2luZGV4KTogQWRkIEpUSV9BU1NFUlRJT05fRU5UUllfVFlQRSwgCglKVElfQVNTRVJUSU9OX1RBQkxFX1RZUEUuIFJlbW92ZSBKVElfVkVSSUZZX0lERU5USUZJRVJfTk9ERS4KCSh2ZXJpZnlfaWRlbnRpZmllcl9ub2RlKTogUmVtb3ZlZC4KCShhc3NlcnRpb25fZW50cnlfdHlwZSwgYXNzZXJ0aW9uX3RhYmxlX3R5cGUpOiBOZXcuCgkoQVNTRVJUSU9OX1RZUEVTX0NPTVBBVElCTEUsIEFTU0VSVElPTl9JU19JTlNUQU5USUFCTEUpOiBOZXcuIFR5cGUKCWFzc2VydGlvbiBjb2RlIGRlZmluaXRpb25zLgoJKHN0cnVjdCB0eXBlX2Fzc2VydGlvbik6IEFkZCBhc3NlcnRpb25fY29kZS4gUmVuYW1lICdzb3VyY2VfdHlwZScgYW5kCgkndGFyZ2V0X3R5cGUnIHRvICdvcDEnIGFuZCAnb3AyJy4KCShhZGRfdHlwZV9hc3NlcnRpb24pOiBEZWNsYXJlLgoJKGxhbmdfcHJpbnRhYmxlX25hbWVfd2xzKTogUmVtb3ZlIHVudXNlZCBkZWZpbml0aW9uLgoJKiB2ZXJpZnktZ2x1ZS5jOiAodmZ5X2lzX2Fzc2lnbmFibGVfZnJvbSk6IE5ldy4gQ2FsbCBhZGRfdHlwZV9hc3NlcnRpb24KCXRvIGVtaXQgcnVudGltZSBhc3NlcnRpb24uCgkodmZ5X25vdGVfc3RhY2tfdHlwZSk6IENsZWFuIHVwIG5vbi1DOTAgZGVjbGFyYXRpb25zLgoJKHZmeV9ub3RlX2xvY2FsX3R5cGUpOiBMaWtld2lzZS4KCSogdmVyaWZ5LmggKHZmeV9pc19hc3NpZ25hYmxlX2Zyb20pOiBEZWNsYXJlLgoJKiB2ZXJpZnktaW1wbC5jIChpc19hc3NpZ25hYmxlX2Zyb21fc2xvdyk6IFJlbW92ZSB1bnVzZWQgZnVuY3Rpb24uCgkocmVmX2NvbXBhdGlibGUpOiBSZW5hbWUgYXJndW1lbnRzLiBDYWxsIHZmeV9pc19hc3NpZ25hYmxlX2Zyb20oKSAKCWluc3RlYWQgb2YgaXNfYXNzaWduYWJsZV9mcm9tX3Nsb3coKS4KCSh0eXBlc19jb21wYXRpYmxlKTogUmVpbnN0YXRlIHJlZl9jb21wYXRpYmxlKCkgY2FsbC4KCjIwMDQtMTEtMDQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3N0YXRpY19maWVsZF9yZWYpOiBSZXZlcnRlZCBwcmV2aW91cyBwYXRjaC4KCgkqIGNsYXNzLmMgKGJ1aWxkX3N0YXRpY19maWVsZF9yZWYpOiBEb24ndCBlbWl0IGRpcmVjdCByZWZlcmVuY2VzCgl3aGVuIHVzaW5nIGluZGlyZWN0IGRpc3BhdGNoLgoKMjAwNC0xMS0wMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZXhwci5jIChleHBhbmRfamF2YV9hcnJheWxvYWQpOiBTZXQgbGhzX3R5cGVfbm9kZS4KCShleHBhbmRfamF2YV9hcnJheXN0b3JlKTogU2V0IHJoc190eXBlX25vZGUuCgoyMDA0LTExLTAyICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBqY2YtcGFyc2UuYyAoY29tcHV0ZV9jbGFzc19uYW1lKTogVXNlIGZpbGVuYW1lIGxlbmd0aCBmcm9tIHppcAoJZGlyZWN0b3J5LCBub3Qgc3RybGVuLgoKCSogZXhwci5jIChleHBhbmRfaW52b2tlKTogTWFyayBuZXcgaW50ZXJmYWNlIG1ldGhvZHMgYXMgYWJzdHJhY3QuCgoyMDA0LTExLTAxICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiB2ZXJpZnktaW1wbC5jIChwdXNoX2p1bXApOiBSZW1vdmVkIGNoZWNrIGZvciB1bmluaXRpYWxpemVkCglvYmplY3RzLgoJKHB1c2hfZXhjZXB0aW9uX2p1bXApOiBMaWtld2lzZS4KCShoYW5kbGVfcmV0X2luc24pOiBMaWtld2lzZS4KCShoYW5kbGVfanNyX2luc24pOiBMaWtld2lzZS4KCShzdGF0ZV9jaGVja19ub191bmluaXRpYWxpemVkX29iamVjdHMpOiBSZW1vdmVkLgoKCSogZGVjbC5jIChjaGVja19sb2NhbF91bm5hbWVkX3ZhcmlhYmxlKTogUmVjb2duaXplCglwcm9tb3RlZC10by1pbnQgcGFyYW1ldGVycyB3aGVuIHVzaW5nIHRoZSBuZXcgdmVyaWZpZXIuCgkqIGV4cHIuYyAoZXhwYW5kX2phdmFfYXJyYXlzdG9yZSk6IEV4cGxpY2l0bHkgcmVxdWVzdCBhcnJheSB0eXBlCgl3aGVuIHVzaW5nIG5ldyB2ZXJpZmllci4KCShleHBhbmRfamF2YV9hcnJheWxvYWQpOiBMaWtld2lzZS4KCShpbnZva2VfYnVpbGRfZHRhYmxlKTogRG9uJ3QgcGFzcyBvYmplY3RfdHlwZV9ub2RlIGFzCglleHByZXNzaW9uIGFyZ3VtZW50IHRvIGJ1aWxkX2phdmFfaW5kaXJlY3RfcmVmLgoJKGJ1aWxkX2phdmFfY2hlY2tfaW5kZXhlZF90eXBlKTogRG8gbm90aGluZy4KCShidWlsZF9qYXZhX2FycmF5c3RvcmVfY2hlY2spOiBIYW5kbGUgY2FzZSB3aGVyZSBhcnJheSBkb2Vzbid0CgloYXZlIGFycmF5IHR5cGUuCgkoYnVpbGRfamF2YV9hcnJheV9sZW5ndGhfYWNjZXNzKTogTGlrZXdpc2UuCgkoZXhwYW5kX2ludm9rZSk6IEhhbmRsZSBjYXNlIHdoZXJlIGludGVyZmFjZSBvdmVycmlkZXMgYSBtZXRob2QKCWZyb20gT2JqZWN0LgoJKHBvcF90eXBlXzApOiBBbHdheXMgc3VjY2VlZCBmb3IgcmVmZXJlbmNlIHR5cGVzLgoJKHByb2Nlc3NfanZtX2luc3RydWN0aW9uKTogRG9uJ3QgcG9wIGEgdmFsdWUgaW4gYSBkZWFkCglleGNlcHRpb24gaGFuZGxlci4KCShwb3BfYXJndW1lbnRzKTogQ29udmVydCBhcmd1bWVudHMgdG8gY29ycmVjdCB0eXBlcy4KCjIwMDQtMTAtMjkgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogamNmLXBhcnNlLmMgKGdpdmVfbmFtZV90b19jbGFzcyk6IFJlbW92ZSBsaW5lIHRoYXQgd2FzCglpbmNvcnJlY3RseSBtZXJnZWQuCgoyMDA0LTEwLTI5ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGpjZi1wYXJzZS5jIChzZXRfc291cmNlX2ZpbGVuYW1lKTogQWRkIGNvZGUgdG8gYnVpbGQgbmV3IHNmbmFtZS4KCjIwMDQtMTAtMjAgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogZGVjbC5jIChlbmRfamF2YV9tZXRob2QpOiBEb24ndCBleHBhbmQgaWYgZmxhZ19zeW50YXhfb25seS4KCjIwMDQtMTAtMjYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHZlcmlmeS5oICh2Znlfbm90aWZ5X3ZlcmlmaWVkKTogUmVtb3ZlZC4KCSogdmVyaWZ5LWdsdWUuYyAodmZ5X25vdGlmeV92ZXJpZmllZCk6IFJlbW92ZWQuCgoyMDA0LTEwLTI2ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiB2ZXJpZnktaW1wbC5jIChkZWJ1Z19wcmludF9zdGF0ZSk6IERlY2xhcmUgYGknIGJlZm9yZSBjb2RlLgoJKG1lcmdlX3R5cGVzKTogTW9kaWZ5IGB0JyB3aGVuIGl0IGlzIG51bGxfdHlwZS4KCjIwMDQtMTAtMjYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHZlcmlmeS1pbXBsLmMgKHR5cGVfcHJpbnQpOiBSZW5hbWVkIGZyb20gcHJpbnQuICBOb3cgc3RhdGljIGFuZAoJdGFrZXMgYW4gYXJndW1lbnQuCgkoZGVidWdfcHJpbnRfc3RhdGUpOiBVc2UgdHlwZV9wcmludC4KCjIwMDQtMTAtMjUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoYnVpbGRfaW52b2tlaW50ZXJmYWNlKTogQ29tcHV0ZSBjb3JyZWN0IG9mZnNldCBmb3IKCWluZGV4IGludG8gaW50ZXJmYWNlIG1ldGhvZHMuCgoyMDA0LTEwLTIwICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBqYXZhLXRyZWUuaCAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnNfbmV3KTogRGVjbGFyZS4KCgkqIGp2c3BlYy5jIChqdmdlbm1haW5fc3BlYyk6IFJlbW92ZSAtZm5ldy12ZXJpZmllciBmcm9tIGNjMQoJY29tbWFuZCBsaW5lLgoKCSogdmVyaWZ5LWltcGwuYyAodmVyaWZ5X2luc3RydWN0aW9ucyk6IENvcnJlY3RseSBoYW5kbGUgd2lkZQoJdHlwZXMgb24gdGhlIHN0YWNrLgoJKiB2ZXJpZnktZ2x1ZS5jICh2ZnlfZ2V0X2NsYXNzX25hbWUpOiBVc2UgREVDTF9OQU1FLgoJKHZmeV9nZXRfY29tcG9uZW50X3R5cGUpOiBTdHJpcCBwb2ludGVyIHR5cGVzLgoJKHZmeV9maW5kX2NsYXNzKTogVXNlIGdldF90eXBlX2Zyb21fc2lnbmF0dXJlLiAgU3RyaXAgcG9pbnRlcgoJdHlwZXMuCglJbmNsdWRlIGphdmEtZXhjZXB0LmguCgoyMDA0LTEwLTIwICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJKiB2ZXJpZnktaW1wbC5jICh0eXBlX2FycmF5X2VsZW1lbnRwb3BfcmF3LCB2ZnlfcG9wX3R5cGVfdCwgCgl2ZnlfcHVzaF90eXBlX3QsIHNldF92YXJpYWJsZSwgYWRkX25ld19zdGF0ZSwgbWVyZ2VfaW50bywKCWhhbmRsZV9qc3JfaW5zbiwgYnJhbmNoX3ByZXBhc3MsIGNoZWNrX2NsYXNzX2NvbnN0YW50LAoJY2hlY2tfd2lkZV9jb25zdGFudCwgZ2V0X29uZV90eXBlLCBjb21wdXRlX3N0YXRpY190eXBlcywgCgl2ZXJpZnlfaW5zdHJ1Y3Rpb25zXzApOiBDbGVhbiB1cCBDOTkgZGVjbGFyYXRpb25zIGFmdGVyIHN0YXRlbWVudHMuCgoyMDA0LTEwLTIwICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiB2ZXJpZnktaW1wbC5jIChtZXJnZV9yZWZzKTogQ29tcGFyZSByZWZlcmVuY2UgYWdhaW5zdCBpdGVyYXRvciwKCW5vdCByZWYyLgoKCSogdmVyaWZ5LWdsdWUuYyAodmZ5X3RhZyk6IE1hc2sgb2ZmIHJlc29sdmVkIGZsYWcuCgoyMDA0LTEwLTE5ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiB2ZXJpZnktaW1wbC5jICh2ZXJpZnlfaW5zdHJ1Y3Rpb25zKTogQ2FsbCB2Znlfbm90ZV9sb2NhbF90eXBlLgoJKGluaXRfc3RhdGVfd2l0aF9zdGFjayk6IEluaXRpYWxpemUgYHRoaXNfdHlwZScgaW4gc3RhdGUuCgkodmVyaWZ5X21ldGhvZCk6IFVzZSBkZWJ1Z19wcmludC4KCSogdmVyaWZ5LWdsdWUuYyAodmZ5X2lzX3ByaW1pdGl2ZSk6IFJlbW92ZWQgZGVidWdnaW5nIHByaW50LgoJKHZmeV9ub3RlX3N0YWNrX2RlcHRoKTogUmV2ZXJ0ZWQgbGFzdCBwYXRjaC4KCSh2Znlfbm90ZV9zdGFja190eXBlKTogTm90ZSBwb2ludGVyIHRvIE9iamVjdCwgbm90IE9iamVjdC4KCSh2Znlfbm90ZV9sb2NhbF90eXBlKTogTGlrZXdpc2UuCgoJKiB2ZXJpZnkuaCAodmZ5X25vdGVfaW5zdHJ1Y3Rpb25fc2Vlbik6IERlY2xhcmUuCgkqIHZlcmlmeS1nbHVlLmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zX25ldyk6IFNldAoJQkNPREVfRVhDRVBUSU9OX1RBUkdFVCBvbiB0YXJnZXQgaW5zdHJ1Y3Rpb24uCgkodmZ5X25vdGVfaW5zdHJ1Y3Rpb25fc2Vlbik6IE5ldyBmdW5jdGlvbi4KCSogdmVyaWZ5LWltcGwuYyAoRkxBR19JTlNOX1NFRU4pOiBOZXcgZGVmaW5lLgoJKHZlcmlmeV9pbnN0cnVjdGlvbnNfMCk6IFNldCBmbGFnIG9uIGluc3RydWN0aW9uLiAgU2F2ZSBzdGF0ZSBmb3IKCVBDPTAgbGF0ZXIuCgkodmVyaWZ5X2luc3RydWN0aW9ucyk6IENhbGwgdmZ5X25vdGVfaW5zdHJ1Y3Rpb25fc2Vlbi4KCgkqIHZlcmlmeS1nbHVlLmMgKHZmeV9ub3RlX3N0YWNrX2RlcHRoKTogRml4IG9mZi1ieS1vbmUgZXJyb3IuCgkodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnNfbmV3KTogQ2FsbCBtZXRob2RfaW5pdF9leGNlcHRpb25zLAoJYWRkX2hhbmRsZXIsIGFuZCBoYW5kbGVfbmVzdGVkX3Jhbmdlcy4KCSogdmVyaWZ5LWltcGwuYyAodmVyaWZ5X21ldGhvZCk6IFJldHVybiAxIG9uIHN1Y2Nlc3MuCgkodmVyaWZ5X2luc3RydWN0aW9uc18wKTogU2F2ZSB0aGUgc3RhdGUgYXQgUEM9MC4KCgkqIHZlcmlmeS1pbXBsLmMgKGluaXRfdHlwZV9mcm9tX2NsYXNzKTogU2V0IGlzX3Jlc29sdmVkIGFuZAoJcmVmX25leHQgb24gbmV3IHJlZl9pbnRlcnNlY3Rpb24uCgkoaW5pdF90eXBlX2Zyb21fc3RyaW5nKTogTGlrZXdpc2UuCgoyMDA0LTEwLTE1ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9ieXRlY29kZSk6IFVzZSB2ZXJpZnlfanZtX2luc3RydWN0aW9uc19uZXcKCWlmIGZsYWdfbmV3X3ZlcmlmaWVyIGlzIHNldC4KCSogamF2YS10cmVlLmggKGZsYWdfbmV3X3ZlcmlmaWVyKTogRGVjbGFyZS4KCSogbGFuZy5vcHQgKGZuZXctdmVyaWZpZXIpOiBOZXcgb3B0aW9uLgoJKiB2ZXJpZnktaW1wbC5jOiBXb3JrIGFyb3VuZCBuYW1lc3BhY2UgcG9sbHV0aW9uIGJ5IHVuZGVmJ2luZyAKCSdjdXJyZW50X2NsYXNzJy4KCShzdHJ1Y3QgdmVyaWZpZXJfY29udGV4dCk6IE1ha2UgJ2J5dGVjb2RlJyBjb25zdC4KCSh2ZXJpZnlfZmFpbF9wYyk6IFBhc3MgLTEgUEMgYXJndW1lbnQgdG8gdmZ5X2ZhaWwuCgkodHlwZXNfY29tcGF0aWJsZSk6IEZvciB0aGUgQkMtQUJJLCBhbHdheXMgY29uc2lkZXIgcmVmZXJlbmNlIHR5cGVzCgljb21wYXRpYmxlLgoJKGNoZWNrX2NsYXNzX2NvbnN0YW50KTogVXNlIHZmci0+Y3VycmVudF9jbGFzcy4KCShjaGVja19jb25zdGFudCk6IExpa2V3aXNlLgoJKGNoZWNrX3dpZGVfY29uc3RhbnQpOiBMaWtld2lzZS4KCShjaGVja19maWVsZF9jb25zdGFudCk6IENoZWNrIGZvciAnTCcgYXQgc3RhcnQgb2YgdHlwZSBuYW1lLgoJKGdldF9vbmVfdHlwZSk6IFJldHVybiBwb2ludGVyIGluc3RlYWQgb2YgdHlwZS4gU2V0IHR5cGUgcmVzdWx0IGluCgljYWxsZXIgdmlhIHBhc3NlZCB0eXBlIHBvaW50ZXIuCgkoY29tcHV0ZV9hcmd1bWVudF90eXBlcyk6IFVwZGF0ZSB0byB1c2UgbmV3IGdldF9vbmVfdHlwZSBhcmd1bWVudHMuCgkoY29tcHV0ZV9yZXR1cm5fdHlwZSk6IExpa2V3aXNlLgoJKG1ha2VfdmVyaWZpZXJfY29udGV4dCk6IE5ldy4gQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgJ3ZmcicuCgkoZnJlZV92ZXJpZmllcl9jb250ZXh0KTogTmV3LiBGcmVlICd2ZnInIGFuZCBpdHMgY29udGVudHMuCgkodmVyaWZ5X21ldGhvZCk6IFJlbW92ZSBBVFRSSUJVVEVfVU5VU0VELiBDYWxsIG1ha2VfdmVyaWZpZXJfY29udGV4dAoJYW5kIGZyZWVfdmVyaWZpZXJfY29udGV4dC4KCjIwMDQtMTAtMTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHZlcmlmeS1nbHVlLmMgKHZmeV9ub3RlX2xvY2FsX3R5cGUpOiBNYXJrIGFyZ3VtZW50IGFzIHVudXNlZC4KCSogdmVyaWZ5LmggKHZmeV9mYWlsKTogRml4ZWQgZm9ybWF0dGluZy4KCgkqIHZlcmlmeS1pbXBsLmMgKHZmcik6IEZpeGVkIGNvbW1lbnQgZm9ybWF0dGluZy4KCShjb2xsYXBzZV90eXBlKTogTmV3IGZ1bmN0aW9uLgoJKHZlcmlmeV9pbnN0cnVjdGlvbnMpOiBOb3RpZnkgY29tcGlsZXIgYWJvdXQgdHlwZSBtYXAuCgkqIHZlcmlmeS5oICh2Znlfbm90ZV9zdGFja19kZXB0aCk6IFVwZGF0ZWQuCgkodmZ5X25vdGVfc3RhY2tfdHlwZSk6IExpa2V3aXNlLgoJKHZmeV9ub3RlX2xvY2FsX3R5cGUpOiBMaWtld2lzZS4KCSh2ZnlfdW5zdWl0YWJsZV90eXBlLCB2ZnlfcmV0dXJuX2FkZHJlc3NfdHlwZSwgdmZ5X251bGxfdHlwZSk6CglEZWNsYXJlLgoJKiB2ZXJpZnktZ2x1ZS5jICh2Znlfbm90ZV9zdGFja19kZXB0aCk6IENvcnJlY3RseSBzaXplIHR5cGUKCXN0YXRlLiAgQWRkZWQgYG1ldGhvZCcgYXJndW1lbnQuCgkodmZ5X25vdGVfc3RhY2tfdHlwZSk6IFJlbmFtZWQgZnJvbSB2Znlfbm90ZV90eXBlLiAgQWRkZWQgYG1ldGhvZCcKCWFyZ3VtZW50LgoJKHZmeV9ub3RlX2xvY2FsX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkodmZ5X3Vuc3VpdGFibGVfdHlwZSk6IExpa2V3aXNlLgoJKHZmeV9yZXR1cm5fYWRkcmVzc190eXBlKTogTGlrZXdpc2UuCgkodmZ5X251bGxfdHlwZSk6IExpa2V3aXNlLgoKCSogdmVyaWZ5LmggKFZGWV9JTl9HQ0MpOiBSZW1vdmVkLgoJKFZGWV9XQU5UX1RZUEVNQVApOiBSZW1vdmVkLgoJKiB2ZXJpZnktaW1wbC5jICh2ZXJpZnlfaW5zdHJ1Y3Rpb25zXzApOiBSZW1vdmVkIHVzZWxlc3MgIlwiLgoJKHN0cnVjdCBzdGF0ZSkgPG5leHQ+OiBVbmNvbW1lbnQuCgoyMDA0LTEwLTEzICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJKiB2ZXJpZnktaW1wbC5jOiBGb3JtYXR0aW5nIGZpeGVzLiBSZWZvcm1hdCBDKystc3R5bGUgY29tbWVudHMgdG8gCglDLXN0eWxlLgoKMjAwNC0xMC0wNiAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogTWFrZS1sYW5nLmluICh2ZXJpZnkubyk6IFJlLWVuYWJsZWQgdGhpcyB0YXJnZXQuCgkqIHZlcmlmeS1nbHVlLmMgKHZmeV9nZXRfaW50ZXJmYWNlX2NvdW50KTogQWRkIEFUVFJJQlVURV9VTlVTRUQuCgkodmZ5X2dldF9pbnRlcmZhY2UpOiBMaWtld2lzZS4KCSh2ZXJpZnlfanZtX2luc3RydWN0aW9uc19uZXcpOiBSZW5hbWVkIGZyb20gdmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMuCgkqIHZlcmlmeS5oICh2ZXJpZnlfanZtX2luc3RydWN0aW9uc19uZXcpOiBEZWNsYXJlLgoJKiB2ZXJpZnktaW1wbC5jIChmcmVlX3N0YXRlKTogVGVtcG9yYXJpbHkgY29tbWVudCBvdXQgdW51c2VkCglmdW5jdGlvbi4KCjIwMDQtMTAtMDYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGphdmEtdHJlZS5oIChKVl9TVEFURV9SRUFEKTogTmV3IGVudW0gdmFsdWUuCgoyMDA0LTEwLTA2ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJKiB2ZXJpZnkuaDogTmV3IGZpbGUuCgoyMDA0LTEwLTA1ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJKiB2ZXJpZnktaW1wbC5jLCB2ZXJpZnktZ2x1ZS5jLCB2ZXJpZnkuaDogTmV3IGZpbGVzLgoJKiBNYWtlLWxhbmcuaW46IEFkZCBydWxlcyBmb3IgdmVyaWZ5LWltcGwubyBhbmQgdmVyaWZ5LWdsdWUuby4KCjIwMDQtMDktMjQgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogZGVjbC5jIChjaGVja19sb2NhbF91bm5hbWVkX3ZhcmlhYmxlKTogQWx3YXlzIHVzZSB0aGUgUEFSTV9ERUNMCglmb3IgYSBzbG90IGlmIGl0J3Mgb2YgcG9pbnRlciB0eXBlLgoKMjAwNC0wOS0xNCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAobWFrZV9jbGFzc19kYXRhKTogQ29ycmVjdGx5IGluaXRpYWxpemUgInN0YXRlIiBmaWVsZC4KCUluaXRpYWxpemUgImVuZ2luZSIgZmllbGQuCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFkZCAiZW5naW5lIiBmaWVsZC4KCjIwMDQtMDktMTAgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCVBSIGphdmEvMTI3NjAKCSogZXhwci5jIChidWlsZF9pbnZva2VpbnRlcmZhY2UpOiBVc2UgZmFzdCBtZXRob2QgZm9yIGludGVyZmFjZQoJZGlzcGF0Y2guCgkqIGphdmEtdHJlZS5oIChlbnVtIGphdmFfdHJlZV9pbmRleCk6IEFkZCBKVElfSVRBQkxFX1RZUEUsCglKVElfSVRBQkxFX1BUUl9UWVBFLgoJKHN0cnVjdCBsYW5nX3R5cGUpOiBBZGQgIGl0YWJsZV9tZXRob2RzLCBpdGFibGVfZGVjbCwgaXRhYmxlX3N5bXNfZGVjbC4KCShlbWl0X3N5bWJvbF90YWJsZSk6IEFkZCBuZXcgYXJnLCBlbGVtZW50X3NpemUuCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IEluaXRpYWxpemUgQ2xhc3MuaXRhYmxlLgoJKiBjbGFzcy5jIChHRU5fVEFCTEUpOiBOZXcgbWFjcm8uCgkoZ2VuX2luZGlyZWN0X2Rpc3BhdGNoX3RhYmxlcyk6IFVzZSBpdC4gIEFkZCBpdGFibGUuCgkobWFrZV9jbGFzc19kYXRhKTogQWRkIG5ldyBhcmcgZm9yIGVtaXRfc3ltYm9sX3RhYmxlKCkuCglFbWl0IGl0YWJsZS4KCShhZGRfbWlyYW5kYV9tZXRob2RzKTogTWFrZSBzdXJlIHNlYXJjaF9jbGFzcyBoYXMgYmVlbiBwYXJzZWQuCgkoZW1pdF9zeW1ib2xfdGFibGUpOiBBZGQgbmV3IGFyZywgZWxlbWVudF9zaXplLgoKMjAwNC0wOS0wNiAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiB2ZXJpZnkuYyAobWVyZ2VfdHlwZXMpOiBSZXR1cm4gT2JqZWN0IGZvciBhbGwgbWVyZ2VzIG9mCglpbnRlcmZhY2VzLgoJKiBleHByLmMgKGFkZF90eXBlX2Fzc2VydGlvbik6IERvbid0IGdlbmVyYXRlIGFzc2VydGlvbnMgd2hlbgoJc291cmNlIHR5cGUgaXMgYXJyYXkgb2YgT2JqZWN0LgoJCQoyMDA0LTA5LTAzICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9jbGFzcyk6IE51bGxpZnkgVFlQRV9WRVJJRllfTUVUSE9ELgoKCSogbGFuZy5jIChqYXZhX3Bvc3Rfb3B0aW9ucyk6IEZvcmNlIGZsYWdfdmVyaWZ5X2ludm9jYXRpb25zIGlmCgl3ZSdyZSBub3QgdXNpbmcgaW5kaXJlY3QgZGlzcGF0Y2guCgoJKiBleHByLmMgKHBvcF90eXBlXzApOiBNb3ZlIHRlc3QgZm9yIGludGVyZmFjZXMgYmVmb3JlIGNhbGwgdG8KCWNhbl93aWRlbl9yZWZlcmVuY2VfdG8oKS4KCShidWlsZF9zaWduYXR1cmVfZm9yX2xpYmdjaik6IFJlbW92ZSBnZW5lcmF0aW9uIG9mIGNhbm9uaWNhbCBhcnJheQoJdHlwZS4KCShhZGRfdHlwZV9hc3NlcnRpb24pOiBDYW5vbmljYWxpemUgYm90aCBhcnJheXMuCglEb24ndCBhc3NlcnQgdGhhdCB0eXBlIFggY2FuIGJlIGFzc2lnbmVkIHRvIE9iamVjdC4KCURvbid0IGFzc2VydCB0aGF0IHR5cGUgWCBhbiBiZSBhc3NpZ25lZCB0byB0eXBlIFguCglEb24ndCBhc3NlcnQgdGhhdCBPYmplY3QgY2FuIGJlIGFzc2lnbmVkIHRvIHR5cGUgWC4KCShjYW5fd2lkZW5fcmVmZXJlbmNlX3RvKTogV2FybiB3aGVuZXZlciB3ZSBnZW5lcmF0ZSBhbiBhc3NlcnRpb24uCgkocHJvY2Vzc19qdm1faW5zdHJ1Y3Rpb24pOiBVc2UgdGhyb3dhYmxlX3R5cGVfbm9kZSBmb3IgdGhlIHR5cGUgb2YKCWFuIGV4Y2VwdGlvbiBjbGFzcy4KCjIwMDQtMDktMDEgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogQ2hhbmdlCgl2ZXJpZnlfaWRlbnRpZmllcl9ub2RlIHRvICJfX3ZlcmlmeSIuCgkqIGV4cHIuYyAoYWRkX3R5cGVfYXNzZXJ0aW9uKTogVXNlIHZlcmlmeV9pZGVudGlmaWVyX25vZGUgZm9yIG5hbWUuCgkqIGphdmEtdHJlZS5oICh2ZXJpZnlfaWRlbnRpZmllcl9ub2RlKTogQ2hhbmdlIHRvICJfX3ZlcmlmeSIuCgoJKiBleHByLmMgKGJ1aWxkX3NpZ25hdHVyZV9mb3JfbGliZ2NqKTogTmV3IGZ1bmN0aW9uLgoJKGFkZF90eXBlX2Fzc2VydGlvbik6IFVzZSBpdCB0byBjb25zdHJ1Y3Qgc2lnbmF0dXJlcyBmb3IKCXNvdXJjZV90eXBlIGFuZCB0YXJnZXRfdHlwZS4KCjIwMDQtMDgtMjcgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogamF2YS10cmVlLmggKGVudW0gamF2YV90cmVlX2luZGV4KTogQWRkIEpUSV9WRVJJRllfSURFTlRJRklFUl9OT0RFLgoJKHZlcmlmeV9pZGVudGlmaWVyX25vZGUpOiBOZXcuCgkoVFlQRV9WRVJJRllfTUVUSE9EKTogTmV3LgoJKHN0cnVjdCB0eXBlX2Fzc2VydGlvbik6IE5ldyB0eXBlLgoJKiBleHByLmMgKHR5cGVfYXNzZXJ0aW9uX2VxKTogTmV3IGZ1bmN0aW9uLgoJKHR5cGVfYXNzZXJ0aW9uX2hhc2gpOiBOZXcgZnVuY3Rpb24uCgkoYWRkX3R5cGVfYXNzZXJ0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGNhbl93aWRlbl9yZWZlcmVuY2VfdG8pOiBDYWxsIGFkZF90eXBlX2Fzc2VydGlvbigpLgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBBZGQgdmVyaWZ5X2lkZW50aWZpZXJfbm9kZS4KCSogY2xhc3MuYyAobWFrZV9jbGFzc19kYXRhKTogSW5pdGlhbGl6ZSBUWVBFX1ZFUklGWV9NRVRIT0QgKHR5cGUpLgoJKGZpbmlzaF9jbGFzcyk6IE91dHB1dCBUWVBFX1ZFUklGWV9NRVRIT0QgKHR5cGUpLgoKCSogZGVjbC5jIChlbmRfamF2YV9tZXRob2QpOiBOdWxsaWZ5IHVudXNlZCBmaWVsZHMuCgoyMDA0LTA4LTE3ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIHZlcmlmeS5jIChkZWZlcl9tZXJnaW5nKTogUXVpZXRlbi4KCSogamNmLXBhcnNlLmMgKGxvYWRfY2xhc3MpOiBPbmx5IHRyeSB0byBvcGVuIGEgY2xhc3MgZmlsZSBpZiBpdCdzCglqYXZhLmxhbmcuT2JqZWN0IG9yIGlmIGl0J3MgcGFydCBvZiB0aGUgY3VycmVudCBjb21waWxhdGlvbi4KCUNoZWNrIHRoYXQgdGhlIGNsYXNzIHdlIGp1c3QgdHJpZWQgdG8gbG9hZCBpcyB0aGUgY2xhc3Mgd2UganVzdAoJbG9hZGVkLiAgUXVpZXRlbi4KCShqYXZhX3BhcnNlX2ZpbGUpOiBTZXQgZmxhZ192ZXJpZnlfaW52b2NhdGlvbnMgb2ZmIGlmIHdlJ3JlCgljb21waWxpbmcgZnJvbSAuY2xhc3MuCgkocGFyc2VfemlwX2ZpbGVfZW50cmllcyk6IEFib3J0IGlmIHdlIHRyeSB0byByZWFkIGEgZHVtbXkgY2xhc3MuCgkqIGV4cHIuYyAoY2FuX3dpZGVuX3JlZmVyZW5jZV90byk6IFF1aWV0ZW4uCgkoYnVpbGRfaW52b2tldmlydHVhbCk6IEFib3J0IGlmIHdlIHRyeSB0byBpbnZva2V2aXJ0dWFsIGFuCglpbnRlcmZhY2UuCgkoZXhwYW5kX2ludm9rZSk6IERvbid0IGJ1aWxkIGEgbm9uLWludGVyZmFjZSBjYWxsIHRvIGFuIGludGVyZmFjZS4KCShidWlsZF9pbnN0YW5jZW9mKTogRG9uJ3QgZG8gcHJlbWF0dXJlIG9wdGltaXphdGlvbiBpZgoJZmxhZ192ZXJpZnlfaW52b2NhdGlvbnMgaXMgbm90IHNldC4KCSogY2xhc3MuYyAoc2V0X3N1cGVyX2luZm8pOiBEaXNhYmxlIGNvZGUgdGhhdCBpbmhlcml0cyBUWVBFX0RVTU1ZCglmcm9tIHN1cGVyY2xhc3MuCgkoYnVpbGRfc3RhdGljX2ZpZWxkX3JlZik6IEFkZCBjb3JyZWN0IHR5cGUgY29udmVyc2lvbiBmb3IKCWZpZWxkX2FkZHJlc3MuCgkoYWRkX21pcmFuZGFfbWV0aG9kcyk6IERpc2FibGUgZ2VuZXJhdGlvbiBvZiBNaXJhbmRhIG1ldGhvZHMgZm9yCglkdW1teSBjbGFzc2VzLgoJKGxheW91dF9jbGFzc19tZXRob2QpOiBEb24ndCBjb21wbGFpbiBhYm91dCBub24tc3RhdGljIG1ldGhvZAoJb3ZlcnJpZGVzIHN0YXRpYyBtZXRob2Qgd2l0aCBkdW1teSBjbGFzc2VzLgoKMjAwNC0wOC0xMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfc3RhdGljX2ZpZWxkX3JlZik6IFJlLWVuYWJsZSBhdGFibGUgbG9va3VwcyBmb3IKCXN0YXRpYyBmaWVsZHMuCgoJKiBwYXJzZS55IChzdHJpcF9vdXRfc3RhdGljX2ZpZWxkX2FjY2Vzc19kZWNsKTogSW5kZW50YXRpb24gZml4LgoKMjAwNC0wOC0xMSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKGxpYmdjaiBSdW50aW1lIFByb3BlcnRpZXMpOiBEb2N1bWVudCBuZXcgcHJvcGVydGllcy4KCjIwMDQtMDgtMDYgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogamNmLXBhcnNlLmMgKGxvYWRfY2xhc3MpOiBDaGVjayB0aGF0IHdlIHJlYWxseSBoYXZlIGxvYWRlZCB0aGUKCWNsYXNzIHdlJ3JlIGxvb2tpbmcgZm9yLgoKMjAwNC0wNy0xOSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiBDb21tZW50IGNoYW5nZSBvbmx5LgoKCSogdHlwZWNrLmMgKGJ1aWxkX2phdmFfYXJyYXlfdHlwZSk6IEFkZCBzaXplIGZpZWxkIHRvIGFycmF5IG5hbWUuCgoJKiBqYXZhLXRyZWUuaCAoTE9DQUxfU0xPVF9QKTogTmV3LgoJKHVwZGF0ZV9hbGlhc2VzKTogQWRkIFBDIGFyZ3VtZW50LgoJKHB1c2hkZWNsX2Z1bmN0aW9uX2xldmVsKTogTmV3IGZ1bmN0aW9uLgoKCSogamF2YS1naW1wbGlmeS5jIChqYXZhX2dpbXBsaWZ5X2V4cHIpOiBIYW5kbGUgVkFSX0RFQ0wsCglNT0RJRllfRVhQUiwgYW5kIFNBVkVfRVhQUi4KCShqYXZhX2dpbXBsaWZ5X21vZGlmeV9leHByKTogTmV3IGZ1bmN0aW9uLgoKCSogZXhwci5jIChwdXNoX3R5cGVfMCk6IENhbGwgZmluZF9zdGFja19zbG90KCkgdG8gY3JlYXRlIHRlbXBvcmFyeS4KCShleHBhbmRfaWluYyk6IFBhc3MgUEMgdG8gdXBkYXRlX2FsaWFzZXMoKS4KCShTVE9SRV9JTlRFUk5BTCk6IExpa2V3aXNlLgoJKHByb2Nlc3NfanZtX2luc3RydWN0aW9uKTogTGlrZXdpc2UuCgoJKiBkZWNsLmMgKGJhc2VfZGVjbF9tYXApOiBOZXcgdmFyaWFibGUuCgkodW5pcSk6IE5ldyB2YXJpYWJsZS4KCSh1cGRhdGVfYWxpYXNlcyk6IFJld3JpdGUgd2l0aCBtb3JlIHRob3JvdWdoIGNoZWNraW5nLgoJKGRlYnVnX3ZhcmlhYmxlX3ApOiBOZXcgZnVuY3Rpb24uCgkocHVzaF9qdm1fc2xvdCk6IERvbid0IGluaXRpYWxpemUgbG9jYWwgdmFyaWFibGUuICBEb24ndCBwdXNoZGVjbC4KCShjaGVja19sb2NhbF9uYW1lZF92YXJpYWJsZSk6IERlbGV0ZSB3aG9sZSBmdW5jdGlvbi4KCShpbml0aWFsaXplX2xvY2FsX3ZhcmlhYmxlKTogTmV3IGZ1bmN0aW9uLgoJKGNoZWNrX2xvY2FsX3VubmFtZWRfdmFyaWFibGUpOiBBZGQgY2hlY2tzIGFuZCBjb21tZW50cy4KCShmaW5kX2xvY2FsX3ZhcmlhYmxlKTogUmV3cml0ZS4KCShqYXZhX3JlcGxhY2VfcmVmZXJlbmNlKTogTmV3IGZ1bmN0aW9uLgoJKGZ1bmN0aW9uX2JpbmRpbmdfbGV2ZWwpOiBOZXcgdmFyaWFibGUuCgkocHVzaGRlY2xfZnVuY3Rpb25fbGV2ZWwpOiBOZXcgZnVuY3Rpb24uCgkobWF5YmVfcHVzaGxldmVscyk6IFNldCBERUNMX0xPQ0FMX0VORF9QQy4KCShtYXliZV9wdXNobGV2ZWxzKTogQ2FsbCBwdXNoZGVjbCgpIG9uIGVhY2ggb2YgdGhlIG5ldyBkZWNscy4KCShzdGFydF9qYXZhX21ldGhvZCk6IFJlc2V0IHVuaXEuICBDcmVhdGUgYmFzZV9kZWNsX21hcC4gIFNldAoJZnVuY3Rpb25fYmluZGluZ19sZXZlbC4KCShlbmRfamF2YV9tZXRob2QpOiBOdWxsIHVudXNlZCBmaWVsZHMgdG8gc2F2ZSBtZW1vcnkuCgoyMDA0LTA2LTI5ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfc3RhcnRfamF2YV9oYW5kbGVyKTogUHVzaCBhIG5ldyBiaW5kaW5nIGxldmVsLgoJRG9uJ3QgYnVpbGQgYSBUUllfQ0FUQ0hfRVhQUiBub3csIHdlJ2xsIGRvIGl0IGxhdGVyLiAgQ2FsbAoJcmVnaXN0ZXJfZXhjZXB0aW9uX3JhbmdlKCkgdG8gcmVnaXN0ZXIgd2hlcmUgd2UnbGwgZG8gaXQuCgkoZXhwYW5kX2VuZF9qYXZhX2hhbmRsZXIpOiBSZW1vdmUgb2xkIGJvZ3VzIGNvZGUuICBSZXBsYWNlIHdpdGgKCW5ldyBsb2dpYyB0aGF0IHNpbXBseSBidWlsZHMgVFJZX0NBVENIX0VYUFJzIGFuZCBpbnNlcnRzIHRoZW0gYXQKCXRoZSB0b3Agb2YgdGhlIGV4cHJlc3Npb24gd2UncmUgY3VyZW50bHkgYnVpbGRpbmcuCgkobWF5YmVfZW5kX3RyeSk6IERlbGV0ZS4KCSogZGVjbC5jIChiaW5kaW5nX2xldmVsLmV4Y2VwdGlvbl9yYW5nZSk6IE5ldyBmaWVsZC4KCShjbGVhcl9iaW5kaW5nX2xldmVsKTogQWRkIGZpZWxkIGV4Y2VwdGlvbl9yYW5nZS4gIFJlZm9ybWF0LgoJKHBvcGxldmVsKTogQ2FsbCBleHBhbmRfZW5kX2phdmFfaGFuZGxlcigpLgoJKHBvcGxldmVsKTogQ2FsbCBqYXZhX2FkZF9zdG10IG9ubHkgaWYgZnVuY3Rpb25ib2R5IGlzIGZhbHNlLgoJKG1heWJlX3BvcGxldmVscyk6IERvbid0IGNhbGwgbWF5YmVfZW5kX3RyeSgpIGZyb20gaGVyZS4KCShlbmRfamF2YV9tZXRob2QpOiBDbGVhciBubyBsb25nZXIgdXNlZCB0cmVlcyBpbiBmdW5jdGlvbiBkZWNsLgoJKHJlZ2lzdGVyX2V4Y2VwdGlvbl9yYW5nZSk6IE5ldyBmdW5jdGlvbi4KCSogamF2YS10cmVlLmggKHJlZ2lzdGVyX2V4Y2VwdGlvbl9yYW5nZSwgc3RydWN0IGVoX3JhbmdlKTogRGVjbGFyZS4KCjIwMDQtMDYtMjIgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAoZ2VuX2luZGlyZWN0X2Rpc3BhdGNoX3RhYmxlcyk6IFNldCB0aGUgREVDTF9PV05FUiBvZgoJdGhlIG90YWJsZS4KCSogY2hlY2staW5pdC5jIChnZXRfdmFyaWFibGVfZGVjbCk6IFRlYWNoIGNoZWNrLWluaXQgYWJvdXQKCUZJRUxEX0RFQ0xzIGFkZHJlc3NlZCB2aWEgdGhlIG90YWJsZS4KCSogamNmLXBhcnNlLmMgKGxvYWRfY2xhc3MpOiBDaGVjayBDTEFTU19MT0FERURfUCwgbm90CglDTEFTU19QQVJTRURfUC4KCjIwMDQtMDUtMjggIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogamNmLXBhcnNlLmMgKGxvYWRfY2xhc3MpOiBEb24ndCB0cnkgdG8gcmVhZCBhIGNsYXNzIHRoYXQgd2UndmUKCWFscmVhZHkgcmVhZC4KCgkqIGV4cHIuYyAoYnVpbGRfaW52b2tlaW50ZXJmYWNlKTogVXNlIHRoZSBvbGQtZmFzaGlvbmVkIHdheSBvZgoJZG9pbmcgaW5kaXJlY3QgZGlzcGF0Y2g6IGxvb2sgdXAgaW50ZXJmYWNlcyBieSBuYW1lLgoJKiBqYXZhLXRyZWUuaCAoZW51bSBqYXZhX3RyZWVfaW5kZXgpOiBBZGQKCUpUSV9TT0ZUX0xPT0tVUElOVEVSRkFDRU1FVEhPREJZTkFNRV9OT0RFCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFkZAoJc29mdF9sb29rdXBpbnRlcmZhY2VtZXRob2RieW5hbWVfbm9kZS4KCgkqIGdqYXZhaC5jIChwcmludF9tZXRob2RfaW5mbyk6IEZpbmFsIG1ldGhvZHMgaGF2ZSB2dGFibGUgZW50cmllcywKCXNvIGdqYXZhaCBuZWVkcyB0byBvdXRwdXQgdGhlbS4gCgkqIGNsYXNzLmMgKGxheW91dF9jbGFzc19tZXRob2QpOiBHZW5lcmF0ZSB2dGFibGUgZW50cmllcyBmb3IgZmluYWwKCW1ldGhvZHMuCgkqIHBhcnNlLnkgKGludm9jYXRpb25fbW9kZSk6IFVzZSBJTlZPS0VfVklSVFVBTCBmb3IgaW5kaXJlY3QKCWRpc3BhdGNoLCBldmVuIGlmIGEgbWV0aG9kIGlzIGZpbmFsLgoKMjAwNC0wNS0yNSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChidWlsZF9zeW1ib2xfZW50cnkpOiBDb252ZXJ0IHRoZSBuYW1lcyBvZiBjb25zdHJ1Y3RvcnMKCXRvIGluaXRfaWRlbnRpZmllcl9ub2RlIHdoZW4gZ2VuZXJhdGluZyBhbiBlbnRyeSBmb3IgdGhlIGluZGlyZWN0CglkaXNwYXRjaCB0YWJsZS4KCQoJKiBleHByLmMgKGJ1aWxkX2tub3duX21ldGhvZF9yZWYpOiBHZW5lcmF0ZSBpbmRpcmVjdCBjYWxscyBmb3IKCWFsbCBtZXRob2RzIG1hcmtlZCBERUNMX0VYVEVSTkFMIG9yIFRSRUVfUFVCTElDLgoKMjAwNC0wNS0yNCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgogICAgICAgICogZXhwci5jIChidWlsZF9rbm93bl9tZXRob2RfcmVmKTogTWFrZSBzdXJlIEFSUkFZX1JFRiBhY2Nlc3MgdG8KICAgICAgICBhdGFibGUgZWxlbWVudCBpcyBvZiB0aGUgcmlnaHQgdHlwZS4KCiAgICAgICAgKiBjbGFzcy5jIChidWlsZF9zdGF0aWNfZmllbGRfcmVmKTogQ2FzdCBwb2ludGVyIHRvIGNvcnJlY3QgdHlwZQogICAgICAgIGZvciBmaWVsZC4KCjIwMDQtMDQtMjAgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCgkqIE1lcmdlZCB3aXRoIEhFQUQgYXMgb2YgMjAwNDA1MTQuIERpZmYgYWdhaW5zdAoJZ2NqLWFiaS0yLW1lcmdlLTIwMDQwNTE0LgoKMjAwNC0wNC0xNiAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiB2ZXJpZnkuYyAoY2hlY2tfcGVuZGluZ19ibG9jayk6IERpc2FibGUgc3Vicm91dGluZSBjaGVja3MuCgkoZGVmZXJfbWVyZ2luZyk6IE5ldyBmdW5jdGlvbi4KCShtZXJnZV90eXBlcyk6IElmIHR5cGVzIGFyZSBkdW1teSwgdXNlIGRlZmVyX21lcmdpbmcgdG8gY29tYmluZSB0aGVtLgoJKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogSWYgaW52b2NhdGlvbiBpcyBpbnZva2VpbnRlcmZhY2UgYW5kCgl0YXJnZXQgaXMgZHVtbXksIGFzc3VtZSB0YXJnZXQgcmVhbGx5IGlzIGFuIGludGVyZmFjZS4KCgkqIHBhcnNlLnkgKHBhdGNoX2ludm9rZSk6IEJyZWFrIG91dCBjYWxsIHRvIGphdmFfY3JlYXRlX29iamVjdC4KCgkqIGxhbmcuYyAoZmxhZ192ZXJpZnlfaW52b2NhdGlvbnMpOiBOZXcuCgoJKiBqY2YtcGFyc2UuYyAobG9hZF9jbGFzcyk6IElmIHdlJ3ZlIGFscmVhZHkgZmFpbGVkIHRvIGxvYWQgYQoJY2xhc3MsIGRvbid0IHRyeSBhZ2Fpbi4KCShsb2FkX2NsYXNzKTogSWYgd2UgY2FuJ3QgZmluZCBhIC5jbGFzcyBmaWxlLCBkb24ndCBmYWlsLCBidXQgZW1pdAoJYSB3YXJuaW5nLgoJKHBhcnNlX2NsYXNzX2ZpbGUpOiBEb24ndCBhY3Qgb24gZHVtbXkgbWV0aG9kcy4KCgkqIGphdmEtdHJlZS5oIChmbGFnX3ZlcmlmeV9pbnZvY2F0aW9ucyk6IE5ldy4KCShUWVBFX0RVTU1ZKTogTmV3LgoJKGxhbmdfdHlwZS5kdW1teV9jbGFzcyk6IE5ldyBmaWVsZC4KCShqYXZhX2NyZWF0ZV9vYmplY3QpOiBOZXcgZnVuY3Rpb24uCgkoTUVUSE9EX0RVTU1ZKTogTmV3LgoKCSogZXhwci5jIChidWlsZF9maWVsZF9yZWYpOiBXaWRlbiBmaWVsZCBvZmZzZXQuCgkocG9wX3R5cGVfMCk6IElmIHRoZSB0eXBlIGluIHN0YWNrX3R5cGVfbWFwIGlzIGEgVFJFRV9MSVNULCBjaGVjawoJdGhhdCBlYWNoIG9mIGl0cyBlbGVtZW50cyBpcyBjb21wYXRpYmxlIHdpdGggdGhlIG9uZSB3ZSdyZQoJcG9wcGluZy4KCShwb3BfdHlwZV8wKTogSXNzdWUgYSB3YXJuaW5nIHRvIHNheSB0aGF0IHdlIG5lZWQgdG8gZ2VuZXJhdGUgYQoJcnVudGltZSBjaGVjay4KCShqYXZhX2NyZWF0ZV9vYmplY3QpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfZmllbGRfcmVmKTogT25seSBnZW5lcmF0ZSBoYXJkIHJlZnMgaWYgd2UncmUgbm90IHVzaW5nCglpbmRpcmVjdCBkaXNwYXRjaC4KCShleHBhbmRfamF2YV9maWVsZF9vcCk6IElmIHdlJ3JlIHVzaW5nICF2ZXJpZnlfaW52b2NhdGlvbnMgYW5kIHdlCglzZWUgYSBtaXNzaW5nIGZpZWxkLCBnZW5lcmF0ZSBhIGRlY2wgZm9yIGl0LgoKCShleHBhbmRfaW52b2tlKTogSWYgYSBjbGFzcyBkb2Vzbid0IGhhdmUgdGhlIG1ldGhvZCB3ZSBzZWVrIGFuZAoJd2UncmUgdXNpbmcgIWZsYWdfdmVyaWZ5X2ludm9jYXRpb25zLCBnZW5lcmF0ZSBhIGRlY2wgZm9yIHRoZQoJbWV0aG9kIG5vdy4KCgkoYnVpbGRfa25vd25fbWV0aG9kX3JlZik6IEFsd2F5cyB1c2UgaW5kaXJlY3QgZGlzcGF0Y2ggdmlhIHRoZQoJYXRhYmxlIGZvciBzdGF0aWMgbWV0aG9kcy4KCgkoZXhwYW5kX2phdmFfTkVXKTogQnJlYWsgb3V0IG9iamVjdCBjcmVhdGlvbiBpbnRvIG5ldyBmdW5jdGlvbiwJCglqYXZhX2NyZWF0ZV9vYmplY3QuCgoJKGNhbl93aWRlbl9yZWZlcmVuY2VfdG8pOiBJc3N1ZSBhIHdhcm5pbmcgdG8gc2F5IHRoYXQgd2UgbmVlZCB0bwoJZ2VuZXJhdGUgYSBydW50aW1lIGNoZWNrLgoKCSogY2xhc3MuYyAoc2V0X3N1cGVyX2luZm8pOiBJbmhlcml0IFRZUEVfRFVNTVkgZnJvbSBzdXJlY2xhc3MuCgkobWFrZV9tZXRob2RfdmFsdWUpOiBBbHNvIHVzZSBpbmRleCBmb3IgaW50ZXJmYWNlcy4KCShtYWtlX2NsYXNzX2RhdGEpOiBTa2lwIGR1bW15IGZpZWxkIGZvciBpbmhlcml0ZWQgZGF0YS4KCURvbid0IGJ1aWxkIG1ldGhvZCBhcnJheSBmb3IgZHVtbXkgbWV0aG9kcy4KCVNldCBzaXplX2luX2J5dGUgdG8gLTEgd2hlbiB1c2luZyBpbmlyZWN0IGRpc3BhdGNoCglEb24ndCBidWlsZCBhIGhhcmQgY2xhc3MgcmVmIGlmIHdlIGRvbid0IGhhdmUgYSBoYXJkIHJlZiB0byBvdXIKCXN1cGVyY2xhc3MsIG9yIGlmIHdlJ3JlIHVzaW5nIGluaXJlY3QgZGlzcGF0Y2guCglOdWxsIG91dCBkaXNwYXRjaCB0YWJsZXMuCgoJKGxheW91dF9jbGFzc19tZXRob2QpOiBEb24ndCBjb21wbGFpbiBhYm91dCBub24tc3RhdGljIG1ldGhvZAoJb3ZlcnJpZGVzIHN0YXRpYyBtZXRob2QgaXMgbWV0aG9kIGlzIGFydGlmaWNpYWwuCgoJKGJ1aWxkX3N0YXRpY19maWVsZF9yZWYpOiBEaXNhYmxlIGF0YWJsZSByZWZlcmVuY2VzIHRvIHN0YXRpYwoJZmllbGRzIGZvciB0aGUgdGltZSBiZWluZy4KCgkobGF5b3V0X2NsYXNzX21ldGhvZHMpOiBDaGVjayBmb3IgQ0xBU1NfSU5URVJGQUNFIGFzCgl3ZWxsIGFzIENMQVNTX0FCU1RSQUNULgoKMjAwNC0xMS0yNCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogY2xhc3MuYyAobWFrZV9jbGFzc19kYXRhKTogRG9uJ3QgY2hlY2sgZmxhZ19pbmxpbmVfZnVuY3Rpb25zLgoJKiBsYW5nLmMgKGZsYWdfcmVhbGx5X2lubGluZSk6IFJlbW92ZSB1bnVzZWQgZmxhZy4KCShqYXZhX2hhbmRsZV9vcHRpb24pOiBEb24ndCBzZXQgaXQgaGVyZS4gIFJlbW92ZSBzcGVjaWFsIGhhbmRsaW5nCglvZiBmbGFnX2lubGluZV9mdW5jdGlvbnMgZm9yIEphdmEuCgkoamF2YV9pbml0KTogRG9uJ3Qgc2V0IGZsYWdfaW5saW5lX3RyZWVzIGhlcmUuICBBbHJlYWR5IGRvbmUuLi4KCShqYXZhX3Bvc3Rfb3B0aW9ucyk6IC4uLmhlcmUuICBEb24ndCBjbGVhciBmbGFnX2lubGluZV9mdW5jdGlvbnMuCgoyMDA0LTExLTI0ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBqYXZhLWdpbXBsaWZ5LmMgKGphdmFfZ2ltcGxpZnlfbGFiZWxlZF9ibG9ja19leHByKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfZ2ltcGxpZnlfZXhpdF9ibG9ja19leHByKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfZ2ltcGxpZnlfZXhwcik6IFVzZSB0aGVtIHRvIGdpbXBsaWZ5IEVYSVRfQkxPQ0tfRVhQUiBhbmQKCUxBQkVMRURfQkxPQ0tfRVhQUi4KCSogamF2YS10cmVlLmRlZiAoTEFCRUxFRF9CTE9DS19FWFBSKTogTW92ZWQgZnJvbSB0cmVlLmRlZi4KCShFWElUX0JMT0NLX0VYUFIpOiBMaWtld2lzZS4KCSogamF2YS10cmVlLmggKExBQkVMRURfQkxPQ0tfTEFCRUwpOiBNb3ZlZCBmcm9tIHRyZWUuaC4KCShMQUJFTEVEX0JMT0NLX0JPRFkpOiBMaWtld2lzZS4KCShFWElUX0JMT0NLX0xBQkVMRURfQkxPQ0spOiBMaWtld2lzZS4KCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogRG9uJ3QgaGFuZGxlIHRoZSB1bnVzZWQKCUVYSVRfQkxPQ0tfUkVUVVJOIG9wZXJhbmQuICBVc2UgRVhJVF9CTE9DS19MQUJFTEVEX0JMT0NLIGluc3RlYWQgb2YKCVRSRUVfT1BFUkFORC4KCSogbGFuZy5jIChqYXZhX3RyZWVfaW5saW5pbmdfd2Fsa19zdWJ0cmVlcyk6IEhhbmRsZSBFWElUX0JMT0NLX0VYUFIuCgkoamF2YV9kdW1wX3RyZWUpOiBVc2UgTEFCRUxFRF9CTE9DS19MQUJFTCwgTEFCRUxFRF9CTE9DS19CT0RZLCBhbmQKCUVYSVRfQkxPQ0tfTEFCRUxFRF9CTE9DSyBpbnN0ZWFkIG9mIFRSRUVfT1BFUkFORC4gIERvbid0IGhhbmRsZSB0aGUKCXNlY29uZCBvcGVyYW5kIG9mIEVYSVRfQkxPQ0tfRVhQUi4KCSogcGFyc2UueSAoZmluZF9leHByX3dpdGhfd2ZsKTogVXNlIExBQkVMRURfQkxPQ0tfQk9EWSBpbnN0ZWFkIG9mCglUUkVFX09QRVJBTkQuCgkoYnVpbGRfYmNfc3RhdGVtZW50KTogVXNlIGJ1aWxkMSB0byBidWlsZCBFWElUX0JMT0NLX0VYUFIgbm9kZXMuCgoyMDA0LTExLTIzICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIHhyZWYuaCAoeHJlZl9mbGFnX3ZhbHVlKTogUmVtb3ZlLgoJKHhyZWZfc2V0X2RhdGEsIHhyZWZfZ2V0X2RhdGEpOiBMaWtld2lzZS4KCSh4cmVmX3NldF9jdXJyZW50X2ZwKTogTGlrZXdpc2UuCgkoWFJFRl9OT05FKTogTGlrZXdpc2UuCgkoWFJFRl9HRVRfREFUQSk6IExpa2V3aXNlLgoJKiB4cmVmLmMgKHhyZWZfZmxhZ192YWx1ZSk6IFJlbW92ZS4KCSh4cmVmX3NldF9kYXRhLCB4cmVmX2dldF9kYXRhKTogTGlrZXdpc2UuCgkoeHJlZl9zZXRfY3VycmVudF9mcCk6IExpa2V3aXNlLgoKMjAwNC0xMS0yMyAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBnamF2YWguYyAob3V0cHV0X2RpcmVjdG9yeSk6IE1ha2Ugc3RhdGljLgoJKHRlbXBfZGlyZWN0b3J5KTogTGlrZXdpc2UuCgkKMjAwNC0xMS0xNSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZGVjbC5jIChpbnN0bl9wdHJfdHlwZV9ub2RlKTogUmVtb3ZlZC4KCShsaW5lTnVtYmVyc19wdHJfdHlwZV9ub2RlKTogUmVtb3ZlZC4KCShqaW50X3R5cGUpOiBSZW1vdmVkLgoJKGppbnRfcHRyX3R5cGUpOiBSZW1vdmVkLgoKMjAwNC0xMS0wOSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgamF2YS8xNTU3NgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpOiBJZ25vcmUgREVDTF9FWFBSLgoJKiBleHByLmMgKGFsd2F5c19pbml0aWFsaXplX2NsYXNzX3ApOiBSZWVuYWJsZS4KCShidWlsZF9jbGFzc19pbml0KTogVXNlIGEgdmFyaWFibGUgdG8gc3RvcmUgdGhlIGRlY2wuICBBbHNvIHVzZQoJYm9vbGVhbl9mYWxzZV9ub2RlIGluc3RlYWQgb2YgaW50ZWdlcl96ZXJvX25vZGUuCgkqIHBhcnNlLnkgKGF0dGFjaF9pbml0X3Rlc3RfaW5pdGlhbGl6YXRpb25fZmxhZ3MpOiBBZGQgYSBkZWNsX2V4cHIKCXRvIHRoZSBibG9jay4KCjIwMDQtMTEtMDggIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE2ODQzOgoJKiBnamF2YWguYyAoSEFORExFX0VORF9GSUVMRCk6IENhbGwgcHJpbnRfZmllbGRfaW5mbyB3aGVuCglnZW5lcmF0aW5nIGEgSk5JIGhlYWRlci4KCShwcmludF9maWVsZF9pbmZvKTogSGFuZGxlIEpOSSBoZWFkZXJzLgoJKGpuaV9wcmludF9mbG9hdCk6IExpa2V3aXNlLgoJKGpuaV9wcmludF9kb3VibGUpOiBMaWtld2lzZS4KCjIwMDQtMTEtMDggIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogZGVjbC5jIChlbmRfamF2YV9tZXRob2QpOiBSZW1vdmUgZHVwbGljYXRlZCBjb2RlLgoKMjAwNC0xMS0wNiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KICAgICAgICAgICAgR2VyYWxkIFBmZWlmZXIgIDxnZXJhbGRAcGZlaWZlci5jb20+CgoJKiBsZXguaCAoSEFWRV9JQ09OVik6IFVuZGVmaW5lIGlmIHdlIGRvIG5vdCBoYXZlIEhBVkVfSUNPTlZfSAoJYXMgd2VsbC4KCjIwMDQtMTEtMDIgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE3MjY1CgkqIGNsYXNzLmM6IFJlaW5zdGF0ZSAyMDA0LTA4LTE4IHBhdGNoLiAKCShtYWtlX2xvY2FsX2Z1bmN0aW9uX2FsaWFzKTogRG9uJ3QgY3JlYXRlIGFuIGFsaWFzIGZvciBleHRlcm4gKG5hdGl2ZSkKCWZ1bmN0aW9ucy4KCjIwMDQtMTAtMjIgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgamF2YS8xNzI2NQoJKiBjbGFzcy5jIChtYWtlX2xvY2FsX2Z1bmN0aW9uX2FsaWFzKTogUmV2ZXJ0IDIwMDQtMDgtMTggY2hhbmdlLgoJKG1ha2VfbWV0aG9kX3ZhbHVlKTogTGlrZXdpc2UuCgoyMDA0LTEwLTIxICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE4MDkxOgoJKiBqY2YtcGFyc2UuYyAoc2V0X3NvdXJjZV9maWxlbmFtZSk6IEFkZCBjb2RlIHRvIGJ1aWxkIG5ldyBzZm5hbWUuCgoyMDA0LTEwLTIwICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoZW5kX2phdmFfbWV0aG9kKTogRG9uJ3QgZXhwYW5kIGlmIGZsYWdfc3ludGF4X29ubHkuCglSZW1vdmUgZHVwbGljYXRlZCBjb2RlIGJsb2NrLgoKMjAwNC0xMC0xOCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogTWFrZS1sYW5nLmluIChqYXZhL3BhcnNlLm8td2FybiwgamF2YS9wYXJzZS1zY2FuLm8td2Fybik6CglOZXcgcnVsZXMgdG8gd29yayBhcm91bmQgb2xkIEJpc29uIHdhcm5pbmdzLgoKMjAwNC0xMC0xNyAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogY2xhc3MuYyAoaWRlbnRfc3Vic3QpOiBBbHdheXMgYWxsb2NhIGJ1ZmZlci4KCSogamF2YS1vcGNvZGVzLmggKExBU1RfQU5EX1VOVVNFRF9KQVZBX09QQ09ERSk6IEFkZCB0aGlzIGR1bW15CglvcGNvZGUgYWZ0ZXIgaW5jbHVkaW5nIGphdmFvcC5kZWYuCgkqIGpjZi1kdW1wLmMgKENIRUNLX1BDX0lOX1JBTkdFKTogUmV0dXJuIDAgZnJvbSB0aGUgYXJtIG9mIHRoZQoJY29uZGl0aW9uYWwgZXhwcmVzc2lvbiB0aGF0IGV4aXRzLCB0byBhdm9pZCB3YXJuaW5ncy4KCSogdmVyaWZ5LmMgKENIRUNLX1BDX0lOX1JBTkdFKTogTWFyayB0aGUgX19HTlVDX18gZGVmaW5pdGlvbiBhcwoJYSB1c2VyIG9mIGFuIGV4dGVuc2lvbi4KCSogd2luMzItaG9zdC5jOiBNb3ZlIGNoZWNrIGRvd24gdG8gaGF2ZSBub24tZW1wdHkgZmlsZSB3aGVuCglXSU4zMiBpcyBub3QgZGVmaW5lZC4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS13YXJuKTogQWRkIFNUUklDVF9XQVJOLgoJKGphdmEvamNmLWlvLm8td2Fybik6IERvbid0IGhhdmUgV2Vycm9yIGZvciB0aGlzIGZpbGUuCgkqIGpjZi1pby5jIChjYWNoaW5nX3N0YXQpOiBBZGQgRklYTUUgZm9yIG5vbi1QT1NJWCBzY2FuZGlyIHVzZS4KCjIwMDQtMTAtMTYgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGV4cHIuYyAoZXhwcl9hZGRfbG9jYXRpb24pOiBNb3ZlIGRlY2xhcmF0aW9uIHRvIGJlZm9yZSBhbGwKCXN0YXRlbWVudHMuCgkqIHBhcnNlLnkgKGphdmFfZXhwYW5kX2NsYXNzZXMpOiBEaXR0by4KCSogbGV4LmMgKGphdmFfcGVla191bmljb2RlKTogRGl0dG8uCgoyMDA0LTEwLTE2ICBSYW5qaXQgTWF0aGV3ICA8cm1hdGhld0Bob3RtYWlsLmNvbT4KCgkqIGNoZWNrLWluaXQuYzogVXNlICU8LCAlPiBhbmQgJXEgZm9yIHF1b3RpbmcgaW4gZGlhZ25vc3RpY3MsCglpZiBwb3NzaWJsZSwgZWxzZSBjb252ZXJ0IGBmb28nIHRvICdmb28nLgoJKiBjbGFzcy5jOiBMaWtld2lzZS4KCSogZGVjbC5jOiBMaWtld2lzZS4KCSogZXhwci5jOiBMaWtld2lzZS4KCSogamNmLWlvLmM6IExpa2V3aXNlLgoJKiBqY2YtcGFyc2UuYzogTGlrZXdpc2UuCgkqIGxhbmcuYzogTGlrZXdpc2UuCgkqIGxleC5jOiBMaWtld2lzZS4KCSogcGFyc2UuaDogTGlrZXdpc2UuCgoyMDA0LTEwLTE2ICBSYW5qaXQgTWF0aGV3ICA8cm1hdGhld0Bob3RtYWlsLmNvbT4KCgkqIHBhcnNlLnkgKHBhcnNlX3dhcm5pbmdfY29udGV4dCk6IFJlbW92ZSBBVFRSSUJVVEVfUFJJTlRGXzIgYW5kCglyZW5hbWUgcGFyYW1ldGVyICdtc2cnIHRvICdtc2dpZCcgaW4gZnVuY3Rpb24gZGVjbGFyYXRpb24uCgkoaXNzdWVfd2FybmluZ19lcnJvcl9mcm9tX2NvbnRleHQpOiBMaWtld2lzZS4KCSh5eWVycm9yKTogUmVuYW1lIHBhcmFtZXRlciAnbXNnJyB0byAnbXNnaWQnLgoJKGFsbCBvdmVyKTogVXNlIG5ldyBxdW90aW5nIHN0eWxlIGZvciBkaWFnbm9zdGljcy4KCjIwMDQtMTAtMTUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBib2VobS5jLCBidWlsdGlucy5jLCBqYXZhLWV4Y2VwdC5oLCBqY2YtaW8uYywgamNmLXBhdGguYywKCWpjZi5oLCBsYW5nLXNwZWNzLmgsIGxleC5jLCBsZXguaCwgcmVzb3VyY2UuYywgd2luMzItaG9zdC5jOgoJVXBkYXRlIGNvcHlyaWdodC4KCjIwMDQtMTAtMTQgIE1hdHQgQXVzdGVybiAgPGF1c3Rlcm5AYXBwbGUuY29tPgoKCSogbGFuZy5jIChqYXZhX3RyZWVfaW5saW5pbmdfd2Fsa19zdWJ0cmVlcyk6IExhc3QgYXJnIGlzIHN0cnVjdAoJcG9pbnRlcl9zZXRfdCogbm93LgoJCjIwMDQtMTAtMTMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE1NTc4OgoJKiBsYW5nLm9wdCAoLS1leHRkaXJzKTogRG9jdW1lbnQuCgkqIGp2c3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IFJlY29nbml6ZSAtZW5jb2RpbmcgYW5kCgktZXh0ZGlycy4KCjIwMDQtMTAtMDYgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIHBhcnNlLnkgKGlzc3VlX3dhcm5pbmdfZXJyb3JfZnJvbV9jb250ZXh0KTogVXNlIHZhX2xpc3QgKgoJaW5zdGVhZCBvZiB2YV9saXN0IHBhcmFtZXRlci4KCShwYXJzZV9lcnJvcl9jb250ZXh0KTogVXBkYXRlIGNhbGwuCgkocGFyc2Vfd2FybmluZ19jb250ZXh0KTogTGlrZXdpc2UuCgoyMDA0LTEwLTA1ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcGFyc2UueSwgcGFyc2Utc2Nhbi55OiBBZGQgbGlzdCBvZiBkaWFnbm9zdGljIG1lc3NhZ2VzIHRvCglpbnN1bGF0ZSB0cmFuc2xhdGlvbiB0ZW1wbGF0ZSBmcm9tIHZlcnNpb24gb2YgeWFjYy9iaXNvbiB1c2VkCgl0byBjb21waWxlIHRoZSBncmFtbWFyLgoKMjAwNC0xMC0wNSAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJUHJlcGFyZSBmb3IgJXEsICU8IGFuZCAlPiBpbiBkaWFnbm9zdGljIG1lc3NhZ2Ugc3RyaW5ncy4KCSogamF2YS10cmVlLmggKHBhcnNlX2Vycm9yX2NvbnRleHQpOiByZW1vdmUgQVRUUklCVVRFX1BSSU5URl8yLgoJTmFtZSBzZWNvbmQgcGFyYW1ldGVyICdtc2dpZCcuCgkqIHBhcnNlLnk6IEFkZGl0aW9uYWxseSBpbmNsdWRlIHByZXR0eS1wcmludC5oIGFuZCBkaWFnbm9zdGljLmguCgkoaXNzdWVfd2FybmluZ19lcnJvcl9mcm9tX2NvbnRleHQpOiBVc2UgcHJldHR5LXByaW50ZXIgZnVuY3Rpb25zCglpbnN0ZWFkIG9mIHZzcHJpbnRmIGZvciBjb25zdHJ1Y3RpbmcgZm9ybWF0dGVkIG1lc3NhZ2VzLiBSZW5hbWUKCXBhcmFtZXRlciAnbXNnJyB0byAnbXNnaWQnLgoJKHBhcnNlX2Vycm9yX2NvbnRleHQpOiBSZW5hbWUgcGFyYW1ldGVyICdtc2cnIHRvICdtc2dpZCcuCgkocGFyc2Vfd2FybmluZ19jb250ZXh0KTogTGlrZXdpc2UuCgoyMDA0LTEwLTA1ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE3Nzc5CgkqIGpjZi1wYXJzZS5jIChwYXJzZV96aXBfZmlsZV9lbnRyaWVzKTogSWYgYSBjbGFzcyBoYXMgYQoJc3VwZXJjbGFzcyBhbmQgYSBUWVBFX1NJWkUgb2YgemVybywgbGF5IGl0IG91dC4KCjIwMDQtMDktMzAgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCVBSIGphdmEvMTc3MzMKCSogamNmLXBhcnNlLmMgKGNvbXB1dGVfY2xhc3NfbmFtZSk6IFJld3JpdGUuCgoyMDA0LTEwLTAxICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBqYXZhLmMgKGphdmFfZXhwYW5kX2JvZHkpOiBVcGRhdGUgY2FsbCBvZiB0cmVlX3Jlc3Rfb2ZfY29tcGlsYXRpb24uCgoyMDA0LTEwLTAxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogbGV4LmM6IEZpeCBhIGNvbW1lbnQgdHlwby4KCjIwMDQtMTAtMDEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBqYXZhLXRyZWUuaDogRml4IGEgY29tbWVudCB0eXBvLgoKMjAwNC0wOS0zMCAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJU2ltcGxpZnkgbGV4ZXIuICBJbXBsZW1lbnQgLS1lbmFibGUtbWFwcGVkLWxvY2F0aW9uIHN1cHBvcnQuCgkqIGpjZi1wYXJzZS5jIChwYXJzZV9jbGFzc19maWxlKTogIFVzZSBsaW5lbWFwX2xpbmVfc3RhcnQuCgkocGFyc2Vfc291cmNlX2ZpbGVfMSk6IFBhc3MgZmlsZW5hbWUgYXMgZXh0cmEgcGFyYW1ldGVyLCBzbyB3ZSBjYW4gY2FsbAoJbGluZW1hcF9hZGQgYW5kIHNldCBpbnB1dF9sb2NhdGlvbiBoZXJlLCByYXRoZXIgdGhhbiBpbiBib3RoIGNhbGxlcnMuCgkocmVhZF9jbGFzcyk6IFBhc3MgY29waWVkIGZpbGVuYW1lIHRvIHBhcnNlX3NvdXJjZV9maWxlXzEuCglEb24ndCBpbml0aWFsaXplIHdmbF9vcGVyYXRvciAtIG9ubHkgbmVlZGVkIGZvciBzb3VyY2UgY29tcGlsYXRpb24uCgkocmVhZF9jbGFzcywgamNmX3BhcnNlKTogIENhbGwgbGluZW1hcF9hZGQgd2l0aCBMQ19MRUFWRS4KCSogbGV4Lmg6ICBSZW1vdmUgYSBidW5jaCBvZiBkZWJ1Z2dpbmcgbWFjcm9zLgoJKiBsZXguaCAoc3RydWN0X2phdmFfbGluZSwgc3RydWN0IGphdmFfZXJyb3IpOiAgUmVtb3ZlIHR5cGVzLgoJKEpBVkFfQ09MVU1OX0RFTFRBKTogIFJlbW92ZSAtIHVzZSBqYXZhX2xleGVyLm5leHRfY29sdW1zIGluc3RlYWQuCgkoc3RydWN0IGphdmFfbGNfcyk6ICBSZW1vdmUgcHJldl9jb2wgZmllbGQuCgkoc3RydWN0IGphdmFfbGV4ZXIpOiAgTmV3IGZpZWxkcyBuZXh0X3VuaWNvZGUsIG5leHRfY29sdW1ucywgYW5kCglhdmFpbF91bmljb2RlLiAgTmV3IHBvc2l0aW9uIGZpZWxkLCBhbmQgbWF5YmUgdG9rZW5fc3RhcnQgZmllbGQuCglEb24ndCBuZWVkIGhpdF9lb2YgZmllbGQgLSB1c2UgbmV4dF91bmljb2RlID09IC0xIGluc3RlYWQuCgkoSkFWQV9JTlRFR0VSQUxfUkFOR0VfRVJST1IpOiAgUmVuYW1lIHRvIEpBVkFfUkFOR0VfRVJST1IuCgkoSkFWQV9SQU5HRV9FUlJPUiwgSkFWQV9GTE9BVF9BTkdFX0VSUk9SKTogIFVwZGF0ZSBhY2NvcmRpbmdseS4KCSogcGFyc2UuaDogIFZhcmlvdXMgY2hhbmdlcyBmb3IgVVNFX01BUFBFRF9MT0NBVElPTi4KCShFWFBSX1dGTF9FTUlUX0xJTkVfTk9URSk6IFhYWAoJKEJVSUxEX0VYUFJfV0ZMLCBFWFBSX1dGTF9BRERfQ09MKTogUmVtb3ZlIG5vLWxvbmdlci11c2VkIG1hY3Jvcy4KCShzdHJ1Y3QgcGFyc2VyX2N0eHQpOiAgTmV3IGZpbGVfc3RhcnRfbG9jYXRpb24gZmllbGQuCglSZW1vdmUgcF9saW5lLCBjX2xpbmUgZmllbGRzIHNpbmNlIHdlIG5vIGxvbmdlciBzYXZlIGxpbmVzLgoJUmVtb3ZlIGVsYywgbGluZW5vLCBhbmQgY3VycmVudF9qY2YgZmllbGRzIC0gbm8gbG9uZ2VyIHVzZWQuCgkqIHBhcnNlLnk6ICBVcGRhdGVzIGZvciBVU0VfTUFQUEVEX0xPQ0FUSU9OIGFuZCBuZXcgbGV4ZXIuCglEb24ndCB1c2UgRVhQUl9XRkxfQUREX0NPTCBzaW5jZSB0aGF0IGlzbid0IHRyaXZpYWwgd2l0aAoJc291cmNlX2xvY2F0aW9uIGFuZCBpcyBwcm9iYWJseSBub3QgbmVlZGVkIGFueW1vcmUgYW55d2F5LgoJVXNlIG5ldyBleHByX2FkZF9Mb2NhdGlvbiBmdW5jdGlvbi4KCShTRVRfRVhQUl9MT0NBVElPTl9GUk9NX1RPS0VOKTogIE5ldyBjb252ZW5pZW5jZSBtYWNyby4KCShqYXZhX3BvcF9wYXJzZXJfY29udGV4dCk6ICBNaW5vciBjbGVhbnVwLgoJKGphdmFfcGFyc2VyX2NvbnRleHRfc2F2ZV9nbG9iYWwsIGphdmFfcGFyc2VyX2NvbnRleHRfcmVzdG9yZV9nbG9iYWwsCglqYXZhX3BvcF9wYXJzZXJfY29udGV4dCk6ICBTYXZlL3Jlc3RvcmUgaW5wdXRfbG9jYXRpb24gYXMgYSB1bml0LgoJKGlzc3VlX3dhcm5pbmdfZXJyb3JfZnJvbV9jb250ZXh0KTogIElmIFVTRV9NQVBQRURfTE9DQVRJT04gdGFrZQoJYSBzb3VyY2VfbG9jYXRpb24gaW5zdGVhZCBvZiBhIHdmbCBjb250ZXh0IG5vZGUuCgkoY2hlY2tfY2xhc3NfaW50ZXJmYWNlX2NyZWF0aW9uKTogIGlucHV0X2ZpbGVuYW1lIGlzIG5vdCBhZGRyZXNzYWJsZS4KCShjcmVhdGVfYXJ0aWZpY2lhbF9tZXRob2QpOiAgQ2FsbGluZyBqYXZhX3BhcnNlcl9jb250ZXh0X3NhdmVfZ2xvYmFsCglhbmQgamF2YV9wYXJzZXJfY29udGV4dF9yZXN0b3JlX2dsb2JhbCBpcyBvdmVya2lsbC4gIEluc3RlYWQsCgl0ZW1wb3JhcmlseSBzZXQgaW5wdXRfbG9jYXRpb24gZnJvbSBjbGFzcyBkZWNsLgoJKGphdmFfbGF5b3V0X3NlZW5fY2xhc3NfbWV0aG9kcyk6IFNldCBpbnB1dF9sb2NhdGlvbiBmcm9tIG1ldGhvZCBkZWNsLgoJKGZpeF9jb25zdHJ1Y3RvcnMpOiBNYWtlIG1vcmUgcm9idXN0IGlmIG5vIEVYUFJfV0lUSF9GSUxFX0xPQ0FUSU9OLgoJKGZpbmlzaF9sb29wX2JvZHkpOiAgTGlrZXdpc2UuCgkqIGxleC5jOiBVcGRhdGVzIGZvciBVU0VfTUFQUEVEX0xPQ0FUSU9OLiAgVXNlIGJ1aWxkX3Vua253b25fd2ZsLgoJKGphdmFfc3ByaW50X3VuaWNvZGUpOiAgVGFrZSBhIGNoYXJhY3Rlciwgbm90IGluZGV4IGluIGxpbmUuCgkoamF2YV9zbmVha191bmNvZGUpOiAgUmVwbGFjZWQgYnkgamF2YV9wZWVrX3VuaWNvZGUuCgkoamF2YV91bmdldF91bmljb2RlKTogIE5vIGxvbmdlciB1c2VkLgoJKGphdmFfYWxsb2NhdGVfbmV3X2xpbmUuIGphdmFfc3RvcmVfdW5pY29kZSk6ICBSZW1vdmVkLCBzaW5jZSB3ZQoJbm8gbG9uZ2VyIHJlbWVtYmVyICJsaW5lcyIuCgkoamF2YV9uZXdfbGV4ZXIpOiAgVXBkYXRlIGZvciBuZXcgZGF0YSBzdHJ1Y3R1cmVzLgoJKGphdmFfcmVhZF9jaGFyKTogIE1vdmUgdW5nZXRfdmFsdWUgY2hlY2tpbmcgdG8gamF2YV9yZWFkX3VuaWNvZGUuCgkoamF2YV9nZXRfdW5pY29kZSwgamF2YV9wZWVrX3VuaWNvZGUsIGphdmFfbmV4dF91bmljb2RlKTogTmV3IG1vcmUKCWVmZmljaWVudCBmdW5jdGlvbnMgdGhhdCBhcmUgdXNlZCBkaXJlY3RseSB3aGVuIGxleGluZy4KCShqYXZhX3JlYWRfdW5pY29kZV9jb2xsYXBzaW5nX3Rlcm1pbmF0b3JzKTogIE5vIGxvbmdlciBuZWVkZWQuCgkoamF2YV9wYXJzZV9lbmRfY29tbWVudCwgamF2YV9wYXJzZV9lc2NhcGVfc2VxdWVuY2UsIGRvX2phdmFfbGV4KToKCVJlLW9yZ2FuaXplIHRvIHVzZSBqYXZhX3BlZWtfdW5pY29kZSB0byBhdm9pZCBqYXZhX3VuZ2V0X3VuaWNvZGUuCgkoamF2YV9wYXJzZV9lc2NhcGVfc2VxdWVuY2UpOiAgUmV3cml0ZSB0byBiZSBzaW1wbGVyIC8gbW9yZSBlZmZpY2llbnQuCgkoZG9famF2YV9sZXgpOiAgTG90cyBvZiBtb3ZpbmdzIGFyb3VuZCB0byBhdm9pZCBqYXZhX3VuZ2V0X3VuaWNvZGUsCgljb21iaW5lIHN3aXRjaCBicmFuY2hlcywgYW5kIHRlc3QgZm9yIGNvbW1vbiB0b2tlbiBraW5kcyBlYXJsaWVyLgoJKGphdmFfbGV4X2Vycm9yKTogIFJld3JpdGUuCgkqIGp2LXNjYW4uYyAoZXhwYW5kX2xvY2F0aW9uKTogTmV3IGZ1bmN0aW9uLCBjb3BpZWQgZnJvbSB0cmVlLmMuCgkobWFpbik6IFNldCBjdHhwLT5maWxlbmFtZSBpbnN0ZWFkIG9mIHNldHRpbmcgaW5wdXRfZmlsZW5hbWUgZGlyZWN0bHkuCgoyMDA0LTA5LTMwICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCglNb3JlIGNsZWFudXAgZm9yIC0tZW5hYmxlLW1hcHBlZC1sb2NhdGlvbi4KCSogY2xhc3MuYyAocHVzaF9jbGFzcyk6ICBJZiBVU0VfTUFQUEVEX0xPQ0FUSU9OIGRvbid0IHNldAoJaW5wdXRfbG9jYXRpb24gaGVyZS4gIEluc3RlYWQgZG8gaXQgaW4gZ2l2ZV9uYW1lX3RvX2NsYXNzLgoJKGJ1aWxkX2NsYXNzX3JlZik6ICBTZXQgREVDTF9BUlRJRklDSUFMLCBmb3IgdGhlIHNha2Ugb2YgZHdhcmYyb3V0LgoJKiBleHByLmMgKGV4cGFuZF9ieXRlX2NvZGUpOiBDYWxsIGxpbmVtYXBfbGluZV9zdGFydC4KCSogZXhwci5jIChidWlsZF9leHByX3dmbCk6ICBJZiBVU0VfTUFQUEVEX0xPQ0FUSU9OLCBjaGFuZ2UgZmluYWwKCXBhcmFtZXRlcnMgdG8gYSBzb3VyY2VfbG9jYXRpb24uICBEb24ndCBuZWVkIEVYUFJfV0ZMX0ZJTEVOQU1FX05PREUuCgkoZXhwcl9hZGRfbG9jYXRpb24pOiAgTmV3IGZ1bmN0aW9uLCBpZiBVU0VfTUFQUEVEX0xPQ0FUSU9OLgoJKiBjbGFzcy5jIChtYXliZV9sYXlvdXRfc3VwZXJfY2xhc3MpOiAgQWRqdXN0IGJ1aWxkX2V4cHJfd2ZsIGNhbGwKCXRvIFVTRV9NQVBQRURfTE9DQVRJT04gY2FzZS4KCgkqIGphdmEtdHJlZS5oIChKQVZBX0ZJTEVfUCwgWklQX0ZJTEVfUCk6ICBSZW1vdmUgdW51c2VkIG1hY3Jvcy4KCSogamNmLXBhcnNlLmMgKGphdmFfcGFyc2VfZmlsZSk6IERvbid0IHNldCBpbnB1dF9maWxlbmFtZS4KCVVzZSBJU19BX0NPTU1BTkRfTElORV9GSUxFTkFNRV9QIHRvIGNoZWNrIGZvciBkdXBsaWNhdGUgZmlsZW5hbWVzLgoJQ3JlYXRlIGEgbGlzdCBvZiBUUkFOU0xBVElPTl9VTklUX0RFQ0wuCgkoY3VycmVudF9maWxlX2xpc3QpOiAgSXMgbm93IGEgVFJBTlNMQVRJT05fVU5JVF9ERUNMIGNoYWluLiAgVGhlCglyZWFzb24gaXMgc28gd2UgY2FuIHNldCBhIERFQ0xfU09VUkNFX0xPQ0FUSU9OIGZvciBlYWNoIGZpbGUuCgkoamF2YV9wYXJzZV9maWxlKTogIERvbid0IHNldCB1bnVzZWQgWklQX0ZJTEVfUCwgSkFWQV9GSUxFX1AuLgoJQ3JlYXRlIGxpbmUtbWFwIExDX0VOVEVSL0xDX0xFQVZFIGVudHJpZXMgZm9yIGFyY2hpdmUgaXRzZWxmLgoJKGZpbGVfc3RhcnRfbG9jYXRpb24pOiAgTmV3IHN0YXRpYy4KCShzZXRfc291cmNlX2ZpbGVuYW1lKTogIEF2b2lkIGV4dHJhIGFjY2VzcyB0byBpbnB1dF9maWxlbmFtZSBtYWNyby4KCUNvbmNhdGVuYXRlIG5ldyBuYW1lIHdpdGggY2xhc3MncyBwYWNrYWdlIHByZWZpeC4KCShzZXRfc291cmNlX2ZpbGVuYW1lLCBnaXZlX25hbWVfdG9fY2xhc3MpOiBVcGRhdGUuCgkoZ2l2ZV9uYW1lX3RvX2NsYXNzKTogIFNldCBjbGFzcydzICJsaW5lIDAiIGlucHV0X2xvY2F0aW9uIGhlcmUuCgkocGFyc2VfY2xhc3NfZmlsZSk6ICBTZXQgaW5wdXRfbG9jYXRpb24gYXMgYSB1bml0LgoKCSogamNmLXBhcnNlLmMgKGxvYWRfY2xhc3MpOiBTYW5pdHkgdGVzdCBpZiBtaXNzaW5nIGlubmVyIGNsYXNzIGZpbGUuCgoyMDA0LTA5LTI5ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGphdmEtdHJlZS5oOiAgUmVkZWZpbmUgc29tZSBtYWNyb3MgYW5kIGFkZCBzb21lIGRlY2xhcmF0aW9uCgl0byBoYW5kbGUgdGhlIFVTRV9NQVBQRURfTE9DQVRJT04gY2FzZS4KCSogcGFyc2UuaCAoRVhQUl9XRkxfUVVBTElGSUNBVElPTik6ICBVc2Ugb3BlcmFuZCAxLCBub3QgMi4KCSogamF2YS10cmVlLmggKEVYUFJfV0ZMX0ZJTEVOQU1FX05PREUpOiAgVXNlIG9wZXJhbmQgMiwgbm90IDEuCgkqIGphdmEtdHJlZS5kZWYgKEVYUFJfV0lUSF9GSUxFX0xPQ0FUSU9OKTogT25seSBuZWVkIHR3byBvcGVyYW5kcyBpbgoJVVNFX01BUFBFRF9MT0NBVElPTiBjYXNlLCBzaW5jZSBFWFBSX1dGTF9GSUxFTkFNRV9OT0RFIGlzIGdvbmUuCgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpOiBIYW5kbGUgVVNFX01BUFBFRF9MT0NBVElPTiBjYXNlLgoJKiBkZWNsLmMgKGZpbmlzaF9tZXRob2QsIGphdmFfYWRkX3N0bXQpOiBMaWtld2lzZS4KCSogamF2YS1naW1wbGlmeS5jIChqYXZhLWdpbXBsaWZ5LmMpOiAgTGlrZXdpc2UuCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6ICBMaWtld2lzZS4KCSogbGFuZy5jIChqYXZhX3Bvc3Rfb3B0aW9ucyk6IExpa2V3aXNlIC0gY2FsbCBsaW5lbWFwX2FkZC4KCjIwMDQtMDktMjkgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCVBSIGphdmEvMTcwMDcKCSogcGFyc2UueSAocGF0Y2hfYmlub3ApOiBEb24ndCBtZXNzIHdpdGggdGhlIFRSRUVfU0lERV9FRkZFQ1RTIG9mIHRoZQoJcmVzdWx0IG9mIFRSVU5DX01PRF9FWFBSLgoJKHBhdGNoX3VuYXJ5b3ApOiBMaWtld2lzZSBmb3IgQ09OVkVSVF9FWFBSLCB3aGljaCBtYXkgdGhyb3cuCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IE1hcmsKCXNvZnRfbG9va3VwaW50ZXJmYWNlbWV0aG9kX25vZGUgYW5kIHNvZnRfaW5zdGFuY2VvZl9ub2RlIHB1cmUuCgoyMDA0LTA5LTI4ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8xNTcxMDoKCSogY2xhc3MuYyAoYWRkX21pcmFuZGFfbWV0aG9kcyk6IExvYWQgc3VwZXJpbnRlcmZhY2UgaWYgbm90CglhbHJlYWR5IGxvYWRlZC4KCjIwMDQtMDktMjggIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCVBSIGphdmEvMTc1ODYKCSogamNmLXBhcnNlLmMgKGxvYWRfY2xhc3MpOiBEb24ndCB0cnkgdG8gcmVhZCBhIGNsYXNzIHRoYXQgd2UndmUKCWFscmVhZHkgcmVhZC4KCjIwMDQtMDktMjggIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogamNmLXBhcnNlLmMgKGxvYWRfY2xhc3MpOiBCYWNrIG91dCBwcmV2aW91cyBicm9rZW4gcGF0Y2guCgoyMDA0LTA5LTI4ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE3NTg2CgkqIGpjZi1wYXJzZS5jIChsb2FkX2NsYXNzKTogRG9uJ3QgdHJ5IHRvIHJlYWQgYSBjbGFzcyB0aGF0IHdlJ3ZlCglhbHJlYWR5IHJlYWQuCglDaGVjayB0aGF0IHdlIHJlYWxseSBkaWQgcmVhZCB0aGUgcmlnaHQgY2xhc3MuCgoyMDA0LTA5LTI1ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8xNzUwMDoKCSogcGFyc2UueSAoY3JlYXRlX2FydGlmaWNpYWxfbWV0aG9kKTogVXNlIGFkZF9tZXRob2RfMS4KCjIwMDQtMDktMjUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBleHByLmMsIGpjZi1kdW1wLmMsIHBhcnNlLXNjYW4ueSwgcGFyc2UueTogRml4Cgljb21tZW50IHR5cG9zLgoJKiBnY2oudGV4aTogRml4IHR5cG9zLgoKMjAwNC0wOS0yNCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGphdmEvMTU2NTY6CgkqIHBhcnNlLnkgKGNsYXNzX2luc3RhbmNlX2NyZWF0aW9uX2V4cHJlc3Npb24pOiBTZXQgYCQkJyB0byBOVUxMCglpbiBlcnJvciBwYXJ0cyBvZiBydWxlLgoJKHVuYXJ5X2V4cHJlc3Npb24pOiBEb24ndCBjYWxsIGVycm9yX2lmX251bWVyaWNfb3ZlcmZsb3cgd2hlbiAkMQoJaXMgTlVMTC4KCjIwMDQtMDktMjQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE2Nzg5OgoJKiBwYXJzZS55IChyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBTZXQKCUNBTl9DT01QTEVURV9OT1JNQUxMWSBvbiBmaXJzdCBjYWxsIHdoZW4gY2hhaW5pbmcgc3RhdGljIGNhbGxzLgoJKiBleHByLmMgKGZvcmNlX2V2YWx1YXRpb25fb3JkZXIpOiBDaGVjayBmb3IgZW1wdHkgYXJndW1lbnQgbGlzdAoJYWZ0ZXIgc3RyaXBwaW5nIENPTVBPVU5EX0VYUFIuCgoyMDA0LTA5LTIzICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE2OTI3OgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2xocyk6IENhbGwgcGF0Y2hfc3RyaW5nKCkgb24gT3BlcmFuZCAxIG9mCglDT05EX0VYUFJzLgoKMjAwNC0wOS0yMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGphdmEvMTczMjk6CgkqIGphdmEtZ2ltcGxpZnkuYyAoamF2YV9naW1wbGlmeV9leHByKSA8U0FWRV9FWFBSPjogSWdub3JlIGNhc2UKCXdoZXJlIG9wZXJhbmQgaXMgbnVsbC4KCjIwMDQtMDktMjMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE3MzgwOgoJKiBwYXJzZS55IChub3RfYWNjZXNzaWJsZV9wKTogQWxsb3cgYWNjZXNzIHRvIHByb3RlY3RlZCBtZW1iZXJzCglldmVuIHdoZW4gY2xhc3MgaXMgbm90IHN0YXRpYy4KCjIwMDQtMDktMjIgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBNYWtlLWxhbmcuaW46IFJldmVydCB0aGUgZ2NjLW5vbmUubyBjaGFuZ2UuCgoyMDA0LTA5LTIyICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfYW5vbnltb3VzX2NsYXNzKTogVkVDX3NwYWNlIHJldHVybnMgdHJ1ZSBpZiB0aGVyZQoJaXMgc3BhY2UuCgoyMDA0LTA5LTIxICBNYXR0IEF1c3Rlcm4gIDxhdXN0ZXJuQGFwcGxlLmNvbT4KCglGaXggYm9vdHN0cmFwLgoJKiBnamF2YWguYyAoZnJlZV9tZXRob2RfbmFtZV9saXN0KTogRml4IGZ1bmN0aW9uIGRlZmluaXRpb24gc28KCWl0J3MgYSBwcm9wZXIgQyBwcm90b3R5cGUuCgoyMDA0LTA5LTIxICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8xNzU3NToKCSogZ2phdmFoLmMgKGZyZWVfbWV0aG9kX25hbWVfbGlzdCk6IE5ldyBtZXRob2QuCgkobWFpbik6IENhbGwgaXQuCgoyMDA0LTA5LTE3ICBKZWZmcmV5IEQuIE9sZGhhbSAgPG9sZGhhbUBjb2Rlc291cmNlcnkuY29tPgoJICAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBqYXZhLXRyZWUuZGVmOiBVc2UgdHJlZV9jb2RlX2NsYXNzIGVudW1lcmF0aW9uIGNvbnN0YW50cwoJaW5zdGVhZCBvZiBjb2RlIGxldHRlcnMuCgkqIGphdmEtZ2ltcGxpZnkuYywgamNmLXdyaXRlLmMsIGxhbmcuYywgcGFyc2UueTogVXBkYXRlIGZvcgoJbmV3IHRyZWUtY2xhc3MgZW51bWVyYXRpb24gY29uc3RhbnRzLgoKMjAwNC0wOS0xMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGphdmEvMTcyMTY6CgkqIGNsYXNzLmMgKGxheW91dF9jbGFzc19tZXRob2QpOiBQdXQgc3ludGhldGljIG1ldGhvZHMgaW50byB0aGUKCXZ0YWJsZS4KCjIwMDQtMDktMTEgIEFuZHJldyBQaW5za2kgIDxhcGluc2tpQGFwcGxlLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS9nZ2Mtbm9uZS5jKTogQ2hhbmdlIGRlcGVuZGVuY3kKCWZvciBnZ2MuaCBpbnRvICQoR0dDX0gpLgoKMjAwNC0wOS0xMSAgTW9oYW4gRW1iYXIgIDxnbnVzdHVmZkB0aGlzaXNjb29sLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS93aW4zMi1ob3N0Lm8pOiBBZGQgZGVwZW5kZW5jeSBvbgoJY29yZXR5cGVzLmguCgkqIHdpbjMyLWhvc3QuYzogQWRkIGluY2x1ZGVzIGZvciBjb3JldHlwZXMuaCwgamNmLmgKCjIwMDQtMDktMTEgIE1vaGFuIEVtYmFyICA8Z251c3R1ZmZAdGhpc2lzY29vbC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKEdDSkhfT0JKUyk6IENoYW5nZSBkZXBlbmRlbmN5IGZyb20KCWdnYy1ub25lLm8gdG8gamF2YS9nZ2Mtbm9uZS5vCgkoSkNGRFVNUF9PQkpTKTogTGlrZXdpc2UuCgkoamF2YS9nZ2Mtbm9uZS5vKTogTmV3IHRhcmdldC4KCjIwMDQtMDgtMjUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBib2VobS5jIChnZXRfYm9laG1fdHlwZV9kZXNjcmlwdG9yKTogIEFkanVzdCBidWlsZF9pbnRfY3N0IGNhbGxzLgoJKiBjbGFzcy5jIChidWlsZF91dGY4X3JlZiwgYnVpbGRfc3RhdGljX2ZpZWxkX3JlZiwKCW1ha2VfZmllbGRfdmFsdWUsIG1ha2VfbWV0aG9kX3ZhbHVlLCBnZXRfZGlzcGF0Y2hfdGFibGUsCgltYWtlX2NsYXNzX2RhdGEsIGVtaXRfc3ltYm9sX3RhYmxlLCBlbWl0X2NhdGNoX3RhYmxlKTogTGlrZXdpc2UuCgkqIGNvbnN0YW50cy5jIChnZXRfdGFnX25vZGUsIGJ1aWxkX3JlZl9mcm9tX2NvbnN0YW50X3Bvb2wsCglidWlsZF9jb25zdGFudHNfY29uc3RydWN0b3IpOiBMaWtld2lzZS4KCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9hcnJheV9sZW5ndGhfYWNjZXNzLCBidWlsZF9uZXdhcnJheSwKCWV4cGFuZF9qYXZhX211bHRpYW5ld2FycmF5LCBleHBhbmRfamF2YV9wdXNoYywgZXhwYW5kX2lpbmMsCglidWlsZF9qYXZhX2Jpbm9wLCBidWlsZF9maWVsZF9yZWYsIGV4cGFuZF9qYXZhX2FkZF9jYXNlLAoJZXhwYW5kX2phdmFfY2FsbCwgYnVpbGRfa25vd25fbWV0aG9kX3JlZiwgYnVpbGRfaW52b2tldmlydHVhbCwKCWJ1aWxkX2ludm9rZWludGVyZmFjZSwgYnVpbGRfam5pX3N0dWIpOiBMaWtld2lzZS4KCSogamF2YS1naW1wbGlmeS5jIChqYXZhX2dpbXBsaWZ5X25ld19hcnJheV9pbml0KTogTGlrZXdpc2UuCgkqIGpjZi1wYXJzZS5jIChnZXRfY29uc3RhbnQpOiBMaWtld2lzZS4KCSogbGV4LmMgKGRvX2phdmFfbGV4KTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHBhdGNoX2Jpbm9wLCBwYXRjaF91bmFyeW9wLCBwYXRjaF9jYXN0LAoJYnVpbGRfbmV3YXJyYXlfbm9kZSwgcGF0Y2hfbmV3YXJyYXkpOiBMaWtld2lzZS4KCSogcmVzb3VyY2UuYyAoY29tcGlsZV9yZXNvdXJjZV9kYXRhKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChidWlsZF9wcmltX2FycmF5X3R5cGUpOiBMaWtld2lzZS4KCjIwMDQtMDgtMjQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBBZGp1c3QKCWluaXRpYWxpemVfc2l6ZXR5cGVzIGNhbGwuCgoyMDA0LTA4LTIzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSoganYtc2Nhbi5jIChmYW5jeV9hYm9ydCk6IEFkZC4KCjIwMDQtMDgtMjAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBleHByLmMgKGJ1aWxkX2phdmFfYXJyYXlhY2Nlc3MpOiBVc2UgY29udmVydCB0byBjaGFuZ2UKCWxlbidzIHR5cGUuCgoyMDA0LTA4LTE5ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChtYWtlX2xvY2FsX2Z1bmN0aW9uX2FsaWFzKTogQWxsb2NhdGUgZXh0cmEgc3BhY2UgZm9yICdMJwoJaW4gbmFtZSBidWZmZXIuIFJlcG9ydGVkIGJ5IFRob21hcyBOZXVtYW5uLgoKMjAwNC0wOC0xOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHBhcnNlLmggKEpBVkFfUkFESVgxMF9GTEFHKTogUmVuYW1lIHRvIC4uLgoJKEpBVkFfTk9UX1JBRElYMTBfRkxBRyk6IC4uLiBoZXJlLiAgSW52ZXJ0IG1lYW5pbmcuCgkqIGxleC5jIChkb19qYXZhX2xleCk6IEFkanVzdC4KCShlcnJvcl9pZl9udW1lcmljX292ZXJmbG93KTogTGlrZXdpc2UuCgoyMDA0LTA4LTE4ICBBbmRyZXcgUGluc2tpICA8YXBpbnNraUBhcHBsZS5jb20+CgoJKiBjbGFzcy5jIChtYWtlX2xvY2FsX2Z1bmN0aW9uX2FsaWFzKTogT25seSBtYWtlIGEgbmV3IGRlY2wgaWYgd2UKCXN1cHBvcnQgYWxpYXMgYXR0cmlidXRlIG9uIGFsbCBkZWNscy4KCjIwMDQtMDgtMTggIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKG1ha2VfbG9jYWxfZnVuY3Rpb25fYWxpYXMpOiBOZXcgZnVuY3Rpb24uIENyZWF0ZSBsb2NhbAoJYWxpYXMgZm9yIHB1YmxpYyBtZXRob2QgREVDTC4KCShtYWtlX21ldGhvZF92YWx1ZSk6IFVzZSBtYWtlX2xvY2FsX2Z1bmN0aW9uX2FsaWFzLgoJKiBwYXJzZS55IChjcmFmdF9jb25zdHJ1Y3Rvcik6IERvbid0IHNwZWNpYWwtY2FzZSBhbm9ueW1vdXMgY2xhc3Nlcy4KCUFsd2F5cyBzZXQgY3Rvcl9uYW1lIHRvIGluaXRfaWRlbnRpZmllcl9ub2RlLgoJKGxvb2t1cF9tZXRob2RfaW52b2tlKTogQ2FsbCBsYXlvdXRfY2xhc3NfbWV0aG9kIHdoZW4gY3JlYXRpbmcKCWFub255bW91cyBjbGFzcyBjb25zdHJ1Y3Rvci4KCjIwMDQtMDgtMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBqYXZhLWdpbXBsaWZ5LmMgKGphdmFfZ2ltcGxpZnlfZXhwcik6IE1vdmUgJzInIGhhbmRsaW5nIGludG8KCWRlZmF1bHQgY2FzZS4gIFRyZWF0ICc8JyBzaW1pbGFybHkuICBVcGRhdGUgZm9yCglpc19naW1wbGVfZm9ybWFsX3RtcF92YXIgbmFtZSBjaGFuZ2UuCgoyMDA0LTA4LTE3ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGxhbmcuYyAobGFuZ19wcmludGFibGVfbmFtZSk6IE9iZXkgdmVyYm9zZSBmbGFnLgoJKiBwYXJzZS55IChjb25zdHJ1Y3Rvcl9jaXJjdWxhcml0eV9tc2cpOiBTZXQgVkVSQk9TRSBhcmcgZm9yCglsYW5nX3ByaW50YWJsZV9uYW1lKCkuCgkodmVyaWZ5X2NvbnN0cnVjdG9yX2NpcmN1bGFyaXR5LCBnZXRfcHJpbnRhYmxlX21ldGhvZF9uYW1lLAoJY2hlY2tfYWJzdHJhY3RfbWV0aG9kX2RlZmluaXRpb25zLCBqYXZhX2NoZWNrX3JlZ3VsYXJfbWV0aG9kcywKCWphdmFfY2hlY2tfYWJzdHJhY3RfbWV0aG9kcywgY2hlY2tfaW5uZXJfY2xhc3NfYWNjZXNzLAoJZml4X2NvbnN0cnVjdG9ycywgcGF0Y2hfbWV0aG9kX2ludm9jYXRpb24sIHBhdGNoX3JldHVybik6CglMaWtld2lzZS4KCSogZXhwci5jIChwb3BfdHlwZV8wKTogTGlrZXdpc2UuCgoJKiBqYXZhLXRyZWUuaCAobGFuZ19wcmludGFibGVfbmFtZV93bHMpOiBEZWxldGUuCgoyMDA0LTA4LTE2ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS84NDczOgoJKiBwYXJzZS55IChwcmltYXJ5KTogQ2hhbmdlZCBmb3IgaW5pdGlhbGl6ZWQgYW5kIHVuaW5pdGlhbGl6ZWQKCWFycmF5IGNyZWF0aW9ucy4KCShhcnJheV9hY2Nlc3MpOiBIYW5kbGUgYXJyYXlfY3JlYXRpb25faW5pdGlhbGl6ZWQuCgkoYXJyYXlfY3JlYXRpb25fZXhwcmVzc2lvbik6IFNwbGl0IGludG8KCWFycmF5X2NyZWF0aW9uX2luaXRpYWxpemVkIGFuZCBhcnJheV9jcmVhdGlvbl91bmluaXRpYWxpemVkLgoKMjAwNC0wOC0xNiAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoZmluZF9jb25zdGFudF9pbmRleCk6IENhbm9uaWNhbGl6ZSBOYU5zIHdoZW4KCWdlbmVyYXRpbmcgYnl0ZWNvZGUuCgoyMDA0LTA4LTE2ICBFbGxpb3QgTGVlIDxzb3B3aXRoQHJlZGhhdC5jb20+CgoJUFIgamF2YS85Njc3CgkqIGpjZi1wYXJzZS5jIChqYXZhX3BhcnNlX2ZpbGUpOiBIYW5kbGUgZmlsZW5hbWVzIHdpdGggZW1iZWRkZWQKCXNwYWNlcywgYW5kIHF1b3RlZCBmaWxlbGlzdHMuCgoyMDA0LTA4LTE1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogYm9laG0uYyAoZ2V0X2JvZWhtX3R5cGVfZGVzY3JpcHRvcik6IFVzZSBidWlsZF9pbnRfY3N0LgoJKiBjbGFzcy5jIChidWlsZF91dGY4X3JlZiwgYnVpbGRfc3RhdGljX2ZpZWxkX3JlZiwKCW1ha2VfZmllbGRfdmFsdWUsIG1ha2VfbWV0aG9kX3ZhbHVlLCBnZXRfZGlzcGF0Y2hfdGFibGUsCgltYWtlX2NsYXNzX2RhdGEsIGVtaXRfc3ltYm9sX3RhYmxlLCBlbWl0X2NhdGNoX3RhYmxlKTogTGlrZXdpc2UuCgkqIGNvbnN0YW50cy5jIChnZXRfdGFnX25vZGUsICBidWlsZF9yZWZfZnJvbV9jb25zdGFudF9wb29sLAoJYnVpbGRfY29uc3RhbnRzX2NvbnN0cnVjdG9yKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IExpa2V3aXNlLgoJKiBleHByLmMgKGJ1aWxkX2phdmFfYXJyYXlfbGVuZ3RoX2FjY2VzcywgYnVpbGRfbmV3YXJyYXksCglleHBhbmRfamF2YV9tdWx0aWFuZXdhcnJheSwgZXhwYW5kX2phdmFfcHVzaGMsIGV4cGFuZF9paW5jLAoJYnVpbGRfamF2YV9iaW5vcCwgYnVpbGRfZmllbGRfcmVmLCBleHBhbmRfamF2YV9hZGRfY2FzZSwKCWV4cGFuZF9qYXZhX2NhbGwsIGJ1aWxkX2tub3duX21ldGhvZF9yZWYsIGJ1aWxkX2ludm9rZXZpcnR1YWwsCglidWlsZF9pbnZva2VpbnRlcmZhY2UsIGJ1aWxkX2puaV9zdHViKTogTGlrZXdpc2UuCgkqIGphdmEtZ2ltcGxpZnkuYyAoamF2YV9naW1wbGlmeV9uZXdfYXJyYXlfaW5pdCk6IExpa2V3aXNlLgoJKiBqY2YtcGFyc2UuYyAoZ2V0X2NvbnN0YW50KTogTGlrZXdpc2UuCgkqIGxleC5jIChkb19qYXZhX2xleCk6IExpa2V3aXNlLgoJKiBwYXJzZS55IChwYXRjaF9iaW5vcCwgcGF0Y2hfdW5hcnlvcCwgcGF0Y2hfY2FzdCwKCWJ1aWxkX251bGxfb2ZfdHlwZSwgcGF0Y2hfbmV3YXJyYXkpOiBMaWtld2lzZS4KCSogcmVzb3VyY2UuYyAoY29tcGlsZV9yZXNvdXJjZV9kYXRhKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChidWlsZF9wcmltX2FycmF5X3R5cGUpOiBMaWtld2lzZS4KCjIwMDQtMDgtMTAgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCgkqIGphdmEtZ2ltcGxpZnkuYyAoamF2YV9naW1wbGlmeV9uZXdfYXJyYXlfaW5pdCk6IFVzZSBjcmVhdGVfdG1wX3Zhci4KCURvbid0IGNyZWF0ZSBCTE9DSyBoZXJlIG9yIGNhbGwgamF2YV9naW1wbGlmeV9ibG9jay4KCjIwMDQtMDgtMDkgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIGphdmEtdHJlZS5oIChmbGFnX2RlcHJlY2F0ZWQpOiBSZW1vdmVkLgoJKiBsYW5nLm9wdCAoV2RlcHJlY2F0ZWQpOiBVc2UgZXhpc3RpbmcgVmFyKHdhcm5fZGVwcmVjYXRlZCkuCgkqIHBhcnNlLnkgKGNoZWNrX2RlcHJlY2F0aW9uKTogQ2hlY2sgd2Fybl9kZXByZWNhdGVkIGluc3RlYWQgb2YKCWZsYWdfZGVwcmVjYXRlZC4KCjIwMDQtMDgtMDYgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBsYW5nLmMgKGZsYWdfZW1pdF9jbGFzc19maWxlcywgZmxhZ19maWxlbGlzdF9maWxlLCBmbGFnX3JlZHVuZGFudCwKCWZsYWdfdXNlX2RpdmlkZV9zdWJyb3V0aW5lLCBmbGFnX3VzZV9ib2VobV9nYywgZmxhZ19zdG9yZV9jaGVjaywKCWZsYWdfaGFzaF9zeW5jaHJvbml6YXRpb24sIGZsYWdfYXNzZXJ0LCBmbGFnX2puaSwgZmxhZ19uZXdlciwKCWZsYWdfY2hlY2tfcmVmZXJlbmNlcywgZmxhZ19leHRyYW5lb3VzX3NlbWljb2xvbiwgZmxhZ19kZXByZWNhdGVkLAoJZmxhZ19mb3JjZV9jbGFzc2VzX2FyY2hpdmVfY2hlY2ssIGZsYWdfb3B0aW1pemVfc2NpLAoJZmxhZ19pbmRpcmVjdF9kaXNwYXRjaCk6IFJlbW92ZSBleHBsaWNpdCBkZWNsYXJhdGlvbnMuCgkqIGxhbmcub3B0OiBBZGQgaW1wbGljaXQgZGVjbGFyZS9kZWZpbmUvYXNzaWduLiAgUmVtb3ZlIG9ic29sZXRlCglmaW5hbCBjb21tZW50LgoKMjAwNC0wOC0wNSAgTWljaGFlbCBDaGFzdGFpbiAgPG1lYy5nbnVAbWluZHNwcmluZy5jb20+CgoJUFIgYm9vdHN0cmFwLzE0ODkzCgkqIE1ha2UtbGFuZy5pbiAoamF2YS5pbnN0YWxsLW1hbik6IEluc3RhbGwgZnJvbSBlaXRoZXIgYnVpbGQKCXRyZWUgb3Igc291cmNlIHRyZWUsIHdoaWNoZXZlciBoYXMgdGhlIGZpbGUgZmlyc3QuCgoyMDA0LTA4LTA1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogamNmLXBhcnNlLmMgKGdldF9jb25zdGFudCk6IEFkanVzdCBmb3JjZV9maXRfdHlwZSBjYWxsLgoJKiBsZXguaCAoU0VUX0xWQUxfTk9ERV9UWVBFKTogUmVtb3ZlLgoJKiBsZXguYyAoamF2YV9wZXJmb3JtX2F0b2YpOiBVc2UgU0VUX0xWQUxfTk9ERSBkaXJlY3RseS4KCShkb19qYXZhX2xleCk6IExpa2V3aXNlLiBBZGp1c3QgZm9yY2VfZml0X3R5cGUgY2FsbC4KCjIwMDQtMDgtMDQgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoJICAgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogdHlwZWNrLmMgKGNvbnZlcnRfaWVlZV9yZWFsX3RvX2ludGVnZXIpOiBDYWxsIGZvbGQgb24gdGhlIHJhbmdlCgljaGVja2luZyB0cmVlcyBhcyB0aGV5J3JlIGJlaW5nIGJ1aWx0LgoJKGNvbnZlcnQpOiBDYWxsIGNvbnZlcnRfaWVlZV9yZWFsX3RvX2ludGVnZXIgaWYgd2UncmUKCWNvbnZlcnRpbmcgYSBjb25zdGFudCwgZXZlbiBpZiB3ZSdyZSB3cml0aW5nIGEgY2xhc3MgZmlsZS4KCjIwMDQtMDgtMDIgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE2NzAxCgkqIHBhcnNlLnkgKGZvbGRfY29uc3RhbnRfZm9yX2luaXQpOiBDYWxsIHJlc29sdmVfZmllbGRfYWNjZXNzIHdpdGgKCWNvcnJlY3QgY3VycmVudF9jbGFzcyBjb250ZXh0LgoKMjAwNC0wOC0wMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBkZWNsLmMgKHVwZGF0ZV9hbGlhc2VzLCBpbml0aWFsaXplX2xvY2FsX3ZhcmlhYmxlKTogUmVwbGFjZSBjYWxscwoJdG8gYnVpbGQgd2l0aCBjYWxscyB0byBidWlsZE4uCgkqIGphdmEtZ2ltcGxpZnkuYyAoamF2YV9naW1wbGlmeV9tb2RpZnlfZXhwcik6IExpa2V3aXNlLgoJKiBqYXZhLXRyZWUuaCAoQlVJTERfTU9OSVRPUl9FTlRFUiwgQlVJTERfTU9OSVRPUl9FWElUKTogTGlrZXdpc2UuCgkqIHBhcnNlLmggKEJVSUxEX1RIUk9XKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHN3aXRjaF9leHByZXNzaW9uLCBzeW5jaHJvbml6ZWRfc3RhdGVtZW50LAoJY2F0Y2hfY2xhdXNlX3BhcmFtZXRlciwgYXJyYXlfY3JlYXRpb25fZXhwcmVzc2lvbiwKCWNvbmRpdGlvbmFsX2V4cHJlc3Npb24sIG1ha2VfcXVhbGlmaWVkX25hbWUsCglyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUsIHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uLAoJcGF0Y2hfaW52b2tlLCBidWlsZF9tZXRob2RfaW52b2NhdGlvbiwgYnVpbGRfbmV3X2ludm9jYXRpb24sCglidWlsZF9hc3NpZ25tZW50LCBwYXRjaF9hc3NpZ25tZW50LCBidWlsZF9iaW5vcCwgcGF0Y2hfYmlub3AsCglidWlsZF9zdHJpbmdfY29uY2F0ZW5hdGlvbiwgYnVpbGRfaW5jZGVjLCBwYXRjaF91bmFyeW9wLAoJcGF0Y2hfY2FzdCwgYnVpbGRfYXJyYXlfcmVmLCBidWlsZF9uZXdhcnJheV9ub2RlLCBwYXRjaF9uZXdhcnJheSwKCXBhdGNoX3JldHVybiwgYnVpbGRfaWZfZWxzZV9zdGF0ZW1lbnQsIGJ1aWxkX2xhYmVsZWRfYmxvY2ssCglidWlsZF9uZXdfbG9vcCwgYnVpbGRfbG9vcF9ib2R5LCBidWlsZF9iY19zdGF0ZW1lbnQsCglidWlsZF9hc3NlcnRpb24sIGVuY2Fwc3VsYXRlX3dpdGhfdHJ5X2NhdGNoLCBidWlsZF90cnlfc3RhdGVtZW50LAoJYnVpbGRfdHJ5X2ZpbmFsbHlfc3RhdGVtZW50LCBwYXRjaF9zeW5jaHJvbml6ZWRfc3RhdGVtZW50LAoJZW1pdF90ZXN0X2luaXRpYWxpemF0aW9uKTogTGlrZXdpc2UsIHJlcGxhY2UgYnVpbGQgd2l0aCBidWlsZE4uCgoyMDA0LTA3LTI4ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGxhbmcuYyAoTEFOR19IT09LU19VTlNBRkVfRk9SX1JFRVZBTCk6IERlbGV0ZS4KCShqYXZhX3Vuc2FmZV9mb3JfcmVldmFsKTogRGl0dG8uCgoyMDA0LTA3LTI2ICAgIDxocEBiaXRyYW5nZS5jb20+CgoJKiBwYXJzZS55IChidWlsZF9zdXBlcl9pbnZvY2F0aW9uKTogQWRqdXN0IGRlY2xhcmF0aW9uIG9yZGVyIHRvCglhdm9pZCBkZWNsYXJhdGlvbiBhZnRlciBzdGF0ZW1lbnQuCgoyMDA0LTA3LTI1ICBCZXJuYXJkbyBJbm5vY2VudGkgIDxiZXJuaWVAZGV2ZWxlci5jb20+CgoJKiBkZWNsLmM6IFJlbmFtZSBhbGwgaWRlbnRpZmllcnMgbmFtZWQgYGNsYXNzJyB0byBgY2wnLgoKMjAwNC0wNy0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoYnVpbGRfcmVzdWx0X2RlY2wpOiBTZXQgREVDTF9BUlRJRklDSUFMIGFuZCBERUNMX0lHTk9SRURfUC4KCjIwMDQtMDctMjMgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogYm9laG0uYyAoc2V0X2JpdCk6IEltcHJvdmUgdHlwZSBzYWZldHkgd3J0IHVuc2lnbmVkbmVzcy4KCSogZ2phdmFoLmMgKHRocm93YWJsZV9wLCBkZWNvZGVfc2lnbmF0dXJlX3BpZWNlLAoJcHJpbnRfZnVsbF9jeHhfbmFtZSwgcHJpbnRfaW5jbHVkZSwgYWRkX25hbWVsZXQsIGFkZF9jbGFzc19kZWNsLAoJcHJvY2Vzc19maWxlKTogTGlrZXdpc2UuCgkqIGpjZi1kdW1wLmMgKG1haW4pOiBMaWtld2lzZS4KCSogamNmLWlvLmMgKHJlYWRfemlwX21lbWJlcik6IExpa2V3aXNlLgoJKiBqY2YtcGFyc2UuYyAoSEFORExFX0NPTlNUQU5UX1V0ZjgsIGdldF9jb25zdGFudCwKCWdpdmVfbmFtZV90b19jbGFzcywgZ2V0X2NsYXNzX2NvbnN0YW50KTogTGlrZXdpc2UuCgkqIGpjZi13cml0ZS5jIChmaW5kX2NvbnN0YW50X3dpZGUsIHB1c2hfbG9uZ19jb25zdCwKCWdlbmVyYXRlX2NsYXNzZmlsZSk6IExpa2V3aXNlLgoJKiBsZXguYyAoamF2YV9uZXdfbGV4ZXIsIGphdmFfcmVhZF9jaGFyLCBjeHhfa2V5d29yZF9wKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHJlYWRfaW1wb3J0X2Rpcik6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAocGFyc2Vfc2lnbmF0dXJlX3R5cGUpOiBMaWtld2lzZS4KCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogTGlrZXdpc2UuCgkqIHpleHRyYWN0LmMgKGZpbmRfemlwX2ZpbGVfc3RhcnQsIHJlYWRfemlwX2FyY2hpdmUpOiBMaWtld2lzZS4KCjIwMDQtMDctMjMgIFRob21hcyBGaXR6c2ltbW9ucyAgPGZpdHpzaW1AcmVkaGF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogUmVwbGFjZSBybWljIGFuZCBybWlyZWdpc3RyeSByZWZlcmVuY2VzIHdpdGgKCWdybWljIGFuZCBncm1pcmVnaXN0cnkuCgkqIGdjai50ZXhpOiBMaWtld2lzZS4KCjIwMDQtMDctMjAgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCVBSIGphdmEvMTY0MzEuCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6IENvbW1lbnQgY2hhbmdlIG9ubHkuCgoJKiB0eXBlY2suYyAoYnVpbGRfamF2YV9hcnJheV90eXBlKTogQWRkIHNpemUgZmllbGQgdG8gYXJyYXkgbmFtZS4KCgkqIGphdmEtdHJlZS5oIChMT0NBTF9TTE9UX1ApOiBOZXcuCgkodXBkYXRlX2FsaWFzZXMpOiBBZGQgUEMgYXJndW1lbnQuCgkocHVzaGRlY2xfZnVuY3Rpb25fbGV2ZWwpOiBOZXcgZnVuY3Rpb24uCgoJKiBqYXZhLWdpbXBsaWZ5LmMgKGphdmFfZ2ltcGxpZnlfZXhwcik6IEhhbmRsZSBWQVJfREVDTCwKCU1PRElGWV9FWFBSLCBhbmQgU0FWRV9FWFBSLgoJKGphdmFfZ2ltcGxpZnlfbW9kaWZ5X2V4cHIpOiBOZXcgZnVuY3Rpb24uCgoJKiBleHByLmMgKHB1c2hfdHlwZV8wKTogQ2FsbCBmaW5kX3N0YWNrX3Nsb3QoKSB0byBjcmVhdGUgdGVtcG9yYXJ5LgoJKGV4cGFuZF9paW5jKTogUGFzcyBQQyB0byB1cGRhdGVfYWxpYXNlcygpLgoJKFNUT1JFX0lOVEVSTkFMKTogTGlrZXdpc2UuCgkocHJvY2Vzc19qdm1faW5zdHJ1Y3Rpb24pOiBMaWtld2lzZS4KCgkqIGRlY2wuYyAoYmFzZV9kZWNsX21hcCk6IE5ldyB2YXJpYWJsZS4KCSh1bmlxKTogTmV3IHZhcmlhYmxlLgoJKHVwZGF0ZV9hbGlhc2VzKTogUmV3cml0ZSB3aXRoIG1vcmUgdGhvcm91Z2ggY2hlY2tpbmcuCgkoZGVidWdfdmFyaWFibGVfcCk6IE5ldyBmdW5jdGlvbi4KCShwdXNoX2p2bV9zbG90KTogRG9uJ3QgaW5pdGlhbGl6ZSBsb2NhbCB2YXJpYWJsZS4gIERvbid0IHB1c2hkZWNsLgoJKGNoZWNrX2xvY2FsX25hbWVkX3ZhcmlhYmxlKTogRGVsZXRlIHdob2xlIGZ1bmN0aW9uLgoJKGluaXRpYWxpemVfbG9jYWxfdmFyaWFibGUpOiBOZXcgZnVuY3Rpb24uCgkoY2hlY2tfbG9jYWxfdW5uYW1lZF92YXJpYWJsZSk6IEFkZCBjaGVja3MgYW5kIGNvbW1lbnRzLgoJKGZpbmRfbG9jYWxfdmFyaWFibGUpOiBSZXdyaXRlLgoJKGphdmFfcmVwbGFjZV9yZWZlcmVuY2UpOiBOZXcgZnVuY3Rpb24uCgkoZnVuY3Rpb25fYmluZGluZ19sZXZlbCk6IE5ldyB2YXJpYWJsZS4KCShwdXNoZGVjbF9mdW5jdGlvbl9sZXZlbCk6IE5ldyBmdW5jdGlvbi4KCShtYXliZV9wdXNobGV2ZWxzKTogU2V0IERFQ0xfTE9DQUxfRU5EX1BDLgoJKG1heWJlX3B1c2hsZXZlbHMpOiBDYWxsIHB1c2hkZWNsKCkgb24gZWFjaCBvZiB0aGUgbmV3IGRlY2xzLgoJKHN0YXJ0X2phdmFfbWV0aG9kKTogUmVzZXQgdW5pcS4gIENyZWF0ZSBiYXNlX2RlY2xfbWFwLiAgU2V0CglmdW5jdGlvbl9iaW5kaW5nX2xldmVsLgoJKGVuZF9qYXZhX21ldGhvZCk6IE51bGwgdW51c2VkIGZpZWxkcyB0byBzYXZlIG1lbW9yeS4KCjIwMDQtMDctMjAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChhZGRfaW50ZXJmYWNlX2RvKTogUmVtb3ZlLgoJKHNldF9zdXBlcl9pbmZvLCBpbnRlcmZhY2Vfb2ZfcCwgbWF5YmVfYWRkX2ludGVyZmFjZSwKCWFkZF9pbnRlcmZhY2UsIG1ha2VfY2xhc3NfZGF0YSwgbGF5b3V0X2NsYXNzLAoJYWRkX21pcmFuZGFfbWV0aG9kcyk6IEFkanVzdCBCSU5GTyBhY2Nlc3NvcnMgYW5kIGFkZGl0aW9uLgoJKiBleHByLmMgKGNhbl93aWRlbl9yZWZlcmVuY2VfdG8sIGxvb2t1cF9maWVsZCk6IEFkanVzdCBCSU5GTwoJYWNjZXNzb3JzLgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfY2xhc3NmaWxlKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHBhdGNoX2Fub255bW91c19jbGFzcywgY2hlY2tfaW5uZXJfY2lyY3VsYXJfcmVmZXJlbmNlLAoJY2hlY2tfY2lyY3VsYXJfcmVmZXJlbmNlLCBqYXZhX2NvbXBsZXRlX2NsYXNzLAoJY2hlY2tfYWJzdHJhY3RfbWV0aG9kX2RlZmluaXRpb25zLAoJamF2YV9jaGVja19hYnN0cmFjdF9tZXRob2RfZGVmaW5pdGlvbnMsCgljaGVja19pbnRlcmZhY2VfdGhyb3dzX2NsYXVzZXMsIGphdmFfY2hlY2tfYWJzdHJhY3RfbWV0aG9kcywKCWxvb2t1cF9qYXZhX2ludGVyZmFjZV9tZXRob2QyLAoJZmluZF9hcHBsaWNhYmxlX2FjY2Vzc2libGVfbWV0aG9kc19saXN0KTogQWRqdXN0IEJJTkZPIGFjY2Vzc29ycwoJYW5kIGFkZGl0aW9uLgoJKiB0eXBlY2suYyAoZmluZF9tZXRob2RfaW5faW50ZXJmYWNlcyk6IEFkanVzdCBCSU5GTyBhY2Nlc3NvcnMuCgoyMDA0LTA3LTE4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKG1heF9idWlsdGluLCBtaW5fYnVpbHRpbiwKCWphdmFfYnVpbGRfZnVuY3Rpb25fY2FsbF9leHByKTogUmVwbGFjZSBjYWxscyB0byBidWlsZCB3aXRoIGJ1aWxkTi4KCSogY2xhc3MuYyAoYnVpbGRfY2xhc3NfcmVmLCBidWlsZF9zdGF0aWNfZmllbGRfcmVmLAoJZ2V0X2Rpc3BhdGNoX3RhYmxlLCBtYWtlX2NsYXNzX2RhdGEsIGxheW91dF9jbGFzc19tZXRob2QpOiBMaWtld2lzZS4KCSogY29uc3RhbnRzLmMgKGJ1aWxkX3JlZl9mcm9tX2NvbnN0YW50X3Bvb2wpOiBMaWtld2lzZS4KCSogZGVjbC5jICh1cGRhdGVfYWxpYXNlcywgcHVzaF9qdm1fc2xvdCwgcG9wbGV2ZWwsIGZpbmlzaF9tZXRob2QsCglhZGRfc3RtdF90b19jb21wb3VuZCk6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAoYnVpbGRfZXhjZXB0aW9uX29iamVjdF9yZWYsIGV4cGFuZF9lbmRfamF2YV9oYW5kbGVyKToKCUxpa2V3aXNlLgoJKiBqYXZhLWdpbXBsaWZ5LmMgKGphdmFfZ2ltcGxpZnlfY2FzZV9leHByLAoJamF2YV9naW1wbGlmeV9kZWZhdWx0X2V4cHIsIGphdmFfZ2ltcGxpZnlfYmxvY2ssCglqYXZhX2dpbXBsaWZ5X25ld19hcnJheV9pbml0LCBqYXZhX2dpbXBsaWZ5X3RyeV9leHByKTogTGlrZXdpc2UuCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoY29udmVydF9pZWVlX3JlYWxfdG9faW50ZWdlcik6IExpa2V3aXNlLgoKMjAwNC0wNy0xNyAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBqYXZhLXRyZWUuaCAoYnVpbHRpbl9mdW5jdGlvbik6IERlY2xhcmUuCgoyMDA0LTA3LTE2ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzLCBqYXZhX2V4cGFuZF9jbGFzc2VzKTogRG9uJ3QKCWFidXNlIHJlc3RvcmVfbGluZV9udW1iZXJfc3RhdHVzLgoKMjAwNC0wNy0xNSAgRnJhbmsgQ2guIEVpZ2xlciAgPGZjaGVAcmVkaGF0LmNvbT4KCglnKysvMTU4NjEKCSogamNmLXBhcnNlLmMgKGphdmFfZW1pdF9zdGF0aWNfY29uc3RydWN0b3IpOiBTcGVjaWZ5IGRlZmF1bHQKCXByaW9yaXR5LgoKMjAwNC0wNy0xMyAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBqYXZhLXRyZWUuaCAoYWxsX2NsYXNzX2ZpbGVuYW1lKTogIFJlbW92ZSB1c2VsZXNzIG1hY3JvLgoJKGVudW0gamF2YV90cmVlX2luZGV4KTogIFJlbW92ZSBKVElfQUxMX0NMQVNTX0ZJTEVOQU1FIGNvbnN0YW50LgoJKEJVSUxEX0ZJTEVOQU1FX0lERU5USUZJRVJfTk9ERSk6ICBSZW1vdmUgdXNlbGVzcyBtYWNyby4KCSogcGFyc2UueSAoamF2YV9wYXJzZXJfY29udGV4dF9yZXN0b3JlX2dsb2JhbCk6ICBSZXBsYWNlCglCVUlMRF9GSUxFTkFNRV9JREVOVElGSUVSX05PREUgYnkgcGxhaW4gZ2V0X2lkZW50aWZpZXIuCgkqIGpjZi1wYXJzZS5jIChyZWFkX2NsYXNzLCBqYXZhX3BhcnNlX2ZpbGUpOiAgTGlrZXdpc2UuCgoyMDA0LTA3LTEyICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8xNjQ3NAoJZ2phdmFoLmMgKHByaW50X2ZpZWxkX2luZm8pOiBFbWl0IGNvbnN0YW50IG9ubHkgaWYgZmllbGQgaXMgc3RhdGljLgoKMjAwNC0wNy0xMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBleHByLmMgKGphdmFfdHJ1dGh2YWx1ZV9jb252ZXJzaW9uLCBmbHVzaF9xdWlja19zdGFjaywKCWphdmFfc3RhY2tfc3dhcCwgamF2YV9zdGFja19kdXAsIGJ1aWxkX2phdmFfYXRocm93LCBidWlsZF9qYXZhX2pzciwKCWJ1aWxkX2phdmFfcmV0LCBidWlsZF9qYXZhX3Rocm93X291dF9vZl9ib3VuZHNfZXhjZXB0aW9uLAoJYnVpbGRfamF2YV9hcnJheV9sZW5ndGhfYWNjZXNzLCBqYXZhX2NoZWNrX3JlZmVyZW5jZSwKCWJ1aWxkX2phdmFfYXJyYXlhY2Nlc3MsIGJ1aWxkX2phdmFfYXJyYXlzdG9yZV9jaGVjaywgYnVpbGRfbmV3YXJyYXksCglidWlsZF9hbmV3YXJyYXksIGV4cGFuZF9qYXZhX211bHRpYW5ld2FycmF5LCBleHBhbmRfamF2YV9hcnJheXN0b3JlLAoJZXhwYW5kX2phdmFfYXJyYXlsb2FkLCBidWlsZF9qYXZhX21vbml0b3IsIGV4cGFuZF9qYXZhX3JldHVybiwKCWV4cGFuZF9sb2FkX2ludGVybmFsLCBleHBhbmRfamF2YV9ORVcsIGJ1aWxkX2dldF9jbGFzcywKCWJ1aWxkX2luc3RhbmNlb2YsIGV4cGFuZF9qYXZhX0NIRUNLQ0FTVCwgZXhwYW5kX2lpbmMsCglidWlsZF9qYXZhX3NvZnRfZGl2bW9kLCBidWlsZF9qYXZhX2Jpbm9wLCBidWlsZF9maWVsZF9yZWYsCglleHBhbmRfY29tcGFyZSwgZXhwYW5kX2phdmFfZ290bywgZXhwYW5kX2phdmFfc3dpdGNoLAoJZXhwYW5kX2phdmFfYWRkX2Nhc2UsIGJ1aWxkX2NsYXNzX2luaXQsIGJ1aWxkX2tub3duX21ldGhvZF9yZWYsCglpbnZva2VfYnVpbGRfZHRhYmxlLCBidWlsZF9pbnZva2V2aXJ0dWFsLCBidWlsZF9pbnZva2VpbnRlcmZhY2UsCglleHBhbmRfaW52b2tlLCBidWlsZF9qbmlfc3R1YiwgZXhwYW5kX2phdmFfZmllbGRfb3AsCglqYXZhX2V4cGFuZF9leHByLCBleHBhbmRfYnl0ZV9jb2RlLCBTVE9SRV9JTlRFUk5BTCwKCWZvcmNlX2V2YWx1YXRpb25fb3JkZXIsIGVtaXRfaW5pdF90ZXN0X2luaXRpYWxpemF0aW9uKTogQ29udmVydAoJY2FsbHMgdG8gImJ1aWxkIiBpbnRvIGNhbGxzIHRvIHRoZSBwcmVmZXJlZCAiYnVpbGROIiBmdW5jdGlvbnMuCgoyMDA0LTA3LTExICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGphdmEtdHJlZS5oIChzZXRfYmxvY2spOiBSZW1vdmUuCgkqIGxhbmcuYyAoamF2YV9jbGVhcl9iaW5kaW5nX3N0YWNrKTogTmV3LgoJKExBTkdfSE9PS1NfQ0xFQVJfQklORElOR19TVEFDSyk6IERlZmluZS4KCSogZGVjbC5jIChzdHJ1Y3QgYmluZGluZ19sZXZlbCk6IFJlbW92ZSB0aGlzX2Jsb2NrLgoJKGNsZWFyX2JpbmRpbmdfbGV2ZWwpOiBMaWtld2lzZS4KCShwb3BsZXZlbCk6IERvbid0IGhhbmRsZSB0aGlzX2Jsb2NrLgoJKHNldF9ibG9jayk6IFJlbW92ZS4KCjIwMDQtMDctMTAgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKGNvbW1vbl9lbmNsb3NpbmdfY29udGV4dF9wKTogUmVtb3ZlIHN0YXRlbWVudCB3aXRoIG5vCglzaWRlLWVmZmVjdHMuCgoyMDA0LTA3LTA5ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJUFIgamF2YS84NjE4CgkqIHBhcnNlLnkgKGNyZWF0ZV9hbm9ueW1vdXNfY2xhc3MpOiBSZW1vdmUgJ2xvY2F0aW9uJyBhcmd1bWVudC4gVXNlCgl0aGUgV0ZMIGZyb20gVFlQRV9OQU1FIHRvIGdldCBsaW5lIG51bWJlciBmb3IgdGhlIGRlY2wuIEZpeCBjb21tZW50LgoJKGNyYWZ0X2NvbnN0cnVjdG9yKTogSW5oZXJpdCBhY2Nlc3MgZmxhZ3MgZm9yIGltcGxpY2l0IGNvbnN0cnVjdG9yCglmcm9tIHRoZSBlbmNsb3NpbmcgY2xhc3MuCgkoY3JlYXRlX2NsYXNzKTogRml4IGNvbW1lbnQgdHlwby4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBQYXNzIHR5cGUgb2YgcXVhbGlmaWVyIHRvCglub3RfYWNjZXNzaWJsZV9wLCBub3QgdGhlIHR5cGUgaW4gd2hpY2ggdGFyZ2V0IGZpZWxkIHdhcyBmb3VuZC4KCShub3RfYWNjZXNzaWJsZV9wKTogSGFuZGxlIGlubmVyIGNsYXNzZXMuIEV4cGFuZCBwcm90ZWN0ZWQKCXF1YWxpZmllci1zdWJ0eXBlIGNoZWNrIHRvIGVuY2xvc2luZyBpbnN0YW5jZXMsIGJ1dCBkb24ndCBhcHBseSB0aGlzCgljaGVjayB0byBzdGF0aWMgbWVtYmVycy4gQWxsb3cgcHJvdGVjdGVkIGFjY2VzcyB0byBpbm5lciBjbGFzc2VzCglvZiBhIHN1YnR5cGUuIEFsbG93IHByaXZhdGUgYWNjZXNzIHdpdGhpbiBjb21tb24gZW5jbG9zaW5nIGNvbnRleHQuCgkoYnVpbGRfc3VwZXJfaW52b2NhdGlvbik6IEdldCBXRkwgbGluZSBudW1iZXIgaW5mbyBmcm9tIGN1cnJlbnQKCWNsYXNzIGRlY2wuCgkoYnVpbGRfaW5jb21wbGV0ZV9jbGFzc19yZWYpOiBVcGRhdGUgZm9yIG5ldyBjcmVhdGVfYW5vbnltb3VzX2NsYXNzCglzaWduYXR1cmUuCgkqIHBhcnNlLmggKElOTkVSX0VOQ0xPU0lOR19TQ09QRV9DSEVDSyk6IFVzZQoJY29tbW9uX2VuY2xvc2luZ19pbnN0YW5jZV9wLgoJKiBjbGFzcy5jIChjb21tb25fZW5jbG9zaW5nX2NvbnRleHRfcCk6IE5ldy4gRGV0ZXJtaW5lIGlmIHR5cGVzCglzaGFyZSBhIGNvbW1vbiBlbmNsb3NpbmcgY29udGV4dCwgZXZlbiBhY3Jvc3Mgc3RhdGljIGNvbnRleHRzLgoJKGNvbW1vbl9lbmNsb3NpbmdfaW5zdGFuY2VfcCk6IFJlbmFtZWQgZnJvbQoJY29tbW9uX2VuY2xvc2luZ19jb250ZXh0X3AuIERldGVybWluZXMgaWYgdHlwZXMgc2hhcmUgYSBjb21tb24KCW5vbi1zdGF0aWMgZW5jbG9zaW5nIGluc3RhbmNlLgoJKiBqYXZhLXRyZWUuaCAoY29tbW9uX2VuY2xvc2luZ19pbnN0YW5jZV9wKTogRGVjbGFyZS4KCSogamNmLXdyaXRlLmMgKGdldF9tZXRob2RfYWNjZXNzX2ZsYWdzKTogTmV3LiBTdXJwcmVzcyBwcml2YXRlIGZsYWcKCWZvciBpbm5lciBjbGFzcyBjb25zdHJ1Y3RvcnMuCgkoZ2VuZXJhdGVfY2xhc3NmaWxlKTogVXNlIGdldF9tZXRob2RfYWNjZXNzX2ZsYWdzLgoKMjAwNC0wNy0wOSAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAoaW50ZXJmYWNlX29mX3ApOiBDaGVjayBmb3IgbnVsbCBUWVBFX0JJTkZPLgoKMjAwNC0wNy0wOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3MpOiBEbyBub3QgY3JlYXRlIGJpbmZvIGhlcmUuCgkoc2V0X3N1cGVyX2luZm8pOiBDcmVhdGUgaXQgaGVyZS4KCSogamF2YS10cmVlLmggKENMQVNTX0hBU19TVVBFUik6IENvcGUgd2l0aCBsYWNrIG9mIGEgYmluZm8uCgoyMDA0LTA3LTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZXhwci5jIChjYXNlX2lkZW50aXR5LCBnZXRfcHJpbWl0aXZlX2FycmF5X3Z0YWJsZSwKCWphdmFfZXhwYW5kX2V4cHIsIGVtaXRfaW5pdF90ZXN0X2luaXRpYWxpemF0aW9uKTogUmVtb3ZlLgoJKiBqYXZhLXRyZWUuaCAoamF2YV9leHBhbmRfZXhwcik6IFJlbW92ZS4KCSogbGFuZy5jIChMQU5HX0hPT0tTX0VYUEFORF9FWFBSKTogUmVtb3ZlLgoKMjAwNC0wNy0wNyAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBjbGFzcy5jIChidWlsZF9zdGF0aWNfZmllbGRfcmVmKTogIEFkZCBhIE5PUF9FWFBSOyBvdGhlcndpc2Ugd2UKCWdldCBpbnRlcm5hbCBlcnJvciBkdWUgdG8gbWlzbWF0Y2hlZCB0eXBlcy4KCgkqIGdjai50ZXhpIChJbnZva2luZyBnaWopOiAgRG9jdW1lbnQgbmV3IC12ZXJib3NlOmNsYXNzIGZsYWcuCgoJKiBnY2oudGV4aSAoTGlua2luZyk6ICAgTmV3IG5vZGUuICBEb2N1bWVudCAtbGdpaiB1c2FnZS4KCjIwMDQtMDctMDcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBqYXZhLXRyZWUuaCAoQ0xBU1NUWVBFX1NQVUVSKTogQWRqdXN0IEJJTkZPIG1hY3Jvcy4KCShUWVBFX05WSVJUVUFMUywgVFlQRV9WVEFCTEUpOiBMaWtld2lzZS4KCSogamF2YS9jbGFzcy5jIChzZXRfc3VwZXJfaW5mbywgY2xhc3NfZGVwdGgsIGludGVyZmFjZV9vZl9wLAoJbWF5YmVfYWRkX2ludGVyZmFjZSwgYWRkX2ludGVyZmFjZSwgbWFrZV9jbGFzc19kYXRhLAoJbGF5b3V0X2NsYXNzLCBhZGRfbWlyYW5kYV9tZXRob2RzKTogQWRqdXN0IEJJTkZPIG1hY3Jvcy4KCSogZXhwci5jIChjYW5fd2lkZW5fcmVmZXJlbmNlX3RvLCBsb29rdXBfZmllbGQpOiBMaWtld2lzZS4KCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2NsYXNzZmlsZSk6IExpa2V3aXNlLgoJKiBwYXJzZS55IChwYXRjaF9hbm9ueW1vdXNfY2xhc3MsCgljaGVja19pbm5lcl9jaXJjdWxhcl9yZWZlcmVuY2UsIGNoZWNrX2NpcmN1bGFyX3JlZmVyZW5jZSwKCWphdmFfY29tcGxldGVfY2xhc3MsIGNoZWNrX2Fic3RyYWN0X21ldGhvZF9kZWZpbml0aW9ucywKCWphdmFfY2hlY2tfYWJzdHJhY3RfbWV0aG9kX2RlZmluaXRpb25zLAoJY2hlY2tfaW50ZXJmYWNlX3Rocm93c19jbGF1c2VzLCBqYXZhX2NoZWNrX2Fic3RyYWN0X21ldGhvZHMsCglsb29rdXBfamF2YV9pbnRlcmZhY2VfbWV0aG9kMiwKCWZpbmRfYXBwbGljYWJsZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoZmluZF9tZXRob2RfaW5faW50ZXJmYWNlKTogTGlrZXdpc2UuCgkqIHZlcmlmeS5jIChtZXJnZV90eXBlcyk6IExpa2V3aXNlLgoKMjAwNC0wNy0wNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGphdmEtdHJlZS5oIChDTEFTU19IQVNfU1VQRVJfRkxBRyk6IFVzZSBCSU5GT19GTEFHXzEuCgkqIGNsYXNzLmMgKGFkZF9pbnRlcmZhY2VfZG8pOiBVc2UgQklORk9fVklSVFVBTF9QLgoKMjAwNC0wNy0wNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3MpOiBVc2UgbWFrZV90cmVlX2JpbmZvLgoJKHNldF9zdXBlcl9pbmZvLCBhZGRfaW50ZXJmYWNlX2RvKTogTGlrZXdpc2UuCgkqIGphdmEtdHJlZS5oIChDTEFTU19IQVNfU1VQRVJfRkxBRyk6IEV4cGVjdCBhIEJJTkZPLgoKMjAwNC0wNy0wNCAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJKiB2ZXJpZnkuYzogQ29ycmVjdCBhcnJheSBlbGVtZW50IGFjY2VzcyBmb3JtYXR0aW5nIHRoaW5rby4KCjIwMDQtMDctMDQgIFJhbmppdCBNYXRoZXcgIDxybWF0aGV3QGhvdG1haWwuY29tPgoKCSogdmVyaWZ5LmM6IEluc2VydCBhIHNob3J0IGJsdXJiIGF0IHRoZSBzdGFydCByZWZlcnJpbmcgdG8gdGhlIEpWTVMuCgkobWVyZ2VfdHlwZV9zdGF0ZSk6IFJlbW92ZSByZWR1bmRhbnQgbmVzdGVkIGlmIHN0YXRlbWVudC4KCSh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6IEVuc3VyZSBjdXJyZW50X3N1YnIgaXMgaW5pdGlhbGlzZWQgdG8KCU5VTExfVFJFRS4KCU1pbm9yIGZvcm1hdHRpbmcgZml4ZXMgYWxsIG92ZXIgdGhlIHBsYWNlLgoKMjAwNC0wNy0wMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyA8Y2FzZSBTQVZFX0VYUFI+KTogUmV3cml0ZS4KCjIwMDQtMDctMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChyZWdpc3RlckNsYXNzX2xpYmZ1bmMpOiBSZW1vdmUuCgkoaW5pdF9jbGFzc19wcm9jZXNzaW5nKTogRG9uJ3Qgc2V0IGl0LgoJKGVtaXRfcmVnaXN0ZXJfY2xhc3Nlcyk6IFRha2UgbGlzdF9wIHBhcmFtZXRlci4gIEZpbGwgaXQgaW4KCXdpdGggX0p2X1JlZ2lzdGVyQ2xhc3MgY2FsbHMuCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IERvbid0IGNhbGwKCWluaXRfcmVzb3VyY2VfcHJvY2Vzc2luZy4KCSogamNmLXBhcnNlLmMgKGphdmFfZW1pdF9zdGF0aWNfY29uc3RydWN0b3IpOiBOZXcuCgkoamF2YV9wYXJzZV9maWxlKTogQ2FsbCBpdC4KCSogcmVzb3VyY2UuYyAocmVnaXN0ZXJSZXNvdXJjZV9saWJmdW5jKTogUmVtb3ZlLgoJKGluaXRfcmVzb3VyY2VfcHJvY2Vzc2luZyk6IFJlbW92ZS4KCSh3cml0ZV9yZXNvdXJjZV9jb25zdHJ1Y3Rvcik6IFRha2UgbGlzdF9wIHBhcmFtZXRlci4gIEZpbGwgaXQgaW4KCXdpdGggX0p2X1JlZ2lzdGVyUmVzb3VyY2UgY2FsbHMuCgkqIGphdmEtdHJlZS5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCjIwMDQtMDYtMjkgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzEyNjIKCSogY2xhc3MuYyAobGF5b3V0X2NsYXNzX21ldGhvZCk6IERvIG5vdCBvdmVycmlkZSBwYWNrYWdlLXByaXZhdGUKCW1ldGhvZCBpZiBpdHMgaW4gYSBkaWZmZXJlbnQgcGFja2FnZS4KCShzcGxpdF9xdWFsaWZpZWRfbmFtZSk6IE1vdmUgaGVyZSBmcm9tIHBhcnNlLnkuIFJlbmFtZSBmcm9tCglicmVha2Rvd25fcXVhbGlmaWVkLiBBZGQgY29tbWVudC4KCShpbl9zYW1lX3BhY2thZ2UpOiBNb3ZlIGhlcmUgZnJvbSBwYXJzZS55LiBBZGQgY29tbWVudC4KCSogamF2YS10cmVlLmggKGJyZWFrX2Rvd25fcXVhbGlmaWVkLCBpbl9zYW1lX3BhY2thZ2UpOiBEZWNsYXJlLgoJKGluX3NhbWVfcGFja2FnZSk6IExpa2V3aXNlLgoJKiBwYXJzZS55IChicmVha2Rvd25fcXVhbGlmaWVkLCBpbl9zYW1lX3BhY2thZ2UpOiBNb3ZlZCB0byBjbGFzcy5jLgoJQ2FsbGVycyB1cGRhdGVkLgoKMjAwNC0wNi0yOSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX3N0YXJ0X2phdmFfaGFuZGxlcik6IFB1c2ggYSBuZXcgYmluZGluZyBsZXZlbC4KCURvbid0IGJ1aWxkIGEgVFJZX0NBVENIX0VYUFIgbm93LCB3ZSdsbCBkbyBpdCBsYXRlci4gIENhbGwKCXJlZ2lzdGVyX2V4Y2VwdGlvbl9yYW5nZSgpIHRvIHJlZ2lzdGVyIHdoZXJlIHdlJ2xsIGRvIGl0LgoJKGV4cGFuZF9lbmRfamF2YV9oYW5kbGVyKTogUmVtb3ZlIG9sZCBib2d1cyBjb2RlLiAgUmVwbGFjZSB3aXRoCgluZXcgbG9naWMgdGhhdCBzaW1wbHkgYnVpbGRzIFRSWV9DQVRDSF9FWFBScyBhbmQgaW5zZXJ0cyB0aGVtIGF0Cgl0aGUgdG9wIG9mIHRoZSBleHByZXNzaW9uIHdlJ3JlIGN1cmVudGx5IGJ1aWxkaW5nLgoJKG1heWJlX2VuZF90cnkpOiBEZWxldGUuCgkqIGRlY2wuYyAoYmluZGluZ19sZXZlbC5leGNlcHRpb25fcmFuZ2UpOiBOZXcgZmllbGQuCgkoY2xlYXJfYmluZGluZ19sZXZlbCk6IEFkZCBmaWVsZCBleGNlcHRpb25fcmFuZ2UuICBSZWZvcm1hdC4KCShwb3BsZXZlbCk6IENhbGwgZXhwYW5kX2VuZF9qYXZhX2hhbmRsZXIoKS4KCShwb3BsZXZlbCk6IENhbGwgamF2YV9hZGRfc3RtdCBvbmx5IGlmIGZ1bmN0aW9uYm9keSBpcyBmYWxzZS4KCShtYXliZV9wb3BsZXZlbHMpOiBEb24ndCBjYWxsIG1heWJlX2VuZF90cnkoKSBmcm9tIGhlcmUuCgkoZW5kX2phdmFfbWV0aG9kKTogQ2xlYXIgbm8gbG9uZ2VyIHVzZWQgdHJlZXMgaW4gZnVuY3Rpb24gZGVjbC4KCShyZWdpc3Rlcl9leGNlcHRpb25fcmFuZ2UpOiBOZXcgZnVuY3Rpb24uCgkqIGphdmEtdHJlZS5oIChyZWdpc3Rlcl9leGNlcHRpb25fcmFuZ2UsIHN0cnVjdCBlaF9yYW5nZSk6IERlY2xhcmUuCgoyMDA0LTA2LTI4ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoZ2V0X2NsYXNzZmlsZV9tb2RpZmllcnMpOiBGb3JtYXR0aW5nIGZpeGVzLgoKMjAwNC0wNi0yNyAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJRm9ybWF0dGluZyBmaXhlcy4KCSogZXhwci5jIChjbGFzc19oYXNfZmluYWxpemVfbWV0aG9kKTogRml4IG1ldGhvZCBuYW1lIGluZGVudGF0aW9uLgoJKGV4cGFuZF9qYXZhX2NhbGwpOiBSZW1vdmUgSyZSIHN0eWxlIHBhcmFtZXRlciBkZWNsYXJhdGlvbi4KCShleHBhbmRfaW52b2tlKTogRml4IHN0YXRlbWVudCBpbmRlbnRhdGlvbi4KCShleHBhbmRfamF2YV9maWVsZF9vcCk6IExpa2V3aXNlLgoJKiBwYXJzZS1zY2FuLnk6IEZpeCB0eXBvLgoJKHJlc2V0X3JlcG9ydCk6IEZpeCBtZXRob2QgbmFtZSBpbmRlbnRhdGlvbi4KCSogcGFyc2UueSAodW5yZXNvbHZlZF90eXBlX3AsIGJ1aWxkX2V4cHJfYmxvY2spOiBSZW1vdmUgZXh0cmEgYmxhbmsKCWxpbmUuIEZpeCB0eXBvcy4KCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogRG9jdW1lbnQgcGFyYW1ldGVycywgaW5zZXJ0CglwYWdlIGJyZWFrLgoJKiBsYW5nLmMgKGxhbmdfaW5pdF9zb3VyY2UpOiBGaXggbWV0aG9kIG5hbWUgaW5kZW50YXRpb24uCgkqIGNsYXNzLmMgKGNvbW1vbl9lbmNsb3NpbmdfY29udGV4dF9wKTogTGlrZXdpc2UuCgkoZW1pdF9zeW1ib2xfdGFibGUpOiBGaXggcGFyYW1ldGVyIGxpc3QgaW5kZW50YXRpb24uCgkqIGRlY2wuYyAoYWRkX3N0bXRfdG9fY29tcG91bmQsIGphdmFfYWRkX3N0bXQpOiBSZW1vdmUgSyZSIHN0eWxlCglwYXJhbWV0ZXIgZGVjbGFyYXRpb24uCgkqIGNvbnN0YW50cy5jOiBGaXggY29weXJpZ2h0IG5vdGljZSBpbmRlbnRhdGlvbi4KCSogdHlwZWNrLmMgKGZpbmRfbWV0aG9kX2luX3N1cGVyY2xhc3Nlcyk6IEZpeCBwYXJhbWV0ZXIgbGlzdAoJaW5kZW50YXRpb24uCgkoZmluZF9tZXRob2RfaW5faW50ZXJmYWNlcyk6IExpa2V3aXNlLgoJKiB6ZXh0cmFjdC5jIChtYWtlbG9uZyk6IEZpeCBtZXRob2QgbmFtZSBpbmRlbnRhdGlvbi4KCjIwMDQtMDYtMjYgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE1NzE1LgoJKiBwYXJzZS55IChjcmVhdGVfaW50ZXJmYWNlKTogU2V0IGNvcnJlY3QgYWNjZXNzIG1vZGlmaWVycyBmb3IKCWludGVyZmFjZXMuCgkqIGpjZi13cml0ZS5jIChnZXRfY2xhc3NmaWxlX21vZGlmaWVycyk6IE5ldyBmdW5jdGlvbi4KCShnZW5lcmF0ZV9jbGFzc2ZpbGUpOiBVc2UgZ2V0X2NsYXNzZmlsZV9tb2RpZmllcnMsIG5vdAoJZ2V0X2FjY2Vzc19mbGFncy4KCjIwMDQtMDYtMjYgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHJlZ2lzdGVyX2luY29tcGxldGVfdHlwZSk6IFNldCBKREVQX0VOQ0xPU0lORyBmb3IgInN1cGVyIgoJZGVwZW5kZW5jeSB0byBjdXJyZW50IHBhcnNlciBjb250ZXh0LCBub3QgTlVMTF9UUkVFLCBmb3IgdG9wLWxldmVsCgljbGFzc2VzLgoJKGpkZXBfcmVzb2x2ZV9jbGFzcyk6IEVuYWJsZSBtZW1iZXIgYWNjZXNzIGNoZWNrIGZvciBhbGwgaW5uZXIKCWNsYXNzIGRlcGVuZGVuY2llcy4KCjIwMDQtMDYtMjYgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHF1YWxpZnlfYW5kX2ZpbmQpOiBQYXNzIHR5cGUgZGVjbCwgbm90IGlkZW50aWZpZXIsIHRvCglsb2FkX2NsYXNzLgoKMjAwNC0wNi0yNiAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCVBSIGphdmEvMTU3MzQKCSogZXhwci5jIChleHBhbmRfamF2YV9maWVsZF9vcCk6IEVuc3VyZSB0aGF0IHRhcmdldCBjbGFzcyBmb3Igc3RhdGljCglmaWVsZCBhY2Nlc3MgaGFzIGJlZW4gbG9hZGVkLgoKMjAwNC0wNi0yNiAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoJICAgIFJhbmppdCBNYXRoZXcgIDxybWF0aGV3QGhvdG1haWwuY29tPgoKCVBSIGphdmEvMTIwNywgamF2YS8xNjE3OAoJKiBqY2YtcGFyc2UuYyAobG9hZF9jbGFzcyk6IFJldHVybiBpbW1lZGlhdGVseSBpZiBwYXNzZWQgYSB0eXBlIGRlY2wKCXdoZXJlIENMQVNTX0ZST01fU09VUkNFX1AgaXMgc2V0LiBSZW1vdmUgRklYTUUuCgkqIHBhcnNlLnkgKGRvX3Jlc29sdmVfY2xhc3MpOiBSZW1vdmUgY2hlY2tzIGZvciBDTEFTU19GUk9NX1NPVVJDRV9QCgliZWZvcmUgY2FsbGluZyBsb2FkX2NsYXNzLgoJKHF1YWxpZnlfYW5kX2ZpbmQpOiBMaWtld2lzZS4KCShmaW5kX2luX2ltcG9ydHNfb25fZGVtYW5kKTogTGlrZXdpc2UuCgkoZmluZF9hcHBsaWNhYmxlX2FjY2Vzc2libGVfbWV0aG9kc19saXN0KTogTGlrZXdpc2UuCgoyMDA0LTA2LTI0ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChqYXZhX2xheW91dF9zZWVuX2NsYXNzX21ldGhvZHMpOiBEb24ndCBjYWxsIGxvYWRfY2xhc3MKCW9uIGNsYXNzIGRlZmluZWQgYnkgc291cmNlIHBhcnNlci4KCjIwMDQtMDYtMjMgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHNldF9uZXN0ZWRfY2xhc3Nfc2ltcGxlX25hbWVfdmFsdWUpOiBSZW1vdmVkLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX2NsYXNzKTogUmVtb3ZlIGNhbGxzIHRvCglzZXRfbmVzdGVkX2NsYXNzX3NpbXBsZV9uYW1lX3ZhbHVlLgoKMjAwNC0wNi0yMiAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgkgICAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJRml4ZXMgUFIgamF2YS8xNjExMy4KCSogZGVjbC5jIChmb3JjZV9wb3BsZXZlbHMpOiBSZW1vdmUgY2FsbCB0byBleHBhbmRfZW5kX2JpbmRpbmdzLgoKMjAwNC0wNi0yMiAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJKiBwYXJzZS55IChjcmVhdGVfY2xhc3MpOiBDb3JyZWN0IGRpYWdub3N0aWMgbWVzc2FnZSBhYm91dAoJamF2YS5sYW5nLk9iamVjdCBleHRlbmRpbmcgYW55dGhpbmcgZWxzZS4KCjIwMDQtMDYtMjEgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjbGFzcy5jIChidWlsZF9jbGFzc19yZWYpOiBBZGQgbmV3IG9wZXJhbmQgZm9yIENPTVBPTkVOVF9SRUYuCgkoYnVpbGRfc3RhdGljX2ZpZWxkX3JlZik6IExpa2V3aXNlIGFuZCBhZGQgbmV3IG9wZXJhbmRzIGZvciBBUlJBWV9SRUYuCgkqIGNvbnN0YW50cy5jIChidWlsZF9yZWZfZnJvbV9jb25zdGFudF9wb29sKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9hcnJheV9sZW5ndGhfYWNjZXNzKTogTGlrZXdpc2UuCgkoYnVpbGRfZ2V0X2NsYXNzLCBidWlsZF9maWVsZF9yZWYsIGJ1aWxkX2tub3duX21ldGhvZF9yZWYpOiBMaWtld2lzZS4KCShpbnZva2VfYnVpbGRfZHRhYmxlLCBidWlsZF9pbnZva2V2aXJ0dWFsKTogTGlrZXdpc2UuCgkoYnVpbGRfaW52b2tlaW50ZXJmYWNlLCBqYXZhX2V4cGFuZF9leHByKTogTGlrZXdpc2UuCgkoZW1pdF9pbml0X3Rlc3RfaW5pdGlhbGl6YXRpb24pOiBMaWtld2lzZS4KCSogamF2YS1naW1wbGlmeS5jIChqYXZhX2dpbXBsaWZ5X25ld19hcnJheV9pbml0KTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKG1ha2VfcXVhbGlmZWRfbmFtZSwgYnVpbGRfYXJyYXlfcmVmKTogTGlrZXdpc2UuCgoyMDA0LTA2LTIxICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGphdmEtZ2ltcGxpZnkuYyAoamF2YV9naW1wbGlmeV9ibG9jayk6IHNldCBUUkVFX1VTRUQgb24gdGhlIG5ldwoJYmxvY2suCgoyMDA0LTA2LTIxICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGpjZi5oIChzdHJ1Y3QgSkNGKTogQ2hhbmdlIGphdmFfc291cmNlLCByaWdodF96aXAgYW5kIGZpbmlzaGVkCgl0byB1bnNpZ25lZCBpbnQuCgkqIGxleC5oIChzdHJ1Y3QgamF2YV9sZXhlcik6IENoYW5nZSBoaXRfZW9mLCByZWFkX2FueXRoaW5nLAoJYnl0ZV9zd2FwIGFuZCB1c2VfZmFsbGJhY2sgdG8gdW5zaWduZWQgaW50LgoJKiBwYXJzZS5oIChzdHJ1Y3QgX2pkZXApOiBDaGFuZ2UgZmxhZzAgdG8gdW5zaWduZWQgaW50LgoKMjAwNC0wNi0xNyAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJRml4ZXMgUFIgamF2YS8xMzk0OAoJKiBwYXJzZS55IChqYXZhX2xheW91dF9zZWVuX2NsYXNzX21ldGhvZHMpOiBFbnN1cmUgY2xhc3MgaXMgbG9hZGVkCgliZWZvcmUgdHJ5aW5nIHRvIGxheSBvdXQgaXRzIG1ldGhvZHMuCgkqIGpjZi1wYXJzZS5jIChyZWFkX2NsYXNzKTogVHJhY2sgcGFyc2VkIGZpbGVzIHVzaW5nIGNhbm9uaWNhbCBwYXRocwoJb2J0YWluZWQgdmlhIGxyZWFscGF0aCBmcm9tIGxpYmliZXJ0eS4KCShqYXZhX3BhcnNlX2ZpbGUpOiBMaWtld2lzZS4KCShwYXJzZV9zb3VyY2VfZmlsZV8xKTogUmVuYW1lIGZvcm1hbCBwYXJhbWV0ZXIgdG8gcmVmbGVjdCBpdHMKCW1vZGlmaWVkIHB1cnBvc2UuIE1pbm9yIGZvcm1hdHRpbmcgZml4LgoKMjAwNC0wNi0xNSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGNsYXNzLmMgKGVtaXRfcmVnaXN0ZXJfY2xhc3Nlcyk6IE1ha2UgdGhlIGZ1bmN0aW9uIHVuaW5saW5hYmxlLAoJZG8gbm90IHNldCBjdXJyZW50X2Z1bmN0aW9uX2Nhbm5vdF9pbmxpbmUuCgkqIHJlc291cmNlLmMgKHdyaXRlX3Jlc291cmNlX2NvbnN0cnVjdG9yKTogRG8gbm90IHJlc2V0CglmbGFnX2lubGluZV9mdW5jdGlvbnMgYXJvdW5kIHJlc3Rfb2ZfY29tcGlsYXRpb24uCgoyMDA0LTA2LTA4ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBqYXZhLzE1NzY5CgkqIGV4cHIuYyAoamF2YV90cnV0aHZhbHVlX2NvbnZlcnNpb24pOiBIYW5kbGUKCVVORVFfRVhQUiwgVU5MRV9FWFBSLCBVTkdFX0VYUFIsIFVOTFRfRVhQUiwgVU5HVF9FWFBSLAoJT1JERVJFRF9FWFBSLCBhbmQgVU5PUkRFUkVEX0VYUFIgYXMgY29tcGFyaXNvbiBvcGVyYXRvcnMsCglpLmUuIHJldHVybiB0aGUgZXhwcmVzc2lvbi4KCjIwMDQtMDYtMDMgTWFyayBHLiBBZGFtcyAgPG1hcmsuZy5hZGFtc0BzeW1wYXRpY28uY2E+CgoJKiBnamF2YWguYzogSW5jbHVkZSB2ZXJzaW9uLmgKCjIwMDQtMDUtMzEgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9jb25kaXRpb25hbCk6IENvcnJlY3QgaGFuZGxpbmcKCW9mIHVub3JkZXJlZCBjb25kaXRpb25hbHMuIEFkZCBjb21tZW50LgoKMjAwNC0wNS0yOSAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgkgICAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBqYXZhLXRyZWUuaCAoREVDTF9MT0NBTF9GSU5BTF9JVUQpOiBOZXcgbWFjcm8gdG8gdGVzdCBpZiBhCglsb2NhbCB2YXJpYWJsZSB3YXMgaW5pdGlhbGlzZWQgdXBvbiBkZWNsYXJhdGlvbi4KCSogcGFyc2UueSAoZGVjbGFyZV9sb2NhbF92YXJpYWJsZXMpOiBTZXQgREVDTF9MT0NBTF9GSU5BTF9JVUQgaWYKCXZhcmlhYmxlIHdhcyBmaW5hbCBhbmQgaW5pdGlhbGlzZWQgdXBvbiBkZWNsYXJhdGlvbi4KCSogY2hlY2staW5pdC5jIChjaGVja19maW5hbF9yZWFzc2lnbmVkKTogR2l2ZSBlcnJvciBvbmx5IGlmIGEgYmxhbmsKCWZpbmFsIGlzIG5vdCBkZWZpbml0ZWx5IHVuYXNzaWduZWQgb3IgaWYgYW4gaW5pdGlhbGlzZWQgZmluYWwgaXMKCXJlYXNzaWduZWQuCgkoY2hlY2tfYm9vbF9pbml0KTogUmVzcGVjdCBKTFMyIDE2LjEuNyByZXF1aXJlbWVudHMgZm9yIGJvb2xlYW4KCWFzc2lnbm1lbnQgZXhwcmVzc2lvbnMuIFJlbW92ZSBjYXNlIE1PRElGWV9FWFBSLCBsYWJlbCBkb19kZWZhdWx0LgoJKGNoZWNrX2luaXQpOiBQZXJmb3JtIGluaXRpYWxpc2VkLXZhcmlhYmxlLXJlbW92aW5nLW9wdGltaXNhdGlvbgoJb25seSBvbiBub24tZmluYWwgbG9jYWwgdmFyaWFibGVzLgoKMjAwNC0wNS0yOCAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2NvbmRpdGlvbmFsKTogSGFuZGxlIGJpbm9wcwoJVU5MVF9FWFBSLCBVTkxFX0VYUFIsIFVOR1RfRVhQUiwgVU5HRV9FWFBSLCBVTkVRX0VYUFIsCglhbmQgTFRHVF9FWFBSLgoJKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogTGlrZXdpc2UuCgoyMDA0LTA1LTI4ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpOiBIYW5kbGUgYmlub3BzIFVOTFRfRVhQUiwgVU5MRV9FWFBSLAogICAgCVVOR1RfRVhQUiwgVU5HRV9FWFBSLCBVTkVRX0VYUFIsIGFuZCBMVEdUX0VYUFIuCgoyMDA0LTA1LTI4ICBCcnljZSBNY0tpbmxheSAgPG1ja2lubGF5QHJlZGhhdC5jb20+CgoJKiBnY2oudGV4aSAoT2JqZWN0IGFsbG9jYXRpb24pOiBSZW1vdmUgX0p2X0FsbG9jQnl0ZXMuCgkoTWl4aW5nIHdpdGggQysrKTogRG9jdW1lbnQgSnZBbGxvY0J5dGVzIGFuZCBSYXdEYXRhTWFuYWdlZC4KCjIwMDQtMDUtMjYgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoc3RydWN0IGJpbmRpbmdfbGV2ZWwpOiBBZGQgR1RZIG1hcmtlci4gQ29tcGlsZQoJYmluZGluZ19kZXB0aCB1bmNvbmRpdGlvbmFsbHkuCgkoY3VycmVudF9iaW5kaW5nX2xldmVsLCBmcmVlX2JpbmRpbmdfbGV2ZWwsIGdsb2JhbF9iaW5kaW5nX2xldmVsKToKCUxpa2V3aXNlLgoJKGNsZWFyX2JpbmRpbmdfbGV2ZWwpOiBVbmNvbmRpdGlvbmFsbHkgc2V0IGJpbmRpbmdfZGVwdGguCgkobWFrZV9iaW5kaW5nX2xldmVsKTogVXNlIGdnY19hbGxvY19jbGVhcmVkLCBub3QgeG1hbGxvYy4KCjIwMDQtMDUtMjYgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCgkqIGxleC5jIChqYXZhX25ld19sZXhlcik6IFNldCAnZW5jb2RpbmcnLgoJKGphdmFfcmVhZF9jaGFyKTogSW1wcm92ZSBlcnJvciBtZXNzYWdlIGZvciB1bnJlY29nbml6ZWQgY2hhcmFjdGVycy4KCSogbGV4LmggKHN0cnVjdCBqYXZhX2xleGVyKTogTmV3IGZpZWxkICdlbmNvZGluZycuCgoyMDA0LTA1LTIzICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogTWFrZS1sYW5nLmluOiBMaW5rIGluICQoTElCQ1BQKSBpbnN0ZWFkIG9mIG1rZGVwcy5vLgoKMjAwNC0wNS0yMSAgTWFyayBXaWVsYWFyZCAgPG1hcmtAa2xvbXAub3JnPgoKCSogZ2phdmFoLmMgKHByaW50X3N0dWJfb3Jfam5pKTogTWFyayBmdW5jdGlvbnMgb25seSBKTklFWFBPUlQsIG5vdAoJZXh0ZXJuLgoKMjAwNC0wNS0xOSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIHR5cGVjay5jOiBSZW1vdmUgbm9uLXByaW50YWJsZSBjaGFyYWN0ZXIgMTYwLgoKMjAwNC0wNS0xNyAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJKiBjaGVjay1pbml0LmM6IENvcnJlY3QgbWlub3IgdHlwb3MuCgoyMDA0LTA1LTEzICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiwgZXhwci5jLCBqYXZhLWdpbXBsaWZ5LmM6IFJlbmFtZQoJdHJlZS1zaW1wbGUuW2NoXSB0byB0cmVlLWdpbXBsZS5bY2hdLgoKMjAwNC0wNS0xNCAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJKiBqYXZhLWdpbXBsaWZ5LmMgKGphdmFfZ2ltcGxpZnlfZXhwcik6IENvcnJlY3QgbWlub3IgdHlwb3MuCgoyMDA0LTA1LTEzICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCglNZXJnZSBmcm9tIHRyZWUtc3NhLTIwMDIwNjE5LWJyYW5jaC4gIFNlZQoJQ2hhbmdlTG9nLnRyZWUtc3NhIGZvciBkZXRhaWxzLgoKCSogTWFrZS1sYW5nLmluLCBidWlsdGlucy5jLCBjaGVjay1pbml0LmMsIGNsYXNzLmMsCgljb25zdGFudHMuYywgZGVjbC5jLCBleGNlcHQuYywgZXhwci5jLCBqYXZhLWV4Y2VwdC5oLAoJamF2YS10cmVlLmRlZiwgamF2YS10cmVlLmgsIGpjZi1wYXJzZS5jLCBqY2Ytd3JpdGUuYywKCWxhbmcuYywgbGFuZy5vcHQsIHBhcnNlLnksIHJlc291cmNlLmM6IE1lcmdlZC4KCSogamF2YS1naW1wbGlmeS5jOiBOZXcgZmlsZS4KCjIwMDQtMDUtMTAgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogcGFyc2UueSAoY3JlYXRlX2NsYXNzKTogU2V0IFRZUEVfVkZJRUxELgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCgkqIGV4cHIuYyAoYnVpbGRfaW52b2tldmlydHVhbCk6IFJlbW92ZSBERUNMX1ZJTkRFWCBvZmZzZXQgYWRqdXN0bWVudC4KCSogY2xhc3MuYyAobWFrZV9tZXRob2RfdmFsdWUpOiBSZXBsYWNlIERFQ0xfVklOREVYIHdpdGggY2FsbCB0bwoJZ2V0X21ldGhvZF9pbmRleCgpLgoJKGdldF9kaXNwYXRjaF92ZWN0b3IpOiBMaWtld2lzZS4KCShsYXlvdXRfY2xhc3NfbWV0aG9kKTogTGlrZXdpc2UuCglSZXBsYWNlIHNldCBvZiBERUNMX1ZJTkRFWCB3aXRoIGNhbGwgdG8gc2V0X21ldGhvZF9pbmRleCgpLgoJKHNldF9tZXRob2RfaW5kZXgpOiBOZXcgZnVuY3Rpb24uCgkoZ2V0X21ldGhvZF9pbmRleCk6IE5ldyBmdW5jdGlvbi4KCSogamF2YS10cmVlLmggKHNldF9tZXRob2RfaW5kZXgpOiBOZXcgZnVuY3Rpb24gZGVjbC4KCShnZXRfbWV0aG9kX2luZGV4KTogTmV3IGZ1bmN0aW9uIGRlY2wuCgoyMDA0LTA1LTEwICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIHBhcnNlLnkgKGNoZWNrX3BrZ19jbGFzc19hY2Nlc3MpOiBBZGQgbmV3IGFyZ3VtZW50CglhbmQgdXNlIGl0IHdoZW4gY2wgaXMgTlVMTCB0byBjYWxsIGxvb2t1cF9jbCBvbiBpdC4KCShwYXJzZXJfY2hlY2tfc3VwZXJfaW50ZXJmYWNlKTogRG8gbm90IGNhbGwgbG9va3VwX2NsLgoJUGFzcyB0aGlzX2RlY2wgdG8gY2hlY2tfcGtnX2NsYXNzX2FjY2VzcyBhbmQgTlVMTAoJaW5zdGVhZCBvZiBsb29rdXBfY2wuCgkocGFyc2VyX2NoZWNrX3N1cGVyKTogVXBkYXRlIGZvciBjaGFuZ2UgaW4KCWNoZWNrX3BrZ19jbGFzc19hY2Nlc3MuCgkoZG9fcmVzb2x2ZV9jbGFzcyk6IExpa2V3aXNlLgoJKHByb2Nlc3NfaW1wb3J0cyk6IExpa2V3aXNlLgoJKGZpbmRfaW5faW1wb3J0c19vbl9kZW1hbmQpOiBMaWtld2lzZS4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBMaWtld2lzZS4KCjIwMDQtMDUtMDYgIFJhbmppdCBNYXRoZXcgIDxybWF0aGV3QGhvdG1haWwuY29tPgoKCUZpeGVzIFBSIGphdmEvOTY4NSwgUFIgamF2YS8xNTA3MwoJKiBwYXJzZS55IChhY2Nlc3NpYmlsaXR5X3N0cmluZyk6IE5ldyBtZXRob2QuCgkobm90X2FjY2Vzc2libGVfZmllbGRfZXJyb3IpOiBVc2UgYWNjZXNzaWJpbGl0eV9zdHJpbmcoKQoJaW5zdGVhZCBvZiBqYXZhX2FjY3N0cmluZ19sb29rdXAoKS4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBDaGVjayB3aXRoCgljaGVja19wa2dfY2xhc3NfYWNjZXNzKCkgYmVmb3JlIGFsbG93aW5nIGFjY2VzcyB1c2luZwoJcXVhbGlmaWVkIG5hbWVzLgoJRml4IGNvbW1lbnQgdHlwby4KCVVzZSBjaGVja19wa2dfY2xhc3NfYWNjZXNzKCkgaW5zdGVhZCBvZiBub3RfYWNjZXNzaWJsZV9wKCkKCWZvciB1bnF1YWxpZmllZCB0eXBlcy4KCShub3RfYWNjZXNzaWJsZV9wKTogVXNlIERFQ0xfQ09OVEVYVCAobWVtYmVyKSBpbnN0ZWFkIG9mCglSRUZFUkVOQ0UgZm9yIHBhY2thZ2UtcHJpdmF0ZSBhY2Nlc3MgY2hlY2tpbmcuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBVc2UgYWNjZXNzaWJpbGl0eV9zdHJpbmcoKSBpbnN0ZWFkCglvZiBqYXZhX2FjY3N0cmluZ19sb29rdXAoKS4KCjIwMDQtMDQtMzAgIFJhbmppdCBNYXRoZXcgIDxybWF0aGV3QGhvdG1haWwuY29tPgoKCUZpeGVzIFBSIGphdmEvMTUxMzMKCSogZ2phdmFoLmMgKHN0cnVjdCBtZXRob2RfbmFtZSk6IEFkZCBtZW1iZXIgaXNfbmF0aXZlLgoJKG92ZXJsb2FkZWRfam5pX21ldGhvZF9leGlzdHNfcCk6IE1hdGNoIGNhbmRpZGF0ZSBtZXRob2Qgb25seSBpZgoJaXQgaXMgbmF0aXZlLgoJKHByaW50X21ldGhvZF9pbmZvKTogSW5pdGlhbGlzZSBpc19uYXRpdmUgZmxhZyBmcm9tIHRoZSBtZXRob2QncwoJYWNjZXNzIGZsYWdzLgoKMjAwNC0wNC0zMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBidWlsdGlucy5jIChqYXZhX2J1aWx0aW5zKTogQWRkIGFjb3MsIGFzaW4sIGNlaWwgYW5kIGZsb29yLgoJKGluaXRpYWxpemVfYnVpbHRpbnMpOiBMaWtld2lzZSwgZGVmaW5lIGFjb3MsIGFzaW4sIGNlaWwgYW5kIGZsb29yLgoKMjAwNC0wNC0yMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiByZXNvdXJjZS5jICh3cml0ZV9yZXNvdXJjZV9jb25zdHJ1Y3Rvcik6IEd1YXJkIGNhbGwgdG8gcG9zc2libHkKCU5VTEwgdGFyZ2V0bS5hc21fb3V0LmNvbnN0cnVjdG9yIHdpdGggdGFyZ2V0bS5oYXZlX2N0b3JzX2R0b3JzLgoKMjAwNC0wNC0xOSAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAobWFrZV9jbGFzc19kYXRhKTogQWRkIG5ldyBmaWVsZCBhdXhfaW5mby4KCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogUHVzaCB0eXBlIGFuZCBkZWNsIGZvcgoJYGF1eF9pbmZvJy4KCjIwMDQtMDQtMTUgIEJyeWNlIE1jS2lubGF5ICA8bWNraW5sYXlAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2phdmFfTkVXKTogRG9uJ3QgdXNlIHNpemUgYXJndW1lbnQgZm9yCglfSnZfQWxsb2NPYmplY3QgY2FsbHMuCgkqIHBhcnNlLnkgKHBhdGNoX2ludm9rZSk6IExpa2V3aXNlLgoKMjAwNC0wNC0xMiAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogZXhwci5jIChidWlsZF9pbnZva2VpbnRlcmZhY2UpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcyB0bwoJZml4IHdhcm5pbmdzLgoKMjAwNC0wNC0xMiAgQnJ5Y2UgTWNLaW5sYXkgIDxtY2tpbmxheUByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAoZ2V0X2ludGVyZmFjZV9tZXRob2RfaW5kZXgpOiBOZXcgZnVuY3Rpb24uIFJldHVybiBkaXNwYXRjaAoJaW5kZXggZm9yIGludGVyZmFjZSBtZXRob2QuCgkobWFrZV9tZXRob2RfdmFsdWUpOiBGb3IgaW50ZXJmYWNlIG1ldGhvZHMsIHNldCBpbmRleCBmaWVsZCB0bwoJaWZhY2UgZGlzcGF0Y2ggaW5kZXgsIG5vdCBERUNMX1ZJTkRFWC4KCSogZXhwci5jIChidWlsZF9pbnZva2VpbnRlcmZhY2UpOiBVc2UgZ2V0X2ludGVyZmFjZV9tZXRob2RfaW5kZXguCgoyMDA0LTAzLTMxICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogVXNlIFRZUEVfVU5TSUdORUQuCgoyMDA0LTAzLTMxICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE0MTA0CgkqIGpjZi1pby5jIChvcGVuZGlyX2luX3ppcCk6IFRpZHkgdXAgZXJyb3IgaGFuZGxpbmcuCgoyMDA0LTAzLTMwICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYnVpbHRpbnMuYywgZXhwci5jLCBqY2YuaCwgcGFyc2UuaDogVXNlIG5ldyBzaG9ydGVyCglmb3JtIG9mIEdUWSBtYXJrZXJzLgoKMjAwNC0wMy0yNSAgTWFyY3VzIE1laXNzbmVyICA8bWVpc3NuZXJAc3VzZS5kZT4KCglQUiBqYXZhLzE0Njg5OgoJKiBqY2YtcGF0aC5jIChqY2ZfcGF0aF9leHRkaXJzX2FyZyk6IEFkZCBtaXNzaW5nIGNsb3NlZGlyLgoKMjAwNC0wMy0yMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGphdmEvMTQzMTU6CgkqIGpjZi13cml0ZS5jIChtYWtlX2NsYXNzX2ZpbGVfbmFtZSk6IERvbid0IHJlcG9ydCBpZiBta2RpcgoJZmFpbGVkIHdpdGggRUVYSVNULgoKMjAwNC0wMy0yMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKEV4dGVuc2lvbnMpOiBEb2N1bWVudCBHQ0pfUFJPUEVSVElFUy4KCjIwMDQtMDMtMjAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjbGFzcy5jLCBnamF2YWguYywgbGFuZy5jOiBGaXggY29tbWVudCB0eXBvcy4KCSogZ2NqLnRleGk6IEZpeCB0eXBvcy4KCjIwMDQtMDMtMTkgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogZ2NqLnRleGkgKENvZGUgR2VuZXJhdGlvbik6ICBEb2N1bWVudCBuZXcgZmxhZ3MgYW5kIGFzc2VydCBkZWZhdWx0cy4KCgkqIGNsYXNzLmMgKGFzc3VtZV9jb21waWxlZF9ub2RlX3N0cnVjdCk6ICBSZW5hbWUgdHlwZSB0bwoJY2xhc3NfZmxhZ19ub2RlX3N0cnVjdCwgYXMgaXQgaXMgbm93IGFsc28gdXNlZCBmb3IgZW5hYmxlX2Fzc2VydGlvbnMuCglSZW5hbWUgYXNzdW1lX2NvbXBpbGVkX25vZGUgdHlwZWRlZi4gIFJlbmFtZSBleGNsdWRlcCBmaWVsZCB0byB2YWx1ZS4KCShmaW5kX2Fzc3VtZV9jb21waWxlZF9ub2RlKTogIFJlbmFtZSBmdW5jdGlvbiB0byBmaW5kX2NsYXNzX2ZsYWdfbm9kZS4KCU1pbm9yIG9wdGltaXphdGlvbiAtIGF2b2lkIG5lZWRsZXNzIHN0cmxlbi4KCShhZGRfYXNzdW1lX2NvbXBpbGVkKTogIFNvbWUgdHdlYWtpbmcgYW5kIG9wdGltaXphdGlvbi4KCVJlbmFtZSBhbmQgZ2VuZXJhbGl6ZSB0byBhZGRfY2xhc3NfZmxhZyB0YWtlbSBhbiBleHRyYSBwYXJhbWV0ZXIuCgkoYWRkX2Fzc3VtZV9jb21wbGVkKTogIE5ldyBqdXN0IGNhbGxzIGFkZF9jbGFzc19mbGFnLgoJKGFkZF9lbmFibGVfYXNzZXJ0LCBlbmFibGVfYXNzZXJ0aW9ucyk6ICBOZXcgZnVuY3Rpb25zLgoJKGVuYWJsZV9hc3NlcnRfdHJlZSk6ICBOZXcgc3RhdGljLgoJKiBqYXZhLXRyZWUuaCAoYWRkX2VuYWJsZV9hc3NlcnQsIGVuYWJsZV9hc3NlcnRpb25zKTogTmV3IGRlY2xhcmF0aW9ucy4KCSogbGFuZy5vcHQgKGZlbmFibGUtYXNzZXJ0aW9ucywgZmVuYWJsZS1hc3NlcnRpb25zPSwKCWZkaXNhYmxlLWFzc2VydGlvbnMsIGZkaXNhYmxlLWFzc2VydGlvbnM9KTogIE5ldyBvcHRpb25zLgoJKiBsYW5nLmMgKGphdmFfaGFuZGxlX29wdGlvbik6ICBIYW5kbGUgbmV3IG9wdGlvbnMuCgkqIHBhcnNlLnkgKGJ1aWxkX2luY29tcGxldGVfY2xhc3NfcmVmKTogIEhhbmRsZSBjbGFzcyQgaW4gYW4gaW5uZXIKCWNsYXNzIGluIGFuIGludGVyZmFjZSAtIGNyZWF0ZSBoZWxwZXIgY2xhc3MgbmVzdGVkIGluIG91dGVyIGludGVyZmFjZS4KCShidWlsZF9hc3NlcnRpb24pOiAgU2hvcnQtY2lyY3VpdCBpZiBlbmFibGVfYXNzZXJ0aW9ucyBpcyBmYWxzZS4KCjIwMDQtMDMtMTggIFJpY2hhcmQgS2VubmVyIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGphdmEtdHJlZS5oOiBDaGFuZ2VzIHRocm91Z2hvdXQgdG8gYWRkIGNoZWNraW5nIHRvIG1hY3JvcwoJYW5kIG51bWVyb3VzIHdoaXRlc3BhY2UgY2hhbmdlcy4KCShWQVJfT1JfRklFTERfQ0hFQ0spOiBOZXcgbWFjcm8uCgkqIGpjZi13cml0ZS5jIChnZXRfYWNjZXNzX2ZsYWdzKTogVXNlIEZJRUxEX1BVQkxJQywgTUVUSE9EX1BVQkxJQywKCUZJRUxEX0ZJTkFMLCBhbmQgTUVUSE9EX0ZJTkFMIGluc3RlYWQgb2YgQ0xBU1NfUFVCTElDIGFuZCBDTEFTU19GSU5BTC4KCjIwMDQtMDMtMTYgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogamNmLWp1bXAuYyAob3B0aW9ucyk6ICBOZXcgLS1wcmludC1jb25zdGFudHMgb3B0aW9uLgoJKiBnY2oudGV4aSAoSW52b2tpbmcgamNmLWR1bXApOiAgRG9jdW1lbnQgLS1wcmludC1jb25zdGFudHMuCgoJKiBqY2YtZHVtcC5jIChmbGFnX3ByaW50X2NvbnN0YW50X3Bvb2wpOiAgRGVmYXVsdCB0byBvZmYuCgkocHJpbnRfY29uc3RhbnRfdGVyc2Vfd2l0aF9pbmRleCk6ICBOZXcgaGVscGVyIGZ1bmN0aW9uLgoJKHZhcmlvdXMgcGxhY2VzKTogIENoZWNrIGZsYWdfcHJpbnRfY29uc3RhbnRfcG9vbCB3aGVyZSBtaXNzaW5nLgoJKG1haW4pOiAgSWYgdmVyYm9zZSBzZXQgZmxhZ19wcmludF9jb25zdGFudF9wb29sLgoJKEhBTkRMRV9JTk5FUkNMQVNTRVNfQVRUUklCVVRFKTogIE51bGwgaW5uZXIgY2xhc3MgbmFtZSBpcyBhbm9ueW1vdXMuCgoyMDA0LTAzLTE1ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzE0NTgxCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfbGhzKTogQ2hlY2sgdGhhdCBmaW5hbCB2YXJpYWJsZSBoYXMgYW4KCWluaXRpYWxpemVyLgoKMjAwNC0wMy0xMiAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgamF2YS8xNDU1MQoJKiB0eXBlY2suYyAoY29udmVydCk6IENsZWFyIFRSRUVfT1ZFUkZMT1cgYWZ0ZXIgYW4gaW50ZWdlcgoJY29udmVyc2lvbi4KCjIwMDQtMDItMjkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogamNmLXBhcnNlLmMgKGphdmFfcGFyc2VfZmlsZSk6IEhhbmRsZSB0aGUgY2FzZSB0aGF0IGlucHV0X2ZpbGVuYW1lCglpcyBOVUxMLgoKMjAwNC0wMi0yNyAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBwYXJzZS55IChidWlsZF9hc3NlcnRpb24pOiAgUmUtZG8gMDItMjUgY2hhbmdlIGZvbGxvd2luZyBKZWZmIFN0dXJtCglzdWdnZXN0aW9uOiAgVXNlIGJ1aWxkX2luY29tcGxldGVfY2xhc3NfcmVmLgoJVGhpcyBmaXhlcyBQUiBqYXZhLzEzNTA4LCBqYXZhLzExNzE0LgoKMjAwNC0wMi0yNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGphdmEvcGFyc2UuaDogVXBkYXRlIGNvcHlyaWdodC4KCjIwMDQtMDItMjYgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCVBSIGphdmEvMTQyMzE6CgkqIHBhcnNlLnkgKGNoZWNrX2ludGVyZmFjZV90aHJvd3NfY2xhdXNlcyk6IENoZWNrIGZvcgoJIU1FVEhPRF9JTlZJU0lCTEUgKGlmYWNlX21ldGhvZCkuCgkqIGNsYXNzLmMgKGxheW91dF9jbGFzc19tZXRob2RzKTogQ2hlY2sgZm9yIENMQVNTX0lOVEVSRkFDRSBhcwoJd2VsbCBhcyBDTEFTU19BQlNUUkFDVC4KCjIwMDQtMDItMjUgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogcGFyc2UueSAoYnVpbGRfYXNzZXJ0aW9uKTogIElmIHdlJ3JlIGluIGFuIGlubmVyIGNsYXNzLCBjcmVhdGUgdGhlCgljbGFzcyQgaGVscGVyIHJvdXRpbmUgaW4gdGhlIG91dGVyIGNsYXNzLgoKMjAwNC0wMi0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHN3aXRjaF9sYWJlbCk6IFVzZSBtYWtlX25vZGUgZm9yIERFRkFVTFRfRVhQUi4KCjIwMDQtMDItMTYgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogTWFrZS1sYW5nLmluIChqYXZhLmluc3RhbGwtbWFuKTogQWRkIGV4dHJhIGRlcGVuZGVuY2llcy4KCjIwMDQtMDItMTMgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogTWFrZS1sYW5nLmluOiBJbnN0YWxsIG1hbiBwYWdlcyB1bmRlciB0aGUgc2FtZSBuYW1lcwoJKHBvc3NpYmx5IHRyYW5zZm9ybWVkKSBhcyB0aGUgcHJvZ3JhbSB0aGV5IGRvY3VtZW50LgoKMjAwNC0wMi0xMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBnamF2YWguYzogSW5jbHVkZSAiaW50bC5oIi4KCShlcnJvcik6IE5ldyBmdW5jdGlvbi4KCShtYWluKTogQ2FsbCBnY2NfaW5pdF9saWJpbnRsLgoJKGdldF9maWVsZF9uYW1lLCB0aHJvd2FibGVfcCwgcHJpbnRfY19kZWNsLCBwcmludF9mdWxsX2N4eF9uYW1lLAoJcHJpbnRfc3R1Yl9vcl9qbmksIHByb2Nlc3NfZmlsZSwgbWFpbik6IFVzZSBlcnJvciByYXRoZXIgdGhhbgoJZnByaW50Zi4KCShwcmludF9tZXRob2RfaW5mbywgdXNhZ2UsIGhlbHAsIHZlcnNpb24sIG1haW4pOiBNYXJrIHN0cmluZ3MgZm9yCgl0cmFuc2xhdGlvbiB3aXRoIF8uICBBdm9pZCBzcGxpdHRpbmcgdXAgc2VudGVuY2VzLiAgU2VuZAoJaW5mb3JtYXRpb24gbWVzc2FnZXMgdG8gc3Rkb3V0LgoJKiBqY2YtZHVtcC5jOiBJbmNsdWRlICJpbnRsLmgiLgoJKG1haW4pOiBDYWxsIGdjY19pbml0X2xpYmludGwuCgkocHJvY2Vzc19jbGFzcywgdXNhZ2UsIGhlbHAsIHZlcnNpb24sIG1haW4sIENIRUNLX1BDX0lOX1JBTkdFKToKCU1hcmsgZXJyb3IsIHVzYWdlIGFuZCB2ZXJzaW9uIG1lc3NhZ2VzIGZvciB0cmFuc2xhdGlvbiB3aXRoIF8uCglBdm9pZCBzcGxpdHRpbmcgdXAgc2VudGVuY2VzLgoJKiBqdi1zY2FuLmM6IEluY2x1ZGUgImludGwuaCIuCgkoZmF0YWxfZXJyb3IsIHdhcm5pbmcpOiBDaGFuZ2UgcGFyYW1ldGVyIHMgdG8gbXNnaWQuICBUcmFuc2xhdGUKCW1lc3NhZ2VzLgoJKG1haW4pOiBDYWxsIGdjY19pbml0X2xpYmludGwuCgkodXNhZ2UsIGhlbHAsIHZlcnNpb24pOiBNYXJrIGVycm9yLCB1c2FnZSBhbmQgdmVyc2lvbiBtZXNzYWdlcyBmb3IKCXRyYW5zbGF0aW9uIHdpdGggXy4gIEF2b2lkIHNwbGl0dGluZyB1cCBzZW50ZW5jZXMuCgkqIGp2Z2VubWFpbi5jOiBJbmNsdWRlICJpbnRsLmgiLgoJKG1haW4pOiBDYWxsIGdjY19pbml0X2xpYmludGwuCgkodXNhZ2UsIG1haW4pOiBNYXJrIGVycm9yIG1lc3NhZ2VzIGZvciB0cmFuc2xhdGlvbiB3aXRoIF8uCgkqIE1ha2UtbGFuZy5pbiAoR0NKSF9PQkpTLCBKVlNDQU5fT0JKUywgSkNGRFVNUF9PQkpTLAoJSlZHRU5NQUlOX09CSlMpOiBBZGQgaW50bC5vLgoJKGphdmEvamNmLWR1bXAubywgamF2YS9namF2YWgubywgamF2YS9qdi1zY2FuLm8sCglqYXZhL2p2Z2VubWFpbi5vKTogVXBkYXRlIGRlcGVuZGVuY2llcy4KCjIwMDQtMDItMDggIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogcGFyc2UueSAocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogIEluIGNhc2Ugb2YgaW5hY2Nlc3NpYmxlCgljbGFzcyBkb24ndCB1c2Ugbm90X2FjY2Vzc2libGVfZmllbGRfZXJyb3IsIHdoaWNoIGNhbiBnZXQgY29uZnVzZWQuCgoyMDA0LTAyLTA1ICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCU1ha2UtbGFuZy5pbiAocG8tZ2VuZXJhdGVkKTogIERlbGV0ZS4KCjIwMDQtMDItMDUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEvZGVjbC5vLCBqYXZhL2V4cHIubywgamF2YS9wYXJzZS5vKToKCURlcGVuZCBvbiB0YXJnZXQuaC4KCSogZGVjbC5jOiBJbmNsdWRlIHRhcmdldC5oLgoJKHN0YXJ0X2phdmFfbWV0aG9kKTogUmVwbGFjZSBQUk9NT1RFX1BST1RPVFlQRVMgd2l0aAoJdGFyZ2V0bS5jYWxscy5wcm9tb3RlX3Byb3RvdHlwZXMuCgkqIGV4cHIuYzogSW5jbHVkZSB0YXJnZXQuaC4KCShwb3BfYXJndW1lbnRzKTogUmVwbGFjZSBQUk9NT1RFX1BST1RPVFlQRVMgd2l0aAoJdGFyZ2V0bS5jYWxscy5wcm9tb3RlX3Byb3RvdHlwZXMuCgkqIHBhcnNlLnk6IEluY2x1ZGUgdGFyZ2V0LmguCgkoc3RhcnRfY29tcGxldGVfZXhwYW5kX21ldGhvZCk6IFJlcGxhY2UgUFJPTU9URV9QUk9UT1RZUEVTCgl3aXRoIHRhcmdldG0uY2FsbHMucHJvbW90ZV9wcm90b3R5cGVzLgoKMjAwNC0wMi0wNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHR5cGVjay5jOiBVcGRhdGUgY29weXJpZ2h0LgoKMjAwNC0wMi0wMiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogUmVtb3ZlIGR1cGxpY2F0ZQoJZ251L2djai9SYXdEYXRhLgoKMjAwNC0wMS0zMCAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIE1ha2UtbGFuZy5pbiAoZG9jL2djai5kdmkpOiBVc2UgJChhYnNfZG9jZGlyKS4KCjIwMDQtMDEtMjggIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogZXhwci5jIChidWlsZF9maWVsZF9yZWYpOiBNb3ZlIHZhcmlhYmxlCglkZWZpbml0aW9uIHVwLgoKMjAwNC0wMS0yOCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGJ1aWxkX2ZpZWxkX3JlZik6IFdpZGVuIGZpZWxkIG9mZnNldC4KCjIwMDQtMDEtMjcgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCWphdmEvMTMyNzMKCSogcGFyc2UueSAoY2hlY2tfaW50ZXJmYWNlX3Rocm93c19jbGF1c2VzKTogTWFrZSBzdXJlIGNsYXNzX2RlY2wKCWhhcyBiZWVuIGxvYWRlZC4KCjIwMDQtMDEtMjIgIEplZmYgU3R1cm0gIDxqc3R1cm1Ab25lLXBvaW50LmNvbT4KCglQUiBqYXZhLzEzNzMzCgkqIHBhcnNlLnkgKHBhdGNoX2Fzc2lnbm1lbnQpOiBEb24ndCBtb2RpZnkgbGhzX3R5cGUgZm9yCglyZWZlcmVuY2UgYXNzaWdubWVudHMuCgoyMDA0LTAxLTIwICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogTWFrZS1sYW5nLmluOiBSZXBsYWNlICQoZG9jZGlyKSB3aXRoIGRvYy4KCShqYXZhLmluZm8sIGphdmEuc3JjaW5mbywgamF2YS5tYW4sIGphdmEuc3JjbWFuKTogTmV3IHJ1bGVzLgoJKGphdmEuaW5zdGFsbC1tYW4pOiBSZXZhbXAgcnVsZS4KCjIwMDQtMDEtMjAgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBNYWtlLWxhbmcuaW4gKEpBVkFfSU5TVEFMTF9OQU1FLCBKQVZBX1RBUkdFVF9JTlNUQUxMX05BTUUsCglHQ0pIX1RBUkdFVF9JTlNUQUxMX05BTUUpOiBEZWZpbmUgdmlhIGEgaW1tZWRpYXRlICQoc2hlbGwpCglpbnN0ZWFkIG9mIGRlZmVycmVkIGJhY2txdW90ZS4KCjIwMDQtMDEtMTYgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogdHlwZWNrLmMgKGZpbmRfbWV0aG9kX2luX2ludGVyZmFjZXMpOiBNb3ZlIHZhcmlhYmxlCglkZWZpbml0aW9uIHVwLgoKMjAwNC0wMS0xNiAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgamF2YS8xMzI3MzoKCSogdHlwZWNrLmMgKHNoYWxsb3dfZmluZF9tZXRob2QpOiBOZXcuCgkoZmluZF9tZXRob2RfaW5fc3VwZXJjbGFzc2VzKTogTmV3LgoJKGZpbmRfbWV0aG9kX2luX2ludGVyZmFjZXMpOiBOZXcuCgkobG9va3VwX2RvKTogUmV3cml0ZS4KCSogamF2YS10cmVlLmggKFNFQVJDSF9PTkxZX0lOVEVSRkFDRSk6IERlbGV0ZS4KCgkqIGpjZi1wYXJzZS5jIChyZWFkX2NsYXNzKTogU2F2ZSBhbmQgcmVzdG9yZSBvdXRwdXRfY2xhc3MuCgkqIGRlY2wuYyAoamF2YV9leHBhbmRfYm9keSk6IFNldCBvdXRwdXRfY2xhc3MgZnJvbSBmbmRlY2wuCgoyMDA0LTAxLTE1ICBNaWNoYWVsIENoYXN0YWluICA8bWVjLmdudUBtaW5kc3ByaW5nLmNvbT4KCgkqIGNsYXNzLmMgKGdlbl9pbmRpcmVjdF9kaXNwYXRjaF90YWJsZXMpOiBGaXggc3RyaW5nIGxlbmd0aAoJY2FsY3VsYXRpb25zLgoKMjAwNC0wMS0xNSAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIE1ha2UtbGFuZy5pbiAocGFyc2UuYywgcGFyc2Utc2Nhbi5jKTogQWx3YXlzIGJ1aWxkIGluIGRvYyBkaXJlY3RvcnkuCgkoamF2YS5zcmNleHRyYSk6IENvcHkgYWJvdmUgYmFjayB0byBzb3VyY2UgZGlyZWN0b3J5IGlmIHJlcXVlc3RlZC4KCShwby1nZW5lcmF0ZWQpOiBEZWxldGUgcmVmZXJlbmNlIHRvICQocGFyc2VkaXIpLgoJKGphdmEvcGFyc2UubywgamF2YS9wYXJzZS1zY2FuLm8pOiBEZWxldGUgcmVmZXJlbmNlIHRvICQocGFyc2VkaXIpLgoJVXNlIGltcGxpY2l0IHJ1bGUuCgoyMDA0LTAxLTE0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBsYW5nLmMgKGphdmFfZXN0aW1hdGVfbnVtX2luc25zXzEpOiBGaXggYnVnIGluIE1PRElGWV9FWFBSIGNvc3QKCWVzdGltYXRpb24uCgoyMDA0LTAxLTA5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogamF2YS10cmVlLmggKGphdmFfZXhwYW5kX2V4cHIpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKiBleHByLmMgKGphdmFfZXhwYW5kX2V4cHIpOiBBZGQgYWx0X3J0bCBwYXJhbWV0ZXIuCgoyMDA0LTAxLTA5ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzEyNzU1OgoJKiBwYXJzZS55IChqYXZhX2ZpeF9jb25zdHJ1Y3RvcnMpOiAgU2V0IG91dHB1dF9jbGFzcy4KCShqYXZhX3Jlb3JkZXJfZmllbGRzKTogTGlrZXdpc2UuCgkoamF2YV9sYXlvdXRfY2xhc3Nlcyk6IExpa2V3aXNlLgoJKGphdmFfZXhwYW5kX2NsYXNzZXMpOiBHZW5lcmF0ZSBpbmRpcmVjdCBkaXNwYXRjaCB0YWJsZXMuCgkoamF2YV9leHBhbmRfY2xhc3Nlcyk6IFNldCBvdXRwdXRfY2xhc3MuCgkoamF2YV9maW5pc2hfY2xhc3Nlcyk6IExpa2V3aXNlLgoJKiBsYW5nLmMgKGphdmFfaW5pdCk6IFR1cm4gb24gYWx3YXlzX2luaXRpYWxpemVfY2xhc3NfcCBpZiB3ZSdyZQoJdXNpbmcgaW5kaXJlY3QgZGlzW2F0Y2guCgkoamF2YV9kZWNsX29rX2Zvcl9zaWJjYWxsKTogVXNlIG91dHB1dF9jbGFzcywgbm90IGN1cnJlbnRfY2xhc3MuCgkoamF2YV9nZXRfY2FsbGVlX2ZuZGVjbCk6IFVzZSBjbGFzcyBsb2NhbCBhdGFibGUuCgkqIGpjZi1wYXJzZS5jCgkoYWx3YXlzX2luaXRpYWxpemVfY2xhc3NfcCk6IERlY2wgbW92ZWQgdG8gamF2YS10cmVlLmguCgkoSEFORExFX0NMQVNTX0lORk8pOiBTZXQgb3V0cHV0X2NsYXNzLgoJKHJlYWRfY2xhc3MpOiBMaWtld2lzZS4KCShwYXJzZV9jbGFzc19maWxlKTogQ2FsbCBnZW5faW5kaXJlY3RfZGlzcGF0Y2hfdGFibGVzLgoJKHBhcnNlX3ppcF9maWxlX2VudHJpZXMpOiBTZXQgb3V0cHV0X2NsYXNzLgoJKGphdmFfcGFyc2VfZmlsZSk6IFNldCBvdXRwdXRfY2xhc3MuICBEb24ndCBlbWl0IHN5bWJvbCB0YWJsZXMuCgkqIGphdmEtdHJlZS5oIChvdXRwdXRfY2xhc3MpOiBOZXcuCglSZW1vdmUgZ2xvYmFsIGRlY2xhcmF0aW9ucyBmb3Igb3RhYmxlLCBhdGFibGUsIGFuZCBjdGFibGUuCgkoYWx3YXlzX2luaXRpYWxpemVfY2xhc3NfcCk6IG1vdmVkIGhlcmUgZnJvbSBkZWNsLmMuCgkoREVDTF9PV05FUik6IE5ldy4KCShUWVBFX0FUQUJMRV9NRVRIT0RTLCBUWVBFX0FUQUJMRV9TWU1TX0RFQ0wsIFRZUEVfQVRBQkxFX0RFQ0wsCglUWVBFX09UQUJMRV9NRVRIT0RTLCBUWVBFX09UQUJMRV9TWU1TX0RFQ0wsIFRZUEVfT1RBQkxFX0RFQ0wsCglUWVBFX0NUQUJMRV9ERUNMLCBUWVBFX0NBVENIX0NMQVNTRVMpOiBOZXcuCgkoc3RydWN0IGxhbmdfdHlwZSk6IEFkZCBvdGFibGVfbWV0aG9kcywgb3RhYmxlX2RlY2wsCglvdGFibGVfc3ltc19kZWNsLCBhdGFibGVfbWV0aG9kcywgYXRhYmxlX2RlY2wsIGF0YWJsZV9zeW1zX2RlY2wsCgljdGFibGVfZGVjbCwgY2F0Y2hfY2xhc3NlcywgdHlwZV90b19ydW50aW1lX21hcC4KCSogZXhwci5jIChidWlsZF9maWVsZF9yZWYpOiBNYWtlIG90YWJsZSwgYXRhYmxlLCBhbmQgY3RhYmxlIGNsYXNzCglsb2NhbCByYXRoZXIgdGhhbiBnbG9iYWwuCgkoYnVpbGRfa25vd25fbWV0aG9kX3JlZik6IExpa2V3aXNlLgoJKGJ1aWxkX2ludm9rZWludGVyZmFjZSk6IExpa2V3aXNlLgoJKGphdmFfZXhwYW5kX2V4cHIpOiBQYXNzIHJ1bnRpbWUgdHlwZSAocmF0aGVyIHRoYW4gYWN0dWFsIHR5cGUpIHRvCglleHBhbmRfc3RhcnRfY2F0Y2guCgkqIGV4Y2VwdC5jIChwcmVwYXJlX2VoX3RhYmxlX3R5cGUpOiBDcmVhdGUgVFlQRV9UT19SVU5USU1FX01BUCBmb3IKCXRoaXMgY2xhc3MuICBMb29rIHVwIGVhY2ggY2xhc3MgaW4gdGhhdCBtYXAgdG8gZGVsZXRlIGR1cGxpY2F0ZXMuCgkoZXhwYW5kX2VuZF9qYXZhX2hhbmRsZXIpOiBQYXNzIHJ1bnRpbWUgdHlwZSAocmF0aGVyIHRoYW4gYWN0dWFsCgl0eXBlKSB0byBleHBhbmRfc3RhcnRfY2F0Y2guCgkqIGRlY2wuYzogKGFsd2F5c19pbml0aWFsaXplX2NsYXNzX3ApOiBEZWNsIG1vdmVkIHRvIGphdmEtdHJlZS5oLgoJKGRvX25vdGhpbmcpOiBOZXcuCgkoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IFJlYXJyYW5nZSB0aGluZ3MuICBSZW1vdmUgZ2xvYmFsCglkZWNsYXJhdGlvbnMgb2Ygb3RhYmxlLCBhdGFibGUsIGFuZCBjdGFibGUuCgkoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IE1ha2UgbGFuZ19laF9ydW50aW1lX3R5cGUgZG9fbm90aGluZy4KCShqYXZhX2V4cGFuZF9ib2R5KTogU2V0IG91dHB1dF9jbGFzcy4KCSogY29uc3RhbnRzLmMgKGJ1aWxkX2NvbnN0YW50X2RhdGFfcmVmKTogVXNlIG91dHB1dF9jbGFzcywgbm90CgljdXJyZW50X2NsYXNzLgoJKGFsbG9jX25hbWVfY29uc3RhbnQpOiBMaWtld2lzZS4KCSogY2xhc3MuYyAoZ2VuX2luZGlyZWN0X2Rpc3BhdGNoX3RhYmxlcyk6IE5ldy4KCShidWlsZF9jbGFzc19yZWYpOiBHZW5lcmF0ZSBoYXJkIHJlZmVyZW5jZSB0byBzdXBlcmNsYXNzLCBldmVuIGlmCgl1c2luZyBpbmRpcmVjdCBkaXNwYXRjaC4KCShidWlsZF9zdGF0aWNfZmllbGRfcmVmKTogVXNlIGNsYXNzIGxvY2FsIGF0YWJsZS4KCShtYWtlX2NsYXNzX2RhdGEpOiBHZW5lcmF0ZSBoYXJkIHJlZmVyZW5jZSB0byBzdXBlcmNsYXNzLCBldmVuIGlmCgl1c2luZyBpbmRpcmVjdCBkaXNwYXRjaC4KCUdlbmVyYXRlIHN5bWJvbGljIHJlZmVyZW5jZXMgdG8gaW50ZXJmYWNlcyB3aGVuIHVzaW5nIGluZGlyZWN0CglkaXNwYXRjaC4KCShtYWtlX2NsYXNzX2RhdGEpOiBFbWl0IG90YWJsZSwgYXRhYmxlLCBhbmQgY3RhYmxlLgoJTWFrZSBvdGFibGUsIGF0YWJsZSwgYW5kIGN0YWJsZSBjbGFzcyBsb2NhbCByYXRoZXIgdGhhbiBnbG9iYWwuCgkoZW1pdF9jYXRjaF90YWJsZSk6IE1ha2Ugb3RhYmxlLCBhdGFibGUsIGFuZCBjdGFibGUgY2xhc3MgbG9jYWwKCXJhdGhlciB0aGFuIGdsb2JhbC4KCjIwMDMtMTItMjUgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogcGFyc2UueSAoY2F0Y2hfY2xhdXNlX3BhcmFtZXRlcik6IEZpeCB0eXBvLgoKCVBSIGphdmEvMTM0MDQKCSogcGFyc2UueTogKGNhdGNoX2NsYXVzZV9wYXJhbWV0ZXIpOiBSZXR1cm4gZWFybHkgaWYgJDMsIGFrYQoJZm9ybWFsX3BhcmFtZXRlciwgaXMgbnVsbC4KCjIwMDMtMTItMjAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjbGFzcy5jOiBSZW1vdmUgdXNlcyBvZiAicmVnaXN0ZXIiIHNwZWNpZmllciBpbgoJZGVjbGFyYXRpb25zIG9mIGFyZ3VtZW50cyBhbmQgbG9jYWwgdmFyaWFibGVzLgoJKiBkZWNsLmM6IExpa2V3aXNlLgoJKiBleHByLmM6IExpa2V3aXNlLgoJKiBnamF2YWguYzogTGlrZXdpc2UuCgkqIGpjZi1kdW1wLmM6IExpa2V3aXNlLgoJKiBqY2YtaW8uYzogTGlrZXdpc2UuCgkqIGpjZi1wYXJzZS5jOiBMaWtld2lzZS4KCSogamNmLXdyaXRlLmM6IExpa2V3aXNlLgoJKiBrZXl3b3JkLmg6IExpa2V3aXNlLgoJKiBwYXJzZS55OiBMaWtld2lzZS4KCSogdHlwZWNrLmM6IExpa2V3aXNlLgoJKiB2ZXJpZnkuYzogTGlrZXdpc2UuCgoyMDAzLTEyLTA2ICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogTWFrZS1sYW5nLmluIChHQ0pfQ1JPU1NfTkFNRSk6IERlbGV0ZS4KCShqYXZhLmluc3RhbGxfY29tbW9uLCBqYXZhLmluc3RhbGwtbWFuKTogQWRqdXN0IGZvciBhYm92ZS4KCShqYXZhLnVuaW5zdGFsbCk6IExpa2V3aXNlLgoKMjAwMy0xMi0wMyAgTWljaGFlbCBLb2NoICA8a29ucXVlcm9yQGdteC5kZT4KCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3NfZGF0YSk6CglQdXNoIGZpZWxkIHZhbHVlIHRvICdoYWNrX3NpZ25lcnMnIGluc3RlYWQgb2YgJ3NpZ25lcnMnLgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOgoJUHVzaCBmaWVsZCAnaGFja19zaWduZXJzJyBpbnN0ZWFkIG9mICdzaWduZXJzJy4KCjIwMDMtMTItMDMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBsZXguaDogQ2hlY2sgYm90aCBIQVZFX0lDT05WIGFuZCBIQVZFX0lDT05WX0ggYmVmb3JlCglpbmNsdWRpbmcgaWNvbnYuaC4KCjIwMDMtMTItMDMgIFJhbHBoIExvYWRlciAgPHJjbEBpaHVnLmNvLm56PgoKCVBSIGphdmEvMTIzNzQ6CgkqIHBhcnNlLnkgKHF1YWxpZnlfYW1iaWd1b3VzX25hbWUpOiBSZW1vdmUgbG90cyBvZiBicm9rZW4KCWZpZWxkIGFjY2VzcyBwcm9jZXNzaW5nIC0gdGhlcmUncyBubyBuZWVkIHRvIGRvIHRoYXQgaGVyZSwKCWJlY2F1c2Ugd2UgaGF2ZSByZXNvbHZlX2ZpZWxkX2FjY2Vzcy4gIFJlbW92ZQoJUkVTT0xWRV9FWFBSRVNTSU9OX05BTUVfUCBhcyBpdCBpc24ndCB1c2VkIGFueXdoZXJlIGVsc2UuCgkqIGphdmEtdHJlZS5oOiBSZW1vdmUgUkVTT0xWRV9FWFBSRVNTSU9OX05BTUVfUCBhcyBpdCBpc24ndAoJdXNlZC4KCjIwMDMtMTItMDEgIEplZmYgU3R1cm0gIDxqc3R1cm1Ab25lLXBvaW50LmNvbT4KCglGaXggUFIgamF2YS8xMzIzNwoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2xocyk6IFNhdmUgbG9jYXRpb24gcHJpb3IgdG8gcGF0Y2hpbmcKCUNBTExfRVhQUi4KCjIwMDMtMTEtMjUgIE1vaGFuIEVtYmFyICA8Z251c3R1ZmZAdGhpc2lzY29vbC5jb20+CgoJUFIgamF2YS8xMjU0OAoJKiByZXNvdXJjZS5jICh3cml0ZV9yZXNvdXJjZV9jb25zdHJ1Y3Rvcik6IEFwcGVuZAoJIl9yZXNvdXJjZSIgdG8gY29uc3RydWN0b3IgaWRlbnRpZmllciBuYW1lLgoKMjAwMy0xMS0yNSAgSmVmZiBTdHVybSAgPGpzdHVybUBvbmUtcG9pbnQuY29tPgoKCUZpeCBQUiBqYXZhLzEzMTgzLgoJKiBjb25zdGFudHMuYyAoY3Bvb2xfZm9yX2NsYXNzKTogTmV3IGZ1bmN0aW9uLgoJKG91dGdvaW5nX2Nwb29sKTogUmVtb3ZlIGdsb2JhbCB2YXJpYWJsZS4KCShhbGxvY19uYW1lX2NvbnN0YW50KTogVXNlIGNwb29sX2Zvcl9jbGFzcy4KCShidWlsZF9jb25zdGFudHNfY29uc3RydWN0b3IpOiBMaWtld2lzZS4KCSogZGVjbC5jIChqYXZhX2V4cGFuZF9ib2R5KTogU2V0IGN1cnJlbnRfY2xhc3MuCgkqIGphdmEtdHJlZS5oIChvdXRnb2luZ19jcG9vbCkgUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKGluaXRfb3V0Z29pbmdfY3Bvb2wpOiBMaWtld2lzZS4KCSogamNmLXBhcnNlLmMgKGluaXRfb3V0Z29pbmdfY3Bvb2wpOiBSZW1vdmUgZnVuY3Rpb24uCgkocGFyc2VfY2xhc3NfZmlsZSk6IERvbid0IGNhbGwgaW5pdF9vdXRnb2luZ19jcG9vbC4KCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IERvbid0IGNhbGwKCWluaXRfb3V0Z29pbmdfY3Bvb2wuICBEb24ndCBzYXZlIG91dGdvaW5nX2Nwb29sLgoJKGphdmFfZXhwYW5kX2NsYXNzZXMpOiBEb24ndCByZXN0b3JlIG91dGdvaW5nX2Nwb29sLgoJKGphdmFfZmluaXNoX2NsYXNzZXMpOiBMaWtld2lzZS4KCjIwMDMtMTEtMjQgIE1vaGFuIEVtYmFyICA8Z251c3R1ZmZAdGhpc2lzY29vbC5jb20+CgoJKiBNYWtlLWxhbmcuaW46IChqYXZhLmluc3RhbGwtY29tbW9uKSBBZGQKCXN5bWxpbmsgZm9yICQodGFyZ2V0X25vbmNhbm9uaWNhbCktZ2NqaCBmb3IKCW5hdGl2ZSBidWlsZHMuCgoyMDAzLTExLTIwICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS5leHRyYWNsZWFuKTogRGVsZXRlLgoKMjAwMy0xMS0yMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBNYWtlLWxhbmcuaW4gKGNoZWNrLWphdmEpOiBBZGQuCgoyMDAzLTExLTE5ICBKZWZmIFN0dXJtICA8anN0dXJtQG9uZS1wb2ludC5jb20+CgoJRml4IFBSIGphdmEvMTMwMjQuCgkqIGV4Y2VwdC5jIChwcmVwYXJlX2VoX3RhYmxlX3R5cGUpOiBBbGxvY2F0ZSB2YXJpYWJsZS1zaXplZAoJYnVmZmVyIGBidWYnIHdpdGggYWxsb2NhLgoKMjAwMy0xMS0xNyAgSmVmZiBTdHVybSAgPGpzdHVybUBvbmUtcG9pbnQuY29tPgoKCUZpeCBQUiBqYXZhLzEyODU3LgoKCWRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IERvbid0IGluaXRpYWxpemUKCWNsYXNzX25vdF9mb3VuZF90eXBlX25vZGUsIG5vX2NsYXNzX2RlZl9mb3VuZF90eXBlX25vZGUuCgoJamF2YS10cmVlLmggKEpUSV9DTEFTU19OT1RfRk9VTkRfVFlQRV9OT0RFLAoJSlRJX05PX0NMQVNTX0RFRl9GT1VORF9UWVBFX05PREUpOiBSZW1vdmUgZnJvbSBqYXZhX3RyZWVfaW5kZXguCgkoY2xhc3Nfbm90X2ZvdW5kX3R5cGVfbm9kZSwgbm9fY2xhc3NfZGVmX2ZvdW5kX3R5cGVfbm9kZSk6CglEb24ndCBkZWZpbmUuCgoJcGFyc2UueSAoYnVpbGRfZG90X2NsYXNzX21ldGhvZF9pbnZvY2F0aW9uKTogQWRkIHRoaXNfY2xhc3MKCWFyZ3VtZW50LiAgUXVhbGlmeSBtZXRob2QgaW52b2NhdGlvbnMgdG8gYSBkaWZmZXJlbnQgY2xhc3MuCgkoY3JlYXRlX25ld19wYXJzZXJfY29udGV4dCk6IEluaXRpYWxpemUgc2F2ZWRfZGF0YV9jdHggdG8gMC4KCShqYXZhX3BhcnNlcl9jb250ZXh0X3NhdmVfZ2xvYmFsKTogSW5pdGlhbGl6ZSBzYXZlZF9kYXRhX2N0eCB0byAxLgoJKGJ1aWxkX2RvdF9jbGFzc19tZXRob2QpOiBEb24ndCBsb2FkIGNsYXNzZXMuICBSZWdpc3RlcgoJaW5jb21wbGV0ZSB0eXBlcy4KCShidWlsZF9pbmNvbXBsZXRlX2NsYXNzX3JlZik6IFNwZWNpYWwgY2FzZXMgZm9yIGludGVyZmFjZXMKCWFuZCBpbm5lciBjbGFzc2VzLiAgTW92ZSBidWlsZF9kb3RfY2xhc3NfbWV0aG9kIGNhbGwgdG8gaGVyZS4uLgoJKHBhdGNoX2luY29tcGxldGVfY2xhc3NfcmVmKTogLi4uZnJvbSBoZXJlLiAgUGFzcyBjdXJyZW50X2NsYXNzCgl0byBidWlsZF9kb3RfY2xhc3NfbWV0aG9kX2ludm9jYXRpb24uCgkoYnVpbGRfYXNzZXJ0aW9uKTogUGFzcyBjbGFzc190eXBlIHRvCglidWlsZF9kb3RfY2xhc3NfbWV0aG9kX2ludm9jYXRpb24uCgkoZW5jYXBzdWxhdGVfd2l0aF90cnlfY2F0Y2gpOiBIYW5kbGUgRVhQUl9XSVRIX0ZJTEVfTE9DQVRJT04gbm9kZS4KCjIwMDMtMTEtMTcgIEplZmYgU3R1cm0gIDxqc3R1cm1Ab25lLXBvaW50LmNvbT4KCglGaXggUFIgamF2YS8xMjczOS4KCSogamF2YS10cmVlLmggKEJMT0NLX0VNUFRZX1ApOiBEZWZpbmUuCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfbGhzKTogQ2hlY2sgZm9yIGVtcHR5IGJsb2NrcwoJaW4gVFJZX0ZJTkFMTFlfRVhQUiBjYXNlLgoKMjAwMy0xMS0xNyAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBqYXZhLXRyZWUuaCAoTE9DQUxfVkFSX09VVF9PRl9TQ09QRV9QKTogTmV3LgoJKHN0cnVjdCBsYW5nX2RlY2xfdmFyOmZyZWVkKTogTmV3IHZhcmlhYmxlLgoJKiBkZWNsLmMgKHBvcGxldmVsKTogTWFyayBsb2NhbCB2YXJzIHRoYXQgaGF2ZSBnb25lIG91dCBvZiBzY29wZS4KCShwdXNoX2p2bV9zbG90KTogRG9uJ3QgdXNlIHRoZSBSVEwgb2YgYSB2YXIgdGhhdCBoYXMgZ29uZSBvdXQgb2YKCXNjb3BlLgoKMjAwMy0xMS0xNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEudGFncyk6IENyZWF0ZSBUQUdTLnN1YiBmaWxlcyBpbiBlYWNoIGRpcmVjdG9yeQoJYW5kIFRBR1MgZmlsZXMgdGhhdCBpbmNsdWRlIHRoZW0gZm9yIGVhY2ggZnJvbnQgZW5kLgoKMjAwMy0xMS0xNSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZ2phdmFoLmMgKHByaW50X3N0dWJfb3Jfam5pKTogUGFzcyBgZW52JyB0byBGYXRhbEVycm9yLgoKMjAwMy0xMS0xMiAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzEyNTQ3CgkqIGxhbmcuYyAoamF2YV90cmVlX2lubGluaW5nX3dhbGtfc3VidHJlZXMpOiBKdXN0IHdhbGsKCUJMT0NLX0VYUFJfQk9EWSBkaXJlY3RseS4KCjIwMDMtMTEtMTIgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCVBSIGphdmEvMTEwNDUKCSogcGFyc2UueSAoZm9sZF9jb25zdGFudF9mb3JfaW5pdCk6IENoZWNrIHRoYXQgd2UgcmVhbGx5IGRvIGhhdmUgYQoJY29uc3RhbnQuCgoJUFIgamF2YS8xMTUzMwoJKiBsYW5nLmMgKG1lcmdlX2luaXRfdGVzdF9pbml0aWFsaXphdGlvbik6IENsZWFyIERFQ0xfSU5JVElBTCBmb3IKCWluaXRfdGVzdF9kZWNscyBiZWluZyBpbmxpbmVkLgoKCVBSIGphdmEvMTI4OTA6CgkqIHBhcnNlLnkgKGRvX3Jlc29sdmVfY2xhc3MpOiBDaGVjayByZXR1cm4gdmFsdWUgZnJvbQoJYnJlYWtkb3duX3F1YWxpZmllZCgpLgoKMjAwMy0xMS0xMSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGphdmEvMTI5MTU6CgkqIHBhcnNlLnkgKG1lcmdlX3N0cmluZ19jc3RlKTogSGFuZGxlIGNhc2Ugd2hlcmUgd2UgaGF2ZSBhCglwb2ludGVyIHRoYXQgaGFwcGVucyB0byBiZSB6ZXJvLCBub3QgbnVsbF9wb2ludGVyX25vZGUuCgoyMDAzLTExLTEwICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBqY2YtcGFyc2UuYyAoY2xhc3NpZnlfemlwX2ZpbGUpOiBDb3JyZWN0bHkgY29tcGFyZQoJZmlsZW5hbWVfbGVuZ3RoIGFnYWluc3QgbGVuZ3RoIG9mIG1hbmlmZXN0IGZpbGUncyBuYW1lLgoKMjAwMy0xMS0wOCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCVBSIGphdmEvMTI4OTQ6CgkqIGpjZi1wYXJzZS5jIChjbGFzc2lmeV96aXBfZmlsZSk6IE9ubHkgc2tpcCBNQU5JRkVTVC5NRiBmaWxlLgoKMjAwMy0xMS0wNiAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGphdmFfc3RhY2tfc3dhcCk6IE1ha2Ugc3VyZSBkZXN0aW5hdGlvbiBzdGFjayBzbG90cyBhcmUKCW9mIHRoZSBjb3JyZWN0IHR5cGUuCgoyMDAzLTExLTAzICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogTWFrZS1sYW5nLmluIChkdmkpOiBNb3ZlIHRhcmdldHMgdG8gJChkb2NvYmpkaXIpLgoJKGdjai5kdmkpOiBTaW1wbGlmeSBydWxlIGFuZCBhZGp1c3QgdGFyZ2V0LgoJKGdjai5pbmZvKTogU2ltcGxpZnkgcnVsZS4KCShnY2oucG9kKTogTmV3IGludGVybWVkaWF0ZSBydWxlLgoJKGdjamgucG9kKTogTGlrZXdpc2UuCgkoanYtc2Nhbi5wb2QpOiBMaWtld2lzZS4KCShqY2YtZHVtcC5wb2QpOiBMaWtld2lzZS4KCShnaWoucG9kKTogTGlrZXdpc2UuCgkoanYtY29udmVydC5wb2QpOiBMaWtld2lzZS4KCShybWljLnBvZCk6IExpa2V3aXNlLgoJKHJtaXJlZ2lzdHJ5LnBvZCk6IExpa2V3aXNlLgoJKGdjai4xKTogRGVsZXRlLgoJKGdjamguMSk6IERlbGV0ZS4KCShqdi1zY2FuLjEpOiBEZWxldGUuCgkoamNmLWR1bXAuMSk6IERlbGV0ZS4KCShnaWouMSk6IERlbGV0ZS4KCShqdi1jb252ZXJ0LjEpOiBEZWxldGUuCgkocm1pYy4xKTogRGVsZXRlLgoJKHJtaXJlZ2lzdHJ5LjEpOiBEZWxldGUuCgoyMDAzLTExLTAyICBKZWZmIFN0dXJtICA8anN0dXJtQG9uZS1wb2ludC5jb20+CgoJRml4ZXMgUFIgamF2YS8xMjg2Ni4KCSogcGFyc2UueSAocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogTW92ZSB0ZXN0Cglmb3Igb3V0ZXIgZmllbGQgYWNjZXNzIG1ldGhvZHMgZnJvbSBoZXJlLi4uCgkoY2hlY2tfdGhyb3duX2V4Y2VwdGlvbnMpIC4uLnRvIGhlcmUuCgoyMDAzLTExLTAxICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogLmN2c2lnbm9yZTogRGVsZXRlLgoKMjAwMy0xMC0yOCAgRnJhbmsgQ2guIEVpZ2xlciAgPGZjaGVAcmVkaGF0LmNvbT4KCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6IERvbid0IHdhcm4gYWJvdXQgbGVnYWwKCWVoIGJpbmRpbmcgcmVnaW9ucyBnZW5lcmF0ZWQgZm9yIGV4YW1wbGUgYnkgamRrIDEuNC4xLgoKMjAwMy0xMC0yNCAgRGF2aWQgUy4gTWlsbGVyICA8ZGF2ZW1AcmVkaGF0LmNvbT4KCgkqIGpjZi1wYXJzZS5jIChqY2ZfcGFyc2UpOiBGaXggYXJncyB0byBmYXRhbF9lcnJvcigpLgoKMjAwMy0xMC0yMiAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBsYW5nLmMgKExBTkdfSE9PS1NfR0VUX0NBTExFRV9GTkRFQ0wpOiBOZXcuCgkoamF2YV9nZXRfY2FsbGVlX2ZuZGVjbCk6IE5ldy4KCgkqIGpjZi1wYXJzZS5jIChqYXZhX3BhcnNlX2ZpbGUpOiBDYWxsIGVtaXRfY2F0Y2hfdGFibGUoKS4KCgkqIGphdmEtdHJlZS5oIChjdGFibGVfZGVjbCk6IE5ldy4KCShjYXRjaF9jbGFzc2VzKTogIE5ldy4KCShqYXZhX3RyZWVfaW5kZXgpOiBBZGQgSlRJX0NUQUJMRV9ERUNMLCBKVElfQ0FUQ0hfQ0xBU1NFUy4KCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFkZCBjYXRjaF9jbGFzc190eXBlLgoJQWRkIGN0YWJsZV9kZWNsLgoJQWRkIGNhdGNoX2NsYXNzZXMgZmllbGQuCgoJKiBjbGFzcy5jIChidWlsZF9pbmRpcmVjdF9jbGFzc19yZWYpOiBCcmVhayBvdXQgZnJvbQoJYnVpbGRfY2xhc3NfcmVmLgoJKG1ha2VfZmllbGRfdmFsdWUpOiBDaGVjayBmbGFnX2luZGlyZWN0X2Rpc3BhdGNoLgoJKG1ha2VfY2xhc3NfZGF0YSk6IERpdHRvLgoJVGlkeSB1c2VzIG9mIFBVU0hfRklFTERfVkFMVUUuCglBZGQgZmllbGQgY2F0Y2hfY2xhc3Nlcy4KCShtYWtlX2NhdGNoX2NsYXNzX3JlY29yZCk6IE5ldy4KCgkqIGphdmEtdHJlZS5oIChQVVNIX0ZJRUxEX1ZBTFVFKTogVGlkeS4KCjIwMDMtMTAtMjIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBqY2Ytd3JpdGUuYzogRm9sbG93IHNwZWxsaW5nIGNvbnZlbnRpb25zLgoJKiBwYXJzZS55OiBMaWtld2lzZS4KCjIwMDMtMTAtMjIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBDaGFuZ2VMb2c6IEZpeCB0eXBvcy4KCSogZXhwci5jOiBGaXggY29tbWVudCB0eXBvcy4KCSogamNmLXdyaXRlLmM6IExpa2V3aXNlLgoJKiBsYW5nLmM6IExpa2V3aXNlLgoJKiBsZXguYzogTGlrZXdpc2UuCgkqIG1hbmdsZS5jOiBMaWtld2lzZS4KCSogcGFyc2Utc2Nhbi55OiBMaWtld2lzZS4KCSogcGFyc2UueTogTGlrZXdpc2UuCgoyMDAzLTEwLTIyICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9ieXRlX2NvZGUpOiBPbmx5IHdhcm4gYWJvdXQgZGVhZCBieXRlY29kZSB3aGVuCglleHRyYV93YXJuaW5ncyBpcyBzZXQuCgoyMDAzLTEwLTIyICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQG1ja2lubGF5Lm5ldC5uej4KCglGaXggZm9yCVBSIGphdmEvMTI1ODYuCgkqIG1hbmdsZS5jIChmaW5kX2NvbXByZXNzaW9uX3JlY29yZF9tYXRjaCk6IERvbid0IGl0ZXJhdGUgdGhyb3VnaAoJcGFja2FnZSBuYW1lc3BhY2UgZWxlbWVudHMgdW5sZXNzIHRoZXkgYWxsIG1hdGNoIGNvbXByZXNzaW9uX3RhYmxlCgllbnRyaWVzLgoKMjAwMy0xMC0yMCAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIE1ha2UtbGFuZy5pbiAoaW5mbyk6IEhvbm9yICQocGFyc2VkaXIpIGFuZCAkKGRvY29iamRpcikuCgkoZ2VuZXJhdGUtbWFucGFnZXMpOiBMaWtld2lzZS4KCShqYXZhLm1haW50YWluZXItY2xlYW4pOiBMaWtld2lzZS4KCShnY2ouaW5mbyk6IExpa2V3aXNlLgoJKGdjai4xKTogTGlrZXdpc2UuCgkoZ2NqaC4xKTogTGlrZXdpc2UuCgkoanYtc2Nhbi4xKTogTGlrZXdpc2UuCgkoamNmLWR1bXAuMSk6IExpa2V3aXNlLgoJKGdpai4xKTogTGlrZXdpc2UuCgkoanYtY29udmVydC4xKTogTGlrZXdpc2UuCgkocm1pYy4xKTogTGlrZXdpc2UuCgkocm1pcmVnaXN0cnkuMSk6IExpa2V3aXNlLgoJKGphdmEuaW5zdGFsbC1tYW4pOiBMaWtld2lzZS4KCShwYXJzZS1zY2FuLm8pOiBNb3ZlIGFuZCBkZWZpbmUgY29tcGxldGUgY29tcGlsZSBsaW5lLgoJKHBhcnNlLm8pOiBMaWtld2lzZS4KCShqY2YtdHJlZS1pbmxpbmUubyk6IE1vdmUuCgoyMDAzLTEwLTIwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZS1sYW5nLmluIChpbmZvKTogVXBkYXRlIGRlcGVuZGVuY2llcy4KCShqYXZhLmluc3RhbGwtaW5mbyk6IFJlbW92ZS4KCSgkKHNyY2RpcikvamF2YS9nY2ouaW5mbyk6IFJlcGxhY2Ugd2l0aCAuLi4KCSgkKGRvY29iamRpcikvZ2NqLmluZm8pOiAuLi4gdGhpcy4KCjIwMDMtMTAtMTQgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogTWFrZS1sYW5nLmluOiBSZXBsYWNlIHVzZXMgb2YgJCh0YXJnZXRfYWxpYXMpIHdpdGgKCSQodGFyZ2V0X25vbmNhbm9uaWNhbCkuCgoyMDAzLTEwLTA5ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEZWNsYXJlIHNpZ25lcnMgZmllbGQuCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3NfZGF0YSk6IFNldCBzaWduZXJzIGZpZWxkLgoKMjAwMy0xMC0wOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChwYXRjaF9hc3NpZ25tZW50KTogVXNlIG1ha2Vfbm9kZSB0byBjcmVhdGUgYSBCTE9DSy4KCSogcGFyc2UuaCAoQlVJTERfUFRSX0ZST01fTkFNRSk6IFVzZSBtYWtlX25vZGUgdG8gY3JlYXRlIGEKCVBPSU5URVJfVFlQRS4KCjIwMDMtMTAtMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEuaW5mbyk6IFJlcGxhY2Ugd2l0aCAuLi4KCShpbmZvKTogLi4uIHRoaXMuCgkoamF2YS5kdmkpOiBSZXBsYWNlIHdpdGggLi4uCgkoZHZpKTogLi4uIHRoaXMuCgkoamF2YS5nZW5lcmF0ZWQtbWFucGFnZXMpOiBSZXBsYWNlIHdpdGggLi4uCgoyMDAzLTEwLTAzICBLZWxsZXkgQ29vayAgPGtlbGxleWNvb2tAd2lkZW9wZW53ZXN0LmNvbT4KCgkqIGJ1aWx0aW5zLmMsIGpjZi5oLCBqdnNwZWMuYzogUmVtb3ZlIFBBUkFNUyBtYWNyb3MuCgoyMDAzLTEwLTAxICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGpjZi1wYXJzZS5jIChqYXZhX3BhcnNlX2ZpbGUpOiBXcml0ZSBvdGFibGUgYW5kIGF0YWJsZS4KCSogamF2YS10cmVlLmggKGF0YWJsZV9tZXRob2RzKTogTmV3LgoJKGF0YWJsZV9kZWNsKTogTmV3LgoJKGF0YWJsZV9zeW1zX2RlY2wpOiBOZXcuCgkoZW51bSBqYXZhX3RyZWVfaW5kZXgpOiBBZGQgSlRJX0FUQUJMRV9NRVRIT0RTLCBKVElfQVRBQkxFX0RFQ0wsCglKVElfQVRBQkxFX1NZTVNfREVDTC4gIFJlbmFtZSBKVElfTUVUSE9EX1NZTUJPTCogdG8gSlRJX1NZTUJPTCouCgkoc3ltYm9sXyp0eXBlKTogUmVuYW1lIG1ldGhvZF9zeW1ib2wqIHRvIHN5bWJvbCp0eXBlLgoJKGVtaXRfb2Zmc2V0X3N5bWJvbF90YWJsZSk6IERlbGV0ZS4KCShlbWl0X3N5bWJvbF90YWJsZSk6IE5ldy4KCShnZXRfc3ltYm9sX3RhYmxlX2luZGV4KTogTmV3LgoJKGF0YWJsZV90eXBlKTogTmV3LgoJKiBleHByLmMgKGJ1aWxkX2ZpZWxkX3JlZik6IEhhbmRsZSBmbGFnX2luZGlyZWN0X2Rpc3BhdGNoLgoJKGJ1aWxkX2tub3duX21ldGhvZF9yZWYpOiBMaWtld2lzZS4KCShnZXRfc3ltYm9sX3RhYmxlX2luZGV4KTogUmVuYW1lIGZyb20gZ2V0X29mZnNldF90YWJsZV9pbmRleC4KCVBhcmFtZXRlcml6ZSB0byBhbGxvdyByZS11c2UgYnkgZGlmZmVyaW5nIHR5cGVzIG9mIHN5bWJvbCB0YWJsZS4KCShidWlsZF9pbnZva2V2aXJ0dWFsKTogUGFzcyB0YWJsZSB0byBnZXRfb2Zmc2V0X3RhYmxlX2luZGV4LgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBQdXNoIHR5cGVzIGFuZCBkZWNscyBmb3IKCWF0YWJsZSBhbmQgYXRhYmxlX3N5eW1zLgoJKiBjbGFzcy5jIChidWlsZF9zdGF0aWNfZmllbGRfcmVmKTogSGFuZGxlIGZsYWdfaW5kaXJlY3RfZGlzcGF0Y2guCgkobWFrZV9jbGFzc19kYXRhKTogQWRkIG5ldyBmaWVsZHMgYXRhYmxlIGFuZCBhdGFibGVfc3ltcy4KCShlbWl0X3N5bWJvbF90YWJsZSk6IFJlbmFtZSBmcm9tIGVtaXRfb2Zmc2V0X3N5bWJvbF90YWJsZS4KCVBhcmFtZXRlcml6ZSB0byBhbGxvdyByZS11c2UgYnkgZGlmZmVyZW50IHR5cGVzIG9mIHN5bWJvbCB0YWJsZS4KCShidWlsZF9zeW1ib2xfZW50cnkpOiBSZW5hbWVkIGZyb20gYnVpbGRfbWV0aG9kX3N5bWJvbHNfZW50cnkuCgoyMDAzLTA5LTMwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6IEltcGxlbWVudCBldmFsdWF0ZS1vbmNlCglzZW1hbnRpY3MgZm9yIFNBVkVfRVhQUiwgYnkgY2FjaGluZyB0aGUgcmVzdWx0IGluIGEgdGVtcG9yYXJ5LgoKMjAwMy0wOS0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6IFNhdmUgYW5kIHJlc3RvcmUgaW5wdXRfbG9jYXRpb24KCWluc3RlYWQgb2YgZmlsZSBhbmQgbGluZSBzZXBhcmF0ZWx5LgoJKiBkZWNsLmMgKGphdmFfZXhwYW5kX2JvZHkpOiBMaWtld2lzZS4KCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHNhZmVfbGF5b3V0X2NsYXNzKTogTGlrZXdpc2UuCgkqIGpjZi1wYXJzZS5jIChyZWFkX2NsYXNzLCBwYXJzZV9jbGFzc19maWxlKTogTGlrZXdpc2UuCgkoamF2YV9wYXJzZV9maWxlKTogVXNlICVIIGZvciB3YXJuaW5nIGxvY2F0b3IuCgoyMDAzLTA5LTI4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGV4cHIuYyAoamF2YV9jaGVja19yZWZlcmVuY2UpOiBVc2UgdGhlIHNlbWFudGljcyBvZiBDT05EX0VYUFJzCgl3aXRoIHZvaWQtdHlwZSBicmFuY2hlcyBpbnN0ZWFkIG9mIHVzaW5nIGEgQ09NUE9VTkRfRVhQUi4KCjIwMDMtMDktMjggIEplZmYgU3R1cm0gIDxqc3R1cm1Ab25lLXBvaW50LmNvbT4KCgkqIGRlY2wuYyAoamF2YV9vcHRpbWl6ZV9pbmxpbmUsIGR1bXBfZnVuY3Rpb24pOiBSZW1vdmUuCgkqIGphdmEtdHJlZS5oIChqYXZhX29wdGltaXplX2lubGluZSk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCSogamNmLXBhcnNlLmMgKGphdmFfcGFyc2VfZmlsZSk6IEFzc3VtZSBmbGFnX3VuaXRfYXRfYV90aW1lIGlzIHNldC4KCSogcGFyc2UueSAoc291cmNlX2VuZF9qYXZhX21ldGhvZCwgamF2YV9leHBhbmRfY2xhc3Nlcyk6CglMaWtld2lzZS4gIFJlbW92ZSBkZWFkIGNvZGUuCgoyMDAzLTA5LTI3ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGxhbmcuYyAoamF2YV9pbml0X29wdGlvbnMpOiBTZXQgZmxhZ19ldmFsdWF0aW9uX29yZGVyLgoJKiBleHByLmMgKGZvcmNlX2V2YWx1YXRpb25fb3JkZXIpOiBEb24ndCBhdHRlbXB0IHRvIGZvcmNlCglldmFsdWF0aW9uIG9yZGVyIG9mIGJpbmFyeSBvcGVyYXRpb25zIHVzaW5nIHNhdmVfZXhwci4KCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9saHMpOiBObyBsb25nZXIgbmVlZCB0byBjYWxsCglmb3JjZV9ldmFsdWF0aW9uX29yZGVyIHdoZW4gY29uc3RydWN0aW5nIGJpbmFyeSBvcGVyYXRvcnMuCgoyMDAzLTA5LTI3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCSAgICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQG1ja2lubGF5Lm5ldC5uej4KCglQUiBqYXZhLzEzMzM6CgkqIHBhcnNlLnkgKG5vdF9hY2Nlc3NpYmxlX2ZpZWxkX2Vycm9yKTogTmV3IGZ1bmN0aW9uLgoJKHJlc29sdmVfZXhwcmVzc2lvbl9uYW1lKTogQ2hlY2sgZmllbGQgYWNjZXNzIHBlcm1pc3Npb25zLgoJKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IFVzZQoJbm90X2FjY2Vzc2libGVfZmllbGRfZXJyb3IuCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogTGlrZXdpc2UuCgoyMDAzLTA5LTI0ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3V0ZjhfcmVmKTogVGVzdCBmb3IgSEFWRV9HQVNfU0hGX01FUkdFIHZhbHVlLgoKMjAwMy0wOS0yMyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBPcHRpbWl6ZSBiaW5hcnkgb3BlcmF0aW9ucwoJd2l0aCBlcXVhbCBvcGVyYW5kcyB3aXRob3V0IHNpZGUtZWZmZWN0cy4KCjIwMDMtMDktMjIgIEplZmYgU3R1cm0gIDxqc3R1cm1Ab25lLXBvaW50LmNvbT4KCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IERvbid0IGVtaXQgb3RhYmxlIGRlY2xzCglpZiBmbGFnX2luZGlyZWN0X2Rpc3BhdGNoIGlzIG5vdCBzZXQuCgoyMDAzLTA5LTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY2xhc3MuYywgZGVjbC5jLCBqY2YtcGFyc2UuYywgamNmLXdyaXRlLmMsIHBhcnNlLnksCglyZXNvdXJjZS5jOiBSZXZlcnQuCgoyMDAzLTA5LTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY2xhc3MuYywgZGVjbC5jLCBqY2YtcGFyc2UuYywgamNmLXdyaXRlLmMsIHBhcnNlLnksCglyZXNvdXJjZS5jOiBVcGRhdGUgZm9yIERFQ0xfU09VUkNFX0xPQ0FUSU9OIHJlbmFtZSBhbmQgY2hhbmdlIHRvIGNvbnN0LgoKMjAwMy0wOS0yMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNoZWNrLWluaXQuYywgY2xhc3MuYywgZGVjbC5jLCBleHByLmM6IFVzZSAlSiBpbiBkaWFnbm9zdGljcy4KCjIwMDMtMDktMTggIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZXhwci5jIChqYXZhX3RydXRodmFsdWVfY29udmVyc2lvbik6IFJlbW92ZSBGRlNfRVhQUiBjYXNlLgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpOiBMaWtld2lzZS4KCjIwMDMtMDktMTggIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogQWRkIHN1cHBvcnQgZm9yIGZjb25zdF8yLgoKMjAwMy0wOS0xNiAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBBZGQgTUlOX0VYUFIgYW5kIE1BWF9FWFBSLgoKMjAwMy0wOS0xNyAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJRml4ZXMgUFIgamF2YS85NTc3CgkqIG1hbmdsZS5jIChmaW5kX2NvbXByZXNzaW9uX3JlY29yZF9tYXRjaCk6IFNraXAKCW92ZXIgYSAiNkpBcnJheSIgKHRoZSBhcnJheSB0ZW1wbGF0ZSBtYW5nbGVkIHN0cmluZykKCUlERU5USUZJRVJfTk9ERS4KCShtYW5nbGVfYXJyYXlfdHlwZSk6IENvcnJlY3QgbWlub3IgdHlwby4KCShhdG1zKTogTW92ZSBkZWZpbml0aW9uIHRvIHRoZSBiZWdpbm5pbmcuCgoyMDAzLTA5LTE2ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQG1ja2lubGF5Lm5ldC5uej4KCgkqIGNsYXNzLmMgKGFkZF9taXJhbmRhX21ldGhvZHMpOiBFbnN1cmUgc3VwZXItaW50ZXJmYWNlcyBhcmUgbGFpZAoJb3V0LiBGaXggZm9yIFBSIGphdmEvMTIyNTQuCgoyMDAzLTA5LTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogcGFyc2UueSAoc291cmNlX2VuZF9qYXZhX21ldGhvZCk6IFVwZGF0ZSBmb3IgbmV3CgljZ3JhcGhfZmluYWxpemVfZnVuY3Rpb24gYXJndW1lbnQuCgoyMDAzLTA5LTA5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogcGFyc2UueSAoc291cmNlX2VuZF9qYXZhX21ldGhvZCk6IFVwZGF0ZSBjYWxsIHRvCgljZ3JhcGhfZmluYWxpemVfZnVuY3Rpb24uCgoyMDAzLTA5LTAzICBKZWZmIFN0dXJtICA8anN0dXJtQG9uZS1wb2ludC5jb20+CgoJKiBkZWNsLmMgKGphdmFfZXhwYW5kX2JvZHkpOiBOZXcgZnVuY3Rpb24uCgkqIGV4cHIuYyAoYnVpbGRfY2xhc3NfaW5pdCk6IFNldCBERUNMX0lHTk9SRURfUC4KCSogamF2YS10cmVlLmggKHN0YXJ0X2NvbXBsZXRlX2V4cGFuZF9tZXRob2QsCglqYXZhX2V4cGFuZF9ib2R5KTogRGVjbGFyZS4KCSogamNmLXBhcnNlLmMgKGNncmFwaC5oKTogSW5jbHVkZS4KCShqYXZhX3BhcnNlX2ZpbGUpOiBIYW5kbGUgZmxhZ191bml0X2F0X2FfdGltZS4KCSogbGFuZy5jIChMQU5HX0hPT0tTX1RSRUVfSU5MSU5JTkdfU1RBUlRfSU5MSU5JTkcsCglMQU5HX0hPT0tTX0NBTExHUkFQSF9FWFBBTkRfRlVOQ1RJT04pOiBEZWZpbmUuCgkoamF2YV9lc3RpbWF0ZV9udW1faW5zbnMpOiBVc2Ugd2Fsa190cmVlX3dpdGhvdXRfZHVwbGljYXRlcy4KCShqYXZhX3N0YXJ0X2lubGluaW5nKTogTmV3IGZ1bmN0aW9uLgoJKiBwYXJzZS5oIChqYXZhX2ZpbmlzaF9jbGFzc2VzKTogRGVjbGFyZS4KCSogcGFyc2UueTogSW5jbHVkZSBjZ3JhcGguaC4KCShibG9jayk6IERvbid0IHNwZWNpYWwtY2FzZSBlbXB0eSBibG9jayBwcm9kdWN0aW9uLgoJKGNyYWZ0X2NvbnN0cnVjdG9yKTogU2V0IERFQ0xfSU5MSU5FLgoJKHNvdXJjZV9lbmRfamF2YV9tZXRob2QpOiBIYW5kbGUgZmxhZ191bml0X2F0X2FfdGltZS4KCVJlcGxhY2UgaW5saW5lIGNvZGUgd2l0aCBjYWxsIHRvIGphdmFfZXhwYW5kX2JvZHkuCgkoc3RhcnRfY29tcGxldGVfZXhwYW5kX21ldGhvZCk6IFJlbW92ZSBzdGF0aWMgbW9kaWZpZXIuCgkoamF2YV9leHBhbmRfbWV0aG9kX2JvZGllcyk6IFBhdGNoIGZ1bmN0aW9uIHRyZWUgZm9yCgljbGFzcyBpbml0aWFsaXphdGlvbiBhbmQvb3Igc3luY2hyb25pemF0aW9uIGFzIG5lZWRlZC4KCURvbid0IGJlZ2luIFJUTCBleHBhbnNpb24geWV0LgoJKGphdmFfZXhwYW5kX2NsYXNzZXMpOiBDaGVjayBmbGFnX3VuaXRfYXRfYV90aW1lIGJlZm9yZQoJY2FsbGluZyBmaW5pc2hfY2xhc3MuCgkoamF2YV9maW5pc2hfY2xhc3Nlcyk6IE5ldyBmdW5jdGlvbi4KCShqYXZhX2NvbXBsZXRlX2xocyk6IEVuc3VyZSBDT01QT1VORF9FWFBSIGhhcyBub24tTlVMTCB0eXBlLgoJKHBhdGNoX2Fzc2lnbm1lbnQpOiBTZXQgREVDTF9DT05URVhUIG9uIHRlbXBvcmFyeSB2YXJpYWJsZS4KCShlbWl0X3Rlc3RfaW5pdGlhbGl6YXRpb24pOiBTZXQgREVDTF9JR05PUkVEX1AuCgoyMDAzLTA5LTAzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGVudW0gYnVpbHRpbl90eXBlKTogRGVsZXRlIHVudXNlZCBlbnVtZXJhdGlvbi4KCSogTWFrZS1sYW5nLmluIChqYXZhL2J1aWx0aW5zLm8pOiBSZW1vdmUgYnVpbHQtdHlwZXMuZGVmIGRlcGVuZGVuY3kuCgoyMDAzLTA4LTI4ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBnY2oudGV4aSAoRXh0ZW5zaW9ucyk6IERvY3VtZW50IGdjamxpYiBVUkxzLgoKMjAwMy0wOC0yMCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKEV4dGVuc2lvbnMpOiBBZGRlZCB4cmVmLgoJKGxpYmdjaiBSdW50aW1lIFByb3BlcnRpZXMpOiBEb2N1bWVudAoJZ251Lmdjai5ydW50aW1lLlZNQ2xhc3NMb2FkZXIubGlicmFyeV9jb250cm9sLgoKMjAwMy0wOC0yMCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBleGNlcHQuYyAocHJlcGFyZV9laF90YWJsZV90eXBlKTogVXNlIG5ldyBlbmNvZGluZyBmb3IgZXhjZXB0aW9uCgloYW5kbGVycyB3aGVuIHVzaW5nIC1mbm8tYXNzdW1lLWNvbXBpbGVkLgoKMjAwMy0wOC0xMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKEludm9raW5nIGdpaik6IERvY3VtZW50IC1YIGFuZCAtPy4KCjIwMDMtMDgtMTMgIE1vaGFuIEVtYmFyICA8Z251c3R1ZmZAdGhpc2lzY29vbC5jb20+CgoJKiBNYWtlLWxhbmcuaW46IEFkZGVkIG1pc3Npbmcgd2luMzItaG9zdC5vIHRvIEpBVkFfT0JKUywKCUdDSkhfT0JKUywgSkNGRFVNUF9PQkpTCgkqIHdpbjMyLWhvc3QuYzogUmVtb3ZlZCB0aGUgdW5uZWNlc3NhcnkgYW5kIGJyb2tlbiBkZXBlbmRlbmN5CglvbiBqY2YuaAoKMjAwMy0wOC0xMSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogcGFyc2UueSAoamF2YV9jaGVja19yZWd1bGFyX21ldGhvZHMpOiBUeXBvIGZpeGVzLiAgQ2FsbAoJY2hlY2tfaW50ZXJmYWNlX3Rocm93c19jbGF1c2VzLiAgVXNlCgljaGVja19jb25jcmV0ZV90aHJvd3NfY2xhdXNlcy4KCShjaGVja19pbnRlcmZhY2VfdGhyb3dzX2NsYXVzZXMpOiBOZXcgZnVuY3Rpb24uCgkoY2hlY2tfY29uY3JldGVfdGhyb3dzX2NsYXVzZXMpOiBOZXcgZnVuY3Rpb24uCgkoaGFja19pc19hY2Nlc3NpYmxlX3ApOiBOZXcgZnVuY3Rpb24uCgkoZmluZF9tb3N0X3NwZWNpZmljX21ldGhvZHNfbGlzdCk6IEFkZGVkIEZJWE1FLgoJKiB0eXBlY2suYyAobG9va3VwX2RvKTogVXNlIGBmbGFncycgYXJndW1lbnQgdG8gZGVjaWRlIHdoYXQgdG8KCWRvLiAgUmVpbXBsZW1lbnRlZC4KCShsb29rdXBfYXJndW1lbnRfbWV0aG9kX2dlbmVyaWMpOiBOZXcgZnVuY3Rpb24uCgkobG9va3VwX2FyZ3VtZW50X21ldGhvZDIpOiBSZW1vdmVkLgoJKiBqY2YuaCAoQUNDX0lOVklTSUJMRSk6IE5ldyBkZWZpbmUuCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9jbGFzc2ZpbGUpOiBTa2lwIGludmlzaWJsZSBtZXRob2RzLgoJKiBjbGFzcy5jIChhZGRfbWlyYW5kYV9tZXRob2RzKTogTmV3IGZ1bmN0aW9uLgoJKGxheW91dF9jbGFzc19tZXRob2RzKTogVXNlIGl0LgoJKGdldF9hY2Nlc3NfZmxhZ3NfZnJvbV9kZWNsKTogVXNlIEFDQ19JTlZJU0lCTEUuCgkqIGphdmEtdHJlZS5oIChNRVRIT0RfSU5WSVNJQkxFKTogTmV3IGRlZmluZS4KCShsYW5nX2RlY2xfZnVuYykgW2ludmlzaWJsZV06IE5ldyBmaWVsZC4KCShsb29rdXBfYXJndW1lbnRfbWV0aG9kX2dlbmVyaWMpOiBEZWNsYXJlLgoJKFNFQVJDSF9JTlRFUkZBQ0UpOiBOZXcgZGVmaW5lLgoJKFNFQVJDSF9TVVBFUik6IExpa2V3aXNlLgoJKFNFQVJDSF9PTkxZX0lOVEVSRkFDRSk6IExpa2V3aXNlLgoJKFNFQVJDSF9WSVNJQkxFKTogTGlrZXdpc2UuCgkobG9va3VwX2FyZ3VtZW50X21ldGhvZDIpOiBSZW1vdmVkIGRlY2xhcmF0aW9uLgoKMjAwMy0wOC0wNSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCUZpeCBmb3IgUFIgamF2YS8xMTYwMDoKCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9saHMpOiBTZWUgd2hldGhlciB3ZSdyZSBjYWxsaW5nIGEgbWV0aG9kCglvbiBhbiBhcnJheS4KCShjaGVja190aHJvd25fZXhjZXB0aW9ucyk6IEFkZGVkIGBpc19hcnJheV9jYWxsJyBhcmd1bWVudDsKCWZpeGVkIGBjbG9uZScgY2hlY2tpbmc7IHVwZGF0ZWQgYWxsIGNhbGxlcnMuCgoyMDAzLTA4LTA1ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJKiBqYXZhLXRyZWUuaCAoREVDTF9FU1RJTUFURURfSU5TTlMpOiBSZW1vdmUgKG1vdmVkIHRvIHRyZWUuaCkuCgoyMDAzLTA4LTAzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBqYXZhLXRyZWUuaCAoTUVUSE9EX1RSQU5TSUVOVCk6IFJlbW92ZWQuCgkqIGRlY2wuYyAocHVzaGRlY2wpOiBSZW1vdmVkIHNvbWUgZGVhZCBjb2RlLgoJKiBjbGFzcy5jIChnZXRfYWNjZXNzX2ZsYWdzX2Zyb21fZGVjbCk6IENhbid0IGhhdmUgdHJhbnNpZW50CgltZXRob2QuCgkoYWRkX21ldGhvZF8xKTogQ2FuJ3QgaGF2ZSBhIHRyYW5zaWVudCBtZXRob2QuCgoyMDAzLTA3LTI4ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBqdnNwZWMuYzogQ29udmVydCB0byBJU08gQzkwIHByb3RvdHlwZXMuCgoyMDAzLTA3LTI1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChmb3JjZV9wb3BsZXZlbHMpOiBGaXggd2FybmluZyBjYWxsLgoKMjAwMy0wNy0yNSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBleHByLmMgKGV4cGFuZF9qYXZhX2ZpZWxkX29wKTogRG9uJ3QgdXNlIHh4eF93aXRoX2RlY2wKCShleHBhbmRfamF2YV9maWVsZF9vcCk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3NfbWV0aG9kKTogTGlrZXdpc2UKCShlbWl0X3JlZ2lzdGVyX2NsYXNzZXMpOiBMaWtld2lzZS4KCSogZGVjbC5jIChwdXNoZGVjbCk6IExpa2V3aXNlLgoJKHBvcGxldmVsKTogTGlrZXdpc2UuCgkoZm9yY2VfcG9wbGV2ZWxzKTogTGlrZXdpc2UuCgkoZ2l2ZV9uYW1lX3RvX2xvY2Fscyk6IExpa2V3aXNlLgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2Zvcl9pbml0aWFsaXphdGlvbik6IExpa2V3aXNlLgoKMjAwMy0wNy0yNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBqYXZhLXRyZWUuaDogTW92ZSBib29sZWFuX3R5cGVfbm9kZSBldCBhbCB0byB0aGUgYmFjayBlbmQuCgoyMDAzLTA3LTE5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjbGFzcy5jIGphdmEtdHJlZS5oIGpjZi13cml0ZS5jIGp2c3BlYy5jOiBSZW1vdmUgdW5uZWNlc3NhcnkKCWNhc3RzLgoKMjAwMy0wNy0xOSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogbGFuZy5vcHQ6IERvbid0IHNob3cgLU1EXyBhbmQgLU1ERF8uCgoyMDAzLTA3LTE4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBsYW5nLW9wdGlvbnMuaDogUmVtb3ZlLgoJKiBsYW5nLm9wdDogQWRkIGhlbHAgdGV4dC4KCjIwMDMtMDctMTUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBleHByLmM6IFJlbW92ZSB0aGUgbGFzdCBhcmd1bWVudCB0byBleHBhbmRfYXNzaWdubWVudCgpLgoKMjAwMy0wNy0wOSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogamF2YS10cmVlLmggKERFQ0xfTlVNX1NUTVRTKTogUmVuYW1lIHRvLi4uCgkoREVDTF9FU1RJTUFURURfSU5TTlMpOiAuLi4gdGhpcy4KCSogbGFuZy5jIChqYXZhX2VzdGltYXRlX251bV9pbnNucywgamF2YV9lc3RpbWF0ZV9udW1faW5zbnNfMSk6CglOZXcgc3RhdGljIGZ1bmN0aW9ucy4KCShMQU5HX0hPT0tTX1RSRUVfSU5MSU5JTkdfRVNUSU1BVEVfTlVNX0lOU05TKTogRGVmaW5lLgoJKiBwYXJzZXIueSAoYWRkX3N0bXRfdG9fY29tcG91bmQpOiBEbyBub3QgYWNjb3VudCBzdGF0ZW1lbnRzLgoKMjAwMy0wNy0wOCAgTWFyayBXaWVsYWFyZCAgPG1hcmtAa2xvbXAub3JnPgoKCSogZ2NqLnRleGk6IENOSSBub3cgZXhwYW5kcyB0byBDb21waWxlZCBOYXRpdmUgSW50ZXJmYWNlLgoKMjAwMy0wNy0wOCAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEvZ2NqLmR2aSk6IFVzZSBQV0RfQ09NTUFORC4KCjIwMDMtMDctMDcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9ieXRlX2NvZGUpOiBBZGppc3QgZW1pdF9saW5lX25vdGUgY2FsbC4KCjIwMDMtMDctMDYgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGxhbmcuYyAoamF2YV9oYW5kbGVfb3B0aW9uKTogRG9uJ3QgaGFuZGxlIGZpbGVuYW1lcy4KCjIwMDMtMDctMDIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBqY2YtcGF0aC5jOiBEb24ndCBkZWZhdWx0LWRlZmluZSBQQVRIX1NFUEFSQVRPUiBub3IKCURJUl9TRVBBUkFUT1IuCglVc2UgRklMRU5BTUVfQ01QLgoJKiBqY2Ytd3JpdGUuYzogRG9uJ3QgZGVmYXVsdC1kZWZpbmUgRElSX1NFUEFSQVRPUi4KCSogamNmLmg6IERlbGV0ZSBDT01QQVJFX0ZJTEVOQU1FUyBkZWZpbml0aW9uLgoKMjAwMy0wNy0wMiAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogbGFuZy5jIChqYXZhX2luaXRfb3B0aW9ucyk6IFVwZGF0ZSBwcm90b3R5cGUuCgoyMDAzLTA3LTAxICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChwb3BsZXZlbCk6IEFkanVzdCBkZWZpbmVfbGFiZWwgY2FsbC4KCjIwMDMtMDYtMjcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnamF2YWguYyAoZmxhZ19qbmkpOiBNYWtlIG5vbi1zdGF0aWMuCgkqIHBhcnNlLXNjYW4ueSAoY3R4cCk6IE1ha2Ugbm9uLXN0YXRpYy4KCgkqIGNsYXNzLmMgKGJ1aWxkX21ldGhvZF9zeW1ib2xzX2VudHJ5KQoJKiBleHByLmMgKGdldF9vZmZzZXRfdGFibGVfaW5kZXgpCgkqIGpjZi1wYXJzZS5jIChqY2ZfcGFyc2UpOgoJTWFyayB0aGUgZGVmaW5pdGlvbiBzdGF0aWMsIG1hdGNoaW5nIHRoZSBmb3J3YXJkIGRlY2xhcmF0aW9uLgoKMjAwMy0wNi0yNiAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogbGFuZy5jIChqYXZhX2hhbmRsZV9vcHRpb24pOiBEb24ndCBjaGVjayBmb3IgbWlzc2luZyBhcmd1bWVudHMuCgoyMDAzLTA2LTIwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAocHVzaF9jbGFzcyk6IFVzZSBhIGxvY2F0aW9uX3QgdG8gc2F2ZSBwbGFjZS4KCShlbWl0X3JlZ2lzdGVyX2NsYXNzZXMpOiBTZXQgaW5wdXRfbG9jYXRpb24uIEFkanVzdAoJZXhwYW5kX2Z1bmN0aW9uX2VuZCBjYWxsLgoJKiByZXNvdXJjZS5jICh3cml0ZV9yZXNvdXJjZV9jb25zdHJ1Y3Rvcik6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGVuZF9qYXZhX21ldGhvZCk6IEFkanVzdCBleHBhbmRfZnVuY3Rpb25fZW5kIGNhbGwuCgkqIHBhcnNlLnkgKHNvdXJjZV9lbmRfamF2YV9tZXRob2QpOiBMaWtld2lzZS4KCjIwMDMtMDYtMTcgIFJvYmVydCBBYmVsZXMgIDxyYWJlbGVzQGFyY2hhZWxvZ2ljLmNvbT4KCgkqIGxhbmcuYyAoamF2YV9oYW5kbGVfb3B0aW9uKTogTGlrZXdpc2UuCgoyMDAzLTA2LTE2ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBsYW5nLmMgKGphdmFfaGFuZGxlX29wdGlvbik6IFNwZWNpYWwtY2FzaW5nIG9mIG9wdGlvbmFsCglqb2luZWQgYXJndW1lbnRzIG5vIGxvbmdlciBuZWVkZWQuCgkqIGxhbmcub3B0OiBVcGRhdGUgc3dpdGNoZXMgdGhhdCB0YWtlIG9wdGlvbmFsIGFyZ3VtZW50LgoKMjAwMy0wNi0xNSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogbGFuZy5vcHQ6IERlY2xhcmUgSmF2YS4KCSogbGFuZy5jIChqYXZhX2luaXRfb3B0aW9ucyk6IFVwZGF0ZS4KCjIwMDMtMDYtMTUgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGxhbmcuYyAodmVyc2lvbl9mbGFnKTogUmVuYW1lIHRvIHZfZmxhZyB0byBhdm9pZCBjbGFzaCB3LyB0b3BsZXYuaC4KCjIwMDMtMDYtMTQgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGxhbmctc3BlY3MuaDogUmV3cml0ZSAtTUQgYW5kIC1NTUQgdG8gYXBwZW5kIGFuIHVuZGVyc2NvcmUuCgkqIGxhbmcuYyAoamF2YV9oYW5kbGVfb3B0aW9uKTogLU1EIGFuZCAtTU1EIGhhdmUgYW4gdW5kZXJzY29yZS4KCSogbGFuZy5vcHQ6IC1NRCBhbmQgLU1NRCBoYXZlIGFuIHVuZGVyc2NvcmUuCgoyMDAzLTA2LTE0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAoZW1pdF9yZWdpc3Rlcl9jbGFzc2VzKTogQWRqdXN0IGluaXRfZnVuY3Rpb25fc3RhcnQKCWNhbGwuCgkqIGRlY2wuYyAoY29tcGxldGVfc3RhcnRfamF2YV9tZXRob2QpOiBMaWtld2lzZS4KCSogcmVzb3VyY2UuYyAod3JpdGVfcmVzb3VyY2VfY29uc3RydWN0b3IpOiBMaWtld2lzZS4KCjIwMDMtMDYtMTQgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIE1ha2UtbGFuZy5pbjogVXBkYXRlIHRvIHVzZSBvcHRpb25zLmMgYW5kIG9wdGlvbnMuaC4KCSogbGFuZy5jOiBJbmNsdWRlIG9wdGlvbnMuaCBub3Qgai1vcHRpb25zLmguCgkoamF2YV9oYW5kbGVfb3B0aW9uKTogQWJvcnQgb24gdW5yZWNvZ25pemVkIG9wdGlvbi4KCShqYXZhX2luaXRfb3B0aW9ucyk6IFJlcXVlc3QgSmF2YSBzd2l0Y2hlcy4KCjIwMDMtMDYtMTEgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIE1ha2UtbGFuZy5pbjogSGFuZGxlIG1vc3RseWNsZWFuLgoKMjAwMy0wNi0xMSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogbGFuZy5jIChqYXZhX2hhbmRsZV9vcHRpb24pOiBVcGRhdGUgZGVwZW5kZW5jeV90cmFja2luZyBmb3IKCU9QVF9NRiBjYXNlLgoKCSogbGFuZy5jIChqYXZhX2hhbmRsZV9vcHRpb24pOiBPUFRfZmJvb3RjbGFzc3BhdGhfIGNhbiB0YWtlIGFuCgllbXB0eSBhcmd1bWVudC4KCjIwMDMtMDYtMTAgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogcmVzb3VyY2UuYyAod3JpdGVfcmVzb3VyY2VfY29uc3RydWN0b3IpOiBVc2UgZXhwYW5kX2V4cHIgdG8KCWdlbmVyYXRlIHRoZSBhZGRyZXNzIG9mIHRoZSBsYWJlbCBhdHRhY2hlZCB0byBhIHJlc291cmNlLgoJKiBNYWtlLWxhbmcuaW4gKGphdmEvcmVzb3VyY2Uubyk6IEFkZCBleHByLmgKCjIwMDMtMDYtMTAgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogbGFuZy5jIChMQU5HX0hPT0tTX0RFQ0xfT0tfRk9SX1NJQkNBTEwpOiBOZXcuCgkoamF2YV9kZWNsX29rX2Zvcl9zaWJjYWxsKTogTmV3LgoKMjAwMy0wNi0wOSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogTWFrZS1sYW5nLmluIChKQVZBX09CSlMsIGphdmEvbGFuZy5vKTogVXBkYXRlLgoJKGphdmEvai1vcHRpb25zLmMsIGphdmEvai1vcHRpb25zLmgpOiBOZXcuCgkqIGphdmEtdHJlZS5oIChyZXNvdXJjZV9uYW1lLCBjb21waWxlX3Jlc291cmNlX2ZpbGUsCgljb21waWxlX3Jlc291cmNlX2RhdGEpOiBDb25zdGlmeS4KCSogamNmLXdyaXRlLmMgKGpjZl93cml0ZV9iYXNlX2RpcmVjdG9yeSk6IFNpbWlsYXJseS4KCSogamNmLmggKGpjZl93cml0ZV9iYXNlX2RpcmVjdG9yeSk6IFNpbWlsYXJseS4KCSogbGFuZy5jOiBJbmNsdWRlIGotb3B0aW9ucy5oLgoJKGNsX29wdGlvbnNfY291bnQsIGNsX29wdGlvbnMsIHN0cmluZ19vcHRpb24sIGphdmFfZGVjb2RlX29wdGlvbiwKCWxhbmdfZl9vcHRpb25zLCBsYW5nX1dfb3B0aW9ucywgTEFOR19IT09LU19ERUNPREVfT1BUSU9OLAoJcHJvY2Vzc19vcHRpb25fd2l0aF9ubyk6IFJlbW92ZS4KCShyZXNvdXJjZV9uYW1lKTogQ29uc3RpZnkuCgkoTEFOR19IT09LU19IQU5ETEVfT1BUSU9OKTogT3ZlcnJpZGUuCgkoamF2YV9oYW5kbGVfb3B0aW9uKTogTmV3LgoJKGphdmFfaW5pdCk6IERvbid0IGNhbGwgamNmX3BhdGhfaW5pdC4KCShqYXZhX2luaXRfb3B0aW9ucyk6IENhbGwgamNmX3BhdGhfaW5pdC4KCSogbGFuZy5vcHQ6IE5ldy4KCSogcmVzb3VyY2UuYyAoY29tcGlsZV9yZXNvdXJjZV9kYXRhLCBjb21waWxlX3Jlc291cmNlX2ZpbGUpOiBDb25zdGlmeS4KCjIwMDMtMDYtMDkgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBqYXZhLXRyZWUuaCAoREVDTF9GVU5DVElPTl9MQVNUX0xJTkUpOiBOZXcuCgkoc3RydWN0IGxhbmdfZGVjbF9mdW5jKTogQWRkIGxhc3RfbGluZSBmaWVsZC4KCSogcGFyc2UuaCAoREVDTF9TT1VSQ0VfTElORV9NRVJHRSwgREVDTF9TT1VSQ0VfTElORV9GSVJTVCwKCURFQ0xfU09VUkNFX0xJTkVfTEFTVCk6IFJlbW92ZS4KCSogcGFyc2UueSAobWlzc2luZ19yZXR1cm5fZXJyb3IsIGZpbmlzaF9tZXRob2RfZGVjbGFyYXRpb24sCglsb29rdXBfY2wsIHN0YXJ0X2FydGlmaWNpYWxfbWV0aG9kX2JvZHksIHNvdXJjZV9lbmRfamF2YV9tZXRob2QsCglzdGFydF9jb21wbGV0ZV9leHBhbmRfbWV0aG9kKTogQWRqdXN0LgoKMjAwMy0wNi0wOCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSoganZzcGVjLmMgKGp2Z2VubWFpbl9zcGVjKTogQWRkZWQgYConIGFmdGVyIGZhc3N1bWUtY29tcGlsZWQgYW5kCglmbm8tYXNzdW1lLWNvbXBpbGVkLgoKMjAwMy0wNi0wOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBidWlsdGlucy5jIChkZWZpbmVfYnVpbHRpbl90eXBlLCBidWlsdGluX3R5cGVzKTogRGVsZXRlLgoJKGRlZmluZV9idWlsdGluKTogUmV3cml0dGVuIHRvIHRha2UganVzdCB0aGUgYnVpbHQtaW4gY29kZSwKCXRoZSBmdW5jdGlvbidzIG5hbWUsIHR5cGUgYW5kIGZhbGxiYWNrIGxpYnJhcnkgZnVuY3Rpb24gbmFtZS4KCUFsbCBidWlsdC1pbnMgdXNlZCBieSBKYXZhIGFyZSBpbXBsaWNpdCBhbmQgQlVJTFRfSU5fTk9STUFMLgoJKGluaXRpYWxpemVfYnVpbHRpbnMpOiBPdmVyaGF1bCB0byBkZWZpbmUgdGhlIEdDQyBidWlsdGlucwoJdXNlZCBieSBnY2ogbWFudWFsbHksIHByb3ZpZGluZyB0aGUgSmF2YSBydW4tdGltZSdzCglpbXBsZW1lbnRhdGlvbnMgYXMgdGhlIGZhbGxiYWNrIGxpYnJhcnkgZnVuY3Rpb24uCgoyMDAzLTA2LTA4ICBBbnRob255IEdyZWVuICA8Z3JlZW5AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX2Nhc3QpOiBGaXggY29udmVyc2lvbnMgZnJvbSBmbG9hdGluZy1wb2ludCB0bwoJaW50ZWdyYWwgdHlwZXMuCgoyMDAzLTA2LTA4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBNYWtlLWxhbmcuaW46IFVwZGF0ZS4KCSogbGFuZy5jOiBJbmNsdWRlIG9wdHMuaC4gRGVmaW5lIGNsX29wdGlvbnNfY291bnQgYW5kIGNsX29wdGlvbnMuCgoyMDAzLTA2LTA3ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBsYW5nLmMgKGphdmFfaW5pdF9vcHRpb25zKTogVXBkYXRlLgoKMjAwMy0wNi0wNSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogTWFrZS1sYW5nLmluOiAgQWRkIHN1cHBvcnQgZm9yIHN0YWdlcHJvZmlsZSBhbmQgc3RhZ2VmZWVkYmFjawoKMjAwMy0wNS0zMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBsYW5nLmMgKGphdmFfaW5pdF9vcHRpb25zKTogUHJlc2NyaWJlIHdyYXAtYXJvdW5kIHR3bydzCgljb21wbGVtZW50IGFyaXRobWV0aWMgb3ZlcmZsb3cgYnkgc2V0dGluZyBmbGFnX3dyYXB2LgoKMjAwMy0wNS0yOSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBidWlsdGlucy5jIChjb3NfYnVpbHRpbiwgc2luX2J1aWx0aW4sIHNxcnRfYnVpbHRpbik6IERlbGV0ZS4KCShidWlsdGluX3JlY29yZCk6IEFkZCBhbiBhZGRpdGlvbmFsIGJ1aWx0aW5fY29kZSBmaWVsZCB0bwoJcmVjb3JkIHdoaWNoIEdDQyBidWlsdC1pbiBjb3JyZXNwb25kcyB0byB0aGUgSmF2YSBmdW5jdGlvbi4KCShqYXZhX2J1aWx0aW5zKTogIEFkZCBuZXcgZW50cmllcyBmb3IgYXRhbiwgYXRhbjIsIGV4cCwgbG9nLAoJcG93IGFuZCB0YW4uCgkobWF4X2J1aWx0aW4sIG1pbl9idWlsdGluLCBhYnNfYnVpbHRpbik6IFBlcmZvcm0gY29uc3RhbnQKCWZvbGRpbmcgb24gdGhlIHJlc3VsdGluZyB0cmVlLgoJKGphdmFfYnVpbGRfZnVuY3Rpb25fY2FsbF9leHByKTogTGlrZXdpc2UsIHBlcmZvcm0gY29uc3RhbnQKCWZvbGRpbmcgb24gdGhlIHJlc3VsdGluZyB0cmVlLgoJKGluaXRpYWxpemVfYnVpbHRpbnMpOiBUaGUgTlVMTCBjcmVhdG9ycyBhcmUgbm93IGFsbG93ZWQgaW4KCXRoZSBqYXZhX2J1aWx0aW5zIHRhYmxlLCB3aGljaCBpcyBub3cgdGVybWluYXRlZCBieSBhbiBlbnRyeQoJd2l0aCBidWlsdGluX2NvZGUgPT0gRU5EX0JVSUxUSU5TLgoJKGNoZWNrX2Zvcl9idWlsdGluKTogTGlrZXdpc2UuICBJZiB0aGUgbWF0Y2hpbmcgY3JlYXRvciBpcwoJTlVMTCwgY29uc3RydWN0IHRoZSBjYWxsIHVzaW5nIGphdmFfYnVpbGRfZnVuY3Rpb25fY2FsbF9leHByCglkaXJlY3RseSB3aXRoIHRoZSBkZWNsIGZvciB0aGUgY29ycmVzcG9uZGluZyBidWlsdGluX2NvZGUuCgoyMDAzLTA1LTIzICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIHdpbjMyLWhvc3QuYzogTm9ybWFsaXplIGNvcHlyaWdodCBib2lsZXJwbGF0ZS4KCjIwMDMtMDUtMTYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHBhcnNlLnkgKHByaW50X2ludF9ub2RlKTogVXNlIHN0cmluZyBjb25jYXRlbnRhdGlvbiBvbgoJSE9TVF9XSURFX0lOVF9QUklOVF8qIGZvcm1hdCBzcGVjaWZpZXIgdG8gY29sbGFwc2UgbXVsdGlwbGUKCWZ1bmN0aW9uIGNhbGxzIGludG8gb25lLgoKMjAwMy0wNS0xMyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGpjZi1wYXJzZS5jLCBqY2Ytd3JpdGUuYywgbGV4LmM6IFJlcGxhY2UgYWxsIGNhbGxzIHRvCglmYXRhbF9pb19lcnJvciB3aXRoIGNhbGxzIHRvIGZhdGFsX2Vycm9yOyBhZGQgIjogJW0iIHRvIHRoZSBlbmQgb2YKCWFsbCB0aGUgYWZmZWN0ZWQgZXJyb3IgbWVzc2FnZXMuCgoyMDAzLTA1LTEzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAobGF5b3V0X2NsYXNzX21ldGhvZCk6IFNldCBERUNMX0VYVEVSTkFMLgoJKiBkZWNsLmMgKGphdmFfbWFya19kZWNsX2xvY2FsLCBqYXZhX21hcmtfY2xhc3NfbG9jYWwpOiBOZXcuCgkqIGphdmEtdHJlZS5oIChqYXZhX21hcmtfY2xhc3NfbG9jYWwpOiBEZWNsYXJlLgoJKiBqY2YtcGFyc2UuYyAocGFyc2VfY2xhc3NfZmlsZSk6IFVzZSBpdC4KCSogcGFyc2UueSAoamF2YV9leHBhbmRfY2xhc3Nlcyk6IExpa2V3aXNlLgoKMjAwMy0wNS0wNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS9wYXJzZS5vLCBqYXZhL3BhcnNlLXNjYW4ubyk6IERlcGVuZCBvbiBpbnB1dC5oLgoJKiBsZXguaDogI2luY2x1ZGUgaW5wdXQuaC4KCSoganYtc2Nhbi5jIChpbnB1dF9maWxlbmFtZSk6IFJlbW92ZS4KCjIwMDMtMDUtMDIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglQUiBqYXZhLzEwNDkxOgoJKiBnamF2YWguYyAoSEFORExFX0lOTkVSQ0xBU1NFU19BVFRSSUJVVEUpOiBOZXcgbWFjcm8uCgkoaGFuZGxlX2lubmVyX2NsYXNzZXMpOiBOZXcgZnVuY3Rpb24uCgoyMDAzLTA1LTAxICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS8xMDQ1OToKCSogcGFyc2UueSAoZmluaXNoX2Zvcl9sb29wKTogRG8gbm90aGluZyBpZiB1cGRhdGUgZXhwcmVzc2lvbiBpcyBhCglFWFBSX1dGTF9OT0RFIHdyYXBwaW5nIG5vdGhpbmcuCgkoamF2YV9jb21wbGV0ZV9saHMpIDxDT01QT1VORF9FWFBSPjogTGlrZXdpc2UuCgoyMDAzLTA1LTAyICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogbGV4LmggKGlucHV0X2xpbmVubyk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCSogcGFyc2Utc2Nhbi55OiAjaW5jbHVkZSBpbnB1dC5oLgoJKGlucHV0X2ZpbGVuYW1lKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKGlucHV0X2xvY2F0aW9uKTogQWRkIGRlZmluaXRpb24uCgkoaW5wdXRfbGluZSk6IFJlbW92ZSBkZWZpbml0aW9uLgoKMjAwMy0wNS0wMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGxleC5oIChsaW5lbm8pOiBSZW5hbWUgdG8gLi4uCgkoaW5wdXRfbGluZSk6IC4uLiBoZXJlCgkqIHBhcnNlLXNjYW4ueSAobGluZW5vKTogUmVuYW1lIHRvIC4uLgoJKGlucHV0X2xpbmUpOiAuLi4gaGVyZS4KCShyZXNldF9yZXBvcnQpOiBSZW5hbWUgbGluZW5vIHRvIGlucHV0X2xpbmUuCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChwdXNoX2NsYXNzKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoY29tcGxldGVfc3RhcnRfamF2YV9tZXRob2QsIGVuZF9qYXZhX21ldGhvZCk6IExpa2V3aXNlLgoJKiBleHByLmMgKGV4cGFuZF9ieXRlX2NvZGUpOiBMaWtld2lzZS4KCSogamNmLXBhcnNlLmMgKGdpdmVfbmFtZV90b19jbGFzcywgcGFyc2VfY2xhc3NfZmlsZSk6IExpa2V3aXNlLgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBMaWtld2lzZS4KCSogbGV4LmMgKGphdmFfaW5pdF9sZXgsIGphdmFfYWxsb2NhdGVfbmV3X2xpbmUsCglkb19qYXZhX2xleCk6IExpa2V3aXNlLgoJKiBwYXJzZS5oIChZWU5PVF9UV0lDRSk6IExpa2V3aXNlLgoJKiBwYXJzZS55IChlbXB0eV9zdGF0ZW1lbnQsIGV4cHJlc3Npb25fc3RhdGVtZW50LAoJamF2YV9wb3BfcGFyc2VyX2NvbnRleHQsIGphdmFfcGFyc2VyX2NvbnRleHRfc2F2ZV9nbG9iYWwsCgl5eWVycm9yLCByZWdpc3Rlcl9maWVsZHMsIG1ldGhvZF9oZWFkZXIsIHNhZmVfbGF5b3V0X2NsYXNzLAoJZmluZF9pbl9pbXBvcnRzX29uX2RlbWFuZCwgY3JlYXRlX2FydGlmaWNpYWxfbWV0aG9kLAoJc291cmNlX2VuZF9qYXZhX21ldGhvZCwgc3RhcnRfY29tcGxldGVfZXhwYW5kX21ldGhvZCwKCWJ1aWxkX3RoaXNuX2Fzc2lnbiwgamF2YV9jb21wbGV0ZV9saHMsCgltYXliZV9hYnNvcmJfc2NvcGluZ19ibG9jayk6IExpa2V3aXNlLgoKMjAwMy0wNC0yMCAgTW9oYW4gRW1iYXIgIDxnbnVzdHVmZkB0aGlzaXNjb29sLmNvbT4KCgkqIGpjZi1pby5jIChmaW5kX2NsYXNzKTogdXNlIERJUl9TRVBBUkFUT1IgaW5zdGVhZCBvZgoJJy8nIHdoZW4gY29tcHV0aW5nIGphdmEgc291cmNlIGZpbGVuYW1lCgoyMDAzLTA0LTEzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBnamF2YWguYyAocHJpbnRfY19kZWNsKTogSW5kZW50YXRpb24gZml4LgoKMjAwMy0wNC0xMiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKG1ha2VfZmllbGRfdmFsdWUsIG1ha2VfbWV0aG9kX3ZhbHVlLCBnZXRfZGlzcGF0Y2hfdGFibGUpCgkobWFrZV9jbGFzc19kYXRhLCBlbWl0X29mZnNldF9zeW1ib2xfdGFibGUpCgkqIGNvbnN0YW50cy5jIChidWlsZF9jb25zdGFudHNfY29uc3RydWN0b3IpCgkqIGphdmEtdHJlZS5oIChTVEFSVF9SRUNPUkRfQ09OU1RSVUNUT1IpCgkqIHBhcnNlLnkgKG1heWJlX2J1aWxkX2FycmF5X2VsZW1lbnRfd2ZsKToKCVVzZSBidWlsZF9jb25zdHJ1Y3Rvci4KCjIwMDMtMDQtMTAgIEVyaWMgQmxha2UgIDxlYmI5QGVtYWlsLmJ5dS5lZHU+CgoJUFIgamF2YS8xMDI1MzoKCSogcGFyc2UueSAoc3RyaW5nX2NvbnZlcnRfaW50X2NzdCk6IEFsd2F5cyB1c2UgYXQgbGVhc3Qgb25lIGRpZ2l0CglpbiBzdHJpbmcgY29udmVyc2lvbi4gUmVtb3ZlIEFTQ0lJIGRlcGVuZGVuY2UuCgkobWVyZ2Vfc3RyaW5nX2NzdGUpOiBGaXggbWVyZ2luZyBvZiAzLWJ5dGUgVVRGLTggY2hhcmFjdGVycy4KCjIwMDMtMDMtMTYgIE1vaGFuIEVtYmFyICA8Z251c3R1ZmZAdGhpc2lzY29vbC5jb20+CgoJKiBNYWtlLWxhbmcuaW46IGFkZGVkIHdpbjMyLWhvc3QuYwoJKiBqY2YuaDogZGVmaW5lZCBtYWNybyBKQ0ZfT1BFTl9FWEFDVF9DQVNFIHdoaWNoCglyZXNvbHZlcyB0byBvcGVuKCkgb24gbm9uLVdpbjMyIHBsYXRmb3JtcyBhbmQKCVdpbjMyLXNwZWNpZmljIGpjZl9vcGVuX2V4YWN0X2Nhc2UoKSBvbiBXaW4zMgoJKiBqY2YtaW8uYyAoZmluZF9jbGFzcyk6IHVzZSBKQ0ZfT1BFTl9FWEFDVF9DQVNFCgl3aGVuIHRyeWluZyAuamF2YSBhbmQgLmNsYXNzIGZpbGVzCgkqIHdpbjMyLWhvc3QuYzogYWRkZWQgdG8gcmVwb3NpdG9yeS4gRGVmaW5lcwoJV2luMzItc3BlY2lmaWMgamNmX29wZW5fZXhhY3RfY2FzZSgpCgoyMDAzLTA0LTEwICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGpjZi13cml0ZS5jIChzdHJ1Y3QgamNmX3BhcnRpYWwpOiBudW1fanNyczogbmV3IGZpZWxkLgoJKG1heWJlX2ZyZWVfbG9jYWx2YXIpOiBSZW5hbWVkIGZyb20gbG9jYWx2YXJfZnJlZS4KCUFkZCBuZXcgYXJnLCByZWFsbHkuCgkoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBTZXQgbmV3IHZhcmlhYmxlLCBqc3JzLgoJT25seSBmcmVlIGxvY2FsIHZhcnMgaWYgbm8ganNyIGluc25zIGhhdmUgYmVlbiBlbWl0dHRlZC4KCUNhbGwgbWF5YmVfZnJlZV9sb2NhbHZhciwgbm90IGxvY2FsdmFyX2ZyZWUuCgoyMDAzLTAzLTMwICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGdjai50ZXhpOiBSZW1vdmUgQCBhdCBzdGFydCBvZiBmaWxlLgoKMjAwMy0wMy0yNSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogcGFyc2UueSAoY3JlYXRlX2ludGVyZmFjZSk6IENhbGwgQ0hFQ0tfREVQUkVDQVRFRC4KCjIwMDMtMDMtMjMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlLWxhbmcuaW46IExpbmsgamNmLWR1bXAgYWdhaW5zdCAkKExERVhQX0xJQikuCgoyMDAzLTAzLTIxICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogamF2YW9wLmggKGpmbG9hdCwgamRvdWJsZSk6IE1ha2UgdGhlbSBzdHJ1Y3R1cmVzIG1pcnJvcmluZwoJdGhlIGJpdCBmaWVsZHMgb2YgSUVFRSBmbG9hdCBhbmQgZG91YmxlIHJlc3BlY3RpdmVseS4KCShKRkxPQVRfRklOSVRFLCBKRkxPQVRfUU5BTl9NQVNLLCBKRkxPQVRfRVhQX0JJQVMsCglKRE9VQkxFX0ZJTklURSwgSkRPVUJMRV9RTkFOX01BU0ssIEpET1VCTEVfRVhQX0JJQVMpOiBOZXcuCgkodW5pb24gV29yZCwgdW5pb24gRFdvcmQpOiBEZWxldGUuCgkoV09SRF9UT19GTE9BVCwgV09SRFNfVE9fRE9VQkxFKTogVXBkYXRlIHRvIG1hdGNoLgoKCSogZ2phdmFoLmMgKGphdmFfZmxvYXRfZmluaXRlLCBqYXZhX2RvdWJsZV9maW5pdGUsIEZfTkFOX01BU0ssCglEX05BTl9NQVNLKTogRGVsZXRlLgoJKGpuaV9wcmludF9mbG9hdCwgam5pX3ByaW50X2RvdWJsZSk6IE5ldy4gIEdlbmVyYXRlCgloZXhhZGVjaW1hbCBmbG9hdGluZyBjb25zdGFudHMuCgkocHJpbnRfZmllbGRfaW5mbyk6IFVzZSBqbmlfcHJpbnRfZmxvYXQvZG91YmxlLgoKCSogamNmLWR1bXAuYzogSW5jbHVkZSBtYXRoLmguICBVc2UgbGRleHAvZnJleHAgdG8gYXNzZW1ibGUKCWZpbml0ZSBmbG9hdGluZyBwb2ludCBudW1iZXJzIGZvciBvdXRwdXQ7IHNwZWNpYWwgY2FzZQoJbm9uLWZpbml0ZSBmbG9hdHMuCgoyMDAzLTAzLTE5ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGxhbmcuYyAoamF2YV9kdW1wX3RyZWUpOiBDaGFuZ2UgcmV0dXJuIHR5cGUgZnJvbSAnaW50JyB0byAnYm9vbCcuCglSZXBsYWNlIDAgYW5kIDEgd2l0aCB0cnVlIGFuZCBmYWxzZSBpbiByZXR1cm4gc3RhdGVtZW50cy4KCjIwMDMtMDMtMTkgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGxleC5jIChkb19qYXZhX2xleCk6IFJlbmFtZWQgZnJvbSBqYXZhX2xleC4KCShqYXZhX2xleCk6IE5ldyBmdW5jdGlvbi4KCUluY2x1ZGUgdGltZXZhci5oLgoKMjAwMy0wMy0xMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogcGFyc2UueSAocmVzb2x2ZV9pbm5lcl9jbGFzcyk6IEVycm9yIGlmIHF1YWxpZmllciBpcyBhIHByaW1pdGl2ZQoJdHlwZS4KCjIwMDMtMDMtMDQgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogZ2phdmFoLmMgKGlzX2ZpcnN0X2RhdGFfbWVtYmVyKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShwcmludF9jX2RlY2wpOiBJZiBpdCdzIHRoZSBmaXJzdCBkYXRhIG1lbWJlciwgYWxpZ24gaXQgYXMgdGhlCglzdXBlcmNsYXNzLgoJKHByb2Nlc3NfZmlsZSk6IFNldCBpc19maXJzdF9kYXRhX21lbWJlci4KCjIwMDMtMDMtMTEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHJlc29sdmVfZmllbGRfYWNjZXNzKTogSW5pdGlhbGl6ZSBjbGFzcyBpZiBmaWVsZCBpcwoJZm91bmQgaW4gYW5vdGhlciBzdGF0aWMgZmllbGQuCgkqIGV4cHIuYyAoYnVpbGRfY2xhc3NfaW5pdCk6IERvbid0IG9wdGltaXplIG91dCBpbml0aWFsaXphdGlvbiBvZgoJaW1wbGVtZW50ZWQgaW50ZXJmYWNlLgoKMjAwMy0wMy0xMSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBqY2YtaW8uYyAoY2FjaGluZ19zdGF0KTogSW5pdGlhbGl6ZSBvcmlnc2VwIHRvIHJlbW92ZSBjb21waWxlcgoJd2FybmluZy4KCjIwMDMtMDMtMTAgIFJhbmppdCBNYXRoZXcgIDxybWF0aGV3QGhvdG1haWwuY29tPgoKCSogamNmLWlvLmMgKGNhY2hpbmdfc3RhdCk6IEFjY291bnQgZm9yIGJvdGggRElSX1NFUEFSQVRPUgoJYW5kIERJUl9TRVBBUkFUT1JfMiBmb3IgYSB0YXJnZXQuCglDb3JyZWN0IG1pbm9yIHR5cG9zLgoKCSogamNmLXdyaXRlLmMgKG1ha2VfY2xhc3NfZmlsZV9uYW1lKTogVGFrZSBib3RoIERJUl9TRVBBUkFUT1IKCWFuZCBESVJfU0VQQVJBVE9SXzIgZm9yIGEgdGFyZ2V0IGludG8gYWNjb3VudC4KCjIwMDMtMDMtMDggIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGxhbmcuYyAoamF2YV9pbml0KTogVXBkYXRlIHByb3RvdHlwZSwgbW92ZSBjb2RlIHRvIGphdmFfcG9zdF9vcHRpb25zLgoJKGphdmFfcG9zdF9vcHRpb25zKTogU2ltaWxhcmx5LgoKMjAwMy0wMy0wNSAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJKiBqY2YuaCAoQ09NUEFSRV9GSUxFTkFNRVMpOiBOZXcgbWFjcm8gc2ltaWxhciB0byAic3RyY21wIiB0bwoJY29tcGFyZSBmaWxlIG5hbWUgY29tcG9uZW50cyBkZXBlbmRpbmcgb24gdGhlIGNhc2Utc2Vuc2l0aXZpdHkKCW9yIG90aGVyd2lzZSBvZiB0aGUgaG9zdCBmaWxlIHN5c3RlbS4KCgkqIGpjZi1wYXRoLmMgKGFkZF9lbnRyeSk6IFVzZSBDT01QQVJFX0ZJTEVOQU1FUyBpbnN0ZWFkIG9mCgkic3RyY21wIiB0byBjb21wYXJlIGZpbGUgbmFtZSBjb21wb25lbnRzLgoJVXNlIElTX0RJUl9TRVBBUkFUT1IgaW5zdGVhZCBvZiBjb21wYXJpbmcgZGlyZWN0bHkgYWdhaW5zdAoJRElSX1NFUEFSQVRPUi4KCShqY2ZfcGF0aF9leHRkaXJzX2FyZyk6IFVzZSBJU19ESVJfU0VQQVJBVE9SIGluc3RlYWQgb2YKCWNvbXBhcmluZyBkaXJlY3RseSBhZ2FpbnN0IERJUl9TRVBBUkFUT1IuCgoyMDAzLTAzLTA0ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEudGFncyk6IE5ldyB0YXJnZXQuCgoyMDAzLTAzLTAxICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGphdmEvYnVpbHRpbnMuYyAoYnVpbHRpbl90eXBlKTogSGFuZGxlIERFRl9GVU5DVElPTl9UWVBFX1ZBUl8zLgoJKGluaXRpYWxpemVfYnVpbHRpbnMpOiBIYW5kbGUgREVGX0ZVTkNUSU9OX1RZUEVfVkFSXzMuCgoyMDAzLTAzLTAxICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChqZGVwX3Jlc29sdmVfY2xhc3MpOiBPbmx5IGNoZWNrIGRlcHJlY2F0aW9uIGlmIHdlIGZvdW5kCglhIGRlY2wuCgoyMDAzLTAyLTI4ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUFIgamF2YS85Njk1OgoJKiBjbGFzcy5jIChtYXliZV9sYXlvdXRfc3VwZXJfY2xhc3MpOiBBbHdheXMgcGFzcyBhIFdGTCB0bwoJZG9fcmVzb2x2ZV9jbGFzcy4KCSogcGFyc2UueSAoZG9fcmVzb2x2ZV9jbGFzcyk6IFVwZGF0ZWQgY29tbWVudCB0byBleHBsYWluCglwYXJhbWV0ZXJzLgoKMjAwMy0wMi0yNiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2NsYXNzZmlsZSk6IENoZWNrIHdoZXRoZXIgY2xhc3MgaXMKCWRlcHJlY2F0ZWQgYmVmb3JlIHdyaXRpbmcgYXR0cmlidXRlIGNvdW50LgoKMjAwMy0wMi0yNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBqYXZhL2RlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IEdldCBzb2Z0X2Ztb2Rfbm9kZSBmcm9tCglidWlsdF9pbl9kZWNsc1tCVUlMVF9JTl9GTU9EXSByYXRoZXIgdGhhbiBkZWZpbmUgaXQgb3Vyc2VsdmVzLgoKMjAwMy0wMi0yMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogbGFuZy1vcHRpb25zLmg6IEFkZGVkIC1XZGVwcmVjYXRlZC4KCSogZ2NqLnRleGkgKFdhcm5pbmdzKTogRG9jdW1lbnQgLVdkZXByZWNhdGVkLgoJKiBqYXZhLXRyZWUuaCAoZmxhZ19kZXByZWNhdGVkKTogRGVjbGFyZS4KCSogbGFuZy5jIChsYW5nX1dfb3B0aW9ucyk6IEFkZGVkIGRlcHJlY2F0ZWQuCgkoZmxhZ19kZXByZWNhdGVkKTogTmV3IGdsb2JhbC4KCSogY2hhcnRhYmxlcy5oOiBSZWJ1aWx0LgoJKiBnZW4tdGFibGUucGwgKHByb2Nlc3Nfb25lKTogTG9vayBhdCB3aGl0ZXNwYWNlLgoJKHByaW50X3RhYmxlcyk6IERlZmluZSBMRVRURVJfU1BBQ0UsIExFVFRFUl9NQVNLLgoJKiBwYXJzZS5oIChDTEVBUl9ERVBSRUNBVEVEKTogTmV3IG1hY3JvLgoJKENIRUNLX0RFUFJFQ0FURURfTk9fUkVTRVQpOiBOZXcgbWFjcm8uCgkqIGpjZi1wYXJzZS5jIChoYW5kbGVfZGVwcmVjYXRlZCk6IE5ldyBmdW5jdGlvbi4KCShIQU5ETEVfREVQUkVDQVRFRF9BVFRSSUJVVEUpOiBOZXcgZGVmaW5lLgoJKiBqY2YtcmVhZGVyLmMgKGdldF9hdHRyaWJ1dGUpOiBIYW5kbGUgRGVwcmVjYXRlZCBhdHRyaWJ1dGUuCgkqIHBhcnNlLnkgKHJlc29sdmVfdHlwZV9kdXJpbmdfcGF0Y2gpOiBDaGVjayBkZXByZWNhdGlvbi4KCShqZGVwX3Jlc29sdmVfY2xhc3MpOiBMaWtld2lzZS4KCShwcm9jZXNzX2ltcG9ydHMpOiBMaWtld2lzZS4KCShyZXNvbHZlX2V4cHJlc3Npb25fbmFtZSk6IExpa2V3aXNlLgoJKGNoZWNrX2RlcHJlY2F0aW9uKTogU3RyaXAgYXJyYXlzIGZyb20gZGVjbC4gIENoZWNrCglmbGFnX2RlcHJlY2F0ZWQuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBBbHNvIGNoZWNrIHRoZSBwYXJ0aWN1bGFyIGNvbnN0cnVjdG9yCglmb3IgZGVwcmVjYXRpb24uCgkocmVnaXN0ZXJfZmllbGRzKTogVXNlIENIRUNLX0RFUFJFQ0FURURfTk9fUkVTRVQgaW4gbG9vcC4KCSogamNmLXdyaXRlLmMgKGFwcGVuZF9kZXByZWNhdGVkX2F0dHJpYnV0ZSk6IE5ldyBmdW5jdGlvbi4KCShnZW5lcmF0ZV9jbGFzc2ZpbGUpOiBHZW5lcmF0ZSBkZXByZWNhdGVkIGF0dHJpYnV0ZSB3aGVuCglhcHByb3ByaWF0ZS4KCSogbGV4LmMgKGphdmFfcGFyc2VfZG9jX3NlY3Rpb24pOiBSZXR1cm4gdHlwZSBub3cgdm9pZC4gIFJld3JvdGUuCgkoamF2YV9sZXgpIFtjYXNlICcqJ106IFNpbXBsaWZ5IGxvZ2ljLgoJKGphdmFfc3RhcnRfY2hhcl9wKTogVXNlIExFVFRFUl9NQVNLLgoJKGphdmFfcGFydF9jaGFyX3ApOiBMaWtld2lzZS4KCShqYXZhX3NwYWNlX2NoYXJfcCk6IE5ldyBmdW5jdGlvbi4KCjIwMDMtMDItMjAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJQ2hhbmdlIGJhc2UgY2xhc3MgYWNjZXNzIHJlcHJlc2VudGF0aW9uLgoJKiBqYXZhL2NsYXNzLmMgKHNldF9zdXBlcl9pbmZvKTogRG9uJ3Qgc2V0IFRSRUVfVklBX1BVQkxJQy4KCShhZGRfaW50ZXJmYWNlX2RvKTogTGlrZXdpc2UuCgoyMDAzLTAyLTEyICBSYW5qaXQgTWF0aGV3ICA8cm1hdGhld0Bob3RtYWlsLmNvbT4KCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IENoYW5nZQoJc29mdF9sb29rdXBqbmltZXRob2Rfbm9kZSB0byByZWZsZWN0IHRoZSBjaGFuZ2UgaW4KCXNpZ25hdHVyZSBvZiBfSnZfTG9va3VwSk5JTWV0aG9kIGluIGxpYmphdmEvam5pLmNjCgkqIGV4cHIuYyAoYnVpbGRfam5pX3N0dWIpOiBDYWxjdWxhdGUgYW5kIHBhc3MgdGhlIHNpemUKCW9uIHRoZSBzdGFjayBvZiB0aGUgYXJndW1lbnRzIHRvIGEgSk5JIGZ1bmN0aW9uLiBVc2UKCW5ldyB0YXJnZXQgbWFjcm8gTU9ESUZZX0pOSV9NRVRIT0RfQ0FMTCB0byBhbGxvdyBhCgl0YXJnZXQgdG8gbW9kaWZ5IHRoZSBjYWxsIHRvIGEgSk5JIG1ldGhvZC4KCjIwMDMtMDItMDggIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogamNmLWlvLmMgKGphdmFfb3JfY2xhc3NfZmlsZSk6IFVzZSBsaWJpYmVydHkncyBsYmFzZW5hbWUKCWluc3RlYWQgb2YgYmFzZW5hbWUgdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZ3Mgb24gVHJ1NjQuCgoyMDAzLTAyLTA0ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGdjai50ZXhpOiBVcGRhdGUgdG8gR0ZETCAxLjIuCgoyMDAzLTAxLTMxICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKGphdmFfZXhwYW5kX2NsYXNzZXMpOiBTY2FuIHRoZSB3aG9sZSBjbGFzcyBsaXN0IGxvb2tpbmcKCWZvciBhY2Nlc3MgbWV0aG9kcyB0aGF0IGhhdmVuJ3QgeWV0IGJlZW4gZXhwYW5kZWQuCgoyMDAzLTAxLTMxIEFkcmlhbiBCdW5rIDxidW5rQGZzLnR1bS5kZT4KCglGaXggZm9yIGphdmEvNDI2OToKCgkqIGp2LXNjYW4uYzogVXNlIEhBVkVfTEFOR0lORk9fQ09ERVNFVCBpbnN0ZWFkIG9mIEhBVkVfTkxfTEFOR0lORk8KCXRvIGZpeCBib290c3RyYXAgb24gc3BhcmMtdW5rbm93bi1uZXRic2RlbGYxLjUuCgkqIGpjZi1wYXJzZS5jOiBMaWtld2lzZS4KCjIwMDMtMDEtMzEgIE1hcmsgV2llbGFhcmQgIDxtYXJrQGtsb21wLm9yZz4KCgkqIGdqYXZhaC5jICh0aHJvd2FibGVfcCk6IEFsbG9jYXRlIDEgbW9yZSBieXRlIGZvciBzdHJpbmcuCgoyMDAzLTAxLTMxICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAobWFrZV9jbGFzcyk6IFVzZSBCSU5GT19FTFRTLgoJKHNldF9zdXBlcl9pbmZvKTogTGlrZXdzZS4KCShhZGRfaW50ZXJmYWNlX2RvKTogTGlrZXdpc2UuCgoyMDAzLTAxLTMwICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBqY2YtcGFyc2UuYyAocmVhZF9jbGFzcyk6IFVwZGF0ZSBpZGVudGlmaWVyJ3MgY2xhc3MgdmFsdWUgaWYgaXQKCWNoYW5nZWQgZHVyaW5nIHBhcnNpbmcuCgoyMDAzLTAxLTMwICBMb3JlbiBKYW1lcyBSaXR0bGUgIDxsanJpdHRsZUBhY20ub3JnPgoKCSogTWFrZS1sYW5nLmluIChwby1nZW5lcmF0ZWQpOiBGaW5kIHRoZSB0YXJnZXRzIGluICQocGFyc2VkaXIpLgoJUHJvcGFnYXRlIGNoYW5nZSB0byBhbGwgb3RoZXIgcnVsZXMgYXMgcmVxdWlyZWQuCgkoamF2YS9wYXJzZS1zY2FuLm8pOiBBZGQgZXhwbGljaXQgZGVwZW5kZW5jeSBvbgoJJChwYXJzZWRpcikvamF2YS9wYXJzZS1zY2FuLmMgLgoKMjAwMy0wMS0yOSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfYXNzaWdubWVudCk6IE9ubHkgdHJhbnNmb3JtIHRoZSByaHMgb2YgYW4KCWFzc2lnbm1lbnQgd2hlbiBjb21waWxpbmcgdG8gbmF0aXZlLgoKMjAwMy0wMS0yOCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2NvbmRpdGlvbmFsKTogVHlwbyBmaXhlcy4KCjIwMDMtMDEtMjggIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGxleC5jIChqYXZhX2xleCk6IERvbid0IGluY2x1ZGUgVUVPRiBhcyBwYXJ0IG9mIHRva2VuLgoJKGphdmFfcmVhZF91bmljb2RlKTogRXJyb3IgaWYgXHUgc2VxdWVuY2UgcHJlbWF0dXJlbHkgdGVybWluYXRlZC4KCjIwMDMtMDEtMjcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzKTogQ2hlY2sgZm9yIGNvbnN0cnVjdCBhZnRlcgoJY2hlY2tpbmcgdHlwZXMgaW4gdGhyb3dzIGNsYXVzZS4KCjIwMDMtMDEtMjQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3N0YXRpY19maWVsZF9yZWYpOiBPbmx5IGEgU3RyaW5nIG9yIG51bWVyaWMgZmllbGQKCWNhbiBmb2xkIHRvIGEgY29uc3RhbnQuCgoyMDAzLTAxLTIzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBqY2YtcGFyc2UuYyAocGFyc2VfemlwX2ZpbGVfZW50cmllcyk6IE92ZXJ3cml0ZSB0cmFpbGluZyBcMCBvZgoJZmlsZSBuYW1lIGluIHJlc291cmNlIGJ1ZmZlci4KCjIwMDMtMDEtMjMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoYnVpbGRfa25vd25fbWV0aG9kX3JlZik6IFVzZSBtZXRob2QncyBjb250ZXh0IHRvIGZpbmQKCW1ldGhvZCB0YWJsZSBpbmRleC4KCjIwMDMtMDEtMjMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGNvbnN0YW50cy5jIChzZXRfY29uc3RhbnRfZW50cnkpOiBBbGxvY2F0ZWQgY2xlYXJlZCBtZW1vcnkuCgoyMDAzLTAxLTIyICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBqYXZhLXRyZWUuaDogRG9uJ3QgdXNlIFBBUkFNUy4KCSogcmVzb3VyY2UuYzogQWRkIHByb3RvdHlwZXMgZm9yIGFsbCBmdW5jdGlvbnMuCgkod3JpdGVfcmVzb3VyY2VfY29uc3RydWN0b3IpOiBVc2UgYGNvbnN0IGNoYXIgKicgdG8gYXZvaWQKCXdhcm5pbmcuCgoyMDAzLTAxLTIyIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogamNmLXBhcnNlLmMgKHByb2Nlc3NfemlwX2Rpcik6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCgoyMDAzLTAxLTIyICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGJ1aWxkX2ludm9rZWludGVyZmFjZSk6IEFib3J0IGlmIG1ldGhvZCdzIGNvbnRleHQgaXMgbm90CglhbiBpbnRlcmZhY2UuCgoyMDAzLTAxLTIyICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBnY2oudGV4aSAoSW5wdXQgYW5kIG91dHB1dCBmaWxlcyk6IE1lbnRpb24gbm9uLWNsYXNzIGVudHJpZXMuCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IENhbGwKCWluaXRfcmVzb3VyY2VfcHJvY2Vzc2luZy4KCSogamF2YS10cmVlLmggKGNvbXBpbGVfcmVzb3VyY2VfZGF0YSwgd3JpdGVfcmVzb3VyY2VfY29uc3RydWN0b3IsCgljb21waWxlX3Jlc291cmNlX2ZpbGUsIGluaXRfcmVzb3VyY2VfcHJvY2Vzc2luZyk6IERlY2xhcmUuCgkqIGNvbmZpZy1sYW5nLmluIChndGZpbGVzKTogQWRkZWQgcmVzb3VyY2UuYy4KCSogTWFrZS1sYW5nLmluIChndC1qYXZhLXJlc291cmNlLmgpOiBOZXcgdGFyZ2V0LgoJKEpBVkFfT0JKUyk6IEFkZGVkIHJlc291cmNlLm8uCgkoamF2YS9yZXNvdXJjZS5vKTogTmV3IHRhcmdldC4KCSogcmVzb3VyY2UuYzogTmV3IGZpbGUuCgkqIGNsYXNzLmMgKGNvbXBpbGVfcmVzb3VyY2VfZmlsZSk6IE1vdmVkIHRvIHJlc291cmNlLmMuCgkocmVnaXN0ZXJSZXNvdXJjZV9saWJmdW5jKTogTGlrZXdpc2UuCgkodXRmOF9kZWNsX2xpc3QpOiBNYXJrIHdpdGggR1RZOyBub3cgc3RhdGljLgoJKiBqY2YtcGFyc2UuYyAoY2xhc3NpZnlfemlwX2ZpbGUpOiBOZXcgZnVuY3Rpb24uCgkocGFyc2VfemlwX2ZpbGVfZW50cmllcyk6IFVzZSBpdDsgY29tcGlsZSAucHJvcGVydGllcyBmaWxlcy4KCShwcm9jZXNzX3ppcF9kaXIpOiBVc2UgY2xhc3NpZnlfemlwX2ZpbGUgYW5kIGNvbXB1dGVfY2xhc3NfbmFtZS4KCURvbid0IHdyaXRlIGNsYXNzIG5hbWUgaW50byB6aXAgZGlyZWN0b3J5LgoJKGphdmFfcGFyc2VfZmlsZSk6IENhbGwgd3JpdGVfcmVzb3VyY2VfY29uc3RydWN0b3IuCgkoY29tcHV0ZV9jbGFzc19uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKiBqY2YtaW8uYyAocmVhZF96aXBfbWVtYmVyKTogUmVpbmRlbnRlZC4KCjIwMDMtMDEtMjEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKHN1cGVyc19hbGxfY29tcGlsZWQpOiBOZXcgZnVuY3Rpb24uCgkobWFrZV9jbGFzc19kYXRhKTogVXNlIGl0LgoKMjAwMy0wMS0yMSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogcGFyc2UueSAobWV0aG9kX2hlYWRlcik6IE5hdGl2ZSBtZXRob2QgY2FuJ3QgYmUgc3RyaWN0ZnAuCglObyBtZXRob2QgY2FuIGJlIHRyYW5zaWVudCBvciB2b2xhdGlsZS4KCjIwMDMtMDEtMjEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCglNYWtlLWxhbmcuaW4gKGp2c3BlYy5vLXdhcm4pOiBBZGQgLVduby1lcnJvci4KCjIwMDMtMDEtMTggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjaGVjay1pbml0LmM6IEZpeCBjb21tZW50IHR5cG9zLgoJKiBjbGFzcy5jOiBMaWtld2lzZS4KCSogY29uc3RhbnRzLmM6IExpa2V3aXNlLgoJKiBkZWNsLmM6IExpa2V3aXNlLgoJKiBleGNlcHQuYzogTGlrZXdpc2UuCgkqIGV4cHIuYzogTGlrZXdpc2UuCgkqIGphdmEtZXhjZXB0Lmg6IExpa2V3aXNlLgoJKiBqYXZhLXRyZWUuaDogTGlrZXdpc2UuCgkqIGphdmFvcC5oOiBMaWtld2lzZS4KCSogamNmLWR1bXAuYzogTGlrZXdpc2UuCgkqIGpjZi1pby5jOiBMaWtld2lzZS4KCSogamNmLXBhcnNlLmM6IExpa2V3aXNlLgoJKiBqY2Ytd3JpdGUuYzogTGlrZXdpc2UuCgkqIGxhbmcuYzogTGlrZXdpc2UuCgkqIG1hbmdsZS5jOiBMaWtld2lzZS4KCSogdHlwZWNrLmM6IExpa2V3aXNlLgoJKiB2ZXJpZnkuYzogTGlrZXdpc2UuCgoyMDAzLTAxLTE4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEvamNmLXdyaXRlLm8pOiBEZXBlbmQgb24gJChUTV9QX0gpLgoJKiBqY2Ytd3JpdGUuYzogSW5jbHVkZSAidG1fcC5oIi4KCjIwMDMtMDEtMTcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGpjZi1pby5jIChjYWNoaW5nX3N0YXQpOiBDYXN0IHRoZSAzcmQgYXJnIG9mIHNjYW5kaXIgdG8gdm9pZCouCgoyMDAzLTAxLTE2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChqYXZhX2J1aWxkX2Z1bmN0aW9uX2NhbGxfZXhwcik6IFJlbmFtZWQgZnJvbQoJYnVpbGRfZnVuY3Rpb25fY2FsbF9leHByLiAgQWxsIGNhbGxlcnMgY2hhbmdlZC4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS9qY2YtcGFyc2Uubyk6IERlcGVuZCBvbiAkKFRNX1BfSCkuCgkqIGpjZi1wYXJzZS5jOiBJbmNsdWRlIHRtX3AuaC4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6IEF2b2lkIHNpZ25lZC91bnNpZ25lZAoJd2FybmluZy4KCjIwMDMtMDEtMTQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3NfZGF0YSk6IENoZWNrIHRoYXQgc3VwZXIgaXMgY29tcGlsZWQgYmVmb3JlCglidWlsZGluZyBjbGFzcyByZWZlcmVuY2UgdG8gaXQuCgoyMDAzLTAxLTE0ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IF9Kdl9OZXdNdWx0aUFycmF5IGlzIGEKCXZhcmFyZ3MgZnVuY3Rpb24gLS0gY29ycmVjdC4KCjIwMDMtMDEtMTQgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogVGVtcG9yYXJpbHkgYmFjayBvdXQgcHJldmlvdXMgcGF0Y2guCgoyMDAzLTAxLTE0ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IF9Kdl9OZXdNdWx0aUFycmF5IGlzIGEKCXZhcmFyZ3MgZnVuY3Rpb24gLS0gY29ycmVjdC4KCgkqIHBhcnNlLnkgKHBhdGNoX2Fzc2lnbm1lbnQpOiBDb3B5IHRoZSByaHMgb2YgYW4gYXNzaWdubWVudCBpbnRvIGEKCXRlbXBvcmFyeSBpZiB0aGUgUkhTIGlzIGEgcmVmZXJlbmNlLgoKMjAwMy0wMS0xMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZS1sYW5nLmluIChrZXl3b3JkLmgpOiBQYXNzICItTCBBTlNJLUMiIHRvIGdwZXJmLgoJKiBrZXl3b3JkLmg6IFJlZ2VuZXJhdGVkLgoKCSogQWxsIEZpbGVzOiBDb252ZXJ0IHRvIElTTyBDIHN0eWxlIGZ1bmN0aW9uIGRlZmluaXRpb25zLgoKMjAwMy0wMS0wOSAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBwYXJzZS55IChjaGVja19wa2dfY2xhc3NfYWNjZXNzKTogQU5TSWZ5IGRlZmluaXRpb24uCgoyMDAzLTAxLTA5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkZWNsLmMsIHBhcnNlLXNjYW4ueSwgcGFyc2UueTogRG9uJ3QgY2FzdCByZXR1cm4gdmFsdWUgb2YKCXhtYWxsb2MgZXQgYWwuCgoJKiBjbGFzcy5jLCBnamF2YWguYywgcGFyc2UueSwgdmVyaWZ5LmM6IERvbid0IHVzZSBQVFIuCgoyMDAzLTAxLTA5ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCglNZXJnZSBmcm9tIHBjaC1icmFuY2g6CgoJMjAwMi0xMi0wMiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEvZ2phdmFoLm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoJKiBnamF2YWguYzogSW5jbHVkZSBnZ2MuaC4KCgkyMDAyLTA4LTE2ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQHJlZGhhdC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKEdDSkhfT0JKUyk6IEFkZCBnZ2Mtbm9uZS5vLgoJKEpDRkRVTVBfT0JKUyk6IEFkZCBnZ2Mtbm9uZS5vLgoJKGphdmEvamNmLWR1bXAubyk6IERlcGVuZCBvbiBHR0NfSC4KCSogamNmLXJlYWRlci5jIChqY2ZfcGFyc2VfY29uc3RhbnRfcG9vbCk6IFVzZSBnZ2NfYWxsb2MgdG8gYWxsb2NhdGUKCUNQb29sIHN1YnN0cnVjdHVyZXMuCgkqIGpjZi1wYXJzZS5jIChwcm9jZXNzX3ppcF9kaXIpOiBVc2UgZ2djX2FsbG9jIHRvIGFsbG9jYXRlIEpDRnMuCgkqIGpjZi1kdW1wLmM6IEluY2x1ZGUgZ2djLmguCgoJMjAwMi0wOC0wOCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogamNmLmggKHVuaW9uIGNwb29sX2VudHJ5KTogTmV3LgoJKHN0cnVjdCBDUG9vbCk6IFVzZSBnZW5ndHlwZSB0byBtYXJrLiAgQ2hhbmdlIGZpZWxkICdkYXRhJyB0byBiZQoJYW4gYXJyYXkgb2YgdW5pb25zLgoJKHN0cnVjdCBKQ0YpOiBVc2UgZ2VuZ3R5cGUgdG8gbWFyay4KCShDUE9PTF9VSU5UKTogVXBkYXRlIGZvciBuZXcgY3Bvb2xfZW50cnkgdHlwZS4KCShDUE9PTF9VU0hPUlQxKTogTGlrZXdpc2UuCgkoQ1BPT0xfVVNIT1JUMik6IExpa2V3aXNlLgoJKENQT09MX0ZJTklTSCk6IFVzZSBHQyB0byBmcmVlIGNwb29sIHN1YmZpZWxkcy4KCSogcGFyc2UuaCAoc3RydWN0IHBhcnNlcl9jdHh0KTogTWFyayBmaWVsZCBjdXJyZW50X2pjZi4KCSogbGV4LmMgKGphdmFfaW5pdF9sZXgpOiBVc2UgR0MgdG8gYWxsb2NhdGUgc3RydWN0IEpDRi4KCSogamNmLXBhcnNlLmMgKEhBTkRMRV9DT05TVEFOVF9VdGY4KTogVXBkYXRlIGZvciBuZXcgY3Bvb2xfZW50cnkgdHlwZS4KCShtYWluX2pjZik6IFVzZSBnZW5ndHlwZSB0byBtYXJrLgoJKGdnY19tYXJrX2pjZik6IERlbGV0ZS4KCShnZXRfY29uc3RhbnQpOiBVcGRhdGUgZm9yIG5ldyBjcG9vbF9lbnRyeSB0eXBlLgoJKGdpdmVfbmFtZV90b19jbGFzcyk6IExpa2V3aXNlLgoJKGdldF9jbGFzc19jb25zdGFudCk6IExpa2V3aXNlLgoJKGluaXRfb3V0Z29pbmdfY3Bvb2wpOiBVc2UgR0dDIHRvIGFsbG9jYXRlIHN0cnVjdCBDUG9vbC4KCShqYXZhX3BhcnNlX2ZpbGUpOiBVc2UgR0dDIHRvIGFsbG9jYXRlIHN0cnVjdCBKQ0YuCgkoaW5pdF9qY2ZfcGFyc2UpOiBEb24ndCBjYWxsIGdnY19hZGRfcm9vdC4KCSogamNmLXJlYWRlci5jIChqY2ZfcGFyc2VfY29uc3RhbnRfcG9vbCk6IFVwZGF0ZSBmb3IgbmV3CgljcG9vbF9lbnRyeSB0eXBlLgoJKiBqYXZhLXRyZWUuaCAoY3VycmVudF9qY2YpOiBVc2UgZ2VuZ3R5cGUgdG8gbWFyay4KCShDUE9PTF9VVEYpOiBVcGRhdGUgZm9yIG5ldyBjcG9vbF9lbnRyeSB0eXBlLgoJKG91dGdvaW5nX2Nwb29sKTogVXNlIGdlbmd0eXBlIHRvIG1hcmsuCgkoc3RydWN0IGxhbmdfdHlwZSk6IEdDIHN0cnVjdCBKQ0YgYW5kIHN0cnVjdCBDUG9vbC4KCSogY29uZmlnLWxhbmcuaW4gKGd0ZmlsZXMpOiBBZGQgamNmLmguCgkqIGNvbnN0YW50cy5jIChmaW5kX3RyZWVfY29uc3RhbnQpOiBOZXcuCgkoc2V0X2NvbnN0YW50X2VudHJ5KTogQWxsb2NhdGUgY3Bvb2wgc3ViZmllbGRzIHVzaW5nIEdHQy4gIFVwZGF0ZQoJZm9yIG5ldyBjcG9vbF9lbnRyeSB0eXBlLgoJKGZpbmRfY29uc3RhbnQxKTogVXBkYXRlIGZvciBuZXcgY3Bvb2xfZW50cnkgdHlwZS4KCShmaW5kX2NvbnN0YW50Mik6IExpa2V3aXNlLgoJKGZpbmRfdXRmOF9jb25zdGFudCk6IFVzZSBmaW5kX3RyZWVfY29uc3RhbnQuCgkoZmluZF9jbGFzc19vcl9zdHJpbmdfY29uc3RhbnQpOiBSZW1vdmUgdW5uZWNlc3NhcnkgY2FzdCB0byBqd29yZC4KCVVwZGF0ZSBmb3IgbmV3IGNwb29sX2VudHJ5IHR5cGUuCgkoY291bnRfY29uc3RhbnRfcG9vbF9ieXRlcyk6IFVwZGF0ZSBmb3IgbmV3IGNwb29sX2VudHJ5IHR5cGUuCgkod3JpdGVfY29uc3RhbnRfcG9vbCk6IExpa2V3aXNlLgoJKGFsbG9jX25hbWVfY29uc3RhbnQpOiBVc2UgZmluZF90cmVlX2NvbnN0YW50LgoJKGJ1aWxkX2NvbnN0YW50c19jb25zdHJ1Y3Rvcik6IFVwZGF0ZSBmb3IgbmV3IGNwb29sX2VudHJ5IHR5cGUuCgoJMjAwMi0wOC0wOCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogcGFyc2UueSAobWFya19wYXJzZXJfY3R4dCk6IERlbGV0ZS4KCShnb2FsKTogRG9uJ3QgdXNlIGdnY19hZGRfcm9vdC4KCShjcmVhdGVfbmV3X3BhcnNlcl9jb250ZXh0KTogVXNlIEdDIHRvIGFsbG9jYXRlIHN0cnVjdCBwYXJzZXJfY3R4dC4KCShqYXZhX3BvcF9wYXJzZXJfY29udGV4dCk6IExldCBHQyBmcmVlIHBhcnNlcl9jdHh0LgoJKGphdmFfcGFyc2VyX2NvbnRleHRfcmVzdW1lKTogTGlrZXdpc2UuCgkqIHBhcnNlLmggKHN0cnVjdCBwYXJzZXJfY3R4dCk6IFVzZSBnZW5ndHlwZSB0byBtYXJrLgoJKGN0eHApOiBMaWtld2lzZS4KCShjdHhwX2Zvcl9nZW5lcmF0aW9uKTogTGlrZXdpc2UuCgkqIGxleC5oIChzdHJ1Y3QgamF2YV9sY19zKTogTWFyayBmb3IgZ2VuZ3R5cGUuCgkoamF2YV9sZXhlcik6IFJlYXJyYW5nZSBmb3IgZ2VuZ3R5cGUuCgkqIGNvbmZpZy1sYW5nLmluIChndGZpbGVzKTogQWRkIGxleC5oLCBwYXJzZS5oLgoKMjAwMy0wMS0wOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogQWxsIEZpbGVzOiBSZW1vdmUgUEFSQU1TIG1hY3JvLgoKCSogZXhwci5jLCBnamF2YWguYywgamF2YW9wLmgsIGpjZi1kdW1wLmMsIGpjZi1pby5jLCBqY2YtcmVhZGVyLmMsCglqY2Ytd3JpdGUuYywgamNmLmgsIGp2LXNjYW4uYzogRG9uJ3QgcmVseSBvbiB0aGUgYERFRlVOJywgYEFORCcgb3IKCWBfX1NURENfXycgbWFjcm9zLgoKCSoganYtc2Nhbi5jLCBwYXJzZS55OiBSZW1vdmUgVlBBUkFNUywgVkFfT1BFTiwgVkFfRklYRURBUkcgYW5kCglWQV9DTE9TRS4KCjIwMDMtMDEtMDkgIENocmlzdGlhbiBDb3JuZWxzc2VuICA8Y2Nvcm5AY3MudHUtYmVybGluLmRlPgoKCSogTWFrZS1sYW5nLmluIChqYXZhLmluc3RhbGwtY29tbW9uLCBqYXZhLnVuaW5zdGFsbCwKCWphdmEuaW5zdGFsbC1pbmZvLCBqYXZhLmluc3RhbGwtbWFuKTogUHJlcGVuZCAkKERFU1RESVIpCgl0byBkZXN0aW5hdGlvbiBwYXRocyBpbiBhbGwgKHVuKWluc3RhbGxhdGlvbiBjb21tYW5kcy4KCShqYXZhLmluc3RhbGwtY29tbW9uKTogUmV3cml0ZSAkKExOKSBjb21tYW5kIHRvIHN1cHBvcnQKCURFU1RESVIgd2l0aCAibG4iIGFzIHdlbGwgYXMgd2l0aCAibG4gLXMiLgoKMjAwMy0wMS0wOCAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBqYXZhLXRyZWUuaDogUHJvdGVjdCBhZ2FpbnN0IG11bHRpcGxlIGluY2x1c2lvbi4KCjIwMDMtMDEtMDcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKGFkZF9hc3N1bWVfY29tcGlsZWQpOiBEb24ndCBhZGp1c3QgcGFyZW50IGlmIHdlJ3JlCglhbHJlYWR5IGF0IHRoZSByb290IG9mIHRyZWUuCgoyMDAzLTAxLTA1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsYW5nLmMgKGR1bXBfY29tcG91bmRfZXhwcik6IFByb3RvdHlwZS4KCjIwMDMtMDEtMDMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglGaXggZm9yIFBSIGphdmEvODcxMjoKCSogZXhwci5jIChidWlsZF9pbnN0YW5jZW9mKTogQnVpbGQgYW4gTkVfRVhQUiwgbm90IGEgQ09ORF9FWFBSLAoJd2hlbiBzaW1wbHkgY2hlY2tpbmcgYWdhaW5zdCBgbnVsbCcuCgoyMDAzLTAxLTAzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBnY2oudGV4aSAoU3RhbmRhcmQgUHJvcGVydGllcyk6IERvY3VtZW50IGh0dHAucHJveHlIb3N0IGFuZAoJaHR0cC5wcm94eVBvcnQuCgoJKiBnY2oudGV4aSAoR05VIENsYXNzcGF0aCBQcm9wZXJ0aWVzKTogRG9jdW1lbnQgbmV3IHByb3BlcnRpZXMuCgoyMDAzLTAxLTAyICBTdGV2ZW4gQm9zc2NoZXIgPHMuYm9zc2NoZXJAc3R1ZGVudC50dWRlbGZ0Lm5sPgoKCSogamF2YS9qY2YtcmVhZGVyLmMsIGphdmEvanZnZW5tYWluLmMsIGphdmEva2V5d29yZC5ncGVyZiwKCWphdmEvbGFuZy1vcHRpb25zLmgsIGphdmEvbWFuZ2xlLmMsIGphdmEvbWFuZ2xlX25hbWUuYywKCWphdmEveHJlZi5jLCBqYXZhL3pleHRyYWN0LmMsamF2YS96aXBmaWxlLmg6IEZpeCBjb3B5cmlnaHQgeWVhcnMuCgoyMDAzLTAxLTAxICBTdGV2ZW4gQm9zc2NoZXIgIDxzLmJvc3NjaGVyQHN0dWRlbnQudHVkZWxmdC5ubD4KCgkqIE1ha2UtbGFuZy5pbiwgYm9laG0uYywgYnVmZmVyLmMsCgkgIGJ1ZmZlci5oLCBidWlsdGlucy5jLCBjbGFzcy5jLAoJICBjb25maWctbGFuZy5pbiwgY29uc3RhbnRzLmMsCgkgIGNvbnZlcnQuaCwgZGVjbC5jLCBleGNlcHQuYywKCSAgZXhwci5jLCBqYXZhLWV4Y2VwdC5oLAoJICBqYXZhLXRyZWUuaCwgamF2YW9wLmRlZiwKCSAgamNmLXBhcnNlLmMsIGpjZi13cml0ZS5jLAoJICBqdi1zY2FuLmMsIGp2Z2VubWFpbi5jLAoJICBqdnNwZWMuYywga2V5d29yZC5ncGVyZiwKCSAga2V5d29yZC5oLCBsYW5nLW9wdGlvbnMuaCwKCSAgbGFuZy1zcGVjcy5oLCBsYW5nLmMsIGxleC5jLAoJICBsZXguaCwgbWFuZ2xlLmMsIG1hbmdsZV9uYW1lLmMsCgkgIHBhcnNlLXNjYW4ueSwgcGFyc2UuaCwgcGFyc2UueSwKCSAgdHlwZWNrLmMsIHZlcmlmeS5jLCB4cmVmLmMsCgkgIHhyZWYuaDogUmVwbGFjZSAiR05VIENDIiB3aXRoCgkgICJHQ0MiIGluIHRoZSBjb3B5cmlnaHQgaGVhZGVyLgoKCSogY2hlY2staW5pdC5jLCBnamF2YWguYywgamF2YW9wLmgsCgkgIGpjZi1kZXBlbmQuYywgamNmLWR1bXAuYywgamNmLWlvLmMsCgkgIGpjZi1wYXRoLmMsIGpjZi1yZWFkZXIuYywgamNmLmgsCgkgIHpleHRyYWN0LmMsIHppcGZpbGUuaDogVGhlc2UgZmlsZXMgYXJlCgkgICJwYXJ0IG9mIEdDQyIuIEFsc28gc2F5ICJHQ0MiIG5vdCAiR05VIENDIi4KCjIwMDItMTItMzAgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogTWFrZS1sYW5nLmluOiBQcm90ZWN0IGFnYWluc3QgdGV4aTJwb2QvcG9kMm1hbiBmYWlsaW5nLgoKMjAwMi0xMi0yOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBnY2oudGV4aTogVXNlIEBjb3B5aW5nLgoKMjAwMi0xMi0yNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdqYXZhaC5jIChwcmludF9uYW1lX2Zvcl9zdHViX29yX2puaSk6IEFkanVzdCBjYWxsIHRvCglwcmludF9jeHhfY2xhc3NuYW1lLgoJKHByaW50X2N4eF9jbGFzc25hbWUpOiBBZGQgYWRkX3Njb3BlIHBhcmFtZXRlci4KCShwcmludF9jbGFzc19kZWNscyk6IERvIG5vdCBlbWl0IGEgc2VtaWNvbG9uIGFmdGVyIHRoZSBleHRlcm4KCSJKYXZhIiBibG9jay4KCShwcm9jZXNzX2ZpbGUpOiBBZGp1c3QgY2FsbHMgdG8gcHJpbnRfY3h4X2NsYXNzbmFtZS4KCjIwMDItMTItMjMgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogZ2NqLnRleGk6IEluY2x1ZGUgQ292ZXIgVGV4dHMgaW4gbWFuIHBhZ2UuCgoyMDAyLTEyLTIzICBKZWZmIFN0dXJtICA8anN0dXJtQG9uZS1wb2ludC5jb20+CgoJKiBjbGFzcy5jIChidWlsZF9zdGF0aWNfZmllbGRfcmVmKTogQ2hlY2sgRklFTERfRklOQUwuCgoJKiBjb25zdGFudHMuYyAoYWxsb2NfY2xhc3NfY29uc3RhbnQpOiBVc2UgVFlQRV9DUE9PTF9EQVRBX1JFRgoJaW5zdGVhZCBvZiBjdXJyZW50X2NvbnN0YW50X3Bvb2xfZGF0YV9yZWYuCgkqIGphdmEtdHJlZS5oIChjdXJyZW50X2NvbnN0YW50X3Bvb2xfZGF0YV9yZWYpOiBVbmRlZmluZS4KCShKVElfQ1VSUkVOVF9DT05TVEFOVF9QT09MX0RBVEFfUkVGKTogUmVtb3ZlLgoJKiBqY2YtcGFyc2UuYyAoaW5pdF9vdXRnb2luZ19jcG9vbCk6IERvbid0IGluaXRpYWxpemUKCWN1cnJlbnRfY29uc3RhbnRfcG9vbF9kYXRhX3JlZi4KCgkqIGV4Y2VwdC5jIChwcmVwYXJlX2VoX3RhYmxlX3R5cGUgKTogVXNlIERFQ0xfTkFNRSBvZiBjbGFzcyB0eXBlLAoJbm90IGJ1aWxkX2ludGVybmFsX2NsYXNzX25hbWUuCgoJKiBwYXJzZS55IChwYXRjaF9pbmNvbXBsZXRlX2NsYXNzX3JlZik6IEFsd2F5cyBlbWl0IGBjbGFzcyQnIG1ldGhvZC4KCVVzZSBpdCB3aGVuIGNsYXNzIHJlZiBpc24ndCBjZXJ0YWluIHRvIGJlIGNvbXBpbGVkLgoKMjAwMi0xMi0yMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBnY2oudGV4aTogSW5jbHVkZSBnY2MtY29tbW9uLnRleGkuCgkqIE1ha2UtbGFuZy5pbiAoJChzcmNkaXIpL2phdmEvZ2NqLmluZm8sIGphdmEvZ2NqLmR2aSk6IERlcGVuZCBvbgoJJChzcmNkaXIpL2RvYy9pbmNsdWRlL2djYy1jb21tb24udGV4aS4KCjIwMDItMTItMjIgIEFudGhvbnkgR3JlZW4gIDxncmVlbkByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKExpbWl0YXRpb25zKTogQWRkIG5vdGUgYWJvdXQgb3JnLnhtbC5zYXggYW5kCglvcmcudzNjLmRvbS4KCjIwMDItMTItMjAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucykgW1NXSVRDSF9FWFBSXTogSGFuZGxlIGNhc2UKCXdoZXJlIG1pbmltdW0gY2FzZSB2YWx1ZSBpcyBJbnRlZ2VyLk1JTl9WQUxVRS4KCUZpeGVzIFBSIGphdmEvODk1NS4KCjIwMDItMTItMTggIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfaW52b2tlKTogRm9yY2UgZXZhbHVhdGlvbiBvcmRlciB3aGVuIGBjaGVjaycgaXMKCXNldC4gIEZvciBQUiBsaWJnY2ovODk0NS4KCjIwMDItMTItMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnY2oudGV4aTogQ2hhbmdlIHZlcnNpb24gbnVtYmVyIHRvIDMuNC4KCjIwMDItMTItMDUgIFJhbmppdCBNYXRoZXcgPHJtYXRoZXdAaG90bWFpbC5jb20+CglBbmRyZXcgSGFsZXkgPGFwaEByZWRoYXQuY29tPgoKCSogcGFyc2UueSAoc291cmNlX2VuZF9qYXZhX21ldGhvZCk6IFJlbW92ZSBjdXN0b20gZW5jb2Rpbmcgb2YgbGluZQoJbnVtYmVycyBmb3IgYSBmdW5jdGlvbiBkZWNsIGJlZm9yZSBwYXNzaW5nIGl0IHRvIHRoZSBiYWNrIGVuZC4KCjIwMDItMTItMDMgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAobWFrZV9jbGFzc19kYXRhKTogTmV3IGZpZWxkLCAiY2hhaW4iLgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCjIwMDItMTItMDIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglGb3IgUFIgamF2YS84NzQwOgoJKiBwYXJzZS55IChkb19yZXNvbHZlX2NsYXNzKTogSGFuZGxlIHF1YWxpZmllZCBuYW1lIHZpYQoJcmVjdXJzaW9uLgoKMjAwMi0xMS0zMCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGJvZWhtLmMsIGJ1ZmZlci5jLCBidWlsdGlucy5jLCBjaGVjay1pbml0LmMsIGNsYXNzLmMsCgljb25zdGFudHMuYywgZGVjbC5jLCBleGNlcHQuYywgZXhwci5jLCBnamF2YWguYywgamNmLWRlcGVuZC5jLAoJamNmLWR1bXAuYywgamNmLWlvLmMsIGpjZi1wYXJzZS5jLCBqY2YtcGF0aC5jLCBqY2Ytd3JpdGUuYywKCWp2LXNjYW4uYywganZnZW5tYWluLmMsIGp2c3BlYy5jLCBsYW5nLmMsIG1hbmdsZS5jLCBtYW5nbGVfbmFtZS5jLAoJcGFyc2Utc2Nhbi55LCBwYXJzZS55LCB0eXBlY2suYywgdmVyaWZ5LmMsIHhyZWYuYywgemV4dHJhY3QuYzoKCUluY2x1ZGUgY29yZXR5cGVzLmggYW5kIHRtLmguCgkqIE1ha2UtbGFuZy5pbjogVXBkYXRlIGRlcGVuZGVuY2llcy4KCjIwMDItMTEtMjcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IFVzZSBgTEwnIG9uIDY0LWJpdCBjb25zdGFudC4KCjIwMDItMTEtMjUgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogamNmLXJlYWRlci5jOiBEb24ndCBleHBhbmQgSkNGX3JlYWR1NCBpbnNpZGUgdGhlCglleHBhbnNpb24gb2YgSkNGX1NLSVAuCgoyMDAyLTExLTI1ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIGpjZi1yZWFkZXIuYzogRG9uJ3QgZXhwYW5kIEpDRl9yZWFkdTQgaW5zaWRlIHRoZQoJZXhwYW5zaW9uIG9mIEpDRl9TS0lQLgoKMjAwMi0xMS0yMiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfYmlub3ApOiBDYXN0IHJpZ2h0IGhhbmQgc2lkZSBvZiBzaGlmdCBleHByZXNzaW9uCgl0byBgaW50Jy4gIEZpeGVzIFBSIGphdmEvODY3Ni4KCjIwMDItMTEtMjIgIFJhbmppdCBNYXRoZXcgPHJtYXRoZXdAaG90bWFpbC5jb20+CgkgICAgQW5kcmV3IEhhbGV5IDxhcGhAcmVkaGF0LmNvbT4KCgkqIGdjYy9qYXZhL2pjZi13cml0ZS5jICh3cml0ZV9jbGFzc2ZpbGUpOiBSZW1vdmUgdGFyZ2V0CgljbGFzcyBmaWxlLCBpZiBpdCBleGlzdHMsIGJlZm9yZSByZW5hbWluZyB0aGUgdGVtcG9yYXJ5CgljbGFzcyBmaWxlIHRvIGl0LgoKMjAwMi0xMS0xOSAgSmFzb24gVGhvcnBlICA8dGhvcnBlakB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGp2c3BlYy5jIChsYW5nX3NwZWNpZmljX3NwZWNfZnVuY3Rpb25zKTogTmV3LgoKMjAwMi0xMS0xOCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCUZpeCBmb3IgUFIgamF2YS83OTEyOgoJKiBleHByLmMgKGNhbl93aWRlbl9yZWZlcmVuY2VfdG8pOiBBbGxvdyBjYXN0IG9mIGFycmF5IHRvCglDbG9uZWFibGUgb3IgU2VyaWFsaXphYmxlLgoJKiBqYXZhLXRyZWUuaCAoamF2YV9sYW5nX2Nsb25lYWJsZV9pZGVudGlmaWVyX25vZGUpOiBEZWNsYXJlLgoJKGphdmFfaW9fc2VyaWFsaXphYmxlX2lkZW50aWZpZXJfbm9kZSk6IExpa2V3aXNlLgoJKiBwYXJzZS55IChqYXZhX2xhbmdfY2xvbmVhYmxlLCBqYXZhX2lvX3NlcmlhbGl6YWJsZSk6IFJlbW92ZWQuCgkodmFsaWRfcmVmX2Fzc2lnbmNvbnZfY2FzdF9wKTogVXNlIG5ldyBpZGVudGlmaWVyIG5vZGVzLgoJKiBsZXguYyAoamF2YV9pbml0X2xleCk6IERvbid0IGluaXRpYWxpemUgamF2YV9sYW5nX2Nsb25lYWJsZSBhbmQKCWphdmFfaW9fc2VyaWFsaXphYmxlLgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJbml0aWFsaXplCglqYXZhX2xhbmdfY2xvbmVhYmxlX2lkZW50aWZpZXJfbm9kZSBhbmQKCWphdmFfaW9fc2VyaWFsaXphYmxlX2lkZW50aWZpZXJfbm9kZS4KCShqYXZhX2xhbmdfY2xvbmVhYmxlX2lkZW50aWZpZXJfbm9kZSk6IE5ldyBnbG9iYWwuCgkoamF2YV9pb19zZXJpYWxpemFibGVfaWRlbnRpZmllcl9ub2RlKTogTGlrZXdpc2UuCgoyMDAyLTExLTE0ICBKZW5zLU1pY2hhZWwgSG9mZm1hbm4gIDxqZW5zbWhAZ214LmRlPgoKCSogYnVmZmVyLmM6IFJlbW92ZSB1bm5lY2Vzc2FyeSBjYXN0cy4KCSogY2hlY2staW5pdC5jOiBMaWtld2lzZS4KCSogY2xhc3MuYzogTGlrZXdpc2UuCgkqIGNvbnN0YW50cy5jOiBMaWtld2lzZS4KCSogZGVjbC5jOiBMaWtld2lzZS4KCSogZXhjZXB0LmM6IExpa2V3aXNlLgoJKiBnamF2YWguYzogTGlrZXdpc2UuCgkqIGpjZi1pby5jOiBMaWtld2lzZS4KCSogamNmLXBhcnNlLmM6IExpa2V3aXNlLgoJKiBqY2YtcGF0aC5jOiBMaWtld2lzZS4KCSoganZzcGVjLmM6IExpa2V3aXNlLgoJKiBsYW5nLmM6IExpa2V3aXNlLgoJKiBsZXguYzogTGlrZXdpc2UuCgkqIHZlcmlmeS5jOiBMaWtld2lzZS4KCjIwMDItMTEtMDYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGdqYXZhaC5jIChwcmludF9zdHViX29yX2puaSk6IEluY2x1ZGUgSk5JRVhQT1JUIGFuZCBKTklDQUxMIGluCglhIEpOSSBoZWFkZXIuCgoyMDAyLTExLTA1ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJRml4IGZvciBQUiBqYXZhLzYzODguCgkqIGxleC5oIChKQVZBX0lOVEVHUkFMX1JBTkdFX0VSUk9SKTogV3JhcCBpbiBkby4uLndoaWxlLgoJKiBqYXZhLXRyZWUuaCAoZW51bSBqYXZhX3RyZWVfaW5kZXgpOiBOZXcgdmFsdWVzCglKVElfREVDSU1BTF9JTlRfTUFYX05PREUsIEpUSV9ERUNJTUFMX0xPTkdfTUFYX05PREUuCgkoZGVjaW1hbF9pbnRfbWF4LCBkZWNpbWFsX2xvbmdfbWF4KTogTmV3IGRlZmluZXMuCgkqIGxleC5jICh5eWxleCk6IFJld3JvdGUgcmFuZ2UgY2hlY2tpbmcuICBTaWduIGV4dGVuZCBsaXRlcmFscy4KCShlcnJvcl9pZl9udW1lcmljX292ZXJmbG93KTogUmV3cm90ZSByYW5nZSBjaGVja2luZy4KCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBkZWNpbWFsX2ludF9tYXgsCglkZWNpbWFsX2xvbmdfbWF4LgoKMjAwMi0xMS0wMiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogamF2YS10cmVlLmg6IE1vdmUgSlZfU1RBVEVfRVJST1IgYmVmb3JlIEpWX1NUQVRFX0RPTkUuCgoJKiBjbGFzcy5jIChtYWtlX21ldGhvZF92YWx1ZSk6IFB1dCBjbGFzcyBuYW1lLCBub3Qgc2lnbmF0dXJlLCBpbnRvCglgdGhyb3dzJyBmaWVsZC4gIEZvciBQUiBqYXZhLzg0MTUuCgoyMDAyLTEwLTI0ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBnY2oudGV4aSAoSW52b2tpbmcgZ2lqKTogRG9jdW1lbnQgLS1zaG93dmVyc2lvbi4KCShTdGFuZGFyZCBQcm9wZXJ0aWVzKTogamF2YS5saWJyYXJ5LnBhdGggbm93IHNldC4KCjIwMDItMTAtMjMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGdqYXZhaC5jIChkZWNvZGVfc2lnbmF0dXJlX3BpZWNlKTogSW4gSk5JIG1vZGUsIHByaW50Cglgam9iamVjdEFycmF5JyB3aGVuIGFycmF5IGRlcHRoIGlzIG5vbnplcm8uCglGaXhlcyBQUiBqYXZhLzgyOTYuCgoyMDAyLTEwLTE1ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX2ludm9rZSk6IENhbGwgZm9yY2VfZXZhbHVhdGlvbl9vcmRlciBvbiBhIHN0YXRpYwoJYXJnIGxpc3QuCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogQ2FsbCBmb3JjZV9ldmFsdWF0aW9uX29yZGVyCglvbiBhIGFyZyBsaXN0IHRoYXQgaXMgcGFydCBvZiBhIFF1YWxpZmllZCBFeHByZXNzaW9uIE5hbWUuCgoJKiBsYW5nLmMgKGR1bXBfY29tcG91bmRfZXhwcik6IE5ldy4KCShqYXZhX2R1bXBfdHJlZSk6IE5ldy4KCjIwMDItMTAtMjAgIFJhbmppdCBNYXRoZXcgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJKiBnY2oudGV4aTogQWRkZWQgaXRlbSBkZXNjcmliaW5nIHRoZSBHQ0ogcnVudGltZSBwcm9wZXJ0eQoJImdudS5nY2oucHJvZ25hbWUiLgoKMjAwMi0xMC0xNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGpjZi1wYXJzZS5jIChnZXRfY29uc3RhbnQpOiBGaXggdHlwZSB3YXJuaW5nLgoKMjAwMi0xMC0xNSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBqYXZhLXRyZWUuaCAoamF2YV9pbmxpbmluZ19tZXJnZV9zdGF0aWNfaW5pdGlhbGl6ZXJzKTogRGVjbGFyZS4KCShqYXZhX2lubGluaW5nX21hcF9zdGF0aWNfaW5pdGlhbGl6ZXJzKTogRGVjbGFyZS4KCjIwMDItMTAtMTQgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogdHJlZS1pbmxpbmUuYyAocmVtYXBfYmxvY2spOiBBbGwgbG9jYWwgY2xhc3MgaW5pdGlhbGl6YXRpb24KCWZsYWdzIGdvIGluIHRoZSBvdXRlcm1vc3Qgc2NvcGUuCgkoZXhwYW5kX2NhbGxfaW5saW5lKTogQ2FsbCBqYXZhX2lubGluaW5nX21hcF9zdGF0aWNfaW5pdGlhbGl6ZXJzLgoJKGV4cGFuZF9jYWxsX2lubGluZSk6IENhbGwgamF2YV9pbmxpbmluZ19tZXJnZV9zdGF0aWNfaW5pdGlhbGl6ZXJzLgoJKiBqYXZhL2xhbmcuYyAobWVyZ2VfaW5pdF90ZXN0X2luaXRpYWxpemF0aW9uKTogTmV3LgoJKGphdmFfaW5saW5pbmdfbWVyZ2Vfc3RhdGljX2luaXRpYWxpemVycyk6IE5ldy4KCShpbmxpbmVfaW5pdF90ZXN0X2luaXRpYWxpemF0aW9uKTogTmV3LgoJKGphdmFfaW5saW5pbmdfbWFwX3N0YXRpY19pbml0aWFsaXplcnMpOiBOZXcuCgoyMDAyLTEwLTExICBNYXJrIFdpZWxhYXJkICA8bWFya0BrbG9tcC5vcmc+CgoJKiBnY2oudGV4aSAoQ29tcGF0aWJpbGl0eSk6IEFkZCBMaW1pdGF0aW9ucyBhbmQgRXh0ZW5zaW9ucyBzZWN0aW9uLgoKMjAwMi0xMC0xMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY2xhc3MuYyAoSkFWQV9UUkVFSEFTSEhBU0hfSCk6IFVzZSBodGFiX2hhc2hfcG9pbnRlci4KCjIwMDItMTAtMDkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHBhcnNlLnkgKG1lcmdlX3N0cmluZ19jc3RlKTogQWRkIHBhcmVudGhlc2VzIGFyb3VuZCAmIHdpdGhpbiB8LgoKMjAwMi0xMC0wOCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogcGFyc2UueSAodmFyaWFibGVfZGVjbGFyYXRvcl9pZCk6IFNpbXBsaWZ5IGVycm9yIHBhdGggZm9yCglhcnJheSBkZWNsYXJhdG9yIGVycm9yLiAgRm9yIFBSIGphdmEvODAwMy4KCjIwMDItMTAtMDggIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnamF2YWguYywgamNmLWR1bXAuYywganYtc2Nhbi5jOiBHbG9iYWxseSByZXBsYWNlIEdDQ0JVR1VSTCB3aXRoCglidWdfcmVwb3J0X3VybC4KCjIwMDItMTAtMDggIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogcGFyc2UueSAoYXR0YWNoX2luaXRfdGVzdF9pbml0aWFsaXphdGlvbl9mbGFncyk6IENoZWNrIGZvcgoJZXJyb3JfbWFya19ub2RlLgoKMjAwMi0xMC0wNyAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChtZXJnZV9zdHJpbmdfY3N0ZSk6IEZpeCBidWcgaW4gc3RyaW5nIGNvbmNhdGVuYXRpb24uCgoyMDAyLTEwLTAzICBNaWNoYWVsIEtvY2ggIDxrb25xdWVyb3JAZ214LmRlPgoKCSogZ2NqLnRleGkgKFN0YW5kYXJkIHByb3BlcnRpZXMpOgoJQ2hhbmdlIGRlZmF1bHQgb2YgamF2YS5hd3QudG9vbGtpdCB0byBnbnUuYXd0Lmd0ay5HdGtUb29sa2l0LgoKMjAwMi0xMC0wMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzY2MjcKCSogbGFuZy5jIChqYXZhX2luaXQpOiBJZiBzdG9yaW5nIHRoZSB2Yml0IGluIGZ1bmN0aW9uCglwb2ludGVycywgZW5zdXJlIHRoYXQgZm9yY2VfYWxpZ25fZnVuY3Rpb25zX2xvZyBpcyBhdGxlYXN0CglvbmUgdG8gYWlkIGNvbXBhdGFiaWxpdHkgd2l0aCBnKysgdnRhYmxlcy4KCjIwMDItMTAtMDEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBqY2YtZHVtcC5jIChwcmludF9jb25zdGFudCwgY2FzZSBDT05TVEFOVF9mbG9hdCk6IERvbid0IGZhbGwKCWZvdWwgb2YgdHlwZS1iYXNlZCBhbGlhc2luZy4KCjIwMDItMDktMzAgIEFudGhvbnkgR3JlZW4gIDxncmVlbkByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKEludm9raW5nIGp2LXNjYW4pOiBGaXggdGV4aW5mby4KCjIwMDItMDktMjggIEFudGhvbnkgR3JlZW4gIDxncmVlbkByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKEludm9raW5nIGp2LXNjYW4pOiBBZGQgLS1uby1hc3NlcnQgZG9jdW1lbnRhdGlvbi4KCShDb2RlIEdlbmVyYXRpb24pOiBBZGQgLWZuby1hc3NlcnQgZG9jdW1lbnRhdGlvbi4KCSoganYtc2Nhbi5jIChmbGFnX2Fzc2VydCk6IE5ldyBnbG9iYWwuCgkob3B0aW9ucyk6IEFkZCBhc3NlcnQgb3B0aW9uLgoJKGhlbHApOiBBZGQgLS1uby1hc3NlcnQgZG9jdW1lbnRhdGlvbi4KCSogcGFyc2Utc2Nhbi55IChmbGFnX2Fzc2VydCk6IE5ldyBnbG9iYWwuCgkqIGxhbmcuYyAobGFuZ19mX29wdGlvbnMpOiBBZGQgLWZhc3NlcnQvLWZuby1hc3NlcnQgc3VwcG9ydC4KCShmbGFnX2Fzc2VydCk6IE5ldyBnbG9iYWwuCgkqIGphdmEtdHJlZS5oIChmbGFnX2Fzc2VydCk6IE5ldyBnbG9iYWwuCgkqIGxleC5jIChqYXZhX2xleCk6IE9iZXkgZmxhZ19hc3NlcnQuCgkqIGp2c3BlYy5jIChqdmdlbm1haW5fc3BlYyk6IFN0cmlwIC1mYXNzZXJ0Ly1mbm8tYXNzZXJ0IHdoZW4KCWNhbGxpbmcgY2MxLgoKMjAwMi0wOS0yNiAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGJ1aWxkX2phdmFfYXJyYXlfbGVuZ3RoX2FjY2Vzcyk6IENoZWNrIGZvciBudWxsIHBvaW50ZXIuCgkqIGV4cHIuYyAoZXhwYW5kX2phdmFfYXJyYXlsb2FkKTogTGlrZXdpc2UuCgoyMDAyLTA5LTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogamNmLXBhcnNlLmMgKGdldF9jb25zdGFudCk6IERlY29kZSBmcm9tIElFRUUgbm8gbWF0dGVyCgl3aGF0IHRoZSB0YXJnZXQgZm9ybWF0LgoKMjAwMi0wOS0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIENoYW5nZUxvZzogRm9sbG93IHNwZWxsaW5nIGNvbnZlbnRpb25zLgoJKiBjbGFzcy5jOiBMaWtld2lzZS4KCSogZGVjbC5jOiBMaWtld2lzZS4KCSogZXhwci5jOiBMaWtld2lzZS4KCSogZ2phdmFoLmM6IExpa2V3aXNlLgoJKiBqYXZhLXRyZWUuaDogTGlrZXdpc2UuCgkqIGpjZi1kdW1wLmM6IExpa2V3aXNlLgoJKiBqY2YtcGFyc2UuYzogTGlrZXdpc2UuCgkqIGp2c3BlYy5jOiBMaWtld2lzZS4KCSogbGFuZy5jOiBMaWtld2lzZS4KCSogbWFuZ2xlLmM6IExpa2V3aXNlLgoJKiBwYXJzZS55OiBMaWtld2lzZS4KCjIwMDItMDktMTcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGxleC5jIChqYXZhX3JlYWRfdW5pY29kZV9jb2xsYXBzaW5nX3Rlcm1pbmF0b3JzKTogSGFuZGxlIGNhc2UKCXdoZXJlIFxyIGFwcGVhcnMgYXQgRU9GLiAgRml4ZXMgUFIgamF2YS83OTUwLgoKMjAwMi0wOS0xNiAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIGp2c3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCgoyMDAyLTA5LTE2ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGphdmEtdHJlZS5oICh1bmlvbiBsYW5nX3RyZWVfbm9kZSk6IEFkZCBjaGFpbl9uZXh0IG9wdGlvbi4KCjIwMDItMDktMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBqY2YtcGFyc2UuYyAoZ2V0X2NvbnN0YW50KTogUnVudGltZSBjaGVjayBmb3IgSUVFRSBmb3JtYXQ7Cgl1c2UgbmV3IHJlYWwuaCBpbnRlcmZhY2UuCgkqIGpjZi13cml0ZS5jIChmaW5kX2NvbnN0YW50X2luZGV4KTogVXNlIG5ldyByZWFsLmggaW50ZXJmYWNlLgoJKiBsZXguYyAoSVNfWkVSTyk6IFVzZSBSRUFMX1ZBTFVFU19FUVVBTC4KCjIwMDItMDktMTUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBsYW5nLmM6IEZvbGxvdyBzcGVsbGluZyBjb252ZW50aW9ucy4KCjIwMDItMDktMTEgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogcGFyc2UueSAoZm9sZF9jb25zdGFudF9mb3JfaW5pdCk6ICBJZiBhIFZBUl9ERUNMLCBjb252ZXJ0IG51bWVyaWNhbAoJY29uc3RhbnQgdG8gdGhlIHR5cGUgb2YgdGhlIGZpZWxkLgoJKGphdmFfY29tcGxldGVfdHJlZSk6ICBSZW1vdmUgbm93LXJlZHVuZGFudCBjb2RlLgoKCSogcGFyc2UueSAoZm9sZF9jb25zdGFudF9mb3JfaW5pdCk6ICAnbnVsbCcgaXMgbm90IGEgY29uc3RhbnQgZXhwci4KCjIwMDItMDktMDMgIEplc3NlIFJvc2Vuc3RvY2sgIDxqbXJAdWdjcy5jYWx0ZWNoLmVkdT4KCglGb3IgUFIgamF2YS81Nzk0OgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpIFtPUENPREVfanNyXTogT25seSBwdXNoIHRoZQoJcmV0dXJuIGxhYmVsIGlmIGEgcmV0IGluc3RydWN0aW9uIGZvciB0aGUganNyIGhhcyBiZWVuIHJlYWNoZWQuCgoyMDAyLTA5LTA5ICBSYW5qaXQgTWF0aGV3ICA8cm1hdGhld0Bob3RtYWlsLmNvbT4KCgkqIHBhcnNlLnkgKERJUl9TRVBBUkFUT1IpOiBEb24ndCBkZWZpbmUuCgkoY2hlY2tfY2xhc3NfaW50ZXJmYWNlX2NyZWF0aW9uKTogVXNlIElTX0RJUl9TRVBBUkFUT1IuCgoyMDAyLTA4LTI4ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6IEFsbG93IGV4Y2VwdGlvbiBoYW5kbGVyCglpbnNpZGUgY29kZSB0aGF0IGlzIGJlaW5nIHByb3RlY3RlZCwgYnV0IGdlbmVyYXRlIGEgd2FybmluZy4KCSogZXhjZXB0LmMgKGxpbmtfaGFuZGxlcik6IEluaXRpYWxpemUgYGV4cGFuZGVkJyBpbiBuZXcgZWhfcmFuZ2UuCgkoYmluZGluZ19kZXB0aCwgaXNfY2xhc3NfbGV2ZWwsIGN1cnJlbnRfcGMpOiBEZWNsYXJlIGV4dGVybi4KCjIwMDItMDktMDEgIE1hcmsgV2llbGFhcmQgPG1hcmtAa2xvbXAub3JnPgoKCSogZ2NqLnRleGk6IEFkZCBjaGFwdGVyIGFib3V0IHN5c3RlbSBwcm9wZXJ0aWVzLgoJRml4ZWQgc29tZSB0eXBvcy4KCjIwMDItMDgtMjYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHRyeV9idWlsdGluX2Fzc2lnbmNvbnYpOiBBbGxvdyBuYXJyb3dpbmcgcHJpbWl0aXZlCgljb252ZXJzaW9uIGlmIFJIU19UWVBFIGlzIGJ5dGUsIHNob3J0LCBvciBjaGFyLgoKMjAwMi0wOC0yMiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKEludm9raW5nIGdpaik6IERvY3VtZW50IC1jcCBhbmQgLWNsYXNzcGF0aC4KCjIwMDItMDgtMjEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS9qY2YtcGF0aC5vKTogVXNlICQoZGF0YWRpciksIG5vdAoJJChwcmVmaXgpL3NoYXJlLiAgRm9yIFBSIGxpYmdjai83NjMzLgoKCUZvciBQUiBqYXZhLzYwMDUgYW5kIFBSIGphdmEvNzYxMToKCSogbGFuZy5jIChMQU5HX0hPT0tTX0NBTl9VU0VfQklURklFTERTX1ApOiBOZXcgZGVmaW5lLgoJKGphdmFfY2FuX3VzZV9iaXRfZmllbGRzX3ApOiBOZXcgZnVuY3Rpb24uCgoyMDAyLTA4LTE2ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBnY2oudGV4aSAoQ2xhc3MgSW5pdGlhbGl6YXRpb24pOiBNZW50aW9uIGNsYXNzIGluaXRpYWxpemF0aW9uIG9mCglhcnJheXMuCgoyMDAyLTA3LTMwICBBbmRyZXcgSGFsZXkgIDxhcGhAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEtdHJlZS1pbmxpbmUubyk6IE5ldy4KCShKQVZBX09CSlMpOiBBZGQgamF2YS10cmVlLWlubGluZS5vLgoJKiBwYXJzZS55IChzb3VyY2VfZW5kX2phdmFfbWV0aG9kKTogQ2FsbCBqYXZhX29wdGltaXplX2lubGluZS4KCShqYXZhX2V4cGFuZF9tZXRob2RfYm9kaWVzKTogU2F2ZSBtZXRob2QncyB0cmVlIGluCglERUNMX1NBVkVEX1RSRUUuCgkoYWRkX3N0bXRfdG9fY29tcG91bmQpOiBLZWVwIHRyYWNrIG9mIHRoZSBudW1iZXIgb2Ygc3RhdG1lbnRzLgoJKiBsYW5nLmMgKGphdmFfaW5pdCk6IEVuYWJsZSBmbGFnX2lubGluZV90cmVlcy4KCShqYXZhX3Bvc3Rfb3B0aW9ucyk6IElmIGZsYWdfaW5saW5lX2Z1bmN0aW9ucyBpcyBvbiwgZW5hYmxlCglmbGFnX2lubGluZV90cmVlcyBpbnN0cmVhZC4KCShkZWNsX2NvbnN0YW50X3ZhbHVlKTogTmV3LgoJKGphdmFfdHJlZV9pbmxpbmluZ193YWxrX3N1YnRyZWVzKTogTmV3LgoJKiBqYXZhLXRyZWUuaCAoREVDTF9OVU1fU1RNVFMpOiBOZXcgbWFjcm8uCgkoamF2YV9vcHRpbWl6ZV9pbmxpbmUpOiBEZWNsYXJlLgoJKiBleHByLmMgKGphdmFfZXhwYW5kX2V4cHIpOiBBbGxvdyBhIEJMT0NLIHRvIHJldHVybiBhIHZhbHVlLgoJSGFuZGxlIGEgTEFCRUxfRVhQUi4KCSogZGVjbC5jIChidWlsZF9yZXN1bHRfZGVjbCk6IElmIHdlIGFscmVhZHkgaGF2ZSBhIERFQ0xfUkVTVUxUCglkb24ndCBtYWtlIGFub3RoZXIuCgkoZHVtcF9mdW5jdGlvbik6IE5ldy4KCShqYXZhX29wdGltaXplX2lubGluZSk6IE5ldy4KCShkdW1wX2Z1bmN0aW9uKTogTmV3LgoKMjAwMi0wOC0xMyAgSmVzc2UgUm9zZW5zdG9jayAgPGptckBmdWxjcnVtbWljcm8uY29tPgoKCUZvciBQUiBqYXZhLzc0ODM6CgkqIHBhcnNlLnkgKGJ1aWxkX2Fzc2VydGlvbik6IEludmVydCByZXR1cm4gZnJvbQoJZGVzaXJlZEFzc2VydGlvblN0YXR1cy4KCjIwMDItMDgtMDggIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCgkqIGpjZi13cml0ZS5jIChnZXRfYWNjZXNzX2ZsYWdzKTogUmV0dXJuIGNvcnJlY3QgYWNjZXNzIGZsYWdzIGZvcgoJcHJpdmF0ZSBhbmQgcHJvdGVjdGVkIGlubmVyIGNsYXNzZXMuCgoyMDAyLTA4LTA4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogamF2YS9NYWtlLWxhbmcuaW4gKGphdmEubW9zdGx5Y2xlYW4pOiBSZW1vdmUgY292ZXJhZ2UgZmlsZXMuCgoyMDAyLTA4LTA1ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQHJlZGhhdC5jb20+CgoJKiBtYW5nbGVfbmFtZS5jOiBEb24ndCBpbmNsdWRlIG9ic3RhY2suaCB0d2ljZS4KCSogeHJlZi5jOiBEb24ndCBpbmNsdWRlIG9ic3RhY2suaC4KCjIwMDItMDgtMDQgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmM6IChwZXJtYW5lbnRfb2JzdGFjayk6IERlbGV0ZSBkZWNsYXJhdGlvbi4KCSogY29uc3RhbnRzLmM6IChwZXJtYW5lbnRfb2JzdGFjayk6IERlbGV0ZSBkZWNsYXJhdGlvbi4KCSogZXhjZXB0LmM6IChwZXJtYW5lbnRfb2JzdGFjayk6IERlbGV0ZSBkZWNsYXJhdGlvbi4KCSogZXhwci5jOiAocGVybWFuZW50X29ic3RhY2spOiBEZWxldGUgZGVjbGFyYXRpb24uCgkqIGpjZi1wYXJzZS5jOiAocGVybWFuZW50X29ic3RhY2spOiBEZWxldGUgZGVjbGFyYXRpb24uCgkoc2F2ZWFibGVfb2JzdGFjayk6IERlbGV0ZSBkZWNsYXJhdGlvbi4KCSogcGFyc2UuaDogKHBlcm1hbmVudF9vYnN0YWNrKTogRGVsZXRlIGRlY2xhcmF0aW9uLgoJKiB0eXBlY2suYzogKHBlcm1hbmVudF9vYnN0YWNrKTogRGVsZXRlIGRlY2xhcmF0aW9uLgoKMjAwMi0wOC0wNCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBnY2oudGV4aSAodmVyc2lvbi1nY2MpOiBJbmNyZWFzZSB0byAzLjMuCgoyMDAyLTA3LTIyICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBsZXguYyAoamF2YV9sZXgpOiBDaGVjayBmb3IgYGUnIG9yIGBFJyBhZnRlciAwLgoKMjAwMi0wNy0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGxhbmcuYyAoamF2YV91bnNhZmVfZm9yX3JlZXZhbCk6IE5ldy4KCShMQU5HX0hPT0tTX1VOU0FGRV9GT1JfUkVFVkFMKTogTmV3LgoKMjAwMi0wNy0yMSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogamNmLXBhdGguYyAoR0VUX0VOVl9QQVRIX0xJU1QpOiBSZW1vdmUuCgkoamNmX3BhdGhfaW5pdCk6IFVzZSBHRVRfRU5WSVJPTk1FTlQuCgoyMDAyLTA3LTEwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCSAgICBaYWNrIFdlaW5iZXJnIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBidWlsdGlucy5jIChpbml0aWFsaXplX2J1aWx0aW5zKTogUmVtb3ZlIGRlZmluZXMgdGhhdAoJaGFuZGxlZCBDL0MrKyBzcGVjaWZpYyBqdW5rIGhlcmVieSByZW1vdmVkIGZyb20gYnVpbHRpbnMuZGVmLgoKMjAwMi0wNy0wNyAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogbGFuZy5jIChqYXZhX3Bvc3Rfb3B0aW9ucyk6IFVwZGF0ZSBwcm90b3R5cGUuCgoyMDAyLTA3LTA1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGluaXRpYWxpemVfYnVpbHRpbnMpOiBJZ25vcmUgdGhlIGFkZGl0aW9uYWwKCXBhcmFtZXRlciB0byBERUZfQlVJTFRJTi4gIEhhbmRsZSBtb3JlIEMvQysrIHNwZWNpZmljIGp1bmsgaW4KCXRoZSBidWlsdGlucy5kZWYgZmlsZS4KCjIwMDItMDctMDEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglGb3IgUFIgbGliZ2NqLzcwNzM6CgkqIHBhcnNlLnkgKHBhdGNoX2luY29tcGxldGVfY2xhc3NfcmVmKTogSGFuZGxlIFZPSURfVFlQRQoJc3BlY2lhbGx5LgoKMjAwMi0wNy0wMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBqYXZhL2RlY2wuYyAoYnVpbHRpbl9mdW5jdGlvbik6IEFjY2VwdCBhZGRpdGlvbmFsIHBhcmFtZXRlci4KCShqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogUGFzcyBhbiBhZGRpdGlvbmFsIE5VTExfVFJFRQoJYXJndW1lbnQgdG8gYnVpbHRpbl9mdW5jdGlvbi4KCjIwMDItMDYtMjkgIFQuSi4gTWF0aGVyICA8dGptYXRoZXJAbWF4bWluZC5jb20+CgoJKiBnY2oudGV4aTogRml4ZWQgZ2NqIGludm9jYXRpb24gZXhhbXBsZSBzbyB0aGF0IGl0IGNvbXBpbGVzLgoKMjAwMi0wNi0yNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGV4LmMgKGphdmFfaW5pdF9sZXgpOiBBdm9pZCBpbmNvcnJlY3QgaGFyZGNvZGVkIGNvbnN0YW50IDExLgoJKiBwYXJzZS55IChtYXJrX3BhcnNlcl9jdHh0KTogTGlrZXdpc2UuCgkoY2hlY2tfbW9kaWZpZXJzLCBkZWNsYXJlX2xvY2FsX3ZhcmlhYmxlcyk6IEF2b2lkIGluY29ycmVjdAoJaGFyZGNvZGVkIGNvbnN0YW50IDEwLgoKCSogbGV4LmMgKGphdmFfcmVhZF9jaGFyKTogQXZvaWQgImNvbXBhcmlzb24gaXMgYWx3YXlzIHRydWUiCgl3YXJuaW5nLgoKMjAwMi0wNi0yNSAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGV4cHIuYyAoSlNSKTogQXZvaWQgdW5kZWZpbmVkIG9wZXJhdGlvbiBvbiBQQy4KCjIwMDItMDYtMjEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRlY2wuYyAoY2xlYXJfYmluZGluZ19sZXZlbCk6IENvbnN0LWlmeS4KCjIwMDItMDYtMTMgIEFraW0gRGVtYWlsbGUgIDxha2ltQGVwaXRhLmZyPgoKCSogcGFyc2UueSAoY2xhc3NfZGVjbGFyYXRpb24sIGludGVyZmFjZV9kZWNsYXJhdGlvbik6IE1ha2Ugc3VyZQoJYWxsIHRoZWlyIHJ1bGVzIGhhdmUgYW4gYWN0aW9uLCBpbiBvcmRlciB0byBhdm9pZCBtZWFuaW5nbGVzcyBgJCQKCT0gJDEnIGFuZCB0aGVpciB0eXBlIGNsYXNoZXMuCgoyMDAyLTA2LTExICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfY2xhc3NmaWxlKTogVXNlIEZJRUxEX1NZTlRIRVRJQy4KCSogcGFyc2Utc2Nhbi55IChzdGF0ZW1lbnRfd2l0aG91dF90cmFpbGluZ19zdWJzdGF0ZW1lbnQpOiBBZGRlZAoJYXNzZXJ0X3N0YXRlbWVudC4KCShhc3NlcnRfc3RhdGVtZW50KTogTmV3IHJ1bGUuCgkqIGphdmEtdHJlZS5oIChzdHJ1Y3QgbGFuZ190eXBlKSBbYXNzZXJ0aW9uc106IE5ldyBmaWVsZC4KCShUWVBFX1VTRVNfQVNTRVJUSU9OUyk6IE5ldyBtYWNyby4KCShDTEFTU19VU0VTX0FTU0VSVElPTlMpOiBMaWtld2lzZS4KCShGSUVMRF9TWU5USEVUSUMpOiBOZXcgZGVmaW5lLgoJKiBsZXguYyAoamF2YV9sdmFsOyk6IEFkZGVkIEFTU0VSVF9USy4KCSogcGFyc2UueSAoQVNTRVJUX1RLKTogQWRkZWQuCgkoc3RhdGVtZW50X3dpdGhvdXRfdHJhaWxpbmdfc3Vic3RhdGVtZW50KTogQWRkZWQgYXNzZXJ0X3N0YXRlbWVudC4KCShhc3NlcnRfc3RhdGVtZW50KTogTmV3IHJ1bGUuCgkoYnVpbGRfYXNzZXJ0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKG1heWJlX2dlbmVyYXRlX3ByZV9leHBhbmRfY2xpbml0KTogQ3JlYXRlIGFuZCBpbml0aWFsaXplCgkkYXNzZXJ0aW9uc0Rpc2FibGVkLgoJKGxvb2t1cF9wYWNrYWdlX3R5cGUpOiBSZW1vdmVkIGRlY2wuCgkqIGtleXdvcmQuaDogUmVidWlsdC4KCSoga2V5d29yZC5ncGVyZiAoYXNzZXJ0KTogTmV3IHRva2VuLgoKMjAwMi0wNi0xMCAgQWtpbSBEZW1haWxsZSAgPGFraW1AZXBpdGEuZnI+CgoJKiBwYXJzZS55IChpbnRlcmZhY2VfdHlwZV9saXN0LCBjbGFzc19tZW1iZXJfZGVjbGFyYXRpb24pCgkodW5hcnlfZXhwcmVzc2lvbl9ub3RfcGx1c19taW51cyk6IFJlbW92ZSBkdXBsaWNhdGUgJXR5cGUuCglXaGl0ZXNwYWNlIGNoYW5nZXMuCgoyMDAyLTA2LTA5ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEvbGFuZy5vKTogVXNlIExBTkdIT09LU19ERUZfSC4KCgkqIHBhcnNlLnkgKG1ldGhvZF9oZWFkZXIpOiBHaXZlIGVycm9yIG1lc3NhZ2UgaW4gYWxsIGNhc2VzLgoJRml4ZXMgUFIgamF2YS82ODY1LgoKMjAwMi0wNi0xMCAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUB3YWl0YWtpLm90YWdvLmFjLm56PgoKCURvbid0IHVzZSBSVEwgaW5saW5pbmcuIEZpeCBmb3IgUFIgamF2YS82ODIwLgoJKiBsYW5nLmMgKExBTkdfSE9PS1NfUE9TVF9PUFRJT05TKTogRGVmaW5lLgoJKGZsYWdfcmVhbGx5X2lubGluZSk6IE5ldy4KCShqYXZhX2RlY29kZV9vcHRpb24pOiBTZXQgZmxhZ19yZWFsbHlfaW5saW5lIGlmIC1maW5saW5lLWZ1bmN0aW9ucwoJaXMgc2Vlbi4KCShqYXZhX3Bvc3Rfb3B0aW9ucyk6IE5ldyBmdW5jdGlvbi4gVHVybiBvZmYgaW5saW5pbmcgdW5sZXNzCglmbGFnX3JlYWxseV9pbmxpbmUgaXMgc2V0LgoKMjAwMi0wNi0xMCAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUB3YWl0YWtpLm90YWdvLmFjLm56PgoKCSogZ2phdmFoLmMgKHRocm93YWJsZV9wKTogQWNjZXB0IGFyZ3VtZW50IGFzIGVpdGhlciBhIGNsYXNzbmFtZSBvcgoJc2lnbmF0dXJlIGZyYWdtZW50LiBDcmVhdGUgbnVsbC10ZXJtaW5hdGVkIGNsYXNzbmFtZSBzdHJpbmcgZm9yIHN1cGVyCgl3aGVuIGNhbGxpbmcgaXRzZWxmIHJlY3Vyc2l2ZWx5LgoJKGRlY29kZV9zaWduYXR1cmVfcGllY2UpOiBTa2lwIGZpcnN0IGNoYXJhY3RlciBmcm9tIGNsYXNzIG5hbWUKCXNpZ25hdHVyZSB3aGVuIGNhbGxpbmcgdGhyb3dhYmxlX3AuCgoyMDAyLTA2LTA4ICBILkouIEx1ICAoaGpsQGdudS5vcmcpCgoJKiBqY2YtcGF0aC5jIChqY2ZfcGF0aF9pbml0KTogQWxsb2NhdGUgMSBtb3JlIGJ5dGUgZm9yIHN0cmluZy4KCjIwMDItMDYtMDQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGpjZi13cml0ZS5jIChwZXJmb3JtX3JlbG9jYXRpb25zKTogT3B0bWl6ZSBhIGdvdG8gdG8gYSBnb3RvLgoKMjAwMi0wNi0wNCAgTWljaGFlbCBLb2NoICA8a29ucXVlcm9yQGdteC5kZT4KCgkqIGdjai50ZXhpIChJbnB1dCBPcHRpb25zKTogRml4ZWQgdHlwby4KCjIwMDItMDYtMDQgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBqYXZhLXRyZWUuaCwgY2xhc3MuYywgZXhwci5jLCBqY2YtcGFyc2UuYywgcGFyc2UueSwKCXR5cGVjay5jLCB2ZXJpZnkuYzogUmVtb3ZlIGFsbCAjaWYgSkFWQV9VU0VfSEFORExFUyBibG9ja3MsCglhbGwgbWVudGlvbiBvZiBDTEFTU19UT19IQU5ETEVfVFlQRSBvciBIQU5ETEVfVE9fQ0xBU1NfVFlQRSwKCWFuZCBhbGwgbm93LXBvaW50bGVzcyBsb2NhbCB2YXJpYWJsZXMuICBSZW5hbWUgb3RoZXIgbG9jYWwKCXZhcmlhYmxlcyB0byByZWZsZWN0IHRoZWlyIG5vdCBiZWluZyBoYW5kbGVzLgoKCSogamF2YS10cmVlLmgsIGpjZi1kdW1wLmMsIGpjZi1pby5jOiBSZW1vdmUgYWxsCgkjaWYgSkNGX1VTRV9TVERJTyBibG9ja3MuCgoJKiBwYXJzZS55OiBBZGQgbWlzc2luZyBzZW1pY29sb24gYXQgZW5kIG9mIHJ1bGUuCgoyMDAyLTA2LTAzICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQHJlZGhhdC5jb20+CgoJKiBjaGVjay1pbml0LmMgKGF0dGFjaF9pbml0aWFsaXplZF9zdGF0aWNfY2xhc3MpOiBEZWxldGUsIHVudXNlZC4KCSogcGFyc2UueTogVXNlIGh0YWJfdCBpbnN0ZWFkIG9mIHN0cnVjdCBoYXNodGFibGUsIHVwZGF0ZQoJYWxsIHVzZXMuCgkqIGphdmEtdHJlZS5oOiBJbmNsdWRlIGhhc2h0YWIuaCBpbnN0ZWFkIG9mIGhhc2guaC4KCShzdHJ1Y3QgbGFuZ19kZWNsX2Z1bmMpOiBVc2UgaHRhYl90LCBzZXQgdXAgZm9yIGdlbmd0eXBlLgoJKHN0cnVjdCBpbml0X3Rlc3RfaGFzaF9lbnRyeSk6IERlbGV0ZS4KCShzdHJ1Y3QgdHJlZXRyZWVoYXNoX2VudHJ5KTogTmV3LgoJKGphdmFfdHJlZXRyZWVoYXNoX2ZpbmQpOiBOZXcKCShqYXZhX3RyZWV0cmVlaGFzaF9uZXcpOiBOZXcgcHJvdG90eXBlLgoJKGphdmFfdHJlZXRyZWVoYXNoX2NyZWF0ZSk6IE5ldyBwcm90b3R5cGUuCgkoamF2YV9tYXJrX3RyZWUpOiBEZWxldGUgcHJvdG90eXBlLgoJKGphdmFfaGFzaF9oYXNoX3RyZWVfbm9kZSk6IERlbGV0ZSBwcm90b3R5cGUuCgkoamF2YV9oYXNoX2NvbXBhcmVfdHJlZV9ub2RlKTogRGVsZXRlIHByb3RvdHlwZS4KCShhdHRhY2hfaW5pdGlhbGl6ZWRfc3RhdGljX2NsYXNzKTogRGVsZXRlIHByb3RvdHlwZS4KCSogZXhwci5jIChidWlsZF9jbGFzc19pbml0KTogVXBkYXRlIHRvIHVzZSBqYXZhX3RyZWV0cmVlaGFzaAoJZnVuY3Rpb25zLgoJKGphdmFfZXhwYW5kX2V4cHIpOiBVcGRhdGUgdG8gdXNlIGh0YWJfdC4KCShlbWl0X2luaXRfdGVzdF9pbml0aWFsaXphdGlvbik6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGphdmFfbWFya190cmVlKTogRGVsZXRlLgoJKiBjbGFzcy5jIChpbml0X3Rlc3RfaGFzaF9uZXdmdW5jKTogRGVsZXRlLgoJKGphdmFfaGFzaF9oYXNoX3RyZWVfbm9kZSk6IERlbGV0ZS4KCShqYXZhX2hhc2hfY29tcGFyZV90cmVlX25vZGUpOiBEZWxldGUuCgkoYWRkX21ldGhvZF8xKTogVXBkYXRlIHRvIHVzZSBqYXZhX3RyZWV0cmVlaGFzaCBmdW5jdGlvbnMuCgkoSkFWQV9UUkVFSEFTSEhBU0hfSCk6IE5ldyBtYWNyby4KCShqYXZhX3RyZWV0cmVlaGFzaF9oYXNoKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfdHJlZXRyZWVoYXNoX2NvbXBhcmUpOiBOZXcgZnVuY3Rpb24uCgkoamF2YV90cmVldHJlZWhhc2hfZmluZCk6IE5ldyBmdW5jdGlvbi4KCShqYXZhX3RyZWV0cmVlaGFzaF9uZXcpOiBOZXcgZnVuY3Rpb24uCgkoamF2YV90cmVldHJlZWhhc2hfY3JlYXRlKTogTmV3IGZ1bmN0aW9uLgoJKiBNYWtlLWxhbmcuaW4gKEpBVkFfVFJFRV9IKTogUmVwbGFjZSBoYXNoLmggYnkgSEFTSFRBQl9ILgoKCSogTWFrZS1sYW5nLmluIChqYXZhL3BhcnNlLm8pOiBEZXBlbmQgb24gZGVidWcuaC4KCSogamF2YS10cmVlLmggKHN0cnVjdCBsYW5nX2lkZW50aWZpZXIpOiBVc2UgZ2VuZ3R5cGUuCgkodW5pb24gbGFuZ190cmVlX25vZGUpOiBOZXcuCgkoc3RydWN0IGxhbmdfZGVjbF9mdW5jKTogVXNlIGdlbmd0eXBlLgoJKHN0cnVjdCBsYW5nX2RlY2xfdmFyKTogTGlrZXdpc2UuCgkoc3RydWN0IGxhbmdfZGVjbCk6IExpa2V3aXNlLgoJKiBwYXJzZS55OiBJbmNsdWRlIGRlYnVnLmguCgkqIGxhbmcuYyAoTEFOR19IT09LU19NQVJLX1RSRUUpOiBEZWxldGUuCgoJKiBsYW5nLmMgKHN0cnVjdCBsYW5ndWFnZV9mdW5jdGlvbik6IE5ldyBkdW1teSBzdHJ1Y3R1cmUuCgoJKiBqYXZhLXRyZWUuaCAoTUFZQkVfQ1JFQVRFX1ZBUl9MQU5HX0RFQ0xfU1BFQ0lGSUMpOiBTZXQKCWRlc2NyaW1pbmF0b3IgZm9yIERFQ0xfTEFOR19TUEVDSUZJQy4KCShzdHJ1Y3QgbGFuZ19kZWNsX2Z1bmMpOiBSZW5hbWUgZnJvbSBzdHJ1Y3QgbGFuZ19kZWNsLgoJKGVudW0gbGFuZ19kZWNsX2Rlc2MpOiBOZXcuCgkoc3RydWN0IGxhbmdfZGVjbCk6IE1ha2UgaXQgYSB1bmlvbi4gIFVwZGF0ZSBhbGwgdGhlIGFjY2Vzc29yIG1hY3Jvcy4KCShzdHJ1Y3QgbGFuZ190eXBlKTogVXNlIGdlbmd0eXBlLgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kXzEpOiBTZXQgZGVzY3JpbWluYXRvciBmb3IgREVDTF9MQU5HX1NQRUNJRklDLgoJKiBkZWNsLmMgKGphdmFfZHVwX2xhbmdfc3BlY2lmaWNfZGVjbCk6IEFsbCBsYW5nX2RlY2wgc3RydWN0dXJlcwoJYXJlIG5vdyB0aGUgc2FtZSBzaXplLgoJKGxhbmdfbWFya190cmVlKTogVXNlIGdlbmd0eXBlIHRvIG1hcmsgVFlQRV9MQU5HX1NQRUNJRklDOwoJdXNlIGRpc2NyaW1pbmF0b3IgdG8gbWFyayBERUNMX0xBTkdfU1BFQ0lGSUMuCgoJKiBNYWtlLWxhbmcuaW4gKGd0LWphdmEtYnVpbHRpbnMuaCk6IE5ldyBydWxlLgoJKGphdmEvYnVpbHRpbnMubyk6IEFkZCBkZXBlbmRlbmN5IG9uIGd0LTxmaWxlbmFtZT4uaC4KCSogYnVpbHRpbnMuYzogVXNlIGdlbmd0eXBlIGZvciByb290cy4KCSh1bmlvbiBzdHJpbmdfb3JfdHJlZSk6IFVzZSBnZW5ndHlwZS4KCShzdHJ1Y3QgYnVpbHRpbl9yZWNvcmQpOiBVc2UgZ2VuZ3R5cGUuCgkqIGNvbmZpZy1sYW5nLmluIChndGZpbGVzKTogQWRkIGJ1aWx0aW5zLmMuCgoJKiBNYWtlLWxhbmcuaW4gKGd0LWphdmEtY2xhc3MuaCwgZ3QtamF2YS1jb25zdGFudHMuaCwKCWd0LWphdmEtZGVjbC5oLCBndC1qYXZhLWV4cHIuaCwgZ3QtamF2YS1qY2YtcGFyc2UuaCwKCWd0LWphdmEtamNmLXdyaXRlLmgsIGd0LWphdmEtbGFuZy5oLCBndC1qYXZhLW1hbmdsZS5oLAoJZ3QtamF2YS1wYXJzZS5oLCBndHlwZS1qYXZhLmgpOiBBZGQgcnVsZXMgdG8gZ2VuZXJhdGUuCgkocGFyc2Uubyk6IEFkZCBkZXBlbmRlbmN5IG9uIGd0LWphdmEtcGFyc2UuaCwgZ3QtamF2YS5oLgoJKGNsYXNzLm8pOiBBZGQgZGVwZW5kZW5jeSBvbiBndC0qLmguCgkoY29uc3RhbnRzLm8pOiBMaWtld2lzZS4KCShkZWNsLm8pOiBMaWtld2lzZS4KCShleHByLm8pOiBMaWtld2lzZS4KCShqY2YtcGFyc2Uubyk6IExpa2V3aXNlLgoJKGpjZi13cml0ZS5vKTogTGlrZXdpc2UuCgkobGFuZy5vKTogTGlrZXdpc2UuCgkqIGNvbmZpZy1sYW5nLmluIChndGZpbGVzKTogTmV3LgoJKiBjbGFzcy5jOiBSZXBsYWNlIHVzZXMgb2YgZ2djX2FkZF8qIHdpdGggR1RZIG1hcmtlcnMuICBJbmNsdWRlIGd0LSouaC4KCSogY29uc3RhbnRzLmM6IFJlcGxhY2UgdXNlcyBvZiBnZ2NfYWRkXyogd2l0aCBHVFkgbWFya2Vycy4KCUluY2x1ZGUgZ3QtKi5oLgoJKiBkZWNsLmM6IFJlcGxhY2UgdXNlcyBvZiBnZ2NfYWRkXyogd2l0aCBHVFkgbWFya2Vycy4gIEluY2x1ZGUgZ3QtKi5oLgoJKiBleHByLmM6IFJlcGxhY2UgdXNlcyBvZiBnZ2NfYWRkXyogd2l0aCBHVFkgbWFya2Vycy4gIEluY2x1ZGUgZ3QtKi5oLgoJKiBqYXZhLXRyZWUuaDogUmVwbGFjZSB1c2VzIG9mIGdnY19hZGRfKiB3aXRoIEdUWSBtYXJrZXJzLgoJKiBqY2YtcGFyc2UuYzogUmVwbGFjZSB1c2VzIG9mIGdnY19hZGRfKiB3aXRoIEdUWSBtYXJrZXJzLgoJSW5jbHVkZSBndC0qLmguCgkqIGpjZi13cml0ZS5jOiBSZXBsYWNlIHVzZXMgb2YgZ2djX2FkZF8qIHdpdGggR1RZIG1hcmtlcnMuCglJbmNsdWRlIGd0LSouaC4KCSogbGFuZy5jOiBSZXBsYWNlIHVzZXMgb2YgZ2djX2FkZF8qIHdpdGggR1RZIG1hcmtlcnMuICBJbmNsdWRlIGd0LSouaC4KCSogbWFuZ2xlLmM6IFJlcGxhY2UgdXNlcyBvZiBnZ2NfYWRkXyogd2l0aCBHVFkgbWFya2Vycy4gIEluY2x1ZGUKCWd0LSouaC4KCSogcGFyc2UueTogUmVwbGFjZSB1c2VzIG9mIGdnY19hZGRfKiB3aXRoIEdUWSBtYXJrZXJzLiAgSW5jbHVkZSBndC0qLmguCglJbmNsdWRlIGd0eXBlLWphdmEuaC4KCjIwMDItMDYtMDIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglGaXggZm9yIFBSIGphdmEvNTkxMzoKCSogcGFyc2UueSAocGF0Y2hfYmlub3ApOiBDYWxsIHBhdGNoX3N0cmluZyBvbiBvcDEuCgoyMDAyLTA2LTAyICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJRml4IGZvciBQUiBqYXZhLzEzNDMsIFBSIGphdmEvNjMzNjoKCSogcGFyc2UueSAobWFrZV9uZXN0ZWRfY2xhc3NfbmFtZSk6IFJlbW92ZSBleHRyYW5lb3VzIGBlbHNlJzsgZml4Cglmb3JtYXR0aW5nLiAgQ2hhbmdlZCByZXR1cm4gdHlwZS4KCShhbm9ueW1vdXNfY2xhc3NfY291bnRlcik6IE1vdmVkIHRvIHRvcCBvZiBmaWxlLgoJKG1heWJlX21ha2VfbmVzdGVkX2NsYXNzX25hbWUpOiBBcHBlbmQgbnVtYmVyIHRvIGNsYXNzIG5hbWUgZm9yCglmdW5jdGlvbi1sb2NhbCBjbGFzc2VzLgoKMjAwMi0wNS0yOCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYywgamNmLXBhcnNlLmMsIHBhcnNlLnksIHR5cGVjay5jOiBJbmNsdWRlIHJlYWwuaC4KCSogTWFrZS1sYW5nLmluOiBVcGRhdGUgZGVwZW5kZW5jeSBsaXN0cy4KCjIwMDItMDUtMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnamF2YWguYyAodGhyb3dhYmxlX3ApOiBEbyBub3QgZnJlZSB0aGUgbmFtZSBvZiB0aGUgY2xhc3MgYWZ0ZXIKCXBhc3NpbmcgaXQgdG8gZmluZF9jbGFzcy4KCSogamF2YS10cmVlLmggKENMQVNTX0JFSU5HX0xBSURPVVQpOiBSZW1vdmUgZHVwbGljYXRlIGRlZmluaXRpb24uCgkqIGpjZi1pby5jIChkaXJlbnQuaCk6IEluY2x1ZGUgaXQuCgkoZm5tYXRjaC5oKTogTGlrZXdpc2UuCgkoY29tcGFyZV9wYXRoKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfb3JfY2xhc3NfZmlsZSk6IExpa2V3aXNlLgoJKG1lbW9pemVkX2Rpcmxpc3RfZW50cnkpOiBOZXcgdHlwZS4KCShtZW1vaXplZF9kaXJsaXN0X2xvb2t1cF9lcSk6IE5ldyBmdW5jdGlvbi4KCShtZW1vaXplZF9kaXJsaXN0cyk6IE5ldyB2YXJpYWJsZS4KCShjYWNoaW5nX3N0YXQpOiBOZXcgZnVuY3Rpb24uCgkobWVtb2l6ZWRfY2xhc3NfbG9va3VwX2VxKTogTmV3IGZ1bmN0aW9uLgoJKG1lbW9pemVkX2NsYXNzX2xvb2t1cHMpOiBMaWtld2lzZS4KCShmaW5kX2NsYXNzKTogVXNlIG1lbW9pemVkX2NsYXNzX2xvb2t1cHMgYW5kIGNhY2hpbmdfc3RhdC4KCSogamNmLmggKEpDRl9VU0VfU0NBTkRJUik6IERlZmluZS4KCSogcGFyc2UueSAoamF2YV9leHBhbmRfY2xhc3Nlcyk6IFdyaXRlIHRoZSBjbGFzcyBmaWxlcyBpbiByZXZlcnNlCglvcmRlci4KCjIwMDItMDUtMTYgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogTWFrZS1sYW5nLmluOiBBbGxvdyBmb3IgUFdEQ01EIHRvIG92ZXJyaWRlIGhhcmRjb2RlZCBwd2QuCgoyMDAyLTA1LTEzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogamNmLXdyaXRlLmMgKHdyaXRlX2NsYXNzZmlsZSk6IFVubGluayB0aGUgdGVtcG9yYXJ5IGZpbGUgaWYgaXQKCWNhbm5vdCBiZSByZW5hbWVkLiAgVXNlIGNvbmNhdCB0byBidWlsZCB1cCB0aGUgbmFtZSBvZiB0aGUKCXRlbXBvcmFyeSBmaWxlLgoKMjAwMi0wNS0wOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGpjZi13cml0ZS5jICh3cml0ZV9jbGFzc2ZpbGUpOiBXcml0ZSB0aGUgZmlsZSB0byBhCgl0ZW1wb3JhcnkgZmlsZSBhbmQgdGhlbiByZW5hbWUgaXQuCgoyMDAyLTA1LTA3ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBnamF2YWguYyAodGhyb3dhYmxlX3ApOiBVc2UgeHN0cmR1cCwgbm90IHN0cmR1cC4KCglGaXggZm9yIFBSIGphdmEvMTIwMDoKCSogZ2phdmFoLmMgKHRocm93YWJsZV9wKTogTmV3IGZ1bmN0aW9uLgoJKGRlY29kZV9zaWduYXR1cmVfcGllY2UpOiBVc2UgaXQuICBBIGBXZWFrUmVmZXJlbmNlJyBpc24ndCB0aGUKCXNhbWUgYXMgYSBgandlYWsnLgoJSW5jbHVkZSBoYXNodGFiLmguCgkoZ2NqaF9zdHJlcSk6IE5ldyBmdW5jdGlvbi4KCjIwMDItMDUtMDcgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIHBhcnNlLnkgKGZpbmlzaF9mb3JfbG9vcCk6IEZpeCBpZiBzdGF0ZW1lbnQuCgoyMDAyLTA1LTA2ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJRml4IGZvciBQUiBqYXZhLzU5NDE6CgkqIHBhcnNlLnkgKGZpbmlzaF9mb3JfbG9vcCk6IFNldCBTVVBQUkVTU19VTlJFQUNIQUJMRV9FUlJPUiBmb3IKCWxvb3AgdXBkYXRlIGV4cHJlc3Npb24uCgkoamF2YV9jb21wbGV0ZV9saHMpOiBVc2UgU1VQUFJFU1NfVU5SRUFDSEFCTEVfRVJST1IuCgkqIGphdmEtdHJlZS5oIChTVVBQUkVTU19VTlJFQUNIQUJMRV9FUlJPUik6IE5ldyBtYWNyby4KCjIwMDItMDUtMDQgIE1hcmsgV2llbGFhcmQgIDxtYXJrQGtsb21wLm9yZz4KCglGb3IgUFIgamF2YS82NTE5OgoJKiBwYXJzZS55IChidWlsZF9zdHJpbmdfY29uY2F0ZW5hdGlvbik6IFJldHVybiBqdXN0IG9wMSBvbmx5IHdoZW4gb3AyCglpcyBudWxsIGFuZCBvcDEgaXMgYSBTVFJJTkdfQ1NULCBvdGhlcndpc2UgYWx3YXlzIGNvbnN0cnVjdCBhCglTdHJpbmdCdWZmZXIuCgoyMDAyLTA0LTI3ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJRm9yIFBSIGphdmEvNjM4MjoKCSogcGFyc2UueSAoc3RyaW5nX2NvbnZlcnRfaW50X2NzdCk6IE5ldyBmdW5jdGlvbi4KCShtZXJnZV9zdHJpbmdfY3N0ZSk6IFVzZSBpdC4KCjIwMDItMDQtMjUgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGphdmEtdHJlZS5oIChqYXZhX3BhcnNlX2ZpbGUpOiBVcGRhdGUuCgkoamF2YV9zZXRfeXlkZWJ1Zyk6IFJlbW92ZS4KCSogamNmLXBhcnNlLmMgKHl5ZGVidWcpOiBSZW1vdmUuCgkoamF2YV9zZXRfeXlkZWJ1Zyk6IERpZS4KCShqYXZhX3BhcnNlX2ZpbGUpOiBVcGRhdGUuCgkqIGxhbmcuYyAoTEFOR19IT09LU19TRVRfWVlERUJVRyk6IFJlbW92ZS4KCjIwMDItMDQtMjQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglGb3IgUFIgamF2YS82NDI1OgoJKiBwYXJzZS55IChxdWFsaWZ5X2FtYmlndW91c19uYW1lKSBbY2FzZSBDQUxMX0VYUFJdOiBBbHdheXMgY2hvb3NlCglFWFBSX1dGTF9RVUFMSUZJQ0FUSU9OIG9mIHF1YWxfd2ZsLgoKMjAwMi0wNC0yMyAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBleHByLmMgKFBSRV9KU1IpOiAgQ2FsbCBOT1RFX0xBQkVMIGZvciByZXR1cm4gYWRkcmVzcy4KCSogamF2YS10cmVlLmggKEJDT0RFX1JFVFVSTl9UQVJHRVQpOiAgUmVtb3ZlZCAtIG5ldmVyIHNldC4KCShCQ09ERV9UQVJHRVQpOiAgUmVtb3ZlIEJDT0RFX1JFVFVSTl9UQVJHRVQuCgoyMDAyLTA0LTIzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJRm9yIFBSIGphdmEvNjMxNDoKCSoganZzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogVXNlIC0tcmVzb3VyY2UsIG5vdCAtUi4gIEFsc28KCXJlY29nbml6ZSBgLWZjb21waWxlLXJlc291cmNlPScuCgkqIGdjai50ZXhpIChJbnZva2luZyBnY2opOiBVc2UgLS1yZXNvdXJjZSwgbm90IC1SLiAgRXhwYW5kZWQgdGV4dAoJYSBiaXQuCgoyMDAyLTA0LTIyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIGpjZi1wYXJzZS5jOiAoeXlwYXJzZSk6IERvbid0IHByZXBlbmQgIi4vIiB0byByZWxhdGl2ZQoJcGF0aHMuIEZpeGVzIFBSIGphdmEvMjc5MS4KCjIwMDItMDQtMTkgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogamNmLXdyaXRlLmMgKHB1c2hfbG9uZ19jb25zdCk6IGxvLCBoaTogTmV3IHZhcmlhYmxlcy4KCVVzZSByc2hpZnRfZG91YmxlIHRvIGV4dHJhY3QgdGhlIGhpZ2ggcGFydCBvZiBhIDY0LWJpdCBsb25nLgoJVXNlIFdPUkRfVE9fSU5UIHRvIGV4dHJhY3QgdGhlIGxvdyBwYXJ0LgoKCSogamNmLXBhcnNlLmMgKGdldF9jb25zdGFudCk6IENPTlNUQU5UX0ludGVnZXI6IFVzZSBhbiB1bnNpZ25lZAoJSE9TVF9XSURFX0lOVCBmb3IgbnVtLiAgVXNlIEpQT09MX1VJTlQgdG8gZ2V0IGl0LgoJQ09OU1RBTlRfRG91YmxlOiBVc2UgSlBPT0xfVUlOVCB0byBnZXQgYm90aCBoYWx2ZSBvZiBhIGRvdWJsZS4KCjIwMDItMDQtMTggIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIHR5cGVjay5jIChpbmNvbXBsZXRlX3R5cGVfZXJyb3IpOiBSZW1vdmUuCgoyMDAyLTA0LTE4ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQHdhaXRha2kub3RhZ28uYWMubno+CgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzX2RhdGEpOiBTZXQgREVDTF9BTElHTiBvbiBzdGF0aWMgY2xhc3MgZGF0YSwKCWZvciBoYXNoIHN5bmNocm9uaXphdGlvbi4KCSogZXhwci5jIChqYXZhX2V4cGFuZF9leHByKTogU2V0IERFQ0xfQUxJR04gb24gc3RhdGljIGFycmF5IG9iamVjdHMuCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IERvbid0IHNldCBUWVBFX0FMSUdOIGZvcgoJY2xhc3NfdHlwZV9ub2RlLgoKMjAwMi0wNC0xNiAgTWFyayBXaWVsYWFyZCAgPG1hcmtAa2xvbXAub3JnPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogT25seSB3cml0ZSBjb25zdF8wIGlmIG5vdAoJbmVnYXRpdmUgemVyby4KCjIwMDItMDQtMTYgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCglGaXggZm9yIFBSIGphdmEvNjI5NDoKCSogcGFyc2UuaCAoSU5ORVJfSU5URVJGQUNFX01PRElGSUVSUyk6IEFsbG93IEFDQ19QUklWQVRFIGZvciBpbm5lcgoJaW50ZXJmYWNlcy4KCjIwMDItMDQtMTUgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCglGaXggZm9yIFBSIGphdmEvNjA4NToKCSogcGFyc2UueSAocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBBbHdheXMgdXNlIGJ1aWxkX2FjY2Vzc190b190aGlzbgoJdG8gZ2V0IGVuY2xvc2luZyAidGhpcyIgYXJndW1lbnQgZm9yIGlubmVyLWNsYXNzIGNvbnN0cnVjdG9yCglpbnZvY2F0aW9uLiBQYXNzIGNvcnJlY3QgYXJndW1lbnRzIHRvIGJ1aWxkX2FjY2Vzc190b190aGlzbi4KCjIwMDItMDQtMTAgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGdjai50ZXhpIChJbnB1dCBPcHRpb25zKTogRml4IGV4dGRpcnMgcGF0Y2guCgoyMDAyLTA0LTEwICBBbnRob255IEdyZWVuICA8Z3JlZW5AcmVkaGF0LmNvbT4KCgkqIGpjZi1wYXRoLmMgKGpjZl9wYXRoX2luaXQpIDogQ2xlYW4gdXAgbG9jYWwgZXh0ZGlycyBkZWNsYXJhdGlvbi4KCjIwMDItMDQtMDkgIEFudGhvbnkgR3JlZW4gIDxncmVlbkByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKElucHV0IE9wdGlvbnMpOiBBZGQgLS1leHRkaXJzIGRvY3VtZW50YXRpb24uCgkqIGpjZi1kdW1wLmMgKE9QVF9leHRkaXJzKTogTmV3IG1hY3JvLgoJKG9wdGlvbnMpOiBBZGQgZXh0ZGlycyBvcHRpb24uCgkoaGVscCk6IERlc2NyaWJlIC0tZXh0ZGlycy4KCShtYWluKTogSGFuZGxlIE9QVF9leHRkaXJzLgoJKiBnamF2YWguYyAoT1BUX2V4dGRpcnMpOiBOZXcgbWFjcm8uCgkob3B0aW9ucyk6IEFkZCBleHRkaXJzIG9wdGlvbi4KCShoZWxwKTogRGVzY3JpYmUgLS1leHRkaXJzLgoJKG1haW4pOiBIYW5kbGUgT1BUX2V4dGRpcnMuCgkqIGpjZi1wYXRoLmMgKGpjZl9wYXRoX2luaXQpOiBBZGQgZXh0ZGlycyBzdXBwb3J0LgoJKGpjZl9wYXRoX2V4dGRpcnNfYXJnKTogTmV3IGZ1bmN0aW9uLgoJKGV4dGVuc2lvbnMpOiBOZXcgdmFyaWFibGUgdG8gaG9sZCBleHRlbnNpb25zIHBhdGggZW50cmllcy4KCSoganZzcGVjLmM6IFJlbW92ZSAtZmV4dGRpcnM9IHdoZW4gY29tcGlsaW5nIG1haW4oKS4KCSogbGFuZy5jIChqYXZhX2RlY29kZV9vcHRpb24pOiBIYW5kbGUgLWZleHRkaXJzPS4KCSogamNmLmggKGpjZl9wYXRoX2V4dGRpcnNfYXJnKTogRGVjbGFyZSBuZXcgZnVuY3Rpb24uCgkqIE1ha2UtbGFuZy5pbjogQ29tcGlsZSBqY2YtcGF0aCB3aXRoIHZlcnNpb24gaW5mbyBmb3IgdXNlIGluCglpZGVudGlmeWluZyB0aGUgYXBwcm9wcmlhdGUgbGliZ2NqLmphci4KCjIwMDItMDQtMDggIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglGb3IgUFIgbGliZ2NqLzUzMDM6CgkqIC5jdnNpZ25vcmU6IEFkZGVkIHJtaWMuMSBhbmQgcm1pcmVnaXN0cnkuMS4KCSogZ2NqLnRleGkgKFRvcCk6IExpbmsgdG8gbmV3IG5vZGVzLgoJKEludm9raW5nIHJtaWMpOiBOZXcgbm9kZS4KCShJbnZva2luZyBybWlyZWdpc3RyeSk6IExpa2V3aXNlLgoJKiBNYWtlLWxhbmcuaW4gKGphdmEuZ2VuZXJhdGVkLW1hbnBhZ2VzKTogQWRkZWQgcm1pYy4xIGFuZAoJcm1pcmVnaXN0cnkuMS4KCShqYXZhLm1haW50YWluZXItY2xlYW4pOiBMaWtld2lzZS4KCSgkKHNyY2RpcikvamF2YS9ybWljLjEpOiBOZXcgdGFyZ2V0LgoJKCQoc3JjZGlyKS9qYXZhL3JtaXJlZ2lzdHJ5LjEpOiBMaWtld2lzZS4KCShqYXZhLmluc3RhbGwtbWFuKTogSGFuZGxlIHJtaWMuMSBhbmQgcm1pcmVnaXN0cnkuMS4KCjIwMDItMDQtMDggIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCgkqIGdjai50ZXhpIChJbnZvY2F0aW9uKTogVXBkYXRlIEp2QXR0YWNoQ3VycmVudFRocmVhZCBkb2N1bWVudGF0aW9uLgoJQWRkIG5vdGUgYWJvdXQgaGFuZGxpbmcgdW5jYXVnaHQgZXhjZXB0aW9ucy4gQWRkIGFuIGV4Y2VwdGlvbiBoYW5kbGVyCgl0byBleGFtcGxlLgoKMjAwMi0wNC0wOCAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUB3YWl0YWtpLm90YWdvLmFjLm56PgoKCSogcGFyc2UueSAocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogQ2xlYXIgImZyb21fc3VwZXIiIGZsYWcKCWFmdGVyIHVzaW5nIGl0IHRvIHBhdGNoIENBTExfRVhQUi4KCjIwMDItMDQtMDggIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCgkqIGdjai50ZXhpIChJbnZvY2F0aW9uKTogRG9jdW1lbnQgQ05JIGludm9jYXRpb24gQVBJLgoKMjAwMi0wNC0wNCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogZXhwci5jICh0cnV0aHZhbHVlX2NvbnZlcnNpb24pOiBSZW5hbWUuICBVcGRhdGUuCgkoZXhwYW5kX2NvbXBhcmUpOiBVcGRhdGUuCgkqIGphdmEtdHJlZS5oIChqYXZhX3RydXRodmFsdWVfY29udmVyc2lvbik6IE5ldy4KCSogbGFuZy5jIChMQU5HX0hPT0tTX1RSVVRIVkFMVUVfQ09OVkVSU0lPTik6IFJlZGVmaW5lLgoKMjAwMi0wNC0wMSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogamF2YS10cmVlLmggKGphdmFfbWFya19hZGRyZXNzYWJsZSk6IE5ldy4KCSogbGFuZy5jIChMQU5HX0hPT0tTX01BUktfQUREUkVTU0FCTEUpOiBSZWRlZmluZS4KCSogdHlwZWNrLmMgKG1hcmtfYWRkcmVzc2FibGUpOiBSZW5hbWUsIHVwZGF0ZS4KCjIwMDItMDQtMDEgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9iaW5vcCk6IFVwZGF0ZS4KCSogamF2YS10cmVlLmggKGphdmFfc2lnbmVkX3R5cGUsIGphdmFfdW5zaWduZWRfdHlwZSwKCWphdmFfc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGUpOiBVcGRhdGUuCgkqIGxhbmcuYyAoTEFOR19IT09LU19TSUdORURfVFlQRSwgTEFOR19IT09LU19VTlNJR05FRF9UWVBFLAoJTEFOR19IT09LU19TSUdORURfT1JfVU5TSUdORURfVFlQRSk6IE5ldy4KCSogcGFyc2UueSAocGF0Y2hfYmlub3ApOiBVcGRhdGUuCgkqIHR5cGVjay5jIChzaWduZWRfb3JfdW5zaWduZWRfdHlwZSwgdW5zaWduZWRfdHlwZSwKCXNpZ25lZF90eXBlKTogVXBkYXRlLgoKMjAwMi0wMy0zMSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogbGFuZy5jIChMQU5HX0hPT0tTX1BSSU5UX0VSUk9SX0ZVTkNUSU9OKTogUmVkZWZpbmUuCgkoamF2YV9kdW1teV9wcmludCk6IFJlbW92ZS4KCShsYW5nX3ByaW50X2Vycm9yKTogUmVuYW1lLiAgRXhpdCBlYXJseSBpZiBpbmhpYml0aW5nIG91dHB1dC4KCShpbmhpYml0X2Vycm9yX3ByaW50aW5nX2Z1bmN0aW9uKTogTmV3LgoJKGphdmFfaW5pdCk6IERvbid0IHNldCBob29rLgoJKGxhbmdfaW5pdF9zb3VyY2UpOiBVc2UgbmV3IGJvb2xlYW4uCgoyMDAyLTAzLTI5ICBNYXJ0aW4gS2FobGVydCAgPG1hcnRpbi5rYWhsZXJ0QGluZmluZW9uLmNvbT4KCgkqIHBhcnNlLnkgKGRvX3Jlc29sdmVfY2xhc3MpOiBGaXggaW5maW5pdGUgcmVjdXJzaW9uLgoKMjAwMi0wMy0yOSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogcGFyc2UueSAoY2hlY2tfaW5uZXJfY2lyY3VsYXJfcmVmZXJlbmNlKTogSWdub3JlIGluY29tcGxldGUKCXR5cGVzLgoKMjAwMi0wMy0yOSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogTWFrZS1sYW5nLmluIChidWlsdGlucy5vKTogVXBkYXRlLgoJKiBib2VobS5jIChnZXRfYm9laG1fdHlwZV9kZXNjcmlwdG9yKTogVXBkYXRlLgoJKiBidWlsdGlucy5jOiBJbmNsdWRlIGxhbmdob29rcy5oLgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBVcGRhdGUuCgkqIGphdmEtdHJlZS5oIChqYXZhX3R5cGVfZm9yX21vZGUsIGphdmFfdHlwZV9mb3Jfc2l6ZSk6IE5ldy4KCSogbGFuZy5jIChMQU5HX0hPT0tTX1RZUEVfRk9SX01PREUsIExBTkdfSE9PS1NfVFlQRV9GT1JfU0lhWkUpOgoJUmVkZWZpbmUuCgkqIHR5cGVjay5jICh0eXBlX2Zvcl9tb2RlLCB0eXBlX2Zvcl9zaXplKTogVXBkYXRlLgoKMjAwMi0wMy0yOSAgTWFydGluIEthaGxlcnQgIDxtYXJ0aW4ua2FobGVydEBpbmZpbmVvbi5jb20+CgoJKiBsZXguYyAoamF2YV9uZXdfbGV4ZXIpOiBBbGlhcyAiNjQ2IiB0byBERUZBVUxUX0VOQ09ESU5HLgoKMjAwMi0wMy0yOCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZXhjZXB0LmMgKGV4cGFuZF9lbmRfamF2YV9oYW5kbGVyKTogSWYgdGhlIGhhbmRsZXIgdHlwZSBpcyBOVUxMLAoJdXNlIGphdmEubGFuZy5UaHJvd2FibGUuICBGaXhlcyBQUiBqYXZhLzU5ODYuCgoyMDAyLTAzLTI4ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCglGaXggZm9yIFBSIGphdmEvNDcxNToKCSogamNmLXBhcnNlLmMgKHBhcnNlX3NvdXJjZV9maWxlXzMpOiBOZXcgZnVuY3Rpb24uCgkocmVhZF9jbGFzcyk6IENhbGwgaXQuCgkoamF2YV9wYXJzZV9maWxlKTogTGlrZXdpc2UuCgoyMDAyLTAzLTI4ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBqYXZhL2xhbmcuYyAoamF2YV9pbml0X29wdGlvbnMpOiBTZXQgZmxhZ190cmFwcGluZ19tYXRoIHRvIDAuCgoyMDAyLTAzLTI4ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQHdhaXRha2kub3RhZ28uYWMubno+CgoJKiBwYXJzZS55IChyZXNvbHZlX3BhY2thZ2UpOiBJbml0aWFsaXplICJkZWNsIi4KCShsb29rdXBfcGFja2FnZV90eXBlKTogUmVtb3ZlIHVudXNlZCBmdW5jdGlvbi4KCjIwMDItMDMtMjggIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCglGaXggZm9yIFBSIGphdmEvNTk5MzoKCSogcGFyc2UueSAocmVzb2x2ZV9wYWNrYWdlKTogUmV0dXJuIHRoZSBkZWNsIGlmIHJlc29sdXRpb24gd2FzCglzdWNjZXNzZnVsLiBEb24ndCBzcGVjaWFsIGNhc2UgImphdmEubGFuZyIgYW5kICJqYXZhLmxhbmcucmVmbGVjdCIKCXBhY2thZ2VzLiBTZXQgdHlwZV9uYW1lIHRvIHRoZSBtZXJnZWQgaWRlbnRpZmllci4KCShyZXNvbHZlZF9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogUHJpbnQgZXJyb3IgdXNpbmcgIm5hbWUiIGlmCglyZXNvbHZlX3BhY2thZ2UgcmV0dXJucyBOVUxMX1RSRUUuCgoyMDAyLTAzLTI3ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9pbnZva2UpOiBEb24ndCBnZW5lcmF0ZSBudWxsIHBvaW50ZXIgY2hlY2sgaWYKCXdlJ3JlIGNhbGxpbmcgPGluaXQ+LgoKMjAwMi0wMy0yNyAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogZXhwci5jIChqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiBSZW5hbWUgamF2YV9leHBhbmRfZXhwciwKCWZpeCBwcm90b3R5cGUuCgkqIGphdmEtdHJlZS5oIChqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiBTaW1pbGFybHkuCgkqIGxhbmcuYyAoTEFOR19IT09LU19FWFBBTkRfRVhQUik6IFJlZGVmaW5lLgoJKGphdmFfaW5pdCk6IERvbid0IHNldCBob29rLgoKMjAwMi0wMy0yNyAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUB3YWl0YWtpLm90YWdvLmFjLm56PgoKCUZpeCBmb3IgUFIgamF2YS81ODUwOgoJKiBwYXJzZS55IChsb29rdXBfZmllbGRfd3JhcHBlcik6IENhbGwgaXRzZWxmIHJlY3Vyc2l2ZWx5IGZvciBlbmNsb3NpbmcKCWNvbnRleHQgaWYgZmllbGQgd2FzIG5vdCBmb3VuZCBpbiB0aGUgY3VycmVudCBzY29wZS4KCSogZXhwci5jIChsb29rdXBfZmllbGQpOiBEb24ndCBsb29rIGluIGVuY2xvc2luZyBjb250ZXh0cy4KCjIwMDItMDMtMjYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglGaXggZm9yIFBSIGphdmEvNTk0MjoKCSogcGFyc2UueSAoaW5pdF9zcmNfcGFyc2UpOiBBZGRlZCBzYW5pdHkgY2hlY2suCgkqIHBhcnNlLmggKHN0cnVjdCBwYXJzZXJfY3R4dCkgW21vZGlmaWVyX2N0eF06IEFycmF5IGhhcyAxMgoJZWxlbWVudHMsIG5vdCAxMS4KCjIwMDItMDMtMjYgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGRlY2wuYyAobGFuZ19tYXJrX3RyZWUpOiBSZW5hbWUgamF2YV9tYXJrX3RyZWUuCgkqIGphdmEtdHJlZS5oIChqYXZhX21hcmtfdHJlZSk6IE5ldy4KCSogamF2YS1sYW5nLmMgKExBTkdfSE9PS1NfTUFSS19UUkVFKTogUmVkZWZpbmUuCgoyMDAyLTAzLTI1ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogbGV4LmM6IENoYW5nZSBqYXZhX3BlcmZvcm1fYXRvZiB0byB0YWtlIG5vcm1hbCBwYXJhbWV0ZXJzCglpbnN0ZWFkIG9mIGEgcG9pbnRlciB0byBhIHBhcmFtZXRlciBibG9jay4gIENhbGwgaXQgZGlyZWN0bHkKCWZyb20gamF2YV9sZXguCgoyMDAyLTAzLTIyICBNYXJrIFdpZWxhYXJkICA8bWFya0BrbG9tcC5vcmc+CgoJRml4IGZvciBQUiBqYXZhLzUzNjg6CgkqIHBhcnNlLnkgKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IFVzZSBkZWNsIG5vdCBmaWVsZF9kZWNsCgl3aGVuIHByaW50aW5nIGVycm9yIG1lc3NhZ2UuCgoyMDAyLTAzLTI1ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBkZWNsLmMgKG1heWJlX2J1aWxkX2NsZWFudXApOiBSZW1vdmUuCgoyMDAyLTAzLTIyICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJQW5kcmV3IEhhbGV5ICA8YXBoQGNhbWJyaWRnZS5yZWRoYXQuY29tPgoKCSogZXhwci5jIChidWlsZF9maWVsZF9yZWYpOiBEb24ndCBidWlsZCBhIGNoZWNrIGlmIHRoZSBmaWVsZCBpcyBhCgltZW1iZXIgb2YgYHRoaXMnLgoKMjAwMi0wMy0yMSAgRXJpYyBCbGFrZSAgPGViYjlAZW1haWwuYnl1LmVkdT4KCglGaXggZm9yIFBSIGphdmEvNjAyNjoKCSogbGV4LmMgKGphdmFfbGV4KTogRml4IHBhcnNpbmcgb2YgY29uc2VjdXRpdmUgZmxvYXRzLgoKMjAwMi0wMy0yMSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogcGFyc2UueSAoYnVpbGRfYWNjZXNzX3RvX3RoaXNuKTogU3RvcCB3aGVuIEZST00gaXMgbm90IGFuIGlubmVyCgljbGFzcy4KCjIwMDItMDMtMjEgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGNwLXRyZWUuaCAocHVzaGRlY2wsIHB1c2hsZXZlbCwgcG9wbGV2ZWwsIHNldF9ibG9jaywKCWluc2VydF9ibG9jaywgZ2V0ZGVjbHMsIGtlcHRfbGV2ZWxfcCwgZ2xvYmFsX2JpbmRpbmdzX3ApOiBOZXcuCgoyMDAyLTAzLTIwICBOaWMgRmVycmllciAgPG5mZXJyaWVyQHRhcHNlbGxmZXJyaWVyLmNvLnVrPgoKCSogZ2NqLnRleGk6IEBjb2Rle2djan0gYmVjb21lcyBAY29tbWFuZHtnY2p9LgoJQGNvZGV7Z2NjfSBiZWNvbWVzIEBjb21tYW5ke2djY30uCglHY2pSYXcgY2hhbmdlZCB0byBnbnUuZ2NjLlJhd0RhdGEuCgoyMDAyLTAzLTIwICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBkZWNsLmMgKHN0YXJ0X2phdmFfbWV0aG9kKTogVXNlIG5ldyBob29rLgoJKiBsYW5nLmMgKExBTkdfSE9PS1NfREVDTF9QUklOVEFCTEVfTkFNRSk6IFJlZGVmaW5lLgoJKGphdmFfaW5pdCk6IFJlbW92ZSBvbGQgaG9vay4KCjIwMDItMDMtMTggIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogYnVpbHRpbnMuYyAoZGVmaW5lX2J1aWx0aW4pOiBEbyBub3RoaW5nIGlmIGB0eXBlJyBpcyBudWxsLgoJRml4ZXMgUFIgamF2YS81ODc2LgoKMjAwMi0wMy0xOCAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUB3YWl0YWtpLm90YWdvLmFjLm56PgoKCSogcGFyc2UueSAocGFyc2VyX2NoZWNrX3N1cGVyX2ludGVyZmFjZSk6IEZpeCBlcnJvciBtZXNzYWdlCglncmFtbWFyL29yZGVyLgoKMjAwMi0wMy0xNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogamNmLXBhcnNlLmMgKGdldF9jb25zdGFudCk6IERlbGV0ZSB1bnVzZWQgdmFyaWFibGVzLgoKMjAwMi0wMy0xNyAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogamF2YS10cmVlLmggKGphdmFfcGFyc2VfZmlsZSk6IE5ldy4KCSogamNmLXBhcnNlLmMgKHl5cGFyc2UpOiBSZW5hbWUgamF2YV9wYXJzZV9maWxlLgoJKiBsYW5nLmMgKExBTkdfSE9PS1NfUEFSU0VfRklMRSk6IFJlZGVmaW5lLgoKMjAwMi0wMy0xNiAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUB3YWl0YWtpLm90YWdvLmFjLm56PgoKCSogcGFyc2UueSAoY3JhZnRfY29uc3RydWN0b3IpOiBSZXR1cm4gdGhlIGNvbnN0cnVjdG9yIGRlY2wuCgkoamF2YV9leHBhbmRfY2xhc3Nlcyk6IFVwZGF0ZSBjb21tZW50cy4KCShsb29rdXBfbWV0aG9kX2ludm9rZSk6IENhbGwgZml4X2NvbnN0cnVjdG9ycyBpbW1lZGlhdGVseSBmb3IKCWFub255bW91cyBjbGFzcy4gRml4ZXMgUFIgamF2YS81OTM1LgoKMjAwMi0wMy0xNSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQHJlZGhhdC5jb20+CgoJKiBqY2YtcGFyc2UuYyAoeXlwYXJzZSk6IERvbid0IGVtaXQgY2xhc3MgcmVnaXN0cmF0aW9uCgljb25zdHJ1Y3RvciB3aGVuIGNvbXBpbGluZyByZXNvdXJjZSBmaWxlcy4KCjIwMDItMDMtMTIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxhbmcuYyAoamF2YV90cmVlX2NvZGVfdHlwZSwgamF2YV90cmVlX2NvZGVfbGVuZ3RoLAoJdHJlZV9jb2RlX25hbWUpOiBEZWxldGUuCgkodHJlZV9jb2RlX3R5cGUsIHRyZWVfY29kZV9sZW5ndGgsIHRyZWVfY29kZV9uYW1lKTogRGVmaW5lLgoJKGphdmFfaW5pdCk6IERvbid0IHRyeSB0byBjb3B5IGludG8gdGhlIHZhcmlvdXMgdHJlZV9jb2RlCglhcnJheXMuCgoyMDAyLTAzLTEyICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBqY2YtcGFyc2UuYyAoZ2V0X2NvbnN0YW50KSBbQ09OU1RBTlRfU3RyaW5nXTogU3RyaW5nIHZhbHVlcyBhcmUKCVVURi04LCBub3QgVUNTLTIuICBGaXhlcyBQUiBqYXZhLzU5MjMuCgoJKiBwYXJzZS55IChxdWFsaWZ5X2FtYmlndW91c19uYW1lKTogSGFuZGxlIGNhc2Ugd2hlcmUgUVVBTF9XRkwgaXMKCWEgY2FsbF9leHByIHdyYXBwZWQgaW4gYSBjb252ZXJ0LiAgRml4ZXMgUFIgamF2YS81ODQ4LgoKMjAwMi0wMy0xMiAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUB3YWl0YWtpLm90YWdvLmFjLm56PgoKCSogamNmLXdyaXRlLmMgKHdyaXRlX2NsYXNzZmlsZSk6IEltcHJvdmUgZXJyb3Igc3RyaW5ncy4KCjIwMDItMDMtMTEgIEVyaWMgQmxha2UgIDxlYmI5QGVtYWlsLmJ5dS5lZHU+CgoJKiBsZXguYzogQWRqdXN0IGNvbW1lbnRzIHRvIEdOVSBzdGFuZGFyZHMuCgoyMDAyLTAzLTExICBFcmljIEJsYWtlICA8ZWJiOUBlbWFpbC5ieXUuZWR1PgoKCUZpeCBmb3IgUFIgamF2YS81OTAyOgoJKiBsZXguYyAoamF2YV9sZXgpOiBGaXggcGFyc2luZyBvZiBsaXRlcmFscy4KCjIwMDItMDMtMTEgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCgkqIHBhcnNlLnkgKHBhdGNoX2Fzc2lnbm1lbnQpOiBXcmFwIHRoZSByaWdodC1oYW5kLXNpZGUgd2l0aCBhIHNhdmVfZXhwcgoJdG8gcHJldmVudCBpdCBnZXR0aW5nIGV2YWx1YXRlZCB0d2ljZSBpbiB0aGUgc3RvcmUgY2hlY2tpbmcgY2FzZS4KCSogZXhwci5jIChidWlsZF9qYXZhX2FycmF5c3RvcmVfY2hlY2spOiBVbndyYXAgU0FWRV9FWFBSJ3Mgd2hlbgoJZXhhbWluaW5nIE9CSkVDVC4KCjIwMDItMDMtMDkgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IE1ha2Ugc3VyZSBjbGFzc190eXBlX25vZGUKCWFsaWdubWVudCBpcyBub3QgbGVzcyB0aGFuIDY0IGJpdHMgaWYgaGFzaCBzeW5jaHJvbml6YXRpb24gaXMgZW5hYmxlZC4KCjIwMDItMDMtMDggIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9saHMpOiAgQ2hlY2sgaWYgcGF0Y2hfYXNzaWdubWVudAoJcmV0dXJuZWQgYW4gZXJyb3ItbWFyay4KCgkqIHBhcnNlLnkgKHRyeV9idWlsdGluX2Fzc2lnbmNvbnYpOiAgRG9uJ3Qgc3BlY2lhbC1jYXNlIHplcm8uCgoyMDAyLTAzLTA4ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCglGaXggZm9yIFBSIGphdmEvNTgxMi4KCSogZXhwci5jIChidWlsZF9qYXZhX2pzcik6ICBUYWtlIHBjIGFyZ3VtZW50cywgYW5kIGRvIGxvb2t1cF9sYWJlbAoJaGVyZSBpbnN0ZWFkIG9mIGluIEpTUiBtYWNyby4gIExpa2V3aXNlIHdpdGggbG9hZF90eXBlX3N0YXRlIGNhbGwuCglEbyB0aGUgbGF0dGVyIG9uIGlmIHRoZSByZXR1cm5fcGMgaGFzIGJlZW4gdmVyaWZpZWQgKHRoZSBqc3IgcmV0dXJucykuCgkoSlNSKTogIE5vdyBqdXN0IGNhbGwgYnVpbGRfamF2YV9qc3IuCgoyMDAyLTAzLTA3ICBKZWZmIFN0dXJtICA8anN0dXJtQG9uZS1wb2ludC5jb20+CgoJKiBqYXZhL01ha2UtbGFuZy5pbiAoSkFWQV9UQVJHRVRfSU5TVEFMTF9OQU1FKTogRGVmaW5lLgoJKGphdmEuaW5zdGFsbC1jb21tb24pOiBMaW5rIG5hdGl2ZSBkcml2ZXIgdG8KCUpBVkFfVEFSR0VUX0lOU1RBTExfTkFNRS4KCjIwMDItMDMtMDUgIERhdmlkIEJpbGxpbmdodXJzdCA8RGF2aWQuQmlsbGluZ2h1cnN0QHJpb3RpbnRvLmNvbT4KCgkqIGJ1aWx0aW5zLmMoY29zX2J1aWx0aW4pOiBtZXRob2RfcmV0dXJuX3R5cGUgQVRUUklCVVRFX1VOVVNFRAoJKiBidWlsdGlucy5jKHNpbl9idWlsdGluKTogTGlrZXdpc2UKCSogYnVpbHRpbnMuYyhzcXJ0X2J1aWx0aW4pOiBMaWtld2lzZQoKMjAwMi0wMy0wMyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGphdmEvZXhwci5jLCBqYXZhL2pjZi1wYXJzZS5jLCBqYXZhL2xleC5jOgoJUmVtb3ZlIGFsbCAjaWZuZGVmIFJFQUxfQVJJVEhNRVRJQyBibG9ja3MsIG1ha2UgYWxsICNpZmRlZgoJUkVBTF9BUklUSE1FVElDIGJsb2NrcyB1bmNvbmRpdGlvbmFsLiAgRGVsZXRlIHNvbWUgZnVydGhlcgoJI2lmZGVmIGJsb2NrcyBwcmVkaWNhdGVkIG9uIFJFQUxfQVJJVEhNRVRJQy4KCjIwMDItMDMtMDMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNsYXNzLmMgKGluaXRfY2xhc3NfcHJvY2Vzc2luZyk6IFVzZSBBUlJBWV9TSVpFIGluIGxpZXUgb2YKCWV4cGxpY2l0IHNpemVvZi9zaXplb2YuCgkqIGRlY2wuYyAoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IExpa2V3aXNlLgoJKiBqY2YtcGFyc2UuYyAoaW5pdF9qY2ZfcGFyc2UpOiBMaWtld2lzZS4KCSogcGFyc2UueSAoaW5pdF9zcmNfcGFyc2UpOiBMaWtld2lzZS4KCjIwMDItMDMtMDIgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCU1ha2UgLS1DTEFTU1BBVEggYnkgYSBzeW5vbnltIGZvciAtLWNsYXNzcGF0aCBhbmQgLWNsYXNzcGF0aC4KCUltcGxlbWVudCAtLWJvb3RjbGFzc3BhdGguCgkqIGpjZi1wYXRoLmMgKGNsYXNzcGF0aF91KTogIFJlbmFtZSBzdGF0aWMgdmFyaWFibGUgdG8gY2xhc3NwYXRoX3VzZXIuCgkoY2xhc3NwYXRoX2wpOiAgUmVtb3ZlLgoJKGpjZl9wYXRoX0NMQVNTUEFUSF9hcmcpOiAgUmVtb3ZlLgoJKGpjZl9wYXRoX2Jvb3RjbGFzc3BhdGhfYXJnKTogIE5ldyBmdW5jdGlvbi4KCShqY2ZfcGF0aF9zZWFsKTogIFNpbXBsaWZ5IGFjY29yZGluZ2x5LgoKCSogamNmLmggKGpjZl9wYXRoX2Jvb3RjbGFzc3BhdGhfYXJnKTogIE5ldyBkZWNsYXJhdGlvbnMuCgkoamNmX3BhdGhfQ0xBU1NQQVRIKTogIFJlbW92ZSBkZWNsYXJhdGlvbi4KCSoganZzcGVjLmMgKGp2Z2VubWFpbl9zcGVjKTogIEFsc28gYWNjZXB0IC1mYm9vdGNsYXNzcGF0aCouCgkobGFuZ19zcGVjaWZpY19kcml2ZXIpOiAgVHJhbnNsYXRlIC1ib290Y2xhc3NwYXRoLgoJKiBsYW5nLW9wdGlvbnMuaDogIEFkZCAtLWJvb3RjbGFzc3BhdGguICBVcGRhdGUgLS1DTEFTU1BBVEguCgkqIGxhbmcuYyAoZGVjb2RlX2xhbmdfb3B0aW9ucyk6ICBEbyBqY2ZfcGF0aF9pbml0IGZpcnN0LgoJSGFuZGxlIC1mQ0xBU1NQQVRIIHNhbWUgYXMgLWZjbGFzc3BhdGguICBBbHNvIHByb2Nlc3MgLWZib290Y2xhc3NwYXRoLgoJKiBnamF2YWguYzogIEFsc28gaGFuZGxlIC0tYm9vdGNsYXNzcGF0aC4KCUhhbmRsZSAtLUNMQVNTUEFUSCBhcyBhIHN5bm9udW0gZm9yIC0tY2xhc3NwYXRoLgoJKiBqY2YtZHVtcC5jOiBMaWtld2lzZS4KCgkiLiIgaXMgbm90IHBhcnQgb2Ygc3lzdGVtIHBhdGgsIGJ1dCBpcyB0aGUgZGVmYXVsdCBmb3IgLS1jbGFzc3BhdGguCgkqIGpjZi1wYXRoLmMgKGpjZl9wYXRoX2luaXQpOiAgRG9uJ3QgYWRkICIuIiB0byBzeXNfZGlycy4KCShqY2ZfcGF0aF9zZWFsKTogIEFkZCAiLiIgaWYgbm8gQ0xBU1NQQVRIIHNwZWNpZmllZC4KCgkqIGdjai50ZXhpOiAgRG9jdW1lbnQgY2hhbmdlcy4KCjIwMDItMDMtMDEgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9hcnJheXN0b3JlX2NoZWNrKTogRml4IGZvcm1hdHRpbmcuCgoyMDAyLTAyLTI4ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCglGaXggZm9yIFBSIGphdmEvNTc1OCwgamF2YS81NjMyOgoJKiBqY2YtcGFyc2UuYyAobG9hZF9jbGFzcyk6IFJlbmFtZWQgbG9jYWwgdmFyaWFibGUsIGNvbnNpZGVyIGAuJyBhbgoJaW5uZXItY2xhc3Mgc2VwYXJhdG9yIHRvby4KCSogcGFyc2UueSAoZG9fcmVzb2x2ZV9jbGFzcyk6IE5ldyBsb2NhbCBgZGVjbF9yZXN1bHQuJwoJUHJvZ3Jlc3NpdmVseSBidWlsZCBhIG5hbWUgZm9yIHdoYXQgY2FuIGhhdmUgYmVlbiBsb2FkZWQuCgoyMDAyLTAyLTI4ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQHdhaXRha2kub3RhZ28uYWMubno+CgoJKiBleHByLmMgKGphdmFfYXJyYXlfZGF0YV9vZmZzZXQpOiBSZW1vdmVkIGZ1bmN0aW9uLgoJKEpBVkFfQVJSQVlfTEVOR1RIX09GRlNFVCk6IFJlbW92ZWQgbWFjcm8uCgkoYnVpbGRfamF2YV9hcnJheV9sZW5ndGhfYWNjZXNzKTogT2J0YWluICJsZW5ndGgiIHZhbHVlIHVzaW5nIGEKCUNPTVBPTkVOVF9SRUYsIGluc3RlYWQgb2YgSU5ESVJFQ1RfUkVGIGFuZCBhcml0aG1ldGljLgoJKGJ1aWxkX2phdmFfYXJyYXlhY2Nlc3MpOiBDb3JyZWN0IGNvbW1lbnQuIEFjY2VzcyAiZGF0YSIgdXNpbmcgYQoJQ09NUE9ORU5UX1JFRiwgYW5kIHJldHVybiBhbiBBUlJBWV9SRUYgaW5zdGVhZCBvZiBhbiBJTkRJUkVDVF9SRUYuCgkoYnVpbGRfamF2YV9hcnJheXN0b3JlX2NoZWNrKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9qYXZhX2FycmF5c3RvcmUpOiBVc2UgYnVpbGRfamF2YV9hcnJheXN0b3JlX2NoZWNrLgoJKiBwYXJzZS55IChwYXRjaF9hc3NpZ25tZW50KTogU2ltcGxpZnkgY29kZSB0byBpbnNlcnQgYSBzdG9yZSBjaGVjawoJd2hlbiBsdmFsdWUgaXMgYW4gQVJSQVlfUkVGLiBVc2UgYnVpbGRfamF2YV9hcnJheXN0b3JlX2NoZWNrLgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpOiBVcGRhdGUgdG8gcmVmbGVjdCB0aGF0IGFuIGFycmF5IGxlbmd0aAoJYWNjZXNzIGlzIG5vdyBhIENPTVBPTkVOVF9SRUYuCgkqIGdjai50ZXhpIChDb2RlIEdlbmVyYXRpb24pOiBJbXByb3ZlIGRvY3VtZW50YXRpb24gb2YKCS1mbm8tYm91bmRzLWNoZWNrLiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgLWZuby1zdG9yZS1jaGVjay4KCSogamF2YS10cmVlLmggKGZsYWdfc3RvcmVfY2hlY2spOiBEZWNsYXJlLgoJKGJ1aWxkX2phdmFfYXJyYXlzdG9yZV9jaGVjayk6IERlY2xhcmUuCgkqIGxhbmcuYyAoZmxhZ19zdG9yZV9jaGVjayk6IEluaXRpYWxpemUgdG8gMS4KCShsYW5nX2Zfb3B0aW9ucyk6IEFkZCBzdG9yZS1jaGVjayBvcHRpb24uCgkqIGp2c3BlYy5jOiBEb24ndCBwYXNzIHN0b3JlLWNoZWNrIG9wdGlvbiB0byBqdmdlbm1haW4uCgkqIGxhbmctb3B0aW9ucy5oOiBBZGQgaGVscCBzdHJpbmcgZm9yIC1mbm8tc3RvcmUtY2hlY2suCgoyMDAyLTAyLTI4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBkZWNsLmMgKGNvcHlfbGFuZ19kZWNsKTogUmVuYW1lIGphdmFfZHVwX2xhbmdfc3BlY2lmaWNfZGVjbC4KCSogamF2YS10cmVlLmggKGphdmFfZHVwX2xhbmdfc3BlY2lmaWNfZGVjbCk6IE5ldy4KCSogbGFuZy5jIChMQU5HX0hPT0tTX0RVUF9MQU5HX1NQRUNJRklDX0RFQ0wpOiBSZWRlZmluZS4KCjIwMDItMDItMjcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBidWlsdGlucy5jLCBkZWNsLmM6IERlbGV0ZSB0cmFkaXRpb25hbC1tb2RlLXJlbGF0ZWQgY29kZQoJY29waWVkIGZyb20gdGhlIEMgZnJvbnQgZW5kIGJ1dCBub3QgdXNlZCwgb3IgdXNlZCBvbmx5IHRvCglwZXJtaXQgdGhlIGNvbXBpbGVyIHRvIGxpbmsuCgoyMDAyLTAyLTIyICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJRml4IGZvciBQUiBqYXZhLzIzNjk6CgkqIGp2c3BlYy5jICh2ZXJpZnlfY2xhc3NfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShsYW5nX3NwZWNpZmljX2RyaXZlcik6IENhbGwgaXQuCgkoSkFWQV9TVEFSVF9DSEFSX1ApOiBOZXcgbWFjcm8uCgkoSkFWQV9QQVJUX0NIQVJfUCk6IExpa2V3aXNlLgoKMjAwMi0wMi0yMiAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBjbGFzcy5jOiAgQ2hhbmdlIHZ0YWJsZSB0byBiZSBtb3JlIGNvbXBhdGlibGUgd2l0aCBnKysgdjMgYWJpLgoJKGdldF9kaXNwYXRjaF90YWJsZSk6ICBQcmVwZW5kIG9mZnNldC10by10b3AgKGFsd2F5cyAwKSBhbmQKCXR5cGVfaW5mbyBwb2ludGVyIChjdXJyZW50bHkgdW5pbXBsZW1lbnRlZCBoZW5jZSBOVUxMKSB0byB2dGFibGUuCglTcGVjaWZpY2FsbHksIHByZXBlbmQgb2Zmc2V0LXRvLXRvcCBhbmQgdHlwZWluZm8gcHRyIChjdXJyZW50bHkgbnVsbCkuCgkobWFrZV9jbGFzc19kYXRhKTogIFZhcmlhYmxlIGR0YWJsZV9zdGFydF9vZmZzZXQgaXMgc2l6ZW9mIDIgcG9pbnRlcnMuCglBZGp1c3QgdnRhYmxlIHBvaW50ZXJzIGJ5IGR0YWJsZV9zdGFydF9vZmZzZSAtIGkuZS4gc2tpcCBuZXcgd29yZHMuCgkoYnVpbGRfZHRhYmxlX2RlY2wpOiAgQWRkIGRlY2xhcmF0aW9ucyBmb3IgbmV3IGZpZWxkcy4KCjIwMDItMDItMjAgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBTZXQgQ0FOX0NPTVBMRVRFX05PUk1BTExZIG9uIGNhbGwKCXRvIGZpbml0JCAob3RoZXJ3aXNlIGdlbmVyYXRlX2J5dGVjb2RlX2luc25zIGRyb3BzIGl0KS4gSG93ZXZlciwgd2UKCWRvbid0IG5lZWQgdG8gc2V0IGl0IG9uIHRoZSBDT01QT1VORF9FWFBSIC0gdGhlIGNhbGxlciBkb2VzIHRoYXQuCgoyMDAyLTAyLTIwICBOaWMgRmVycmllciAgPG5mZXJyaWVyQHRhcHNlbGxmZXJyaWVyLmNvLnVrPgoKCSogZ2NqLnRleGk6IE9wdGlvbiBgLS1jbGFzc3BhdGgnIGJlY29tZXMgYC0tQ0xBU1NQQVRILidPcHRpb24KCWAtLUNMQVNTUEFUSCcgYmVjb21lcyBgLS1jbGFzc3BhdGguJwoJKiBnamF2YWguYzogTGlrZXdpc2UuCgkqIGpjZi1kdW1wLmM6IExpa2V3aXNlLgoJKiBsYW5nLW9wdGlvbnMuaDogTGlrZXdpc2UuCgkqIGxhbmcuYzogTGlrZXdpc2UuCgkqIGpjZi1wYXRoLmM6IFVwZGF0ZWQgY29tbWVudC4KCShqY2ZfcGF0aF9jbGFzc3BhdGhfYXJnKTogUmVuYW1lZCBgamNmX3BhdGhfQ0xBU1NQQVRIX2FyZy4nCgkoamNmX3BhdGhfQ0xBU1NQQVRIX2FyZyk6IFJlbmFtZWQgYGpjZl9wYXRoX2NsYXNzcGF0aF9hcmcuJwoJKiBqY2YuaCAoamNmX3BhdGhfQ0xBU1NQQVRIX2FyZyk6IERpdHRvLgoJKGpjZl9wYXRoX0NMQVNTUEFUSF9hcmcpOiBEaXR0by4KCShjbGFzc3BhdGhfdSk6IFVwZGF0ZWQgbGVhZGluZyBjb21tZW50LgoKMjAwMi0wMi0yMCAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBidWlsdGlucy5jIChjaGVja19mb3JfYnVpbHRpbik6ICBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfY2FsbF9vcl9idWlsdGluKTogIFJlbW92ZS4KCSogamF2YS10cmVlLmg6ICBVcGRhdGUgYWNjb3JkaW5nbHkuCgkqIGV4cHIuYyAoZXhwYW5kX2ludm9rZSk6ICBVc2UgYnVpbGQgKyBjaGVja19mb3JfYnVpbHRpbiBpbnN0ZWFkCglvZiBidWlsZF9jYWxsX29yX2J1aWx0aW4uCgkqIHBhcnNlLnkgKHBhdGNoX2ludm9rZSk6ICBMaWtld2lzZS4gIFRoaXMgYXZvaWRzIG5lZWRsZXNzbHkgY3JlYXRpbmcKCWEgbmV3IENBTExfRVhQUiBub2RlLCB3aGljaCBtZWFucyB3ZSBkb24ndCBsb3NlIHRoZSBDQUxMX1VTSU5HX1NVUEVSCglmbGFnICh3aGljaCBoYWQgY2F1c2VkIGpjZi13cml0ZSB0byBpbmNvcnJlY3RseSBlbWl0IGludm9rZXZpcnR1YWwpLgoKMjAwMi0wMi0xNyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogamF2YS10cmVlLmggKFRZUEVfU1RSSUNURlApOiBOZXcgbWFjcm8uCgkoc3RydWN0IGxhbmdfdHlwZSkgW3N0cmljdGZwXTogTmV3IGZpZWxkLgoJKENMQVNTX1NUUklDVEZQKTogTmV3IG1hY3JvLgoJKE1FVEhPRF9TVFJJQ1RGUCk6IE5ldyBtYWNyby4KCShzdHJ1Y3QgbGFuZ19kZWNsKSBbc3RyaWN0ZnBdOiBOZXcgZmllbGQuCgkqIHBhcnNlLnkgKG1ldGhvZF9oZWFkZXIpOiBEaXNhbGxvdyBzdHJpY3RmcCBjb25zdHJ1Y3RvciBvcgoJYWJzdHJhY3QgbWV0aG9kLgoJKFNUUklDVF9USyk6IE1vdmUgYmVmb3JlIE1PRElGSUVSX1RLLgoJKiBwYXJzZS5oIChDTEFTU19NT0RJRklFUlMpOiBBZGRlZCBBQ0NfU1RSSUNULgoJKE1FVEhPRF9NT0RJRklFUlMpOiBMaWtld2lzZS4KCShJTlRFUkZBQ0VfTU9ESUZJRVJTKTogTGlrZXdpc2UuCgkqIGpjZi13cml0ZS5jIChnZXRfYWNjZXNzX2ZsYWdzKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKHNldF9jbGFzc19kZWNsX2FjY2Vzc19mbGFncyk6IFJlY29nbml6ZSBBQ0NfU1RSSUNULgoJKGFkZF9tZXRob2RfMSk6IExpa2V3aXNlLgoJKGdldF9hY2Nlc3NfZmxhZ3NfZnJvbV9kZWNsKTogTGlrZXdpc2UuCgkqIGpjZi1kdW1wLmMgKHByaW50X2FjY2Vzc19mbGFncyk6IFByaW50IGluIHN0YW5kYXJkIG9yZGVyLiAgQWxzbywKCXJlY29nbml6ZSBzdHJpY3RmcCBmbGFnLgoJKiBqY2YuaCAoQUNDX1NUUklDVCk6IE5ldyBkZWZpbmUuCgoyMDAyLTAyLTEyICBEYXZpZCBCaWxsaW5naHVyc3QgPERhdm9kLkJpbGxpbmdodXJzdEByaW90aW50by5jb20+CgoJKiBjbGFzcy5jKGJ1aWxkX3V0ZjhfcmVmKTogTW92ZSBkZWNsYXJhdGlvbiBvZiBkZWNsX3NpemUKCjIwMDItMDItMDcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGdjai50ZXhpIChJbnB1dCBPcHRpb25zKTogLS1DTEFTU1BBVEggZG9lcyBub3Qgc3VwcHJlc3Mgc3lzdGVtCglwYXRoLgoKMjAwMi0wMi0wNCAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChidWlsZF91dGY4X3JlZik6IFB1dCBVVEYtOCBjb25zdGFudHMgaW50byBtZXJnZWQKCXNlY3Rpb25zIGlmIGF2YWlsYWJsZS4KCjIwMDItMDItMDQgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCgkqIHBhcnNlLnkgKGphdmFfZXhwYW5kX2NsYXNzZXMpOiBGaXggdHlwbyBpbiBzdGF0aWMgZmllbGQgbG9vcC4KCjIwMDItMDItMDIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChhZGRfZmllbGQpOiBNYXJrIHN0YXRpYyBmaWVsZHMgZXh0ZXJuYWwuCgkoYnVpbGRfY2xhc3NfcmVmKTogUmVtb3ZlIHJlZHVuZGFudCBzZXQuCgkqIHBhcnNlLnkgKGphdmFfZXhwYW5kX2NsYXNzZXMpOiBNYXJrIHN0YXRpYyBmaWVsZHMgb2YgY2xhc3NlcwoJdG8gYmUgY29tcGlsZWQgYXMgbG9jYWwuCgkqIGpjZi1wYXJzZS5jIChwYXJzZV9jbGFzc19maWxlKTogTGlrZXdpc2UuCgoyMDAyLTAyLTAyICBOaWMgRmVycmllciAgPG5mZXJyaWVyQHRhcHNlbGxmZXJyaWVyLmNvLnVrPgoKCSogZ2NqLnRleGkgKEFib3V0IENOSSk6IE5ldyBub2RlLgoKMjAwMi0wMi0wMSAgQ3JhaWcgUm9kcmlndWVzICA8cm9kcmlnY0BnY2MuZ251Lm9yZz4KCglQUiBqYXZhLzUwODAKCSogamNmLXBhcnNlLmMgOiBDaGVjayBmb3IgSEFWRV9MT0NBTEVfSCBiZWZvcmUgdXNpbmcKCXNldGxvY2FsZSgpIHdpdGggTENfQ1RZUEUgYXMgYSBwYXJhbWV0ZXIuCgkqIGp2LXNjYW4uYzogU2FtZS4KCjIwMDItMDEtMzEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGdqYXZhaC5jICh2ZXJzaW9uKSwgamNmLWR1bXAuYyAodmVyc2lvbiksIGp2LXNjYW4uYyAodmVyc2lvbik6CglGb2xsb3cgR05VIENvZGluZyBTdGFuZGFyZHMgZm9yIC0tdmVyc2lvbi4KCjIwMDItMDEtMjggIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoYnVpbGRfam5pX3N0dWIpOiBFbnN1cmUgc3RvcmFnZSBmb3IgYG1ldGgnIGlzCglnZW5lcmF0ZWQuCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZHMpOiBTZXQKCWN1cnJlbnRfZnVuY3Rpb25fZGVjbCBiZWZvcmUgYnVpbGRpbmcgSk5JIHN0dWIuCgoyMDAyLTAxLTI2IEFuZHJlYXMgVG9ibGVyIDxhLnRvYmxlckBzY2h3ZWl6LmNoPgoKCSogZ2NjL2phdmEvYnVpbHRpbnMuYyAoc3FydF9idWlsdGluKTogVXNlIEJVSUxUX0lOX1NRUlQsIG5vdAoJQlVJTFRfSU5fU1FSVEYuCgoyMDAyLTAxLTIyICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBVc2UgYWRkX3ByZWRlZmluZWRfZmlsZS4KCVByZWRlZmluZSBSYXdEYXRhLmphdmEuCgkocHJlZGVmX2ZpbGVuYW1lcyk6IFJlbW92ZWQuCgkoamF2YV9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IERvbid0IHJlZ2lzdGVyIHByZWRlZl9maWxlbmFtZXMuCgkqIGpjZi1wYXJzZS5jIChhZGRfcHJlZGVmaW5lZF9maWxlKTogTmV3IGZ1bmN0aW9uLgoJKHByZWRlZmluZWRfZmlsZW5hbWVfcCk6IFJld3JvdGUuCgkocHJlZGVmaW5lZF9maWxlbmFtZV9wKTogTm8gbG9uZ2VyIHN0YXRpYy4KCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogQ2FsbCBpbml0aWFsaXplX2J1aWx0aW5zLgoJKiBNYWtlLWxhbmcuaW4gKEpBVkFfT0JKUyk6IEFkZGVkIGJ1aWx0aW5zLm8uCgkoamF2YS9idWlsdGlucy5vKTogTmV3IHRhcmdldC4KCSogYnVpbHRpbnMuYzogTmV3IGZpbGUuCgkqIHBhcnNlLnkgKHBhdGNoX2ludm9rZSk6IFVzZSBidWlsZF9jYWxsX29yX2J1aWx0aW4uCgkqIGphdmEtdHJlZS5oIChidWlsZF9jYWxsX29yX2J1aWx0aW4pOiBEZWNsYXJlLgoJKGluaXRpYWxpemVfYnVpbHRpbnMpOiBEZWNsYXJlLgoJKGphdmFfc2V0X2V4Y2VwdGlvbl9sYW5nX2NvZGUpOiBSZW1vdmVkIHVudXNlZCBkZWNsYXJhdGlvbi4KCShQUkVERUZfRklMRU5BTUVTX1NJWkUpOiBSZW1vdmVkLgoJKGphdmFfdHJlZV9pbmRleCk6IEFkZGVkIEpUSV9QUkVERUZfRklMRU5BTUVTLgoJKHByZWRlZl9maWxlbmFtZXMpOiBOZXcgZGVmaW5lLgoJKGFkZF9wcmVkZWZpbmVkX2ZpbGUpOiBEZWNsYXJlLgoJKHByZWRlZmluZWRfZmlsZW5hbWVfcCk6IERlY2xhcmUuCgkqIGV4cHIuYyAoZXhwYW5kX2ludm9rZSk6IFVzZSBidWlsZF9jYWxsX29yX2J1aWx0aW4uCgoyMDAyLTAxLTIyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBwYXJzZS55IChwYXRjaF9zd2l0Y2hfc3RhdGVtZW50KTogRml4IGZvcm1hdCBzcGVjaWZpZXIuCgoyMDAyLTAxLTE2ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJTW9yZSBmb3IgUFIgamF2YS81MzY1OgoJKiBnamF2YWguYyAocHJpbnRfc3R1Yl9vcl9qbmkpOiBDYXVzZSBleGNlcHRpb24gdG8gYmUgdGhyb3duIGJ5CglkZWZhdWx0LgoJKHByb2Nlc3NfZmlsZSk6IEdlbmVyYXRlIGluY2x1ZGUgZm9yCglqYXZhLmxhbmcuVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb25zLgoKMjAwMi0wMS0xNSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogLmN2c2lnbm9yZTogQWRkIG1hbiBwYWdlcy4KCjIwMDItMDEtMTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglGaXggZm9yIFBSIGphdmEvNTM2NToKCSogZ2phdmFoLmMgKHByb2Nlc3NfZmlsZSk6IFR1cm4gY2xhc3MgbmFtZSBpbnRvIGEgZmlsZSBuYW1lLgoKMjAwMi0wMS0xNCAgTWF0dGhpYXMgS2xvc2UgIDxkb2tvQGRlYmlhbi5vcmc+CgoJKiBnY2oudGV4aTogRml4IHdoaXRlc3BhY2UgYW5kIGZvcm1hdHRpbmcgZXJyb3JzIGluIHRoZQoJc3lub3BzaXMgb2YgdGhlIG1hbiBwYWdlcy4gVXBkYXRlIGNvcHlyaWdodC4KCjIwMDItMDEtMTQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglGb3IgUFIgbGliZ2NqLzUzMDM6CgkqIE1ha2UtbGFuZy5pbiAoamF2YS5pbnN0YWxsLW1hbik6IEhhbmRsZSBqdi1jb252ZXJ0IG1hbiBwYWdlLgoJKGphdmEuZ2VuZXJhdGVkLW1hbnBhZ2VzKTogQWRkZWQganYtY29udmVydC4xLgoJKGphdmEudW5pbnN0YWxsKTogUmVtb3ZlIGp2LWNvbnZlcnQuMS4KCShqYXZhLm1haW50YWluZXItY2xlYW4pOiBMaWtld2lzZS4KCSgkKHNyY2RpcikvamF2YS9qdi1jb252ZXJ0LjEpOiBOZXcgdGFyZ2V0LgoJKiBnY2oudGV4aSAoVG9wKTogTGluayB0byBqdi1jb252ZXJ0IG5vZGUuCgkoSW5kaXZpZHVhbCB1dGlsaXRpZXMpOiBMaWtld2lzZS4KCShJbnZva2luZyBqdi1jb252ZXJ0KTogTmV3IG5vZGUuCgoyMDAxLTAxLTEwICBKZWZmIFN0dXJtICA8anN0dXJtQG9uZS1wb2ludC5jb20+CgkgICAgTWFydGluIEthaGxlcnQgIDxtYXJ0aW4ua2FobGVydEBpbmZpbmVvbi5jb20+CgoJKiBqY2YtcGFyc2UuYyAoZ2V0X2NvbnN0YW50KTogRG9uJ3Qgc3dhcCBsby9oaSBmb3IgYmlnCgllbmRpYW4gdGFyZ2V0cyB3aGVuIEhPU1RfQklUU19QRVJfV0lERV9JTlQgPj0gNjQuCgoyMDAyLTAxLTAzICBHcmFoYW0gU3RvdHQgIDxncmFoYW1zQHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChjb21waWxlX3Jlc291cmNlX2ZpbGUpOiBVcGRhdGUgY29weXJpZ2h0IGRhdGUuCglDb25zdGlmeSBmaWxlbmFtZSBwYXJhbWV0ZXIuCgkoamF2YS10cmVlLmgpOiBVcGRhdGUgY29weXJpZ2h0IGRhdGUuCgkoY29tcGlsZV9yZXNvdXJjZV9maWxlKTogQ29uc3RpZnkgZmlsZW5hbWUgcGFyYW1ldGVyLgoKMjAwMi0wMS0wMyAgR3JhaGFtIFN0b3R0ICA8Z3JhaGFtc0ByZWRoYXQuY29tPgoKCSogZ2NjL2pjZi1wYXJzZS5jOiBVcGRhdGUgY29weXJpZ2h0IGRhdGUuCgkoeXlwYXJzZSk6IENvbnN0aWZ5IHJlc291cmNlX2ZpbGVuYW1lLgoKMjAwMi0wMS0wMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcGFyc2UueSAoc3JjX3BhcnNlX3Jvb3RzKTogRG9uJ3QgbmVlZGxlc3NseSB6ZXJvIGluaXQuCgoyMDAxLTEyLTMxICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChkdW1wX2phdmFfdHJlZSk6IE5ldyBmdW5jdGlvbi4KCShzb3VyY2VfZW5kX2phdmFfbWV0aG9kKTogQ2FsbCBpdC4KCShlbmRfY2xhc3NfZGVjbGFyYXRpb24pOiBMaWtld2lzZS4KCSogbGFuZy5jIChqYXZhX2RlY29kZV9vcHRpb24pOiBDYWxsIGR1bXBfc3dpdGNoX3AuCgoyMDAxLTEyLTI4ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBnZW4tdGFibGUucGw6IERvbid0IHByb2Nlc3MgY2hhcmFjdGVycyBhZnRlciBcdWZmZmYuICBBZGRlZAoJY29tbWVudCBwb2ludGluZyB0byBpbnB1dCBmaWxlLgoKMjAwMS0xMi0yOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZ2VuLXRhYmxlLnBsOiBDb25zdC1pZnkgb3V0cHV0LiAgRG9jdW1lbnQgdGhlIGxvY2F0aW9uIG9mIGEKCXN1aXRhYmxlIHVuaWNvZGUgaW5wdXQgZmlsZS4KCgkqIGNoYXJ0YWJsZXMuaDogUmVnZW5lcmF0ZS4KCjIwMDEtMTItMjYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNoYXJ0YWJsZXMuaDogQ29uc3QtaWZ5LgoJKiBnamF2YWguYyAob3B0aW9ucyk6IExpa2V3aXNlLgoJKiBqY2YtZHVtcC5jIChvcHRpb25zKTogTGlrZXdpc2UuCgkqIGp2LXNjYW4uYyAob3B0aW9ucyk6IExpa2V3aXNlLgoJKiBsZXguYyAoamF2YV9zdGFydF9jaGFyX3AsIGphdmFfcGFydF9jaGFyX3ApOiBMaWtld2lzZS4KCSogcGFyc2UueSAoYmlub3BfbG9va3VwKTogTGlrZXdpc2UuCgoyMDAxLTEyLTIzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlLWxhbmcuaW4gKGtleXdvcmQuaCk6IFBhc3MgLUMgdG8gZ3BlcmYgdG8gY29uc3QtaWZ5Cgl0aGUgc3RhdGljIGFycmF5cyB0aGF0IGFyZSBvdXRwdXQuCgkqIGp2c3BlYy5jIChqdmdlbm1haW5fc3BlYyk6IE1ha2Ugc3RhdGljLgoJKiBrZXl3b3JkLmdwZXJmIChzdHJ1Y3QgamF2YV9rZXl3b3JkLCBqYXZhX2tleXdvcmQpOiBDb25zdC1pZnkuCgkqIGtleXdvcmQuaDogUmVnZW5lcmF0ZS4KCSogbGFuZy5jIChzdHJpbmdfb3B0aW9uLCBwcm9jZXNzX29wdGlvbl93aXRoX25vLCBsYW5nX2Zfb3B0aW9ucywKCWxhbmdfV19vcHRpb25zKTogQ29uc3QtaWZ5LgoJKiBsZXguYyAoamF2YV9sZXgpOiBMaWtld2lzZS4KCjIwMDEtMTItMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBib2VobS5jIChQUk9DRURVUkVfT0JKRUNUX0RFU0NSSVBUT1IpOiBNZXJnZSBpbnRvIC4uCgkoZ2V0X2JvZWhtX3R5cGVfZGVzY3JpcHRvcik6IC4uLiBoZXJlLiAgQXJyYW5nZSBmb3IgdGhlCglUUkVFX1RZUEUgdG8gZ2V0IHNldCBwcm9wZXJseS4KCjIwMDEtMTItMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChjb21waWxlX3Jlc291cmNlX2ZpbGUpOiBTZXQgVFJFRV9QVUJMSUMgb24gdGhlIGNvbnN0cnVjdG9yCglvbmx5IGlmIHRoZSB0YXJnZXQgcmVxdWlyZXMgY29sbGVjdDIuCgoJKiBjbGFzcy5jIChidWlsZF9jbGFzc19yZWYpOiBNYXJrIF9Kdl9mb29DbGFzcyBERUNMX0VYVEVSTkFMLgoKMjAwMS0xMi0yMCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCUZvciBQUiBqYXZhLzQ1MDk6CgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfbGhzKSBbQ09NUE9VTkRfRVhQUl06IENvcnJlY3RseSBjb21wdXRlCglDQU5fQ09NUExFVEVfTk9STUFMTFkgZm9yIHRoZSBub2RlLgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpIFtDT01QT1VORF9FWFBSXTogRG9uJ3QKCWdlbmVyYXRlIGNvZGUgZm9yIHNlY29uZCBicmFuY2ggaWYgZmlyc3QgYnJhbmNoIGNhbid0IGNvbXBsZXRlCglub3JtYWxseS4KCShnZW5lcmF0ZV9ieXRlY29kZV9pbnNucykgW0xPT1BfRVhQUl06IERvbid0IGdlbmVyYXRlIGBnb3RvJyB0bwoJdGhlIGxvb3AgaGVhZCBpZiB0aGUgbG9vcCBib2R5IGNhbid0IGNvbXBsZXRlIG5vcm1hbGx5LgoKMjAwMS0xMi0yMCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCUZvciBQUiBqYXZhLzQ3NjY6CgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucykgW1RSWV9GSU5BTExZX0VYUFJdOiBIYW5kbGUKCWNhc2Ugd2hlcmUgYGZpbmFsbHknIGNsYXVzZSBjYW4ndCBjb21wbGV0ZSBub3JtYWxseS4KCjIwMDEtMTItMjAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglGaXhlcyBQUiBqYXZhLzUwNTc6CgkqIHBhcnNlLnkgKGFuYWx5emVfY2xpbml0X2JvZHkpOiBBZGRlZCB0aGlzX2NsYXNzIHBhcmFtZXRlci4KCUNoZWNrIGZvciBtb3JlIGNhc2VzIHdoZXJlIHdlIG11c3Qga2VlcCA8Y2xpbml0Pi4KCShtYXliZV95YW5rX2NsaW5pdCk6IENsZWFuZWQgdXAgZmxvdyBjb250cm9sLgoKMjAwMS0xMi0yMCAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUB3YWl0YWtpLm90YWdvLmFjLm56PgoKCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogRG9uJ3QgaW5pdGlhbGl6ZQoJZmluaXRfbGVnX2lkZW50aWZpZXJfbm9kZS4KCSogamF2YS10cmVlLmggKGphdmFfdHJlZV9pbmRleCk6IFJlbW92ZSBKVElfRklOSVRfTEVHX0lERU5USUZJRVJfTk9ERS4KCShmaW5pdF9sZWdfaWRlbnRpZmllcl9ub2RlKTogUmVtb3ZlLgoJKElEX0ZJTklUX1ApOiBEb24ndCBjaGVjayBmb3IgSlRJX0ZJTklUX0xFR19JREVOVElGSUVSX05PREUuCgoyMDAxLTEyLTIwICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQHdhaXRha2kub3RhZ28uYWMubno+CgoJKiBtYW5nbGUuYyAobWFuZ2xlX21lbWJlcl9uYW1lKTogRG9uJ3Qgc3BlY2lhbC1jYXNlIGZvcgoJTk9fRE9MTEFSX0lOX0xBQkVMLgoJKiBtYW5nbGVfbmFtZS5jICh1bmljb2RlX21hbmdsaW5nX2xlbmd0aCk6IExpa2V3aXNlLgoJKGFwcGVuZF91bmljb2RlX21hbmdsZWRfbmFtZSk6IExpa2V3aXNlLgoJKiBwYXJzZS55IChtYWtlX25lc3RlZF9jbGFzc19uYW1lKTogUmVtb3ZlIGRlYWQgTk9fRE9MTEFSX0lOX0xBQkVMCgljb2RlLgoKMjAwMS0xMi0yMCAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUB3YWl0YWtpLm90YWdvLmFjLm56PgoKCSogZXhwci5jIChidWlsZF9qYXZhX2FycmF5X2xlbmd0aF9hY2Nlc3MpOiBEb24ndCBmb3JjZSBudWxsIHBvaW50ZXIKCWNoZWNrIHVubGVzcyBmbGFnX2NoZWNrX3JlZmVyZW5jZXMgaXMgc2V0LgoKMjAwMS0xMi0yMCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCUZpeCBmb3IgUFIgamF2YS8zNDE3OgoJKiBwYXJzZS55IChwYXRjaF9hc3NpZ25tZW50KTogQWRkZWQgc3BlY2lhbCBwcm9jZXNzaW5nIGZvcgoJYHJldHVybicuCgkocGF0Y2hfcmV0dXJuKTogRG9uJ3QgY29udmVydCBib29sZWFucyB0byBpbnRlZ2VycywgYW5kIGRvbid0CglzcGVjaWFsLWNhc2UgYG51bGwnLgoKMjAwMS0xMi0yMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogY29uZmlnLWxhbmcuaW4gKGRpZmZfZXhjbHVkZXMpOiBSZW1vdmUuCgoyMDAxLTEyLTE3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBnY2oudGV4aTogVXBkYXRlIGxpbmsgdG8gR0NDIG1hbnVhbC4KCjIwMDEtMTItMTcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKGxpbmtfbmVzdGVkX2NsYXNzX3RvX2VuY2xvc2luZyk6IFJlbW92ZWQgdXNlbGVzcwoJc3RhdGVtZW50LgoKMjAwMS0xMi0xNiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogbWFuZ2xlLmMgKG1hbmdsZV9tZXRob2RfZGVjbCk6IE5ldmVyIGVtaXQgYEMyJyBjb25zdHJ1Y3Rvci4KCUZpeGVzIFBSIGphdmEvNTA4OC4KCjIwMDEtMTItMTYgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIENoYW5nZUxvZywgTWFrZS1sYW5nLmluLCBjbGFzcy5jLCBleHByLmMsIGdjai50ZXhpLCBqYXZhLXRyZWUuaCwKCWpjZi1wYXJzZS5jLCBqY2Ytd3JpdGUuYywgbGV4LmMsIHBhcnNlLmgsIHBhcnNlLnksIHZlcmlmeS5jOiBGaXgKCXNwZWxsaW5nIGVycm9ycy4KCjIwMDEtMTItMTYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxleC5jIChqYXZhX3JlYWRfdW5pY29kZSwgamF2YV9sZXgpOiBVc2UgaGV4X3AvaGV4X3ZhbHVlLgoKMjAwMS0xMi0xNiAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUB3YWl0YWtpLm90YWdvLmFjLm56PgoKCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogQnVpbGQgb3RhYmxlX3R5cGUgY29ycmVjdGx5LgoJb3RhYmxlX2RlY2wgaXMgYW4gb3RhYmxlX3R5cGUuCgoyMDAxLTEyLTE1ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQHdhaXRha2kub3RhZ28uYWMubno+CgoJKiBqYXZhLXRyZWUuaCAob3RhYmxlX21ldGhvZHMsIG90YWJsZV9kZWNsLCBvdGFibGVfc3ltc19kZWNsLAoJb3RhYmxlX3R5cGUsIG90YWJsZV9wdHJfdHlwZSwgbWV0aG9kX3N5bWJvbF90eXBlLAoJbWV0aG9kX3N5bWJvbHNfYXJyYXlfdHlwZSwgbWV0aG9kX3N5bWJvbHNfYXJyYXlfcHRyX3R5cGUpOiBOZXcKCWZpZWxkL2dsb2JhbCB0cmVlIGRlZmluaXRpb25zLgoJKGZsYWdfaW5kaXJlY3RfZGlzcGF0Y2gpOiBOZXcgZmxhZy4KCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBuZXcgb3RhYmxlIGFuZAoJb3RhYmxlX3N5bXMgdHlwZSBub2RlcyBhbmQgZGVjbHMuIEFkZCBuZXcgZmllbGQgImluZGV4IiB0bwoJbWV0aG9kX3R5cGVfbm9kZS4KCSogY2xhc3MuYyAoYnVpbGRfbWV0aG9kX3N5bWJvbHNfZW50cnkpOiBOZXcgZnVuY3Rpb24uCgkobWFrZV9tZXRob2RfdmFsdWUpOiBTZXQgImluZGV4IiB0byB0byBtZXRob2QncyB2dGFibGUgaW5kZXggZm9yCgl2aXJ0dWFsIG1ldGhvZHMgd2hlbiBpbmRpcmVjdC1kaXNwYXRjaCBpcyBub3QgdXNlZC4KCShtYWtlX2NsYXNzX2RhdGEpOiBGb3IgaW5kaXJlY3QtZGlzcGF0Y2gsIGRvbid0IGVtaXQgdGhlIGR0YWJsZV9kZWNsLAoJYW5kIHNldCB2dGFibGVfbWV0aG9kX2NvdW50IHRvIC0xLiBTZXQgb3RhYmxlIGFuZCBvdGFibGVfc3ltcyBmaWVsZAoJaWYgaW5kaXJlY3QtZGlzcGF0Y2ggaXMgdXNlZCBhbmQgdGhlcmUgd2FzIHNvbWV0aGluZyB0byBwdXQgaW4gdGhlbS4KCShidWlsZF9tZXRob2Rfc3ltYm9sc19lbnRyeSk6IE5ldyBmdW5jdGlvbi4KCShlbWl0X29mZnNldF9zeW1ib2xfdGFibGUpOiBOZXcgZnVuY3Rpb24uCgkqIGV4cHIuYyAoZ2V0X29mZnNldF90YWJsZV9pbmRleCk6IE5ldyBmdW5jdGlvbi4KCShidWlsZF9pbnZva2V2aXJ0dWFsKTogQnVpbGQgYXJyYXkgcmVmZXJlbmNlIHRvIG90YWJsZSBhdCB0aGUgaW5kZXgKCXJldHVybmVkIGJ5IGdldF9vZmZzZXRfdGFibGVfaW5kZXgsIGFuZCB1c2UgdGhlIHJlc3VsdCBhcyB0aGUgdnRhYmxlCglvZmZzZXQuCgkoYnVpbGRfaW52b2tlaW50ZXJmYWNlKTogU2ltaWxhci4KCSogamNmLXBhcnNlLmMgKHl5cGFyc2UpOiBJZiBpbmRpcmVjdC1kaXNwYXRjaCwgY2FsbAoJZW1pdF9vZmZzZXRfc3ltYm9sX3RhYmxlIGF0IHRoZSBlbmQgb2YgY29tcGlsYXRpb24sIGFmdGVyIGFsbCBjbGFzc2VzCgloYXZlIGJlZW4gZ2VuZXJhdGVkLgoJKiBqdnNwZWMuYzogRG9uJ3QgcGFzcyBmaW5kaXJlY3QtZGlzcGF0Y2ggdG8ganZnZW5tYWluLgoJKiBsYW5nLmMgKGZsYWdfaW5kaXJlY3RfZGlzcGF0Y2gpOiBEZWZpbmUuCgkobGFuZ19mX29wdGlvbnMpOiBBZGQgaW5kaXJlY3QtZGlzcGF0Y2ggZmxhZy4KCjIwMDEtMTItMTQgIE1hdHRoaWFzIEtsb3NlICA8ZG9rb0BkZWJpYW4ub3JnPgoKCSogZ2NqLnRleGk6IE1hcmt1cCBmb3IgbWFuIHBhZ2UgZ2VuZXJhdGlvbi4gRG9jdW1lbnQgbWlzc2luZwoJb3B0aW9ucyBwcmludGVkIGJ5IDx0b29sPiAtLWhlbHAuCglUZXJtaW5hdGUgZGVzY3JpcHRpb24gb2YgZ2lqJ3MgLW1zIG9wdGlvbiB3aXRoIGEgZG90LgoJKiBNYWtlLWxhbmcuaW4gKCQoc3JjZGlyKS9qYXZhLyouMSk6IE5ldyB0YXJnZXRzLgoJKGphdmEuZ2VuZXJhdGVkLW1hbnBhZ2VzIGphdmEuaW5zdGFsbC1tYW4sIGphdmEudW5pbnN0YWxsLAoJamF2YS1tYWludGFpbmVyLWNsZWFuKSBVcGRhdGVkLgoKMjAwMS0xMi0xNCAgSGFucyBCb2VobSAgPEhhbnNfQm9laG1AaHAuY29tPgoKCSogY2xhc3MuYyAoZ2V0X2Rpc3BhdGNoX3RhYmxlKTogRml4IGphdmEgdnRhYmxlIGxheW91dAoJZm9yIFRBUkdFVF9WVEFCTEVfVVNFU19ERVNDUklQVE9SUy4KCSogZGVjbC5jIChqYXZhX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZQoJYWxsb2Nfbm9fZmluYWxpemVyX25vZGUsIGZpbmFsaXplX2lkZW50aWZpZXJfbm9kZS4KCSogZXhwci5jIChjbGFzc19oYXNfZmluYWxpemVfbWV0aG9kKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9qYXZhX05FVyk6IEdlbmVyYXRlIGNhbGxzIGZvciBmaW5hbGl6ZXItZnJlZSBhbGxvY2F0aW9uLgoJKGJ1aWxkX2ludm9rZXZpcnR1YWwpOiBGaXggamF2YSB2dGFibGUgbGF5b3V0IGZvcgoJVEFSR0VUX1ZUQUJMRV9VU0VTX0RFU0NSSVBUT1JTLgoJKiBqYXZhLXRyZWUuaCAoZW51bSBqYXZhX3RyZWVfaW5kZXgpOiBOZXcgZW50cmllczoKCUpUSV9BTExPQ19OT19GSU5BTElaRVJfTk9ERSwgSlRJX0ZJTkFMSVpFX0lERU5USUZJRVJfTk9ERS4KCShhbGxvY19ub19maW5hbGl6ZXJfbm9kZSwgZmluYWxpemVfZGVpbnRpZmllcl9ub2RlKTogTmV3IG1hY3Jvcy4KCShjbGFzc19oYXNfZmluYWxpemVfbWV0aG9kKTogZGVjbGFyZS4KCShIQVNfRklOQUxJWkVSX1ApOiBOZXcgbWFjcm8uCgkqIHBhcnNlLnkgKHBhdGNoX2ludm9rZSk6IEdlbmVyYXRlIGNhbGxzIGZvciBmaW5hbGl6ZXItZnJlZQoJYWxsb2NhdGlvbi4KCjIwMDEtMTItMTIgIE1hdHRoaWFzIEtsb3NlICA8ZG9rb0BkZWJpYW4ub3JnPgoKCSogTWFrZS1sYW5nLmluOiBKQVZBX0lOU1RBTExfTkFNRSwgSkFWQV9DUk9TU19OQU1FOiBSZW1vdmUKCXdoaXRlc3BhY2UgYXQgZW5kIG9mIGxpbmUuCgoyMDAxLTEyLTExICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBsZXguYyAoamF2YV9pbml0X2xleCk6IERlZmluZSB3ZmxfdG9fc3RyaW5nIGFzCglnbnUuZ2NqLnJ1bnRpbWUuU3RyaW5nQnVmZmVyIHVubGVzcyBnZW5lcmF0aW5nIGJ5dGVjb2RlLgoKMjAwMS0xMi0xMSAgSmVmZiBTdHVybSAgPGpzdHVybUBvbmUtcG9pbnQuY29tPgoKCSogY2xhc3MuYyAobWFrZV9tZXRob2RfdmFsdWUpOiBVc2UgbnVsbF9wb2ludGVyX25vZGUgdG8KCXJlcHJlc2VudCBlbXB0eSBleGNlcHRpb24gdGFibGUuCgoyMDAxLTEyLTEwICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpIFtTV0lUQ0hfRVhQUl06IFVzZSBTV0lUQ0hfSEFTX0RFRkFVTFQuCgoyMDAxLTEyLTEwICBEb3VnbGFzIEIuIFJ1cHAgIDxydXBwQGduYXQuY29tPgoKCSogTWFrZS1sYW5nLmluIChqdnNwZWMubyk6IEFkZCAkKE9VVFBVVF9PUFRJT04pLgoKMjAwMS0xMi0wOSAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBjaGVjay1pbml0LmMgKGN1cnJlbnRfc3dpdGNoX2hhc19kZWZhdWx0KTogIE5ldyBzdGF0aWMgZmllbGQuCgkoY2hlY2tfaW5pdCk6ICBDYXNlIERFRkFVTFRfRVhQUjogU2V0IGN1cnJlbnRfc3dpdGNoX2hhc19kZWZhdWx0LgoJQ2FzZSBTV0lUQ0hfRVhQUjogIFNhdmUvcmVzdG9yZSBjdXJyZW50X3N3aXRjaF9oYXNfZGVmYXVsdC4gIElmIG5vCglERUZBVUxUX0VYUFIgc2Vlbiwgc2ltdWxhdGUgYSBkZWZhdWx0IGFsdGVybmF0aXZlIHRoYXQgY29waWVzIHN0YXRlLgoKMjAwMS0xMi0wOSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KTogRG9uJ3QgYWxsb3cgcHJlLSBvciBwb3N0LSBpbmNyZW1lbnQKCW9yIGRlY3JlbWVudCBvZiBmaW5hbCB2YXJpYWJsZS4KCShmaW5hbF9hc3NpZ25fZXJyb3IpOiBNaW5vciBlcnJvciBtZXNzYWdlIHJld29yZGluZy4KCjIwMDEtMTItMDggIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGphdmEtdHJlZS5oOiBGaXhlZCB0eXBvLgoKCSogZ2phdmFoLmMgKGRlY29tcGlsZV9tZXRob2QpOiBEb24ndCBkZWNvbXBpbGUgdG8gYHJldHVybiB0aGlzJwoJZm9yIHN0YXRpYyBtZXRob2RzLgoKCSogZ2phdmFoLmMgKGN4eF9rZXl3b3Jkcyk6IFJlLXNvcnRlZC4KCSogbGV4LmMgKGN4eF9rZXl3b3Jkcyk6IFJlLXNvcnRlZC4KCgkqIGdqYXZhaC5jIChIQU5ETEVfTUVUSE9EKTogU2V0IGBkZWNvbXBpbGVkJyBiZWZvcmUgZG9pbmcgYW55dGhpbmcKCWVsc2UuCgoJKiBnamF2YWguYyAocHJpbnRfbmFtZWxldCk6IENsZWFyIHN1Ym5hbWVsZXRzLgoJKEhBTkRMRV9NRVRIT0QpOiBTZXQgYG1ldGhvZF9wcmludGVkJyBlYXJsaWVyLgoKMjAwMS0xMi0wNyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogbGFuZy5jIChsYW5nX2Zfb3B0aW9ucyk6IEFkZGVkCglvcHRpbWl6ZS1zdGF0aWMtY2xhc3MtaW5pdGlhbGl6YXRpb24uCgkoamF2YV9kZWNvZGVfb3B0aW9uKTogUmVtb3ZlZCBzcGVjaWFsIGNhc2UuCgoyMDAxLTEyLTA3ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6ICBGaXggdHlwbyBmcmVlaW5nIG1lbW9yeSB0d2ljZS4KCjIwMDEtMTItMDUgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCVJlc3RvcmUgc3VwcG9ydCBmb3Igc3RhdGljIGNsYXNzIGluaXRpYWxpemF0aW9uIG9wdGltaXphdGlvbi4KCSogamF2YS10cmVlLmggKFNUQVRJQ19DTEFTU19JTklUX09QVF9QKTogUmUtZW5hYmxlLgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2ludCk6ICBBdCBlbmQgb2YgQkxPQ0sgaGFuZGxlIGluaXRpYWxpemF0aW9uCglibG9ja3MsIHdoaWNoIHVzZWQgdG8gYmUgZG9uZSBpbiBqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2QgYnV0IGRpZAoJbm90IGhhbmRsZSB0aGUgY2FzZSB3aGVyZSBjaGVja19mb3JfaW5pdGlhbGl6YXRpb24gbWlnaHQgYWxsb2NhdGUKCW1vcmUgdGhhbiBhIHdvcmQgb2YgYml0cy4KCSogZGVjbC5jIChsYW5nX21ha2VfdHJlZSk6ICBUaGUgc21pYyBmaWVsZCBpcyBub3cgYSB0cmVlLgoJKiBleHByLmMgKGJ1aWxkX2NsYXNzX2luaXQpOiAgU2V0IERFQ0xfRlVOQ1RJT05fSU5JVF9URVNUX0NMQVNTIGZpZWxkLgoJKiBqYXZhLXRyZWUuaCAoREVDTF9GVU5DVElPTl9JTklUX1RFU1RfVEFCTEUpOiAgTmV3IG1hY3JvLgoKCSogcGFyc2UueSAoZW1pdF90ZXN0X2luaXRpYWxpemF0aW9uKTogIENvbWJpbmUgaGFzaF9sb29rdXAgY2FsbHMuCgoJKiBqYXZhLXRyZWUuaCAoREVDTF9GVU5DVElPTl9TVEFUSUNfTUVUSE9EX0lOVk9DQVRJT05fQ09NUE9VTkQpOgoJQ2hhbmdlIGZyb20gYSBoYXNoIHRhYmxlIHRvIGEgbGlzdC4KCShzdHJ1Y3RfbGFuZ19kZWNsKTogIENoYW5nZSBmaWVsZCAnc21pYycgdG8gbWF0Y2guCgkqIGNsYXNzLmMgKGFkZF9tZXRob2RfMSk6ICBJbml0aWFsaXplCglERUNMX0ZVTkNUSU9OX1NUQVRJQ19NRVRIT0RfSU5WT0NBVElPTl9DT01QT1VORCB0byBudWxsIGxpc3QuCgkqIHBhcnNlLnkgKGFkanVzdF9pbml0X3Rlc3RfaW5pdGlhbGl6YXRpb24pOiAgUmVtb3ZlZCAtIGlubGluZWQgaW50byAtCgkoamF2YV9leHBhbmRfbWV0aG9kX2JvZGllcyk6IC1oZXJlLCBzaW5jZSAnc21pYycgaXMgbm93IGEgbGlzdC4KCShwYXRjaF9pbnZva2UpOiAgQWRkIHRvICdzbWljJyBsaXN0LCBpbnN0ZWFkIG9mIGhhc2hfbG9va3VwLgoKCSogY2hlY2staW5pdC5jIChXT1JEX1NJWkUpOiAgVXNlIEJJVFNfUEVSX1VOSVQuCgoJKiBjbGFzcy5jIChqYXZhX2hhc2hfY29tcGFyZV90cmVlX25vZGUpOiAgRml4IGNhc3RzLgoKMjAwMS0xMi0wNCAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBjaGVjay1pbml0LmM6ICAgSGFuZGxlIGRlZmluaXRlIHVuYXNzaWdubWVudCB0byBmaW5hbHMgaW4gYWRkaXRpb24KCXRvIGRlZmluaXRlIGFzc2lnbm1lbnQuCgkobG9vcF9jdXJyZW50X2xvY2Fscyk6ICBOZXcgZmllbGQuCgkobnVtX2N1cnJlbnRfbG9jYWxzLCBpbnQgc3RhcnRfY3VycmVudF9sb2NhbHMsIG51bV9jdXJyZW50X3dvcmRzKToKCU1ha2Ugc3RhdGljLgoJKFNFVF9QLCBDTEVBUl9QLCBTRVRfQklUKTogIEFkZCBuZWVkZWQgYnV0IG1pc3NpbmcgcGFyZW50aGVzZXMuCgkoQVNTSUdORURfUCwgVU5BU1NJR05FRF9QLCBTRVRfQVNTSUdORUQsIFNFVF9VTkFTU0lHTkVELAoJQ0xFQVJfQVNTSUdORUQsIENMRUFSX1VOQVNTSUdORUQpOiAgTmV3IG1hY3Jvcy4KCShnZXRfdmFyaWFibGVfZGVjbCwgY2hlY2tfZmluYWxfcmVhc3NpZ25lZCk6ICBOZXcgZnVuY3Rpb25zLgoJKGNoZWNrX2luaXQsIGNoZWNrX2Jvb2xfaW5pdCk6ICBNb2RpZnkgYXMgbmVlZGVkIGZvciBjaGVja2luZyBmaW5hbHMuCgkoY2hlY2tfZm9yX2luaXRpYWxpemF0aW9uKTogIFRha2UgZXh0cmEgcGFyYW1ldGVyIGFuZCByZXR1cm4gdm9pZC4KCURvIGV4dHJhIHN0YXJ0LXVwIGxvZ2ljIHRvIGNoZWNrIGZpbmFsIGZpZWxkcyBmb3IgYXNzaWdubWVudC4KCSogcGFyc2UueSAoY2hlY2tfc3RhdGljX2ZpbmFsX3ZhcmlhYmxlX2Fzc2lnbm1lbnRfZmxhZywKCXJlc2V0X3N0YXRpY19maW5hbF92YXJpYWJsZV9hc3NpZ25tZW50X2ZsYWcsIGNoZWNrX2ZpbmFsX2Fzc2lnbm1lbnQsCgljaGVja19maW5hbF92YXJpYWJsZV9sb2NhbF9hc3NpZ25tZW50X2ZsYWcsCglyZXNldF9maW5hbF92YXJpYWJsZV9pbmRpcmVjdF9hc3NpZ25tZW50X2ZsYWcsCglyZXNldF9maW5hbF92YXJpYWJsZV9nbG9iYWxfYXNzaWdubWVudF9mbGFnKTogIFJlbW92ZSBmdW5jdGlvbnMuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcywgb3V0ZXJfZmllbGRfYWNjZXNzX2ZpeCwKCXBhdGNoX2Fzc2lnbm1lbnQpOiBSZW1vdmUgbm8tbG9uZ2VyIHVzZWQgbG9naWMuCgkqIGphdmEtdHJlZS5oIChERUNMX0ZJRUxEX0ZJTkFMX0lVRCk6ICBDaGFuZ2UgdXNhZ2UgYW5kIGNvbW1lbnRzLgoJKiBwYXJzZS55IChyZWdpc3Rlcl9maWVsZHMsIGphdmFfY29tcGxldGVfdHJlZSk6ICBVcGRhdGUgYWNjb3JkaW5nbHkuCgoJKiBjaGVjay1pbml0LmMgKEFMTE9DX1dPUkRTL0ZSRUVfV09SRFMpOiAgVXNlIHhtYWxsb2MvZnJlZSwgbm90IGFsbG9jYS4KCShERUNMQVJFX0JVRkZFUlMsIFJFTEVBU0VfQlVGRkVSUywgQUxMT0NfQlVGRkVSLCBGUkVFX0JVRkZFUik6ICBOZXcuCgkoY2hlY2tfY29uZF9pbml0LCBjaGVja19ib29sMl9pbml0KTogIFVzZSBERUNMQVJFX0JVRkZFUlMuCgoJKiBqYXZhLXRyZWUuaCAoU1RBVElDX0NMQVNTX0lOSVRfT1BUX1ApOiAgVGVtcG9yYXJpbHkgdHVybiBvZmYuCgoJKiBqYXZhLXRyZWUuaCAoREVDTCBGSU5BTCk6ICBOZXcgYml0LWZpZWxkLgoJKE1FVEhPRF9GSU5BTCwgRklFTERfRklOQUwsIENMQVNTX0ZJTkFMKTogIERlZmluZSBhcyBERUNMX0ZJTkFMLgoJKExPQ0FMX0ZJTkFMX1ApOiAgVXNlIERFQ0xfRklOQUwgcmF0aGVyIHRoYW4gb2xkIExPQ0FMX0ZJTkFMLgoJKERFQ0xfSU5JVF9DQUxMU19USElTKTogIE5ldyBtYWNyby4KCShzdHJ1Y3QgbGFuZ19kZWNsKTogIE5ldyBiaXQtZmllbGQgaW5pdF9jYWxsc190aGlzLgoJKERFQ0xfRlVOQ1RJT05fQUxMX0ZJTkFMX0lOSVRJQUxJWkVELCBERUNMX0ZJRUxEX0ZJTkFMX0xJSUMsCglERUNMX0ZJRUxEX0ZJTkFMX0lFUlIsIExPQ0FMX0ZJTkFMLCBUWVBFX0hBU19GSU5BTF9WQVJJQUJMRQoJKERFQ0xfQklUX0lOREVYKTogIENoYW5nZSB0byB1c2UgcG9pbnRlcl9hbGlhc19zZXQgc2luY2Ugd2Ugbm93Cgl1c2UgaXQgZm9yIGJvdGggbG9jYWwgdmFyaWFibGVzIGFuZCBmaW5hbCBmaWVsZHMuCgkoc3RydWN0IGxhbmdfZGVjbF92YXIpOiAgUmVtb3ZlIGJpdC1maWVsZHMgZmluYWxfbGlpYywgZmluYWxfaWVyciwKCWFuZCBsb2NhbF9maW5hbC4KCShzdHJ1Y3QgbGFuZ190eXBlKTogIFJlbW92ZSBoZnYgYml0LWZpZWxkLgoJKGNoZWNrX2Zvcl9pbml0aWFsaXphdGlvbik6ICBDaGFuZ2UgdG8gcmV0dXJuIHZvaWQuCgoJKiBqYXZhLXRyZWUuaCAoSVNfQVJSQVlfTEVOR1RIX0FDQ0VTUyk6ICBOZXcgbWFjcm9zLgoJKiBleHByLmMgKGJ1aWxkX2phdmFfYXJyYXlfbGVuZ3RoX2FjY2Vzcyk6ICBTZXQgSVNfQVJSQVlfTEVOR1RIX0FDQ0VTUy4KCSogY2hlY2staW5pdC5jIChmaW5hbF9hc3NpZ25fZXJyb3IpOiAgTmV3IGhlbHBlciBmdW5jdGlvbi4KCShjaGVja19maW5hbF9yZWFzc2lnbmVkLCBjaGVja19pbml0KTogIFVzZSBpdC4KCShjaGVja19pbml0KTogIEFsc28gY2hlY2sgSVNfQVJSQVlfTEVOR1RIX0FDQ0VTUyBmb3IgQVJSQVkubGVuZ3RoLgoKCSogamF2YS10cmVlLmggKHN0cnVjdCBsYW5nX2RlY2wsIHN0cnVjdCBsYW5nX2RlY2xfdmFyKTogIENoYW5nZSBhbGwKCWJpdC1maWVsZHMgdG8gdW5zaWduZWQuCgoyMDAxLTEyLTAzICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX2Jpbm9wKTogIE1pbm9yIGNvbnN0YW50IGZvbGRpbmcuCgoJKiBwYXJzZS55IChidWlsZF9jdXJyZW50X3RoaXNuKTogIFNob3J0ZXIgJ2J1ZmZlcicuCgoyMDAxLTEyLTAzICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGRlY2wuYyAoY29tcGxldGVfc3RhcnRfamF2YV9tZXRob2QpOiAgTm93IGdlbmVyYXRlIFRSWV9GSU5BTExZX0VYUFIKCWluc3RlYWQgb2YgQ0xFQU5VUF9QT0lOVF9FWFBSIGFuZCBXSVRIX0NMRUFOVVBfRVhQUi4KCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogIFJlbW92ZSBzdXBwb3J0IGZvcgoJQ0xFQU5VUF9QT0lOVF9FWFBSIGFuZCBXSVRIX0NMRUFOVVBfRVhQUiBhcyB0aGV5IGFyZSBubyBsb25nZXIgdXNlZC4KCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KTogIExpa2V3aXNlLgoKMjAwMS0xMi0wMyAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiB2ZXJpZnkuYyAoc3Vicm91dGluZV9uZXN0aW5nKTogIE5ldyBmdW5jdGlvbi4KCSh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6ICBVc2UgaXQgdG8gZml4IGxvZ2ljIGZvciBjaGVja2luZyB0aGF0Cgl3ZSdyZSBkb25lIHdpdGggdGhlIGN1cnJlbnQgc3Vicm91dGluZS4KCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9uKTogRm9yIE9QQ09ERV9jaGVja2Nhc3QgYW5kCglPUENPREVfaW5zdGFuY2VvZiB1c2UgUE9QX1RZUEUgbWFjcm8gZm9yIGJldHRlciBkaWFnbm9zdGljcy4KCjIwMDEtMTItMDMgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogamNmLmg6ICBGaXggb2J2aW91cyB0eXBvIGluIGNvbW1lbnQuCgkqIHR5cGVjay5jIChidWlsZF9udWxsX3NpZ25hdHVyZSk6ICBBZGQgY29tbWVudC4KCjIwMDEtMTItMDMgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGV4cHIuYzogUmVtb3ZlIGxlYWRpbmcgY2FwaXRhbCBmcm9tIGRpYWdub3N0aWMgbWVzc2FnZXMsIGFzCglwZXIgR05VIGNvZGluZyBzdGFuZGFyZHMuCgkqIGpjZi1pby5jOiBTaW1pbGFybHkuCgkqIGpjZi1wYXJzZS5jOiBTaW1pbGFybHkuCgkqIGp2LXNjYW4uYzogU2ltaWxhcmx5LgoJKiBqdnNwZWMuYzogU2ltaWxhcmx5LgoJKiBtYW5nbGUuYzogU2ltaWxhcmx5LgoKMjAwMS0xMi0wMiAgVGFuZyBDaGluZy1IdWkgIDxuaWNob2xhc0Bjcy5udGh1LmVkdS50dz4KCSAgICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9hcnJheWFjY2Vzcyk6IENhbGwgc2F2ZV9leHByIG9uIGFycmF5IGZvcgoJY29ycmVjdCBldmFsdWF0aW9uIG9yZGVyLCBtb2RpZmllZCBjb21tZW50LCBmaXhlZCBpbmRlbnRhdGlvbi4KCSogcGFyc2UueTogKHBhdGNoX2Fzc2lnbm1lbnQpOiBDb3JyZWN0bHkgZXh0cmFjdCB0aGUgYXJyYXkgYmFzZQoJZnJvbSB0aGUgdHJlZSBnZW5lcmF0ZSBieSBidWlsZF9qYXZhX2FycmF5YWNjZXNzLCBhZGRlZCBjb21tZW50cy4KCShwYXRjaF9hcnJheV9yZWYpOiBSZW1vdmUgU0FWRV9FWFBSIG9uIEFSUkFZX1JFRi4KCUZpeGVzIFBSIGphdmEvMzA5NiwgUFIgamF2YS8zODAzLCBQUiBqYXZhLzM5NjUuCgoyMDAxLTEyLTAxICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBleHByLmMgKGV4cGFuZF9ieXRlX2NvZGUpOiBSZW1vdmUgdHJhaWxpbmcgcGVyaW9kcyBmcm9tIG1lc3NhZ2VzLgoJKiBqY2YtcGFyc2UuYyAobG9hZF9jbGFzcywgamNmX3BhcnNlKTogU2ltaWxhcmx5LgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfY2xhc3NmaWxlKTogU2ltaWxhcmx5LgoJKiBsZXguYyAoamF2YV9sZXgpOiBTaW1pbGFybHkuCgoyMDAxLTExLTMwICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQHdhaXRha2kub3RhZ28uYWMubno+CgoJKiBjbGFzcy5jIChhZGRfaW50ZXJmYWNlX2RvKTogU2V0IEJJTkZPX1ZQVFJfRklFTEQuCgoyMDAxLTExLTI5ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEuZ2VuZXJhdGVkLW1hbnBhZ2VzKTogTmV3IGR1bW15IHRhcmdldC4KCjIwMDEtMTEtMjcgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSoganZzcGVjLmMgKGp2Z2VubWFpbl9zcGVjKTogQ2Fubm90IHVzZSAldW1haW4sIGJyZWFrcwoJQVNNX0ZJTkFMX1NQRUMuCgkobGFuZ19zcGVjaWZpY19wcmVfbGluayk6IFVzZSBzZXRfaW5wdXQgdG8gc2V0IGlucHV0X2ZpbGVuYW1lLgoJQXBwZW5kIGBtYWluJyBoZXJlLgoJKiBqdmdlbm1haW4uYyAodXNhZ2UpOiBBcHBlbmQgbGl0ZXJhbCBgbWFpbicgdG8gQ0xBU1NOQU1FLgoJKG1haW4pOiBGaXggZGVmaW5pdGlvbi4KCVN0cmlwIGBtYWluJyBmcm9tIGNsYXNzbmFtZS4KCUZpeGVzIFBSIGphdmEvMjI3LgoKMjAwMS0xMS0xOCAgUm9nZXIgU2F5bGUgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHBhcnNlLmggKGphdmFfZXhwYW5kX3N3aXRjaCk6IFJlbW92ZSBvbGQgcHJvdG90eXBlLgoKMjAwMS0xMS0xOCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCUZpeCBmb3IgUFIgamF2YS8xNDAxOgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpIFtiaW5vcF06IEhhbmRsZSBjYXNlIHdoZXJlCglhcmcwIGlzIG51bGwuCgkoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpIFtNT0RJRllfRVhQUl06IEhhbmRsZSBgT1A9JyBjYXNlCgljb3JyZWN0bHkuCgoyMDAxLTExLTE4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBsYW5nLmMgKGZpbmlzaF9wYXJzZSk6IFJlbmFtZSB0byBqYXZhX2ZpbmlzaC4KCShMQU5HX0hPT0tTX0ZJTklTSCwgamF2YV9maW5pc2gpOiBOZXcuCgoyMDAxLTExLTE1ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogUmVuYW1lIGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcuCgkqIGphdmEtdHJlZS5oOiBOZXcgcHJvdG90eXBlLgoJKiBsYW5nLmMgKGphdmFfaW5pdCk6IFVwZGF0ZSBwcm90b3R5cGUuICBDb21iaW5lIHdpdGggb2xkIGluaXRfcGFyc2UuCgoyMDAxLTExLTEzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBnamF2YWguYyAobWV0aG9kX3NpZ25hdHVyZSk6IE5ldyBnbG9iYWwuCgkoSEFORExFX01FVEhPRCk6IFNldCBpdC4KCShkZWNvbXBpbGVfcmV0dXJuX3N0YXRlbWVudCk6IE5ldyBmdW5jdGlvbi4KCShkZWNvbXBpbGVfbWV0aG9kKTogVXNlIGl0LgoJKHByaW50X21ldGhvZF9pbmZvKTogUmVtb3ZlZCBgc3ludGgnIGFyZ3VtZW50LgoKMjAwMS0xMS0wOSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogamF2YS10cmVlLmggKGphdmFfc2V0X3l5ZGVidWcpOiBOZXcuCgkqIGpjZi1wYXJzZS5jIChzZXRfeXlkZWJ1Zyk6IFJlbmFtZSBqYXZhX3NldF95eWRlYnVnLgoJKiBsYW5nLmMgKExBTkdfSE9PS1NfU0VUX1lZREVCVUcpOiBPdmVycmlkZS4KCShwcmludF9sYW5nX2RlY2wsIHByaW50X2xhbmdfdHlwZSwgcHJpbnRfbGFuZ19pZGVudGlmaWVyLAoJcHJpbnRfbGFuZ19zdGF0aXN0aWNzLCBsYW5nX3ByaW50X3hub2RlKTogUmVtb3ZlLgoKMjAwMS0xMS0wOSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogamNmLXBhcnNlLmMgKGluaXRfbGV4KTogUmVtb3ZlLgoJKiBsYW5nLmMgKGxhbmd1YWdlX3N0cmluZywgbGFuZ19pZGVudGlmeSk6IFJlbW92ZS4KCShzdHJ1Y3QgbGFuZ19ob29rcyk6IENvbnN0aWZ5LgoJKExBTkdfSE9PS1NfTkFNRSk6IE92ZXJyaWRlLgoJKGluaXRfcGFyc2UpOiBVcGRhdGUuCgoyMDAxLTExLTA4ICBBbmRyZWFzIEZyYW5jayAgPGFmcmFuY2tAZ214LmRlPgoKCSogTWFrZS1sYW5nLmluIChKQVZBX0lOU1RBTExfTkFNRSwgSkFWQV9DUk9TU19OQU1FKTogSGFuZGxlCglwcm9ncmFtX3RyYW5zZm9ybV9uYW1lIHRoZSB3YXkgc3VnZ2VzdGVkIGJ5IGF1dG9jb25mLgoJKGphdmEuaW5zdGFsbC1jb21tb24pOiBBbHNvIHRyYW5zZm9ybSBhdXhpbGlhcnkgcHJvZ3JhbSBuYW1lcyB3aXRoCglwcm9ncmFtX3RyYW5zZm9ybV9uYW1lLgoKMjAwMS0xMS0wOCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogcGFyc2UueSAodHJhcF9vdmVyZmxvd19jb3JuZXJfY2FzZSk6IE5ldyBydWxlLgoJKHVuYXJ5X2V4cHJlc3Npb24pOiBVc2UgaXQuCgkqIGxleC5jIChqYXZhX2luaXRfbGV4KTogRG9uJ3Qgc2V0IG1pbnVzX3NlZW4uCgkoeXlsZXgpOiBEb24ndCB1c2UgbWludXNfc2Vlbi4gIENvbW11bmljYXRlIG92ZXJmbG93IHRvIHBhcnNlciBmb3IKCWl0IHRvIGhhbmRsZS4KCShlcnJvcl9pZl9udW1lcmljX292ZXJmbG93KTogTmV3IGZ1bmN0aW9uLgoJKiBwYXJzZS5oIChtaW51c19zZWVuKTogUmVtb3ZlZCBmaWVsZC4KCShKQVZBX1JBRElYMTBfRkxBRyk6IE5ldyBkZWZpbmUuCgoyMDAxLTExLTA3ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJUGF0Y2ggZm9yIFBSIGphdmEvMTQxNDoKCSogcGFyc2UueSAoY2FzZV9sYWJlbF9saXN0KTogTmV3IGdsb2JhbC4KCShnb2FsKTogUmVnaXN0ZXIgY2FzZV9sYWJlbF9saXN0IHdpdGggR0MuCgkoamF2YV9jb21wbGV0ZV9saHMpOiBTYXZlIG5ldyBjYXNlIG9uIGNhc2VfbGFiZWxfbGlzdC4KCShwYXRjaF9zd2l0Y2hfc3RhdGVtZW50KTogQ2hlY2sgZm9yIGR1cGxpY2F0ZSBjYXNlIGxhYmVscy4KCjIwMDEtMTEtMDcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfYXNzaWdubWVudCk6IFJlbW92ZWQgdW51c2VkIHRoaXJkIGFyZ3VtZW50LgoJKGphdmFfY29tcGxldGVfbGhzKTogUmVtb3ZlZCB1bnVzZWQgdGhpcmQgYXJndW1lbnQgdG8gcGF0Y2hfYXNzaWdubWVudC4KCjIwMDEtMTEtMDYgIE5laWwgQm9vdGggIDxuZWlsQGNhdC5kYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBsYW5nLmM6IEluY2x1ZGUgbGFuZ2hvb2tzLWRlZi5oLgoJKiBNYWtlLWxhbmcuaW46IFVwZGF0ZS4KCjIwMDEtMTAtMzEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlLWxhbmcuaW46IFJlcGxhY2UgJChJTlRMX1RBUkdFVFMpIHdpdGggcG8tZ2VuZXJhdGVkLgoKMjAwMS0xMC0yOSAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUB3YWl0YWtpLm90YWdvLmFjLm56PgoKCSogbWFuZ2xlLmMgKGZpbmRfY29tcHJlc3Npb25fcmVjb3JkX21hdGNoKTogRG9uJ3QgbWF0Y2ggY29tcHJlc3Npb24KCXJlY29yZHMgZm9yIHBhY2thZ2UgbmFtZSBlbGVtZW50cyB1bmxlc3MgdGhleSBvY2N1ciBhdCB0aGUgc3RhcnQgb2YKCXRoZSBuYW1lLiBGaXggZm9yIFBSIGphdmEvNDcxNy4KCjIwMDEtMTAtMjUgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCgkqIGV4cHIuYyAoZXhwYW5kX2phdmFfZmllbGRfb3ApOiBEb24ndCBzcGVjaWFsLWNhc2UgcmVmZXJlbmNlcyB0bwoJamF2YS5sYW5nLlBSSU1UWVBFLlRZUEUuCgkoYnVpbGRfcHJpbXR5cGVfdHlwZV9yZWYpOiBSZW1vdmVkLgoJKiBqYXZhLXRyZWUuaCAoYnVpbGRfcHJpbXR5cGVfdHlwZV9yZWYpOiBSZW1vdmUgcHJvdG90eXBlLgoJKiBwYXJzZS55IChtYXliZV9idWlsZF9wcmltdHR5cGVfdHlwZV9yZWYpOiBSZW1vdmVkLgoJKGNvbXBsZXRlX2Z1bmN0aW9uX2FyZ3VtZW50cyk6IERvbid0IHNwZWNpYWwtY2FzZSByZWZlcmVuY2VzIHRvCglqYXZhLmxhbmcuUFJJTVRZUEUuVFlQRS4KCShwYXRjaF9hc3NpZ25tZW50KTogTGlrZXdpc2UuCgkoYXJyYXlfY29uc3RydWN0b3JfY2hlY2tfZW50cnkpOiBMaWtld2lzZS4KCjIwMDEtMTAtMjQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogbWFuZ2xlLmMgKHN0YXRpYyB0cmVlIGNvbXByZXNzaW9uX3RhYmxlKTogRml4ZWQgbGVhZGluZyBjb21tZW50LgoJKiBwYXJzZS5oIChzdHJ1Y3QgcGFyc2VyX2N0eHQpOiBGaXhlZCBmaWVsZCBjb21tZW50LgoJKiBwYXJzZS55IChjaGVja19wa2dfY2xhc3NfYWNjZXNzKTogTmV3IHByb3RvdHlwZSwgZml4ZWQgbGVhZGluZwoJY29tbWVudCwgbmV3IHBhcmFtZXRlciB1c2VkIHRvIGVtaXQgZXJyb3Igb25seSBpZiBwYXNzZWQgYXMgdHJ1ZS4KCShwYXJzZV9jaGVja19zdXBlcik6IFBhc3MgZXh0cmEgYXJndW1lbnQgdG8gY2hlY2tfcGtnX2NsYXNzX2FjY2Vzcy4KCShkb19yZXNvbHZlX2NsYXNzKTogTGlrZXdpc2UuCgkocHJvY2Vzc19pbXBvcnRzKTogTGlrZXdpc2UuCgkocmVhZF9pbXBvcnRfZGlyKTogRml4ZWQgaW5kZW50YXRpb24uCgkoZmluZF9pbl9pbXBvcnRzX29uX2RlbWFuZCk6IE5ldyBsb2NhbCBjbGFzc190eXBlX25hbWUuIExvY2FsCglub2RlX3RvX3VzZSBkZWxldGVkLiB3aGlsZSBsb29wIGNoYW5nZWQgaW50byBmb3IgbG9vcC4gUmVwb3J0CgltdWx0aXBsZSBkZWZpbml0aW9uIG9ubHkgZm9yIGFjY2Vzc2libGUgY2xhc3Nlcy4gSW1wcm92ZWQgZXJyb3IKCW1lc3NhZ2UuCgkoc3RhcnRfY29tcGxldGVfZXhwYW5kX21ldGhvZCk6IExvY2FsIGBwdHInIHJlbW92ZWQuIERFQ0xfQVJHVU1FTlRTCglhc3NpZ25lZCB0byBwYXJhbWV0ZXIgbGlzdCwgZml4ZWQgaW5kZW50YXRpb24uIHdoaWxlIGxvb3AgY2hhbmdlZAoJaW50byBmb3IgbG9vcCwgcmVzdG9yZSBUUkVFX0NIQUlOIG9uIGxvY2FsIGB0ZW0nIGJlZm9yZSB0aGUgbmV4dAoJaXRlcmF0aW9uLgoKMjAwMS0xMC0yMyAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGxhbmcuYyAobGFuZ19nZXRfYWxpYXNfc2V0KTogRGVsZXRlZC4KCjIwMDEtMTAtMjEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGdqYXZhaC5jIChqbmlfcHJpbnRfY2hhcik6IEZpeCB0aGlua28gaW4gbGFzdCBjaGFuZ2UuCgoJKiBnamF2YWguYyAoam5pX3ByaW50X2NoYXIsIGRlY29kZV9zaWduYXR1cmVfcGllY2UpOiBVc2UKCXNhZmUtY3R5cGUgbWFjcm9zIGFuZC9vciBmb2xkIGV4dHJhIGNhbGxzIGludG8gZmV3ZXIgb25lcy4KCSogbGV4LmMgKGphdmFfcmVhZF91bmljb2RlLCBqYXZhX2xleCk6IExpa2V3aXNlLgoJKiBsZXguaCAoSkFWQV9TVEFSVF9DSEFSX1AsIEpBVkFfUEFSVF9DSEFSX1AsIEpBVkFfQVNDSUlfRElHSVQsCglKQVZBX0FTQ0lJX0hFWERJR0lULCBKQVZBX0FTQ0lJX0xFVFRFUik6IExpa2V3aXNlLgoJKiBtYW5nbGVfbmFtZS5jIChhcHBlbmRfdW5pY29kZV9tYW5nbGVkX25hbWUsCgl1bmljb2RlX21hbmdsaW5nX2xlbmd0aCk6IExpa2V3aXNlLgoKMjAwMS0xMC0xNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS9sYW5nLm8pOiBEZXBlbmQgb24gbGFuZ2hvb2tzLmguCgoyMDAxLTEwLTE1ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIGxhbmcuYyAobGFuZ2hvb2tzLmgpOiBJbmNsdWRlZC4KCShMQU5HX0hPT0tTX0lOSVQpOiBSZWRlZmluZWQuCgkoTEFOR19IT09LU19JTklUX09QVElPTlMpOiBMaWtld2lzZS4KCShMQU5HX0hPT0tTX0RFQ09ERV9PUFRJT04pOiBMaWtld2lzZS4KCShzdHJ1Y3QgbGFuZ19ob29rcyBsYW5nX2hvb2tzKTogTmV3IGluaXRpYWxpemF0aW9uLgoKMjAwMS0xMC0xMSAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBwYXJzZS55IChwYXRjaF9zeW5jaHJvbml6ZWRfc3RhdGVtZW50KTogIFVzZSBhIFRSWV9GSU5BTExZX0VYUFIKCXJhdGhlciB0aGFuIGEgQ0xFQU5VUF9QT0lOVF9FWFBSL1dJVEhfQ0xFQU5VUF9FWFBSIHBhaXIuCglUaGUgZm9ybWVyIGlzIHNpbXBsZXIsIGFuZCBqY2Ytd3JpdGUuYyBoYW5kbGVzIGl0IGJldHRlci4KCShqYXZhX2NvbXBsZXRlX2xocyk6ICBObyBsb25nZXIgbmVlZCB0byBoYW5kbGUgQ0xFQU5VUF9QT0lOVF9FWFBSCglvciBXSVRIX0NMRUFOVVBfRVhQUi4KCSogamNmLXdyaXRlLmM6ICBSZXZlcnQgQWxleCdzIGNoYW5nZSBmcm9tIDIwMDAtMTAtMTguICBJdCBpcyBubwoJbG9uZ2VyIG5lZWRlZCwgYXMgd2UgYWxyZWFkeSBoYW5kbGUgZW1wdHkgVFJZX0ZJTkFMTFlfRVhQUiBib2RpZXMgZmluZS4KCgkqIHBhcnNlLnkgKHBhdGNoX2lmX2Vsc2Vfc3RhdGVtZW50KTogIElmIHRoZSBjb25kaXRpb24gaXMgY29uc3RhbnQsCglvcHRpbWl6ZSBhd2F5IHRoZSB0ZXN0LgoKMjAwMS0xMC0wOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChwYXRjaF9jYXN0KTogQ2FsbCBwYXRjaF9zdHJpbmcgb24gdGhlIGZpcnN0IG9wZXJhbmQgb2YKCXRoZSBpbmNvbWluZyBub2RlLCB1cGRhdGUgaXQgaWYgbmVjZXNzYXJ5LiBGaXhlcyBQUiBqYXZhLzQ1MTAuCgoyMDAxLTEwLTA5ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQHdhaXRha2kub3RhZ28uYWMubno+CgoJKiBwYXJzZS55IChmaW5kX2FzX2lubmVyX2NsYXNzKTogRG9uJ3QgZGlzcmVnYXJkIHRoZSBlbmNsb3Npbmcgc2NvcGUKCXdoZW4gbmFtZSBxdWFsaWZpZXIgbWF0Y2hlcyBhIHBhY2thZ2UgbmFtZS4KCjIwMDEtMTAtMDggIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCglGaXggZm9yIFBSIGphdmEvNDQ4OToKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKSBbU1dJVENIX0VYUFJdOiBBbHdheXMKCWZvcmNlIGEgbmV3IGxhYmVsIHdoZW4gY29tcHV0aW5nIGBib2R5X2Jsb2NrJy4KCjIwMDEtMTAtMDcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGpjZi1pby5jIChmb3JtYXRfdWludCk6IENvbnN0LWlmeS4KCSogbGFuZy5jIChqYXZhX3RyZWVfY29kZV90eXBlLCBqYXZhX3RyZWVfY29kZV9sZW5ndGgpOiBMaWtld2lzZS4KCSogbGV4LmMgKGphdmFfZ2V0X2xpbmVfY29sKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKGJ1aWxkX2luY2RlYyk6IExpa2V3aXNlLgoKMjAwMS0xMC0wNSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChyZWdpc3Rlcl9pbmNvbXBsZXRlX3R5cGUpOiBTZXQgSkRFUF9TVVBFUiB0byBiZSBnaXZlbgoJYSBOVUxMIGVuY2xvc2luZyBjb250ZXh0IGlmIGFwcHJvcHJpYXRlLiBGaXhlcyBQUiBqYXZhLzQ0NjYuCgoyMDAxLTEwLTAzICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX2Fzc2lnbm1lbnQpOiBVc2UgbHZhbHVlJ3Mgb3JpZ2luYWwgVFlQRSB3aGVuCglidWlsZGluZyB0aGUgZmluYWwgQ09NUE9VTkRfRVhQUi4KCSh0cnlfcmVmZXJlbmNlX2Fzc2lnbmNvbnYpOiBGaXhlZCBsZWFkaW5nIGNvbW1lbnQuCgoyMDAxLTA5LTI2ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKGNoZWNrX2ZpbmFsX3ZhcmlhYmxlX2luZGlyZWN0X2Fzc2lnbm1lbnQpOiBGb3IKCUNPTVBPVU5EX0VYUFIsIHJldHVybiBvbmx5IGlmIGZpbmFscyB3ZXJlIGZvdW5kIGluaXRpYWxpemVkCglwcm9wZXJseSwgaWYgbm90LCBrZWVwIG9uIGNoZWNraW5nLgoJKGNoZWNrX2ZpbmFsX3ZhcmlhYmxlX2dsb2JhbF9hc3NpZ25tZW50X2ZsYWcpOiBOZXcgbG9jYWwKCWVycm9yX2ZvdW5kLCBzZXQgd2hlbiBhcHByb3ByaWF0ZSBhbmQgdXNlZCB0byBkZWNpZGUgd2hldGhlciB0bwoJcmVwb3J0IHVuaW5pdGlhbGl6ZWQgZmluYWxzLiBGaXhlZCB0eXBvIGluIGNvbW1lbnQuCgoyMDAxLTA5LTIyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBGaXhlZCB0eXBvIGluIHByZWRlZl9maWxlbmFtZXMKCWxhc3QgdGhyZWUgaW5pdGlhbGl6YXRpb25zLiBGaXhlcyBQUiBqYXZhLzQzNjAuCgoyMDAxLTA5LTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAoZ2V0X2Rpc3BhdGNoX3RhYmxlKTogSGFuZGxlIGZ1bmN0aW9uIGRlc2NyaXB0b3JzLgoJKGJ1aWxkX2R0YWJsZV9kZWNsKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoYnVpbGRfaW52b2tldmlydHVhbCk6IExpa2V3aXNlLgoKMjAwMS0wOS0yMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6IEJ1aWxkIGNsYXNzIGluaXRpYWxpemF0aW9uCgl3aGVuIHN0YXRpYyBmaW5hbHMgYXJlIHVzZWQgdG8gcXVhbGlmeSBtZXRob2QgaW52b2NhdGlvbi4KCUZpeGVzIFBSIGphdmEvNDM2Ni4KCjIwMDEtMDktMTkgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2UuaDogKFdGTF9TVFJJUF9CUkFDS0VUKTogUmUtd3JpdHRlbiB1c2luZwoJYnVpbGRfdHlwZV9uYW1lX2Zyb21fYXJyYXlfbmFtZS4KCShTVFJJTkdfU1RSSVBfQlJBQ0tFVFMpOiBOZXcgbWFjcm8uCgkqIHBhcnNlLnkgKGJ1aWxkX3R5cGVfbmFtZV9mcm9tX2FycmF5X25hbWUpOiBOZXcgZnVuY3Rpb24uCgkoYXJyYXlfY3JlYXRpb25fZXhwcmVzc2lvbjopOiBBY2N1bXVsYXRlIFtdcyBpbnN0ZWFkIG9mIFtzLgoJKGNhc3RfZXhwcmVzc2lvbjopOiBBY2N1bXVsYXRlIFtdcyBpbnN0ZWFkIG9mIFtzIGFmdGVyIGNhc3QgdHlwZQoJbmFtZS4KCShidWlsZF9hcnJheV9mcm9tX25hbWUpOiBMb2NhbCBzdHJpbmcgZGVsZXRlZCwgdXNlCglidWlsZF90eXBlX25hbWVfZnJvbV9hcnJheV9uYW1lLgoJKGJ1aWxkX3VucmVzb2x2ZWRfYXJyYXlfdHlwZSk6IEFjY3VtdWxhdGUgW11zIGluc3RlYWQgb2YgW3MgYWZ0ZXIKCXR5cGUgbmFtZS4KCShyZWdpc3Rlcl9maWVsZHMpOiBGaXhlZCBjb21tZW50LgoJKHJlc29sdmVfY2xhc3MpOiBMb2NhbCBuYW1lLCBiYXNlIGRlbGV0ZWQsIG5ldyBsb2NhbHMgdG5hbWUgYW5kCglhcnJheV9kaW1zLiBVc2UgYnVpbGRfdHlwZV9uYW1lX2Zyb21fYXJyYXlfbmFtZS4gVXNlIGFycmF5X2RpbXMgdG8KCWJ1aWxkIGFycmF5IHR5cGUuCgkocHVyaWZ5X3R5cGVfbmFtZSk6IFVzZSBTVFJJTkdfU1RSSVBfQlJBQ0tFVFMuCgoyMDAxLTA5LTE4ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBwYXJzZS55OiBVc2UgVkFfT1BFTi9WQV9DTE9TRS9WQV9GSVhFREFSRyB0aHJvdWdob3V0LgoJKiBqdi1zY2FuLmM6IExpa2V3aXNlLgoKMjAwMS0wOS0xNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6IElubmVyIGNsYXNzIGNyZWF0aW9uIGNvbnRleHQKCWNoZWNrIG5vdCBlbmZvcmNlZCB3aXRoaW4gY29uc3RydWN0b3JzLiBGaXhlcyBQUiBqYXZhLzE4NzMuCgoyMDAxLTA5LTE2ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpIFtTV0lUQ0hfRVhQUl06IENhbGwKCU5PVEVfUFVTSCBmb3Igc2luZ2xlLWNhc2UgcHVzaC4gIEZpeGVzIFBSIGphdmEvNDE4OS4KCjIwMDEtMDktMTMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogamF2YS10cmVlLmggKFRZUEVfSU1QT1JUX0xJU1QpOiBOZXcgbWFjcm8uCgkoVFlQRV9JTVBPUlRfREVNQU5EX0xJU1QpOiBMaWtld2lzZS4KCShzdHJ1Y3QgbGFuZ190eXBlKTogTmV3IGZpZWxkcyBpbXBvcnRfbGlzdCBhbmQgaW1wb3J0X2RlbWFuZF9saXN0LgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2NsYXNzKTogSW5pdGlhbGl6ZSBUWVBFX0lNUE9SVF9MSVNUIGFuZAoJVFlQRV9JTVBPUlRfREVNQU5EX0xJU1Qgd2l0aCBjdHhwIGNvdW50ZXJwYXJ0cy4KCShkb19yZXNvbHZlX2NsYXNzKTogTmV3IGxvY2FsIHNhdmVkX2VuY2xvc2luZ190eXBlLCBpbml0aWFsaXplZCwKCXBhc3NlZCBhcyBwYXJhbWV0ZXIgdG8gZmluZF9pbl9pbXBvcnRzIGFuZCBmaW5kX2luX2ltcG9ydHNfb25fZGVtYW5kLgoJKGZpbmRfaW5faW1wb3J0cyk6IEFkZGVkIHBhcmFtYXRlciBlbmNsb3NpbmdfdHlwZSwgdXNlIGl0cwoJVFlQRV9JTVBPUlRfTElTVCB3aGVuIGFwcGxpY2FibGUuCgkoZmluZF9pbl9pbXBvcnRzX29uX2RlbWFuZCk6IEFkZGVkIHBhcmFtZXRlciBlbmNsb3NpbmdfdHlwZSwgdXNlCglpdHMgVFlQRV9JTVBPUlRfREVNQU5EX0xJU1Qgd2hlbiBhcHBsaWNhYmxlLiBSZW9yZ2FuaXplZCBsb2NhbHMKCWRlY2xhcmF0aW9uIGFuZCBpbml0aWFsaXphdGlvbi4KCShmb2xkX2NvbnN0YW50X2Zvcl9pbml0KTogU3dpdGNoL3Jlc3RvcmUgY3VycmVudF9jbGFzcyB0byB0aGUKCWFwcHJvcHJpYXRlIGNvbnRleHQuCgoyMDAxLTA5LTEzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogRml4IHR5cG8uCgoyMDAxLTA5LTEzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBleHByLmMgKGV4cGFuZF9pbnZva2UpOiBDb25zdC1pZmljYXRpb24uCgkqIHBhcnNlLnkgKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogTGlrZXdpc2UuCgoyMDAxLTA5LTEyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBnamF2YWguYyAoY3h4X2tleXdvcmRzKTogQ29uc3QtaWZpY2F0aW9uLgoJKiBrZXl3b3JkLmdwZXJmIChqYXZhX2tleXdvcmQpOiBMaWtld2lzZS4KCSogbGFuZy5jIChqYXZhX3RyZWVfY29kZV9uYW1lKTogTGlrZXdpc2UuCgkqIGxleC5jIChjeHhfa2V5d29yZHMpOiBMaWtld2lzZS4KCSogcGFyc2UueSAoamF2YV9wYXJzZXJfY29udGV4dF9zdXNwZW5kLCBtZXJnZV9zdHJpbmdfY3N0ZSk6IExpa2V3aXNlLgoKMjAwMS0wOS0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLmggKGN0eHBfZm9yX2dlbmVyYXRpb24pOiBNYXJrIGV4dGVybi4KCjIwMDEtMDktMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChidWlsZF9jbGFzc19yZWYpOiBTZXQgREVDTF9FWFRFUk5BTCBiZWZvcmUgbWFrZV9kZWNsX3J0bC4KCjIwMDEtMDktMDcgIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY2FybmVnaWVtZWxsb24uZWR1PgoKCSogdHlwZWNrLmMgKGphdmFfYXJyYXlfdHlwZV9sZW5ndGgsIGJ1aWxkX3ByaW1fYXJyYXlfdHlwZSk6CglSZXByZXNlbnQgZW1wdHkgYXJyYXlzIGJ5IE5VTEwgaW5kZXguCgoyMDAxLTA5LTA2ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIGphdmEtdHJlZS5oIChjb21waWxlX3Jlc291cmNlX2ZpbGUpOiBHcm91cGVkIHdpdGggb3RoZXIgcHJvdG90eXBlcy4KCSoganZzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogUmVtb3ZlZCB1bnVzZWQgbG9jYWwgYHB0ci4nCgoyMDAxLTA5LTA2ICBBbnRob255IEdyZWVuICA8Z3JlZW5AcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKE9fQklOQVJZKTogRGVmaW5lIGlmIG5lY2Vzc2FyeS4KCShyZWdpc3RlclJlc291cmNlX2xpYmZ1bmMpOiBEZWNsYXJlLgoJKGluaXRfY2xhc3NfcHJvY2Vzc2luZyk6IEluaXRpbGl6ZSByZWdpc3RlclJlc291cmNlX2xpYmZ1bmMuCgkoY29tcGlsZV9yZXNvdXJjZV9maWxlKTogTmV3IGZ1bmN0aW9uLgoJKiBqYXZhLXRyZWUuaCAocmVzb3VyY2VfbmFtZSk6IERlY2xhcmUuCgkoY29tcGlsZV9yZXNvdXJjZV9maWxlKTogRGVjbGFyZS4KCSogamNmLXBhcnNlLmMgKHl5cGFyc2UpOiBIYW5kbGUgY29tcGlsaW5nIGphdmEgcmVzb3VyY2UgZmlsZXMuCgkqIGxhbmcuYyAoamF2YV9kZWNvZGVfb3B0aW9uKTogSGFuZGxlIC1mY29tcGlsZS1yZXNvdXJjZSBvcHRpb24uCgkqIGp2c3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IEhhbmRsZSAtUiBmbGFnIGZvciBjb21waWxpbmcKCXJlc291cmNlIGZpbGVzLgoJKiBnY2oudGV4aSAoQ29kZSBHZW5lcmF0aW9uKTogQWRkIGRvY3VtZW50YXRpb24gZm9yIC1SIGZsYWcuCgoyMDAxLTA5LTA1IEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2NsYXNzZmlsZSk6IElzc3VlIGFuIGVycm9yIGluIGNhc2Ugb2YKCWZpZWxkL2luaXRpYWwgdmFsdWUgbWlzbWF0Y2guCgkqIHBhcnNlLnkgKGFuYWx5emVfY2xpbml0X2JvZHkpOiBLZWVwIDxjbGluaXQ+IGlmIGFuIGFycmF5IGlzCgliZWluZyBpbml0aWFsaXplZCBhbmQgd2UncmUgZ2VuZXJhdGluZyBieXRlY29kZS4KCShqYXZhX2NvbXBsZXRlX2xocyk6IEluIE1PRElGWV9FWFBSIHNlY3Rpb246IGFkZGVkIGNvbW1lbnRzLAoJc2V0IERFQ0xfSU5JVElBTCBwcm9wZXJseSB3aGVuIGFwcHJvcHJpYXRlLgoJRml4ZXMgUFIgamF2YS80MjMwCglGaXhlcyBQUiBqYXZhLzQyMDQKCjIwMDEtMDktMDEgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogcGFyc2UueSAobWF5YmVfeWFua19jbGluaXQpOiAgQSBmaWVsZCB3aXRob3V0IGFuIGluaXRpYWxpemVyIGlzIG5vdAoJcmVsZXZhbnQuICBBbGwgaW5pdGlhbGl6ZXJzIGV4Y2VwdCBzdGF0aWMgZmluYWwgYW5kIGNvbnN0YW50IHJlcXVpcmUKCTxjbGluaXQ+LCByZWdhcmRsZXNzIG9mIGZsYWdfZW1pdF9jbGFzc19maWxlcy4KCjIwMDEtMDgtMzEgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogY2xhc3MuYyAoc2V0X2NvbnN0YW50X3ZhbHVlKTogIFdoZW4gbm90IGVtaXR0aW5nIGNsYXNzIGZpbGVzLCB0aGVuIGEKCVN0cmluZyBDb25zdGFudFZhbHVlIGlzIGEgdXRmOGNvbnN0X3B0cl90eXBlLgoKMjAwMS0wOC0zMCAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfY2xhc3NmaWxlKTogIENoZWNrIHRoYXQgZmllbGQgaXMgcHJpbWl0aXZlCglvciBzdHJpbmcgYmVmb3JlIGVtaXR0aW5nIENvbnN0YW50VmFsdWUgYXR0cmlidXRlLgoKMjAwMS0wOC0zMCAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBwYXJzZS55IChyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiAgSWYgY3JlYXRpbmcgYQoJQ09NUE9VTkRfRVhQUiwgc2V0IGl0J3MgdHlwZSBjb3JyZWN0bHkuCgoyMDAxLTA4LTMwICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGpjZi1pby5jIChvcGVuX2NsYXNzKTogIFNldCBmaWxlbmFtZSBmaWVsZC4KCgkqIGpjZi1wYXJzZSxjIChwYXJzZV9jbGFzc19maWxlKTogIFNldCBjdXJyZW50X2Z1bmN0aW9uX2RlY2wKCWZvciBiZXR0ZXIgZXJyb3IgbWVzc2FnZSB3aGVuIENvZGUgYXR0cmlidXRlIGlzIG1pc3NpbmcuCgoJKiBsYW5nLmMgKHB1dF9kZWNsX25vZGUsIGxhbmdfcHJpbnRfZXJyb3IpOiAgUmUtYXJyYW5nZSBmb3IKCWJldHRlciBkaWFnbm9zdGljcywgZXNwZWNpYWxseSBmb3IgY29uc3RydWN0b3JzLgoKMjAwMS0wOC0zMCAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfY2xhc3NmaWxlKTogIERvbid0IHdyaXRlIENvbnN0YW50VmFsdWUKCWF0dHJpYnV0ZSBpZiBmaWVsZCBpcyBub3QgZmluYWwsIGZvciBjb21wYXRpYmlsaXR5IHdpdGggamRrLgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2NsYXNzZmlsZSk6ICBDb252ZXJ0IENvbnN0YW50VmFsdWUgdmFsdWVzCgl0byBjb3JyZWN0IHR5cGUuICBXb3JrLWFyb3VuZCBmb3IgZnJvbnQtZW5kIGJ1Zy4KCSogY2xhc3MuYyAoc2V0X2NvbnN0YW50X3ZhbHVlKTogIEVycm9yIGlmIGNvbnN0YW50IGhhcyB3cm9uZyB0eXBlLgoKMjAwMS0wOC0zMCAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBqY2YtZHVtcC5jIChwcmludF9jb25zdGFudCk6ICBGaXggZmVuY2Vwb3N0IGVycm9yIHNvICJGbG9hdCIgYW5kCgkiRG91YmxlIiBhcmUgcHJpbnRlZCBhdCB2ZXJib3NpdHkgMS4KCgkqIGpjZi1kdW1wLmMgKG1haW4pOiAgRGlzYWJsZSBmbGFnX3ByaW50X2F0dHJpYnV0ZXMgaWYgLS1qYXZhcC4KCgkqIGpjZi1kdW1wLmMgKFNQRUNJQUxfSUlOQyk6ICBSZW1vdmUgdW5uZWVkZWQgY2FzdHMgdG8gbG9uZy4KCjIwMDEtMDgtMzAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfYXNzaWdubWVudCk6IERvbid0IHZlcmlmeSBmaW5hbCByZS1hc3NpZ25tZW50IGhlcmUuCgkoamF2YV9jb21wbGV0ZV9saHMpOiBWZXJpZnkgYXNzaWdubWVudHMgdG8gZmluYWxzIGNhbGxpbmcKCXBhdGNoX2Fzc2lnbm1lbnQuIFZlcmlmeSByZS1hc3NpZ25tZW50cyB0byBmaW5hbHMgYmVmb3JlIGNhbGxpbmcKCXBhdGNoX2Fzc2lnbm1lbnQuCgoyMDAxLTA4LTI5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfbGhzKTogQWxsb3cgZmluYWwgbG9jYWxzIGluIENBU0VfRVhQUnMuCglGaXhlcyBQUiBqYXZhLzE0MTMKCjIwMDEtMDgtMjggIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogbGV4LmMgKGphdmFfbGV4KTogbmV3IGxvY2FsIGZvdW5kX2hleF9kaWdpdHMuIFNldCBhbmQgdGhlbiB1c2VkCglpbiB0ZXN0IHRvIHJlamVjdCBpbnZhbGlkIGhleGFkZWNpbWFsIG51bWJlcnMuCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfdHJlZSk6IFByZXZlbnQgdW53YW50ZWQgY2FzdCB3aXRoCglpbml0aWFsaXplZCBmbG9hdGluZyBwb2ludCBmaW5hbHMuCgkocGF0Y2hfYmlub3ApOiBFbWl0IGEgd2FybmluZyB3aGVuIGRldGVjdGluZyBhIGRpdmlzaW9uIGJ5IHplcm8sCgltYXJrIHJlc3VsdCBub3QgY29uc3RhbnQsIGRvbid0IHNpbXBsaWZ5IG5vbiBpbnRlZ2VyIGRpdmlzaW9uLgoKMjAwMS0wOC0yOCAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBqY2Ytd3JpdGUuYyAgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogIEZvciBpbmNyZW1lbnRzIGFuZAoJZGVjcmVtZW50cyBqdXN0IHJlY3Vyc2UgdG8gcHVzaCBjb25zdGFudC4gIEltcHJvdmVtZW50IG9uIE1hcmsncyBwYXRjaC4KCjIwMDEtMDgtMjggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBHZW5lcmF0ZSBhbiBpbnRlZ2VyIHRvCglyZWFsIGNvbnZlcnNpb24gZm9yIGluY3JlbWVudHMgYW5kIGRlY3JlbWVudHMgb2YgcmVhbHMuCgoyMDAxLTA4LTI3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IEhhbmRsZSB1bnJlc29sdmVkCglxdWFsaWZpZWQgZXhwcmVzc2lvbnMsIHByZXZlbnQgbnVtZXJpY2FsIHF1YWxpZmllcnMsIGZpeGVkIHR5cG8uCglGaXhlcyBQUiBqYXZhLzQxNDEKCjIwMDEtMDgtMjQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2UueSAoY2hlY2tfZGVwcmVjYXRpb24pOiBIYW5kbGUgVFlQRV9ERUNMIGluIGEgc3BlY2lhbCBjYXNlLAoJZG9uJ3QgcmVwb3J0IGFueXRoaW5nIGJ1dCBkZXByZWNhdGVkIGNsYXNzIHdoZW4gbWFya2VkIHNvLiBIYW5kbGUKCVZBUl9ERUNMLgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogQ2hlY2sgZGVwcmVjYXRpb24gb24gbWV0aG9kcyBhbmQgdHlwZXMuCgkocGF0Y2hfYmlub3ApOiBjb2RlIGJlY29tZXMgYW4gZW51bSB0cmVlX2NvZGUsIGFkZGVkIGRlZmF1bHQ6IHRvCglzd2l0Y2ggdG8gaGFuZGxlIHRoYXQuIERldGVjdCBkaXZpc2lvbiBieSB6ZXJvLCB0cnkgdG8gZm9sZCBhbmQKCXJldHVybiBiZWZvcmUgdXNpbmcgYSBzdWJyb3V0aW5lLgoKMjAwMS0wOC0yMyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBqY2YtcGFyc2UuYyAoeXlwYXJzZSk6IFNldCBtYWdpYyB0byAwLCBkb24ndCBpc3N1ZSBlcnJvciBmb3IgYQoJZmlsZSBzbWFsbGVyIHRoYW4gNCBieXRlcy4KCSogcGFyc2UueSAoY2hlY2tfaW5uZXJfY2lyY3VsYXJfcmVmZXJlbmNlKTogTmV3IGZ1bmN0aW9uLgoJKGNoZWNrX2NpcmN1bGFyX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJKGFycmF5X2luaXRpYWxpemVyOik6IEFjY2VwdCB7LH0uCgkoamF2YV9jaGVja19jaXJjdWxhcl9yZWZlcmVuY2UpOiBSZXdyaXR0ZW4gdXNpbmcKCWNoZWNrX2NpcmN1bGFyX3JlZmVyZW5jZSBhbmQgY2hlY2tfaW5uZXJfY2lyY3VsYXJfcmVmZXJlbmNlLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZCk6IFVuY29uZGl0aW9uYWxseSBzYXZlIGFuZCByZXN0b3JlCgl0aGUgdW5wdXJnZWQgZXhjZXB0aW9uIGxpc3QuCgkoYnVpbGRfZG90X2NsYXNzX21ldGhvZF9pbnZvY2F0aW9uKTogVW5tYW5nbGUgc2lnbmF0dXJlIHBhcmFtZXRlci4KCjIwMDEtMDgtMjEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBBZGQgYHRocm93cycgZmllbGQgdG8gbWV0aG9kCglkZXNjcmlwdG9yLgoJKiBjbGFzcy5jIChtYWtlX21ldGhvZF92YWx1ZSk6IENvbXB1dGUgYHRocm93cycgZmllbGQgZm9yIG1ldGhvZC4KCjIwMDEtMDgtMjIgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2UueSAocmVzb2x2ZV9pbm5lcl9jbGFzcyk6IEtlZXAgbG9jYWxfZW5jbG9zaW5nIHRvIE5VTEwgaWYKCWNpcmN1bGFyaXR5IGlzIGRldGVjdGVkLgoJKGN0b3JzX3VuY2hlY2tlZF90aHJvd3NfY2xhdXNlX3ApOiBGaXhlZCBsZWFkaW5nIGNvbW1lbnQuCgoyMDAxLTA4LTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAoZW1pdF9yZWdpc3Rlcl9jbGFzc2VzKTogQWRkIGFsaWduIHBhcmFtZXRlciB0bwoJY2FsbCB0byBhc3NlbWJsZV9pbnRlZ2VyLgoKMjAwMS0wOC0xNiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBqY2YtcGFyc2UuYyAobG9hZF9jbGFzcyk6IE5ldyBsb2NhbHMgc2F2ZWQgYW5kIGNsYXNzX2xvYWRlZC4gSWYKCWxvYWRpbmcgYSBjbGFzc19vcl9uYW1lIGZhaWxzLCB0cnkgY29uc2lkZXJpbmcgYW4gaW5uZXJjbGFzcyBuYW1lCglhbmQgbG9hZCB0aGUgZW5jbG9zaW5nIGNvbnRleHQuCgkqIHBhcnNlLnkgKHJlc29sdmVfaW5uZXJfY2xhc3MpOiBOZXcgZnVuY3Rpb24uCgkoZmluZF9hc19pbm5lcl9jbGFzcyk6IEFkZGVkIGxlYWRpbmcgY29tbWVudC4KCShyZWdpc3Rlcl9pbmNvbXBsZXRlX3R5cGUpOiBLZWVwIHRoZSBjdXJyZW50IGNvbnRleHQgYXMgZW5jbG9zaW5nCgljb250ZXh0IGZvciBKREVQX0ZJRUxEIGRlcGVuZGVuY2llcy4KCShkb19yZXNvbHZlX2NsYXNzKTogTG9jYWxzIG5ld19jbGFzc19kZWNsIGFuZCBzdXBlciBpbml0aWFsaXplZCB0bwoJTlVMTC4gQ2FsbCByZXNvbHZlX2lubmVyX2NsYXNzLCBleHBsb3JlIHRoZSBlbmNsb3NpbmcgY29udGV4dAoJc3VwZXJjbGFzcyBpZiBuZWNlc3NhcnkuCglGaXhlcyBQUiBqYXZhLzQwMDcKCjIwMDEtMDgtMTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGpjZi1kdW1wLmMgKG1haW4pOiBVcGRhdGVkIGZvciBjaGFuZ2UgdG8gamNmX3BhdGhfc2VhbC4KCSogZ2phdmFoLmMgKG1haW4pOiBVcGRhdGVkIGZvciBjaGFuZ2UgdG8gamNmX3BhdGhfc2VhbC4KCSogbGFuZy5jICh2ZXJzaW9uX2ZsYWcpOiBOZXcgZ2xvYmFsLgoJKGphdmFfZGVjb2RlX29wdGlvbik6IFJlY29nbml6ZSBgLXZlcnNpb24nLgoJKGphdmFfaW5pdCk6IFVwZGF0ZSBmb3IgY2hhbmdlIHRvIGpjZl9wYXRoX3NlYWwuCgkqIGpjZi5oIChqY2ZfcGF0aF9zZWFsKTogQWRkZWQgYHByaW50JyBhcmd1bWVudC4KCSogamNmLXBhdGguYyAoamNmX3BhdGhfc2VhbCk6IEFkZGVkIGBwcmludCcgYXJndW1lbnQuCgoyMDAxLTA4LTEzICBaYWNrIFdlaW5iZXJnICA8emFja3dAcGFuaXguY29tPgoKCSogTWFrZS1sYW5nLmluIChqYXZhL2RlY2wubyk6IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgkqIGRlY2wuYzogSW5jbHVkZSBsaWJmdW5jcy5oLCBkb24ndCBpbmNsdWRlIHRvcGxldi5oLgoKMjAwMS0wOC0xMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogZXhjZXB0aW9uX3R5cGVfbm9kZSwKCWNsYXNzX25vdF9mb3VuZF90eXBlX25vZGUsIGFuZCBub19jbGFzc19kZWZfZm91bmRfdHlwZV9ub2RlCglpbml0aWFsaXplZC4gcHJlZGVmX2ZpbGVuYW1lcyBhdWdtZW50ZWQgYWNjb3JkaW5nbHkuCglpbnN0aW5pdF9pZGVudGlmaWVyX25vZGUgaW5pdGlhbGl6ZWQuCgkqIGphdmEtdHJlZS5kZWYgKElOU1RBTkNFX0lOSVRJQUxJWkVSU19FWFBSKTogRW50cnkgcmVtb3ZlZC4KCSogamF2YS10cmVlLmggKGVudW0gamF2YV90cmVlX2luZGV4KTogTmV3IGVudHJpZXMKCUpUSV9FWENFUFRJT05fVFlQRV9OT0RFLCBKVElfQ0xBU1NfTk9UX0ZPVU5EX1RZUEVfTk9ERSwKCUpUSV9OT19DTEFTU19ERUZfRk9VTkRfVFlQRV9OT0RFLCBKVElfSU5TVElOSVRfSURFTlRJRklFUl9OT0RFLgoJKGV4Y2VwdGlvbl90eXBlX25vZGUpOiBOZXcgbWFjcm8uCgkoY2xhc3Nfbm90X2ZvdW5kX3R5cGVfbm9kZSk6IExpa2V3aXNlLgoJKG5vX2NsYXNzX2RlZl9mb3VuZF90eXBlX25vZGUpOiBMaWtld2lzZS4KCShpbnN0aW5pdF9pZGVudGlmaWVyX25vZGUpOiBMaWtld2lzZS4KCShQUkVERUZfRklMRU5BTUVTX1NJWkUpOiBBZGp1c3RlZC4KCShUWVBFX0hBU19GSU5BTF9WQVJJQUJMRSk6IEZpeGVkIHR5cG8uCgkoc3RydWN0IGxhbmdfdHlwZSk6IEZpeGVkIHR5cG8gaW4gYml0ZmllbGQgbmFtZS4KCShERUNMX0lOU1RJTklUX1ApOiBOZXcgbWFjcm8uCgkoSURfSU5TVElOSVRfUCk6IExpa2V3aXNlLgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfY2xhc3NmaWxlKTogaW5zdGluaXQkIGJlYXJzIHRoZSBTeW50aGV0aWMKCWF0dHJpYnV0ZS4KCSogcGFyc2UueSAoZW5jYXBzdWxhdGVfd2l0aF90cnlfY2F0Y2gpOiBOZXcgZnVuY3Rpb24uCgkoZ2VuZXJhdGVfaW5zdGluaXQpOiBMaWtld2lzZS4KCShidWlsZF9pbnN0aW5pdF9pbnZvY2F0aW9uKTogTGlrZXdpc2UuCgkoY3RvcnNfdW5jaGVja2VkX3Rocm93c19jbGF1c2VfcCk6IExpa2V3aXNlLgoJKGFkZF9pbnN0YW5jZV9pbml0aWFsaXplcik6IERlbGV0ZWQuCgkoYnVpbGRfaW5zdGFuY2VfaW5pdGlhbGl6ZXIpOiBMaWtld2lzZS4KCShpbl9pbnN0YW5jZV9pbml0aWFsaXplcik6IExpa2V3aXNlLgoJKGNoZWNrX21ldGhvZF9yZWRlZmluaXRpb24pOiBpbnN0aW5pdCQgbm90IHRvIGJlIHZlcmlmaWVkLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZHMpOiBHZW5lcmF0ZSBpbnN0aW5pdCQsIHNpbXBsaWZpZWQgY29kZS4KCShidWlsZF9kb3RfY2xhc3NfbWV0aG9kKTogRWxpbWluYXRlZCB1bm5lY2Vzc2FyeSBsb2NhbHMuIFVzZQoJZW5jYXBzdWxhdGVfd2l0aF90cnlfY2F0Y2gsIHJlbW92ZWQgdW5uZWNlc3NhcnkgY29kZS4KCShmaXhfY29uc3RydWN0b3JzKTogTmV3IGxvY2FsIGlpaS4gVXNlIGJ1aWxkX2luc3Rpbml0X2ludm9jYXRpb24uCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBBZGRlZCBjb21tZW50LgoJKG1heWJlX3VzZV9hY2Nlc3NfbWV0aG9kKTogRG9uJ3QgY29uc2lkZXIgaW5zdGluaXQkLgoJKGZpbmRfYXBwbGljYWJsZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCk6IFNob3J0ZW4gdGhlIHNlYXJjaCBmb3IKCWluc3Rpbml0JCB0b28uCgkoamF2YV9jb21wbGV0ZV9saHMpOiBjYXNlIElOU1RBTkNFX0lOSVRJQUxJWkVSU19FWFBSIHJlbW92ZWQuCgkocGF0Y2hfcmV0dXJuKTogVXNlIERFQ0xfSU5TVElOSVRfUCBpbnN0ZWFkIG9mIGluX2luc3RhbmNlX2luaXRpYWxpemVyLgoJKHBhdGNoX3Rocm93X3N0YXRlbWVudCk6IExpa2V3aXNlLiBGaXhlZCB0eXBvLgoKMjAwMS0wOC0xMiAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCVJldmVydDoKCTIwMDEtMDgtMDIgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoJKiBqdnNwZWMuYyAoanZnZW5tYWluX3NwZWMpOiBDYW5ub3QgdXNlICV1bWFpbiwgYnJlYWtzCglBU01fRklOQUxfU1BFQy4KCShsYW5nX3NwZWNpZmljX3ByZV9saW5rKTogVXNlIHNldF9pbnB1dCB0byBzZXQgaW5wdXRfZmlsZW5hbWUuCglBcHBlbmQgYG1haW4nIGhlcmUuCgkqIGp2Z2VubWFpbi5jICh1c2FnZSk6IEFwcGVuZCBsaXRlcmFsIGBtYWluJyB0byBDTEFTU05BTUUuCgkobWFpbik6IEZpeCBkZWZpbml0aW9uLgoJU3RyaXAgYG1haW4nIGZyb20gY2xhc3NuYW1lLgoJRml4ZXMgUFIgamF2YS8yMjcuCgoyMDAxLTA4LTExICBaYWNrIFdlaW5iZXJnICA8emFja3dAcGFuaXguY29tPgoKCSogbGV4Lmg6IERvbid0IGluY2x1ZGUgc2V0am1wLmguICBEb24ndCBkZWZpbmUKCVNFVF9GTE9BVF9IQU5ETEVSIG9yIHByb3RvdHlwZSBzZXRfZmxvYXRfaGFuZGxlci4KCjIwMDEtMDgtMDkgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogZXhwci5jIChqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiBDYWxsIGBleHBhbmRfZW5kX2JpbmRpbmdzJyBhbmQKCWBwb3BsZXZlbCcgaW4gdGhlIHJpZ2h0IG9yZGVyLgoKMjAwMS0wOC0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoY2xhc3Mubyk6IERlcGVuZCBvbiBUQVJHRVRfSC4KCSogY2xhc3MuYyAoZW1pdF9yZWdpc3Rlcl9jbGFzc2VzKTogVXNlIHRhcmdldCBob29rcyBpbnN0ZWFkIG9mCglhc3NlbWJsZV9jb25zdHJ1Y3RvciBhbmQgYXNzZW1ibGVfZGVzdHJ1Y3Rvci4KCjIwMDEtMDgtMDggIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogY2hlY2staW5pdC5jIChmbGFncy5oKTogSW5jbHVkZQoJKGNoZWNrX2luaXQpOiBEb24ndCByZXBvcnQgdW5pbml0aWFsaXplZCBzdGF0aWMgY2xhc3MKCWluaXRpYWxpemF0aW9uIGZsYWdzLCBkb24ndCBmcmVlIGJpdCBpbmRleCB3aGVuIGRvaW5nIHN0YXRpYyBjbGFzcwoJaW5pdGlhbGl6YXRpb24gb3B0aW1pemF0aW9uLgoJKGNoZWNrX2Zvcl9pbml0aWFsaXphdGlvbik6IFJldHVybiB0eXBlIGNoYW5nZWQgdG8gYHVuc2lnbmVkIGludC4nCgkoYXR0YWNoX2luaXRpYWxpemVkX3N0YXRpY19jbGFzcyk6IE5ldyBmdW5jdGlvbi4KCSogY2xhc3MuYyAoYWRkX21ldGhvZF8xKTogQ3JlYXRlIHRoZSBpbml0aWFsaXplZCBzdGF0aWMgY2xhc3MKCXRhYmxlIGlmIG5lY2Vzc2FyeS4KCShmaW5pc2hfY2xhc3MpOiBBbHdheXMgZW1pdCBkZWZlcnJlZCBpbmxpbmUgbWV0aG9kcy4KCSogZGVjbC5jIChlbWl0X2luaXRfdGVzdF9pbml0aWFsaXphdGlvbik6IE1vdmVkIHRvIGV4cHIuYwoJKGNvbXBsZXRlX3N0YXJ0X2phdmFfbWV0aG9kKTogRG9uJ3QgdHJhdmVyc2UKCURFQ0xfRlVOQ1RJT05fSU5JVF9URVNUX1RBQkxFLgoJKGxhbmdfbWFya190cmVlKTogTWFyayBoYXNoIHRhYmxlcyBpbiBmdW5jdGlvbiBkZWNscy4KCSogZXhwci5jIChlbWl0X2luaXRfdGVzdF9pbml0aWFsaXphdGlvbik6IE1vdmVkIGZyb20gZGVjbC5jLgoJKGJ1aWxkX2NsYXNzX2luaXQpOiBDcmVhdGUgTEFHX0RFQ0xfU1BFQ0lGSUMgZm9yIHRoZSBzdGF0aWMgY2xhc3MKCWluaXRpYWxpemF0aW9uIGZsYWcsIHNldCBERUNMX0NPTlRFWFQgYW5kCglMT0NBTF9DTEFTU19JTklUSUFMSVpBVElPTl9GTEFHLgoJKGphdmFfbGFuZ19leHBhbmRfZXhwcik6IEVtaXQgaW5pdGlhbGl6YXRpb24gY29kZSBmb3Igc3RhdGljIGNsYXNzCglpbml0aWFsaXplZCBmbGFncyB3aGVuIGVudGVyaW5nIGJsb2NrLCBpZiBuZWNlc3NhcnkuCgkqIGdjai50ZXhpICgtZm5vLW9wdGltaXplLXN0YXRpYy1jbGFzcy1pbml0aWFsaXphdGlvbik6IERvY3VtZW50ZWQuCgkqIGphdmEtdHJlZS5oIChmbGFnX29wdGltaXplX3NjaSk6IE5ldyBnbG9iYWwgdmFyaWFibGUgZGVjbGFyYXRpb24uCgkoREVDTF9GVU5DVElPTl9JTklUSUFMSVpFRF9DTEFTU19UQUJMRSk6IE5ldyBtYWNyby4KCShERUNMX0ZVTkNUSU9OX1NUQVRJQ19NRVRIT0RfSU5WT0NBVElPTl9DT01QT1VORCk6IExpa2V3aXNlLgoJKExPQ0FMX0ZJTkFMX1ApOiBGaXhlZCB0eXBvIGluIGNvbW1lbnQuCgkoRklOQUxfVkFSSUFCTEVfUCk6IExpa2V3aXNlLgoJKExPQ0FMX0NMQVNTX0lOSVRJQUxJWkFUSU9fRkxBRyk6IE5ldyBtYWNyby4KCShMT0NBTF9DTEFTU19JTklUSUFMSVpBVElPX0ZMQUdfUCk6IExpa2V3aXNlLgoJKHN0cnVjdCBsYW5nX2RlY2wpOiBOZXcgZmllbGRzIGBpY3QnLCBgc21pYycgYW5kIGBjaWYuJwoJKGNoZWNrX2Zvcl9pbml0aWFsaXphdGlvbik6IE5ldyByZXR1cm5lZCB2YWx1ZSBmb3IgZ2xvYmFsLgoJKGF0dGFjaF9pbml0aWFsaXplZF9zdGF0aWNfY2xhc3MpOiBOZXcgZ2xvYmFsIGZ1bmN0aW9uLgoJKFNUQVRJQ19DTEFTU19JTklUX09QVF9QKTogTmV3IG1hY3JvLgoJKiBsYW5nLW9wdGlvbnMuaCAoLWZuby1vcHRpbWl6ZS1zdGF0aWMtY2xhc3MtaW5pdGlhbGl6YXRpb24pOiBOZXcgZmxhZy4KCSogbGFuZy5jIChqYXZhX2RlY29kZV9vcHRpb24pOiBIYW5kbGUKCWAtZm5vLW9wdGltaXplLXN0YXRpYy1jbGFzcy1pbml0aWFsaXphdGlvbicKCSogcGFyc2UueSAoc3RhcnRfY29tcGxldGVfZXhwYW5kX21ldGhvZCk6IE5ldyBmdW5jdGlvbi4KCShqYXZhX2V4cGFuZF9tZXRob2RfYm9kaWVzKTogTGlrZXdpc2UuCgkoYXR0YWNoX2luaXRfdGVzdF9pbml0aWFsaXphdGlvbl9mbGFncyk6IExpa2V3aXNlLgoJKGFkanVzdF9pbml0X3Rlc3RfaW5pdGlhbGl6YXRpb24pOiBMaWtld2lzZS4KCShlbWl0X3Rlc3RfaW5pdGlhbGl6YXRpb24pOiBMaWtld2lzZS4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzKTogTnVsbGlmeSBhYnN0cmFjdCBhbmQgbmF0aXZlIG1ldGhvZAoJYm9kaWVzLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZCk6IE5ldyBsb2NhbHMgYGZib2R5JywgYGJsb2NrX2JvZHknCglhbmQgYGV4Y2VwdGlvbl9jb3B5LicgUmVvcmdhbml6ZWQ6IGRpcmVjdGx5IHJldHVybiBvbiBlbXB0eSBtZXRob2QKCWJvZGllcywgY2FsbCBgc3RhcnRfY29tcGxldGVfZXhwYW5kX21ldGhvZCcsIHJlbWVtYmVyIGRlZmluaXRlbHkKCWluaXRpYWxpemVkIHN0YXRpYyBjbGFzcyBpbiBmdW5jdGlvbiwgZG9uJ3QgZXhwYW5kIG1ldGhvZCBib2RpZXMuCgkoamF2YV9leHBhbmRfY2xhc3Nlcyk6IENhbGwgYGphdmFfZXhwYW5kX21ldGhvZF9ib2RpZXMnIGJlZm9yZQoJYGZpbmlzaF9jbGFzcycgd2hlbiBjb21waWxpbmcgdG8gbmF0aXZlLgoJKHJlc29sdmVfZXhwcmVzc2lvbl9uYW1lKTogVXNlIGBvcmlnJyBhZnRlciBidWlsZGluZyBvdXRlciBjbGFzcwoJZmllbGQgYWNjZXNzLgoJKHBhdGNoX2ludm9rZSk6IFJlbWVtYmVyIHN0YXRpYyBtZXRob2QgaW52b2NhdGlvbnMuCgoyMDAxLTA4LTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAoZW1pdF9yZWdpc3Rlcl9jbGFzc2VzKTogUGFzcyBhIHN5bWJvbF9yZWYgYW5kIHByaW9yaXR5Cgl0byBhc3NlbWJsZV9jb25zdHJ1Y3Rvci4KCjIwMDEtMDgtMDIgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogamF2YS10cmVlLmggKGFsbF9jbGFzc19maWxlbmFtZSk6IE5ldyBtYWNyby4KCShlbnVtIGphdmFfdHJlZV9pbmRleCk6IE5ldyBlbnVtIGBKVElfQUxMX0NMQVNTX0ZJTEVOQU1FLicKCShCVUlMRF9GSUxFTkFNRV9JREVOVElGSUVSX05PREUpOiBGaXhlZCBsZWFkaW5nIGNvbW1lbnQuIExpbmsKCW5ld2x5IGNyZWF0ZWQgSURFTlRJRklFUl9OT0RFIHRvIGBhbGxfY2xhc3NfZmlsZW5hbWUuJwoKMjAwMS0wOC0wMSAgSmVmZiBTdHVybSAgPGpzdHVybUBvbmUtcG9pbnQuY29tPgoKCSogamF2YS10cmVlLmggKEJVSUxEX0ZJTEVOQU1FX0lERU5USUZJRVJfTk9ERSk6CglVc2UgZ2djX2FkZF90cmVlX3Jvb3QgdG8gcmVnaXN0ZXIgcm9vdHMuCgoyMDAxLTA3LTMxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6IFdJVEhfQ0xFQU5VUF9FWFBSIG5vZGUgdG8gdXNlIGl0cwoJc2Vjb25kIG9wZXJhbmQgY2FsbGluZyBjaGVja19pbml0LgoJKiBkZWNsLmMgKGNvbXBsZXRlX3N0YXJ0X2phdmFfbWV0aG9kKTogU3dhcGVkIHNlY29uZCBhbmQgdGhpcmQKCWFyZ3VtZW50cyB3aGlsZSBjcmVhdGluZyBXSVRIX0NMRUFOVVBfRVhQUiBub2RlLgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBVc2Ugc2Vjb25kIG9wZXJhbmQKCWluc3RlYWQgb2YgdGhpcmQgd2hlbiBoYW5kbGluZyBXSVRIX0NMRUFOVVBfRVhQUi4KCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9saHMpOiBFeHBhbmQgc2Vjb25kIG9wZXJhbmQgb2YKCVdJVEhfQ0xFQU5VUF9FWFBSIG5vZGVzLgoJKHBhdGNoX3N5bmNocm9uaXplZF9zdGF0ZW1lbnQpOiBTd2FwZWQgc2Vjb25kIGFuZCB0aGlyZCBhcmd1bWVudHMKCXdoaWxlIGNyZWF0aW5nIFdJVEhfQ0xFQU5VUF9FWFBSIG5vZGUuCgoyMDAxLTA3LTE4ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKGNyZWF0ZV9pbnRlcmZhY2UpOiBBdm9pZCBjeWNsaWMgaW5oZXJpdGFuY2UgcmVwb3J0IHdoZW4KCXN5bnRheCBlcnJvciBlbmNvdW50ZXJlZCBkdXJpbmcgY2xhc3MgZGVmaW5pdGlvbi4KCUZpeGVzIFBSIGphdmEvMjk1NgoKMjAwMS0wOC0wMiAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBqdnNwZWMuYyAoanZnZW5tYWluX3NwZWMpOiBDYW5ub3QgdXNlICV1bWFpbiwgYnJlYWtzCglBU01fRklOQUxfU1BFQy4KCShsYW5nX3NwZWNpZmljX3ByZV9saW5rKTogVXNlIHNldF9pbnB1dCB0byBzZXQgaW5wdXRfZmlsZW5hbWUuCglBcHBlbmQgYG1haW4nIGhlcmUuCgkqIGp2Z2VubWFpbi5jICh1c2FnZSk6IEFwcGVuZCBsaXRlcmFsIGBtYWluJyB0byBDTEFTU05BTUUuCgkobWFpbik6IEZpeCBkZWZpbml0aW9uLgoJU3RyaXAgYG1haW4nIGZyb20gY2xhc3NuYW1lLgoJRml4ZXMgUFIgamF2YS8yMjcuCgoyMDAxLTA3LTE4ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJRm9yIFBSIGphdmEvMjgxMjoKCSogbGV4Lmg6IFVzZSBIQVZFX0lDT05WLCBub3QgSEFWRV9JQ09OVl9ILgoJKiBsZXguYyAoamF2YV9uZXdfbGV4ZXIpOiBVc2UgSUNPTlZfQ09OU1QuCgkoamF2YV9yZWFkX2NoYXIpOiBMaWtld2lzZS4KCSogTWFrZS1sYW5nLmluIChqYzEkKGV4ZWV4dCkpOiBMaW5rIGFnYWluc3QgTElCSUNPTlYuCgkoanYtc2NhbiQoZXhlZXh0KSk6IExpa2V3aXNlLgoKMjAwMS0wNy0xNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS5oIChJTlRFUkZBQ0VfSU5ORVJfTU9ESUZJRVJTKTogRGlzYWxsb3cgYHByaXZhdGUuJwoJKiBwYXJzZS55IChjaGVja19jbGFzc19pbnRlcmZhY2VfY3JlYXRpb24pOiBBbGxvdyBgcHJpdmF0ZScgaWYgdGhlCgllbmNsb3NpbmcgaXMgbm90IGFuIGludGVyZmFjZS4KCShjcmVhdGVfaW50ZXJmYWNlKTogSW50ZXJmYWNlIHRhZ2dlZCBwdWJsaWMgaWYgdGhlIGVuY2xvc2luZwoJY29udGV4dAlpcyBhbiBpbnRlcmZhY2UuCgkoY3JlYXRlX2NsYXNzKTogQ2xhc3MgdGFnZ2VkIHB1YmxpYyBpZiB0aGUgZW5jbG9zaW5nIGNvbnRleHQKCWlzIGFuIGludGVyZmFjZS4KCUZpeGVzIFBSIGphdmEvMjk1OQoKMjAwMS0wNy0xNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChwdXNoX2NsYXNzKTogU2V0IERFQ0xfU0laRSB0byBgaW50ZWdlcl96ZXJvX25vZGUuJwoJRml4ZXMgUFIgamF2YS8yNjY1CgoyMDAxLTA3LTE0ICBUaW0gSm9zbGluZyAgPHRlakBtZWxicGMub3JnLmF1PgoKCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KTogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gRVhQT05fRVhQUi4KCjIwMDEtMDctMTMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9sc2gpOiBTZXQgQ0FOX0NPTVBMRVRFX05PUk1BTExZIGFuZCB1bnNldAoJVFJFRV9DT05TVEFOVF9PVkVSRkxPVyBvZiBDQVNFX0VYUFIgdmFsdWUuCglGaXhlcyBQUiBqYXZhLzM2MDIKCjIwMDEtMDctMTMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGp2c3BlYy5jIChqdmdlbm1haW5fc3BlYyk6IFJlbW92ZSAtZmZpbGVsaXN0LWZpbGUgZnJvbSBjYzEKCWludm9jYXRpb24uCgoyMDAxLTA3LTEyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogRG9uJ3Qgb3ZlcnJpZGUgcHJpbWFyeSBpZiBvbmUKCWlzIGFscmVhZHkgcHJvdmlkZWQsIGJ1dCBsZXQgdGhpcyQ8bj4gYmUgYnVpbHQuIEZpeGVkIGNvbW1lbnQuCgoyMDAxLTA3LTEyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKGVtcHR5X3N0YXRlbWVudDopOiBSZXBvcnQgZW1wdHkgc3RhdGVtZW50IGVycm9yIG9ubHkKCXdoZW4gZm91bmQgYXQgY2xhc3MgZGVjbGFyYXRpb24gbGV2ZWwuCglGaXhlcyBQUiBqYXZhLzM2MzUKCjIwMDEtMDctMTIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2xvYWRfaW50ZXJuYWwpOiBOZXcgZnVuY3Rpb24uCgkoTE9BRF9JTlRFUk5BTCk6IFVzZSBpdC4KCjIwMDEtMDctMTEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2UueSAodmVyaWZ5X2NvbnN0cnVjdG9yX3N1cGVyKTogQ29tcGFyZSBhbm9ueW1vdXMgY2xhc3MgY3RvcgoJYXJncyB3aXRoIGB2YWxpZF9tZXRob2RfaW52b2NhdGlvbl9jb252ZXJzaW9uX3AuJwoJRml4ZXMgUFIgamF2YS8zMjg1CgoyMDAxLTA3LTEwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIGxhbmctc3BlY3MuaDogRm9yYml0IHRoZSB1c2UgaWYgYC1mZW1pdC1jbGFzcy1maWxle3N9JyB3aXRob3V0CglgLWZzeW50YXgtb25seS4nIEZpeGVzIFBSIGphdmEvMzI0OAoKMjAwMS0wNy0xMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBqY2YtaW8uYyAoZmluZF9jbGFzcyk6IENsYXJpZmllZCBlcnJvciBtZXNzYWdlLiBGaXhlcyBQUiBqYXZhLzI2MDMKCjIwMDEtMDctMTAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2UuaCAoSU5ORVJfRU5DTE9TSU5HX1NDT1BFX0NIRUNLKTogTm8gYHRoaXMnIGlzIGZpbmUgaWYgdGhlCgljdXJyZW50IGZ1bmN0aW9uIGlzIHN0YXRpYy4gRml4ZXMgUFIgamF2YS8xOTcwCgoyMDAxLTA3LTA5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogQWRkIGVuY2xvc2luZyBjb250ZXh0IHRvIGN0b3IKCWNhbGxzIGlmIG5lY2Vzc2FyeS4gRml4ZXMgUFIgamF2YS8yOTUzCgoyMDAxLTA3LTA5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHJlc29sdmVfcGFja2FnZSk6IEFib3J0IGlmIHF1YWxpZmllZCBleHByZXNzaW9uIG1lbWJlcgoJaXNuJ3QgcmlnaHQuCgkocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IERvbid0IHF1YWxpZnkgYXMgdHlwZSBpZiBgdGhpcycgaW4gdXNlLgoJRml4ZXMgUFIgamF2YS8xMzkxCgoyMDAxLTA3LTA3ICBaYWNrIFdlaW5iZXJnICA8emFja3dAc3RhbmZvcmQuZWR1PgoKCSogdmVyaWZ5LmM6IERvbid0IHVzZSAvLyBjb21tZW50cy4KCjIwMDEtMDctMDUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGxhbmcuYyAoZmxhZ19hc3N1bWVfY29tcGlsZWQpOiBSZW1vdmVkLgoJKiBqYXZhLXRyZWUuaCAoZmxhZ19hc3N1bWVfY29tcGlsZWQpOiBSZW1vdmVkLgoJKiBsYW5nLW9wdGlvbnMuaDogUmVtb3ZlZCAtZmZpbGUtbGlzdC1maWxlLCAtZnVzZS1ib2VobS1nYywKCS1maGFzaC1zeW5jaHJvbml6YXRpb24sIC1mdXNlLWRpdmlkZS1zdWJyb3V0aW5lLAoJLWZjaGVjay1yZWZlcmVuY2VzLCAtZmVtaXQtY2xhc3MtZmlsZSwgLWZlbWl0LWNsYXNzLWZpbGVzLAoJLWZhc3N1bWUtY29tcGlsZWQuICBVcGRhdGVkIC0tZW5jb2RpbmcgaW5mb3JtYXRpb24uICBDaGFuZ2VkCgktZm91dHB1dC1jbGFzcy1kaXIgdG8gYC1kJy4KCjIwMDEtMDctMDQgIERhbmllbCBCZXJsaW4gIDxkYW5AY2dzb2Z0d2FyZS5jb20+CgoJKiBqY2YtcGFyc2UuYyAocGFyc2VfY2xhc3NfZmlsZSk6IEFkZCBsaW5lbm8gcGFyYW1ldGVyIHRvCglkZWJ1Z19zdGFydF9zb3VyY2VfZmlsZSBjYWxsLgoKMjAwMS0wNy0wNCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZ2NqLnRleGk6IFVzZSBncGwudGV4aS4KCSogTWFrZS1sYW5nLmluICgkKHNyY2RpcikvamF2YS9nY2ouaW5mbywgamF2YS9nY2ouZHZpKTogVXBkYXRlCglkZXBlbmRlbmNpZXMgYW5kIHVzZSBkb2MvaW5jbHVkZSBpbiBzZWFyY2ggcGF0aC4KCjIwMDEtMDctMDMgIEplZmYgU3R1cm0gIDxqc3R1cm1Ab25lLXBvaW50LmNvbT4KCgkqIHBhcnNlLnkgKGZpeF9jb25zdHJ1Y3RvcnMpOiBUZXN0IGlmIGEgQ0FMTF9FWFBSIGludm9rZXMKCWB0aGlzJy4gIElmIHNvLCBkb24ndCBidWlsZCBpbnN0YW5jZSBpbml0aWFsaXplcnMuCgoyMDAxLTA3LTAzICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHJlc29sdmVfZXhwcmVzc2lvbl9uYW1lKTogSW1wcm92ZWQgZXJyb3IgbWVzc2FnZSBmb3IKCWlubmVyIGNsYXNzIGNhc2VzLiBGaXhlcyBQUiBqYXZhLzE5NTgKCjIwMDEtMDYtMjggIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGxhbmcuYzogI2luY2x1ZGUgZGlhZ25vc3RpYy5oCgkobGFuZ19wcmludF9lcnJvcik6IEFkZCBhIGBkaWFnbm9zdGljX2NvbnRleHQgKicgcGFyYW1ldGVyLgoJKGphdmFfZHVtbXlfcHJpbnQpOiBMaWtld2lzZS4KCSogTWFrZS1sYW5nLmluIChKQVZBX0xFWF9DKTogRGVwZW5kIG9uIGRpYWdub3N0aWMuaAoKMjAwMS0wNi0yNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBqY2YtcGFyc2UuYyAoZ2NjX21hcmtfamNmKTogVGVzdCBmb3IgYSBmaW5pc2hlZCBKQ0YuCgkqIGpjZi5oICh0eXBlZGVmIHN0cnVjdCBKQ0YpOiBOZXcgYml0ZmllbGQgYGZpbmlzaGVkLicKCShKQ0ZfRklOSVNIKTogU2V0IGBmaW5pc2hlZC4nCgkoSkNGX1pFUk8pOiBSZXNldCBgZmluaXNoZWQuJwoJRml4ZXMgUFIgamF2YS8yNjMzCgoyMDAxLTA2LTI3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKGNsYXNzX2JvZHlfZGVjbGFyYXRpb246KTogRG9uJ3QgaW5zdGFsbCBlbXB0eSBpbnN0YW5jZQoJaW5pdGlhbGl6ZXJzLgoJRml4ZXMgUFIgamF2YS8xMzE0CgoyMDAxLTA2LTI3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKHNldF9zdXBlcl9pbmZvKTogQ2FsbCBgc2V0X2NsYXNzX2RlY2xfYWNjZXNzX2ZsYWdzLicKCShzZXRfY2xhc3NfZGVjbF9hY2Nlc3NfZmxhZ3MpOiBOZXcgZnVuY3Rpb24uCgkqIGphdmEtdHJlZS5oIChzZXRfY2xhc3NfZGVjbF9hY2Nlc3NfZmxhZ3MpOiBOZXcgcHJvdG90eXBlLgoJKiBqY2YtcGFyc2UuYyAoaGFuZGxlX2lubmVyY2xhc3NfYXR0cmlidXRlKTogUmVhZCBhbmQgc2V0IGFjY2VzcyBmbGFncy4KCShwYXJzZV9jbGFzc19maWxlKTogTmV3IGxvY2FsIGBkZWNsX21heF9sb2NhbHMuJyBUYWtlIHdpZGUgdHlwZXMKCWludG8gYWNjb3VudCB0byBjb21wdXRlIERFQ0xfTUFYX0xPQ0FMUy4KCSogcGFyc2UueSAodHlwZV9pbXBvcnRfb25fZGVtYW5kX2RlY2xhcmF0aW9uOik6IElnbm9yZSBkdXBsaWNhdGUKCWltcG9ydHMgb24gZGVtYW5kLgoKMjAwMS0wNi0yMiAgSmFuIHZhbiBNYWxlICA8amFuLnZhbm1hbGVAZmVuay53YXUubmw+CgoJKiB6aXBmaWxlLmg6IFVzZSBHQ0NfSkNGX0ggaW5zdGVhZCBvZiBKQ0ZfSC4KCjIwMDEtMDYtMjAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAoamF2YV9oYXNoX3RyZWVfbm9kZSk6IEZpeGVkIGluZGVudGF0aW9uIGluIGxlYWRpbmcgY29tbWVudC4KCSogcGFyc2UueSAoZG9fcmVzb2x2ZV9jbGFzcyk6IE1vdmVkIGNvbW1lbnRzIG91dCB0byBsZWFkaW5nIGNvbW1lbnQKCXNlY3Rpb24uIFJlbW92ZWQgbG9jYWwgYHN0YXJ0JywgTmV3IGxvY2FsIGBfaHQnIGFuZAoJYGNpcmN1bGFyaXR5X2hhc2guJyAgUmVjb3JkIGBlbmNsb3NpbmcnIGluIGhhc2ggdGFibGUgYW5kIHNlYXJjaAoJaXQgdG8gZGV0ZWN0IGNpcmN1bGFyaXR5LiAgVXNlIGBlbmNsb3NpbmcnIGFzIGFuIGFyZ3VtZW50IHRvCglgbG9va3VwX2NsLicgRnJlZSB0aGUgaGFzaCB0YWJsZSB3aGVuIGRvbmUuCgoyMDAxLTA2LTE5ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBsZXguYyAoamF2YV9yZWFkX2NoYXIpOiBEaXNhbGxvdyBpbnZhbGlkIGFuZCBvdmVybG9uZwoJc2VxdWVuY2VzLiAgRml4ZXMgUFIgamF2YS8yMzE5LgoKMjAwMS0wNi0wNSAgSmVmZiBTdHVybSAgPGpzdHVybUBvbmUtcG9pbnQuY29tPgoKCSogZGVjbC5jIChjcmVhdGVfcHJpbWl0aXZlX3Z0YWJsZSk6IERvbid0IGNhbGwgbWFrZV9kZWNsX3J0bC4KCjIwMDEtMDYtMDQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogZXhwci5jIChmb3JjZV9ldmFsdWF0aW9uX29yZGVyKTogTWF0Y2ggd3JhcHBlZCBjdG9yIGNhbGxzLCBsb2NhdGUKCWFyZ3VtZW50cyBhY2NvcmRpbmdseS4KCjIwMDEtMDYtMDIgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGdjai50ZXhpOiBNb3ZlIGNvbnRlbnRzIHRvIGp1c3QgYWZ0ZXIgdGl0bGUgcGFnZS4KCjIwMDEtMDYtMDEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2UueSAodHlwZV9saXRlcmFsczopOiBVc2UgYGJ1aWxkX2luY29tcGxldGVfY2xhc3NfcmVmJyB3aXRoCglidWlsdGluIHR5cGUuCgkocGF0Y2hfaW5jb21wbGV0ZV9jbGFzc19yZWYpOiBCdWlsZCB0aGUgY2xhc3MgcmVmLCBidWlsZCB0aGUgY2xhc3MKCWluaXQgaWYgbmVjZXNzYXJ5LCBjb21wbGV0ZSB0aGUgdHJlZS4KCUZpeGVzIFBSIGphdmEvMjYwNQoKMjAwMS0wNS0zMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChsb29rdXBfZmllbGRfd3JhcHBlcik6IFRlc3QgYG5hbWUnIGNvZGUuCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogVGVzdCBgcXVhbF93ZmwnIGNvZGUuCgkocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IEhhbmRsZSBgQ09OVkVSVF9FWFBSJywgZml4ZSBpbmRlbnRhdGlvbiwKCWhhbmRsZSBgcXVhbF93ZmwnIGJ5IGNvZGUuCgkobWF5YmVfYnVpbGRfcHJpbXR0eXBlX3R5cGVfcmVmKTogVGVzdCBgd2ZsJyBjb2RlLgoKMjAwMS0wNS0yMyAgVGhlb2RvcmUgUGFwYWRvcG91bG8gIDxUaGVvZG9yZS5QYXBhZG9wb3Vsb0Bzb3BoaWEuaW5yaWEuZnI+CgoJKiBNYWtlLWxhbmcuaW4gKCQoc3JjZGlyKS9qYXZhL2djai5pbmZvKTogQWRkZWQgZGVwZW5kZW5jaWVzIG9uCglmZGwudGV4aS4KCShqYXZhL2djai5kdmkpOiBVc2UgVEVYSTJEVkkgaW5zdGVhZCBvZiBjdXN0b20gdGV4IGNhbGxzLiAgQ3JlYXRlCgl0aGUgZHZpIGZpbGUgaW4gdGhlIGphdmEgZGlyZWN0b3J5LgoKMjAwMS0wNS0yNSAgU2FtIFRIICA8c2FtQHVjaGljYWdvLmVkdT4KCgkqIGdlbi10YWJsZS5wbCBqYXZhb3AuaCBqY2YuaCBsZXguaCwKCXBhcnNlLmg6IEZpeCBoZWFkZXIgaW5jbHVkZSBndWFyZHMuCgoyMDAxLTA1LTIzICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBqdi1zY2FuLmMgKHZlcnNpb24pOiBVcGRhdGUgY29weXJpZ2h0IHllYXIuCgoyMDAxLTA1LTIxICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGpjZi1wYXJzZS5jIChyZWFkX2NsYXNzKTogIElmIGNsYXNzIGlzIGZyb20gLmNsYXNzIG9yIC56aXAgZmlsZQoJYW5kIGl0J3MgYWxyZWFkeSBiZWVuIHJlYWQsIGRvbid0IHB1c2gvcG9wIHBhcnNlciBjb250ZXh0LgoKMjAwMS0wNS0xOCAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBqdnNwZWMuYyAobGFuZ19zcGVjaWZpY19wcmVfbGluayk6ICBSZS1hcnJhbmdlIHRoZSBsaW5rZXIKCWNvbW1hbmQgbGluZSBzbyB0aGUganZnZW5tYWluLWdlbmVyYXRlZCBtYWluIHByb2dyYW0gY29tZXMgZmlyc3QuCgoyMDAxLTA1LTE1ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChidWlsZF91dGY4X3JlZik6IERvbid0IGdlbmVyYXRlIGlkZW50aWZpZXIgYmFzZWQgb24KCXV0Zjhjb25zdCBjb250ZW50cy4KCjIwMDEtMDUtMTIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBqYXZhLXRyZWUuZGVmIChKQVZBX0VYQ19PQkpfRVhQUik6IE5ldy4KCSogZXhwci5jIChqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiBFeHBhbmQgaXQuCgkocHJvY2Vzc19qdm1faW5zdHJ1Y3Rpb24pOiBCdWlsZCBKQVZBX0VYQ19PQkpfRVhQUiBpbnN0ZWFkIG9mCgljYWxsaW5nIGJ1aWxkX2V4Y2VwdGlvbl9vYmplY3RfcmVmLgoJKiBwYXJzZS55IChjYXRjaF9jbGF1c2VfcGFyYW1ldGVyKTogTGlrZXdpc2UuCgkoYnVpbGRfZG90X2NsYXNzX21ldGhvZCk6IExpa2V3aXNlLgoJKHRyeV9yZWZlcmVuY2VfYXNzaWduY29udik6IExpa2V3aXNlLgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpOiBDaGVjayBKQVZBX0VYQ19PQkpfRVhQUiBub3QgRVhDX1BUUl9FWFBSLgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBMaWtld2lzZS4KCjIwMDEtMDUtMDcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2UueSAoYnVpbGRfdW5yZXNvbHZlZF9hcnJheV90eXBlKTogU2V0CglFWFBSX1dGTF9RVUFMSUZJQ0FUSU9OIG9uIHRoZSBuZXdseSBjcmVhdGVkIHdmbC4KCUZpeGVzIFBSIGphdmEvMjUzOC4gRml4ZXMgUFIgamF2YS8yNTM1LgoKMjAwMS0wNS0wNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChmaXhfY29uc3RydWN0b3JzKTogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBhc3NpZ25tZW50IHRvCglsb2NhbC4gTW92ZWQgYXNzaWdubWVudCB0byBgdGhpcyQ8bj4nLCBmaXhlZCBjb21tZW50cyBhbmQKCWluZGVudGF0aW9uLgoJKGJ1aWxkX3dmbF93cmFwKTogRml4ZWQgaW5kZW50YXRpb24uCglGaXhlcyBQUiBqYXZhLzI1OTgsIGphdmEvMjU3OSBhbmQgamF2YS8yNjU4LgoKMjAwMS0wNS0wMyAgTW8gRGVKb25nICA8bWRlam9uZ0ByZWRoYXQuY29tPgoKCSogbGV4LmMgKGphdmFfbmV3X2xleGVyKTogQ2FsbCBpY29udl9jbG9zZSBvbiB0ZW1wIGhhbmRsZSB1c2VkIHRvCgljaGVjayBmb3IgYnl0ZSBzd2FwLgoKMjAwMC0wNS0wMiAgSmVmZiBTdHVybSAgPGpzdHVybUBvbmUtcG9pbnQuY29tPgoKCSogZXhwci5jIChidWlsZF9jbGFzc19pbml0KTogTW92ZSBNT0RJRllfRVhQUgoJb3V0c2lkZSBvZiBDT05EX0VYUFIuICBSZW1vdmUgdmFyaWFibGUgYGNhbGwnLgoKMjAwMS0wNS0wMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGVjbC5jOiBOVUxMX1BUUiAtPiBOVUxMLgoJKiBqY2Ytd3JpdGUuYzogTGlrZXdpc2UuCgoyMDAxLTA1LTAxICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKCQoc3JjZGlyKS9qYXZhL2djai5pbmZvKTogQWRkZWQgYC1JLi4nLgoJKGphdmEvZ2NqLmR2aSk6IEFkZGVkICQoc3JjZGlyKSB0byBURVhJTlBVVFMuCgkqIGdjai50ZXhpOiBVcGRhdGVkIGNvcHlyaWdodCB0ZXh0LiAgSW5jbHVkZSBmZGwudGV4aS4KCShUb3ApOiBMaW5rIHRvIG5ldyBub2RlLgoKMjAwMS0wNS0wMSAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBwYXJzZS5oIChSRUdJU1RFUl9JTVBPUlQpOiAgVXNlIHRyZWVfY29ucyBpbnN0ZWFkIG9mIGNoYWlub24uCgoyMDAxLTA1LTAxICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIHBhcnNlLnkgKGphdmFfcG9wX3BhcnNlcl9jb250ZXh0KTogIFRoZSBUUkVFX1ZBTFVFIG9mIGEgbGluayBpbiB0aGUKCWltcG9ydF9saXN0IGNvbnRhaW5zIHRoZSBuYW1lLCBub3QgdGhlIFRSRUVfUFVSUE9TRS4KCjIwMDEtMDQtMjkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGpjZi1pby5jIChyZWFkX3ppcF9tZW1iZXIpOiBDYXN0IHRvIGxvbmcgaW4gY29tcGFyaXNvbiB3aXRoCglzaWduZWQgdmFsdWUuCgoJKiBqdnNwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBJbml0aWFsaXplIHZhcmlhYmxlcy4KCgkqIG1hbmdsZS5jIChmaW5kX2NvbXByZXNzaW9uX3JlY29yZF9tYXRjaCk6IExpa2V3aXNlLgoKCSogdHlwZWNrLmMgKGJ1aWxkX251bGxfc2lnbmF0dXJlKTogUHJvdmlkZSBzdGF0aWMgcHJvdG90eXBlLiAgTWFyawoJcGFyYW1ldGVyIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6IEluaXRpYWxpemUgdmFyaWFibGUuCgoyMDAxLTA0LTI3ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQHdhaXRha2kub3RhZ28uYWMubno+CgoJKiBwYXJzZS55IChkb19yZXNvbHZlX2NsYXNzKTogQ2hlY2sgZm9yIGN5Y2xpYyBpbmhlcml0YW5jZSBkdXJpbmcKCWlubmVyIGNsYXNzIHJlc29sdXRpb24uCgoyMDAxLTA0LTI3ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIHBhcnNlLnkgKGphdmFfZXhwYW5kX2NsYXNzZXMpOiAgRG9uJ3QgY2hhbmdlIGN0eHBfZm9yX2dlbmVyYXRpb24KCXdoaWxlIGl0ZXJhdGluZywgc2luY2UgdGhhdCBjb3VsZCBjYXVzZSBnYyB0byBsb3NlIHN0dWZmLgoKMjAwMS0wNC0yNiAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJRml4IG1ldGhvZCBzZWFyY2ggd3J0IHNjb3BlIG9mIGlubmVyIGNsYXNzZXMgdG8gbWF0Y2ggSkxTMi4KCSogdHlwZWNrLmMgKGJ1aWxkX251bGxfc2lnbmF0dXJlKTogIE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoaGFzX21ldGhvZCk6ICBOZXcgZnVuY3Rpb24uICBVc2VzIGJ1aWxkX251bGxfc2lnbmF0dXJlIGFuZCBsb29rdXBfZG8uCgkqIGphdmEtdHJlZS5oIChoYXNfbWV0aG9kKTogIE5ldyBkZWNsYXJhdGlvbi4KCSogcGFyc2UueSAoZmluZF9hcHBsaWNhYmxlX2FjY2Vzc2libGVfbWV0aG9kc19saXN0KTogIERvIG5vdCBzZWFyY2gKCWNvbnRleHQgb2YgaW5uZXIgY2xhc3NlcyBoZXJlLgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogIFNlYXJjaCBzY29wZSwgaWUuIGN1cnJlbnQgYW5kIG91dGVyIGNsYXNlcywKCWZvciBtZXRob2QgbWF0Y2hpbmcgc2ltcGxlIG5hbWUsIHRvIGZpbmQgY2xhc3MuCgoyMDAxLTA0LTI2ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyBjYXNlIFNXSVRDSF9FWFBSKToKCUZpeCB0aGlua286ICBJZiBhIHNpbmdsZSBjYXNlLCB1c2UgaWZfaWNtcGVxLCBub3QgaWZlcS4KCgkqIGNvbnN0YW50cy5jIChmaW5kX21ldGhvZHJlZl93aXRoX2NsYXNzX2luZGV4KTogIE5ldyBmdW5jdGlvbi4KCShmaW5kX21ldGhvZHJlZl9pbmRleCk6ICBVc2UgZmluZF9tZXRob2RyZWZfd2l0aF9jbGFzc19pbmRleC4KCSogamF2YS10cmVlLmggKGZpbmRfbWV0aG9kcmVmX3dpdGhfY2xhc3NfaW5kZXgpOiAgTmV3IGRlY2xhcmF0aW9uLgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMgY2FzZSBDQUxMX0VYUFIpOiAgRG9uJ3QgY2hhbmdlCglERUNMX0NPTlRFWFQsIGluc3RlYWQgdXNlIG5ldyBmaW5kX21ldGhvZHJlZl93aXRoX2NsYXNzX2luZGV4IGZ1bmN0aW9uLgoJSWYgY29udGV4dCBjaGFuZ2VkIGZyb20gaW50ZXJmYWNlIHRvIGNsYXNzLCBkb24ndCB1c2UgaW52b2tlaW50ZXJmYWNlLgoKMjAwMS0wNC0yNSAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiAgRm9yIGZpZWxkIGluc3RydWN0aW9ucywKCWNoZWNrIHRoYXQgZmllbGQgaW5kZXggaXMgdmFsaWQuICBGb3IgaW52b2tlIGluc3RydWN0aW9ucywgY2hlY2sgdGhhdAoJbWV0aG9kIGluZGV4IGlzIHZhbGlkLgoKMjAwMS0wNC0yNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWctbGFuZy5pbiAodGFyZ2V0X2xpYnMpOiBDb3B5IGZyb20gJGxpYmdjal9zYXZlZC4KCjIwMDEtMDQtMjUgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBBZGQgbmV3IGNsYXNzICJwcm90ZWN0aW9uRG9tYWluIgoJZmllbGQuCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3NfZGF0YSk6IFNldCBpbml0aWFsIHZhbHVlIGZvciAicHJvdGVjdGlvbkRvbWFpbiIuCgoyMDAxLTA0LTIyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBqdnNwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBGaXggbWVtb3J5IGFsbG9jYXRpb24KCWRlZmljaXQsIGJ5IHVzaW5nIGNvbmNhdCBpbiBsaWV1IG9mIHhtYWxsb2Mvc3ByaW50Zi4KCjIwMDEtMDQtMjAgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCUZpeGVzIHRvIGNvbXBpbGUgbXVsdGlwbGUgLmNsYXNzIGZpbGVzIGF0IG9uY2UuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiAgRG9uJ3Qgc2V0IENMQVNTX0xPQURFRF9QLgoJKiBqYXZhLXRyZWUuaCAoQ0xBU1NfUEFSU0VEX1ApOiAgTmV3IG1hY3JvLgoJKENMQVNTX0xPQURFRF9QKTogIFJlLWRlZmluZSB0byB1c2UgVFlQRV9TSVpFIGFuZCBDTEFTU19QQVJTRURfUC4KCSogamNmLXBhcnNlLmMgKGpjZl9wYXJzZV9zb3VyY2UpOiAgSW5saW5lIGludG8gcmVhZF9jbGFzcy4KCShyZWFkX2NsYXNzKTogIEF2b2lkIHNvbWUgY29kZSBkdXBsaWNhdGlvbi4KCURvbid0IGNhbGwgSkNGX0ZJTklTSCBmb3IgYSAuY2xhc3MgZmlsZSAtIG1pZ2h0IGJlIG5lZWRlZCBsYXRlci4KCShqY2ZfcGFyc2UpOiAgRG9uJ3QgY2FsbCBsYXlvdXRfY2xhc3MgaGVyZS4gIENoZWNrL3NldCBDTEFTU19QQVJTRURfUAoJcmF0aGVyIHRoYW4gQ0xBU1NfTE9BREVEX1AsIHNpbmNlIGxhdHRlciBpbXBsaWVzIGNsYXNzIGxhaWQgb3V0LgoJKHl5cGFyc2UpOiAgRG8gbGF5b3V0X2NsYXNzIGFuZCBKQ0ZfRklOSVNoIGhlcmUgaW5zdGVhZCwgaW4gcGFzcyAyLgoJKiBwYXJzZS55OiAgRG9uJ3QgbmVlZCB0byBzZXQgQ0xBU1NfTE9BREVEX1AgZm9yIGFycmF5IHR5cGVzLgoKMjAwMS0wNC0xMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZS1sYW5nLmluIChqYXZhL2JvZWhtLm8pOiBEZXBlbmQgb24gdG9wbGV2LmguCgoJKiBib2VobS5jOiBJbmNsdWRlIHRvcGxldi5oLgoKMjAwMS0wNC0wNiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoJICAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCUZpeCBmb3IgUFIgZ2NqLzE0MDQgYW5kIFBSIGdjai8yMzMyOgoJKiBwYXJzZS55IChidWlsZF9hcnJheV9mcm9tX25hbWUpOiBJZiB3ZSB1c2UgdGhlIHR5cGVfd2ZsIHRoZW4KCWFjY3VtdWxhdGUgZGltZW5zaW9ucyBmcm9tIHRoZSBvcmlnaW5hbCB0eXBlIGFzIHdlbGwuCgkoYnVpbGRfdW5yZXNvbHZlZF9hcnJheV90eXBlKTogRG9uJ3QgbW9kaWZ5IFRZUEVfT1JfV0ZMIGluIHBsYWNlLgoKMjAwMS0wNC0wNiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogcGFyc2UueSAoYW5hbHl6ZV9jbGluaXRfYm9keSk6IFJldHVybiB0cnVlIGlmIHRoZSBzZWNvbmQgb3BlcmFuZAoJb2YgYSBNRVRIT0RfRVhQUiBpcyBub256ZXJvLgoKMjAwMS0wNC0wNiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogTWFrZS1sYW5nLmluICgkKHNyY2RpcikvamF2YS9wYXJzZS1zY2FuLmMpOiBSdW4gYmlzb24gZnJvbSBidWlsZAoJZGlyZWN0b3J5LgoJKCQoc3JjZGlyKS9qYXZhL3BhcnNlLmMpOiBMaWtld2lzZS4KCjIwMDEtMDQtMDUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogZ2NqLnRleGk6IFVzZSBgd2hpY2gtZ2NqJyBpbnN0ZWFkIG9mIGB3aGljaC1nNzcuJwoJKHZlcnNpb24tZ2NjKTogSW5pdGlhbGl6ZWQuCgkod2hpY2gtZ2NqKTogTGlrZXdpc2UuCgoyMDAxLTA0LTA0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIGphdmEtdHJlZS5oIChzdHJ1Y3QgbGFuZ19kZWNsKTogTmV3IG1hY3JvCglgREVDTF9GSVhFRF9DT05TVFJVQ1RPUl9QLicgTmV3IGZpZWxkIGBmaXhlZF9jdG9yLicKCSogcGFyc2UueSAoYnVpbGRfaW5zdGFuY2VfaW5pdGlhbGl6ZXIpOiBOZXcgZnVuY3Rpb24uCgkoYWRkX2luc3RhbmNlX2luaXRpYWxpemVyKTogVXNlIGl0LgoJKGphdmFfZml4X2NvbnN0cnVjdG9ycyk6IFNldCBgY3VycmVudF9jbGFzcycgYmVmb3JlIGZpeCBwYXNzLgoJKGZpeF9jb25zdHJ1Y3RvcnMpOiBKdXN0IHJldHVybiBpZiBhbHJlYWR5IGZpeGVkLiBNb3ZlIGBzdXBlcigpJwoJaW52b2NhdGlvbiBhaGVhZC4gVXNlIGBidWlsZF9pbnN0YW5jZV9pbml0aWFsaXplci4nCglGaXhlcyBQUiBqYXZhLzEzMTUuCgoyMDAxLTA0LTA0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IFBhc3MgZmllbGQncwoJREVDTF9DT05URVhUIHRvIGBub3RfYWNjZXNzaWJsZV9wLicKCShub3RfYWNjZXNzaWJsZV9wKTogQ2hhbmdlZCBwYXJhbWV0ZXJzIG9yZGVyIGluIGBpbmhlcml0c19mcm9tX3AnCglpbnZvY2F0aW9uLgoKMjAwMS0wMy0yNyAgQW5kcmV3IEhhbGV5ICA8YXBoQGNhbWJyaWRnZS5yZWRoYXQuY29tPgoKCSogbGFuZy1vcHRpb25zLmg6IEFkZCBmbGFnX2NoZWNrX3JlZmVyZW5jZXMuCgoyMDAxLTA0LTA0ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGphdmEtdHJlZS5oIChDT05TVEFOVF9WQUxVRV9QKTogIE5ldyBtYWNyby4KCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2NsYXNzZmlsZSk6ICBVc2UgQ09OU1RBTlRfVkFMVUVfUC4KCSogcGFyc2UueSAobWF5YmVfYnVpbGRfY2xhc3NfaW5pdF9mb3JfZmllbGQpOiAgTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShyZXNvbHZlX2V4cHJlc3Npb25fbmFtZSwgcmVzb2x2ZV9maWVsZF9hY2Nlc3MpOiAgVXNlCgltYXliZV9idWlsZF9jbGFzc19pbml0X2Zvcl9maWVsZCBpbnN0ZWFkIG9mIGJ1aWxkX2NsYXNzX2luaXQKCVRoaXMgZG9lcyBub3QgZG8gdGhlIGluaXQgaWYgdGhlIGZpZWxkIGlzIGNvbXBpbGUtdGltZS1jb25zdGFudC4KCShyZXNvbHZlX2ZpZWxkX2FjY2Vzcyk6ICBTaW1wbGlmeS4KCgkqIHBhcnNlLnkgKGZvbGRfY29uc3RhbnRfZm9yX2luaXQpOiAgTWVyZ2UgdGVzdCBpbnRvIHN3aXRjaC4KCjIwMDEtMDQtMDMgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BzdGFuZm9yZC5lZHU+CgoJKiBNYWtlLWxhbmcuaW4gKGJ1ZmZlci5vLCBjaGVjay1pbml0Lm8sIGNsYXNzLm8pOiBEb24ndCBkZXBlbmQKCW9uIGdhbnNpZGVjbC5oLgoJKiBidWZmZXIuYywganZnZW5tYWluLmM6IERvbid0IGluY2x1ZGUgZ2Fuc2lkZWNsLmguCgoyMDAxLTA0LTAyICBaYWNrIFdlaW5iZXJnICA8emFja3dAc3RhbmZvcmQuZWR1PgoKCSogZXhwci5jIChwb3BfdHlwZV8wKTogU2F2ZSB0aGUgcmVzdWx0IG9mIHRoZSBmaXJzdAoJbGFuZ19wcmludGFibGVfbmFtZSBjYWxsIGluIGEgc2NyYXRjaCBidWZmZXIsIHNvIGl0Cgl3b24ndCBiZSBjbG9iYmVyZWQgYnkgdGhlIHNlY29uZCBjYWxsLgoKMjAwMS0wMy0zMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS1zY2FuLnkgKGFycmF5X3R5cGU6KTogUmV3cml0dGVuLgoJKHR5cGVfZGVjbGFyYXRpb246KTogYGVtcHR5X3N0YXRlbWVudCcgcmVwbGFjZXMgYFNDX1RLLicKCShjbGFzc19tZW1iZXJfZGVjbGFyYXRpb246KTogYGVtcHR5IHN0YXRlbWVudCcgYWRkZWQuCgkobWV0aG9kX2JvZHk6KTogU2ltcGxpZmllZC4KCShzdGF0aWNfaW5pdGlhbGl6ZXI6KTogTGlrZXdpc2UuCgkocHJpbWFyeV9ub19uZXdfYXJyYXk6KTogVXNlIGB0eXBlX2xpdGVyYWxzLicKCSh0eXBlX2xpdGVyYWxzOik6IE5ldyBydWxlLgoJKGRpbXM6KTogU2V0IGFuZCB1cGRhdGUgYGJyYWNrZXRfY291bnQuJwoJRml4ZXMgUFIgamF2YS8xMDc0LiBGaXhlcyBQUiBqYXZhLzI0MTIuCgoyMDAxLTAzLTI4ICBIYW5zIEJvZWhtICA8Ym9laG1AYWNtLm9yZz4KCgkqIGJvZWhtLmMgKFBST0NFRFVSRV9PQkpFQ1RfREVTQ1JJUFRPUik6IFNldCB0byB1c2UgYGJ1aWxkX2ludF8yLicKCShnZXRfYm9laG1fdHlwZV9kZXNjcmlwdG9yKTogU2V0IHR5cGUgb24gcmV0dXJuZWQgdmFsdWUgdG8gYmUgYQoJcG9pbnRlciBsZW5ndGggaW50ZWdlci4KCjIwMDEtMDMtMjggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGV4cHIuYyAocG9wX3R5cGVfMCk6IENhbGwgYGNvbmNhdCcgcmF0aGVyIHRoYW4gYnVpbGRpbmcgdGhlCglzdHJpbmcgbWFudWFsbHkuCgkocG9wX3R5cGUpOiBBZGQgZm9ybWF0IHNwZWNpZmllciBpbiBjYWxsIHRvIGBlcnJvcicuCgoJKiBwYXJzZS55IChwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6IEF2b2lkIGNhc3RpbmcgYXdheQoJY29uc3QtbmVzcy4KCjIwMDEtMDMtMjggIEplZmZyZXkgT2xkaGFtICA8b2xkaGFtQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBqdmdlbm1haW4uYyAoZG9fbWFuZ2xlX2NsYXNzbmFtZSk6IEVuZCBzdHJpbmcgY29uc3RhbnQgd2l0aCAnXDAnLgoKMjAwMS0wMy0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglJQS02NCBBQkkgRXhjZXB0aW9uIEhhbmRsaW5nOgoJKiBNYWtlLWxhbmcuaW4gKGV4Y2VwdC5vKTogRG9uJ3QgZGVwZW5kIG9uIGVoLWNvbW1vbi5oLgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpOiBIYW5kbGUgRVhDX1BUUl9FWFBSLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKSBbdGhyb3dfbm9kZV06IE5vIF9Kdl9TamxqX1Rocm93LgoJW3NvZnRfZXhjZXB0aW9uaW5mb19jYWxsX25vZGVdOiBSZW1vdmUuCglbZWhfcGVyc29uYWxpdHlfbGliZnVuYywgbGFuZ19laF9ydW50aW1lX3R5cGVdOiBOZXcuCgkoZW5kX2phdmFfbWV0aG9kKTogTm8gZW1pdF9oYW5kbGVycy4KCSogZXhjZXB0LmMgKGphdmFfc2V0X2V4Y2VwdGlvbl9sYW5nX2NvZGUpOiBSZW1vdmUuCgkobWV0aG9kX2luaXRfZXhjZXB0aW9ucyk6IERvbid0IGNhbGwgaXQuCgkocHJlcGFyZV9laF90YWJsZV90eXBlKTogTm8gQ0FUQ0hfQUxMX1RZUEUuCgkoYnVpbGRfZXhjZXB0aW9uX29iamVjdF9yZWYpOiBOZXcuCgkoZXhwYW5kX2VuZF9qYXZhX2hhbmRsZXIpOiBVcGRhdGUgZm9yIGV4Y2VwdC5oIG5hbWUgY2hhbmdlcy4KCShlbWl0X2hhbmRsZXJzLCBleHBhbmRfcmVzdW1lX2FmdGVyX2NhdGNoKTogUmVtb3ZlLgoJKiBleHByLmMgKGphdmFfbGFuZ19leHBhbmRfZXhwcik6IFVwZGF0ZSBmb3IgZXhjZXB0LmggbmFtZSBjaGFuZ2VzLgoJKHByb2Nlc3NfanZtX2luc3RydWN0aW9uKTogVXNlIGJ1aWxkX2V4Y2VwdGlvbl9vYmplY3RfcmVmLgoJKiBqYXZhLXRyZWUuaCAoSlRJX1NPRlRfRVhDRVBUSU9OSU5GT19DQUxMX05PREUpOiBSZW1vdmUuCgkoc29mdF9leGNlcHRpb25pbmZvX2NhbGxfbm9kZSk6IFJlbW92ZS4KCShidWlsZF9leGNlcHRpb25fb2JqZWN0X3JlZik6IERlY2xhcmUuCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucykgW0NBTExfRVhQUl06IE5vCglzb2Z0X2V4Y2VwdGlvbmluZm9fY2FsbF9ub2RlLiAgTW92ZSBwcm9jZXNzaW5nIC4uLgoJW0VYQ19QVFJfRVhQUl06IC4uLiBoZXJlLgoJKiBwYXJzZS5oIChCVUlMRF9BU1NJR05fRVhDRVBUSU9OX0lORk8pOiBSZW1vdmUgZGVhZCBjb2RlLgoJKiBwYXJzZS55IChjYXRjaF9jbGF1c2VfcGFyYW1ldGVyKTogVXNlIGJ1aWxkX2V4Y2VwdGlvbl9vYmplY3RfcmVmLgoJKHNvdXJjZV9lbmRfamF2YV9tZXRob2QpOiBObyBqYXZhX3NldF9leGNlcHRpb25fbGFuZ19jb2RlIG9yCgllbWl0X2hhbmRsZXJzLgoJKGJ1aWxkX2RvdF9jbGFzc19tZXRob2QpOiBVc2UgYnVpbGRfZXhjZXB0aW9uX29iamVjdF9yZWYuCgkodHJ5X3JlZmVyZW5jZV9hc3NpZ25jb252KTogQ2hlY2sgRVhDX1BUUl9FWFBSIG5vdAoJc29mdF9leGNlcHRpb25pbmZvX2NhbGxfbm9kZS4KCjIwMDEtMDMtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBqYXZhLXRyZWUuaCAodGhyb3dfbm9kZSk6IERlZmluZSBhcyBhIHNpbmdsZSBtZW1iZXIgb2YKCWphdmFfZ2xvYmFsX3RyZWVzIGluc3RlYWQgb2YgYSBzZXBhcmF0ZSBhcnJheS4KCShKVElfVEhST1dfTk9ERSk6IE5ldy4KCSogZGVjbC5jICh0aHJvd19ub2RlKTogRG9uJ3QgZGVjbGFyZS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEluaXQgYSBzY2FsYXIgdGhyb3dfbm9kZS4KCURvbid0IHJlZ2lzdGVyIGl0IGZvciBnYy4KCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KTogUmVmZXJlbmNlIHNjYWxhciB0aHJvd19ub2RlLgoJKiBleHByLmMgKGJ1aWxkX2phdmFfYXRocm93KTogTGlrZXdpc2UuCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6IExpa2V3aXNlLgoJKiBwYXJzZS5oIChCVUlMRF9USFJPVyk6IExpa2V3aXNlLgoKMjAwMS0wMy0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoZW5kX2phdmFfbWV0aG9kKTogRG8gbm90IHNhdmUgYW5kIHJlc3RvcmUKCWZsYWdfbm9uX2NhbGxfZXhjZXB0aW9ucy4KCSogcGFyc2UueSAoc291cmNlX2VuZF9qYXZhX21ldGhvZCk6IExpa2V3aXNlLgoJKiBsYW5nLmMgKGZsYWdfZXhjZXB0aW9ucyk6IERvbid0IGRlY2xhcmUuCgkoamF2YV9pbml0X29wdGlvbnMpOiBTZXQgZmxhZ19ub25fY2FsbF9leGNlcHRpb25zLiAgU2V0CglmbGFnX2V4Y2VwdGlvbnMgaGVyZSAuLi4KCShqYXZhX2luaXQpOiAuLi4gbm90IGhlcmUuCgoyMDAxLTAzLTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZXhwci5jLCBwYXJzZS5oOiBVc2UgVVNJTkdfU0pMSl9FWENFUFRJT05TIGluc3RlYWQgb2YKCWV4Y2VwdGlvbnNfdmlhX2xvbmdqbXAuCgoJKiBsYW5nLmMgKGZsYWdfbmV3X2V4Y2VwdGlvbnMpOiBEb24ndCBkZWNsYXJlIGl0LgoJKGphdmFfaW5pdF9vcHRpb25zKTogT3Igc2V0IGl0LgoKMjAwMS0wMy0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoZW5kX2phdmFfbWV0aG9kKTogUmVuYW1lIGFzeW5jaHJvbm91c19leGNlcHRpb25zIHRvCglmbGFnX25vbl9jYWxsX2V4Y2VwdGlvbnMuCgkqIHBhcnNlLnkgKHNvdXJjZV9lbmRfamF2YV9tZXRob2QpOiBMaWtld2lzZS4KCjIwMDEtMDMtMjcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2UtbGFuZy5pbjogRGVwZW5kIG9uICQoU1lTVEVNX0gpLCBub3Qgc3lzdGVtLmguCgoyMDAxLTAzLTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcGFyc2UuaCAoREVDTF9FTkRfU09VUkNFX0xJTkUpOiBEb24ndCByZWx5IG9uIERFQ0xfRlJBTUVfU0laRS4KCjIwMDEtMDMtMjYgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2UueSAoZmluZF9hc19pbm5lcl9jbGFzcyk6IEZvbGxvdyBjdXJyZW50IHBhY2thZ2UKCWluZGljYXRpb25zIG5vdCB0byBtaXN0YWtpbmdseSBsb2FkIGFuIHVucmVsYXRlZCBjbGFzcy4KCjIwMDEtMDMtMjUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbnN0YW50cy5jIChQVVROKTogVXNlIG1lbWNweSwgbm90IGJjb3B5LgoKCSogbGV4LmMgKGphdmFfcmVhZF9jaGFyKTogVXNlIG1lbW1vdmUsIG5vdCBiY29weS4KCgkqIHBhcnNlLnkgKGphdmFfcGFyc2VyX2NvbnRleHRfcmVzdW1lKTogVXNlIG1lbWNweSwgbm90IGJjb3B5LgoKMjAwMS0wMy0yMyAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiAgUmVwbGFjZSAzIHBvcF90eXBlIGJ5IFBPUF9UWVBFCgltYWNybyBmb3IgYmV0dGVyIGVycm9yIHBpbi1wb2ludGluZy4KCSogamF2YS10cmVlLmg6ICBGaXggdHlwbyBpbiBjb21tZW50LgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogIENoYW5nZXMgdG8gVFJZX0ZJTkFMTFlfRVhQUi4KCURvbid0IGluY2x1ZGUganNyL2dvdG8gaW4gZXhjZXB0aW9uIHJhbmdlLgoJQ2hlY2sgaWYgc3RhcnQgYW5kIGVuZCBvZiBleGNlcHRpb24gcmFuZ2UgYXJlIHRoZSBzYW1lIChhbHNvIFRSWV9FWFBSKS4KCURvbid0IGVtaXQganNyIGFmdGVyIHRyeV9ibG9jayBpZiBDQU5fQ09NUExFVEVfTk9STUFMTFkgaXMgZmFsc2UuCglIb3dldmVyLCBkbyBlbWl0IHRoZSBmb2xsb3dpbmcgZ290byBldmVuIGlmIHRyeV9ibG9jayBpcyBlbXB0eS4KCURlZmVyIGZyZWVpbmcgZXhjZXB0aW9uX2RlY2wgdW50aWwgYWZ0ZXIgdGhlIGZpbmFsaXplciwgdG8gbWFrZQoJc3VyZSB0aGUgbG9jYWwgaXNuJ3QgcmV1c2VkIGluIHRoZSBmaW5hbGl6ZXIuICBGaXhlcyBQUiBqYXZhLzEyMDguCgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2xocyk6ICBJZiB0aGUgdHJ5LWNsYXVzZSBpcyBlbXB0eSwganVzdAoJcmV0dXJuIHRoZSBmaW5hbGx5LWNsYXVzZSBhbmQgdmljZSB2ZXJzYS4KCjIwMDEtMDMtMjMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogZ2NqLnRleGkgKElucHV0IE9wdGlvbnMpOiBkb2N1bWVudGVkIHRoZSBjaGVjayBmb3IgYXR0cmlidXRlCglgZ251LmdjYy5nY2NqLWNvbXBpbGVkJyBhbmQgdGhlIGAtZmZvcmNlLWNsYXNzZXMtYXJjaGl2ZS1jaGVjaycgZmxhZy4KCSogamF2YS10cmVlLmggKGZsYWdfZm9yY2VfY2xhc3Nlc19hcmNoaXZlX2NoZWNrKTogRGVjbGFyZWQgZXh0ZXJuLgoJKiBqY2YtcGFyc2UuYyAoSEFORExFX0dDSkNPTVBJTEVEX0FUVFJJQlVURSk6IE5ldyBtYWNyby4KCShqY2ZfcGFyc2UpOiBDaGVjayBmb3IgdGhlIHJpZ2h0IGNsYXNzZXMgYXJjaGl2ZSBpZiBuZWNlc3NhcnkuCgkqIGpjZi1yZWFkZXIuYyAoZ2V0X2F0dHJpYnV0ZSk6IERlZmluZSBgTUFUQ0hfQVRUUklCVVRFJyBhbmQgdXNlIGl0LgoJKGpjZl9wYXJzZV9maWVsZHMpOiBGaXhlZCBpbmRlbnRhdGlvbi4KCSogamNmLXdyaXRlLmMgKGFwcGVuZF9nY2pfYXR0cmlidXRlKTogTmV3IGZ1bmN0aW9uLgoJKGdlbmVyYXRlX2NsYXNzZmlsZSk6IENvbXB1dGUgdGhlIGF0dHJpYnV0ZSBjb3VudCwgaW52b2tlCglgYXBwZW5kX2djal9hdHRyaWJ1dGUnLgoJKiBqY2YuaCAodHlwZWRlZiBzdHJ1Y3QgSkNGKTogYHNlZW5faW5femlwJyBhbmQgYGphdmFfc291cmNlJwoJdHVybmVkIGludG8gYml0LWZpZWxkcy4gTmV3IGJpdC1maWVsZCBgcmlnaHRfemlwLicKCShKQ0ZfWkVSTyk6IFNldCBgcmlnaHRfemlwJyB0byB6ZXJvLgoJKiBsYW5nLW9wdGlvbnMuaCAoLWZmb3JjZS1jbGFzc2VzLWFyY2hpdmUtY2hlY2spOiBBZGRlZCBmbGFnLgoJKiBsYW5nLmMgKGZsYWdfZm9yY2VfY2xhc3Nlc19hcmNoaXZlX2NoZWNrKTogTmV3IGZsYWcuCgkobGFuZ19mX29wdGlvbnMpOiBOZXcgZW50cnkgYGZvcmNlLWNsYXNzZXMtYXJjaGl2ZS1jaGVjay4nCglGaXhlcyBQUiBqYXZhLzEyMTMuCgoyMDAxLTAyLTA3ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGdjai50ZXhpIChDb25maWd1cmUtdGltZSBPcHRpb25zKTogQWRkIC1mY2hlY2stcmVmZXJlbmNlcy4KCSogZXhwci5jIChidWlsZF9qYXZhX2luZGlyZWN0X3JlZik6IE5ldyBmdW5jdGlvbi4KCShqYXZhX2NoZWNrX3JlZmVyZW5jZSk6IE5ldyBmdW5jdGlvbi4KCShidWlsZF9qYXZhX2FycmF5X2xlbmd0aF9hY2Nlc3MpOiBVc2UgYnVpbGRfamF2YV9pbmRpcmVjdF9yZWYgdG8KCWNoZWNrIGZvciBudWxsIHJlZmVyZW5jZXMuCgkoYnVpbGRfamF2YV9hcnJheWFjY2Vzcyk6IExpa2V3aXNlLgoJKGJ1aWxkX2dldF9jbGFzcyk6IExpa2V3aXNlLgoJKGJ1aWxkX2ZpZWxkX3JlZik6IExpa2V3aXNlLgoJKGludm9rZV9idWlsZF9kdGFibGUpOiBMaWtld2lzZS4KCShidWlsZF9pbnZva2VpbnRlcmZhY2UpOiBMaWtld2lzZS4KCSogbGFuZy5jIChsYW5nX2Zfb3B0aW9ucyk6IEFkZCBmbGFnX2NoZWNrX3JlZmVyZW5jZXMuCgkqIGp2c3BlYy5jIChqdmdlbm1haW5fc3BlYyk6IEFkZCBmbGFnX2NoZWNrX3JlZmVyZW5jZXMuCgkqIGphdmEtdHJlZS5oIChmbGFnX2NoZWNrX3JlZmVyZW5jZXMpOiBOZXcgdmFyaWFibGUuCgkqIGxhbmcuYyAoZmxhZ19jaGVja19yZWZlcmVuY2VzKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHBhdGNoX2ludm9rZSk6IFVzZSBqYXZhX2NoZWNrX3JlZmVyZW5jZS4KCShwYXRjaF9hc3NpZ25tZW50KTogQWxsb3cgZm9yIGV4dHJhIG5lc3RpbmcgaW4KCV9Kdl9DaGVja0FycmF5U3RvcmUuCgoyMDAxLTAzLTIzICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCgkqIGdqYXZhaC5jIChjeHhfa2V5d29yZHMpOiBVcGRhdGUgZnJvbSB0aGUgZGVmaW5pdGl2ZSBsaXN0IGluIGNwL2xleC5jLgoJKiBsZXguYyAoY3h4X2tleXdvcmRzKTogTGlrZXdpc2UuCgoyMDAxLTAzLTIxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKHF1YWxpZnlfYW1iaWd1b3VzX25hbWUpOiBCcm9hZGVuIGBsZW5ndGgnCglyZWNvZ25pdGlvbi4gSGVscCBNT0RJRllfRVhQUiBiZSByZXNvbHZlZCBhcyBleHByZXNzaW9uIG5hbWVzLgoJRml4ZXMgUFIgamF2YS8yMDY2LiBGaXhlcyBQUiBqYXZhLzI0MDAuCgoyMDAxLTAzLTIxICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCgkqIGdqYXZhaC5jIChwcm9jZXNzX2ZpbGUpOiBNYXJrIGludGVyZmFjZSBkZWZpbml0aW9ucyB3aXRoCgkiX19hdHRyaWJ1dGVfXyAoKGphdmFfaW50ZXJmYWNlKSkiLgoKMjAwMS0wMy0yMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3MpOiBGaXhlZCBwdXNoX3N1cGVyX2ZpZWxkJ3Mgc2Vjb25kCglhcmd1bWVudC4gRml4ZXMgUFIgamF2YS8yMzMzLgoJKGpkZXBfcmVzb2x2ZV9jbGFzcyk6IFJlc2V0IFRZUEVfU0laRSBpZiBgZXJyb3JfbWFya19ub2RlJywgaXQncwoJdG9vIGVhcmx5IHRvIGxheSBpbm5lcmNsYXNzZXMgb3V0LgoKMjAwMS0wMy0yMCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoJICAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChwYXRjaF9hc3NpZ25tZW50KTogSGFuZGxlIHRoZSBjYXNlIG9mIGEgU0FWRV9FWFBSCglpbnNpZGUgYW4gYXJyYXkgcmVmZXJlbmNlLiBJbnNlcnRpb24gb2YgdGhlIGFycmF5IHN0b3JlIGNoZWNrCglyZXdyaXR0ZW4uIEZpeGVzIFBSIGphdmEvMjI5OS4KCjIwMDEtMDMtMjAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGxleC5jIChqYXZhX3JlYWRfdW5pY29kZSk6IE9ubHkgYWNjZXB0IGxlYWRpbmcgYHUncy4KCjIwMDEtMDMtMjAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGpjZi1wYXJzZS5jIChyZWFkX2NsYXNzKTogSW5pdGlhbGl6ZSBgY2xhc3MnLgoKMjAwMS0wMy0yMCAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jYXJuZWdpZW1lbGxvbi5lZHU+CgoJKiBqY2ZfcGFyc2UuYyAoamNmX3BhcnNlKTogRWxpbWluYXRlIHVudXNlZCB2YXJpYWJsZS4KCjIwMDEtMDMtMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChidWlsZF9jbGFzc19yZWYpOiBVc2UgU0VUX0RFQ0xfQVNTRU1CTEVSX05BTUUuCgkobGF5b3V0X2NsYXNzKTogTGlrZXdpc2UuCgkobGF5b3V0X2NsYXNzX21ldGhvZCk6IExpa2V3aXNlLgoJKGVtaXRfcmVnaXN0ZXJfY2xhc3Nlcyk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGJ1aWx0aW5fZnVuY3Rpb24pOiBMaWtld2lzZS4KCShnaXZlX25hbWVfdG9fbG9jYWxzKTogTGlrZXdpc2UuCgoyMDAxLTAzLTE5ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGpjZi1wYXJzZS5jIChsb2FkX2lubmVyX2NsYXNzZXMpOiAgQ2hlY2sgQ0xBU1NfTE9BREVEX1AKCWJlZm9yZSB0cnlpbmcgdG8gbG9hZCBhbiBpbm5lciBjbGFzcy4KCglGaXhlcyB0byBwcm9jZXNzIHRvIGNvbW1hbmQtbGluZSAuY2xhc3MgZmlsZXMgaW4gdHdvIHBhc3Nlcy4KCSogamF2YS10cmVlLmggKEpBVkFfRklMRV9QLCBDTEFTU19GSUxFX1AsIFpJUF9GSUxFX1ApOiAgTmV3IGZsYWdzLgoJKENMQVNTX0ZST01fQ1VSUkVOVExZX0NPTVBJTEVEX1NPVVJDRV9QKTogIFJlbmFtZSB0byAuLgoJKENMQVNTX0ZST01fQ1VSUkVOVExZX0NPTVBJTEVEX1ApOiAgLi4uIGJlY2F1c2UgaXQgaXMgbW9yZSBnZW5lcmFsIG5vdy4KCSogY2xhc3MuYyAoaXNfY29tcGlsZWRfY2xhc3MpOiAgRml4IGZvciByZW5hbWVkIGZsYWcuCgkqIHBhcnNlLnkgKG1heWJlX2NyZWF0ZV9jbGFzc19pbnRlcmZhY2VfZGVjbCk6ICBMaWtld2lzZS4KCSogamNmLXBhcnNlLmMgKHl5cGFyc2UpOiAgQWxzbyBzZXQgaWYgY29tcGlsaW5nIC5jbGFzcyBmaWxlcy4KCSogamNmLXBhcnNlLmMgKHJlYWRfY2xhc3MpOyAgUmVhZCBjdXJyZW50X2NsYXNzLgoJKGpjZl9wYXJzZSk6ICBNYWtlIHN0YXRpYy4KCShsb2FkX2lubmVyX2NsYXNzZXMpOiAgTmV3IGZ1bmN0aW9uLCB3aXRoIGNvZGUgbW92ZWQgZnJvbSBqY2ZfcGFyc2UsCgliZWNhdXNlIHdlIG5lZWQgdG8gaW5uZXIgY2xhc3NlcyBhZnRlciB0aGUgY29tbWFuZC1saW5lIGZpbGVzIGFyZSByZWFkLgoJKHl5cGFyc2UpOiAgU2V0IGZpbnB1dCB0byBOVUxMIHdoZW4gaXQgZG9lc24ndCBuZWVkIHRvIGJlIGNsb3NlZC4KCVJlZHVjZSB1c2Ugb2YgbWFpbl9qY2YgKGJhc2ljYWxseSBvbmx5IGZvciBhcmNoaXZlKSBhbmQKCXVzZSBmaW5wdXQgaW5zdGVhZCBvZiBtYWluX2pjZi0+cmVhZF9zdGF0ZS4KCUlubGluZSBqY2ZfZmlndXJlX2ZpbGVfdHlwZSBpbnRvIHl5cGFyc2UuCglTZXQgSkFWQV9GSUxFX1AsIENMQVNTX0ZJTEVfUCwgb3IgWklQX0ZJTEVfUCBvbiBmaWxlbmFtZSBsaXN0IG5hbWUuCglEZWZlciBsb2FkX2lubmVyX2NsYXNzZXMgYW5kIHBhcnNlX2NsYXNzX2ZpbGUgdG8gYSBzZWNvbmQgcGFzcywKCWFmdGVyIHdlJ3ZlIGNvcnJlY3RseSBtYXBwZWQgY29tbWFuZC1saW5lIC5jbGFzIGZpZWxzIHRvIGNsYXNzZXMuCgkoamNmX2ZpZ3VyZV9maWxlX3R5cGUpOiAgUmVtb3ZlZC4KCSogamNmLmggKEpDRl9aSVAsIEpDRl9DTEFTUywgSkNGX1NPVVJDRSk6ICBSZW1vdmVkIGZsYWdzLgoJKEpDRl9aRVJPKTogIEFsc28gY2xlYXIgemlwZCBmaWVsZC4KCSogemlwZmlsZS5oOiAgQ29uZGl0aW9uYWxpemUgb24gSkNGX0ggaW5zcmVhZCBvZiBKQ0ZfWklQLgoKMjAwMS0wMy0xOCAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jYXJuZWdpZW1lbGxvbi5lZHU+CgoJKiBqY2YtcGFyc2UuYyAoeXlwYXJzZSk6IENoYW5nZSBjaCBmcm9tIGNoYXIgKiB0byBjaGFyLgoKMjAwMS0wMy0xOSAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBqdnNwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiAgQ2hlY2sgZm9yIC56aXAgYW5kIC5qYXIgZmlsZXMuCglBZGQgY29uc3RydWN0ZWQgZmlsZWxpc3QtZmlsZSBhdCBlbmQsIGZvbGxvd2luZyAteGphdmEuICBUaHVzIGFueSAubwoJYW5kIGxpYnJhcnkgZmlsZXMgYXJlIG5vdCBhZmZlY3RlZCBieSB0aGUgLXhqYXZhLiAgQWxzbyB3cmFwCglleHBsaWNpdCBARklMRSB3aXRoIC14amF2YSBhbmQgLXhub25lLgoKMjAwMS0wMy0xOSAgQW5kcmV3IEhhbGV5ICA8YXBoQGNhbWJyaWRnZS5yZWRoYXQuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfc3RhdGljX2ZpZWxkX3JlZik6IENhbGwgbWFrZV9kZWNsX3J0bCgpIGFmdGVyCglzZXR0aW5nIHRoZSBERUNMX0VYVEVSTkFMIGZsYWcuCgoyMDAxLTAzLTE3ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGRlY2wuYyAoY2xlYXJfYmluZGluZ19sZXZlbCk6ICBGaXggaW5pdGlhbGl6ZXIgKGJyb2tlIDAzLTE1KS4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6ICBIYW5kbGUgZW1pdHRpbmcgaWluYwoJd2hlbiByZXN1bHQgaXMgaXMgbmVlZGVkICh0YXJnZXQgaXMgU1RBQ0tfVEFSR0VUKS4KCgkqIHBhcnNlLmggKEpERVBfU09MVik6ICBSZW1vdmVkLgoJKiBwYXJzZS55IChyZWdpc3Rlcl9pbmNvbXBsZXRlX3R5cGUpOiAgVXNlIEpERVBfVE9fUkVTT0xWRSBpbnN0ZWFkLgoKCSogcGFyc2UueSAoaW5jb21wbGV0ZV9jbGFzc19saXN0KTogUmVtb3ZlZC4KCShvYnRhaW5faW5jb21wbGV0ZV90eXBlKTogRG9uJ3QgdXNlIG9yIHNldCBpbmNvbXBsZXRlX2NsYXNzX2xpc3QuCglJdCBkb2Vzbid0IHdvcmsgaWYgcmVzb2x2ZV9jbGFzcyBjaGFuZ2VzIHRoZSBuYW1lIG9mIGFuIGFycmF5IHR5cGUKCXRoYXQgaXMgb24gdGhlIGxpc3QgYW5kIHRoZW4gc29tZW9uZSBlbHNlIGxvb2tzIGZvciB0aGUgbW9kaWZpZWQgbmFtZS4KCUFsc28sIHNlZW1zIGxpYWJsZSB0byBicmVhayB3aGVuIGNvbXBpbGluZyBtdWx0aXBsZSBzb3VyY2UgZmlsZXMgYXQKCW9uY2UuICBTbyB0aGUgc2ltcGxlc3QgaXMgdG8ganVzdCByZW1vdmUgaW5jb21wbGV0ZV9jbGFzc19saXN0IC0KCWl0IGlzIG9ubHkgYSBtaW5vciBzcGFjZSB3aW4gYW5kIGl0IGlzIG5vdCBldmVuIGNsZWFyIGl0IHNhdmVzIHRpbWUuCgoJKiBwYXJzZS55IChyZXNvbHZlX2NsYXNzKTogIFJlbW92ZSB1bm5lZWRlZCBwcm9tb3RlX3R5cGUuCgoyMDAxLTAzLTE1ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGphdmEtdHJlZS5oIChCTE9DS19JU19JTVBMSUNJVCk6ICBOZXcgZmxhZy4KCSogcGFyc2UuaCAoQkxPQ0tfRVhQUl9PUklHSU4pOiAgUmVtb3ZlZCBtYWNyby4KCSogcGFyc2UueSAoZGVjbGFyZV9sb2NhbF92YXJpYWJsZXMsIG1heWJlX2Fic29yYl9zY29waW5nX2Jsb2Nrcyk6CglVc2UgQkxPQ0tfSVNfSU1QTElDSVQgcmF0aGVyIHRoYW4gQkxPQ0tfRVhQUl9PUklHSU4uCgoJKiBqY2YtcGFyc2UuYyAoeXlwYXJzZSk6ICBTZXQvcmVzZXQgaW5wdXRfZmlsZW5hbWUgZm9yIHNvdXJjZSBmaWxlLgoJKiBwYXJzZS55IChqYXZhX2V4cGFuZF9jbGFzc2VzKTogIExpa2V3aXNlLgoKCSogcGFyc2UueSAoZXhwYW5kX3N0YXJ0X2phdmFfbWV0aG9kKTogIFdhcyBvbmx5IGNhbGxlZCBvbmNlIGFuZCBoYWQgYQoJbWlzbGVhZGluZyBuYW1lLCBzbyBpbmxpbmUgaW4gY2FsbGVyIGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZC4KCShlbnRlcl9hX2Jsb2NrKTogIExpa2V3aXNlIGlubGluZSBpbiBlbnRlcl9ibG9jayBhbmQgcmVtb3ZlLgoKCVJlbW92ZSBqdW5rIGZyb20gd2hlbiBnY2MvamF2YSB3YXMgY3JlYXRlZCAoYnkgY29weWluZyBmcm9tIEMvQysrKS4KCSogZGVjbC5jIChrZWVwX25leHRfbGV2ZWxfZmxhZywga2VlcF9uZXh0X2lmX3N1YmJsb2Nrcyk6ICBSZW1vdmUuCgkoc3RydWN0IGJpbmRpbmdfbGV2ZWwpOiAgUmVtb3ZlIGZpZWxkcyBrZWVwLCBrZWVwX2lmX3N1YmJsb2NrcywKCW1vcmVfY2xlYW51cHNfb2ssIGhhdmVfY2xlYW51cHMgKHdoaWNoIGhhdmUgbmV2ZXIgYmVlbiB1c2VkKS4KCShwdXNobGV2ZWwsIHBvcGxldmVsKTogIFJlbW92ZSByZWxhdGVkIHVzZWxlc3MgY29kZS4KCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3NfZGF0YSk6ICBUaGUgY2xhc3NfZHRhYmxlX2RlY2wgKGkuZS4gdGhlCgl2dGFibGUgZm9yIENsYXNzKSBzaG91bGQgYmUgZXh0ZXJuYWwsIGV4Y2VwdCB3aGVuIGNvbXBpbGluZyBDbGFzcy4KCgkqIGp2c3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6ICBGaXggLUMgaGFuZGxpbmcuCglDaGVjayAtc2F2ZS10ZW1wcyB0byBzZWUgaWYgdGVtcCBARklMRSBzaG91bGQgYmUgZGVsZXRlZC4KCUZvbGxvdy11cCB0by9maXggZm9yIEZlYnJ1YXJ5IDE2IHBhdGNoLgoKCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogIEJldHRlciBlcnJvciBtc2dzIGZvciBkdXAuCgkodHlwZV9zdGFja19kdXApOiAgUmVtb3ZlIG5vLWxvbmdlciBuZWRlZCBlcnJvciBjaGVjay4KCjIwMDEtMDMtMTUgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAYWxiYXRyb3NzLmNvLm56PgoKCSogbWFuZ2xlLmMgKG1hbmdsZV9yZWNvcmRfdHlwZSk6IFJlbmFtZSAnZnJvbV9wb2ludGVyJyBhcmd1bWVudAoJdG8gJ2Zvcl9wb2ludGVyJy4gSWYgdGhpcyB0eXBlIGlzIGZvciBhIHBvaW50ZXIgKGFyZ3VtZW50KSBtYW5nbGluZywKCWRvbid0IHN1cnJvdW5kIHRoZSBlbGVtZW50IHdpdGggJ04uLkUnIGlmIHRoZSB0eXBlIG5hbWUgaXMKCXVucXVhbGlmaWVkLgoKMjAwMS0wMy0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3N0YXRpY19maWVsZF9yZWYpOiBVc2UgQ09QWV9ERUNMX1JUTCwKCURFQ0xfUlRMX1NFVF9QLCBldGMuCgkobWFrZV9tZXRob2RfdmFsdWUpOiBMaWtld2lzZS4KCShnZXRfZGlzcGF0Y2hfdGFibGUpOiBMaWtld2lzZS4KCgkqIGRlY2wuYyAocHVzaF9qdm1fc2xvdCk6IFVzZSBDT1BZX0RFQ0xfUlRMLCBERUNMX1JUTF9TRVRfUCwgZXRjLgoKMjAwMS0wMy0wNyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogY29uZmlnLWxhbmcuaW4gKGxhbmdfcmVxdWlyZXMpOiBEZWZpbmUuCgoyMDAxLTAzLTA3ICBCcmFkIEx1Y2llciAgPGx1Y2llckBtYXRoLnB1cmR1ZS5lZHU+CgoJKiB0eXBlY2suYyAoY29udmVydCk6IENoZWNrIGZsYWdfdW5zYWZlX21hdGhfb3B0aW1pemF0aW9ucywKCW5vdCBmbGFnX2Zhc3RfbWF0aC4KCjIwMDEtMDMtMDUgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCUZpeCBhIHByb2JsZW0gd2hlcmUgcmVzdF9vZl9kZWNsX2NvbXBpbGF0aW9uIGFwcGxpZWQgdG8KCWNsYXNzX2R0YWJsZV9kZWNsIGNhdXNlcyBwcm9ibGVtcyBiZWNhdXNlIGl0IHdhcyBkb25lIHRvbyBlYXJseSwKCWJlZm9yZSBvdXRwdXQgZmlsZSB3YXMgb3BlbmVkLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogIFJlbW92ZSBpbml0IG9mIGNsYXNzX2R0YWJsZV9kZWNsLgoJKiBjbGFzcy5jIChjbGFzc19kdGFibGVfZGVjbCk6ICBBZGQgbWFjcm8gLSBlbGVtZW50IG9mIGNsYXNzX3Jvb3RzLgoJKG1ha2VfY2xhc3NfZGF0YSk6ICBEZWZpbmUgY2xhc3NfZHRhYmxlX2RlY2wuCgkqIGphdmEtdHJlZS5oIChKVElfQ0xBU1NfRFRBQkxFX0RFQ0wsIGNsYXNzX2R0YWJsZV9kZWNsKTogIFJlbW92ZWQuCgoyMDAxLTAzLTAxICBaYWNrIFdlaW5iZXJnICA8emFja3dAc3RhbmZvcmQuZWR1PgoKCSogamF2YS9jbGFzcy5jLCBqYXZhL2RlY2wuYywgamF2YS9qYXZhLXRyZWUuaDogUmVwbGFjZSBhbGwKCXVzZXMgb2YgJ2Jvb2xlYW4nIHdpdGggJ2Jvb2wnLgoKMjAwMS0wMy0wMSAgWmFjayBXZWluYmVyZyAgPHphY2t3QHN0YW5mb3JkLmVkdT4KCgkqIGxhbmctc3BlY3MuaDogQWRkIHplcm8gaW5pdGlhbGl6ZXIgZm9yIGNwcF9zcGVjIGZpZWxkIHRvIGFsbAoJYXJyYXkgZWxlbWVudHMuCgoyMDAxLTAyLTE2ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCglIYW5kbGUgY29tcGlsaW5nIG11bHRpcGxlIGlucHV0IGZpbGVzIGF0IG9uY2UsIGFuZCBARklMRSBzeW50YXguCgkqIGdjai50ZXhpOiAgVXBkYXRlZCBkb2N1bWVudGF0aW9uIHRvIG1hdGNoLgoJKiBqYXZhLXRyZWUuaCAoZmxhZ19maWxlbGlzdF9maWxlLCBpbml0X3NyY19wYXJzZSk6ICBOZXcgZGVjbGFyYXRpb25zLgoJKiBqY2YtcGFyc2UuYyAocGFyc2Vfc291cmNlX2ZpbGUpOiAgU3BsaXQgaW50byAuLi4KCShwYXJzZV9zb3VyY2VfZmlsZV8xKTogIE5ldyBmdW5jdGlvbiAtIGFuZDoKCShwYXJzZV9zb3VyY2VfZmlsZV8yKTogIE5ldyBmdW5jdGlvbi4KCSh5eXBhcnNlKTogIE9uIC1mZmlsZWxpc3QtZmlsZSwgb3BlbiBhbmQgc2NhbiBuYW1lZCBmaWxlLgoJT24gZmlyc3QgcGFzcyBvdmVyIGZpbGVzLCBvbmx5IGRvIHBhcnNlX3NvdXJjZV9maWxlXzEuCglBIG5ldyBzZWNvbmQgcGFzcyBjYWxscyBwYXJzZV9zb3VyY2VfZmlsZV8yIGZvciBlYWNoIGZpbGUgdG8gY29tcGlsZS4KCShpbml0X2pjZl9wYXJzZSk6ICBDYWxsIGluaXRfc3JjX3BhcnNlLgoJKiBqdnNwZWMuYyAoSU5ESVJFQ1RfRklMRV9BUkcpOiAgTmV3IGZsYWcuCgkobGFuZ19zcGVjaWZpY19kcml2ZXIpOiAgU3VwcG9ydCBARklMRUxJU1QtRklMRSBzeW50YXgsIGFzIHdlbGwKCWFzIG11bHRpcGxlIGlucHV0IGZpbGUgY29tYmluZWQgaW4gb25lIGNvbXBpbGF0aW9uLgoJKiBsYW5nLW9wdGlvbnMuaDogIEFkZCAtZmZpbGVsaXN0LWZpbGUKCSogbGFuZy5jIChmbGFnX2ZpbGVsaXN0X2ZpbGUpOiAgTmV3IGZsYWcgdmFyaWFibGUuCgkobGFuZ19mX29wdGlvbnMpOiAgSGFuZGxlIC1mZmlsZWxpc3QtZmlsZS4KCSogbGV4LmMgKGphdmFfaW5pdF9sZXgpOiBEb24ndCBjbGVhciBjdHhwLT5pbmNvbXBsZXRlX2NsYXNzLgoJKiBwYXJzZS5oIChzdHJ1Y3QgcGFyc2VfY3R4dCk6ICBSZW1vdmUgZmllbGRzIGluY29tcGxldGVfY2xhc3MgYW5kCglnY2xhc3NfbGlzdCAtIHVzZSBnbG9iYWwgZmllbGRzIG9mIHNyY19wYXJzZV9yb290cyBpbnN0ZWFkLgoJKiBwYXJzZS55IChzcmNfcGFyc2Vfcm9vdHMpOiAgTmV3IGFycmF5LgoJKGluY29tcGxldGVfY2xhc3NfbGlzdCwgZ2NsYXNzX2xpc3QpOiAgTmV3IG1hY3Jvcy4KCShwdXNoX3BhcnNlcl9jb250ZXh0LCBqYXZhX3BvcF9wYXJzZXJfY29udGV4dCwKCWphdmFfcGFyc2VyX2NvbnRleHRfcmVzdW1lKTogIERvbid0IGZpZGRsZSB3aXRoIGRlbGV0ZWQgZmllbGRzLgoJKHZhcmlvdXMpOiAgVXNlIGluY29tcGxldGVfY2xhc3MgZ2NsYXNzX2xpc3QgYW5kIGdsb2JhbCBtYWNyb3MKCWluc3RlYWQgb2YgcGFyc2VfY3R4dCBmaWVsZHMgLSB0aGUgbGlzdHMgYXJlIGdsb2JhbC4KCShpbml0X3NyY19wYXJzZSk6ICBOZXcgZnVuY3Rpb24uCgoyMDAxLTAyLTIzICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZGVjbC5jIChzZXRfYmxvY2spOiBTZXQgTkFNRVMgYW5kIEJMT0NLUyBmcm9tIEJMT0NLLgoKMjAwMS0wMi0yMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChjaGVja19pbm5lcl9jbGFzc19hY2Nlc3MpOiBNb3ZlZCBkZWNsYXJhdGlvbiBvZiBsb2NhbAoJYGVuY2xvc2luZ19kZWNsX3R5cGUnIHRvIHRoZSByaWdodCBsb2NhdGlvbi4KCjIwMDEtMDItMTkgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAYWxiYXRyb3NzLmNvLm56PgoKCSogcGFyc2UueSAocGFyc2VyX2NoZWNrX3N1cGVyX2ludGVyZmFjZSk6IERvbid0IGNhbGwKCWNoZWNrX3BrZ19jbGFzc19hY2Nlc3MgZm9yIGFuIGlubmVyIGludGVyZmFjZS4KCShwYXJzZXJfY2hlY2tfc3VwZXIpOiBEb24ndCBjYWxsIGNoZWNrX3BrZ19jbGFzc19hY2Nlc3MgZm9yIGlubmVyCgljbGFzcy4KCShkb19yZXNvbHZlX2NsYXNzKTogU2ltcGxpZnkgZW5jbG9zaW5nIHR5cGUgbG9vcC4gRG9uJ3QgY2FsbAoJY2hlY2tfcGtnX2NsYXNzX2FjY2VzcyBpZiBDTCBhbmQgREVDTCBhcmUgbm90IHNldC4KCShmaW5kX2luX2ltcG9ydHNfb25fZGVtYW5kKTogU2V0IERFQ0wgaWYgY2xhc3NfdHlwZSBuZWVkZWQgdG8gYmUKCWxvYWRlZC4gRG9uJ3QgY2FsbCBjaGVja19wa2dfY2xhc3NfYWNjZXNzIGZvciBhbiBpbm5lciBjbGFzcy4KCShjaGVja19pbm5lcl9jbGFzc19hY2Nlc3MpOiBSZXdyaXR0ZW4gdG8gaW1wbGVtZW50IG1lbWJlciBhY2Nlc3MKCXJ1bGVzIGFzIHBlciBzcGVjIDYuNi4xLgoJKGNoZWNrX3BrZ19jbGFzc19hY2Nlc3MpOiBIYW5kbGUgdGhlIGVtcHR5IHBhY2thZ2UgY29ycmVjdGx5LgoJKGluX3NhbWVfcGFja2FnZSk6IE5ldyBmdW5jdGlvbi4gRGV0ZXJtaW5lIGlmIHR3byBjbGFzc2VzIGFyZSBpbiB0aGUKCXNhbWUgcGFja2FnZS4KCjIwMDEtMDItMTggIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAYWxiYXRyb3NzLmNvLm56PgoKCSogdHlwZWNrLmMgKGJ1aWxkX2phdmFfYXJyYXlfdHlwZSk6IERvbid0IHRyeSB0byBwb2tlIGEgcHVibGljIGBjbG9uZScKCW1ldGhvZCBpbnRvIGFycmF5IHR5cGVzLgoJKiBwYXJzZS55IChwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6IEJ5cGFzcyBhY2Nlc3MgY2hlY2sgb24gY2xvbmUgY2FsbAoJdG8gYXJyYXkgaW5zdGFuY2UuCgoyMDAxLTAyLTE1ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoYnVpbGRfaW5zdGFuY2VvZik6IENoZWNrIGZvciBhcnJheXMgd2hlbiB0cnlpbmcgZm9sZCB0bwoJZmFsc2UuCgoyMDAxLTAyLTE1ICBKaW0gTWV5ZXJpbmcgIDxtZXllcmluZ0BsdWNlbnQuY29tPgoKCSogTWFrZS1sYW5nLmluIChqYXZhLmluc3RhbGwtY29tbW9uKTogRGVwZW5kIG9uIGBpbnN0YWxsZGlycycuCgkoamF2YS5pbnN0YWxsLWluZm8pOiBMaWtld2lzZS4KCjIwMDEtMDItMTUgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAYWxiYXRyb3NzLmNvLm56PgoKCSogTWFrZS1sYW5nLmluIChqdnNwZWMubyk6IE1vZGlmeSBydWxlIHRvIG1hdGNoIHRoYXQgb2YgY3AvZysrc3BlYy5vLgoKMjAwMS0wMi0xNCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoJICAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCUZpeCBmb3IgUFIgamF2YS8xMjYxLgoJKiB0eXBlY2suYyAoYnVpbGRfamF2YV9hcnJheV90eXBlKTogQWRkIHB1YmxpYyBgY2xvbmUnIG1ldGhvZCB0bwoJYXJyYXlzLgoJKiBwYXJzZS55IChyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBVc2UgY3VycmVudF9jbGFzcwoJd2hlbiBjaGVja2luZyBmb3IgaW5hY2Nlc3NpYmlsaXR5LgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogRml4ZWQgZXJyb3IgbWVzc2FnZSB3aGVuIGFjY2Vzc2liaWxpdHkKCWRlbmllZC4gIEFkZGVkIGBmcm9tX3N1cGVyJyBhcmd1bWVudC4KCjIwMDEtMDItMTQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2UueSAocmVzb2x2ZV9jbGFzcyk6IERvbid0IGJ1aWxkIGEgZmFrZSBkZWNsLiBVc2UgdGhlIG9uZQoJYWxyZWFkeSBidWlsdC4KCSogdHlwZWNrLmMgKGJ1aWxkX2phdmFfYXJyYXlfdHlwZSk6IEJ1aWxkIGFuZCBhc3NpZ24gZGVjbCB0byBhcnJheQoJdHlwZS4KCjIwMDEtMDItMTQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogcGFyc2UueSAobm90X2FjY2Vzc2libGVfcCk6IENoYW5nZWQgbGVhZGluZyBjb21tZW50LiBBZGRlZCBleHRyYQoJYHdoZXJlJyBhcmd1bWVudC4gVXNlIGl0IHRvIGVuZm9yY2UgcHJvdGVjdGVkIGFjY2VzcyBydWxlcy4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBBZGRlZCBleHRyYSBhcmd1bWVudCB0bwoJbm90X2FjY2Vzc2libGVfcC4KCShwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6IFVzZSBhcmd1bWVudCBgcHJpbWFyeScgdG8gcHJvdmlkZQoJbm90X2FjY2Vzc2libGVfcCB3aXRoIGFuIGV4dHJhIGFyZ3VtZW50LgoJKGxvb2t1cF9tZXRob2RfaW52b2tlKTogQWRkZWQgZXh0cmEgYXJndW1lbnQgdG8gbm90X2FjY2Vzc2libGVfcC4KCShzZWFyY2hfYXBwbGljYWJsZV9tZXRob2RfbGlzdCk6IExpa2V3aXNlLgoKMjAwMS0wMi0xMyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBUcnkgdG8gcmVzb2x2ZSBhcwoJYW4gaW5uZXIgY2xhc3MgYWNjZXNzIG9ubHkgaWYgYGRlY2wnIGlzIGEgVFlQRV9ERUNMLgoKMjAwMS0wMi0xMyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGNsYXNzZG9sbGFyX2lkZW50aWZpZXJfbm9kZSk6IEluaXRpYWxpemUuCgkqIGphdmEtdHJlZS5oIChlbnVtIGphdmFfdHJlZV9pbmRleCk6IE5ldyBlbnRyeQoJYEpUSV9DTEFTU0RPTExBUl9JREVOVElGSUVSX05PREUuJwoJKGNsYXNzZG9sbGFyX2lkZW50aWZpZXJfbm9kZSk6IE5ldyBtYWNyby4KCShJRF9DTEFTU0RPTExBUl9QKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKGJ1aWxkX2RvdF9jbGFzc19tZXRob2QpOiBVc2UgYGNsYXNzZG9sbGFyX2lkZW50aWZpZXJfbm9kZS4nCgkoYnVpbGRfZG90X2NsYXNzX21ldGhvZF9pbnZvY2F0aW9uKTogTGlrZXdpc2UuCgkoZmluZF9hcHBsaWNhYmxlX2FjY2Vzc2libGVfbWV0aG9kc19saXN0KTogYGNsYXNzJCcgY2FuJ3QgYmUKCWluaGVyaXRlZC4KCjIwMDEtMDItMDkgIFJhamEgUiBIYXJpbmF0aCAgPGhhcmluYXRoQGNzLnVtbi5lZHU+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEvbWFuZ2xlX25hbWUubyk6IEFkZCAnbWFrZScgcHJlcmVxcy4KCjIwMDEtMDItMDkgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogTWFua2UtbGFuZy5pbiAoSlZHRU5NQUlOX09CSlMpOiBBZGRlZCBgZXJyb3JzLm8nCgkqIGp2Z2VubWFpbi5jIChlcnJvcik6IFJldmVyc2VkIDIwMDEtMDItMDkgcGF0Y2guIGBlcnJvcicgaXMgbm93Cglnb25lLgoKMjAwMS0wMi0wOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQHJlZGhhdC5jb20+CgoJKiBtYW5nbGVfbmFtZSAoYXBwZW5kX3VuaWNvZGVfbWFuZ2xlZF9uYW1lKTogRW1pdCBgXycgb3IgYFUnCglvdXRzaWRlIG9mIHRoZSBgX19VJyBzZXF1ZW5jZSB0b28uCgkodW5pY29kZV9tYW5nbGluZ19sZW5ndGgpOiBDb3VudCBgXycgb3IgYFUnIG91dHNpZGUgb2YgdGhlIGBfX1UnCglzZXF1ZW5jZSB0b28uCgoyMDAxLTAyLTA5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AcmVkaGF0LmNvbT4KCgkqIGp2Z2VubWFpbi5jIChlcnJvcik6IFJldmVyc2VkIDIwMDEtMDItMDEgZGVsZXRpb24uCgoyMDAxLTAyLTA4ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoSkFWQV9PQkpTKTogQWRkZWQgamF2YS9tYW5nbGVfbmFtZS5vCgkoSlZHRU5NQUlOX09CSlMpOiBMaWtld2lzZS4KCSogamF2YS10cmVlLmggKGFwcGVuZF9ncHBfbWFuZ2xlZF9uYW1lKTogTmV3IHByb3RvdHlwZS4KCSogamNmLXBhcnNlLmMgKGdnY19tYXJrX2pjZik6IEFyZ3VtZW50IG5vdyBgdm9pZCAqLicKCVJlbW92ZWQgY2FzdCBjYWxsaW5nIGBnY2NfYWRkX3Jvb3QuJwoJKiBqdmdlbm1haW4uYyAobWFuZ2xlX29ic3RhY2spOiBOZXcgZ2xvYmFsLCBpbml0aWFsaXplZC4KCShtYWluKTogVXNlIGl0LgoJKGRvX21hbmdsZV9jbGFzcyk6IENvbnN0aWZ5IGxvY2FsIGBwdHIuJwoJUmVtb3ZlZCBtYWNybyBgTUFOR0xFX05BTUUuJyBSZW1vdmVkIGNhc3QgaW4gYGZvci4nIENhbGwKCWFwcGVuZF9ncHBfbWFuZ2xlX25hbWUgYW5kIHVwZGF0ZSBgY291bnQnIGlmIG5lY2Vzc2FyeS4KCVVzZSBgbWFuZ2xlX29ic3RhY2suJwoJKiBtYW5nbGUuYyAoYXBwZW5kX3VuaWNvZGVfbWFuZ2xlZF9uYW1lKTogUmVtb3ZlZC4KCShhcHBlbmRfZ3BwX21hbmdsZWRfbmFtZSk6IExpa2V3aXNlLgoJKHVuaWNvZGVfbWFuZ2xpbmdfbGVuZ3RoKTogTGlrZXdpc2UuCgkobWFuZ2xlX21lbWJlcl9uYW1lKTogUmV0dXJuIHR5cGUgc2V0IHRvIGB2b2lkLicKCShtYW5nbGVfZmllbGRfZGVjbCk6IERvbid0IGFwcGVuZCBgVScgaW4gZXNjYXBlZCBuYW1lcy4KCShtYW5nbGVfbWV0aG9kX2RlY2wpOiBMaWtld2lzZS4KCShtYW5nbGVfbWVtYmVyX25hbWUpOiBKdXN0IHVzZSBgYXBwZW5kX2dwcF9tYW5nbGVkX25hbWUuJwoJKiBtYW5nbGVfbmFtZS5jOiBOZXcgZmlsZS4KCjIwMDEtMDItMDcgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KTogIEZpeCBUUllfRklOQUxMWV9FWFBSIGxvZ2ljLgoKCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KTogIERvbid0IGNhbGwgZG9uZV9hbHRlcm5hdGl2ZSBhZnRlcgoJcHJvY2Vzc2luZyBsb29wIGNvZGUsIGFzIGEgTE9PUF9FWFBSIG5ldmVyIHRlcm1pbmF0ZXMgbm9ybWFsbHkuCgoyMDAxLTAyLTA4ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBnY2oudGV4aTogQ2hhbmdlIHNvdXJjZXMucmVkaGF0LmNvbSByZWZlcmVuY2UgdG8gZ2NjLmdudS5vcmcuCgoyMDAxLTAyLTA3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGpjZi1wYXJzZS5jIChIQU5ETEVfU1lOVEhFVElDX0FUVFJJQlVURSk6IERvbid0IGhhbmRsZSBmaWVsZAoJREVDTHMuCgoyMDAxLTAyLTA2ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBsZXguYyAoamF2YV9uZXdfbGV4ZXIpOiBMb25nZXIgZXJyb3IgbWVzc2FnZS4KCjIwMDEtMDItMDUgIEplZmYgU3R1cm0gIDxqZWZmLnN0dXJtQGNvbW1lcmNlb25lLmNvbT4KCSAgICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9wcmltX2FycmF5X3R5cGUpOiBBZGRlZCBsZWFkaW5nIGNvbW1lbnQuCgkoYnVpbGRfamF2YV9hcnJheV90eXBlKTogTW92ZWQgbG9jYWxzIG91dCBvZgoJYmxvY2suIEFsd2F5cyBjcmVhdGUgdGhlIGBkYXRhJyBmaWVsZCwgZml4ZWQgYWxpZ25tZW50IHRvIG1hdGNoCglDKysuCgoyMDAxLTAyLTA0ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGphdmFfbGFuZ19leHBhbmRfZXhwcik6IERvbid0IGJvdGhlciByZWNvbXB1dGluZwoJYGxlbmd0aCcuICBVc2UgcmVzdF9vZl9kZWNsX2NvbXBpbGF0aW9uLCBub3QgbWFrZV9kZWNsX3J0bC4KCUZpeGVzIFBSIGphdmEvMTg2Ni4KCjIwMDEtMDItMDUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocHJvY2Vzc19pbXBvcnRzKTogU2F2ZSB0aGUgb3JpZ2luYWwgbmFtZSBvZiB0aGUgaW1wb3J0Cglmb3IgYmV0dGVyIGVycm9yIHJlcG9ydC4KCjIwMDEtMDItMDQgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAYWxiYXRyb3NzLmNvLm56PgoKCSogTWFrZS1sYW5nLmluIChqdnNwZWMubyk6IEFkZCBEUklWRVJfREVGSU5FUyB0byB0aGUgbGlzdAoJb2YgbWFjcm9zIHVzZWQgd2hlbiBjb21waWxpbmcganZzcGVjLmMuCgkqIGp2c3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IExpbmsgd2l0aCB0aGUgc2hhcmVkCglsaWJnY2MgYnkgZGVmYXVsdC4KCjIwMDEtMDItMDQgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpOiBDYWxsIGludGVybmFsX2Vycm9yIGluc3RlYWQgb2YgZmF0YWwuCgkqIGV4cHIuYyAoamF2YV9sYW5nX2V4cGFuZF9leHByKTogTGlrZXdpc2UuCgkqIGpjZi1wYXJzZS5jIChnZXRfY29uc3RhbnQpOiBMaWtld2lzZS4KCSogbWFuZ2xlLmMgKGphdmFfbWFuZ2xlX2RlY2wpOiBMaWtld2lzZS4KCSogcGFyc2UueSAobWFrZV9uZXN0ZWRfY2xhc3NfbmFtZSwgamF2YV9jb21wbGV0ZV9saHMpOiBMaWtld2lzZS4KCShvcGVyYXRvcl9zdHJpbmcpOiBMaWtld2lzZS4KCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KTogQ2FsbCBhYm9ydCBpbnN0ZWFkIG9mIGZhdGFsLgoJKiBjbGFzcy5jIChidWlsZF9jbGFzc19yZWYpOiBMaWtld2lzZS4KCSogY29uc3RhbnRzLmMgKHdyaXRlX2NvbnN0YW50X3Bvb2wpOiBMaWtld2lzZS4KCSogZGVjbC5jIChzdGFydF9qYXZhX21ldGhvZCk6IExpa2V3aXNlLgoJKiBleHByLmMgKHB1c2hfdHlwZSwgamF2YV9zdGFja19wb3AsIGphdmFfc3RhY2tfc3dhcCk6IExpa2V3aXNlLgoJKGphdmFfc3RhY2tfZHVwLCBlbmNvZGVfbmV3YXJyYXlfdHlwZSk6IExpa2V3aXNlLgoJKGJ1aWxkX2phdmFfYXJyYXlfbGVuZ3RoX2FjY2Vzcyk6IExpa2V3aXNlLgoJKGJ1aWxkX2phdmFfY2hlY2tfaW5kZXhlZF90eXBlLCBleHBhbmRfamF2YV9wdXNoYyk6IExpa2V3aXNlLgoJKGJ1aWxkX2phdmFfc29mdF9kaXZtb2QsIGJ1aWxkX2ludm9rZWludGVyZmFjZSk6IExpa2V3aXNlLgoJKiBqYXZhLXRyZWUuaCAoSU5ORVJfQ0xBU1NfUCk6IExpa2V3aXNlLgoJKiBqY2YtcGFyc2UuYyAocGFyc2Vfc2lnbmF0dXJlLCBnZXRfbmFtZV9jb25zdGFudCk6IExpa2V3aXNlLgoJKGdpdmVfbmFtZV90b19jbGFzcywgZ2V0X2NsYXNzX2NvbnN0YW50KTogTGlrZXdpc2UuCgkqIGpjZi13cml0ZS5jIChDSEVDS19QVVQsIENIRUNLX09QLCBnZXRfYWNjZXNzX2ZsYWdzKTogTGlrZXdpc2UuCgkoZmluZF9jb25zdGFudF9pbmRleCwgZ2VuZXJhdGVfYnl0ZWNvZGVfY29uZGl0aW9uYWwpOiBMaWtld2lzZS4KCShnZW5lcmF0ZV9ieXRlY29kZV9pbnNucywgcGVyZm9ybV9yZWxvY2F0aW9ucyk6IExpa2V3aXNlLgoJKiBsZXguYyAoamF2YV91bmdldF91bmljb2RlLCBqYXZhX2xleCk6IExpa2V3aXNlLgoJKiBtYW5nbGUuYyAobWFuZ2xlX3R5cGUsIG1hbmdsZV9yZWNvcmRfdHlwZSk6IExpa2V3aXNlLgoJKG1hbmdsZV9wb2ludGVyX3R5cGUsIG1hbmdsZV9hcnJheV90eXBlLCBpbml0X21hbmdsaW5nKTogTGlrZXdpc2UuCgkoZmluaXNoX21hbmdsaW5nKTogTGlrZXdpc2UuCgkqIHBhcnNlLmggKE1BUktfRklOQUxfUEFSTVMpOiBMaWtld2lzZS4KCSogcGFyc2UueSAocG9wX2N1cnJlbnRfb3NiLCB1bnJlYWNoYWJsZV9zdG10X2Vycm9yKTogTGlrZXdpc2UuCgkob2J0YWluX2luY29tcGxldGVfdHlwZSwgamF2YV9jb21wbGV0ZV9jbGFzcyk6IExpa2V3aXNlLgoJKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzLCBqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiBMaWtld2lzZS4KCShjdXRfaWRlbnRpZmllcl9pbl9xdWFsaWZpZWQsIGNoZWNrX2RlcHJlY2F0aW9uKTogTGlrZXdpc2UuCgkocGF0Y2hfaW52b2tlLCBmaW5kX2FwcGxpY2FibGVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QpOiBMaWtld2lzZS4KCShqYXZhX2NvbXBsZXRlX2xocywgbG9va3VwX25hbWVfaW5fYmxvY2tzKTogTGlrZXdpc2UuCgkoY2hlY2tfZmluYWxfdmFyaWFibGVfaW5kaXJlY3RfYXNzaWdubWVudCwgYnVpbGRfdW5hcnlvcCk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoc2V0X2xvY2FsX3R5cGUsIHBhcnNlX3NpZ25hdHVyZV90eXBlKTogTGlrZXdpc2UuCgkocGFyc2Vfc2lnbmF0dXJlX3N0cmluZywgYnVpbGRfamF2YV9zaWduYXR1cmUpOiBMaWtld2lzZTsKCShzZXRfamF2YV9zaWduYXR1cmUpOiBMaWtld2lzZS4KCSogdmVyaWZ5LmMgKHR5cGVfc3RhY2tfZHVwLCBDSEVDS19QQ19JTl9SQU5HRSk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogQ2FsbCBmYXRhbF9lcnJvciBpbnN0ZWFkIG9mIGZhdGFsLgoJKGJ1aWxkX3N0YXRpY19maWVsZF9yZWYpOiBMaWtld2lzZS4KCSogZXhwci5jIChidWlsZF9rbm93bl9tZXRob2RfcmVmLCBleHBhbmRfaW52b2tlKTogTGlrZXdpc2UuCgkqIGpjZi1wYXJzZS5jIChnZXRfY29uc3RhbnQsIGpjZl9wYXJzZSk6IExpa2V3aXNlLgoJKiBsZXguYyAoamF2YV9uZXdfbmV3X2xleGVyKTogTGlrZXdpc2UuCgkqIGp2LXNjYW4uYyAobWFpbik6IExpa2V3aXNlLgoJKGZhdGFsX2Vycm9yKTogUmVuYW1lZCBmcm9tIGZhdGFsLgoJKiBqY2YtcGFyc2UuYyAoeXlwYXJzZSk6IENhbGwgZmF0YWxfaW9fZXJyb3IgaW5zdGVhZCBvZgoJcGZhdGFsX3dpdGhfbmFtZS4KCSogamNmLXBhcnNlLmMgKGpjZl9wYXJzZV9zb3VyY2UpOiBDYWxsIGZhdGFsX2lvX2Vycm9yLCBub3QgZmF0YWwuCgkoeXlwYXJzZSk6IExpa2V3aXNlLgoJKiBqY2Ytd3JpdGUuYyAobWFrZV9jbGFzc19maWxlX25hbWUsIHdyaXRlX2NsYXNzZmlsZSk6IExpa2V3aXNlLgoJKiBsZXguYyAoamF2YV9nZXRfbGluZV9jb2wpOiBMaWtld2lzZS4KCSogamNmLXBhcnNlLmMgKGxvYWRfY2xhc3MpOiBNYWtlIGVycm9ycyBub24tZmF0YWwuCgkqIGxleC5jIChieXRlc3dhcF9pbml0LCBuZWVkX2J5dGVzd2FwKTogT25seSAjaWZkZWYgSEFWRV9JQ09OVi4KCjIwMDEtMDItMDEgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAYWxiYXRyb3NzLmNvLm56PgoKCSoganZnZW5tYWluLmMgKGNsYXNzX21hbmdsaW5nX3N1ZmZpeCk6IFJlbW92ZSB1bnVzZWQgc3RyaW5nLgoJKGVycm9yKTogUmVtb3ZlIHVudXNlZCBmdW5jdGlvbi4KCShtYWluKTogRG9uJ3QgdXNlICJfX2F0dHJpYnV0ZV9fIGFsaWFzIiBvbiBnZW5lcmF0ZWQgY2xhc3Mgc3ltYm9sLgoKMjAwMS0wMS0zMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqY2YtcGFyc2UuYyAoaW5pdF9qY2ZfcGFyc2UpOiBBZGRlZCBjYXN0IHRvIGdnY19hZGRfcm9vdCdzIGxhc3QKCWFyZ3VtZW50LgoJKiBwYXJzZS55IChmaW5pc2hfbWV0aG9kX2RlY2xhcmF0aW9uKTogQ29kZSBhY2NvdW50aW5nIGZvciBXRkxlZAoJbWV0aG9kIERFQ0xfTkFNRXMgZGVsZXRlZC4KCShjaGVja19hYnN0cmFjdF9tZXRob2RfZGVmaW5pdGlvbnMpOiBMaWtld2lzZS4KCShyZXNvbHZlX3R5cGVfZHVyaW5nX3BhdGNoKTogTGF5b3V0IHJlc29sdmVkIHR5cGUuCgkqIHR5cGVjay5jIChsb29rdXBfZG8pOiBSZW1vdmVkIHVudXNlZCBsb2NhbC4KCjIwMDEtMDEtMzAgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAYWxiYXRyb3NzLmNvLm56PgoKCSogamF2YS10cmVlLmg6IFJlbW92ZSBKVElfSU5URUdFUl9ORUdBVElWRV9PTkVfTk9ERS4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFVzZSBpbnRlZ2VyX21pbnVzX29uZV9ub2RlLCBub3QKCWludGVnZXJfbmVnYXRpdmVfb25lX25vZGUuCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9iaW5vcCk6IExpa2V3aXNlLgoKMjAwMS0wMS0yNCAgSmVmZiBTdHVybSAgPGplZmYuc3R1cm1AY29tbWVyY2VvbmUuY29tPgoKCSogemV4dHJhY3QuYyAocmVhZF96aXBfYXJjaGl2ZSk6IFJlYWQgZmlsZV9vZmZzZXQgYmVmb3JlIHdyaXRpbmcKCXppcGQgYW5kIGNvbnNlcXVlbnRseSBjbG9iYmVyaW5nIHRoZSBoZWFkZXIgY29udGVudHMuCgoyMDAxLTAxLTI3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlLWxhbmcuaW46IFJlbW92ZSBhbGwgZGVwZW5kZW5jaWVzIG9uIGRlZmF1bHRzLmguCgkqIGRlY2wuYzogRG9uJ3QgaW5jbHVkZSBkZWZhdWx0cy5oLgoJKiBleHByLmM6IExpa2V3aXNlLgoJKiBwYXJzZS55OiBMaWtld2lzZS4KCjIwMDEtMDEtMjUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogQ2hhbmdlTG9nICgyMDAxLTAxLTIxKTogRml4ZWQgdHlwby4KCSogY2xhc3MuYyAobGF5b3V0X2NsYXNzX21ldGhvZCk6IENvZGUgYWNjb3VudGluZyBmb3IgV0ZMZWQKCW1ldGhvZCBERUNMX05BTUVzIGRlbGV0ZWQuCgkqIGNvbnN0YW50LmMgKGZpbmRfbWV0aG9kcmVmX2luZGV4KTogTGlrZXdpc2UuCgkqIGRlY2wuYyAobGFuZ19tYXJrX3RyZWUpOiBNYXJrIGB3ZmwnIGZpZWxkIGluIHN0cnVjdCBsYW5nX2RlY2wuCgkqIGphdmEtdHJlZS5oIChERUNMX0ZVTkNUSU9OX1dGTCk6IE5ldyBtYWNyby4KCShzdHJ1Y3QgbGFuZ19kZWNsKTogTmV3IGZpZWxkIGB3ZmwnLgoJKGphdmFfZ2V0X3JlYWxfbWV0aG9kX25hbWUpOiBQcm90b3R5cGUgZGVsZXRlZC4KCSogbWFuZ2xlLmMgKG1hbmdsZV9tZXRob2RfZGVjbCk6IENvZGUgYWNjb3VudGluZyBmb3IgV0ZMZWQKCW1ldGhvZCBERUNMX05BTUVzIGRlbGV0ZWQuCgkqIHBhcnNlLmggKEdFVF9NRVRIT0RfTkFNRSk6IE1hY3JvIGRlbGV0ZWQuCgkqIHBhcnNlLnkgKHJlc2V0X21ldGhvZF9uYW1lKTogRGVsZXRlZC4KCShtZXRob2RfaGVhZGVyKTogU2V0IERFQ0xfRlVOQ1RJT05fV0ZMLgoJKGNoZWNrX2Fic3RyYWN0X21ldGhvZF9oZWFkZXIpOiBDb2RlIGFjY291bnRpbmcgZm9yIFdGTGVkIG1ldGhvZAoJREVDTF9OQU1FcyBkZWxldGVkLgoJKGphdmFfZ2V0X3JlYWxfbWV0aG9kX25hbWUpOiBEZWxldGVkLgoJKGNoZWNrX21ldGhvZF9yZWRlZmluaXRpb24pOiBDb2RlIGFjY291bnRpbmcgZm9yIFdGTGVkIG1ldGhvZAoJREVDTF9OQU1FcyBkZWxldGVkLiBVc2UgREVDTF9GVU5DVElPTl9XRkwuCgkoamF2YV9jaGVja19yZWd1bGFyX21ldGhvZHMpOiBMaWtld2lzZS4KCShqYXZhX2NoZWNrX2Fic3RyYWN0X21ldGhvZHMpOiBMaWtld2lzZS4KCShqYXZhX2V4cGFuZF9jbGFzc2VzKTogRG9uJ3QgY2FsbCBgcmVzZXRfbWV0aG9kX25hbWUuJwoJKHNlYXJjaF9hcHBsaWNhYmxlX21ldGhvZF9saXN0KTogVXNlIERFQ0xfTkFNRXMgaW5zdGVhZCBvZgoJR0VUX01FVEhPRF9OQU1FLgoJKiB0eXBlY2suYyAobG9va3VwX2RvKTogQ29kZSBhY2NvdW50aW5nIGZvciBXRkxlZCBtZXRob2QKCURFQ0xfTkFNRXMgZGVsZXRlZC4KCjIwMDEtMDEtMjUgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogbGV4LmMgKGphdmFfcmVhZF9jaGFyKTogQ2hlY2sgZm9yIEVPRiBmcm9tIGdldGMgZmlyc3QuCgoyMDAxLTAxLTIzICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGxheW91dF9jbGFzcyk6IERvbid0IGxheSB0aGUgc3VwZXJjbGFzcyBvdXQgaWYgaXQncwoJYWxyZWFkeSBiZWluZyBsYWlkIG91dC4KCSogamNmLXBhcnNlLmMgKGhhbmRsZV9pbm5lcmNsYXNzX2F0dHJpYnV0ZSk6IE5ldyBmdW5jdGlvbi4KCShIQU5ETEVfSU5ORVJDTEFTU0VTX0FUVFJJQlVURSk6IEludm9rZQoJaGFuZGxlX2lubmVyY2xhc3Nlc19hdHRyaWJ1dGUuCgkoamNmX3BhcnNlKTogRG9uJ3QgbG9hZCBhbiBpbm5lcmNsYXNzZXMgaWYgaXQncyBhbHJlYWR5IGJlaW5nCglsYWlkIG91dC4KCSogamNmLXdyaXRlLmMgKGFwcGVuZF9pbm5lcmNsYXNzX2F0dHJpYnV0ZV9lbnRyeSk6IFN0YXRpYwoJYGFub255bW91c19uYW1lJyBhbmQgaXRzIGluaXRpYWxpemF0aW9uIGRlbGV0ZWQuIGBvY2lpJyBhbmQgYGluaScKCXRvIGJlIHplcm8gZm9yIGFub255bW91cyBjbGFzc2VzLgoKMjAwMS0wMS0yMyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChzZXRfY29uc3RhbnRfdmFsdWUpOiBTZXQgREVDTF9GSUVMRF9GSU5BTF9JVUQgaWYKCW5lY2Vzc2FyeS4KCSogamNmLXBhcnNlLmMgKHNldF9zb3VyY2VfZmlsZW5hbWUpOiBVc2UKCU1BWUJFX0NSRUFURV9WQVJfTEFOR19ERUNMX1NQRUNJRklDIGlmIG5lY2Vzc2FyeS4KCjIwMDEtMDEtMjMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogZXhwci5jIChidWlsZF9qbmlfc3R1Yik6IFNldCBERUNMX0NPTlRFWFQgb24gYG1ldGhfdmFyJyBzbyBpdAoJZ2V0cyBhIHVuaXF1ZSBhc20gbmFtZS4KCjIwMDEtMDEtMjMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamNmLXBhcnNlLmMgKEhBTkRMRV9FTkRfTUVUSE9EUyk6IE51bGxpZnkgY3VycmVudF9tZXRob2QuCgkoSEFORExFX1NUQVJUX0ZJRUxEKTogSW52b2tlIE1BWUJFX0NSRUFURV9WQVJfTEFOR19ERUNMX1NQRUNJRklDCglpZiBuZWNlc3NhcnkuCgkoSEFORExFX1NZTlRIRVRJQ19BVFRSSUJVVEUpOiBOZXcgbWFjcm8uCgkqIGpjZi1yZWFkZXIuYyAoZ2V0X2F0dHJpYnV0ZSk6IEhhbmRsZSBgU3ludGhldGljJyBhdHRyaWJ1dGUuCgkqIHBhcnNlLnkgKGxvb2t1cF9wYWNrYWdlX3R5cGVfYW5kX3NldF9uZXh0KTogRGVsZXRlZC4KCShyZXNvbHZlX3BhY2thZ2UpOiBSZW1vdmVkIHVubmVjZXNzYXJ5IGNvZGUuCgkoZmluZF9hcHBsaWNhYmxlX2FjY2Vzc2libGVfbWV0aG9kc19saXN0KTogYGZpbml0JCcgY2FuJ3QgYmUKCWluaGVyaXRlZC4KCSogdmVyaWZ5LmMgKHBvcF9hcmd1bWVudF90eXBlcyk6IEFkZGVkIG1pc3NpbmcgcHJvdG90eXBlLgoKMjAwMS0wMS0yMyAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUBhbGJhdHJvc3MuY28ubno+CgoJKiBjb25maWctbGFuZy5pbjogRGlzYWJsZSBqYXZhIGJ5IGRlZmF1bHQuCgoyMDAxLTAxLTIzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBnY2oudGV4aSAoQ29weWluZyk6IE5ldyBub2RlLgoJQWRkZWQgY29weXJpZ2h0IGluZm9ybWF0aW9uLgoKMjAwMS0wMS0yMSAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJVmFyaW91cyBmaXhlcyB0byBhbGxvdyBjb21waWxpbmcgYSBjb21wcmVzc2VkIC5qYXIvLnppcCBhcmNoaXZlLgoJKiB6aXBmaWxlLmggKHN0cnVjdCBaaXBGaWxlQ2FjaGUpOiAgUmVwbGFjZSBieSBzdHJ1Y3QgWmlwRmlsZS4KCShzdHJ1Y3QgWmlwRmlsZSk6ICBBZGQgZmllbGRzIG5hbWUgYW5kIG5leHQgKGZyb20gIFppcEZpbGVDYWNoZSkuCgkoc3RydWN0IFppcERpcmVjdG9yeSk6ICBOZXcgZmllbGQgemlwZiBwb2ludHMgdG8gb3duaW5nIFppcEZpbGUuCgkqIGpjZi5oIChzdHJ1Y3QgWmlwRGlyZWN0b3J5KTogIEFkZCBmb3J3YXJkIGRlY2xhcmF0aW9uLgoJKHN0cnVjdCBKQ0YpOiAgIERlY2xhcmUgemlwZCBmaWVsZCB0byBoYXZlIHR5cGUgc3RydWN0IFppcERpcmVjdG9yeS4KCVJlbW92ZSBzZWVuX2luX3ppcCBhbmQgemlwX29mZnNldCBmaWVsZHMuCgkoSkNGX1NFRU5fSU5fWklQKTogIE5ldyBtYWNyby4KCSogemV4dHJhY3QuYyAocmVhZF96aXBfYXJjaGl2ZSk6ICBTZXQgWmlwRGlyZWN0b3J5J3MgemlwZiBmaWVsZC4KCSogamNmLWlvLmM6ICBDaGFuZ2UgYWxsIFppcEZpbGVDYWNoZSB0byBaaXBGaWxlLgoJKHJlYWRfemlwX21lbWJlcik6ICBOZXcgZnVuY3Rpb24uCgkob3Blbl9pbl96aXApOiAgQ2FsbCByZWFkX3ppcF9tZW1iZXIuCgkqIGpjZi1wYXJzZS5jIChmaW5kX2luX2N1cnJlbnRfemlwKTogIFJlbW92ZSBmdW5jdGlvbi4KCShyZWFkX2NsYXNzKTogIE1lcmdlIGluIGZpbmRfaW5fY3VycmVudF96aXAgZnVuY3Rpb25hbGl0eS4KCUNhbGwgcmVhZF96aXBfbWVtYmVyIGlmIG5lZWRlZC4KCShwYXJzZV96aXBfZmlsZV9lbnRyaWVzKTogIFVzZSByZWFkX3ppcF9tZW1iZXIuCgkocHJvY2Vzc196aXBfZGlyKTogIFVwZGF0ZSBmb3IgcmVtb3ZlZCBhbmQgYWRkZWQgSkNGIGZpZWxkcy4KCShqY2ZfZmlndXJlX2ZpbGVfdHlwZSk6ICBSZS11c2UsIGRvbid0IGNvcHkgaW5pdGlhbCBaaXBGaWxlIHN0cnVjdC4KCjIwMDEtMDEtMjEgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCU1pbm9yIG9wdGltaXphdGlvbiBvZiBzdGF0aWMgZ2djIHJvb3RzLgoJKiBqY2YtcGFyc2UuYyAocGFyc2Vfcm9vdHMpOiAgTmV3IHN0YXRpYyBmaWVsZC4KCShjdXJyZW50X2ZpZWxkLCBjdXJyZW50X21ldGhvZCwgY3VycmVudF9maWxlX2xpc3QpOiAgUmVwbGFjZSBieSBtYWNyb3MKCW5hbWluZyBmaWVsZHMgb2YgcGFyc2Vfcm9vdHMuCgkoaW5pdF9qY2ZfcGFyc2UpOiAgQ29tYmluZSAzIGdnY19hZGRfdHJlZV9yb290IGNhbGxzIHRvIDEuCgkqIGNsYXNzLmMgKGNsYXNzX3Jvb3RzKTogIE5ldyBzdGF0aWMgZmllbGQuCgkocmVnaXN0ZXJlZF9jbGFzcywgZmllbGRzX2lkZW50LCBpbmZvX2lkZW50LCBjbGFzc19saXN0KToKCU5ldyBtYWNyb3MgbmFtaW5nIGZpZWxkcyBvZiBwYXJzZV9yb290cy4KCShidWlsZF9zdGF0aWNfZmllbGRfcmVmKTogIERvbid0IHJlZ2lzdGVyIHJvb3RzIGhlcmUuCgkobGF5b3V0X2NsYXNzKTogIFN0YXRpYyBmaWVsZCBsaXN0IHJlcGxhY2VkIGJ5IG1hY3JvIGNsYXNzX2xpc3QuCgkoaW5pdF9jbGFzc19wcm9jZXNzaW5nKTogIENhbGwgZ2djX2FkZF90cmVlX3Jvb3QgZm9yIDQgcm9vdHMuCglJbml0aWFsaXplIGZpZWxkc19pZGVudCBhbmQgaW5mb19pZGVudCBoZXJlLgoKMjAwMS0wMS0yMSAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBqY2YtcGFyc2UuYyAoZ2djX21hcmtfamNmKTogIE5ldyBmdW5jdGlvbi4KCShpbml0X2pjZl9wYXJzZSk6ICBSZWdpc3RlciBjdXJyZW50X2pjZiBhcyBnZ2Mgcm9vdC4KCjIwMDEtMDEtMjEgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogbGFuZy5jIChwdXRfZGVjbF9ub2RlKTogIFByaW50IG1ldGhvZCdzIG5hbWUuCgoyMDAxLTAxLTIxICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIHZlcmlmeS5jIChWRVJJRklDQVRJT05fRVJST1JfV0lUSF9JTkRFWCk6ICBOZXcgbWFjcm8uCgkodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiAgVXNlIGl0LCBmb3IgYmV0dGVyIGVycm9yIG1lc3NhZ2VzIG9uIGxvYWRzLgoKMjAwMS0wMS0yMSAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiB2ZXJpZnkuYyAobWVyZ2VfdHlwZV9zdGF0ZSk6ICBTdGlsbCBtYXkgaGF2ZSB0byBtZXJnZSBldmVuIGlmCglMQUJFTF9WRVJJRklFRCAobGFiZWwpLgoKMjAwMS0wMS0yMSAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBwYXJzZS55IChtZXRob2RfaGVhZGVyKTogIERvbid0IHNldCB0aGUgREVDTF9OQU1FIG9mIGEgRlVOQ1RJT05fREVDTAoJdG8gYSBFWFBSX1dJVEhfRklMRV9MT0NBVElPTiAtIHRoYXQgaXMganVzdCB0b28gZnJhZ2lsZSBhbmQgd3JvbmcuCgoyMDAxLTAxLTE5ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGV4cHIuYyAocG9wX3R5cGVfMCk6ICBPbmx5IHJldHVybiBvYmplY3RfcHRyX3R5cGVfbm9kZSBvbiBtaXNtYXRjaAoJaWYgZXhwZXRpbmcgYW4gaW50ZXJmYWNlIHR5cGUuICBSZWZpbmVzIFRvbSdzIGNoYW5nZSBvZiAyMDAwLTA5LTEyLgoKMjAwMS0wMS0xOCAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBnY2oudGV4aSAoSW5wdXQgT3B0aW9ucyk6IE1lbnRpb24gLmphdmEgZmlsZXMuCgoyMDAxLTAxLTE3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGxhbmctb3B0aW9ucy5oICgtV3Vuc3VwcG9ydGVkLWpkazExKTogUmVtb3ZlZC4KCSogbGFuZy5jIChmbGFnX25vdF9vdmVycmlkaW5nKTogRGVsZXRlZC4KCShmbGFnX3N0YXRpY19sb2NhbF9qZGsxXzEpOiBMaWtld2lzZS4KCShsYW5nX1dfb3B0aW9ucyk6IFJlbW92ZWQgInVuc3VwcG9ydGVkLWpkazExIiBlbnRyeS4KCSogcGFyc2UueSAoamF2YV9jaGVja19tZXRob2RzKTogUmVtb3ZlZCBkZWFkIGNvZGUuCgoyMDAxLTAxLTE3ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJQ2hhbmdlcyBzdWdnZXN0ZWQgYnkgUGVyIEJvdGhuZXI6CgkqIGdjai50ZXhpIChJbnB1dCBPcHRpb25zKTogRG9uJ3QgbWVudGlvbiBpbnB1dCBmaWxlcy4KCShDb2RlIEdlbmVyYXRpb24pOiBVcGRhdGVkIC0tbWFpbiBpbmZvcm1hdGlvbi4KCShJbnZva2luZyBqY2YtZHVtcCk6IE1lbnRpb24gdGhhdCAtLWphdmFwIGlzIGluY29tcGxldGUuCglGcm9tIEFsZXhhbmRyZSBQZXRpdC1CaWFuY286CgkoV2FybmluZ3MpOiBEb24ndCBtZW50aW9uIC1XdW5zdXBwb3J0ZWQtamRrMTEuCglNeSBzdHVmZjoKCShDb21wYXRpYmlsaXR5KTogTWVudGlvbiBKREsgMS4yLW5lc3Mgb2YgbGlicmFyaWVzLgoJKFJlc291cmNlcyk6IE1lbnRpb24gcmVzb3VyY2VzIHVzZWQgd2hlbiB3cml0aW5nIGdjai4KCjIwMDEtMDEtMTcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGdjai50ZXhpOiBOZXcgZmlsZS4KCSogTWFrZS1sYW5nLmluICgkKHNyY2RpcikvamF2YS9nY2ouaW5mbyk6IE5ldyB0YXJnZXQuCgkoamF2YS5pbmZvKTogRGVwZW5kIG9uIGdjai5pbmZvLgoJKGphdmEvZ2NqLmR2aSk6IE5ldyB0YXJnZXQuCgkoamF2YS5kdmkpOiBEZXBlbmQgb24gZ2NqLmR2aS4KCShqYXZhLmluc3RhbGwtaW5mbyk6IFdyb3RlLgoKMjAwMS0wMS0xNiAgSmVmZiBTdHVybSAgPGplZmYuc3R1cm1AYXBwbmV0LmNvbT4KCgkqIGV4cHIuYyAoamF2YV9sYW5nX2V4cGFuZF9leHByKTogVXNlIFRSRUVfU1lNQk9MX1JFRkVSRU5DRUQgYWZ0ZXIKCWhhdmluZyBjYWxsZWQgbWFrZV9kZWNsX3J0bC4KCjIwMDEtMDEtMTQgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCVZhcmlvdXMgcGF0Y2hlcyB0byBlbWl0IGJldHRlciBtZXNzYWdlcyBvbiB2ZXJpZmljYXRpb24gZXJyb3JzLgoJKiBleHByLmMgKHB1c2hfdHlwZV8wKTogIFJldHVybiBlcnJvciBpbmRpY2F0aW9uIG9uIHN0YWNrIG92ZXJmbG93LAoJaW5zdGVhZCBvZiBjYWxsaW5mZyBmYXRhbC4KCShwdXNoX3R5cGUpOiAgTm93IGp1c3QgY2FsbCBwdXNoX3R5cGVfMCAobmQgZmF0YWwgb24gb3ZlcmZsb3cpLgoJKHBvcF90eXBlXzApOiAgUmV0dXJuIGRldGFpbGVkIGVycm9yIG1lc3NhZ2UgKGluIGEgY2hhcioqIGFyZ3VtZW50KS4KCShwb3BfdHlwZSk6ICBJZiBwb3BfdHlwZV8wIGZhaWxzLCBwcmludCBlcnJvciBtZXNzYWdlLgoJKHBvcF9hcmd1bWVudF90eXBlcyk6ICBNb3ZlZCB0byB2ZXJpZnkuYy4KCSogdmVyaWZ5LmMgKHBvcF9hcmd1bWVudF90eXBlcyk6ICBNb3ZlZCBmcm9tIGV4cHIuYy4KCVJldHVybiBhIChwb3NzaWJsZSkgZXJyb3IgbWVzc2FnZSwgcmF0aGVyIHRoYW4gdm9pZC4KCShQT1BfVFlQRSwgUE9QX1RZUEVfQ09OViwgUFVTSF9UWVBFLCBQVVNIX1BFTkRJTkcpOiAgTmV3IG1hY3Jvcy4KCSh2ZXJpZnlfanZtX2luc3RydWN0aW9uKTogIFVzZSBuZXcgbWFjcm9zLCBpbXByb3ZpbmcgZXJyb3IgbWVzc2FnZXMuCglGb3IgY2FzZSBPUENPREVfYXN0b3JlIHVzZSBvYmplY3RfcHRyX3R5cGVfbm9kZS4KCSogamF2YS10cmVlLmggKFRZUEVfVU5ERVJGTE9XLCBUWVBFX1VORVhQRUNURUQpOiAgTmV3IG1hY3Jvcy4KCShwb3BfdHlwZV8wLCBwdXNoX3R5cGVfMCwgcG9wX2FyZ3VtZW50X3R5cGVzKTogIFVwZGF0ZSBhY2NvcmRpbmdseS4KCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfbGhzIGNhc2UgRVhQUl9XSVRIX0ZJTEVfTE9DQVRJT04pOiBJZiBib2R5IGlzCgljb25zdGFudCwgcmV0dXJuIGJvZHkgd2l0aG91dCB3cmFwcGVyLiAgKEltcHJvdmVzIGNvbnN0YW50IGZvbGRpbmcuKQoJKiBsZXguYyAoYnVpbGRfd2ZsX25vZGUpOiAgQ2xlYXIgVFJFRV9UWVBFIGZyb20gcmV0dXJuZWQgbm9kZS4KCjIwMDEtMDEtMTMgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogZXhwci5jIChleHBhbmRfamF2YV9maWVsZF9vcCk6ICBBc3NpZ25pbmcgdG8gYSBmaW5hbCBmaWVsZCBvdXRzaWRlCglhbiBpbml0aWFsaXplciBkb2VzIG5vdCB2aW9sYXRlIEpWTSBzcGVjLCBzbyBzaG91bGQgYmUgd2FybmluZywgbm90CgllcnJvci4gIChTdW4ncyB2ZXJpZmllciBkb2VzIG5vdCBjb21wbGFpbiAtIHRob3VnaCBNaWNyb1NvZnQncyBkb2VzLikKCjIwMDEtMDEtMTIgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGdqYXZhaC5jICh2ZXJzaW9uKSwgamNmLWR1bXAuYyAodmVyc2lvbik6IFVwZGF0ZSBjb3B5cmlnaHQgeWVhcgoJdG8gMjAwMS4KCjIwMDEtMDEtMTEgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAYWxiYXRyb3NzLmNvLm56PgoKCSogcGFyc2UueSAocmVzb2x2ZV9leHByZXNzaW9uX25hbWUpOiBQZXJtaXQgaW5zdGFuY2UgdmFyaWFibGVzIGZyb20KCWVuY2xvc2luZyBjb250ZXh0IGluIHN1cGVyIGNvbnN0cnVjdG9yIGNhbGwuCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogUGVybWl0IGVuY2xvc2luZyBjbGFzcydzIHF1YWxpZmllZAoJInRoaXMiIGluIHN1cGVyIGNvbnN0cnVjdG9yIGNhbGwuCgoyMDAxLTAxLTEwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfdXRmOF9yZWYpOiBSZW1vdmUgbGFzdCBhcmd1bWVudCBpbiBjYWxsIHRvCgltYWtlX2RlY2xfcnRsOyB1c2UgbWFrZV9mdW5jdGlvbl9ydGwgaW5zdGVhZCBvZiBtYWtlX2RlY2xfcnRsLgoJKGJ1aWxkX2NsYXNzX3JlZik6IExpa2V3aXNlLgoJKGJ1aWxkX3N0YXRpY19maWVsZF9yZWYpOiBMaWtld2lzZS4KCShnZXRfZGlzcGF0Y2hfdGFibGUpOiBMaWtld2lzZS4KCShsYXlvdXRfY2xhc3NfbWV0aG9kKTogTGlrZXdpc2UuCgkoZW1pdF9yZWdpc3Rlcl9jbGFzc2VzKTogTGlrZXdpc2UuCgkqIGNvbnN0YW50cy5jIChidWlsZF9jb25zdGFudF9kYXRhX3JlZik6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGJ1aWx0aW5fZnVuY3Rpb24pOiBMaWtld2lzZS4KCShjcmVhdGVfcHJpbWl0aXZlX3Z0YWJsZSk6IExpa2V3aXNlLgoJKiBleHByLmMgKGJ1aWxkX2tub3duX21ldGhvZF9kZWYpOiBMaWtld2lzZS4KCShidWlsZF9qbmlfc3R1Yik6IExpa2V3aXNlLgoJKGphdmFfbGFuZ19leHBhbmRfZXhwcik6IExpa2V3aXNlLgoKMjAwMS0wMS0xMCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSoganZzcGVjLmMgKGp2Z2VubWFpbl9zcGVjKTogT21pdCAtZmVuY29kaW5nIGZyb20gY2MxIGludm9jYXRpb24uCgoyMDAxLTAxLTA4ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGphdmEtdHJlZS5oIChsYW5nX3ByaW50YWJsZV9uYW1lX3dscyk6IE5ldyBwcm90b3R5cGUuCgkqIGxhbmcuYyAocHV0X2RlY2xfbmFtZSk6IFJlbW92ZWQgZGVhZCBjb2RlLiBVc2UgREVDTF9DT05URVhUCglyYXRoZXIgdGhhbiBgY3VycmVudF9jbGFzcycgdG8gcHJpbnQgdHlwZSBuYW1lLiBEb24ndCBwcmVwZW5kIHR5cGUKCW5hbWVzIHdoZW4gcHJpbnRpbmcgY29uc3RydWN0b3IgbmFtZXMuCgkobGFuZ19wcmludGFibGVfbmFtZV93bHMpOiBOZXcgZnVuY3Rpb24uCgkqIGpjZi1wYXJzZS5jIChqY2ZfcGFyc2Vfc291cmNlKTogUGFzcyBOVUxMIGBmaWxlJyBhcmd1bWVudCB0bwoJYGJ1aWxkX2V4cHJfd2ZsJywgYWx3YXkgc2V0IEVYUFJfV0ZMX0ZJTEVOQU1FX05PREUuCgkqIHBhcnNlLnkgKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogTWVzc2FnZSB0dW5lZCBmb3IgY29uc3RydWN0b3JzLgoJKG5vdF9hY2Nlc3NpYmxlX3ApOiBHcmFudCBgcHJpdmF0ZScgYWNjZXNzIGZyb20gd2l0aGluCgllbmNsb3NpbmcgY29udGV4dHMuCgoyMDAxLTAxLTA3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCglBbGwgZmlsZXMgd2l0aCB1cGRhdGVkIGNvcHlyaWdodCB3aGVuIGFwcGxpY2FibGUuCgkqIE1ha2UtbGFuZy5pbiAoSlZHRU5NQUlOX09CUyk6IFJlbW92ZWQgamF2YS9tYW5nbGUuby4KCSogY2xhc3MuYyAobWFuZ2xlX2NsYXNzX2ZpZWxkKTogRnVuY3Rpb24gcmVtb3ZlZC4KCShhcHBlbmRfZ3BwX21hbmdsZWRfdHlwZSwgbWFuZ2xlX3N0YXRpY19maWVsZCwgbWFuZ2xlX2ZpZWxkKTogTGlrZXdpc2UuCgkodXRmOF9jbXAsIGN4eF9rZXl3b3JkX3ApOiBNb3ZlZCB0byBsZXguYy4KCShidWlsZF9jbGFzc19yZWYpOiBDYWxsIGBqYXZhX21hbmdsZV9jbGFzc19maWVsZCcgaW5zdGVhZCBvZgoJYG1hbmdsZV9jbGFzc19maWVsZC4nCgkoYnVpbGRfZHRhYmxlX2RlY2wpOiBSZXdyaXR0ZW4gdG8gY2FsbCBgamF2YV9tYW5nbGVfdnRhYmxlLicKCShsYXlvdXRfY2xhc3MpOiBDYWxsIGBqYXZhX21hbmdsZV9kZWNsJyBpbnN0ZWFkIG9mCglgbWFuZ2xlX3N0YXRpY19maWVsZC4nCgkoY3h4X2tleXdvcmRzKTogSW5pdGlhbGl6ZWQgc3RhdGljIGFycmF5IG1vdmVkIHRvIGBsZXguYy4nCgkobGF5b3V0X2NsYXNzX21ldGhvZCk6IENoYW5nZWQgbGVhZGluZyBjb21tZW50LiBTaW1wbGlmaWVkIHRvCgljYWxsIGBqYXZhX21hbmdsZV9kZWNsLicgTG9jYWwgYHB0cicgbW92ZWQgaW4gZm9yIGxvb3AgYm9keS4KCSogZGVjbC5jIChsYW5nX21hcmtfdHJlZSk6IE1hcmsgZmllbGQgYHBhY2thZ2VfbGlzdC4nCgkqIGphdmEtdHJlZS5oIChUWVBFX1BBQ0tBR0VfTElTVCk6IE5ldyBtYWNyby4KCShzdHJ1Y3QgbGFuZ190eXBlKTogTmV3IGZpZWxkIGBwYWNrYWdlX2xpc3QuJwoJKHVuaWNvZGVfbWFuZ2xpbmdfbGVuZ3RoKTogUHJvdG90eXBlIHJlbW92ZWQuCgkoYXBwZW5kX2dwcF9tYW5nbGVkX25hbWUsIGFwcGVuZF9ncHBfbWFuZ2xlZF9jbGFzc3R5cGUsCgllbWl0X3VuaWNvZGVfbWFuZ2xlZF9uYW1lKTogTGlrZXdpc2UuCgkoY3h4X2tleXdvcmRfcCk6IE5ldyBwcm90b3R5cGUuCgkoamF2YV9tYW5nbGVfZGVjbCwgamF2YV9tYW5nbGVfY2xhc3NfZmllbGQsCglqYXZhX21hbmdsZV9jbGFzc19maWVsZF9mcm9tX3N0cmluZywgamF2YV9tYW5nbGVfdnRhYmxlKTogTGlrZXdpc2UuCgkqIGpjZi1wYXJzZS5jIChqY2ZfcGFyc2Vfc291cmNlKTogQ29uc3RpZnkgYGZpbGUnIGFyZ3VtZW50IHRvCglgYnVpbGRfZXhwcl93ZmwuJwoJKiBqdmdlbm1haW4uYyAobWFpbl9tZXRob2RfcHJlZml4KTogR2xvYmFsIHZhcmlhYmxlIHJlbW92ZWQuCgkobWFpbl9tZXRob2Rfc3VmZml4KTogTGlrZXdpc2UuCgkoZG9fbWFuZ2xlX2NsYXNzbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShtYWluKTogQ2FsbCBpdC4gRm9ybWF0IGNoYW5nZWQgdG8gYWNjb21tb2RhdGUgbmV3IG1hbmdsaW5nIHNjaGVtZS4KCSogbGV4LmM6ICh1dGY4X2NtcCk6IENvbmRpdGlvbmFsbHkgcHJvdG90eXBlZC4KCShjeHhfa2V5d29yZHMpOiBNb3ZlZCBmcm9tIGNsYXNzLmMsIGNvbmRpdGlvbmFsbHkgZGVmaW5lZC4KCSh1dGY4X2NtcCwgY3h4X2tleXdvcmRfcCk6IExpa2V3aXNlLgoJKiBtYW5nbGUuYyAob2JzdGFjay5oLCBnZ2MuaCk6IEluY2x1ZGVkLgoJKG1hbmdsZV9maWVsZF9kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKG1hbmdsZV9tZXRob2RfZGVjbCwgbWFuZ2xlX3R5cGUsIG1hbmdsZV9wb2ludGVyX3R5cGUsCgltYW5nbGVfYXJyYXlfdHlwZSwgbWFuZ2xlX3JlY29yZF90eXBlLAoJZmluZF9jb21wcmVzc2lvbl9wb2ludGVyX21hdGNoLCBmaW5kX2NvbXByZXNzaW9uX2FycmF5X21hdGNoLAoJZmluZF9jb21wcmVzc2lvbl9yZWNvcmRfbWF0Y2gsCglmaW5kX2NvbXByZXNzaW9uX2FycmF5X3RlbXBsYXRlX21hdGNoLCBzZXRfdHlwZV9wYWNrYWdlX2xpc3QsCgllbnRyeV9tYXRjaF9wb2ludGVyX3AsIGVtaXRfY29tcHJlc3Npb25fc3RyaW5nLCBpbml0X21hbmdsaW5nLAoJZmluaXNoX21hbmdsaW5nLCBjb21wcmVzc2lvbl90YWJsZV9hZGQsIG1hbmdsZV9tZW1iZXJfbmFtZSk6IExpa2V3aXNlLgoJKG1hbmdsZV9vYnN0YWNrKTogTmV3IGdsb2JhbC4KCShNQU5HTEVfUkFXX1NUUklORyk6IE5ldyBtYWNyby4KCSh1bmljb2RlX21hbmdsaW5nX2xlbmd0aCk6IFR1cm5lZCBzdGF0aWMuCgkoYXBwZW5kX3VuaWNvZGVfbWFuZ2xlZF9uYW1lKTogUmVuYW1lZCBmcm9tCglgZW1pdF91bmljb2RlX21hbmdsZWRfbmFtZS4nICBUdXJuZWQgc3RhdGljLiBgbWFuZ2xlX29ic3RhY2snCglyZXBsYWNlcyBgb2JzdGFjaycsIHJlbW92ZWQgZnJvbSB0aGUgcGFyYW1ldGVyIGxpc3QuCgkoYXBwZW5kX2dwcF9tYW5nbGVkX25hbWUpOiBUdXJuZWQgc3RhdGljLiBgbWFuZ2xlX29ic3RhY2snCglyZXBsYWNlcyBwYXJhbWV0ZXIgYG9ic3RhY2snLCByZW1vdmVkIGZyb20gdGhlIHBhcmFtZXRlciBsaXN0LiBDYWxsCglgYXBwZW5kX3VuaWNvZGVfbWFuZ2xlZF9uYW1lJyBpbnN0ZWFkIG9mIGBlbWl0X3VuaWNvZGVfbWFuZ2xlZF9uYW1lLgoJKGFwcGVuZF9ncHBfbWFuZ2xlZF9jbGFzc3R5cGUpOiBSZW1vdmVkLgoJKGNvbXByZXNzaW9uX3RhYmxlLCBjb21wcmVzc2lvbl9uZXh0KTogTmV3IHN0YXRpYyB2YXJpYWJsZXMuCgkqIHBhcnNlLnkgKHRlbXBvcmFyeV9vYnN0YWNrKTogRXh0ZXJuIGRlY2xhcmF0aW9uIHJlbW92ZWQuCgoyMDAxLTAxLTA1ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX2Jpbm9wKTogQ29tcHV0ZSBtaXNzaW5nIHR5cGUgaW4gZXJyb3Igc2l0dWF0aW9ucy4KCjIwMDEtMDEtMDUgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAYWxiYXRyb3NzLmNvLm56PgoKCSogY2xhc3MuYyAobWFrZV9jbGFzc19kYXRhKTogUHVzaCBpbml0aWFsIHZhbHVlIGZvciAiYXJyYXljbGFzcyIuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBBZGQgbmV3IGNsYXNzIGZpZWxkICJhcnJheWNsYXNzIi4KCjIwMDEtMDEtMDUgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAYWxiYXRyb3NzLmNvLm56PgoKCUZyb20gcGF0aGFAc29mdGxhYi5lcmljc3Nvbi5zZToKCSogcGFyc2UueSAoc3dpdGNoX2xhYmVsKTogVXNlIGJ1aWxkLCBub3QgYnVpbGQxLCB0byBjb25zdHJ1Y3QKCURFRkFVTFRfRVhQUi4KCjIwMDEtMDEtMDQgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGxhbmcuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogQ2hhbmdlIC1NQSB0byAtTVAuCgkqIGpjZi1kZXBlbmQuYyAoamNmX2RlcGVuZGVuY3lfYWRkX3RhcmdldCwgamNmX2RlcGVuZGVuY3lfc2V0X3RhcmdldCk6CglVcGRhdGUgdG8gbmV3IHByb3RvdHlwZTsgZG8gcXVvdGUgdGFyZ2V0cy4KCShqY2ZfZGVwZW5kZW5jeV93cml0ZSk6IFVwZGF0ZS4KCjIwMDAtMTItMjIgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAYWxiYXRyb3NzLmNvLm56PgoKCVNob3J0ZW4gcHJpbWl0aXZlIGFycmF5IGFsbG9jYXRpb24gcGF0aDoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFVzZSBfSnZfTmV3UHJpbUFycmF5IG5vdCBfSnZfTmV3QXJyYXkKCXRvIGNyZWF0ZSBuZXcgcHJpbWl0aXZlIGFycmF5cy4KCSogZXhwci5jIChidWlsZF9uZXdhcnJheSk6IElmIGdlbmVyYXRpbmcgbmF0aXZlIGNvZGUsIGNhbGwKCXNvZnRfbmV3YXJyYXlfbm9kZSB3aXRoIGEgcmVmZXJlbmNlIHRvIHRoZSBwcmltaXRpdmUgVFlQRSBpZGVudGlmaWVyCglpbnN0ZWFkIG9mIHR5cGVfdmFsdWUuCgoyMDAwLTEyLTE3ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCglGaXggZm9yIFBScyBnY2ovMzEyIGFuZCBnY2ovMjUzOgoJKiBwYXJzZS55ICh2YWxpZF9yZWZfYXNzaWduY29udl9jYXN0X3ApOiBMb2FkIGNsYXNzZXMgZm9yIHNvdXJjZSBhbmQKCWRlc3QgaWYgdGhleSBhcm4ndCBhbHJlYWR5LgoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3MpOiBDYWxsIG1heWJlX2xheW91dF9zdXBlcl9jbGFzcyBvbgoJc3VwZXJpbnRlcmZhY2VzIGFsc28sIGJ1dCBvbmx5IGlmIGNvbXBpbGluZyBmcm9tIGJ5dGVjb2RlLgoKCUZpeCBmb3IgUFIgZ2NqLzM3MzoKCSogcGFyc2UueSAoY3JlYXRlX2NsYXNzKTogU2V0IEFDQ19TVEFUSUMgaWYgY2xhc3MgaXMgZGVjbGFyZWQgaW4gYW4KCWludGVyZmFjZS4KCjIwMDAtMTItMTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGpjZi1wYXJzZS5jIChqY2ZfcGFyc2Vfc291cmNlKTogU2V0IHdmbF9vcGVyYXRvciBpZiBub3QgYWxyZWFkeQoJc2V0LgoKMjAwMC0xMi0xNCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBib2VobS5jIChtYXJrX3JlZmVyZW5jZV9maWVsZHMpOiBDaGFuZ2UgdGVzdCB0byBjb3JyZWN0bHkgZGV0ZWN0CgliaXRtYXAgb3ZlcmZsb3cuCgoyMDAwLTEyLTE1ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBjb25maWctbGFuZy5pbiAobGFuZ19kaXJzKTogQWRkZWQuCgoyMDAwLTEyLTE1ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGVuZF9hcnRpZmljaWFsX21ldGhvZF9ib2R5KTogRml4ZWQgdW5kZWZpbmVkIGJlaGF2aW9yLgoJQ3JlZGl0cyBnbyB0byBydGggZm9yIGZpbmRpbmcgaXQuCgoyMDAwLTEyLTEzICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiBwYXJzZS55IChjaGVja19zdGF0aWNfZmluYWxfdmFyaWFibGVfYXNzaWdubWVudF9mbGFnKTogRml4IHNwZWxsaW5nLgoKMjAwMC0xMS0wNyAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogTWFrZS1sYW5nLmluIChKQVZBX0xFWF9DKTogQWRkZWQgY2hhcnRhYmxlcy5oLgoJKiBsZXguYyAoamF2YV9pZ25vcmFibGVfY29udHJvbF9wKTogUmVtb3ZlZC4KCShqYXZhX2xldHRlcl9vcl9kaWdpdF9wKTogUmVtb3ZlZC4KCShqYXZhX3N0YXJ0X2NoYXJfcCk6IE5ldyBmdW5jdGlvbi4KCShqYXZhX3JlYWRfY2hhcik6IFJldHVybiBgaW50Jywgbm90IGB1bmljb2RlX3QnLiAgQ2hhbmdlZAoJY2FsbGVycy4KCShqYXZhX3JlYWRfdW5pY29kZSk6IExpa2V3aXNlLgoJKGphdmFfcmVhZF91bmljb2RlX2NvbGxhcHNpbmdfdGVybWluYXRvcnMpOiBMaWtld2lzZS4KCShqYXZhX2dldF91bmljb2RlKTogTGlrZXdpc2UuCgkoamF2YV9uZXdfbGV4ZXIpOiBJbml0aWFsaXplIGhpdF9lb2YuCgkoamF2YV9wYXJzZV9lbmRfY29tbWVudCk6IFRha2UgYGludCcgYXJndW1lbnQuCgkoamF2YV9wYXJzZV9kb2Nfc2VjdGlvbik6IExpa2V3aXNlLgoJKGphdmFfcGFyc2VfZXNjYXBlX3NlcXVlbmNlKTogRG9uJ3QgYWxsb3cgYmFja2xhc2gtbmV3bGluZS4KCVJldHVybiBgaW50Jy4KCSogbGV4LmggKEpBVkFfRElHSVRfUCk6IFJlbW92ZWQuCgkoX0pBVkFfTEVUVEVSX09SX0RJR0lUX1ApOiBSZW1vdmVkLgoJKF9KQVZBX0lERU5USUZJRVJfSUdOT1JBQkxFKTogUmVtb3ZlZC4KCShKQVZBX1NUQVJUX0NIQVJfUCk6IFJlbmFtZWQgZnJvbSBKQVZBX0lEX0NIQVJfUC4KCShKQVZBX1BBUlRfQ0hBUl9QKTogTmV3IG1hY3JvLgoJKFVFT0YpOiBOb3cgLTEuCgkoSkFWQV9DSEFSX0VSUk9SKTogTm93IC0yLgoJKGphdmFfbGV4ZXIpOiBOZXcgZmllbGQgYGhpdF9lb2YnLgoJKiBjaGFydGFibGVzLmg6IE5ldyBmaWxlLgoJKiBnZW4tdGFibGUucGw6IG5ldyBmaWxlLgoKMjAwMC0xMS0yMCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoJICAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9saHMpOiBPbmx5IGFsbG93IGNvbXBvdW5kIGFzc2lnbm1lbnQgb2YKCXJlZmVyZW5jZSB0eXBlIGlmIHR5cGUgaXMgU3RyaW5nLgoKMjAwMC0xMi0wOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEvamNmLXBhdGgubzopOiBsaWJnY2ouamFyIHJlcGxhY2VzIGxpYmdjai56aXAuCglqY2YtcGF0aC5jOiBMaWtld2lzZS4KCjIwMDAtMTItMDkgIEFudGhvbnkgR3JlZW4gIDxncmVlbkByZWRoYXQuY29tPgoKCSogemlwZmlsZS5oIChaaXBEaXJlY3RvcnkpOiBEZWNsYXJlIHNpemUsIHVuY29tcHJlc3NlZF9zaXplLAoJZmlsZXN0YXJ0IGFuZCBmaWxlbmFtZV9sZW5ndGggYXMgaW50IHZhbHVlcy4KCjIwMDAtMTItMDcgIE1vIERlSm9uZyAgPG1kZWpvbmdAcmVkaGF0LmNvbT4KCgkqIGpjZi1pby5jIChmaW5kX2NsYXNzKTogQ29ycmVjdCB0aGUgbG9naWMgdGhhdCB0ZXN0cyB0byBzZWUgaWYgYQoJLmphdmEgZmlsZSBpcyBuZXdlciB0aGFuIGl0cyAuY2xhc3MgZmlsZS4gVGhlIGNvbXBpbGVyIHdhcwoJaW5jb3JyZWN0bHkgcHJpbnRpbmcgYSB3YXJuaW5nIHdoZW4gZmlsZSBtb2QgdGltZXMgd2VyZSBlcXVhbC4KCjIwMDAtMTItMDcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5zdGFuZm9yZC5lZHU+CgoJKiBqdmdlbm1haW4uYzogVXNlIElTUFJJTlQgbm90IGlzYXNjaWkuCgoyMDAwLTEyLTA2ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGVuZF9hcnRpZmljaWFsX21ldGhvZF9ib2R5KTogRml4ZWQgdHlwby4KCjIwMDAtMTItMDQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBQaWNrIHRoZSBjb3JyZWN0IGVuY2xvc2luZwoJY29udGV4dCB3aGVuIGNyZWF0aW5nIGlubmVyIGNsYXNzIGluc3RhbmNlcy4KCUZpeGVzIGdjai8zMzIuCgoyMDAwLTExLTI2ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBnamF2YWguYyAodmVyc2lvbiksIGpjZi1kdW1wLmMgKHZlcnNpb24pLCBqdi1zY2FuLmMgKHZlcnNpb24pOgoJVXBkYXRlIGNvcHlyaWdodCB5ZWFyIHRvIDIwMDAuCgoyMDAwLTExLTIzICBBbnRob255IEdyZWVuICA8Z3JlZW5AcmVkaGF0LmNvbT4KCgkqIGpjZi1wYXJzZS5jIChpbml0X2pjZl9wYXJzZSk6IFJlZ2lzdGVyIGN1cnJlbnRfZmlsZV9saXN0IHJvb3QuCglNb3ZlIGN1cnJlbnRfZmlsZV9saXN0IG91dCBvZiB5eXBhcnNlIGFuZCBtYWtlIGl0IHN0YXRpYy4KCgkqIGV4cHIuYzogRGVjbGFyZSBxdWlja19zdGFjayBhbmQgdHJlZV9saXN0X2ZyZWVfbGlzdCBhcyBzdGF0aWMKCShpbml0X2V4cHJfcHJvY2Vzc2luZyk6IFJlZ2lzdGVyIHF1aWNrX3N0YWNrIGFuZAoJdHJlZV9saXN0X2ZyZWVfbGlzdCByb290cy4KCjIwMDAtMTEtMjIgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoYnVpbGRfb3V0ZXJfZmllbGRfYWNjZXNzKTogTmV3IGxvY2FsIGBkZWNsX2N0eCcsIHVzZQoJaXQuIENoZWNrIGZvciBmaWVsZCdzIGNvbnRleHQgYW5kIGN1cnJlbnQgY2xhc3MgaW1tZWRpYXRlIG91dGVyCgljb250ZXh0IGluaGVyaXRhbmNlLgoJKG91dGVyX2ZpZWxkX2FjY2Vzc19wKTogQ29uc2lkZXIgZmllbGRzIGluaGVyaXRlZCBmcm9tIHRoZSBsYXN0CgllbmNsb3NpbmcgY29udGV4dC4KCShidWlsZF9hY2Nlc3NfdG9fdGhpc24pOiBTdG9wIGF0IHRoZSBsYXN0IGVuY2xvc2luZyBjb250ZXh0IGlmCgluZWNlc3NhcnkuCglGaXhlcyBnY2ovMzY3LgoKMjAwMC0xMS0yMyAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoanZzcGVjLm8pOiBEZXBlbmQgb24gJChDT05GSUdfSCkuCgoyMDAwLTExLTIyICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCgkqIGpjZi1wYXJzZS5jIChnZXRfY29uc3RhbnQpOiBDYWxsIFVUOF9DSEFSX0xFTkdUSCBvbiBgdXRmOCcsIG5vdCB0aGUKCXNjcmF0Y2ggYnVmZmVyLgoKMjAwMC0xMS0yMCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSoganYtc2Nhbi5jIChoZWxwKTogRG9jdW1lbnQgLS1jb21wbGV4aXR5LgoJKG9wdGlvbnMpOiBBZGRlZCAtLWNvbXBsZXhpdHkuCgkoZmxhZ19jb21wbGV4aXR5KTogTmV3IGdsb2JhbC4KCShtYWluKTogQ2FsbCBgcmVwb3J0Jy4KCSogcGFyc2Utc2Nhbi55IChjb21wbGV4aXR5KTogTmV3IGdsb2JhbC4KCShpZl90aGVuX3N0YXRlbWVudCwgaWZfdGhlbl9lbHNlX3N0YXRlbWVudCwKCWlmX3RoZW5fZWxzZV9zdGF0ZW1lbnRfbnNpLCBzd2l0Y2hfYmxvY2tfc3RhdGVtZW50X2dyb3VwLAoJd2hpbGVfZXhwcmVzc2lvbiwgZG9fc3RhdGVtZW50LCBmb3JfYmVnaW4sIGNvbnRpbnVlX3N0YXRlbWVudCwKCXRocm93X3N0YXRlbWVudCwgY2F0Y2hfY2xhdXNlLCBmaW5hbGx5LCBtZXRob2RfaW52b2NhdGlvbiwKCWNvbmRpdGlvbmFsX2FuZF9leHByZXNzaW9uLCBjb25kaXRpb25hbF9vcl9leHByZXNzaW9uLAoJY29uZGl0aW9uYWxfZXhwcmVzc2lvbik6IFVwZGF0ZSBjb21wbGV4aXR5LgoJKHJlc2V0X3JlcG9ydCk6IFJlc2V0IGNvbXBsZXhpdHkuCgkocmVwb3J0KTogTmV3IGZ1bmN0aW9uLgoKMjAwMC0xMS0yMCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogbGV4LmMgKHl5bGV4KTogQWRkZWQgU1RSSUNUX1RLIGNhc2UuCgkqIHBhcnNlLnkgKFNUUklDVF9USyk6IEFkZGVkLgoJKiBwYXJzZS1zY2FuLnkgKFNUUklDVF9USyk6IEFkZGVkLgoJKiBNYWtlLWxhbmcuaW4gKCQoc3JjZGlyKS9qYXZhL2tleXdvcmQuaCk6IEFkZGVkIG1pc3NpbmcgYFwnIGFuZAoJYDsnLiAgVXNlIDQsIG5vdCAzLCB3aXRoIC1rIG9wdGlvbi4gIENvcnJlY3RseSByZW5hbWUgcmVzdWx0aW5nCglmaWxlLgoJKiBrZXl3b3JkLmg6IFJlYnVpbHQuCgkqIGtleXdvcmQuZ3BlcmYgKHN0cmljdGZwKTogQWRkZWQuCgoyMDAwLTExLTIwICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBsZXguYyAoeXlsZXgpOiBSZWNvZ25pemUgZmxvYXRpbmcgcG9pbnQgY29uc3RhbnRzIHdpdGggbGVhZGluZwoJMC4KCjIwMDAtMTEtMTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGphdmEtdHJlZS5oIChjeWNsaWNfaW5oZXJpdGFuY2VfcmVwb3J0KTogQ29uc3RpZnkuCgkqIHBhcnNlLnkgKGN5Y2xpY19pbmhlcml0YW5jZV9yZXBvcnQpOiBMaWtld2lzZS4KCjIwMDAtMTEtMTcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5zdGFuZm9yZC5lZHU+CgoJKiBwYXJzZS55IChnb2FsKTogUmVtb3ZlIGNhbGwgdG8gZ2djX2FkZF9zdHJpbmdfcm9vdC4KCjIwMDAtMTEtMTYgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5zdGFuZm9yZC5lZHU+CgoJKiBqY2YtcGFyc2UuYyAoZ2V0X2NvbnN0YW50KSwgcGFyc2UueSAoZG9fbWVyZ2Vfc3RyaW5nX2NzdGUpOgoJQ3JlYXRlIHN0cmluZyBpbiBzY3JhdGNoIGJ1ZmZlciwgdGhlbiBwYXNzIHRvIGJ1aWxkX3N0cmluZy4KCjIwMDAtMTEtMTMgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIHBhcnNlLnkgKGlzc3VlX3dhcm5pbmdfZXJyb3JfZnJvbV9jb250ZXh0KTogQWRkCglBVFRSSUJVVEVfUFJJTlRGLgoKMjAwMC0xMS0xMSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQHJlZGhhdC5jb20+CgoJKiBqY2YtcGFyc2UuYyAocHJvY2Vzc196aXBfZGlyKTogQWRkIGZpbnB1dCBwYXJhbWV0ZXIuCgkoamNmX2ZpZ3VyZV9maWxlX3R5cGUpOiBDYWxsIHByb2Nlc3NfemlwX2RpciB3aXRoIGFwcHJvcHJpYXRlCglhcmd1bWVudC4KCjIwMDAtMTEtMTAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRlY2wuYyAoY29weV9sYW5nX2RlY2wpOiBVc2UgbWVtY3B5LCBub3QgYmNvcHkuCgkqIGpjZi1wYXJzZS5jIChqY2ZfZmlndXJlX2ZpbGVfdHlwZSk6IExpa2V3aXNlLgoKMjAwMC0xMS0wOSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogcGFyc2UueSAoY3JlYXRlX25ld19wYXJzZXJfY29udGV4dCk6IFVzZSBtZW1zZXQgKCkgaW5zdGVhZCBvZgoJYnplcm8gKCkuCgoyMDAwLTExLTA4ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBnamF2YWguYyAocHJvY2Vzc19maWxlKTogT25seSBpbmNsdWRlIGdjai9jbmkuaCB3aGVuIGdlbmVyYXRpbmcKCUNOSSBzdHVicy4KCjIwMDAtMTEtMDcgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGV4cHIuYyAobm90ZV9pbnN0cnVjdGlvbnMpLCBqY2YtaW8uYyAoZmluZF9jbGFzcyksIGpjZi1wYXJzZS5jCgkoaW5pdF9vdXRnb2luZ19jcG9vbCksIGxleC5jIChqYXZhX2luaXRfbGV4KTogVXNlIG1lbXNldCAoKQoJaW5zdGVhZCBvZiBiemVybyAoKS4KCjIwMDAtMTEtMDUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGxleC5oIChKQVZBX0ZMT0FUX1JBTkdFX0VSUk9SKTogVHlwbyBmaXguCgkqIGxleC5jIChJU19aRVJPKTogTmV3IGRlZmluZS4KCShqYXZhX3BlcmZvcm1fYXRvZik6IEVycm9yIG9uIGZsb2F0aW5nIHBvaW50IHVuZGVyZmxvdy4KCjIwMDAtMTEtMDQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGxleC5jIChqYXZhX3BhcnNlX2VzY2FwZV9zZXF1ZW5jZSk6IE9ubHkgcmVhZCB0d28gb2N0YWwKCWNoYXJhY3RlcnMgaWYgdGhlIGZpcnN0IG9uZSBpcyBncmVhdGVyIHRoYW4gMy4gIERvbid0IGFsbG93Cgkib2N0YWwiIG51bWJlcnMgdG8gaW5jbHVkZSB0aGUgZGlnaXRzIDggb3IgOS4KCjIwMDAtMTEtMDUgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS5kaXN0ZGlyKTogUmVtb3ZlLgoKMjAwMC0xMS0wMyAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogTWFrZS1sYW5nLmluIChqYXZhLmR2aSk6IE5ldyB0YXJnZXQuCglQYXJ0aWFsIGZpeCBmb3IgUFIgb3RoZXIvNTY3LgoKCSogbGFuZy1vcHRpb25zLmg6IE1lbnRpb24gLVdvdXQtb2YtZGF0ZS4KCSogamNmLWR1bXAuYyAoZmxhZ19uZXdlcik6IE5ldyBnbG9iYWwuCgkqIGdqYXZhaC5jIChmbGFnX25ld2VyKTogTmV3IGdsb2JhbC4KCSogamNmLWlvLmMgKGZpbmRfY2xhc3MpOiBPbmx5IHdhcm4gd2hlbiBmbGFnX25ld2VyIHNldC4KCSogbGFuZy5jIChmbGFnX25ld2VyKTogTmV3IGdsb2JhbC4KCShzdHJ1Y3Qgc3RyaW5nX29wdGlvbik6IE5ldyBkZWNsYXJhdGlvbi4KCShsYW5nX1dfb3B0aW9ucyk6IE5ldyBnbG9iYWwuCgkocHJvY2Vzc19vcHRpb25fd2l0aF9ubyk6IE5ldyBmdW5jdGlvbi4KCShsYW5nX2RlY29kZV9vcHRpb24pOiBVc2UgaXQuCgoJKiBjbGFzcy5jIChjeHhfa2V5d29yZF9wKTogQWNjZXB0IGtleXdvcmRzIHdpdGggdHJhaWxpbmcgYCQncy4KCSogZ2phdmFoLmMgKGN4eF9rZXl3b3JkX3N1YnN0KTogSGFuZGxlIGFueSBudW1iZXIgb2YgdHJhaWxpbmcKCWAkJy4KCgkqIGxleC5oIChfSkFWQV9JREVOVElGSUVSX0lHTk9SQUJMRSk6IE5ldyBtYWNyby4KCShKQVZBX0lEX0NIQVJfUCk6IEFsc28gdHJ5IGphdmFfaWdub3JhYmxlX2NvbnRyb2xfcC4KCSogbGV4LmMgKGphdmFfcmVhZF91bmljb2RlKTogUmVtb3ZlZCBgdGVybV9jb250ZXh0JyBhcmd1bWVudC4KCVJlY29nbml6ZSBhbnkgbnVtYmVyIG9mIGB1JyBpbiBgXHUnLgoJKGphdmFfcmVhZF91bmljb2RlX2NvbGxhcHNpbmdfdGVybWluYXRvcnMpOiBOZXcgZnVuY3Rpb24uCgkoamF2YV9nZXRfdW5pY29kZSk6IFVzZSBpdC4KCShqYXZhX2xpbmV0ZXJtaW5hdG9yKTogUmVtb3ZlZC4KCSh5eWxleCk6IFByb2R1Y2UgZXJyb3IgaWYgY2hhcmFjdGVyIGxpdGVyYWwgaXMgbmV3bGluZSBvciBzaW5nbGUKCXF1b3RlLiAgUmV0dXJuIGlmIGVvZiBmb3VuZCBpbiBtaWRkbGUgb2YgYC8vJyBjb21tZW50LiAgRU9GIGluCglgLy8nIGNvbW1lbnQgaXMgb25seSBhbiBlcnJvciBpZiBwZWRhbnRpYy4KCShqYXZhX2lnbm9yYWJsZV9jb250cm9sX3ApOiBOZXcgZnVuY3Rpb24uCgkoamF2YV9wYXJzZV9lbmRfY29tbWVudCk6IFJldHVybiBpZiBlb2YgZm91bmQgaW4gbWlkZGxlIG9mCgljb21tZW50LgoJSW5jbHVkZSBmbGFncy5oLgoJKiBqdi1zY2FuLmMgKHBlZGFudGljKTogTmV3IGdsb2JhbC4KCjIwMDAtMTAtMzEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAob3V0ZXJfZmllbGRfYWNjZXNzX3ApOiBJbmhlcml0ZWQgZmllbGRzIGFyZW4ndAoJY29uc2lkZXIgb3V0ZXIgZmllbGRzLgoJKG1heWJlX2J1aWxkX3RoaXNuX2FjY2Vzc19tZXRob2QpOiBVc2UKCVBVUkVfSU5ORVJfQ0xBU1NfVFlQRV9QIGluc3RlYWQgb2YgSU5ORVJfQ0xBU1NfVFlQRV9QLgoJKHJlc29sdmVfZXhwcmVzc2lvbl9uYW1lKTogVHJpZ2dlciBhbiBlcnJvciBpZiBhIHN0YXRpYyBmaWVsZAoJaXMgYmVpbmcgYWNjZXNzZWQgYXMgYW4gb3V0ZXIgZmllbGQuCgoyMDAwLTEwLTI5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoTElCR0NKX1pJUF9GSUxFKTogRGVmaW5lIHdpdGggYCQocHJlZml4KScuCglGaXhlcyBnY2ovMzY1LgoKMjAwMC0xMC0yNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIE1ha2UtbGFuZy5pbjogTW92ZSBhbGwgYnVpbGQgcnVsZXMgaGVyZSBmcm9tIE1ha2VmaWxlLmluLAoJYWRhcHQgdG8gbmV3IGNvbnRleHQuICBXcmFwIGFsbCBydWxlcyB0aGF0IGNoYW5nZSB0aGUgY3VycmVudAoJZGlyZWN0b3J5IGluIHBhcmVudGhlc2VzLiAgRXhwdW5nZSBhbGwgcmVmZXJlbmNlcyB0byAkKFApLgoJV2hlbiBvbmUgY29tbWFuZCBkZXBlbmRzIG9uIGFub3RoZXIgYW5kIHRoZXkncmUgcnVuIGFsbCBhdAoJb25jZSwgdXNlICYmIHRvIHNlcGFyYXRlIHRoZW0sIG5vdCA7LiAgQWRkIE9VVFBVVF9PUFRJT04gdG8KCWFsbCBvYmplY3QtZmlsZSBnZW5lcmF0aW9uIHJ1bGVzLiAgRGVsZXRlIG9ic29sZXRlIHZhcmlhYmxlcy4KCgkqIE1ha2VmaWxlLmluOiBEZWxldGUuCgkqIGNvbmZpZy1sYW5nLmluOiBEZWxldGUgb3V0cHV0cz0gbGluZS4KCjIwMDAtMTAtMjUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBOVUxMaWZ5IHRoaXNfYXJnIHdoZW4gYWxyZWFkeQoJaW5zZXJ0ZWQuCgkobWF5YmVfdXNlX2FjY2Vzc19tZXRob2QpOiBIYW5kbGUgY2FsbCB0byBtZXRob2RzIHVucmVsYXRlZCB0byB0aGUKCWN1cnJlbnQgY2xhc3MuIEZpeGVkIGNvbW1lbnQuCglGaXhlcyBnY2ovMzYxLgoKMjAwMC0xMC0yNCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgogICAgICAgKiBwYXJzZS5oIChJTk5FUl9FTkNMT1NJTkdfU0NPUEVfQ0hFQ0spOiBDaGVjayBpbmhlcml0ZWQgdHlwZSBpbgogICAgICAgc2NvcGUuCgoyMDAwLTEwLTI0ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBsZXguYyAoamF2YV9uZXdfbGV4ZXIpOiBJbml0aWFsaXplIG5ldyBmaWVsZHMuICBXb3JrIGFyb3VuZAoJYnJva2VuIGljb252KCkgaW1wbGVtZW50YXRpb25zLgoJKGphdmFfcmVhZF9jaGFyKTogU3dhcCBieXRlcyBpZiByZXF1aXJlZC4gIFVzZSBmYWxsYmFjayBkZWNvZGVyIGlmCglyZXF1aXJlZC4KCShieXRlc3dhcF9pbml0LCBuZWVkX2J5dGVzd2FwKTogTmV3IGdsb2JhbHMuCgkoamF2YV9kZXN0cm95X2xleGVyKTogT25seSBjbG9zZSBpY29udiBoYW5kbGUgaWYgaXQgaXMgaW4gdXNlLgoJKiBsZXguaCAoamF2YV9sZXhlcik6IE5ldyBmaWVsZHMgcmVhZF9hbnl0aGluZywgYnl0ZV9zd2FwLAoJdXNlX2ZhbGxiYWNrLgoJTWFkZSBvdXRfYnVmZmVyIHVuc2lnbmVkLgoKMjAwMC0xMC0yNCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChyZWdpc3Rlcl9pbmNvbXBsZXRlX3R5cGUpOiBJbmNsdWRlIEpERVBfRklFTEQgYXMgYSBjYXNlCgl3aGVyZSBhbiBlbmNsb3NpbmcgY29udGV4dCBjYW4gYmUgc2V0IG9uIHRoZSBqZGVwLgoJKGRvX3Jlc29sdmVfY2xhc3MpOiBGaXhlZCBpZGVudGF0aW9uLgoKMjAwMC0xMC0yMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZ2phdmFoLmMgKE5FRURfUEVFS19BVFRSSUJVVEUsIE5FRURfU0tJUF9BVFRSSUJVVEUpOiBEZWZpbmUKCgkqIGpjZi1yZWFkZXIuYyAocGVla19hdHRyaWJ1dGUsIHNraXBfYXR0cmlidXRlKTogT25seSBkZWZpbmUKCXdoZW4gcmVxdWVzdGVkLgoKCSogcGFyc2UuaCAoeXllcnJvcik6IElmIEpDMV9MSVRFLCBtYXJrIHdpdGggQVRUUklCVVRFX05PUkVUVVJOLgoKCSogdmVyaWZ5LmMgKENIRUNLX1BDX0lOX1JBTkdFKTogQ2FzdCByZXN1bHQgb2Ygc3RtdC1leHByIHRvIHZvaWQuCgoyMDAwLTEwLTE4ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGpjZi13cml0ZS5jIChPUDEpOiBVcGRhdGUgYGxhc3RfYmMnLgoJKHN0cnVjdCBqY2ZfYmxvY2spOiBGaXhlZCBpbmRlbnRhdGlvbiBhbmQgdHlwbyBpbiBjb21tZW50cy4gIE5ldwoJZmllbGQgYGxhc3RfYmMnLgoJKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogSW5zZXJ0IGBub3AnIGlmIGBqc3InIGltbWVkaWF0ZWx5Cglmb2xsb3dzIGBtb25pdG9yZW50ZXInLgoJKiBwYXJzZS55IChwYXRjaF9zeW5jaHJvbml6ZWRfc3RhdGVtZW50KTogTmV3IGxvY2FsIGB0bXAnLiBDYWxsCglgcGF0Y2hfc3RyaW5nJy4KCUZpeGVzIGdjai8yMzIuCgoyMDAwLTEwLTE2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBqdnNwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBSZWNvZ25pemUgLU1GIGFuZCAtTVQuCgkqIGxhbmctc3BlY3MuaDogQWRkZWQgJXtNQX0sICV7TUYqfSwgJXtNVCp9LgoJKiBsYW5nLW9wdGlvbnMuaDogQWRkZWQgLU1BLCAtTVQsIC1NRi4uCgkqIGxhbmcuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogUmVjb2duaXplIC1NQSwgLU1ULCAtTUYuCgkoREVQRU5EX1RBUkdFVF9TRVQpOiBOZXcgbWFjcm8uCgkoREVQRU5EX0ZJTEVfQUxSRUFEWV9TRVQpOiBMaWtld2lzZS4KCShpbml0X3BhcnNlKTogSGFuZGxlIG5ldyBmbGFncy4KCSogamNmLmggKGpjZl9kZXBlbmRlbmN5X3ByaW50X2R1bW1pZXMpOiBEZWNsYXJlLgoJKiBNYWtlLWxhbmcuaW4gKHMtamF2YSk6IEFkZGVkIG1rZGVwcy5vLgoJKiBNYWtlZmlsZS5pbiAoQkFDS0VORCk6IEFkZGVkIG1rZGVwcy5vLgoJKC4uL2djamgkKGV4ZWV4dCkpOiBBZGRlZCBta2RlcHMuby4KCSguLi9qY2YtZHVtcCQoZXhlZXh0KSk6IEFkZGVkIG1rZGVwcy5vLgoJKiBqY2YtZGVwZW5kLmM6IEluY2x1ZGUgbWtkZXBzLmguCgkoc3RydWN0IGVudHJ5LCBkZXBlbmRlbmNpZXMsIHRhcmdldHMsIE1BWF9PVVRQVVRfQ09MVU1OUywKCWFkZF9lbnRyeSk6IFJlbW92ZWQuCgkoamNmX2RlcGVuZGVuY3lfcmVzZXQpOiBSZXdyb3RlLgoJKGRlcGVuZGVuY2llcyk6IE5ldyBnbG9iYWwuCgkoamNmX2RlcGVuZGVuY3lfc2V0X3RhcmdldCk6IFJld3JvdGUuCgkoamNmX2RlcGVuZGVuY3lfYWRkX3RhcmdldCk6IExpa2V3aXNlLgoJKGpjZl9kZXBlbmRlbmN5X2FkZF9maWxlKTogTGlrZXdpc2UuCgkobXVuZ2UpOiBSZW1vdmVkLgoJKHByaW50X2VudHMpOiBSZW1vdmVkLgoJKGpjZl9kZXBlbmRlbmN5X3dyaXRlKTogUmV3cm90ZS4KCShwcmludF9kdW1taWVzKTogTmV3IGdsb2JhbC4KCShqY2ZfZGVwZW5kZW5jeV9wcmludF9kdW1taWVzKTogTmV3IGZ1bmN0aW9uCgkoamNmX2RlcGVuZGVuY3lfd3JpdGUpOiBDYWxsIGRlcHNfZHVtbXlfdGFyZ2V0cyBpZiByZXF1aXJlZC4KCjIwMDAtMTAtMTggIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKGFkZF9jbGFzc19kZWNsKTogUmVtb3ZlZCB1bnVzZWQgdmFyaWFibGVzIGB0bmFtZScsCglgdGxlbicgYW5kIGBuYW1lX2luZGV4Jy4KCSogamF2YS10cmVlLmggKEJVSUxEX0ZJTEVOQU1FX0lERU5USUZJRVJfTk9ERSk6IE5ldyBtYWNyby4KCSogamNmLXBhcnNlLmMgKGpjZl9wYXJzZV9zb3VyY2UpOiBVc2UgaXQgYW5kIHNldCBFWFBSX1dGTF9GSUxFTkFNRQoJaW4gYHdmbF9vcGVyYXRvcicgd2l0aCB2YWx1ZS4KCSh5eXBhcnNlKTogVXNlIEJVSUxEX0ZJTEVOQU1FX0lERU5USUZJRVJfTk9ERS4KCShqY2ZfZmlndXJlX2ZpbGVfdHlwZSk6IEZpeGVkIGlkZW50YXRpb24uCgkqIGxleC5jIChqYXZhX2dldF9saW5lX2NvbCk6IFVzZSBFT0YuIFR1bmVkIGBeJyBwbGFjZW1lbnQuCgkqIHBhcnNlLnkgKGFuYWx5emVfY2xpbml0X2JvZHkpOiBOZXcgZnVuY3Rpb24uCgkoc3RhdGljX2luaXRpYWxpemVyOik6IFJlc2V0IGBjdXJyZW50X3N0YXRpY19ibG9jaycuCgkoamF2YV9wYXJzZXJfY29udGV4dF9yZXN0b3JlX2dsb2JhbCk6IFNldCBFWFBSX1dGTF9GSUlMRU5BTUVfTk9ERSBpbgoJYHdmbF9vcGVyYXRvcicgd2l0aCBuZXcgdmFsdWUuCgkobG9va3VwX2NsKTogVXNlIEVYUFJfV0ZMX0ZJTEVOQU1FLgoJKG1heWJlX3lhbmtfY2xpbml0KTogSGFuZGxlIGJvZ3VzIDxjbGluaXQ+IGJvZGllcywgY2FsbAoJYW5hbHl6ZV9jbGluaXRfYm9keS4KCShidWlsZF9vdXRlcl9maWVsZF9hY2Nlc3MpOiBBY2Nlc3MgdG8gdGhpcyQ8bj4gYnVpbHQgZnJvbQoJY3VycmVudF9jbGFzcywgbm90IGl0cyBvdXRlciBjb250ZXh0LgoJKGJ1aWxkX2FjY2Vzc190b190aGlzbik6IEZpeGVkIGxlYWRpbmcgY29tbWVudC4gVGlkaWVkIHRoaW5ncyB1cC4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBIYW5kbGUgYFQudGhpcycgYW5kIGBULnRoaXMuZigpJy4KCShwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6IFVzZSBgaXNfc3RhdGljX2ZsYWcnIHdoZW4gYWxyZWFkeQoJaW5pdGlhbGl6ZWQuCgkocGF0Y2hfbmV3YXJyYXkpOiBSZW1vdmVkIGFzc2lnbm1lbnQgaW4gdGVybmFyeSBvcGVyYXRvci4KCjIwMDAtMTAtMTcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGZyZWVfZWhfcmFuZ2VzKTogRG9uJ3QgZnJlZSBgd2hvbGVfcmFuZ2UnLgoKMjAwMC0xMC0xNSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQ2FsbCBpbml0X2NsYXNzX3Byb2Nlc3NpbmcgYmVmb3JlCglhbnl0aGluZyBlbHNlLgoKMjAwMC0xMC0xMyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpOiBGaXhlZCBsZWFkaW5nIGNvbW1lbnQuIFVzZQoJTE9DQUxfRklOQUxfUC4KCSogZGVjbC5jIChwdXNoX2p2bV9zbG90KTogVXNlIE1BWUJFX0NSRUFURV9WQVJfTEFOR19ERUNMX1NQRUNJRklDLgoJKGdpdmVfbmFtZV90b19sb2NhbHMpOiBMaWtld2lzZS4KCShsYW5nX21hcmtfdHJlZSk6IEhhbmRsZSBGSUVMRF9ERUNMLiBSZWdpc3RlciBgYW0nIGFuZCBgd2ZsJwoJZmllbGRzIGluIGxhbmdfZGVjbF92YXIuCgkqIGphdmEtdHJlZS5oIChERUNMX0ZVTkNUSU9OX1NZTlRIRVRJQ19DVE9SLAoJREVDTF9GVU5DVElPTl9BTExfRklOQUxfSU5JVElBTElaRUQpOiBOZXcgbWFjcm9zLgoJKEZJRUxEX0lOTkVSX0FDQ0VTUyk6IFJlbW92ZWQgdWdseSBjYXN0LCBtYWNybyByZXdyaXR0ZW4uCgkoRklFTERfSU5ORVJfQUNDRVNTX1AsIERFQ0xfRklFTERfRklOQUxfSVVELCBERUNMX0ZJRUxEX0ZJTkFMX0xJSUMsCglERUNMX0ZJRUxEX0ZJTkFMX0lFUlIsIERFQ0xfRklFTERfRklOQUxfV0ZMKTogTmV3IG1hY3Jvcy4KCShMT0NBTF9GSU5BTCk6IFJld3JpdHRlbi4KCShMT0NBTF9GSU5BTF9QLCBGSU5BTF9WQVJJQUJMRV9QLCBDTEFTU19GSU5BTF9WQVJJQUJMRV9QCglNQVlCRV9DUkVBVEVfVkFSX0xBTkdfREVDTF9TUEVDSUZJQyk6IE5ldyBtYWNyb3MuCgkoc3RydWN0IGxhbmdfZGVjbCk6IEZpeGVkIGNvbW1lbnRzLiBBZGRlZCBgc3ludGhldGljX2N0b3InIGFuZAoJYGluaXRfZmluYWwnIGZpZWxkcy4KCShzdHJ1Y3QgbGFuZ19kZWNsX3Zhcik6IEZpeGVkIGxlYWRpbmcgY29tbWVudC4gQWRkZWQgYGFtJywgYHdmbCcsCglgZmluYWxfdWlkJywgYGZpbmFsX2xpaWMnLCBgZmluYWxfaWVycicgYW5kIGBsb2NhbF9maW5hbCcgZmllbGRzLgoJKFRZUEVfSEFTX0ZJTkFMX1ZBUklBQkxFKTogTmV3IG1hY3JvLgoJKHN0cnVjdCBsYW5nX3R5cGUpOiBBZGRlZCBgYWZ2JyBmaWVsZC4KCSogcGFyc2UueSAoY2hlY2tfc3RhdGljX2ZpbmFsX3ZhcmlhYmxlX2Fzc2lnbm1lbnRfZmxhZyk6IE5ldyBmdW5jdGlvbi4KCShyZXNldF9zdGF0aWNfZmluYWxfdmFyaWFibGVfYXNzaWdubWVudF9mbGFnKTogTGlrZXdpc2UuCgkoY2hlY2tfZmluYWxfdmFyaWFibGVfbG9jYWxfYXNzaWdubWVudF9mbGFnKTogTGlrZXdpc2UuCgkocmVzZXRfZmluYWxfdmFyaWFibGVfbG9jYWxfYXNzaWdubWVudF9mbGFnKTogTGlrZXdpc2UuCgkoY2hlY2tfZmluYWxfdmFyaWFibGVfaW5kaXJlY3RfYXNzaWdubWVudCk6IExpa2V3aXNlLgoJKGNoZWNrX2ZpbmFsX3ZhcmlhYmxlX2dsb2JhbF9hc3NpZ25tZW50X2ZsYWcpOiBMaWtld2lzZS4KCShhZGRfaW5uZXJfY2xhc3NfZmllbGRzKTogVXNlIExPQ0FMX0ZJTkFMX1AuCgkocmVnaXN0ZXJfZmllbGRzKTogSGFuZGxlIGxvY2FsIGZpbmFscyBhbmQgZmluYWwgdmFyaWFibGVzLgoJKGNyYWZ0X2NvbnN0cnVjdG9yKTogU2V0IERFQ0xfRlVOQ1RJT05fU1lOVEhFVElDX0NUT1IuCgkoZGVjbGFyZV9sb2NhbF92YXJpYWJsZXMpOiBDYWxsIE1BWUJFX0NSRUFURV9WQVJfTEFOR19ERUNMX1NQRUNJRklDLgoJKHNvdXJjZV9zdGFydF9qYXZhX21ldGhvZCk6IENhbGwgTUFZQkVfQ1JFQVRFX1ZBUl9MQU5HX0RFQ0xfU1BFQ0lGSUMKCW9uIGxvY2FsIGZpbmFscy4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzKTogTG9vcCB0byBzZXQKCVRZUEVfSEFTX0ZJTkFMX1ZBUklBQkxFLiBDYWxsCglgcmVzZXRfZmluYWxfdmFyaWFibGVfbG9jYWxfYXNzaWdubWVudF9mbGFnJyBhbmQKCWBjaGVja19maW5hbF92YXJpYWJsZV9sb2NhbF9hc3NpZ25tZW50X2ZsYWcnIGFjY29yZGluZ2x5IGJlZm9yZQoJYW5kIGFmdGVyIGNvbnN0cnVjdG9yIGV4cGFuc2lvbi4gQ2FsbAoJYHJlc2V0X3N0YXRpY19maW5hbF92YXJpYWJsZV9hc3NpZ25tZW50X2ZsYWcnCgliZWZvcmUgZXhwYW5kaW5nIDxjbGluaXQ+IGFuZCBhZnRlciBjYWxsCglgY2hlY2tfc3RhdGljX2ZpbmFsX3ZhcmlhYmxlX2Fzc2lnbm1lbnRfZmxhZycgaWYgdGhlCgljdXJyZW50X2NsYXNzIGlzbid0IGFuIGludGVyZmFjZS4gQWZ0ZXIgYWxsIG1ldGhvZHMgaGF2ZSBiZWVuCglleHBhbmRlZCwgY2FsbCBgY2hlY2tfZmluYWxfdmFyaWFibGVfZ2xvYmFsX2Fzc2lnbm1lbnRfZmxhZycgYW5kCglgY2hlY2tfc3RhdGljX2ZpbmFsX3ZhcmlhYmxlX2Fzc2lnbm1lbnRfZmxhZycgaWYgdGhlIGN1cnJlbnQgY2xhc3MKCWlzIGFuIGludGVyZmFjZS4KCShtYXliZV95YW5rX2NsaW5pdCk6IEZpeGVkIHR5cG8gaW4gY29tbWVudC4KCShidWlsZF9vdXRlcl9maWVsZF9hY2Nlc3NfbWV0aG9kcyk6IFJlbW92ZWQgb2xkIHNhbml0eSBjaGVjay4gVXNlCglGSUVMRF9JTk5FUl9BQ0NFU1NfUC4gQ2FsbCBNQVlCRV9DUkVBVEVfVkFSX0xBTkdfREVDTF9TUEVDSUZJQy4KCURvbid0IGNyZWF0ZSBhY2Nlc3MgbWV0aG9kcyBmb3IgZmluYWxzLgoJKHJlc29sdmVfZmllbGRfYWNjZXNzKTogVXNlIGBDTEFTU19GSU5BTF9WQVJJQUJMRV9QJy4KCShqYXZhX2NvbXBsZXRlX3RyZWUpOiBMaWtld2lzZS4gUmVzZXQgREVDTF9GSUVMRF9GSU5BTF9JVUQgaWYKCWV4aXN0aW5nIERFQ0xfSU5JVCBoYXMgYmVlbiBwcm9jZXNzZWQuCgkoamF2YV9jb21wbGV0ZV9saHMpOiBMaWtld2lzZS4KCShjaGVja19maW5hbF9hc3NpZ25tZW50KTogRmlsdGVyIGlucHV0IG9uIGBsdmFsdWUnJ3MgVFJFRV9DT0RFLgoJVGVzdCBmb3IgQ09NUE9ORU5UX1JFRiB0byBnZXQgdG8gdGhlIEZJRUxEX0RFQ0wuIEltcGxlbWVudGVkIG5ldwoJbG9naWMuCgkocGF0Y2hfYXNzaWdubWVudCk6IFVzZSBMT0NBTF9GSU5BTF9QLgoJKGZvbGRfY29uc3RhbnRfZm9yX2luaXQpOiBSZXNldCBERUNMX0ZJRUxEX0ZJTkFMX0lVRCBpZgoJREVDTF9JTklUSUFMIGlzIG51bGxpZmllZC4KCUZpeGVzIGdjai8xNjMuCgoyMDAwLTEwLTEzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlLWxhbmcuaW4gKHBhcnNlLmMsIHBhcnNlLXNjYW4uYyk6IENyZWF0ZSBhdG9taWNhbGx5LgoKCSogTWFrZWZpbGUuaW4gKHBhcnNlLmMsIHBhcnNlLXNjYW4uYyk6IExpa2V3aXNlLgoKMjAwMC0xMC0xMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKHRlbXBvcmFyeV9vYnN0YWNrKTogUmVtb3ZlLgoJKG1ha2VfY2xhc3MpOiBEb24ndCBtZXNzIHdpdGggb2JzdGFzY2tzLgoJKHB1c2hfY2xhc3MpOiBMaWtld2lzZS4KCShzZXRfc3VwZXJfaW5mbyk6IExpa2V3aXNlLgoJKGFkZF9tZXRob2RfMSk6IExpa2V3aXNlLgoJKGFkZF9tZXRob2QpOiBMaWtld2lzZS4KCShhZGRfZmllbGQpOiBMaWtld2lzZS4KCShidWlsZF91dGY4X3JlZik6IExpa2V3aXNlLgoJKGJ1aWxkX2NsYXNzX3JlZik6IExpa2V3aXNlLgoJKGJ1aWxkX3N0YXRpY19maWVsZF9yZWYpOiBMaWtld2lzZS4KCShmaW5pc2hfY2xhc3MpOiBMaWtld2lzZS4KCShwdXNoX3N1cGVyX2ZpZWxkKTogTGlrZXdpc2UuCgkobGF5b3V0X2NsYXNzKTogTGlrZXdpc2UuCgkobGF5b3V0X2NsYXNzX21ldGhvZHMpOiBMaWtld2lzZS4KCShpbml0X2NsYXNzX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCSogY29uc3RhbnRzLmMgKGdldF90YWdfbm9kZSk6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbnN0YW50X2RhdGFfcmVmKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoZ2djX3ApOiBSZW1vdmUuCgkoY29weV9sYW5nX2RlY2wpOiBVc2UgZ2djX2FsbG9jLgoJKGNvbXBsZXRlX3N0YXJ0X2phdmFfbWV0aG9kKTogRG9uJ3QgbWVzcyB3aXRoIG9ic3RhY2tzLgoJKHN0YXJ0X2phdmFfbWV0aG9kKTogTGlrZXdpc2UuCgkoZW5kX2phdmFfbWV0aG9kKTogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jIChsaW5rX2hhbmRsZXIpOiBVc2UgeG1hbGxvYy4KCShmcmVlX2VoX3Jhbmdlcyk6IE5ldyBmdW5jdGlvbi4KCShtZXRob2RfaW5pdF9leGNlcHRpb25zKTogVXNlIGl0LgoJKGFkZF9oYW5kbGVyKTogVXNlIHhtYWxsb2MuCgkoZXhwYW5kX3N0YXJ0X2phdmFfaGFuZGxlcik6IERvbid0IG1lc3Mgd2l0aCBvYnN0YWNrcy4KCShwcmVwYXJlX2VoX3RhYmxlX3R5cGUpOiBMaWtld2lzZS4KCShleHBhbmRfZW5kX2phdmFfaGFuZGxlcik6IExpa2V3aXNlLgoJKiBleHByLmMgKHB1c2hfdmFsdWUpOiBMaWtld2lzZS4KCShjcmVhdGVfbGFiZWxfZGVjbCk6IExpa2V3aXNlLgoJKGJ1aWxkX2puaV9zdHViKTogTGlrZXdpc2UuCgkoamF2YV9sYW5nX2V4cGFuZF9leHByKTogTGlrZXdpc2UuCgkobm90ZV9pbnN0cnVjdGlvbnMpOiBVc2UgeHJlYWxsb2MuCgkoamF2YV9wdXNoX2NvbnN0YW50X2Zyb21fcG9vbCk6IERvbid0IG1lc3Mgd2l0aCBvYnN0YWNrcy4KCShwcm9jZXNzX2p2bV9pbnN0cnVjdGlvbik6IExpa2V3aXNlLgoJKiBqYXZhLXRyZWUuaCAoY3ljbGljX2luaGVyaXRhbmNlX3JlcG9ydCk6IFJlbW92ZSBkdXBsaWNhdGUKCWRlY2xhcmF0aW9uLgoJKiBqY2YtcGFyc2UuYyAoZ2V0X2NvbnN0YW50KTogRG9uJ3QgbWVzcyB3aXRoIG9ic3RhY2tzLgoJKHJlYWRfY2xhc3MpOiBMaWtld2lzZS4KCShqY2ZfcGFyc2UpOiBMaWtld2lzZS4KCSogbGV4LmMgKGV4cHJlc3Npb25fb2JzdGFjayk6IFJlbW92ZS4KCShqYXZhX2xleCk6IERvbid0IHVzZSBvYnN0YWNrX2ZyZWUuCgkqIHBhcnNlLmggKGV4aXRfamF2YV9jb21wbGV0ZV9jbGFzcyk6IERvbid0IG1lc3Mgd2l0aCBvYnN0YWNrcy4KCShNQU5HTEVfT1VURVJfTE9DQUxfVkFSSUFCTEVfTkFNRSk6IEFkanVzdC4KCShNQU5HTEVfQUxJQVNfSU5JVElBTElaRVJfUEFSQU1FVEVSX05BTUVfSUQpOiBMaWtld2lzZS4KCShNQU5HTEVfQUxJQVNfSU5JVElBTElaRVJfUEFSQU1FVEVSX05BTUVfU1RSSU5HKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKGdhb2wpOiBBZGQgbW9yZSBHQyByb290cy4KCShhZGRfaW5uZXJfY2xhc3NfZmllbGRzKTogQWRqdXN0IGNhbGxzIHRvIE1BTkdMRV8qIG1hY3Jvcy4KCShsb29rdXBfZmllbGRfd3JhcHBlcik6IExpa2V3aXNlLgoJKG9idGFpbl9pbmNvbXBsZXRlX3R5cGUpOiBEb24ndCBtZXNzIHdpdGggb2JzdGFja3MuCgkoYnVpbGRfYWxpYXNfaW5pdGlhbGl6ZXJfcGFyYW1ldGVyX2xpc3QpOiBBZGp1c3QgY2FsbHMgdG8gTUFOR0xFXyoKCW1hY3Jvcy4KCShjcmFmdF9jb25zdHJ1Y3Rvcik6IERvbid0IG1lc3Mgd2l0aCBvYnN0YWNrcy4KCShzYWZlX2xheW91dF9jbGFzcyk6IExpa2V3aXNlLgoJKGphdmFfY29tcGxldGVfY2xhc3MpOiBMaWtld2lzZS4KCShzb3VyY2VfZW5kX2phdmFfbWV0aG9kKTogTGlrZXdpc2UuCgkoYnVpbGRfb3V0ZXJfZmllbGRfYWNjZXNzX21ldGhvZHMpOiBMaWtld2lzZS4KCShidWlsZF9vdXRlcl9tZXRob2RfYWNjZXNzX21ldGhvZCk6IExpa2V3aXNlLgoJKG1heWJlX2J1aWxkX3RoaXNuX2FjY2Vzc19tZXRob2QpOiBMaWtld2lzZS4KCShidWlsZF9kb3RfY2xhc3NfbWV0aG9kX2ludm9jYXRpb24pOiBMaWtld2lzZS4KCShqYXZhX2NvbXBsZXRlX3RyZWUpOiBMaWtld2lzZS4KCShqYXZhX2NvbXBsZXRlX2xocyk6IExpa2V3aXNlLgoJKGRvX21lcmdlX3N0cmluZ19jc3RlKTogTGlrZXdpc2UuCgkocGF0Y2hfc3RyaW5nX2NzdCk6IExpa2V3aXNlLgoJKGFycmF5X2NvbnN0cnVjdG9yX2NoZWNrX2VudHJ5KTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChidWlsZF9qYXZhX2FycmF5X3R5cGUpOiBMaWtld2lzZS4KCShwYXJzZV9zaWduYXR1cmVfc3RyaW5nKTogTGlrZXdpc2UuCgkoYnVpbGRfamF2YV9zaWduYXR1cmUpOiBMaWtld2lzZS4KCjIwMDAtMTAtMTIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCglGaXggZm9yIFBSIGdjai8zNTY6CgkqIGdqYXZhaC5jIChhZGRfY2xhc3NfZGVjbCk6IERvbid0IHNwZWNpYWwtY2FzZSBpbm5lciBjbGFzc2VzLgoJKGFkZF9uYW1lbGV0KTogTGlrZXdpc2UuCgoyMDAwLTEwLTExICBSb2RuZXkgQnJvd24gIDxSb2RuZXlCcm93bkBteW5kLmNvbT4KCgkqIGphdmEtdHJlZS5oOiBDb25zdGlmeSBjdXJyZW50X2VuY29kaW5nLgoJKiBsYW5nLmM6IENvbnN0aWZ5IGN1cnJlbnRfZW5jb2RpbmcuCgoyMDAwLTEwLTEwICBKZWZmIFN0dXJtICA8amVmZi5zdHVybUBhcHBuZXQuY29tPgoKCSoganZnZW5tYWluLmMgKGNsYXNzX21hbmdsaW5nX3N1ZmZpeCk6IE9taXQgYC4nLgoJKG1haW4pOiBVc2UgYCQnIHdoZW4gTk9fRE9MTEFSX0lOX0xBQkVMIGlzIG5vdCBzZXQsIG90aGVyd2lzZSBgLicuCgoyMDAwLTEwLTEwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoamF2YV9sYW5nX2V4cGFuZF9leHByKTogUmVpbnN0YWxsIDE5OTktMDgtMTQgQW50aG9ueSdzCglwYXRjaC4gRml4ZXMgZ2NqLzM0MC4KCjIwMDAtMTAtMTAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGxleC5jIChqYXZhX25ld19sZXhlcik6IEluaXRpYWxpemUgb3V0X2ZpcnN0IGFuZCBvdXRfbGFzdAoJZmllbGRzLgoJKiBsZXguaCAoamF2YV9sZXhlcik6IEFkZGVkIG91dF9idWZmZXIsIG91dF9maXJzdCwgb3V0X2xhc3QuCgoyMDAwLTEwLTA5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHBvcF9jdXJyZW50X29zYik6IE5ldyBmdW5jdGlvbi4KCShhcnJheV90eXBlOik6IFVzZSBgZGltczonLCBjaGFuZ2VkIGFjdGlvbnMKCWFjY29yZGluZ2x5LiBTdWdnZXN0ZWQgYnkgQW50aG9ueSBHcmVlbi4KCShhcnJheV9jcmVhdGlvbl9leHByZXNzaW9uOik6IFVzZWQgcG9wX2N1cnJlbnRfb3NiLgoJKGNhc3RfZXhwcmVzc2lvbjopOiBMaWtld2lzZS4KCShzZWFyY2hfYXBwbGljYWJsZV9tZXRob2RfbGlzdCk6IEZpeGVkIGluZGVudGF0aW9uLgoKMjAwMC0xMC0wOCAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChhcnJheV90eXBlX2xpdGVyYWwpOiBSZW1vdmUgcHJvZHVjdGlvbi4KCSh0eXBlX2xpdGVyYWxzKTogUmVmZXIgdG8gYXJyYXlfdHlwZSwgbm90IGFycmF5X3R5cGVfbGl0ZXJhbC4KCjIwMDAtMTAtMDcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCVBhdGNoIGNvbnRyaWJ1dGVkIGJ5IENvcmV5IE1pbnlhcmQuCgkqIGRlY2wuYyAoY2hlY2tfbG9jYWxfbmFtZWRfdmFyaWFibGUpOiBOZXcgZnVuY3Rpb24uCgkodHJlZSBjaGVja19sb2NhbF91bm5hbWVkX3ZhcmlhYmxlKTogTGlrZXdpc2UuCgkoZmluZF9sb2NhbF92YXJpYWJsZSk6IFNwbGl0dGVkLiBDYWxsIGNoZWNrX2xvY2FsX3t1bn1uYW1lZF92YXJpYWJsZS4KCjIwMDAtMTAtMDcgIEFudGhvbnkgR3JlZW4gIDxncmVlbkByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAobGF5b3V0X2NsYXNzKTogSGFuZGxlIGNhc2Ugd2hlcmUgc3VwZXJjbGFzcyBjYW4ndCBiZQoJbGF5ZWQgb3V0IHlldC4KCjIwMDAtMTAtMDcgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIE1ha2VmaWxlLmluIChrZXl3b3JkLmgpOiBSZWZlciB0byBHTlUgRlRQIHNpdGUgZm9yIHVwZGF0ZWQKCWdwZXJmLgoKMjAwMC0xMC0wNSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSoganZzcGVjLmMgKGp2Z2VubWFpbl9zcGVjKTogQWRkZWQgYC1mZG9sbGFycy1pbi1pZGVudGlmaWVycycuCgkqIGp2Z2VubWFpbi5jIChjbGFzc19tYW5nbGluZ19wcmVmaXgpOiBSZW1vdmVkLgoJKGNsYXNzX21hbmdsaW5nX3N1ZmZpeCk6IE5ldyBnbG9iYWwuCgkobWFpbik6IFVzZSBpdC4KCSogZ2phdmFoLmMgKGN4eF9rZXl3b3JkX3N1YnN0KTogTWFuZ2xlIEMrKyBrZXl3b3JkcyBieSBhcHBlbmRpbmcKCWAkJy4KCShwcmludF9tZXRob2RfaW5mbyk6IEhhbmRsZSBvdmVycmlkZXMgZm9yIHN0YXRpYyBhbmQgZmluYWwKCW1ldGhvZHMuCgkocHJvY2Vzc19maWxlKTogR2VuZXJhdGUgZGVjbGFyYXRpb24gZm9yIGNsYXNzIG9iamVjdCBmaWVsZC4KCSogY2xhc3MuYyAoY3h4X2tleXdvcmRzKTogTmV3IGFycmF5LgoJKHV0ZjhfY21wKTogTmV3IGZ1bmN0aW9uLgoJKGN4eF9rZXl3b3JkX3ApOiBOZXcgZnVuY3Rpb24uCgkobGF5b3V0X2NsYXNzX21ldGhvZCk6IE1hbmdsZSBDKysga2V5d29yZHMgYnkgYXBwZW5kaW5nIGAkJy4KCShtYW5nbGVfZmllbGQpOiBOZXcgZnVuY3Rpb24uCgkobWFuZ2xlX2NsYXNzX2ZpZWxkKTogVXNlIG1hbmdsZV9maWVsZC4gIE1hbmdsZSBjbGFzcyBuYW1lIGFzCglgY2xhc3MkJy4KCShtYW5nbGVfc3RhdGljX2ZpZWxkKTogVXNlIG1hbmdsZV9maWVsZC4KCjIwMDAtMTAtMDMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogZGVjbC5jIChmaW5kX2xvY2FsX3ZhcmlhYmxlKTogUmVtb3ZlZCB1bmNlc3NhcnkgdHlwZSBjaGVjayBhbmQKCWZpeGVkIHJhbmdlIGNoZWNrIHR5cG8uIEZyb20gQ29yZXkgTWlueWFyZC4KCjIwMDAtMDktMTMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogZGVjbC5jIChnaXZlX25hbWVfdG9fbG9jYWxzKTogTmV3IGxvY2FsIGBjb2RlX29mZnNldCcuIENhbGwKCWBtYXliZV9hZGp1c3Rfc3RhcnRfcGMnLgoJKiBleHByLmMgKG5vdGVfaW5zdHJ1Y3Rpb25zKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9ieXRlX2NvZGUpOiBEb24ndCBjb2xsZWN0IGluc24gc3RhcnRzIGhlcmUuCgkocGVla19vcGNvZGVfYXRfcGMpOiBOZXcgZnVuY3Rpb24uCgkobWF5YmVfYWRqdXN0X3N0YXJ0X3BjKTogTGlrZXdpc2UuCgkqIGphdmEtdHJlZS5oIChtYXliZV9hZGp1c3Rfc3RhcnRfcGMpOiBEZWNsYXJlLgoJKG5vdGVfaW5zdHJ1Y3Rpb25zKTogTGlrZXdpc2UuCgkqIGpjZi1wYXJzZS5jIChwYXJzZV9jbGFzc19maWxlKTogQ2FsbCBgbm90ZV9pbnN0cnVjdGlvbnMnLgoKMjAwMC0wOS0xMyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChmaWVsZF9hY2Nlc3M6KTogRml4ZWQgaW5kZW50YXRpb24uCgkocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IFByb3Blcmx5IHF1YWxpZnkgYHRoaXMuYVtiXS5jJy4KCjIwMDAtMDktMDcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCglGaXggZm9yIFBSIGdjai8zMDc6CgkqIHBhcnNlLnkgKHBhdGNoX2Jpbm9wKTogVXNlIEpOVU1FUklDX1RZUEVfUCwgbm90CglKUFJJTUlUSVZFX1RZUEVfUCwgZm9yIGFyaXRobWV0aWMgb3BlcmF0b3JzLgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogSW5kZW50YXRpb24gZml4LgoJKHRyeV9idWlsdGluX2Fzc2lnbmNvbnYpOiBIYW5kbGUgYm9vbGVhbiBzcGVjaWFsbHkuICBGaXhlZCB0eXBvLgoJKHZhbGlkX2J1aWx0aW5fYXNzaWduY29udl9pZGVudGl0eV93aWRlbmluZ19wKTogSGFuZGxlIGJvb2xlYW4uCgkoZG9fdW5hcnlfbnVtZXJpY19wcm9tb3Rpb24pOiBDbGVhbmVkIHVwIGNvZGUuCgkodmFsaWRfY2FzdF90b19wKTogSGFuZGxlIGJvb2xlYW4gY29ycmVjdGx5LgoKMjAwMC0wOS0yNyAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogbGV4LmMgKGphdmFfcmVhZF91bmljb2RlKTogUmVzZXQgYnNfY291bnQgd2hlbiBmaW5pc2hlZCB3aXRoCglgXHUnIHNlcXVlbmNlLgoKMjAwMC0xMC0wMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglDb252ZXJ0IHRvIEdDLgoJKiBNYWtlLWxhbmcuaW4gKHMtamF2YSk6IERvbid0IGRlcGVuZCBvbiBnZ2MtY2FsbGJhY2tzLm8uCgkqIE1ha2VmaWxlLmluIChCQUNLRU5EKTogRG9uJ3QgaW5jbHVkZSBnZ2MtY2FsbGJhY2tzLm8uCgkodHlwZWNrLm8pOiBEZXBlbmQgb24gZ2djLmguCgkqIGNsYXNzLmMgKGFkZF9tZXRob2RfMSk6IFVzZSBHQyBmdW5jdGlvbnMgZm9yIGFsbG9jYXRpb24uCgkoaW5pdF9jbGFzc19wcm9jZXNzaW5nKTogUmVnaXN0ZXIgcm9vdHMuCgkqIGRlY2wuYyAoZ2djX3ApOiBTZXQgdG8gMS4KCShwZW5kaW5nX2xvY2FsX2RlY2xzKTogTWFrZSBpdCBzdGF0aWMuCgkocHVzaF9qdm1fc2xvdCk6IFVzZSBHQyBmdW5jdGlvbnMgZm9yIGFsbG9jYXRpb24uCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBSZWdpc3RlciByb290cy4KCShnaXZlX25hbWVfdG9fbG9jYWxzKTogVXNlIEdDIGZ1bmN0aW9ucyBmb3IgYWxsb2NhdGlvbi4KCShsYW5nX21hcmtfdHJlZSk6IE5ldyBmdW5jdGlvbi4KCSogamF2YS10cmVlLmggKE1BWUJFX0NSRUFURV9UWVBFX1RZUEVfTEFOR19TUEVDSUZJQyk6IFVzZSBHQwoJZnVuY3Rpb25zIGZvciBhbGxvY2F0aW9uLgoJKiBqY2YtcGFyc2UuYyAoamNmX3BhcnNlX3NvdXJjZSk6IFVzZSBnZ2Nfc3RyZHVwLgoJKiBsZXguYyAoamF2YV9sZXgpOiBVc2UgYnVpbGRfc3RyaW5nLCByYXRoZXIgdGhhbiByZXBsaWNhdGluZyBpdAoJaW5saW5lLgoJKiBwYXJzZS55IChnb2FsKTogQWRkIG1vcmUgcm9vdHMuCgkobWFya19wYXJzZXJfY3R4dCk6IE5ldyBmdW5jdGlvbi4KCSogdHlwZWNrLmM6IEluY2x1ZGUgZ2djLmguCgoyMDAwLTA5LTI5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKG1heWJlX3lhbmtfY2xpbml0KTogQWxzbyBrZWVwIDxjbGluaXQ+IGlmIGl0cyBib2R5Cgljb250YWlucyBzb21ldGhpbmcgZWxzZSB0aGFuIE1PRElGWV9FWFBSLgoKMjAwMC0wOS0yMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoSkFWQV9TUkNTKTogSW5jbHVkZSBqYXZhLXRyZWUuaC4KCSogTWFrZWZpbGUuaW4gKHBhcnNlLm8pOiBEZXBlbmQgb24gZ2djLmguCgkoY2xhc3Mubyk6IExpa2V3aXNlLgoJKGNvbnN0YW50cy5vKTogTGlrZXdpc2UuCgkoZGVjbC5vKTogTGlrZXdpc2UuCgkoZXhwci5vKTogTGlrZXdpc2UuCgkoamNmLXBhcnNlLm8pOiBMaWtld2lzZS4KCShqY2Ytd3JpdGUubyk6IExpa2V3aXNlLgoJKG1hbmdsZS5vKTogTGlrZXdpc2UuCgkqIGNsYXNzLmM6IEluY2x1ZGUgZ2djLmguCgkoYnVpbGRfc3RhdGljX2ZpZWxkX3JlZik6IFJlZ2lzdGVyIEdDIHJvb3RzLgoJKGxheW91dF9jbGFzcyk6IExpa2V3aXNlLgoJKGluaXRfY2xhc3NfcHJvY2Vzc2luZyk6IExpa2V3aXNlLgoJKiBjb25zdGFudHMuYzogSW5jbHVkZSBnZ2MuaC4KCShjdXJyZW50X2NvbnN0YW50X3Bvb2xfZGF0YV9yZWYpOiBSZW1vdmUuCgkodGFnX25vZGVzKTogTW92ZSBpdCB0byAuLi4KCShnZXRfdGFnX25vZGUpOiAuLi4gaGVyZS4gIFJlZ2lzdGVyIEdDIHJvb3RzLgoJKiBkZWNsLmM6IEluY2x1ZGUgZ2djLmguICBSZW1vdmUgbWFueSBnbG9iYWwgdHJlZSBkZWZpbml0aW9ucy4KCSh0aHJvd19ub2RlKTogRGVmaW5lLgoJKGphdmFfZ2xvYmFsX3RyZWVzKTogTGlrZXdpc2UuCgkocHJlZGVmX2ZpbGVuYW1lcyk6IE1ha2UgdGhlIHNpemUgYSBjb25zdGFudC4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFkanVzdCBhY2NvcmRpbmdseS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IENhbGwgaW5pdF9qY2ZfcGFyc2UuICBSZWdpc3RlciBHQyByb290cy4KCSogZXhwci5jOiBJbmNsdWRlIGdnYy5oLgoJKGluaXRfZXhwcl9wcm9jZXNzaW5nKTogUmVnaXN0ZXIgR0Mgcm9vdHMuCgkoYnVpbGRfaW52b2tlaW50ZXJmYWNlKTogTGlrZXdpc2UuCgkqIGphdmEtdHJlZS5oOiBSZXBsYWNlIGV4dGVybiB0cmVlIGRlY2xhcmF0aW9ucyB3aXRoIG1hY3Jvcy4KCShqYXZhX2dsb2JhbF90cmVlcyk6IE5ldyB2YXJpYWJsZS4KCShqYXZhX3RyZWVfaW5kZXgpOiBOZXcgZW51bWVyYXRpb24uCgkoaW5pdF9qY2ZfcGFyc2UpOiBEZWNsYXJlLgoJKiBqY2YtcGFyc2UuYzogSW5jbHVkZSBnZ2MuaC4KCShjdXJyZW50X2NsYXNzKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKG1haW5fY2xhc3MpOiBMaWtld2lzZS4KCShhbGxfY2xhc3NfbGlzdCk6IExpa2V3aXNlLgoJKHByZWRlZmluZWRfZmlsZW5hbWVfcCk6IEFkanVzdCBmb3IgY29uc3RhbnQgc2l6ZSBvZgoJcHJlZGVmX2ZpbGVuYW1lcy4KCShpbml0X2pjZl9wYXJzZSk6IE5ldyBmdW5jdGlvbi4KCSogamNmLXdyaXRlLmM6IEluY2x1ZGUgZ2djLmguCgkoZ2VuZXJhdGVfY2xhc3NmaWxlKTogUmVnaXN0ZXIgR0Mgcm9vdHMuCgkoYXBwZW5kX3N5bnRoZXRpY19hdHRyaWJ1dGUpOiBMaWtld2lzZS4KCShhcHBlbmRfaW5uZXJjbGFzc19hdHRyaWJ1dGVfZW50cnkpOiBMaWtld2lzZS4KCSogbGFuZy5jOiBJbmNsdWRlIGdnYy5oLgoJKGxhbmdfcHJpbnRfZXJyb3IpOiBSZWdpc3RlciBHQyByb290cy4KCSogcGFyc2UuaCAoc3RydWN0IHBhcnNlcl9jdHh0KTogUmVuYW1lIGZpZWxkcyB0byBhdm9pZCBjb25mbGljdHMKCXdpdGggbWFjcm9zLgoJKiBwYXJzZS55OiBJbmNsdWRlIGdnYy5oLgoJKHdmbF9vcGVyYXRvcik6IFJlbW92ZS4KCShnb2FsKTogUmVnaXN0ZXIgR0Mgcm9vdHMuCgkoamF2YV9wb3BfcGFyc2VyX2NvbnRleHQpOiBBZGp1c3QgZm9yIG5ldyBmaWVsZCBuYW1lcy4KCShqYXZhX3BhcnNlcl9jb250ZXh0X3NhdmVfZ2xvYmFsKTogTGlrZXdzZS4KCShqYXZhX3BhcnNlcl9jb250ZXh0X3Jlc3RvcmVfZ2xvYmFsKTogTGlrZXdpc2UuCgkoamF2YV9wYXJzZXJfY29udGV4dF9zdXNwZW5kKTogTGlrZXdpc2UuCgkoamF2YV9wYXJzZXJfY29udGV4dF9yZXN1bWUpOiBMaWtld2lzZS4KCSh2ZXJpZnlfY29uc3RydWN0b3JfY2lyY3VsYXJpdHkpOiBSZWdpc3RlciBHQyByb290cy4KCShsb29rdXBfY2wpOiBMaWtld2lzZS4KCShqYXZhX3Jlb3JkZXJfZmllbGRzKTogTGlrZXdpc2UuCgkoYnVpbGRfY3VycmVudF90aGlzKTogTGlrZXdpc2UuCgkoY2xhc3NfaW5fY3VycmVudF9wYWNrYWdlKTogTGlrZXdpc2UuCgkoYXJndW1lbnRfdHlwZXNfY29udmVydGlibGUpOiBMaWtld2lzZS4KCShwYXRjaF9jYXN0KTogUmVuYW1lIHdmbF9vcCBwYXJhbWV0ZXIgdG8gYXZvaWQgbWFjcm8gY29uZmxpY3RzLgoKMjAwMC0wOS0xNCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogbGV4Lmg6IFVzZSBIQVZFX0lDT05WX0gsIG5vdCBIQVZFX0lDT05WLgoKMjAwMC0wOS0xMyAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogamNmLXBhcnNlLmM6IEluY2x1ZGUgPGxvY2FsZS5oPi4KCSoganYtc2Nhbi5jOiBJbmNsdWRlIDxsb2NhbGUuaD4uCgoyMDAwLTA5LTEyICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBleHByLmMgKHBvcF90eXBlXzApOiBSZXR1cm4gYE9iamVjdCcgaWYgdHJ5aW5nIHRvIG1lcmdlIHR3bwoJaW50ZXJmYWNlIHR5cGVzLgoJKiB2ZXJpZnkuYyAobWVyZ2VfdHlwZXMpOiBEb24ndCByZXR1cm4gYFRZUEVfVU5LTk9XTicgZm9yCglpbnRlcmZhY2UgdHlwZXM7IGBPYmplY3QnIGlzIGFsd2F5cyBhIHZhbGlkIHN1cGVydHlwZS4KCjIwMDAtMDktMTIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCglGaXggZm9yIFBSIGdjai8zMzoKCSoganYtc2Nhbi5jIChoZWxwKTogRG9jdW1lbnQgLS1lbmNvZGluZy4KCShvcHRpb25zKTogQWRkZWQgYGVuY29kaW5nJyBlbnRyeS4KCShPUFRfRU5DT0RJTkcpOiBOZXcgZGVmaW5lLgoJKG1haW4pOiBIYW5kbGUgLS1lbmNvZGluZy4KCUluY2x1ZGUgPGxhbmdpbmZvLmg+IGlmIG5sX2xhbmdpbmZvIGV4aXN0cy4KCSogbGFuZy1vcHRpb25zLmg6IERvY3VtZW50IC0tY2xhc3NwYXRoLCAtLUNMQVNTUEFUSCwgLS1tYWluLCBhbmQKCS0tZW5jb2RpbmcuCgkqIGpjZi1wYXJzZS5jIEluY2x1ZGUgPGxhbmdpbmZvLmg+IGlmIHdlIGhhdmUgbmxfbGFuZ2luZm8uCgkocGFyc2Vfc291cmNlX2ZpbGUpOiBDb3JyZWN0bHkgY2FsbCBqYXZhX2luaXRfbGV4LiAgQWRkZWQgYGZpbnB1dCcKCWFyZ3VtZW50LiAgVXNlIG5sX2xhbmdpbmZvIHRvIGRldGVybWluZSBkZWZhdWx0IGVuY29kaW5nLgoJKiBqYXZhLXRyZWUuaCAoY3VycmVudF9lbmNvZGluZyk6IERlY2xhcmUuCgkqIHBhcnNlLnkgKGphdmFfcGFyc2VyX2NvbnRleHRfcmVzdG9yZV9nbG9iYWwpOiBEb24ndCByZXN0b3JlCglgZmlucHV0Jy4KCShqYXZhX3BhcnNlcl9jb250ZXh0X3NhdmVfZ2xvYmFsKTogRG9uJ3Qgc2V0IGBmaW5wdXQnIGZpZWxkLgoJKGphdmFfcG9wX3BhcnNlcl9jb250ZXh0KTogRG9uJ3QgcmVzdG9yZSBgZmlucHV0Jy4gIEZyZWUgb2xkIGxleGVyCglpZiByZXF1aXJlZC4KCSogbGFuZy5jIChjdXJyZW50X2VuY29kaW5nKTogTmV3IGdsb2JhbC4KCShsYW5nX2RlY29kZV9vcHRpb24pOiBSZWNvZ25pemUgYC1mZW5jb2Rpbmc9Jy4KCShmaW5pc2hfcGFyc2UpOiBEb24ndCBjbG9zZSBmaW5wdXQuCgkqIHBhcnNlLmggKHN0cnVjdCBwYXJzZXJfY3R4dCk6IFJlbW92ZWQgYGZpbnB1dCcgYW5kCglgdW5nZXRfdXRmOF92YWx1ZScgZmllbGRzLiAgQWRkZWQgYGxleGVyJyBmaWVsZC4KCShqYXZhX2luaXRfbGV4KTogRml4ZWQgZGVjbGFyYXRpb24uCgkqIGxleC5jIChqYXZhX25ld19sZXhlcik6IE5ldyBmdW5jdGlvbi4KCShqYXZhX2Rlc3Ryb3lfbGV4ZXIpOiBMaWtld2lzZS4KCShqYXZhX3JlYWRfY2hhcik6IEFkZGVkIGBsZXgnIGFyZ3VtZW50LiAgSGFuZGxlIGljb252IGNhc2UuCgkoamF2YV9yZWFkX3VuaWNvZGUpOiBBZGRlZCBgbGV4JyBhcmd1bWVudC4gIENvdW50IGJhY2tzbGFzaGVzIGluCglsZXhlciBzdHJ1Y3R1cmUuCgkoamF2YV9pbml0X2xleCk6IEFkZGVkIGBmaW5wdXQnIGFuZCBgZW5jb2RpbmcnIGFyZ3VtZW50cy4gIFNldAoJYGxleGVyJyBmaWVsZCBpbiBjdHhwLgoJKEJBRF9VVEY4X1ZBTFVFKTogUmVtb3ZlZC4KCShqYXZhX2xleCk6IEhhbmRsZSBzZWVpbmcgVUVPRiBpbiB0aGUgbWlkZGxlIG9mIGEgc3RyaW5nIGxpdGVyYWwuCgkqIGxleC5oOiBJbmNsdWRlIDxpY29udi5oPiBpZiBIQVZFX0lDT05WIGRlZmluZWQuCgkoamF2YV9sZXhlcik6IE5ldyBzdHJ1Y3R1cmUuCgkoVU5HRVRDKTogUmVtb3ZlZC4KCShHRVRDKTogUmVtb3ZlZC4KCShERUZBVUxUX0VOQ09ESU5HKTogTmV3IGRlZmluZS4KCShqYXZhX2Rlc3Ryb3lfbGV4ZXIpOiBEZWNsYXJlLgoKMjAwMC0wOS0xMiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCUZpeCBmb3IgUFIgZ2NqLzM0MzoKCSogbGV4LmMgKGphdmFfaW5pdF9sZXgpOiBJbml0aWFsaXplIGphdmFfaW9fc2VyaWFsaXphYmxlLgoJKiBwYXJzZS55IChqYXZhX2lvX3NlcmlhbGl6YWJsZSk6IE5ldyBnbG9iYWwuCgkodmFsaWRfcmVmX2Fzc2lnbmNvbnZfY2FzdF9wKTogQW4gYXJyYXkgY2FuIGJlIGNhc3QgdG8KCXNlcmlhbGl6YWJsZS4KCjIwMDAtMDktMTAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGRlY2wuYywgZXhwci5jOiBJbmNsdWRlIGRlZmF1bHRzLmggaWYgbm90IGFscmVhZHkgaW5jbHVkZWQuCglEb24ndCBkZWZpbmUgdGhlICpfVFlQRV9TSVpFIG1hY3Jvcy4KCjIwMDAtMDktMDkgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9qYXZhX2FycmF5X3R5cGUpOiBDb3JyZWN0IGZpcnN0IHBhcmFtZXRlcgoJaW4gQURKVVNUX0ZJRUxEX0FMSUdOIGludm9jYXRpb24uCgoyMDAwLTA5LTA2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBsYW5nLXNwZWNzLmg6IEFsc28gcmVjb2duaXplIGAtZmVtaXQtY2xhc3MtZmlsZXMnLgoKMjAwMC0wOS0wNSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiB2ZXJpZnkuYyAobWVyZ2VfdHlwZXMpOiBMb2FkIHRoZSB0eXBlcyB0byBtZXJnZSBpZiBuZWNlc3NhcnkuCgoyMDAwLTA5LTAyICBBbnRob255IEdyZWVuICA8Z3JlZW5AcmVkaGF0LmNvbT4KCgkqIGpjZi1pby5jOiBJbmNsdWRlIHpsaWIuaC4KCShvcGVuX2luX3ppcCk6IFJlYWQgY29tcHJlc3NlZCBjbGFzcyBmaWxlIGFyY2hpdmVzLgoJKiB6aXBmaWxlLmggKFppcERpcmVjdG9yeSk6IEFkZCB1bmNvbXByZXNzZWRfc2l6ZSBhbmQKCWNvbXByZXNzaW9uX21ldGhvZCBmaWVsZHMuCgkqIHpleHRyYWN0LmMgKHJlYWRfemlwX2FyY2hpdmUpOiBDb2xsZWN0IGZpbGUgY29tcHJlc3Npb24gaW5mby4KCjIwMDAtMDgtMTUgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAYWxiYXRyb3NzLmNvLm56PgoKCSogcGFyc2UueSAoZG9fcmVzb2x2ZV9jbGFzcyk6IEFsc28gZXhwbG9yZSBzdXBlcmNsYXNzZXMgb2YKCWludGVybWVkaWF0ZSBlbmNsb3NpbmcgY29udGV4dHMgd2hlbiBzZWFyY2hpbmcgZm9yIGlubmVyIGNsYXNzZXMuCgoyMDAwLTA4LTExICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHZhcmlhYmxlX2RlY2xhcmF0b3JfaWQ6KTogQmV0dGVyIGVycm9yIG1lc3NhZ2UuCgkoZXhwcmVzc2lvbl9zdGF0ZW1lbnQ6KTogVXNlIFlZTk9UX1RXSUNFLgoJKGNhc3RfZXhwcmVzc2lvbjopOiBMaWtld2lzZS4KCShhc3NpZ25tZW50Oik6IExpa2V3aXNlLgoKMjAwMC0wOC0xMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChkb19tZXJnZV9zdHJpbmdfY3N0ZSk6IE5ldyBsb2NhbHMuIENyZWF0ZSBuZXcKCVNUUklOR19DU1RzIGVhY2ggdGltZSwgdXNlIG1lbWNweS4gRml4ZXMgZ2NqLzMxMS4KCjIwMDAtMDgtMDcgIEhhbnMgQm9laG0gIDxib2VobUBhY20ub3JnPgoKCSogYm9laG0uYyAobWFya19yZWZlcmVuY2VfZmllbGRzKTogU2V0IG1hcmtpbmcgYml0cyBmb3IgYWxsIHdvcmRzIGluCglhIG11bHRpcGxlLXdvcmQgcmVjb3JkLgoJKGdldF9ib2VobV90eXBlX2Rlc2NyaXB0b3IpOiBVc2UgdGhlIHByb2NlZHVyZSBtYXJraW5nIGRlc2NyaXB0b3IgZm9yCglqYXZhLmxhbmcuQ2xhc3MuCgoyMDAwLTA4LTMxICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGpjMSQoZXhlZXh0KSwgZ2NqaCQoZXhlZXh0KSwganYtc2NhbiQoZXhlZXh0KSwKCWpjZi1kdW1wJChleGVleHQpKTogTWFrZSBwYXJhbGxlbCBzYWZlLgoKMjAwMC0wOC0yOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogamNmLXBhcnNlLmMgKHNldF9zb3VyY2VfZmlsZW5hbWUpOiBDb25zdGlmeSBhIGNoYXIgKi4KCSogamNmLXdyaXRlLmMgKGFwcGVuZF9pbm5lcmNsYXNzZXNfYXR0cmlidXRlLAoJbWFrZV9jbGFzc19maWxlX25hbWUpOiBDb25zdGlmeSBhIGNoYXIgKi4gIERvbid0IHJlY3ljbGUgYQoJdmFyaWFibGUgZm9yIGFuIHVucmVsYXRlZCBwdXJwb3NlLgoJKiBwYXJzZS55OiAoYnVpbGRfYWxpYXNfaW5pdGlhbGl6ZXJfcGFyYW1ldGVyX2xpc3QpOiBDb25zdGlmeSBhIGNoYXIgKi4KCShicmVha2Rvd25fcXVhbGlmaWVkKTogRG8gbm90IG1vZGlmeSBJREVOVElGSUVSX1BPSU5URVIgc3RyaW5ncy4KCjIwMDAtMDgtMjkgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogZXhwci5jIChjYW5fd2lkZW5fcmVmZXJlbmNlX3RvKTogRml4ZWQgaW5kZW50YXRpb24uCgkqIGphdmEtdHJlZS5oIChDTEFTU19NRVRIT0RfQ0hFQ0tFRF9QKTogQWRkZWQgbGVhZGluZyBjb21tZW50LgoJKiBwYXJzZS55OiBgZmluaXQkJyByZXBsYWNlcyBgJGZpbml0JCcgaW4gY29tbWVudHMuCgkodHJ5X2J1aWx0aW5fYXNzaWduY29udik6IEZpeGVkIGxlYWRpbmcgY29tbWVudC4KCjIwMDAtMDgtMjUgIEdyZWcgTWNHYXJ5ICA8Z3JlZ0BtY2dhcnkub3JnPgoKCSogZ2phdmFoLmMgKGN4eF9rZXl3b3JkX3N1YnN0KTogVXNlIEFSUkFZX1NJWkUuCgoyMDAwLTA4LTI0ICBHcmVnIE1jR2FyeSAgPGdyZWdAbWNnYXJ5Lm9yZz4KCgkqIGxhbmcuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogVXNlIEFSUkFZX1NJWkUuCgkqIHBhcnNlLnkgKEJJTk9QX0xPT0tVUCk6IExpa2V3aXNlLgoKMjAwMC0wOC0yMiAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiBqYXZhb3AuaCAoV09SRF9UT19JTlQpOiBNYXNrIGxvd2VyIDMyIGJpdHMgb2YgYSBqd29yZCBiZWZvcmUKCXNpZ24gZXh0ZW5kaW5nLiBGaXhlcyBnY2ovMzIxLgoJKiBqY2YtcGFyc2UuYyAoZ2V0X2NvbnN0YW50KTogTWFzayBsb3dlciAzMiBiaXRzIG9mIGEgamludCBiZWZvcmUKCWNvbWJpbmluZyB0byBtYWtlIGEgamxvbmcuIEZpeGVzIGdjai8zMjEuCgoyMDAwLTA4LTIxICBOaXggIDxuaXhAZXNwZXJpLmRlbW9uLmNvLnVrPgoKCSogbGFuZy1zcGVjcy5oOiBEbyBub3QgcHJvY2VzcyAtbyBvciBydW4gdGhlIGFzc2VtYmxlciBpZgoJLWZzeW50YXgtb25seS4KCjIwMDAtMDgtMTYgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2phdmFfYXJyYXlfdHlwZSk6IFJld3JpdGUgY29kZSB0byBkbyBhcnJheQoJYWxpZ25tZW50LiAgVGFrZSBpbnRvIGFjY291bnQgYmFjay1lbmQgbWFjcm9zIHdoZW4gYWxpZ25pbmcgYXJyYXkKCWRhdGEuICBSZW1vdmUgc2V0dGluZyBvZiBUWVBFX1VTRVJfQUxJR047IEphdmEgZG9lc24ndCBhbGxvdyB0aGUKCXVzZXIgdG8gc2V0IGFsaWdubWVudC4gRml4ZXMgZ2NqLzI1MiBhbmQgMTYwLgoKMjAwMC0wOC0wOSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogcGFyc2UueSAoY2hlY2tfYWJzdHJhY3RfbWV0aG9kX2RlZmluaXRpb25zKTogTm93IHJldHVybiBgaW50Jy4KCUNoZWNrIGltcGxlbWVudGVkIGludGVyZmFjZXMuICBGaXhlcyBQUiBnY2ovMzA1LgoKCSogcGFyc2UueSAocGF0Y2hfc3dpdGNoX3N0YXRlbWVudCk6IERpc2FsbG93IGBsb25nJyBpbiBzd2l0Y2gKCWV4cHJlc3Npb25zLiAgRml4ZXMgUFIgZ2NqLzMxMC4KCjIwMDAtMDgtMTUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogZGVjbC5jIChmaW5pdF9sZWdfaWRlbnRpZmllcl9ub2RlKTogTmV3IGdsb2JhbC4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFVzZSBgZmluaXQkJyB0byBpbml0aWFsaXplCglmaW5pdF9pZGVudGlmaWVyX25vZGUuIFVzZSBgJGZpbml0JCcgdG8gaW5pdGlhbGl6ZQoJZmluaXRfbGVnX2lkZW50aWZpZXJfbm9kZS4KCSogZXhwci5jIChleHBhbmRfamF2YV9maWVsZF9vcCk6IFVzZSBJRF9GSU5JVF9QLgoJKiBqYXZhLXRyZWUuaCAoZmluaXRfaWRlbnRpZmllcl9ub2RlKTogQ2hhbmdlZCBhdHRhY2hlZCBjb21tZW50LgoJKGZpbml0X2xlZ19pZGVudGlmaWVyX25vZGUpOiBOZXcgZGVjbGFyYXRpb24uCgkoSURfRklOSVRfUCk6IFRha2UgZmluaXRfaWRlbnRpZmllcl9ub2RlIGFuZAoJZmluaXRfbGVnX2lkZW50aWZpZXJfbm9kZSBpbnRvIGFjY291bnQuIFRoaXMgaXMgYSBiYWNrd2FyZAoJY29tcGF0aWJpbGl0eSBoYWNrLgoKMjAwMC0wOC0xNCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfY29uZGl0aW9uYWwpOiBSZS1pbnN0YWxsZWQgbG9zdAoJSmFuIDYgMjAwMCBwYXRjaC4KCShnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6IENoZWNrIGBuYXJncycgYmVmb3JlIGVtaXR0aW5nIGl0LgoJKiB2ZXJpZnkuYyAobWVyZ2VfdHlwZV9zdGF0ZSk6IEZpeGVkIHR5cG8uCgkqIENoYW5nZUxvZzogRml4ZWQgdHlwbyBpbiBzb21lIGpjZi13cml0ZS5jIGVudHJpZXMgbWVudGlvbmluZwoJZ2VuZXJhdGVfYnl0ZWNvZGVfe2NvbmRpdGlvbmFsLGluc25zfS4KCjIwMDAtMDgtMTMgIEFudGhvbnkgR3JlZW4gIDxncmVlbkByZWRoYXQuY29tPgoKCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KTogQWRkIGNhc2UgZm9yIEJJVF9GSUVMRF9SRUYgKHJlcXVpcmVkCglmb3IgLXBnIGJ1aWxkcykuCgoyMDAwLTA4LTEwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKG1heWJlX2xheW91dF9zdXBlcl9jbGFzcyk6IEZpeGVkIGluZGVudGF0aW9uLgoJKiBqYXZhLXRyZWUuaCAoQ0xBU1NfTUVUSE9EX0NIRUNLRURfUCk6IE5ldyBtYWNyby4KCShqYXZhX2NoZWNrX21ldGhvZHMpOiBOZXcgZnVuY3Rpb24gZGVjbGFyYXRpb24uCgkqIGpjZi1wYXJzZS5jIChnZXRfY29uc3RhbnQpOiBMZXQgYGNoYXJfbGVuJyBnbyB1cCB0byAzLiBVc2UgYHN0cicKCWluc3RlYWQgb2YgYHN0cl9wdHInLgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBFbWl0IG51bWJlciB0aGUgb2YgYXJncwoJb2YgYSBgaW52b2tlaW50ZXJmYWNlJyBhdCB0aGUgcmlnaHQgdGltZS4KCSogcGFyc2UuaCAoV0ZMX1NUUklQX0JSQUNLRVQpOiBOZXcgbWFjcm8uCgkoU0VUX1RZUEVfRk9SX1JFU09MVVRJT04pOiBVc2UgaXQuCgkqIHBhcnNlLnkgKGJ1aWxkX3VucmVzb2x2ZWRfYXJyYXlfdHlwZSk6IFJldXNlIGB0eXBlX29yX3dmbCcuCgkoY2hlY2tfY2xhc3NfaW50ZXJmYWNlX2NyZWF0aW9uKTogRG9uJ3QgY2hlY2sgZm9yIGNyb3NzIHBhY2thZ2UKCWlubmVyY2xhc3MgbmFtZSBjbGFzaGVzLgoJKG1ldGhvZF9oZWFkZXIpOiBCZWhhdmUgcHJvcGVybHkgaWYgTURFQ0wgaXMgYGVycm9yX21hcmtfbm9kZScuCgkobWV0aG9kX2RlY2xhcmF0b3IpOiBSZXR1cm4gYGVycm9yX21hcmtfbm9kZScgaWYgYm9ndXMgY3VycmVudAoJY2xhc3MuCgkocmVzb2x2ZV9jbGFzcyk6IEFwcGx5IFdGTF9TVFJJUF9CUkFDS0VUIG9uIGBjbCcgaWYgbmVjZXNzYXJ5LgoJKHJlc29sdmVfYW5kX2xheW91dCk6IE5ldyBsb2NhbCBgZGVjbF90eXBlJywgc2V0IGFuZCB1c2VkLiBDYWxsCglqYXZhX2NoZWNrX21ldGhvZHMuCgkoamF2YV9jaGVja19tZXRob2RzKTogTmV3IG1ldGhvZC4KCShqYXZhX2xheW91dF9jbGFzc2VzKTogVXNlIGl0LgoJKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IE5vIEVIIGNoZWNrIG5lY2Vzc2FyeSBpbgoJYWNjZXNzJDxuPi4KCShqYXZhX2NvbXBsZXRlX2xocyk6IFVzZSBWQVJfREVDTCdzIERFQ0xfSU5JVElBTCB3aGVuIGV2YWx1YXRpbmcKCWBjYXNlJyBzdGF0ZW1lbnQuCgkocGF0Y2hfYXNzaWdubWVudCk6IFNldCBERUNMX0lOSVRJQUwgb24gaW50ZWdyYWwgZmluYWwgbG9jYWwuCgoyMDAwLTA4LTA4ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGphdmEtdHJlZS5oIChmbGFnX2V4dHJhbmVvdXNfc2VtaWNvbG9uKTogTmV3IGV4dGVybi4KCSogbGFuZy1vcHRpb25zLmg6ICgtV2V4dHJhbmVvdXMtc2VtaWNvbG9uKTogTmV3IG9wdGlvbi4KCSogbGFuZy5jIChmbGFnX3JlZHVuZGFudCk6IEZpeGVkIHR5cG8gaW4gbGVhZGluZyBjb21tZW50LgoJKGZsYWdfZXh0cmFuZW91c19zZW1pY29sb24pOiBOZXcgZ2xvYmFsLgoJKGxhbmdfZGVjb2RlX29wdGlvbik6IFNldCBgZmxhZ19leHRyYW5lb3VzX3NlbWljb2xvbicgd2hlbgoJLVdhbGwuIERlY29kZSBgLVdleHRyYW5lb3VzLXNlbWljb2xvbicuCgkqIHBhcnNlLnkgKHR5cGVfZGVjbGFyYXRpb246KTogUmVtb3ZlZCBgU0NfVEsnIGhhY2ssIGFkZGVkCglgZW1wdHlfc3RhdGVtZW50JyBydWxlLgoJKGNsYXNzX2JvZHlfZGVjbGFyYXRpb24pOiBMaWtld2lzZS4KCShtZXRob2RfYm9keTopOiBBY2NlcHQgYDsnIGFzIGEgbWV0aG9kIGJvZHkuCgkoc3RhdGljX2luaXRpYWxpemVyOik6IFJlbW92ZWQgYFNDX1RLJyBoYWNrLgoJKGNvbnN0cnVjdG9yX2Jsb2NrX2VuZDopOiBMaWtld2lzZS4KCShlbXB0eV9zdGF0ZW1lbnQ6KTogUmVwb3J0IGRlcHJlY2F0ZWQgZW1wdHkgZGVjbGFyYXRpb24uIEZpeGVzCglnY2ovMjk1CgoyMDAwLTA4LTA3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGJ1aWxkX2RvdF9jbGFzc19tZXRob2RfaW52b2NhdGlvbik6IENoYW5nZWQgcGFyYW1ldGVyCgluYW1lIHRvIGB0eXBlJy4gQnVpbGQgc2lnbmF0dXJlIGZyb20gYHR5cGUnIGFuZCBjb252ZXJ0IGl0IHRvIGEKCVNUUklOR19DU1QgaWYgaXQncyBhbiBhcnJheS4KCShwYXRjaF9pbmNvbXBsZXRlX2NsYXNzX3JlZik6IGBidWlsZF9kb3RfY2xhc3NfbWV0aG9kX2ludm9jYXRpb24nCgl0byB1c2UgYHJlZl90eXBlJyBkaXJlY3RseS4KCjIwMDAtMDgtMDYgIE92aWRpdSBQcmVkZXNjdSAgPG92aWRpdUBjdXAuaHAuY29tPgoKCSogbGFuZy1vcHRpb25zLmg6IEFkZGVkIGEgY29tbWEgYWZ0ZXIgdGhlIGxhc3QgZWxlbWVudCB0byBhdm9pZAoJc3ludGF4IGVycm9ycyB3aGVuIG90aGVyIGxhbmd1YWdlcyBkZWZpbmUgYWRkaXRpb25hbCBvcHRpb25zLgoKMjAwMC0wOC0wNCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogTWFrZS1sYW5nLmluIChqYzEsIGp2LXNjYW4pOiBEZXBlbmQgb24gJChCQUNLRU5EKSwgbm90IHN0YW1wLW9iamxpc3QuCgkqIE1ha2VmaWxlLmluOiBBZGQgQkFDS0VORDsgZGVsZXRlIE9CSlMsIE9CSkRFUFMuCgkoamMxKTogTGluayB3aXRoICQoQkFDS0VORCkuCgkoanYtc2Nhbik6IERlcGVuZCBvbiB2ZXJzaW9uLm8sIG5vdCBhbGwgb2YgJChPQkpTKSBvciAkKEJBQ0tFTkQpLgoKMjAwMC0wOC0wMiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSoganZzcGVjLmM6IEFkanVzdCB0eXBlIG9mIHNlY29uZCBhcmd1bWVudCB0bwoJbGFuZ19zcGVjaWZpY19kcml2ZXIsIGFuZCB1cGRhdGUgY29kZSBhcyBuZWNlc3NhcnkuCgoJKiBjbGFzcy5jIChidWlsZF9kdGFibGVfZGVjbCk6IEluaXRpYWxpemUgZHVtbXkuCgoyMDAwLTA4LTAxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKG1heWJlX3lhbmtfY2xpbml0KTogV2hlbiBnZW5lcmF0aW5nIGJ5dGVjb2RlOiBub24gZW1wdHkKCW1ldGhvZCBib2RpZXMgbm90IHRvIHJ1bGUgb3V0IGRpc2NhcmRpbmcgYDxjbGluaXQ+JzsgZG9uJ3QgdXNlCgk8Y2xpbml0PiB0byBpbml0aWFsaXplIHN0YXRpYyBmaWVsZHMgd2l0aCBjb25zdGFudCBpbml0aWFsaXplcnMuCgoyMDAwLTA4LTAxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChwcmludF9tZXRob2RfaW5mbyk6IEFkZGVkIGBzeW50aCcgcGFyYW1ldGVyLiBTa2lwCglzeW50aGV0aWMgbWV0aG9kcy4KCShtZXRob2Rfc3ludGhldGljKTogTmV3IGdsb2JhbC4KCShIQU5ETEVfTUVUSE9EKTogUmVjb2duaXplIHN5bnRoZXRpYyBtZXRob2QgYW5kIHRlbGwKCWBwcmludF9tZXRob2RfaW5mbycgYWJvdXQgaXQuCgkoSEFORExFX0VORF9NRVRIT0QpOiBEbyBub3QgaXNzdWUgYW4gYWRkaXRpb25hbCBgO1xuJyBpZiB3ZSdyZQoJcHJvY2Vzc2luZyBhIHN5bnRoZXRpYyBtZXRob2QuCgkqIGpjZi1yZWFkZXIuYyAoc2tpcF9hdHRyaWJ1dGUpOiBOZXcgZnVuY3Rpb24uCgkoIHNraXBfYXR0cmlidXRlKTogTGlrZXdpc2UuCgoyMDAwLTA4LTAxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGJ1aWxkX291dGVyX2ZpZWxkX2FjY2Vzcyk6IEZpeGVkIGNvbW1lbnRzLgoJKGZpeF9jb25zdHJ1Y3RvcnMpOiBFbWl0IHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGlzJDxuPiBiZWZvcmUKCWNhbGxpbmcgJGZpbml0JC4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBCdWlsZCBhbiBhY2Nlc3MgdG8gYGRlY2wnIGlmCgluZWNlc3NhcnkuCgoyMDAwLTA3LTMxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLXNjYW4ueSAoY3VyZW50X2NsYXNzKTogTm9uIGxvbmdlciBjb25zdC4KCShpbm5lcl9xdWFsaWZpZXIsIGlubmVyX3F1YWxpZmllcl9sZW5ndGgpOiBEZWxldGVkLgoJKGN1cnJlbnRfY2xhc3NfbGVuZ3RoKTogTmV3IGdsb2JhbC4KCShicmFja2V0X2NvdW50KTogRml4ZWQgdHlwbyBpbiBsZWFkaW5nIGNvbW1lbnQuCgkoYW5vbnltb3VzX2NvdW50KTogTmV3IGdsb2JhbC4KCShjbGFzc19pbnN0YW5jZV9jcmVhdGlvbl9leHByZXNzaW9uOik6IEhhbmRsZSBhbm9ueW1vdXMgY2xhc3Nlcy4KCShhbm9ueW1vdXNfY2xhc3NfY3JlYXRpb246KTogTmV3IHJ1bGUuCgkocHVzaF9jbGFzc19jb250ZXh0KTogUmV3cml0dGVuLgoJKHBvcF9jbGFzc19jb250ZXh0KTogTGlrZXdpc2UuCgkoSU5ORVJfUVVBTElGSUVSKTogTWFjcm8gZGVsZXRlZC4KCShyZXBvcnRfY2xhc3NfZGVjbGFyYXRpb24pOiBjYWxsIGBwdXNoX2NsYXNzX2NvbnRleHQnIHdoZW4KCWVudGVyaW5nIHRoZSBmdW5jdGlvbi4gYGZwcmludGYnIGZvcm1hdCBtb2RpZmllZCBub3QgdG8gdXNlCglJTk5FUl9RVUFMSUZJRVIuCgkocmVwb3J0X2NsYXNzX2RlY2xhcmF0aW9uKTogQXNzaWduIGBwYWNrYWdlX25hbWUnIGFuZAoJYGN1cnJlbnRfY2xhc3MnIHRvIE5VTEwgc2VwYXJhdGVseS4KCjIwMDAtMDctMzEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogZXhwci5jIChidWlsZF9pbnZva2VpbnRlcmZhY2UpOiBDYWxsIGxheW91dF9jbGFzc19tZXRob2RzIG9uCgl0YXJnZXQgaW50ZXJmYWNlLgoKMjAwMC0wNy0yNyAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoJICAgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBjeWdudXMuY29tPgoJICAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAobWFrZV9jbGFzc19kYXRhKTogQ3JlYXRlIHZ0YWJsZSBmb3IgYWJzdHJhY3QgY2xhc3Nlcy4KCShnZXRfZGlzcGF0Y2hfdGFibGUpOiBDaGFuZ2VkIHRvIGNvcGUgd2l0aCBhYnN0cmFjdCBjbGFzc2VzLgoKMjAwMC0wNy0yNyAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBEb24ndCByZXZlcnNlIHRoZSBhcmd1bWVudAoJbGlzdCB3aGVuIGRlYWxpbmcgd2l0aCBhbm9ueW1vdXMgY2xhc3MgY29uc3RydWN0b3JzLiBGaXhlZCB0eXBvIGluCgljb21tZW50LgoKMjAwMC0wNy0yNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChidWlsZF9hbGlhc19pbml0aWFsaXplcl9wYXJhbWV0ZXJfbGlzdCk6IFJldmVyc2UKCWNyYWZ0ZWQgbGlzdCB3aGVuIGJ1aWxkaW5nIGFsaWFzZXMgZm9yIGFub255bW91cyBjbGFzcwoJY29uc3RydWN0b3JzLgoKMjAwMC0wNy0yNSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChqZGVwX3Jlc29sdmVfY2xhc3MpOiBEb24ndCBib3RoZXIgY2hlY2tpbmcgcG90ZW50aWFsCglpbm5lcmNsYXNzIGFjY2VzcyBpZiBgZGVjbCcgaXMgTlVMTC4KCShmaW5kX2luX2ltcG9ydHNfb25fZGVtYW5kKTogVFJFRV9QVVJQT1NFIG9mIGBpbXBvcnQnIGNvbnRhaW5zIHRoZQoJV0ZMLgoKMjAwMC0wNy0yNSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS5jOiBSZW1vdmUgKGFnYWluLikKCjIwMDAtMDctMjQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoZmluZF9hc19pbm5lcl9jbGFzcyk6IFJlbW92ZWQgMjAwMC0wNy0xOSBwYXRjaGVzLgoJKiBqY2YtcGFyc2UuYyAoSEFORExFX0lOTkVSQ0xBU1NFU19BVFRSSUJVVEUpOiBMb2NhbCBgZGVjbCcgbW92ZWQKCW91dHNpZGUgdGhlIGBpZicgc3RhdGVtZW50LCBhbGlhcyB0byBpbm5lcmNsYXNzIHJlbW92ZWQsIGBkZWNsJwoJdXNlZCB0byBtYXJrIHRoZSBjbGFzcyBjb21wbGV0ZS4KCjIwMDAtMDctMjEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoc2ltcGxlX25hbWU6KTogRml4ZWQgdHlwbyBpbiBlcnJvciBtZXNzYWdlLgoKMjAwMC0wNy0yMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2xocyk6IExPT1BfRVhQUjosIFNXSVRDSF9FWFBSOiB0aGUgbm9kZQoJb3IgaXRzIGZpcnN0IG9wZXJhbmQgY2FuIGJlIGVycm9yIG1hcmtzLgoKMjAwMC0wNy0yMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS5oIChTRVRfVFlQRV9GT1JfUkVTT0xVVElPTik6IFVzZSBHRVRfQ1BDLgoJKiBwYXJzZS55IChtZXRob2RfaGVhZGVyKTogTGlrZXdpc2UuCgoyMDAwLTA3LTE5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHByb2Nlc3NfaW1wb3J0cyk6IENvbnNpZGVyIHRoYXQgb25lIG1pZ2h0IGJlIHRyeWluZyB0bwoJaW1wb3J0IGFuIGlubmVyY2xhc3MuIEZpeGVzIGdjai8yNTQKCjIwMDAtMDctMTkgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoZmluZF9hc19pbm5lcl9jbGFzcyk6IEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUKCWVuY2xvc2luZyBjb250ZXh0IG9mIGFuIGlubmVyY2xhc3MgaGFzIGJlZW4gbG9hZGVkIGFzIGJ5dGVjb2RlLgoKMjAwMC0wNy0xOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChzaW1wbGVfbmFtZTopOiBSZWplY3QgYCQnIGluIHR5cGUgbmFtZXMuCgkocmVzb2x2ZV90eXBlX2R1cmluZ19wYXRjaCk6IFVzZSBgdHlwZScgYXMgYSBzZWNvbmQKCWFyZ3VtZW50IHRvIHJlc29sdmVfbm9fbGF5b3V0LiBGaXhlcyBnY2ovMjU3LgoKMjAwMC0wNy0xOCAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUBhbGJhdHJvc3MuY28ubno+CgoJKiBwYXJzZS55IChmaW5kX21vc3Rfc3BlY2lmaWNfbWV0aG9kc19saXN0KTogU2VsZWN0IHRoZSBvbmx5Cglub24tYWJzdHJhY3QgbWV0aG9kIGV2ZW4gaWYgbWF4IGhhcyBiZWVuIHNldC4KCUZpeGVzIGdjai8yODUsIGdjai8yOTguCgoyMDAwLTA3LTE4ICBKZWZmIFN0dXJtICA8amVmZi5zdHVybUBhcHBuZXQuY29tPgoKCSogbGFuZy1zcGVjcy5oOiBBZGRlZCAlKGpjMSkgdG8gamF2YSBjb21waWxlciBvcHRpb25zLgoKMjAwMC0wNy0xNCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogLmN2c2lnbm9yZTogTmV3IGZpbGUuCgoyMDAwLTA3LTEzICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKG5vdF9hY2Nlc3NpYmxlX3ApOiBBY2Nlc3MgZ3JhbnRlZCB0byBpbm5lcmNsYXNzZXMKCShpbmRpcmVjdGx5KSBleHRlbmRpbmcgdGhlIHJlZmVyZW5jZSB0eXBlLiBGaXhlcyBnY2ovMjQ5LgoKMjAwMC0wNy0xMyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6IEZpeGVkIGNvbW1lbnQuCgkobWF5YmVfdXNlX2FjY2Vzc19tZXRob2QpOiBCdWlsZCB0aGlzJDxuPnMgdG8gdGhlIGNvbnRleHQgb2YgdGhlCgl0YXJnZXQgbWV0aG9kLCBvciBhIHR5cGUgdGhhdCBleHRlbmRzIGl0LiBGaXhlcyBnY2ovMjQyLgoKMjAwMC0wNy0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHBhcnNlLmM6IFJlbW92ZS4KCjIwMDAtMDctMTMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoZm9sZF9jb25zdGFudF9mb3JfaW5pdCk6IEF2b2lkIGJ1bGxpc2ggY29udmVyc2lvbi4KCjIwMDAtMDctMTMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGxhbmctc3BlY3MuaDogQWRkZWQgJXtJKn0uCgoyMDAwLTA3LTEzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBsYW5nLXNwZWNzLmg6IFVzZSB0aGUgbmV3IG5hbWVkIHNwZWNzLiAgUmVtb3ZlIHVubmVjZXNzYXJ5IGJyYWNlcy4KCjIwMDAtMDctMTIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwYXJzZS1zY2FuLmM6IFJlbW92ZS4KCjIwMDAtMDctMTAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoc2V0X3N1cGVyX2luZm8pOiBIYW5kbGVkIHByb3RlY3RlZCBpbm5lciBjbGFzc2VzLgoJKGNvbW1vbl9lbmNsb3NpbmdfY29udGV4dF9wKTogQmFpbCBlYXJseSBpZiBhcmd1bWVudHMgYXJlbid0IGJvdGgKCWlubmVyIGNsYXNzZXMuCgkoZ2V0X2FjY2Vzc19mbGFnc19mcm9tX2RlY2wpOiBIYW5kbGUgcHJpdmF0ZSBhbmQgcHJvdGVjdGVkIGlubmVyCgljbGFzc2VzLgoJKiBqYXZhLXRyZWUuaCAoVFlQRV9QUk9URUNURURfSU5ORVJfQ0xBU1MpOiBOZXcgbWFjcm8uCgkoQ0xBU1NfUFJPVEVDVEVEKTogTGlrZXdpc2UuCgkoc3RydWN0IGxhbmdfdHlwZSk6IE5ldyBiaXRmaWVsZCBgcG9pYycuCgkqIHBhcnNlLnkgKGpkZXBfcmVzb2x2ZV9jbGFzcyk6IENhbGwgY2hlY2tfaW5uZXJfY2xhc3NfYWNjZXNzIG9uCglpbm5lciBjbGFzc2VzIG9ubHkuCgkoY2hlY2tfaW5uZXJfY2xhc3NfYWNjZXNzKTogUmVuYW1lZCBhcmd1bWVudHMsIGFkZGVkCgljb21tZW50cy4gSGFuZGxlcyBwcm90ZWN0ZWQgaW5uZXIgY2xhc3NlcyAoZml4ZXMgZ2NqLzIyNSkKCShub3RfYWNjZXNzaWJsZV9wKTogRml4ZWQgY29tbWVudHMuIEF2b2lkIGhhbmRsaW5nIGlubmVyIGNsYXNzZXMuCgoyMDAwLTA3LTEwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IFZlcmlmeSBxdWFsaWZpZWQKCWFjY2VzcyB0byBgdGhpcycuIEZpeGVzIGdjai8yMzkuCgoyMDAwLTA3LTEwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9jbGFzc2ZpbGUpOiBEb24ndCBpbnN0YWxsIENvbnN0YW50VmFsdWUKCWZvciBudWxsIHBvaW50ZXJzLgoKMjAwMC0wNy0wNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBIYW5kbGUgaW5uZXIgY2xhc3MKCWFjY2Vzcy4gRml4ZXMgZ2NqLzI1Ni4KCjIwMDAtMDctMDcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2NsYXNzZmlsZSk6IFByb3Blcmx5IGluc3RhbGwgdGhlCglDb25zdGFudFZhbHVlIGF0dHJpYnV0ZSBhbmQgdGhlIGluaXRpYWwgdmFsdWUgY29uc3RhbnQgcG9vbCBpbmRleAoJb24gc3RyaW5nIGNvbnN0YW50cy4KCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9saHMpOiBLZWVwIERFQ0xfSU5JVElBTCB3aGVuIGVtaXR0aW5nCgljbGFzcyBmaWxlcy4KCjIwMDAtMDctMDYgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UuaCAoQlVJTERfUFRSX0ZST01fTkFNRSk6IFN1cnJvdW5kIHdpdGggYSBkby93aGlsZQoJY29uc3RydWN0LgoJKiBwYXJzZS55IChmaW5kX2FzX2lubmVyX2NsYXNzKTogRml4ZWQgdHlwby4KCShkb19yZXNvbHZlX2NsYXNzKTogRXhwbG9yZSBlbmNsb3NpbmcgY29udGV4dHMgd2hlbiBzZWFyY2hpbmcgZm9yCglpbm5lcmNsYXNzZXMuIFJlbW92ZWQgY3VybHkgYnJhY2tldHMgYXJvdW5kIEJVSUxEX1BUUl9GUk9NX05BTUUuCgkoY2hlY2tfaW5uZXJfY2xhc3NfYWNjZXNzKTogQ2hlY2sgYGRlY2wnIHdoaWNoIGNhbiBiZSBudWxsIGluIGNhc2UKCW9mIHByZXZpb3VzIGVycm9ycy4KCjIwMDAtMDctMDUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamF2YS10cmVlLmggKGphdmFfZGVidWdfY29udGV4dCk6IERlY2xhcmVkIGBleHRlcm4nLgoJKHNhZmVfbGF5b3V0X2NsYXNzKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHJlc29sdmVfZmllbGRfYWNjZXNzKTogRmllbGQgbXVzdCBiZSBgc3RhdGljJyBpbiBvcmRlcgoJdG8gYmUgcmVwbGFjZWQgYnkgaXRzIGluaXRpYWwgdmFsdWUuIEFkZGVkIGNvbW1lbnRzLgoJKGZpbmRfYXBwbGljYWJsZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCk6IEZpeGVkIHR5cG8uCgkoZmluZF9tb3N0X3NwZWNpZmljX21ldGhvZHNfbGlzdCk6IE1ldGhvZHMgZm91bmQgaW4gaW5uZXJjbGFzc2VzCgl0YWtlIG92ZXIgbWV0aG9kcyBmb3VuZHMgaW4gdGhlIGVuY2xvc2luZyBjb250ZXh0cy4KCShqYXZhX2NvbXBsZXRlX3RyZWUpOiBMb29zZW4gcmVzdHJpY3Rpb25zIG9uIHRoZSB0eXBlIG9mIERFQ0xzCgl0aGF0IGNhbiBiZSByZXBsYWNlZCBieSB0aGVpciBpbml0aWFsaXphdGlvbiB2YWx1ZXMuCgkodmFsaWRfcmVmX2Fzc2lnbmNvbnZfY2FzdF9wKTogUmVtb3ZlZCBjYWxsIHRvIGBlbmNsb3NpbmdfY29udGV4dF9wJy4KCjIwMDAtMDctMDUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoUEFSU0VfRElSKTogTmV3IG1hY3JvLgoJKFBBUlNFX1JFTERJUik6IExpa2V3aXNlLgoJKFBBUlNFX0MpOiBMaWtld2lzZS4KCShQQVJTRV9TQ0FOX0MpOiBMaWtld2lzZS4KCSgkKFBBUlNFX0MpKTogTmV3IHRhcmdldC4KCSgkKFBBUlNFX1NDQU5fQykpOiBMaWtld2lzZS4KCShTRVRfQklTT04pOiBOZXcgbWFjcm8uCgkoQklTT05GTEFHUyk6IExpa2V3aXNlLgoJKEpBVkFCSVNPTkZMQUdTKTogTGlrZXdpc2UuCgoyMDAwLTA3LTAyICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCgkqIGdqYXZhaC5jIChIQU5ETEVfTUVUSE9EKTogQ2FsbCBwcmludF9tZXRob2RfaW5mbyB3aXRoIGEgTlVMTCBzdHJlYW0KCWFyZ3VtZW50IG9uIHRoZSBmaXJzdCBwYXNzIGZvciBDTkkgYXMgd2VsbCBhcyBKTkkuCgkocHJpbnRfbWV0aG9kX2luZm8pOiBTZXQgdXAgbWV0aG9kIG5hbWUgb24gdGhlIGZpcnN0IHBhc3Mgb25seS4KCjIwMDAtMDctMDEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocGFyc2VyX3F1YWxpZmllZF9jbGFzc25hbWUpOiBSZW1vdmVkIHBhcmFtZXRlcgoJYGlzX3N0YXRpYycuCgkoY3JlYXRlX2ludGVyZmFjZSk6IFJlbW92ZWQgZmlyc3QgcGFzc2VkIHBhcmFtZXRlciB0bwoJcGFyc2VyX3F1YWxpZmllZF9jbGFzc25hbWUuCgkoY3JlYXRlX2NsYXNzKTogTGlrZXdpc2UuIERvbid0IGluc3RhbGwgYWxpYXMgb24gc3RhdGljCglpbm5lcmNsYXNzZXMuIEZpeGVzIGdjai8yNzUuCgoyMDAwLTA3LTAxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKG1heWJlX2dlbmVyYXRlX3ByZV9leHBhbmRfY2xpbml0KTogRG9uJ3QgYnVpbGQgYQoJZGVidWdhYmxlIHN0YXRlbWVudCB3aXRoIGVtcHR5X3N0bXRfbm9kZS4gRml4ZXMgZ2NqLzI3MgoKMjAwMC0wNy0wMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGJ1aWxkX2luc3RhbmNlb2YpOiBMYXlvdXQgdHlwZSBhZnRlciBpdCdzIGxvYWRlZC4gRml4ZXMKCWdjai8yNzEuCgoyMDAwLTA2LTI5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGpjZi13cml0ZS5jIChwdXNoX2xvbmdfY29uc3QpOiBBcHByb3ByaWF0ZWx5IGNhc3Qgc2hvcnQgbmVnYXRpdmUKCWNvbnN0YW50IHRvIGp3b3JkLgoKMjAwMC0wNi0yOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55ICh2ZXJpZnlfY29uc3RydWN0b3Jfc3VwZXIpOiBVc2UgbG9vcCB2YXJpYWJsZQoJYG1fYXJnX3R5cGUnIGluaXRpYWxpemVkIHdpdGggYG1kZWNsX2FyZ190eXBlJy4KCjIwMDAtMDYtMjkgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHJlc29sdmVfZmllbGRfYWNjZXNzKTogSGFuZGxlIGNhc2Ugd2hlcmUgYHR5cGVfZm91bmQnCglpcyBOVUxMLgoKMjAwMC0wNi0yNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGxvb2t1cF9maWVsZCk6IFRoZSBzYW1lIGZpZWxkIGNhbiBiZSBmb3VuZCB0aHJvdWdoIHR3bwoJZGlmZmVyZW50IGludGVyZmFjZS4gRG9uJ3QgZGVjbGFyZSBpdCBhbWJpZ3VvdXMgaW4gdGhhdCBjYXNlLgoKMjAwMC0wNi0yNyAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogbGV4LmMgKGphdmFfbGluZXRlcm1pbmF0b3IpOiBEb24ndCByZWNvZ25pemUgXHIgYWZ0ZXIgXG4uICBJZiBccgoJZm9sbG93cyBcciwgdGhlbiB1bmdldCBpdCBhdCBhIGxvd2VyIGxldmVsLgoKMjAwMC0wNi0yNiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogcGFyc2UueSAocmVzb2x2ZV9maWVsZF9hY2Nlc3MpOiBQYXNzIGRlY2wsIG5vdCBERUNMX0lOSVRJQUwsIHRvCglqYXZhX2NvbXBsZXRlX3RyZWUuCgoyMDAwLTA2LTI1ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChmb3Jfc3RhdGVtZW50KTogV3JhcCBleHByZXNzaW9uIGluIGEgV0ZMIGlmIGl0IGlzIGEKCWNvbnN0YW50LiAgRm9yIFBSIGdjai8yNjguCgoyMDAwLTA2LTI1ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGRvX3Jlc29sdmVfY2xhc3MpOiBNaW5vciBvcHRpbWl6dGlvbiBpbiB0aGUgcGFja2FnZQoJbGlzdCBzZWFyY2guIFJlbW92ZWQgdW5uZWNlc3NhcnkgdGVzdCBhbmQgcmV0dXJuIHN0YXRlbWVudC4KCSh2YWxpZF9yZWZfYXNzaWduY29udl9jYXN0X3ApOiBPcmRlciBvZiBhcmd1bWVudHMgdG8KCWVuY2xvc2luZ19jb250ZXh0X3AgZml4ZWQuCgoyMDAwLTA2LTI0ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBleHByLmMgKGxvb2t1cF9maWVsZCk6IFByaW50IGVycm9yIGFuZCByZXR1cm4gZXJyb3JfbWFya19ub2RlIGlmCglmaWVsZCByZWZlcmVuY2UgaXMgYW1iaWd1b3VzLgoKCSogcGFyc2UueSAoY2hlY2tfYWJzdHJhY3RfbWV0aG9kX2RlZmluaXRpb25zKTogQWxzbyBjaGVjayBpZgoJYG90aGVyX21ldGhvZCcgaXMgYWJzdHJhY3QuCgoyMDAwLTA2LTIzICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKHNldF9zdXBlcl9pbmZvKTogSGFuZGxlIEFDQ19QUklWQVRFIGZvciAoaW5uZXIpCgljbGFzc2VzLgoJKiBqYXZhLXRyZWUuaCAoVFlQRV9QUklWQVRFX0lOTkVSX0NMQVNTKTogTmV3IG1hY3JvLgoJKHN0cnVjdCBsYW5nX3R5cGUpOiBOZXcgZmllbGQgYHBpYycuCgkoQ0xBU1NfUFJJVkFURSk6IE5ldyBtYWNyby4KCSogcGFyc2UueSAoY2hlY2tfaW5uZXJfY2xhc3NfYWNjZXNzKTogTmV3IGZ1bmN0aW9uLgoJKGpkZXBfcmVzb2x2ZV9jbGFzcyk6IENhbGwgaXQuCgoyMDAwLTA2LTIzICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChwYXRjaF9pbmNvbXBsZXRlX2NsYXNzX3JlZik6IEluaXRpYWxpemUgdGhlIHJldHVybmVkCgljbGFzcy4gIEZvciBQUiBnY2ovMjYwLgoKMjAwMC0wNi0yMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAocHJlcGFyZV9laF90YWJsZV90eXBlKTogVXNlIGBDQVRDSF9BTExfVFlQRScuCgoyMDAwLTA2LTIwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNoZWNrLWluaXQuYyAoRU5BQkxFX0pDMV9DSEVDS0lORyk6IFJlcGxhY2VzIEVOQUJMRV9DSEVDS0lORyBmb3IKCUphdmEgc3BlY2lmaWMgY2hlY2tzLgoJKiBleHByLmMgKGJ1aWxkX2luc3RhbmNlb2YpOiBDTEFTU19JTlRFUkZBQ0UgYW5kIENMQVNTX0ZJTkFMIHVzYWdlCglzY3JlZW5lZCBieSBERUNMX1AuCgkqIGphdmEtdHJlZS5kZWYgKENBU0VfRVhQUik6IE1hcmtlZCAnZScuCgkoREVGQVVMVF9FWFBSKTogTGlrZXdpc2UuCgkqIGpjZi1wYXJzZS5jIChzZXRfc291cmNlX2ZpbGVuYW1lKTogQ0xBU1NfQ09NUExFVEVfUCB1c2FnZQoJc2NyZWVuZWQgYnkgREVDTF9QLgoJKiBqY2Ytd3JpdGUuYyAoRU5BQkxFX0pDMV9DSEVDS0lORyk6IFJlcGxhY2VzIEVOQUJMRV9DSEVDS0lORyBmb3IKCUphdmEgc3BlY2lmaWMgY2hlY2tzLgoJKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogVGVzdCB0cnlfYmxvY2sgZm9yIEJMT0NLIGJlZm9yZSB1c2luZwoJQkxPQ0tfRVhQUl9CT0RZLgoJKiBwYXJzZS55IChidWlsZF93Zmxfd3JhcCk6IEFkZGVkIGBsb2NhdGlvbicgYXJndW1lbnQuIFNldAoJRVhQUl9XRkxfTElORUNPTCBhY2NvcmRpbmdseS4KCShkaW1fZXhwcjopOiBXcmFwIGNvbnN0YW50cyB3aXRoIFdGTHMuCgkobWV0aG9kX2RlY2xhcmF0b3IpOiBVc2UgVFJFRV9UWVBFIG5vdCBUWVBFX05BTUUgb24gR0VUX0NQQy4KCShyZXNvbHZlX3BhY2thZ2UpOiBDaGVjayBmb3IgYHN0bXQnIG5vdCBiZWluZyBhIEJMT0NLIGJlZm9yZQoJYnVpbGRpbmcgYSBkZWJ1Z2dhYmxlIHN0YXRlbWVudCB3aXRoIGl0LgoJKG1ha2VfcXVhbGlmaWVkX3ByaW1hcnkpOiBBZGRlZCBleHRyYSBwYXJhbWV0ZXIgdG8gYnVpbGRfd2ZsX3dyYXAKCWludm9jYXRpb24uCgkocmVzb2x2ZV9maWVsZF9hY2Nlc3MpOiBNYWtlIHN1cmUgYGRlY2wnIGlzIGEgREVDTCBiZWZvcmUgdHJlYXRpbmcKCWl0IGFzIHN1Y2guCgkobWF5YmVfYnVpbGRfcHJpbXR0eXBlX3R5cGVfcmVmKTogTWFrZSBzdXJlIGB3ZmwnJ3Mgbm9kZSBpcyBhbgoJSURFTlRJRklFUl9OT0RFIGJlZm9yZSB0cmVhdGluZyBpdCBhcyBzdWNoLgoJKHBhdGNoX25ld19hcnJheV9pbml0KTogTWFrZSBzdXJlIGBlbHQnIGlzIGEgVFJFRV9MSVNUIGJlZm9yZQoJdHJlYXRpbmcgaXQgYXMgc3VjaC4KCShmaW5kX2FwcGxpY2FibGVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QpOiBDTEFTU19JTlRFUkZBQ0UgbWFjcm8KCXRvIGJlIGFwcGxpZWQgb25seSBvbiBub24gYXJyYXkgdHlwZXMuCgoyMDAwLTA2LTE2ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGphdmEtdHJlZS5oIChMQUJFTF9SRVRVUk5fTEFCRUxTLCBMQUJFTF9QRU5ESU5HX0NIQUlOKTogIERvbid0CglkZWZpbmUgaW4gdGVybXMgb2YgREVDTF9SRVNVTFQsIGFzIHRoYXQgZmFpbHMgd2hlbiAtLWVuYWJsZS1jaGVja2luZy4KCjIwMDAtMDYtMTUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGpjZi13cml0ZS5jIChDSEVDS19QVVQpOiBBZGQgc3RhdGljIHByb3RvdHlwZS4gIE1ha2UgcG9pbnRlcgoJdHlwZXMgdGhlIHNhbWUgaW4gY29tcGFyaXNvbi4KCShDSEVDS19PUCk6IEFkZCBzdGF0aWMgcHJvdG90eXBlLgoKMjAwMC0wNi0xMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfamF2YV9hcnJheV90eXBlKTogU2V0IFRZUEVfVVNFUl9BTElHTi4KCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9jbGFzcyk6IFNldCBERUNMX1VTRVJfQUxJR04uCgkqIHBhcnNlLmM6IFJlYnVpbHQuCgoyMDAwLTA2LTExICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkZWNsLmMgKGNyZWF0ZV9wcmltaXRpdmVfdnRhYmxlKTogUHJvdG90eXBlLgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogSW5pdGlhbGl6ZSB2YXJpYWJsZQoJYHNhdmVkX2NvbnRleHQnLgoKCSogbGFuZy5jIChsYW5nX2dldF9hbGlhc19zZXQpOiBNYXJrIHBhcmFtZXRlciB3aXRoIEFUVFJJQlVURV9VTlVTRUQuCgoyMDAwLTA2LTA5ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCgkqIHBhcnNlLnkgKGZpbmRfYXBwbGljYWJsZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCk6IFVzZSBhIGhhc2h0YWJsZQoJdG8gdHJhY2sgc2VhcmNoZWQgY2xhc3NlcywgYW5kIGRvIG5vdCBzZWFyY2ggdGhlIHNhbWUgY2xhc3MgbW9yZSB0aGFuCglvbmNlLiBDYWxsIGZpbmRfYXBwbGljYWJsZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCBvbiBpbW1lZGlhdGUKCXN1cGVyY2xhc3MsIGluc3RlYWQgb2Ygc2VhcmNoX2FwcGxpY2FibGVfbWV0aG9kX2xpc3Qgb24gYWxsIGFuY2VzdG9ycy4KCUZpeCBmb3IgUFIgZ2NqLzIzOC4KCjIwMDAtMDYtMDkgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAYWxiYXRyb3NzLmNvLm56PgoKCSogcGFyc2UueSAocmVnaXN0ZXJfZmllbGRzKTogUGVybWl0IHN0YXRpYyBmaWVsZHMgaW4gaW5uZXIgY2xhc3NlcwoJaWYgdGhleSBhcmUgZmluYWwuIEZpeCBmb3IgUFIgZ2NqLzI1NS4KCjIwMDAtMDYtMDYgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UuaCAoUkVHSVNURVJfSU1QT1JUKTogVXNlIGBjaGFpbm9uJyB0byBsaW5rIG5ldyBlbnRyaWVzLgoJKiBwYXJzZS55IChmaW5kX2luX2ltcG9ydHMpOiBSZXR1cm5lZCB0eXBlIGNoYW5nZWQgdG8gdm9pZCwKCWxlYWRpbmcgY29tbWVudCBmaXhlZC4KCShyZWdpc3Rlcl9wYWNrYWdlKTogTmV3IGZ1bmN0aW9uLgoJKHF1YWxpZnlfYW5kX2ZpbmQpOiBMaWtld2lzZS4KCShwYWNrYWdlX2RlY2xhcmF0aW9uOik6IFVzZSBgcmVnaXN0ZXJfcGFja2FnZScuCgkoc2luZ2xlX3R5cGVfaW1wb3J0X2RlY2xhcmF0aW9uOik6IFJlbW92ZWQgbG9jYWwgdmFyaWFibGUKCWBub2RlJy4gQWRkZWQgbWlzc2luZyBgOycgZm9yIGNvbnNpc3RlbmN5LgoJKHR5cGVfaW1wb3J0X29uX2RlbWFuZF9kZWNsYXJhdGlvbjopOiBVc2UgYGNoYWlub24nIHRvIGxpbmsgbmV3CgllbnRyaWVzLgoJKGxvb2t1cF9maWVsZF93cmFwcGVyKTogTG9va3VwIGxvY2FsIHZhcmlhYmxlcyBkZWZpbmVkIGluIG91dGVyCgljb250ZXh0cyBmaXJzdC4KCShqYXZhX2NvbXBsZXRlX2NsYXNzKTogRG9uJ3QgcmV2ZXJzZSB0aGUgbGlzdCBvZiBpbXBvcnRlZCBvbiBkZW1hbmQuCgkoZG9fcmVzb2x2ZV9jbGFzcyk6IFJlb3JnYW5pemVkLiBSZW1vdmVkIGxvY2FsIHZhcmlhYmxlCglgb3JpZ2luYWxfbmFtZScuIENhbGwgYHF1YWxpZnlfYW5kX2ZpbmQnIHdpdGggdGhlIGN1cnJlbnQgcGFja2FnZQoJbmFtZSwgaW52b2tlIGBmaW5kX2luX2ltcG9ydHNfb25fZGVtYW5kJyByaWdodCBhZnRlci4gQ2FsbAoJYHF1YWxpZnlfYW5kX2ZpbmQnIHdpdGggdGhlIHBhY2thZ2VzIHdlJ3ZlIHNlZW4gc28gZmFyLiBGaXhlZAoJb3BlcmF0aW9ucyBudW1iZXJpbmcgaW4gY29tbWVudHMuCgkoamF2YV9leHBhbmRfY2xhc3MpOiBEb24ndCByZXZlcnNlIGBwYWNrYWdlX2xpc3QnLgoJKGZpbmRfbW9zdF9zcGVjaWZpY19tZXRob2RzX2xpc3QpOiBOZXcgbG9jYWwgdmFyaWFibGVzIGBhYnN0cmFjdCcKCWFuZCBgY2FuZGlkYXRlcycuIFVzZSB0aGVtIHRvIHBpY2sgdGhlIHJpZ2h0IG1ldGhvZC4KCjIwMDAtMDYtMDYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAZmVycnVsZS5jeWdudXMuY29tPgoKCSogcGFyc2UueSAoY2hlY2tfbW9kaWZpZXJzX2NvbnNpc3RlbmN5KTogRG9uJ3Qgc3VidHJhY3Qgb3V0CglgUFVCTElDX1RLJyBmcm9tIGFyZ3VtZW50IHRvIFRISVNfTU9ESUZJRVJfT05MWS4KCjIwMDAtMDYtMDQgIFBoaWxpcHAgVGhvbWFzICA8cHRob21hc0BzdXNlLmRlPgoKCSogTWFrZWZpbGUuaW4gKElOVExMSUJTKTogTmV3LgoJKExJQlMpOiBBZGQgYWJvdmUuCgkoREVQTElCUyk6IERpdHRvLgoKMjAwMC0wNi0wMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChnZXRfZGlzcGF0Y2hfdGFibGUpOiBCdWlsZCB0aGUgdnRhYmxlIGR1bW15IGVudHJ5IGxpc3QKCWVsZW1lbnQgd2l0aCBhIG51bGwgcHVycG9zZS4gRml4ZWQgbGVhZGluZyBjb21tZW50LgoJKGJ1aWxkX2R0YWJsZV9kZWNsKTogQnVpbGQgYW4gYWNjdXJhdGUgZHRhYmxlIHR5cGUgd2hlbiBhcHByb3ByaWF0ZQoJYW5kIHVzZSBpdC4KCjIwMDAtMDYtMDIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBsYW5nLmMgKGxhbmdfZ2V0X2FsaWFzX3NldCk6IE5ldy4KCjIwMDAtMDUtMzEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocmVzb2x2ZV9maWVsZF9hY2Nlc3MpOiBDb21wbGV0ZSB0aGUgREVDTF9JTklUSUFMIHRyZWUKCWJlZm9yZSB1c2luZyBpdCBhcyB0aGUgYWNjZXNzZWQgZmllbGQuCgoyMDAwLTA1LTMxICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBqYXZhLXRyZWUuaCAoYm9vbGVhbl9hcnJheV92dGFibGUsIGJ5dGVfYXJyYXlfdnRhYmxlLAoJY2hhcl9hcnJheV92dGFibGUsIHNob3J0X2FycmF5X3Z0YWJsZSwgaW50X2FycmF5X3Z0YWJsZSwKCWxvbmdfYXJyYXlfdnRhYmxlLCBmbG9hdF9hcnJheV92dGFibGUsIGRvdWJsZV9hcnJheV92dGFibGUpOgoJRGVjbGFyZS4KCSogZXhwci5jIChnZXRfcHJpbWl0aXZlX2FycmF5X3Z0YWJsZSk6IE5ldyBmdW5jdGlvbi4KCShjcmVhdGVfcHJpbWl0aXZlX3Z0YWJsZSk6IE5ldyBmdW5jdGlvbi4KCShqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiBFbmFibGUgY29kZSB0byBzdGF0aWNhbGx5IGdlbmVyYXRlCglhcnJheXMuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDcmVhdGUgcHJpbWl0aXZlIHZ0YWJsZXMuCgkoYm9vbGVhbl9hcnJheV92dGFibGUsIGJ5dGVfYXJyYXlfdnRhYmxlLCBjaGFyX2FycmF5X3Z0YWJsZSwKCXNob3J0X2FycmF5X3Z0YWJsZSwgaW50X2FycmF5X3Z0YWJsZSwgbG9uZ19hcnJheV92dGFibGUsCglmbG9hdF9hcnJheV92dGFibGUsIGRvdWJsZV9hcnJheV92dGFibGUpOiBEZWZpbmUuCgoyMDAwLTA1LTI2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBqYXZhL3BhcnNlLnkgKGZpbmRfYXBwbGljYWJsZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCk6CglEb24ndCBhZGQgYW4gdW5pbml0aWFsaXplZCB2YWx1ZSB0byB0aGUgbGlzdC4KCjIwMDAtMDUtMjUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHJlc29sdmVfZmllbGRfYWNjZXNzKTogRG9uJ3QgY2hlY2sgREVDTF9MQU5HX1NQRUNJRklDCgl3aGVuIHRyeWluZyB0byBzZWUgaWYgZmllbGQncyBjbGFzcyBzaG91bGQgYmUgaW5pdGlhbGl6ZWQuICBBbHdheXMKCWluaXRpYWxpemUgZmllbGQncyBkZWNsYXJpbmcgY2xhc3MsIG5vdCBxdWFsaWZpZWQgY2xhc3MuCglGb3IgUFIgZ2NqLzE2Mi4KCgkqIHBhcnNlLnkgKGFycmF5X2NvbnN0cnVjdG9yX2NoZWNrX2VudHJ5KTogUGFzcyBgd2ZsX3ZhbHVlJywgbm90Cglgd2ZsX29wZXJhdG9yJywgdG8gbWF5YmVfYnVpbGRfcHJpbXR0eXBlX3R5cGVfcmVmLgoJRml4ZXMgUFIgZ2NqLzIzNS4KCjIwMDAtMDUtMjMgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAYWxiYXRyb3NzLmNvLm56PgoKICAgICAgICogcGFyc2UueSAocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBEb24ndCB0cnkgdG8gbG9va3VwIG1ldGhvZHMKICAgICAgIGluIHByaW1pdGl2ZSB0eXBlcy4KCjIwMDAtMDUtMDIgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocmVzb2x2ZV9maWVsZF9hY2Nlc3MpOiBDYWxsIHRoZSBhcHByb3ByaWF0ZSA8Y2xpbml0PgoJYmVmb3JlIGFjY2Vzc2luZyB0aGUgbGVuZ3RoIG9mIGEgc3RhdGljIGFycmF5LiBDcmFmdCBhIGRlY2wgZm9yCgl0aGUgZmllbGQgd2hpbGUgaXRzIHRpbWUuIEZpeGVzIFBSIGdjai8xMjkuCgoyMDAwLTA1LTAxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHJlc29sdmVfcGFja2FnZSk6IENvcnJlY3RseSBzZXQgYCpuZXh0JyAod2FzIG9mZiBieQoJb25lLikKCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBGaXhlZCBjb21tZW50LgoKMjAwMC0wNC0yNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqY2YtcGFyc2UuYyAoamNmX3BhcnNlX3NvdXJjZSk6IFJlc2V0IGN1cnJlbnRfY2xhc3MgYW5kCgljdXJyZW50X2Z1bmN0aW9uX2RlY2wgdG8gTlVMTCBiZWZvcmUgcGFyc2luZyBhIG5ldyBmaWxlLgoKMjAwMC0wNC0yNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChibG9ja19lbmQ6KTogSWYgdGhlIGNvbGxlY3RlZCBibG9jayBkb2Vzbid0IGZlYXR1cmUgYQoJc3RhdGVtZW50LCBpbnNlcnQgYW4gZW1wdHkgc3RhdGVtZW50LgoKMjAwMC0wNC0xNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChtYXliZV95YW5rX2NsaW5pdCk6IE5ldyBmdW5jdGlvbi4KCShtYXliZV9nZW5lcmF0ZV9wcmVfZXhwYW5kX2NsaW5pdCk6IEFsd2F5cyBsaW5rIDxjbGluaXQ+IGF0IHRoZQoJZW5kIG9mIHRoZSBsaXN0IG9mIG1ldGhvZHMgYmVsb25naW5nIHRvIGEgY2xhc3MuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kKTogQ2hlY2sgd2hldGhlciA8Y2xpbml0PiBpcyByZWFsbHkKCW5lY2Vzc2FyeSBhbmQgZXhwYW5kIGl0IGFjY29yZGluZ2x5LgoKMjAwMC0wNC0xNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChmb2xkX2NvbnN0YW50X2Zvcl9pbml0KTogTGV0IFZBUl9ERUNMIGFuZCBGSUVMRF9ERUNMIGJlCglwcm9jZXNzZWQgYnkgdGhlIG1ldGhvZCdzIHN3aXRjaCBzdGF0ZW1lbnQuCgoyMDAwLTA1LTE5ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBqYXZhLXRyZWUuaDogQWRkZWQgaW5pdCBzdGF0ZSBlbnVtLgoJKiBkZWNsLmMgKGVtaXRfaW5pdF90ZXN0X2luaXRpYWxpemF0aW9uKTogSW5pdGlhbGl6ZSBjbGFzcwoJaW5pdGlhbGl6YXRpb24gY2hlY2sgdmFyaWFibGUgYnkgbG9va2luZyBhdCBjbGFzcycgc3RhdGUuCgoyMDAwLTA1LTE5ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBqYXZhLXRyZWUuaCAoYnVpbGRfaW5zdGFuY2VvZik6IERlY2xhcmUuCgkoYnVpbGRfZ2V0X2NsYXNzKTogRGVjbGFyZS4KCSogcGFyc2UueSAocGF0Y2hfYmlub3ApOiBVc2UgYnVpbGRfaW5zdGFuY2VvZi4KCSogZXhwci5jIChidWlsZF9pbnN0YW5jZW9mKTogTmV3IGZ1bmN0aW9uLiAgSWYgY2xhc3MgaXMgZmluYWwsCglkb24ndCBtYWtlIGEgZnVuY3Rpb24gY2FsbC4KCShleHBhbmRfamF2YV9JTlNUQU5DRU9GKTogVXNlIGl0LgoJKGJ1aWxkX2dldF9jbGFzcyk6IE5ldyBmdW5jdGlvbi4KCjIwMDAtMDUtMTggIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2NsYXNzZmlsZSk6IFNjYW4gdGhlIHNvdXJjZV9maWxlIGZvcgoJc2xhc2hlcyB3aXRoIHRoZSByaWdodCBwb2ludGVyIHZhcmlhYmxlLgoKMjAwMC0wNS0xNyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogbGFuZy5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBVcGRhdGUgLVd1bnVzZWQgZmxhZ3MgYnkgY2FsbGluZwoJc2V0X1d1bnVzZWQuCgkqIGRlY2wuYyAocG9wbGV2ZWwpOiBSZXBsYWNlIHdhcm5fdW51c2VkIHdpdGggd2Fybl91bnVzZWRfbGFiZWwuCgoyMDAwLTA1LTA5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjaGVja19pbml0LmMgKGNoZWNrX2luaXQpOiBDb25zdGlmeSBsb2NhbCBjaGFyICouCgkqIGNsYXNzLmMgKHB1c2hfY2xhc3MpOiBDb25zdGlmeSBsb2NhbCBjaGFyICouCgkqIGphdmFfdHJlZS5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCSogamNmLWlvLmMgKG9wZW5fY2xhc3MpOiBDb25zdGlmeSBmaWxlbmFtZSBwYXJhbWV0ZXIgYW5kCglyZXR1cm4gdmFsdWUuCgkoZmluZF9jbGFzcyk6IFJlbW92ZSByZWR1bmRhbnQgc3RyaW5nIGNvcHkuICBDYXN0IHJldHVybiBmcm9tCglvcGVuX2NsYXNzLgoJKiBqY2YtcGFyc2UuYyAocmVhZF9jbGFzcywgcGFyc2VfY2xhc3NfZmlsZSwgeXlwYXJzZSk6CglDb25zdGlmeSBsb2NhbCBjaGFyICouCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucywgZ2VuZXJhdGVfY2xhc3NmaWxlKToKCUNvbnN0aWZ5IGxvY2FsIGNoYXIgKi4KCSogamNmLmggKEpDRik6IENvbnN0aWZ5IGZpbGVuYW1lIGFuZCBjbGFzc25hbWUuCgkoSkNGX0ZJTklTSCk6IENhc3QgYXJncyB0byBGUkVFIHRvIGNoYXIgKiB3aGVuIGFwcHJvcHJpYXRlLgoJKiBsYW5nLmMgKGluaXRfcGFyc2UpOiBDb25zdGlmeSBwYXJhbWV0ZXIgYW5kIHJldHVybiB2YWx1ZS4KCSogbGV4LmMgKGphdmFfZ2V0X2xpbmVfY29sKTogQ29uc3RpZnkgZmlsZW5hbWUgcGFyYW1ldGVyLgoJKiBwYXJzZS5oOiBDb25zdGlmeSBwYXJzZXJfY3R4dC5maWxlbmFtZS4gIFVwZGF0ZSBwcm90b3R5cGVzLgoJKiBwYXJzZS55IChqYXZhX3BhcnNlcl9jb250ZXh0X3N1c3BlbmQsCglpc3N1ZV93YXJuaW5nX2Vycm9yX2Zyb21fY29udGV4dCwgc2FmZV9sYXlvdXRfY2xhc3MpOiBDb25zdGlmeQoJbG9jYWwgY2hhciAqLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlLgoKMjAwMC0wNS0wOCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZXhwci5jIChidWlsZF9qbmlfc3R1Yik6IENhY2hlIHRoZSByZXN1bHQgb2YKCV9Kdl9Mb29rdXBKTklNZXRob2QuCgoyMDAwLTA1LTA1ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAocHJlZGVmX2ZpbGVuYW1lc19zaXplKTogTm93IDcuCgkocHJlZGVmX2ZpbGVuYW1lcyk6IE5ldyBzZXZlbnRoIGVudHJ5LgoKMjAwMC0wNS0wNCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogYm9laG0uYyAobWFya19yZWZlcmVuY2VfZmllbGRzKTogRG9uJ3QgbWFyayBSYXdEYXRhIGZpZWxkcy4KCUtlZXAgdHJhY2sgb2Ygd2hlbiB3ZSd2ZSBzZWVuIGEgcmVmZXJlbmNlIGZpZWxkIGFmdGVyIGEKCW5vbi1yZWZlcmVuY2UgZmllbGQuCgkoZ2V0X2JvZWhtX3R5cGVfZGVzY3JpcHRvcik6IEhhbmRsZSBjYXNlIHdoZXJlIHdlIHNlZQoJbm9uLXJlZmVyZW5jZSBmaWVsZHMgYnV0IG5vIHRyYWlsaW5nIHJlZmVyZW5jZSBmaWVsZC4KCSogZGVjbC5jIChyYXdkYXRhX3B0cl90eXBlX25vZGUpOiBEZWZpbmUuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJbml0aWFsaXplIHJhd2RhdGFfcHRyX3R5cGVfbm9kZS4KCSogamF2YS10cmVlLmggKHJhd2RhdGFfcHRyX3R5cGVfbm9kZSk6IERlY2xhcmUuCgoyMDAwLTA1LTA0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBqY2YtZHVtcC5jIChTUEVDSUFMX0lJTkMpOiBFbnN1cmUgYXJndW1lbnRzIG1hdGNoIGZvcm1hdAoJc3BlY2lmaWVycyBpbiBjYWxscyB0byBmcHJpbnRmLgoKMjAwMC0wNS0wMyAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGJ1aWxkX2phdmFfanNyKTogVXNlIGVtaXRfanVtcCwgbm90IGV4cGFuZF9nb3RvLgoKCSogamF2YW9wLmggKFdPUkRfVE9fSU5UKTogTmV3IGZ1bmN0aW9uLgoJKElNTUVESUFURV9zNCk6IFVzZSBXT1JEX1RPX0lOVC4KCSogamNmLmggKEpQT09MX0lOVCk6IERpdHRvLgoKCSogZ2phdmFoLmMgKGRlY29kZV9zaWduYXR1cmVfcGllY2UpOiBEb24ndCB0cmVhdCBgJCcgYXMgbmFtZXNwYWNlCglzZXBhcmF0b3IuCgoyMDAwLTA0LTE5ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kXzEpOiBTZXQgYm90aCBERUNMX0VYVEVSTkFMIGFuZCBNRVRIT0RfTkFUSVZFCglvbiBuYXRpdmUgZnVuY3Rpb24uCgkqIGpjZi1wYXJzZS5jIChwYXJzZV9jbGFzc19maWxlKTogQ2FsbCBidWlsZF9qbmlfc3R1YiBmb3IgbmF0aXZlCglKTkkgbWV0aG9kcy4KCSogZXhwci5jIChidWlsZF9qbmlfc3R1Yik6IE5ldyBmdW5jdGlvbi4KCSogbGFuZy1zcGVjcy5oOiAtZmpuaSBhbmQgLWZlbWl0LWNsYXNzLWZpbGUgYXJlIGluY29tcGF0aWJsZS4KCSogcGFyc2UuYzogUmVidWlsdC4KCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IEV4cGFuZCBhIG5hdGl2ZSBtZXRob2QKCWFuZCBjYWxsIGJ1aWxkX2puaV9zdHViIGlmIC1mam5pIGdpdmVuLgoJKiBsYW5nLW9wdGlvbnMuaDogRG9jdW1lbnQgLWZqbmkuCgkqIGxhbmcuYyAoZmxhZ19qbmkpOiBOZXcgZ2xvYmFsLgoJKGxhbmdfZl9vcHRpb25zKTogQWRkZWQgYGpuaScgZW50cnkuCgkqIGphdmEtdHJlZS5oIChzb2Z0X2xvb2t1cGpuaW1ldGhvZF9ub2RlLAoJc29mdF9nZXRqbmllbnZuZXdmcmFtZV9ub2RlLCBzb2Z0X2puaXBvcHN5c3RlbWZyYW1lX25vZGUpOgoJRGVjbGFyZS4KCShmbGFnX2puaSk6IERlY2xhcmUuCgkoYnVpbGRfam5pX3N0dWIpOiBEZWNsYXJlLgoJKHN0cnVjdCBsYW5nX2RlY2wpOiBBZGRlZCBgbmF0aXZlJyBmbGFnLgoJKE1FVEhPRF9OQVRJVkUpOiBSZWRlZmluZWQgdG8gdXNlIGBuYXRpdmUnIGZpZWxkIG9mIGxhbmcgc3BlY2lmaWMKCXN0cnVjdHVyZS4KCSogZGVjbC5jIChzb2Z0X2xvb2t1cGpuaW1ldGhvZF9ub2RlLCBzb2Z0X2dldGpuaWVudm5ld2ZyYW1lX25vZGUsCglzb2Z0X2puaXBvcHN5c3RlbWZyYW1lX25vZGUpOiBOZXcgZ2xvYmFscy4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCB0aGVtLiAgX0p2X0luaXRDbGFzcyBvbmx5IHRha2VzIG9uZQoJYXJndW1lbnQuCgoJKiBqYXZhLXRyZWUuZGVmOiBQdXQgaW50byBgQycgbW9kZS4KCjIwMDAtMDQtMjcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCglGaXggZm9yIFBSIGdjai8yOgoJKiBleHByLmMgKGV4cGFuZF9pbnZva2UpOiBHZW5lcmF0ZSBjaGVjayB0byBzZWUgaWYgb2JqZWN0IHBvaW50ZXIKCWlzIG51bGwgaW4gbm9udmlydHVhbCBpbnZvY2F0aW9uIGNhc2UuCgkqIGphdmEtdHJlZS5oIChzb2Z0X251bGxwb2ludGVyX25vZGUpOiBEZWNsYXJlLgoJKiBkZWNsLmMgKHNvZnRfbnVsbHBvaW50ZXJfbm9kZSk6IE5ldyBnbG9iYWwuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJbml0aWFsaXplIHNvZnRfbnVsbHBvaW50ZXJfbm9kZS4KCSogcGFyc2UueSAoaW52b2NhdGlvbl9tb2RlKTogUmV0dXJuIElOVk9LRV9OT05WSVJUVUFMIGZvciBgZmluYWwnCglvciBgcHJpdmF0ZScgbWV0aG9kcy4KCShwYXRjaF9pbnZva2UpOiBIYW5kbGUgSU5WT0tFX05PTlZJUlRVQUwgY2FzZS4KCjIwMDAtMDQtMjYgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogZGVjbC5jIChjb21wbGV0ZV9zdGFydF9qYXZhX21ldGhvZCk6IERvbid0IGNhbGwgX0p2X0luaXRDbGFzcwoJZnJvbSA8Y2xpbml0PgoKMjAwMC0wNC0yNiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogemV4dHJhY3QuYyAoZmluZF96aXBfZmlsZV9zdGFydCk6IE5ldyBmdW5jdGlvbi4KCShyZWFkX3ppcF9hcmNoaXZlKTogVXNlIGl0LgoKMjAwMC0wNC0yNSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChyZWdpc3Rlcl9pbmNvbXBsZXRlX3R5cGUpOiBIYW5kbGUgSkRFUF9BTk9OWU1PVVMuCgoyMDAwLTA0LTI0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGNvbW1vbl9lbmNsb3NpbmdfY29udGV4dF9wKTogTmV3IGZ1bmN0aW9uLgoJKiBqYXZhLXRyZWUuaCAoY29tbW9uX2VuY2xvc2luZ19jb250ZXh0X3ApOiBBZGRlZCBwcm90b3R5cGUuCgkqIHBhcnNlLmggKElOTkVSX0VOQ0xPU0lOR19TQ09QRV9DSEVDSyk6IFJlbGF4ZWQgdGVzdCB0byBhbGxvdwoJY2xhc3NlcyBzaGFyaW5nIGFuIG91dGVyIGNvbnRleHQgd2l0aCB0aGUgY3VycmVudCBpbnN0YW5jZS4KCSogcGFyc2UueSAoYnVpbGRfYWNjZXNzX3RvX3RoaXNuKTogRml4ZWQgbGVhZGluZyBjb21tZW50LgoJKHZlcmlmeV9jb25zdHJ1Y3Rvcl9zdXBlcik6IE5ldyBsb2NhbCBgc3VwcGVyX2lubmVyJy4gU2tpcAoJZW5jbG9zaW5nIGNvbnRleHQgYXJndW1lbnQgaW4gdGhlIGNhc2Ugb2YgaW5uZXIgY2xhc3MgY29uc3RydWN0b3JzLgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogSW5zZXJ0IHByb3BlciBjb250ZXh0IGFzIHNlY29uZAoJcGFyYW1ldGVyIHRvIHB1cmUgaW5uZXIgY2xhc3MgY29uc3RydWN0b3Igc3VwZXIgaW52b2NhdGlvbnMuCgoyMDAwLTA0LTI0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGVuZF9jbGFzc19kZWNsYXJhdGlvbik6IFJlc2V0IHRoZSBpbnRlcmZhY2UgbnVtYmVyCgljb3VudGVyLgoKMjAwMC0wNC0yNCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChzb3VyY2Vfc3RhcnRfamF2YV9tZXRob2QpOiBEZWxldGVkIHVubmVjZXNzYXJ5IGNvZGUuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBGaXhlZCBjb21tZW50LgoKMjAwMC0wNC0yNCAgUm9iZXJ0IExpcGUgPHJvYmVydGxpcGVAdXNhLm5ldD4KCgkqIHBhcnNlLmggKF9qZGVwKTogTWVtYmVyIGBraW5kJyBub3cgRU5VTV9CSVRGSUVMRC4KCjIwMDAtMDQtMjMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGJvZWhtLmMgKG1hcmtfcmVmZXJlbmNlX2ZpZWxkcyk6IFVzZSBpbnRfYnl0ZV9wb3NpdGlvbi4KCjIwMDAtMDQtMjIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGJvZWhtLmMgKG1hcmtfcmVmZXJlbmNlX2ZpZWxkcyk6IE9ubHkgY2FsbCBieXRlX3Bvc2l0aW9uIG9uCglub24tc3RhdGljIGZpZWxkcy4KCjIwMDAtMDQtMjIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGJvZWhtLmMgKG1hcmtfcmVmZXJlbmNlX2ZpZWxkcyk6IEFkZGVkIGBsYXN0X3ZpZXdfaW5kZXgnCglhcmd1bWVudC4gIFVzZSBERUNMX0ZJRUxEX09GRlNFVCB0byBkZXRlcm1pbmUgZmllbGQncyBvZmZzZXQuCgoyMDAwLTA0LTIwICBNbyBEZUpvbmcgIDxtZGVqb25nQGN5Z251cy5jb20+CgoJKiBwYXJzZS5oIChJTlRFUkZBQ0VfSU5ORVJfTU9ESUZJRVJTKTogTmV3IG1hY3JvLgoJKiBwYXJzZS55IChjaGVja19jbGFzc19pbnRlcmZhY2VfY3JlYXRpb24pOiBGaXhlZCBjb21tZW50cy4gU2VsZWN0CglwZXJtaXR0ZWQgbW9kaWZpZXJzIGZvciAoaW5uZXIpIGludGVyZmFjZXMuIENoYW5nZWQgZXJyb3IgbWVzc2FnZQoJdG8gcmVwb3J0IHJlamVjdGVkIG1vZGlmaWVycyB1c2VkIHdpdGggbG9jYWwgY2xhc3Nlcy4KCjIwMDAtMDQtMjAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UuaCAoSU5ORVJfRU5DTE9TSU5HX1NDT1BFX0NIRUNLKTogSW1tZWRpYXRlIGlubmVyIGNsYXNzZXMKCW9mIGRpcmVjdGx5IGluaGVyaXRlZCB0eXBlIGNvbnNpZGVyZWQgaW4gc2NvcGUuCgkqIHBhcnNlLnkgKGRvX3Jlc29sdmVfY2xhc3MpOiBTZWFyY2ggaW5oZXJpdGVkIGNsYXNzZXMgZm9yIGlubmVyCgljbGFzc2VzLgoKMjAwMC0wNC0yMCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogcGFyc2UueSAobm90X2FjY2Vzc2libGVfcCk6IFVzZSBtZW1iZXIncyBjbGFzcywgbm90IGN1cnJlbnQKCWNsYXNzLCB3aGVuIGRvaW5nIGluaGVyaXRhbmNlIGNoZWNrIGZvciBwcm90ZWN0ZWQgcmVmZXJlbmNlLgoJRml4ZXMgUFIgZ2NqLzEyNC4KCjIwMDAtMDQtMjAgIEphc29uIFNjaHJvZWRlciAgPHNocm9kZUBzdWJuYXR1cmUuY29tPgoKCSogamNmLWR1bXAuYyAoU1BFQ0lBTF9JSU5DKTogRml4ZWQgdHlwbyBwcmludGluZyBpaW5jIGluc3RydWN0aW9uLgoKMjAwMC0wNC0xOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChsb29rdXBfZmllbGRfd3JhcHBlcik6IFNlYXJjaCBmb3IgZmluYWwgbG9jYWwgYWxpYXNlcy4KCShyZXNvbHZlX2V4cHJlc3Npb25fbmFtZSk6IExldCBsb29rdXBfZmllbGRfd3JhcHBlciBzZWFyY2ggZm9yCglmaW5hbCBsb2NhbCBhbGlhc2VzLiBGb3JjZSB0aGUgdmFsdWUgb2YgYG5hbWUnIGlmIG9uZSBpcyBmb3VuZC4KCShxdWFsaWZ5X2FtYmlndW91c19uYW1lKTogQ09OVkVSVF9FWFBSIGlzIGVub3VnaCB0byBub3cgd2UgaGF2ZQoJYW4gZXhwcmVzc2lvbiBuYW1lLiBGaXhlZCBjb21tZW50cy4KCjIwMDAtMDQtMTkgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoeXllcnJvcik6IGBtc2cnIGNhbiBiZSBudWxsLCBkb24ndCB1c2UgaXQgaW4gdGhhdCBjYXNlLgoKMjAwMC0wNC0xOSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKGN4eF9rZXl3b3JkX3N1YnN0KTogQXZvaWQgcG90ZW50aWFsIGluZmluaXRlIGxvb3AuCgoyMDAwLTA0LTE4ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKG1heWJlX21ha2VfbmVzdGVkX2NsYXNzX25hbWUpOiBVc2UgYG9ic3RhY2tfZ3JvdzAnLgoKMjAwMC0wNC0xOCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCVBSIGdjai8yMTE6CgkqIGdqYXZhaC5jICh1dGY4X2NtcCk6IENoYW5nZWQgcmV0dXJuIHZhbHVlLgoJKGN4eF9rZXl3b3JkX3N1YnN0KTogSGFuZGxlIGFsbCBDKysga2V5d29yZHMuICBBbGxvY2F0ZSBuZXcgcmV0dXJuCglyZXN1bHQuCgkoY3h4X2tleXdvcmRzKTogTmV3IGdsb2JhbC4KCShnZXRfZmllbGRfbmFtZSk6IEhhbmRsZSBuZXcgcmVzdWx0IG9mIGN4eF9rZXl3b3JkX3N1YnN0LgoJKHByaW50X21ldGhvZF9pbmZvKTogTGlrZXdpc2UuCgoyMDAwLTA0LTE3ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCgkqIGdqYXZhaC5jIChwcmludF9uYW1lX2Zvcl9zdHViX29yX2puaSk6IERvbid0IHByZWZpeCBtZXRob2QgbmFtZXMKCXdpdGggYSBuZXdsaW5lLCBmb3IgQ05JLgoJKHByaW50X3N0dWJfb3Jfam5pKTogUHJpbnQgYSBzcGFjZSBvciBuZXdsaW5lIGJlZm9yZSBtZXRob2QgbmFtZSBmb3IKCUNOSSBhcyB3ZWxsIGFzIEpOSS4KCShwcmludF9jeHhfY2xhc3NuYW1lKTogRG9uJ3Qgd3JpdGUgbGVhZGluZyAiOjoiIGluIENOSSBzdHViIG1ldGhvZC4KCShwcm9jZXNzX2ZpbGUpOiBJbmNsdWRlIGdjai9jbmkuaCBpZiBnZW5lcmF0aW5nIENOSSBzdHVicy4KCjIwMDAtMDQtMTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChkZWNvbXBpbGVfbWV0aG9kKTogVXNlIHByaW50X2ZpZWxkX25hbWUuCglGaXhlcyBQUiBnY2ovMjA1LgoKMjAwMC0wNC0xNCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChqYXZhX2V4cGFuZF9jbGFzc2VzKTogUmV2ZXJzZSB0aGUgcGFja2FnZSBsaXN0IG9uY2UuCgkoamF2YV9jb21wbGV0ZV9saHMpOiBQTFVTX0VYUFI6IGRvbid0IHRyeSByaHMgYW5kIGxocyBhdCBzdHJpbmcKCXJlZHVjdGlvbi4KCShwYXRjaF9iaW5vcCk6IE5ldyB0ZW1wIGBjbicuIENhbGwgcGF0Y2hfc3RyaW5nIG9uIExIUy9SSFMgb2YKCXRoZSBgPT0nIGFuZCBgIT0nIG9wZXJhdG9ycy4KCjIwMDAtMDQtMDUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogQXQgaW52b2NhdGlvbiB0aW1lLAoJYWx3YXlzIHJlbGF0ZSBhbiBpbnRlcmZhY2UgbWV0aG9kIHRvIHRoZSB0eXBlIG9mIGl0cyBzZWxlY3Rvci4KCjIwMDAtMDQtMDUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCglGaXggZm9yIFBSIGdjai8yOgoJKiBleHByLmMgKGV4cGFuZF9pbnZva2UpOiBHZW5lcmF0ZSBjaGVjayB0byBzZWUgaWYgb2JqZWN0IHBvaW50ZXIKCWlzIG51bGwgaW4gbm9udmlydHVhbCBpbnZvY2F0aW9uIGNhc2UuCgkqIGphdmEtdHJlZS5oIChzb2Z0X251bGxwb2ludGVyX25vZGUpOiBEZWNsYXJlLgoJKiBkZWNsLmMgKHNvZnRfbnVsbHBvaW50ZXJfbm9kZSk6IE5ldyBnbG9iYWwuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJbml0aWFsaXplIHNvZnRfbnVsbHBvaW50ZXJfbm9kZS4KCSogcGFyc2UueSAoaW52b2NhdGlvbl9tb2RlKTogUmV0dXJuIElOVk9LRV9OT05WSVJUVUFMIGZvciBgZmluYWwnCglvciBgcHJpdmF0ZScgbWV0aG9kcy4KCShwYXRjaF9pbnZva2UpOiBIYW5kbGUgSU5WT0tFX05PTlZJUlRVQUwgY2FzZS4KCjIwMDAtMDQtMDUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCglGaXggZm9yIFBSIGdjai8xNDA6CgkqIHBhcnNlLnkgKGNoZWNrX2ZpbmFsX2Fzc2lnbm1lbnQpOiBSZWNvZ25pemUgYXNzaWdubWVudHMgdG8gdGhlCglgbGVuZ3RoJyBmaWVsZCBvZiBhbiBhcnJheSB3aGVuIGdlbmVyYXRpbmcgY2xhc3MgZmlsZXMuCgoyMDAwLTA0LTA1ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGRlY2xfaGFzaCk6IFByb3RvdHlwZSByZW1vdmVkLgoJKGRlY2xfY29tcGFyZSk6IExpa2V3aXNlLgoKMjAwMC0wNC0wNSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogcGFyc2UuaCAoVEhJU19NT0RJRklFUl9PTkxZKTogQ2hhbmdlZCBtZWFuaW5nIG9mIGB2JyBwYXJhbWV0ZXIuCgkqIHBhcnNlLnkgKGNoZWNrX21vZGlmaWVyc19jb25zaXN0ZW5jeSk6IENoZWNrIGZvciBmaW5hbC92b2xhdGlsZQoJY2xhc2guICBGaXhlcyBQUiBnY2ovMTY0LgoKMjAwMC0wNC0wNSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jOiAoamF2YV9oYXNoX2hhc2hfdHJlZV9ub2RlKTogUmVuYW1lZCBmcm9tIGBkZWNsX2hhc2gnLAoJbWFkZSBnbG9iYWwuCgkoamF2YV9oYXNoX2NvbXBhcmVfdHJlZV9ub2RlKTogUmVuYW1lZCBmcm9tIGBkZWNsX2NvbXBhcmUsIG1hZGUKCWdsb2JhbC4KCShhZGRfbWV0aG9kXzEpOiBVc2UgYGphdmFfaGFzaF9oYXNoX3RyZWVfbm9kZScgYW5kCglgamF2YV9oYXNoX2NvbXBhcmVfdHJlZV9ub2RlJy4KCSogamF2YS10cmVlLmg6IChqYXZhX2hhc2hfaGFzaF90cmVlX25vZGUpOiBQcm90b3R5cGVkLgoJKGphdmFfaGFzaF9jb21wYXJlX3RyZWVfbm9kZSk6IExpa2V3aXNlLgoJKiBwYXJzZS55IChmaW5kX2FwcGxpY2FibGVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QpOiBDcmVhdGUsCglkZWxldGUgYW5kIHVzZSBhIGhhc2ggdGFibGUgdG8gcmVtZW1iZXIgYWxyZWFkeSBzZWFyY2hlZCBpbnRlcmZhY2VzLgoKMjAwMC0wNC0wMyAgTWF0dCBXZWxzaCAgPG1kd0Bjcy5iZXJrZWxleS5lZHU+CgoJKiBqY2YtZGVwZW5kLmMgKGFkZF9lbnRyeSk6IEZpeGVkIGJ1ZyB3aGVyZSBsaXN0IHdhcyBhbHdheXMgcmVwbGFjZWQKCXdpdGggbGF0ZXN0IGVudHJ5LgoKMjAwMC0wNC0wNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYm9laG0uYyAobWFya19yZWZlcmVuY2VfZmllbGRzLCBzZXRfYml0KTogUHJvdG90eXBlLgoJKHNldF9iaXQpOiBVbi1BTlNJLWZ5IGRlZmluaXRpb24uCgoJKiBjbGFzcy5jIChpbml0X3Rlc3RfaGFzaF9uZXdmdW5jLCBkZWNsX2hhc2gsIGRlY2xfY29tcGFyZSk6CglQcm90b3R5cGUuCgoJKiBkZWNsLmMgKGVtaXRfaW5pdF90ZXN0X2luaXRpYWxpemF0aW9uKTogTGlrZXdpc2UuCgoJKiBnamF2YWguYyAoam5pX3ByaW50X2NoYXIpOiBMaWtld2lzZS4KCgkqIHBhcnNlLnkgKGNyZWF0ZV9uZXdfcGFyc2VyX2NvbnRleHQpOiBMaWtld2lzZS4KCjIwMDAtMDMtMzAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogZXhwci5jIChqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiBBZGRlZCBBbnRob255J3MgVGh1IEphbiA2IDIwMDAKCXBhdGNoIG1pc3NpbmcgaHVuay4gRml4ZWQgaW5kZW50YXRpb24uCgoyMDAwLTAzLTMwICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBnamF2YWguYyAoRF9OQU5fTUFTSyk6IE9ubHkgZGVmaW5lIGFzIHdvcmQtcmV2ZXJzZWQgd2hlbgoJSE9TVF9GTE9BVF9XT1JEU19CSUdfRU5ESUFOIGFuZCBIT1NUX1dPUkRTX0JJR19FTkRJQU4gZGlzYWdyZWUuCgoyMDAwLTAzLTI4ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLXNjYW4ueSAocG9wX2NsYXNzX2NvbnRleHQpOiBSZXNldCBgaW5uZXJfcXVhbGlmaWVyX2xlbmd0aCcKCXdoZW4gbmVnYXRpdmUgKmJlZm9yZSogdXNpbmcgaXQgYXMgYW4gYXJyYXkgaW5kZXguCgkqIENoYW5nZUxvZzogRml4ZWQgdHlwby4KCjIwMDAtMDMtMjggIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2Utc2Nhbi55IChwb3BfY2xhc3NfY29udGV4dCk6IFJlc2V0IGBpbm5lcl9xdWFsaWZpZXJfbGVuZ3RoJwoJdG8gMCB3aGVuIGl0IHJlYWNoZXMgLTEuCgoyMDAwLTAzLTI3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGpjZi1wYXJzZS5jIChnZXRfY29uc3RhbnQpOiBQcm9wZXJseSBjYXN0IGBudW0nIGR1cmluZyB0aGUKCWludm9jYXRpb24gb2YgYGFkZF9kb3VibGUnLgoJKiBqY2Ytd3JpdGUuYyAocHVzaF9sb25nX2NvbnN0KTogUHJvcGVybHkgY2FzdCBgbG8nIGJlZm9yZQoJY29tcGFyaW5nIGl0IHRvIHNob3J0IGJvdW5kcy4KCSogcGFyc2Utc2Nhbi55IChpbnRlcmZhY2VfZGVjbGFyYXRpb246KTogUnVsZSByZS1hcnJhbmdlIHNvIHRoYXQKCWBpbnRlcmZhY2VfYm9keTonIGlzIHJlZHVjZWQgYWZ0ZXIgdGhlIGN1cnJlbnQgaW50ZXJmYWNlIGlzCglwdXNoZWQuCgoyMDAwLTAzLTI2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBqdnNwZWMuYyAoanZnZW5tYWluX3NwZWMpOiBBZGQgYCV7PC4uLn0nIGNvbnN0cnVjdCBmb3IgZWFjaAoJSmF2YS1zcGVjaWZpYyBgLWYnIG9wdGlvbi4KCjIwMDAtMDMtMjYgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogT25seSBjYWxsIGluaXRpYWxpemVfc2l6ZXR5cGVzIG9uY2UuCglBZGp1c3Qgb3JkZXIgb2YgbWFraW5nIHR5cGVzLgoJTWFrZSBiaXRzaXplXypfbm9kZSB2YWx1ZXMuCgoyMDAwLTAzLTI1ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogY2xhc3MuYyAobWFrZV9maWVsZF92YWx1ZSk6IFVzZSBieXRlX3Bvc2l0aW9uLgoJKiBleHByLmMgKEpBVkFfQVJSQVlfTEVOR1RIX09GRlNFVCk6IFVzZSBieXRlX3Bvc2l0aW9uLgoJKGphdmFfYXJyYXlfZGF0YV9vZmZzZXQpOiBMaWtld2lzZS4KCSogamF2YS10cmVlLmggKE1BWUJFX0NSRUFURV9UWVBFX1RZUEVfTEFOR19TUEVDSUZJQyk6IEFkZCBjYXNlIHRvCgliemVybyBjYWxsLgoKMjAwMC0wMy0yMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChjaGVja19hYnN0cmFjdF9tZXRob2RfZGVmaW5pdGlvbnMpOiBOZXcgbG9jYWwKCWBlbmRfdHlwZV9yZWFjaGVkJy4gTWFrZSBzdXJlIHdlIGFsc28gY29uc2lkZXIgYGVuZF90eXBlJy4KCShqYXZhX2NoZWNrX2Fic3RyYWN0X21ldGhvZF9kZWZpbml0aW9ucyk6IE1ha2Ugc3VyZSB3ZSBldmVudHVhbGx5Cgljb25zaWRlciBgamF2YS5sYW5nLk9iamVjdCcuCgkobWF5YmVfdXNlX2FjY2Vzc19tZXRob2QpOiBEb24ndCB1c2UgYWNjZXNzIG1ldGhvZCBpZiBub3QgaW4gdGhlCgljb250ZXh0IG9mIGEgcHVyZSBpbm5lciBjbGFzcyBvciBpZiB0aGUgbWV0aG9kJ3MgY29udGV4dCBpcyByaWdodC4KCShmaW5kX2FwcGxpY2FibGVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QpOiBOZXcgc3RhdGljIGZsYWcKCWBvYmplY3RfZG9uZScuIERvbid0IHNlYXJjaCBhYnN0cmFjdCBjbGFzc2VzIGFzIGludGVyZmFjZXMuIEZpeGVkCglpbmRlbnRhdGlvbi4gRml4ZWQgdGhlIGBqYXZhLmxhbmcuT2JqZWN0JyBvbmx5IHNlYXJjaC4gU2VhcmNoCgljbGFzcyBpbnRlcmZhY2UocykgZmlyc3QsIHRoZW4gZnVsbHkgc2VhcmNoIGVuY2xvc2luZyBjb250ZXh0cy4KCShmaW5kX21vc3Rfc3BlY2lmaWNfbWV0aG9kc19saXN0KTogUGljayB0aGUgY2xvc2VzdCBjYW5kaWRhdGUgd2hlbgoJdGhleSdyZSBhbGwgYWJzdHJhY3QuCgoyMDAwLTAzLTIwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6IFRSWV9GSU5BTExZX0VYUFI6Cglwcm9wZXJseSBpbml0aWFsaXplIGBmaW5pc2hlZF9sYWJlbCcuIERvbid0IGVtaXQgZ290b3MgZm9yIGVtcHR5Cgl0cnkgc3RhdGVtZW50cy4KCjIwMDAtMDMtMTkgIE1hcnRpbiB2LiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGV4Y2VwdC5jIChlbWl0X2hhbmRsZXJzKTogQ2xlYXIgY2F0Y2hfY2xhdXNlc19sYXN0LgoKMjAwMC0wMy0xNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChjaGVja19tZXRob2RfdHlwZXNfY29tcGxldGUpOiBOZXcgZnVuY3Rpb24uCgkoY3JlYXRlX2NsYXNzKTogUmVzZXQgYW5vbnltb3VzIGNsYXNzIGNvdW50ZXIgb25seSB3aGVuIHNlZWluZyBhbgoJbm9uIGlubmVyIGNsYXNzZS4KCShqYXZhX2NvbXBsZXRlX2NsYXNzKTogSkRFUF9NRVRIT0Q6IERvbid0IHJlY29tcHV0ZSBzaWduYXR1cmUKCWlmIGluY29tcGxldGUuCgoyMDAwLTAzLTE3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3N0YXRpY19yZWYpOiBGaXhlZCBpbmRlbnRhdGlvbiBpbiBjb21tZW50LgoJKiBqYXZhLXRyZWUuZGVmIChUUllfRVhQUik6IEZpeGVkIHR5cG8gaW4gbmFtZS4KCShDTEFTU19MSVRFUkFMKTogTGlrZXdpc2UuCgkqIGphdmEtdHJlZS5oOiAoVFlQRV9ET1RfQ0xBU1MpOiBOZXcgbWFjcm8uCgkoc3RydWN0IGxhbmdfdHlwZSk6IE5ldyBmaWVsZCBgZG90X2NsYXNzJy4KCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogRml4ZWQgZXJyb3IgbWVzc2FnZS4KCShnZW5lcmF0ZV9jbGFzc2ZpbGUpOiBNZXRob2QgYGNsYXNzJCcgaXMgc3ludGhldGljLgoJKiBwYXJzZS55IChidWlsZF9kb19jbGFzc19tZXRob2QpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfZG90X2NsYXNzX21ldGhvZF9pbnZvY2F0aW9uKTogTGlrZXdpc2UuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IEV4cGFuZCBUWVBFX0RPVF9DTEFTUyBpZiBuZWNlc3NhcnkuCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogSGFuZGxlIENMQVNTX0xJVEVSQUwuCgkocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IExpa2V3aXNlLgoJKHBhdGNoX2luY29tcGxldGVfY2xhc3NfcmVmKTogSW52b2tlIHN5bnRoZXRpYyBtZXRob2QgaWYgbmVjZXNzYXJ5LgoJKGJ1aWxkX3RyeV9zdGF0ZW1lbnQpOiBGaXhlZCBsZWFkaW5nIGNvbW1lbnQuCgoyMDAwLTAzLTE3ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogY2xhc3MuYyAobWFrZV9maWVsZF92YWx1ZSk6IFByb3Blcmx5IGhhbmRsZSBzaXplcy4KCShnZXRfZGlzcGF0Y2hfdmVjdG9yKTogVXNlIHRyZWVfbG93X2NzdCBhbmQgaG9zdF9pbnRlZ2VycC4KCShsYXlvdXRfY2xhc3NfbWV0aG9kKTogQ291bnQgdXNpbmcgdHJlZXMuCgkqIGRlY2wuYyAocHVzaF9wcm9tb3RlZF90eXBlKTogU2V0IFRZUEVfe01JTixNQVh9X1ZBTFVFIHdpdGggY29weV9ub2RlLgoJKiBleHByLmMgKGphdmFfYXJyYXlfZGF0YV9vZmZzZXQpOiBVc2UgaW50X2JpdF9wb3NpdGlvbi4KCShidWlsZF9uZXdhcnJheSwgYnVpbGRfYW5ld2FycmF5KTogVXNlIGhvc3RfaW50ZWdlcnAgYW5kIHRyZWVfbG93X2NzdC4KCShidWlsZF9pbnZva2V2aXJ0dWFsKTogVXNlIHRyZWVfbG93X2NzdCBhbmQgZG8gY29tcHV0YXRpb25zIHdpdGggdHJlZXMuCgoyMDAwLTAzLTE2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBsYW5nLmMgKGZsYWdfaGFzaF9zeW5jaHJvbml6YXRpb24pOiBOZXcgZ2xvYmFsLgoJKGxhbmdfZl9vcHRpb25zKTogQWRkZWQgYGhhc2gtc3luY2hyb25pemF0aW9uJy4KCSogbGFuZy1vcHRpb25zLmg6IE1lbnRpb24gLWZoYXNoLXN5bmNocm9uaXphdGlvbi4KCSogamF2YS10cmVlLmggKGZsYWdfaGFzaF9zeW5jaHJvbml6YXRpb24pOiBEZWNsYXJlLgoJKiBleHByLmMgKGphdmFfbGFuZ19leHBhbmRfZXhwcik6IE9ubHkgcHVzaCBgc3luY19pbmZvJyB2YWx1ZSB3aGVuCgloYXNoIHRhYmxlIHN5bmNocm9uaXphdGlvbiBpcyBkaXNhYmxlZC4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IE9ubHkgcHVzaCBgc3luY19pbmZvJyB2YWx1ZSB3aGVuCgloYXNoIHRhYmxlIHN5bmNocm9uaXphdGlvbiBpcyBkaXNhYmxlZC4KCSogY2xhc3MuYyAobWFrZV9jbGFzc19kYXRhKTogT25seSBwdXNoIGBzeW5jX2luZm8nIGZpZWxkIHdoZW4gaGFzaAoJdGFibGUgc3luY2hyb25pemF0aW9uIGlzIGRpc2FibGVkLiAgUmVtb3ZlZCBkZWFkIGNvZGUuCgoyMDAwLTAzLTE2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBsYW5nLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IEVuYWJsZSAtV3VudXNlZCB3aGVuIC1XYWxsIGdpdmVuLgoKMjAwMC0wMy0xNSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS5oIChJTk5FUl9FTkNMT1NJTkdfU0NPUEVfQ0hFQ0spOiBEaXNyZWdhcmQgYW5vbnltb3VzCgljbGFzc2VzLgoJKiBwYXJzZS55IChwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6IEhhbmRsZSBhbm9ueW1vdXMgY2xhc3NlcwoJY3JlYXRpb24gaW4gc3RhdGljIGNvbnRleHQuCgoyMDAwLTAzLTE1ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLmggKElOTkVSX0VOQ0xPU0lOR19TQ09QRV9DSEVDSyk6IE5ldyBtYWNyby4KCSogcGFyc2UueSAocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogVXNlIGl0LgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogTGlrZXdpc2UuCgoyMDAwLTAzLTE1ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHJlZ2lzdGVyX2luY29tcGxldGVfdHlwZSk6IEpERVBfRU5DTE9TSU5HIHNldAoJZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIGRlcGVuZGVuY3kgd2hpY2ggZGljdGF0ZXMgd2hhdCB0aGUKCWN1cnJlbnQgY2xhc3MgaXMuCgkodW5yZXNvbHZlZF90eXBlX3ApOiBSZXNvbHZlZCB0eXBlcyBsaW1pdGVkIHRvIHRoZSBjdXJyZW50IGNsYXNzLgoKMjAwMC0wMy0xNSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCB0eXBlIG9mIGBzeW5jX2luZm8nIHRvIGJlCglwb2ludGVyIHRvIE9iamVjdC4KCgkqIGJvZWhtLmMgKGdldF9ib2VobV90eXBlX2Rlc2NyaXB0b3IpOiBDb3JyZWN0bHkgY29tcHV0ZSBgYml0cycuCglDb3JyZWN0bHkgY29tcHV0ZSBiaXQgbnVtYmVyIGZvciBjdXJyZW50IHNsb3QuICBaZXJvIGBoaWdoJyBhbmQKCWBsb3cnIGluIERTX0xFTkdUSCBjYXNlLiAgRG9uJ3Qgc2tpcCBpbmhlcml0ZWQgZmllbGRzLiAgVXNlCgltYXJrX3JlZmVyZW5jZV9maWVsZHMuCgkobWFya19yZWZlcmVuY2VfZmllbGRzKTogTmV3IGZ1bmN0aW9uLgoKMjAwMC0wMy0xNCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChyZWdpc3Rlcl9pbmNvbXBsZXRlX3R5cGUpOiBGaXhlZCBpbml0aWFsaXphdGlvbiBvZgoJSkRFUF9FTkNMT1NJTkcuCgoyMDAwLTAyLTI4ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLXNjYW4ueSAoaW5uZXJfcXVhbGlmaWVyLCBpbm5lcl9xdWFsaWZpZXJfbGVuZ3RoKTogTmV3CglzdGF0aWMgZ2xvYmFscy4KCShwdXNoX2NsYXNzX2NvbnRleHQsIHBvcF9jbGFzc19jb250ZXh0KTogTmV3IGZ1bmN0aW9uLgoJKGNsYXNzX2JvZHk6KTogQ2FsbCBwb3BfY2xhc3NfY29udGV4dC4KCShpbnRlcmZhY2VfYm9keTopOiBMaWtld2lzZS4KCShJTk5FUl9RVUFMSUZJRVIpOiBOZXcgbWFjcm8uCgkocmVwb3J0X2NsYXNzX2RlY2xhcmF0aW9uKTogQ2hhbmdlZCBvdXRwdXQgZm9ybWF0IGFuZCB1c2UKCUlOTkVSX1FVQUxJRklFUi4gQ2FsbCBwdXNoX2NsYXNzX2NvbnRleHQuCgoyMDAwLTAyLTE0ICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6IEFkZCBuZXcgY2FzZXMgZm9yIHVuYXJ5IGFuZCBiaW5hcnkKCXRyZWUgbm9kZXMuCgoyMDAwLTAzLTEzICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHJlc29sdmVfcGFja2FnZSk6IFNldCBgbmV4dCcgb25jZSBhIHR5cGUgbmFtZSBoYXMgYmVlbgoJcHJvZ3Jlc3NpdmVseSBkaXNjb3ZlcmVkLgoJKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IFByb3BhZ2F0ZSByZXNvbHV0aW9uIG9ubHkgaWYKCXRoZXJlIGFyZSByZW1haW5pbmcgcXVhbGlmaWVycy4gVGFrZSBpbnRvIGFjY291bnQgYHEnIG1pZ2h0IGhhdmUKCWJlZW4gY2xlYXJlZCBhZnRlciByZS1xdWFsaWZpY2F0aW9uLgoJKiBwYXJzZS55IChwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6IE5ldyBsb2NhbCBgcmVzb2x2ZWQnLgoJU2VjdGlvbiBkZWFsaW5nIHdpdGggcXVhbGlmaWVkIGV4cHJlc3Npb24gcmV3cml0dGVuIHRvIHVzZQoJcmVzb2x2ZV9maWVsZF9hY2Nlc3MuCgoyMDAwLTAzLTEzICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLmggKFBVU0hfQ1BDKTogRml4ZWQgaW5kZW50YXRpb24uCgkoREVCVUdfQ1BDKTogTmV3IG1hY3JvLgoJKFNFVF9DUENfSU5JVElBTElaRVJfU1RNVCwgU0VUX0NQQ19TVEFUSUNfSU5JVElBTElaRVJfU1RNVCwKCVNFVF9DUENfSU5TVEFOQ0VfSU5JVElBTElaRVJfU1RNVCk6IE5ldyBtYWNyb3MuCgkqIHBhcnNlLnkgKGNsYXNzX2JvZHlfZGVjbGFyYXRpb246KTogVXNlCglTRVRfQ1BDX0lOU1RBTkNFX0lOSVRJQUxJWkVSX1NUTVQuCgkobWV0aG9kX2RlY2xhcmF0aW9uOik6IENoZWNrIGZvciBudWxsIGN1cnJlbnRfZnVuY3Rpb25fZGVjbC4KCShzdGF0aWNfaW5pdGlhbGl6ZXI6KTogVXNlIFNFVF9DUENfU1RBVElDX0lOSVRJQUxJWkVSX1NUTVQuCgkoamF2YV9wYXJzZXJfY29udGV4dF9wb3BfaW5pdGlhbGl6ZWRfZmllbGQpOiBCZXR0ZXIgaGFuZGxpbmcgb2YKCWVtcHR5IGxpc3RzLgoJKG1heWJlX21ha2VfbmVzdGVkX2NsYXNzX25hbWUpOiBNYXJrIG5lc3RlZCBjbGFzcyBuYW1lIGFzCglxdWFsaWZpZWQgd2hlbiBuZWNlc3NhcnkuCgkoZW5kX2NsYXNzX2RlY2xhcmF0aW9uKTogRG9uJ3QgY2FsbCBqYXZhX3BhcnNlX2NvbnRleHRfcmVzdW1lIHdoZW4KCW9uZSBvciBtb3JlIGVycm9yIG9jY3VycmVkLgoJKGFkZF9pbm5lcl9jbGFzc19maWVsZHMpOiBVc2UgU0VUX0NQQ19JTklUSUFMSVpFUl9TVE1ULgoJKHJlZ2lzdGVyX2ZpZWxkcyk6IFVzZSBTRVRfQ1BDX1NUQVRJQ19JTklUSUFMSVpFUl9TVE1UIGFuZAoJU0VUX0NQQ19JTklUSUFMSVpFUl9TVE1ULgoJKG1ldGhvZF9oZWFkZXIpOiBDaGVjayBmb3IgaW5uZXIgY2xhc3NlcyBkZWNsYXJpbmcgc3RhdGljIG1ldGhvZHMuCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogSGFuZGxlIHNpdHVhdGlvbiB3aGVyZSBgdGhpcycKCWlzIGltcGxpZWQuCgoyMDAwLTAzLTEzICBIYW5zIEJvZWhtIDxib2VobUBhY20ub3JnPgoKCSogdHlwZWNrLmMgKGJ1aWxkX3ByaW1fYXJyYXlfdHlwZSk6IENvcnJlY3RseSBzZXQgdGhlIGhpZ2ggd29yZCB0b28uCgoyMDAwLTAzLTA5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZHMpOiBMZWF2ZSA8Y2xpbml0PiBvdXQgb2YKCW9yZGluYXJ5IG1ldGhvZHMuCgkobWF5YmVfZ2VuZXJhdGVfcHJlX2V4cGFuZF9jbGluaXQpOiBQdXQgPGNsaW5pdD4gYXQgdGhlIGVuZCBvZiB0aGUKCWxpc3Qgb2YgbWV0aG9kcyBmb3IgaW50ZXJmYWNlcy4KCjIwMDAtMDMtMDcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IFByb3Blcmx5IGhhbmRsZSBleHByZXNzaW9ucwoJdXNpbmcgYG51bGwnLgoKMjAwMC0wMy0wNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChjaGVja19maW5hbF9hc3NpZ25tZW50KTogRXh0ZW5kZWQgdG8gcHJvY2VzcwoJQ09NUE9VTkRfRVhQUi4KCShwYXRjaF9hc3NpZ25tZW50KTogSGF2ZSBjaGVja19maW5hbF9hc3NpZ25tZW50IGNhbGxlZCBvbmx5IG9uY2UuCgoyMDAwLTAzLTA3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGphdmEtdHJlZS5oIChJU19JTklUX0NIRUNLRUQpOiBOZXcgZmxhZy4KCSogY2hlY2staW5pdC5jIChjaGVja19pbml0KTogVGVzdCBhbmQgc2V0IElTX0lOSVRfQ0hFQ0tFRC4KCSogcGFyc2UueSAocGF0Y2hfc3RyaW5nKTogQ2FsbCBmb3JjZV9ldmFsdWF0aW9uX29yZGVyIG9uIHRoZQoJY29tcGxldGVkIHN0cmluZyBjb25jYXRlbmF0aW9uIHRyZWUuCgkqIGV4cHIuYyAoZm9yY2VfZXZhbHVhdGlvbl9vcmRlcik6IENhbGwgZm9yY2VfZXZhbHVhdGlvbl9vcmRlciBvbgoJZnVuY3Rpb24ncyBhcmd1bWVudHMgdG9vLgoKMjAwMC0wMy0wNiAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGRlY2wuYyAoZW1pdF9pbml0X3Rlc3RfaW5pdGlhbGl6YXRpb24pOiBNYXJrIEtFWSBhcyB1bnVzZWQuCgkqIGV4cHIuYyAoYnVpbGRfbmV3YXJyYXkpOiBDYXN0IFRSRUVfSU5UX0NTVF9MT1cgdG8gSE9TVF9XSURFX0lOVC4KCShidWlsZF9hbmV3YXJyYXkpOiBMaWtld2lzZS4KCSogcGFyc2UueSAocGF0Y2hfbmV3YXJyYXkpOiBMaWtld2lzZS4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgoyMDAwLTAzLTA2ICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBBZGRlZCBuZXcgY2xhc3MgZmllbGRzIGBkZXB0aCcsCglgYW5jZXN0b3JzJywgYW5kIGBpZHQnIHRvIGNsYXNzX3R5cGVfbm9kZS4gVXNlCglfSnZfTG9va3VwSW50ZXJmYWNlTWV0aG9kSWR4IGZvciBzb2Z0X2xvb2t1cGludGVyZmFjZW10aG9kX25vZGUuCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3NfZGF0YSk6IFB1c2ggaW5pdGlhbCB2YWx1ZXMgZm9yIG5ldyBmaWVsZHMuCgkqIGphdmEtdHJlZS5oOiBVcGRhdGVkIHByb3RvdHlwZSBmb3IgYGJ1aWxkX2ludm9rZWludGVyZmFjZScuCgkqIGV4cHIuYyAoYnVpbGRfaW52b2tlaW50ZXJmYWNlKTogQ2hhbmdlZCBwYXJhbWV0ZXJzIHRvIGFjY2VwdAoJYG1ldGhvZCcgdHJlZS4gQ2FsY3VsYXRlIGluZGV4IG9mIGBtZXRob2QnIGluIGl0cyBkZWNsYXJpbmcKCWludGVyZmFjZS4gQnVpbGQgY2FsbCB0byBfSnZfTG9va3VwSW50ZXJmYWNlTWV0aG9kSWR4LgoJKGV4cGFuZF9pbnZva2UpOiBDYWxsIGBidWlsZF9pbnZva2VpbnRlcmZhY2UnIHdpdGggbmV3IHBhcmFtZXRlcnMuCgkqIHBhcnNlLnkgKHBhdGNoX2ludm9rZSk6IENhbGwgYGJ1aWxkX2ludm9rZWludGVyZmFjZScgd2l0aCBuZXcKCXBhcmFtZXRlcnMuCgoyMDAwLTAzLTA2ICBCcnljZSBNY0tpbmxheSA8YnJ5Y2VAYWxiYXRyb3NzLmNvLm56PgoKCSogdHlwZWNrLmMgKGxvb2t1cF9kbyk6IFNlYXJjaCBzdXBlcmludGVyZmFjZXMgZmlyc3QKCXdoZW4gbG9va2luZyB1cCBhbiBpbnRlcmZhY2UgbWV0aG9kLiBGcm9tIEdvZG1hciBCYWNrCgk8Z2JhY2tAY3MudXRhaC5lZHU+CgoyMDAwLTAzLTA2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKEpBVkFfU1JDUyk6IEFkZGVkIGJvZWhtLmMsIGxleC5jLgoKMjAwMC0wMy0wMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqYXZhLXRyZWUuaCAobG9va3VwX2FyZ3VtZW50X21ldGhvZDIpOiBEZWNsYXJlZC4KCShzYWZlX2xheW91dF9jbGFzcyk6IFByb3RvdHlwZSBtb3ZlZCBmcm9tIHBhcnNlLmguCgkqIHBhcnNlLmggKHNhZmVfbGF5b3V0X2NsYXNzKTogUHJvdG90eXBlIG1vdmVkIHRvIGphdmEtdHJlZS5oLgoJKiBwYXJzZS55IChqYXZhX2NoZWNrX3JlZ3VsYXJfbWV0aG9kcyk6IExvY2FsIGBzdXBlcl9jbGFzcycgZ29uZS4KCUNhbGwgbG9va3VwX2FyZ3VtZW50X21ldGhvZDIgaW5zdGVhZCBvZiBsb29rdXBfYXJndW1lbnRfbWV0aG9kLgoJUGVyZm9ybSBtb2RpZmllciBtYXRjaCBmb3IgbWV0aG9kcyBmb3VuZCBkZWNsYXJlZCBpbiBpbXBsZW1lbnRlZAoJaW50ZXJmYWNlcy4gRml4ZWQgaW5kZW50YXRpb24gcHJvYmxlbS4gT3ZlcnJpZGluZy9oaWRpbmcgZXJyb3IKCXJlcG9ydCB0byB0YWtlIHBsYWNlIG9ubHkgZm9yIG1ldGhvZHMgZm91bmQgaW4gY2xhc3Nlcy4KCSogdHlwZWNrLmMgKGxvb2t1cF9hcmd1bWVudF9tZXRob2QpOiBDaGFuZ2VkIGxlYWRpbmcKCWNvbW1lbnQuIFJlLXdyaXR0ZW4gYnkgY2FsbGluZyBsb29rdXBfZG8uCgkobG9va3VwX2FyZ3VtZW50X21ldGhvZDIpOiBOZXcgZnVuY3Rpb24uCgkobG9va3VwX2phdmFfbWV0aG9kKTogUmUtd3JpdHRlbiBieSBjYWxsaW5nIGxvb2t1cF9kby4KCShsb29rdXBfZG8pOiBOZXcgZnVuY3Rpb24uCgoyMDAwLTAzLTAyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6IFJlbW92ZWQgZGVhZCBjb2RlLiBIYW5kbGUgKGJsYW5rKQoJZmluYWwgdmFyaWFibGVzLgoJKiBwYXJzZS55IChkZWNsYXJlX2xvY2FsX3ZhcmlhYmxlcyk6IE5ldyBsb2NhbCBgZmluYWxfcCcsIHNldCBpdAoJYW5kIHVzZSBpdCB0byBpbml0aWFsaXplIExPQ0FMX0ZJTkFMLgoJKGNoZWNrX2ZpbmFsX2Fzc2lnbm1lbnQpOiBPbmx5IGNoZWNrIEZJRUxEX0RFQ0xzLgoKMjAwMC0wMi0xNyAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKEpBVkFfT0JKUyk6IEFkZGVkIGJvZWhtLm8uCgkoYm9laG0ubyk6IE5ldyB0YXJnZXQuCgkqIE1ha2UtbGFuZy5pbiAoSkFWQV9TUkNTKTogQWRkZWQgYm9laG0uYy4KCSogamF2YS10cmVlLmggKGZsYWdfdXNlX2JvZWhtX2djKTogRGVjbGFyZS4KCShnZXRfYm9laG1fdHlwZV9kZXNjcmlwdG9yKTogRGVjbGFyZS4KCSogbGFuZy5jIChsYW5nX2Zfb3B0aW9ucyk6IEFkZGVkIGB1c2UtYm9laG0tZ2MnLgoJKGZsYWdfdXNlX2JvZWhtX2djKTogTmV3IGdsb2JhbC4KCSogbGFuZy1vcHRpb25zLmg6IEFkZGVkIC1mdXNlLWJvZWhtLWdjLgoJKiBib2VobS5jOiBOZXcgZmlsZS4KCSogY2xhc3MuYyAoZ2V0X2Rpc3BhdGNoX3RhYmxlKTogSWYgY2xhc3MgdXNlcyBhIEJvZWhtIHR5cGUKCWRlc2NyaXB0b3IsIHB1dCBpdCBpbiB0aGUgdnRhYmxlLgoJKG1ha2VfY2xhc3NfZGF0YSk6IFJlbW92ZWQgZGVhZCBjb2RlLgoKMjAwMC0wMy0wMyAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogIEluaXRpYWxpemUgc2l6ZXR5cGUgcHJvcGVybHkuCgoyMDAwLTAzLTAxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGphdmEtdHJlZS5oIChMT0NBTF9DTEFTU19QKTogTmV3IGZsYWcgdXNhZ2UgYW5kIG1hY3JvLgoJKFBVUkVfSU5ORVJfQ0xBU1NfREVDTF9QLCBQVVJFX0lOTkVSX0NMQVNTX1RZUEVfUCk6IE5ldyBtYWNyb3MuCgkqIGpjZi1kdW1wLmMgKEhBTkRMRV9JTk5FUkNMQVNTRVNfQVRUUklCVVRFKTogTmV3IG1hY3JvLgoJKiBqY2YtcGFyc2UuYyAoSEFORExFX0lOTkVSQ0xBU1NFU19BVFRSSUJVVEUpOiBMaWtld2lzZS4KCShqY2ZfcGFyc2UpOiBOZXcgbG9jYWwgYGN1cnJlbnQnLiBMb2FkIGlubmVyY2xhc3NlcyBzZWVuIGluIG91dGVyCgljb250ZXh0IGJlaW5nIHByb2Nlc3NlZC4KCSogamNmLXJlYWRlci5jIChIQU5ETEVfSU5ORVJDTEFTU0VTX0FUVFJJQlVURSk6IE5ldyBtYWNyby4KCSogamNmLXdyaXRlLmMgKGFwcGVuZF9pbm5lcmNsYXNzZXNfYXR0cmlidXRlKTogTmV3IGZ1bmN0aW9uLgoJKGFwcGVuZF9pbm5lcmNsYXNzZXNfYXR0cmlidXRlX2VudHJ5KTogTGlrZXdpc2UuCgkoZ2V0X2FjY2Vzc19mbGFncyk6IEhhbmRsZSBzdGF0aWMgY2xhc3Nlcy4gU2V0IGFub255bW91cyBhbmQgbG9jYWwKCWNsYXNzZXMgdG8gYmUgcHJpdmF0ZS4KCShnZW5lcmF0ZV9jbGFzc2ZpbGUpOiBBdHRyaWJ1dGUgY291bnQgYWRqdXN0ZWQuIENhbGwKCWFwcGVuZF9pbm5lcmNsYXNzZXNfYXR0cmlidXRlLgoJKiBwYXJzZS5oIChTS0lQX1RISVNfQU5EX0FSVElGSUNJQUxfUEFSTVMpOiBVc2UKCVBVUkVfSU5ORVJfQ0xBU1NfVFlQRV9QLgoJKiBwYXJzZS55IChwYXJzZXJfcXVhbGlmaWVkX2NsYXNzbmFtZSk6IE5ldyBwYXJhbWV0ZXIgYGlzX3N0YXRpYycsCglwcm9kdWNlIG5vbiBxdWFsaWZpZWQgbmFtZSBhY2NvcmRpbmdseS4KCShibG9ja19zdGF0ZW1lbnQ6KTogU2V0IExPQ0FMX0NMQVNTX1Agd2hlbiBkZWNsYXJpbmcgbG9jYWwgY2xhc3MuCgkoY3JlYXRlX2ludGVyZmFjZSk6IEFkZGVkIGFyZ3VtZW50IHRvIHBhcnNlcl9xdWFsaWZpZWRfY2xhc3NuYW1lLgoJKGNyZWF0ZV9jbGFzcyk6IEFkZGVkIGFyZ3VtZW50IHRvIHBhcnNlcl9xdWFsaWZpZWRfY2xhc3NuYW1lLiBTZXR1cAoJYWxpYXMgZm9yIHRvcCBsZXZlbCBjbGFzc2VzLiBVc2UgUFVSRV9JTk5FUl9DTEFTU19ERUNQX1AuCgkoYWRkX2lubmVyX2NsYXNzX2ZpZWxkcyk6IEZpeGVkIGluZGVudGF0aW9uLgoJKG1ldGhvZF9kZWNsYXJhdG9yKTogVXNlIFBVUkVfSU5ORVJfQ0xBU1NfREVDUF9QLgoJKG1ldGhvZF9kZWNsYXJhdG9yKTogRml4ZWQgdHlwbyBpbiBjb21tZW50LgoJKGNyYWZ0X2NvbnN0cnVjdG9yKTogVXNlIFBVUkVfSU5ORVJfQ0xBU1NfREVDUF9QLgoJKGJ1aWxkX2N1cnJlbnRfdGhpc24pOiBMaWtld2lzZS4KCShwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6IExpa2V3aXNlLgoKMjAwMC0wMy0wMSAgTWFydGluIHZvbiBMb2V3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBkZWNsLmMgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCk6IE1vdmUgdG8gdG9wbGV2LmMuCgoyMDAwLTAyLTI4ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogamF2YS10cmVlLmggKExBQkVMX1BDKTogUmVsZWN0IG5hbWUgY2hhbmdlcyBpbiAuLi90cmVlLmguCgkoREVDTF9CSVRfSU5ERVgpOiBVc2UgdW5kZXJseWluZyByZXByZXNlbnRhdGlvbi4KCSogcGFyc2UuaCAoREVDTF9JTkhFUklURURfU09VUkNFX0xJTkUpOiBMaWtld2lzZS4KCjIwMDAtMDItMjcgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKGJ1aWxkX2phdmFfcmV0KTogUGFzcyBwcm9wZXIgdHlwZSB0byBzaXplX2Jpbm9wLgoKMjAwMC0wMi0yNSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGJ1aWxkX2NsYXNzX2luaXQpOiBNYXJrIHRoZSBkZWNsIHRvIGJlIGlnbm9yZWQgYnkKCWNoZWNrX2luaXQuCgkqIGphdmEtdHJlZS5oIChERUNMX0JJVF9JTkRFWCk6IE1vdmUgZGVmaW5pdGlvbiBmcm9tIGNoZWNrLWluaXQuYwoJKiBjaGVjay1pbml0LmM6IE1vdmUgREVDTF9CSVRfSU5ERVggdG8gamF2YS10cmVlLmgKCSogY2xhc3MuYyAoaW5pdF90ZXN0X2hhc2hfbmV3ZnVuYyk6IE5ldyBmdW5jdGlvbi4KCShkZWNsX2hhc2gpOiBOZXcgZnVuY3Rpb24uCgkoZGVjbF9jb21wYXJlKTogTmV3IGZ1bmN0aW9uLgoJKiBkZWNsLmMgKGVtaXRfaW5pdF90ZXN0X2luaXRpYWxpemF0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGNvbXBsZXRlX3N0YXJ0X2phdmFfbWV0aG9kKTogVHJhdmVyc2UgdGhlIGluaXQgdGVzdCBoYXNodGFibGUsCgljYWxsaW5nIGVtaXRfaW5pdF90ZXN0X2luaXRpYWxpemF0aW9uLgoJKGFsd2F5c19pbml0aWFsaXplX2NsYXNzX3ApOiBEZWZpbmUuCgkqIGV4cHIuYyAoYnVpbGRfY2xhc3NfaW5pdCk6IFVzZSBpbml0aWFsaXphdGlvbiB0ZXN0cyB3aGVuCgllbWl0dGluZyBjbGFzcyBpbml0aWFsaXphdGlvbiBjb2RlLgoJKGFsd2F5c19pbml0aWFsaXplX2NsYXNzX3ApOiBEZWNsYXJlLgoJKiBqY2YtcGFyc2UuYyAocGFyc2VfY2xhc3NfZmlsZSk6IFNldCBhbHdheXNfaW5pdGlhbGl6ZV9jbGFzc19wIHRvCgkxLgoJKiBqYXZhLXRyZWUuaDogSW5jbHVkZSBoYXNoLmguCgkoREVDTF9GVU5DVElPTl9JTklUX1RFU1RfVEFCTEUpOiBEZWZpbmUuCgkoc3RydWN0IGxhbmdfZGVjbCk6IEFkZCBpbml0X3Rlc3RfdGFibGUgZmllbGQuCgkoaW5pdF90ZXN0X2hhc2hfZW50cnkpOiBEZWZpbmUuCgoyMDAwLTAyLTI1ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChtYWluKTogQXZvaWQgdXNpbmcgYGFyZ2knIHRvIHJlcG9ydCB1bmltcGxlbWVudGVkCglvcHRpb25zLgoKMjAwMC0wMi0yNSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBUUllfRklOQUxMWV9FWFBSOgoJaW5pdGlhbGl6ZSBsb2NhbHMgdG8gYXZvaWQgd2FybmluZ3MuIExvY2FsIGBleGNlcHRpb25fdHlwZScgbW92ZWQKCWludG8gaWYgc3RhdGVtZW50LgoKMjAwMC0wMi0yNSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChyZXNvbHZlX2V4cHJlc3Npb25fbmFtZSk6IFVzZSBgb3JpZycgYXMgYSBzZWNvbmQKCWFyZ3VtZW50IHRvIHJlc29sdmVfZmllbGRfYWNjZXNzLgoJKHJlc29sdmVfZmllbGRfYWNjZXNzKTogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBjb2RlIHdoZW4gZGVhbGluZyB3aXRoCglzdGF0aWMgZmllbGRzLgoKMjAwMC0wMi0yMyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChwdXNoX3N1cGVyX2ZpZWxkKTogRG9uJ3QgcHVzaCB0aGUgZmllbGQgdHdpY2UuCgkqIGpjZi1wYXJzZS5jIChwYXJzZV9zb3VyY2VfZmlsZSk6IENhbGwgamF2YV9yZW9yZGVyX2ZpZWxkcy4KCSogcGFyc2UuaCAoamF2YV9yZW9yZGVyX2ZpZWxkcyk6IFByb3RvdHlwZWQuCgkqIHBhcnNlLnkgKGphdmFfcmVvcmRlcl9maWVsZHMpOiBOZXcgZnVuY3Rpb24uCgkoamF2YV9sYXlvdXRfY2xhc3MpOiBTaW1wbGlmaWVkIG5vdCB0byB3b3JyeSBhYm91dCByZS1vcmRlcmluZy4KCjIwMDAtMDItMjMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChwcmludF9uYW1lKTogSW4gSk5JIGNhc2UsIGNvcnJlY3RseSBxdW90ZSBzdHJpbmcuCgkocHJpbnRfbWV0aG9kX2luZm8pOiBEb24ndCBoYW5kbGUgb3ZlcnJpZGVzIGluIEpOSSBtb2RlLgoKMjAwMC0wMi0yMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IGBfSnZfSXNJbnN0YW5jZU9mJyByZXR1cm5lZAoJdmFsdWUgdHlwZSBzZXQgdG8gYGJvb2xlYW5fdHlwZV9ub2RlJy4KCjIwMDAtMDEtMTggIEpvZXJnIEJydW5zbWFubiAgPGpvZXJnLmJydW5zbWFubkBmZXJudW5pLWhhZ2VuLmRlPgoKCSogamNmLWR1bXAuYyAobWFpbik6IFRlc3QgZm9yIGNvcnJlY3QgY29uZGl0aW9uIGFmdGVyCglvdXRwdXQgZmlsZSBjcmVhdGlvbi4KCjIwMDAtMDItMTkgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBjeWdudXMuY29tPgoKCSogamNmLWRlcGVuZC5jIChhZGRfZW50cnkpOiBGaXggdGVzdCBmb3IgZmlyc3QgbGlzdCBlbnRyeS4KCjIwMDAtMDItMTkgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjbGFzcy5jIChidWlsZF9jbGFzc19yZWYsIHB1c2hfc3VwZXJfZmllbGQpOiBTZXQgREVDTF9TSVpFX1VOSVQuCgkqIGNvbnN0YW50cy5jIChidWlsZF9jb25zdGFudHNfY29uc3RydWN0b3IpOiBMaWtld2lzZS4KCjIwMDAtMDItMTkgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBjeWdudXMuY29tPgoKCSogamNmLWRlcGVuZC5jIChhZGRfZW50cnkpOiBBZGQgZW50cmllcyB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LgoKMTk5OS0xMS0wMyAgUGVra2EgTmlrYW5kZXIgIDxwZWtrYS5uaWthbmRlckBodXQuZmk+CgoJKiBkZWNsLmMgKElOVF9UWVBFX1NJWkUpOiBEZWZpbmUgaWYgbmVjZXNzYXJ5LgoJKGV4cGFuZF9qYXZhX3JldHVybik6IEhhbmRsZSB0aGUgY2FzZSBvZiBhIG5hdGl2ZSBpbnRlZ2VyIHNtYWxsZXIKCXRoYW4gYSBKVk0gaW50ZWdlci4KCjIwMDAtMDItMTggIE1hcnRpbiB2b24gTG9ld2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZ2phdmFoLmMgKGhlbHApOiBVc2UgR0NDQlVHVVJMLgoJKiBqdi1zY2FuLmMgKGhlbHApOiBMaWtld2lzZS4KCSogamNmLWR1bXAuYyAoaGVscCk6IExpa2V3aXNlLgoKMjAwMC0wMi0xNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBEb24ndCBnZW5lcmF0ZSBlbXB0eQoJYGZpbmFsbHknIGNsYXVzZXMuCgoyMDAwLTAyLTE3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGpjZi1wYXJzZS5jIChsb2FkX2NsYXNzKTogQ2FsbCBgZmF0YWwnIGlmIG5vIGZpbGUgY29udGFpbmluZwoJdGhlIHRhcmdldCBjbGFzcyBhcmUgZm91bmQuCgoyMDAwLTAyLTE2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoUEFSU0VfQywgUEFSU0VfU0NBTl9DKTogTW92ZSBkZXBlbmRlbmNpZXMgb24KCWxleC5jLCBsZXguaCwgYW5kIFBBUlNFX0ggdG8uLi4KCShwYXJzZS5vLCBwYXJzZS1zY2FuLm8pOiAuLi5oZXJlLCByZXNwZWN0aXZlbHkuCgoJKiBsZXguYzogU3BsaXQgb3V0IGNvZGUgdGhhdCBtYXkgdHJpZ2dlciBTSUdGUEUgZnJvbSB5eWxleCgpCgl0byBpdHMgb3duIGZ1bmN0aW9uLgoJKiBsZXguaCAoSkFWQV9GTE9BVF9SQU5HRV9FUlJPUik6IERvbid0IHNldCB2YWx1ZS4KCjIwMDAtMDItMTYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2UtbGFuZy5pbiAoanZzcGVjLm8pOiBEZXBlbmQgb24gJChHQ0NfSCksIG5vdCBnY2MuaC4KCjIwMDAtMDItMTUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAob3V0ZXJfZmllbGRfYWNjZXNzX3ApOiBTdG9wIGluIHRpbWUgd2hlbiBvdXRlciBjb250ZXh0cwoJYXJlIGV4aGF1c3RlZC4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBQcm9wZXJseSBxdWFsaWZ5ICpldmVyeXRoaW5nKgoJYWZ0ZXIgYSBwYWNrYWdlLnR5cGUgdG8gYmUgcmVzb2xlZCBhcyBleHByZXNzaW9uIG5hbWVzLgoJKGZpbmRfYXBwbGljYWJsZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCk6IFNhdmUvcmVzdG9yZSBgY2xhc3MnIHRvCglpc29sYXRlIGl0IGZyb20gYSBwb3NzaWJsZSBvdXRlciBjb250ZXh0IHNlYXJjaC4KCjIwMDAtMDItMTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChqbmlfcHJpbnRfY2hhcik6IE5ldyBmdW5jdGlvbi4KCShwcmludF9mdWxsX2N4eF9uYW1lKTogVXNlIGl0LgoJKGRlY29kZV9zaWduYXR1cmVfcGllY2UpOiBMaWtld2lzZS4KCShwcmludF9jeHhfY2xhc3NuYW1lKTogTGlrZXdpc2UuCgoyMDAwLTAyLTE1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoanYtc2NhbiwgamNmLWR1bXAsIGdjamgpOiBEZXBlbmQgb24gYW5kIGxpbmsgd2l0aAoJdmVyc2lvbi5vLgoJKGpjZi1kdW1wLm8sIGdqYXZhaC5vLCBqdi1zY2FuLm8pOiBEZXBlbmQgb24gdmVyc2lvbi5oLgoKCSogZ2phdmFoLmM6IEluY2x1ZGUgdmVyc2lvbi5oLgoKCSogamNmLWR1bXAuYzogTGlrZXdpc2UuCgoJKiBqdi1zY2FuLmM6IExpa2V3aXNlLgoKMjAwMC0wMi0xMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChvdXRlcl9maWVsZF9hY2Nlc3NfZml4KTogRmlyc3QgcGFyYW1ldGVyIG5vdyBhIHRyZWUKCW5vZGUuIENoZWNrIGZvciBhc3NpZ25tZW50IHRvIGZpbmFsLiBGaXJzdCBhcmd1bWVudCB0bwoJYnVpbGRfb3V0ZXJfZmllbGRfYWNjZXNzX2ZpeCBtb2RpZmllZCB0byBhY2NvbW1vZGF0ZSBwcm90b3R5cGUuCgkoYnVpbGRfb3V0ZXJfZmllbGRfYWNjZXNzKTogRG9uJ3QgY2hlY2sgZm9yIGFzc2lnbm1lbnQgdG8gZmluYWwKCWhlcmUuCgkoamF2YV9jb21wbGV0ZV9saHMpOiBNT0RJRllfRVhQUiBjYXNlOiBDaGVjayBmb3IgYGVycm9yX21hcmtfbm9kZScKCXBvc3NpYmx5IHJldHVybmVkIGJ5IG91dGVyX2ZpZWxkX2FjY2Vzc19maXguIENoYW5nZWQKCW91dGVyX2ZpZWxkX2FjY2Vzc19maXgncyBmaXJzdCBhcmd1bWVudC4KCShjaGVja19maW5hbF9hc3NpZ25tZW50KTogJGZpbml0JCdzIGNvbnRleHQgaXMgT0suCgkocGF0Y2hfdW5hcnlvcCk6IFVzZSBub2RlIGluc3RlYWQgb2YgaXRzIGxpbmUvY29sdW1uIHZhbHVlIHdoZW4KCWNhbGxpbmcgb3V0ZXJfZmllbGRfYWNjZXNzX2ZpeC4KCjIwMDAtMDItMTEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoaW50ZXJmYWNlX2RlY2xhcmF0aW9uOik6IE5vIGxvbmdlciB0YWdnZWQKCTxub2RlPi4gUmUtaW5zdGFsbGVkIGRlZmF1bHQgYWN0aW9uLgoJKGNsYXNzX21lbWJlcl9kZWNsYXJhdGlvbjopOiBIYW5kbGUgaW5uZXIgaW50ZXJmYWNlcy4KCShpbnRlcmZhY2VfbWVtYmVyX2RlY2xhcmF0aW9uKTogSGFuZGxlIGlubmVyIGludGVyZmFjZXMgYW5kCgljbGFzc2VzLgoJKGNyZWF0ZV9pbnRlcmZhY2UpOiBQdXNoIGVycm9yIGlmIG9uZSBzZWVuLiBTdXNwZW5kIHBhcnNpbmcKCWNvbnRleHQgd2hlbiBwcm9jZXNzaW5nIGFuIGlubmVyIGludGVyZmFjZS4KCShyZWdpc3Rlcl9maWVsZHMpOiBJbm5lciBjbGFzcyBzdGF0aWMgZmllbGQgbGltaXRhdGlvbnMgbm90IHRvCglhcHBseSB0byBpbm5lciBpbnRlcmZhY2VzLgoKMjAwMC0wMi0xMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqY2YtcGFyc2UuYyAobG9hZF9jbGFzcyk6IFVwZGF0ZSBgamF2YV9lcnJvcl9jb3VudCcgd2hlbiBhCgljbGFzcycgZmlsZSBjYW4ndCBiZSBmb3VuZC4KCShwYXJzZS55KTogQXZvaWQgKGJ5dGUpY29kZSBnZW5lcmF0aW9uIHdoZW4gZXJyb3JzIHNlZW4uCgoyMDAwLTAyLTEwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfbGhzKTogSGFuZGxlIFRSVU5DX0RJVl9FWFBSLiBFbnN1cmUgYGZhdGFsJwoJZGVjb2RlcyBhIHZhbGlkIG5vZGUuCgkocGF0Y2hfYmlub3ApOiBIYW5kbGUgVFJVTkNfRElWX0VYUFIuCgoyMDAwLTAyLTEwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHJlc29sdmVfcGFja2FnZSk6IE5ldyBsb2NhbCBgYWNjJy4gVHJ5IHRvIHByb2dyZXNzaXZlbHkKCWJ1aWxkIGFuZCBndWVzcyBhIHBhY2thZ2UgYW5kIHR5cGUgbmFtZS4KCjIwMDAtMDItMTAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoZmluZF9hcHBsaWNhYmxlX2FjY2Vzc2libGVfbWV0aG9kc19saXN0KTogTG9hZCBhbmQKCWxheW91dCB0aGUgc2VhcmNoIGNsYXNzIGlmIG5lY2Vzc2FyeS4KCShqYXZhX2NvbXBsZXRlX3RyZWUpOiBLZWVwIHRvIG9yaWdpbmFsIHR5cGUgb2YgdGhlIGZvbGRlZCBpbml0aWFsCgl2YWx1ZS4KCjIwMDAtMDItMDkgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAobGF5b3V0X2NsYXNzKTogU2V0IGFuZCB0ZXN0IENMQVNTX0JFSU5HX0xBSURPVVQuCglHZW5lcmF0ZSBlcnJvciBtZXNzYWdlIGlmIGNpcmN1bGFyaXR5IGlzIGRldGVjdGVkLiBOZXcgc3RhdGljCglsb2NhbCBgbGlzdCcuCgkqIGphdmEtdHJlZS5oIChDTEFTU19CRUlOR19MQUlET1VUKTogTmV3IGZsYWcgdXNhZ2UsIG5ldyBtYWNyby4gICoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogVmVyeSBzaW1wbHkgaGFuZGxlCglTQVZFX0VYUFIuCgkqIHBhcnNlLnkgKGphdmFfY2hlY2tfY2lyY3VsYXJfcmVmZXJlbmNlKTogVXNlCglgY3ljbGljX2luaGVyaXRhbmNlX3JlcG9ydCcgZHVyaW5nIHJlcG9ydCwgaWYgbmVjZXNzYXJ5LgoJKGphdmFfY29tcGxldGVfbGhzKTogZml4ZWQgY29tbWVudCB3aXRoIGBUSFJPV19FWFBSOicgY2FzZS4gQXZvaWQKCXdhbGtpbmcgTkVXX0FSUkFZX0lOSVQgdHdpY2UuCgoyMDAwLTAyLTA5ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChjaGVja19jbGFzc19pbnRlcmZhY2VfY3JlYXRpb24pOiBBbGxvdyBpbm5lciBjbGFzc2VzIHRvCgliZSBgcHJpdmF0ZScgb3IgYHByb3RlY3RlZCcsIGNoZWNrIG1vZGlmaWVycycgY29uc2lzdGVuY3kuIFByZXZlbnQKCWJsb2NrIGxvY2FsIGNsYXNzZXMgZnJvbSBiZWFyaW5nIGFueSBtb2RpZmllcnMuCgoyMDAwLTAyLTEwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBleGNlcHQuYyAoY2hlY2tfc3RhcnRfaGFuZGxlcnMpOiBSZS1hZGQgcHJvdG90eXBlIGxvc3QgaW4gbGFzdAoJcGF0Y2guCgkobWF5YmVfc3RhcnRfdHJ5KTogUmVtb3ZlIGV4Y2VzcyBhcmd1bWVudCB0byBgY2hlY2tfc3RhcnRfaGFuZGxlcnMnLgoKMjAwMC0wMi0wOSAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGNsZWFyX2JpbmRpbmdfbGV2ZWwpOiBSZW1vdmUgZXhjZXNzIGluaXRpYWxpemVyLgoJKG1heWJlX3BvcGxldmVscyk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCgkoZm9yY2VfcG9wbGV2ZWxzKTogRGl0dG8uCgkoc3RydWN0IGJpbmRpbmdfbGV2ZWwpOiBBZGQgY29tbWVudC4KCjIwMDAtMDItMDcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2NsYXNzZmlsZSk6IERvbid0IGNvbnNpZGVyCglwcmUtaW5pdGlhbGl6YXRpb24gd2l0aCByZWZlcmVuY2UgdmFsdWUgKHVzZSA8Y2xpbml0PiBpbnN0ZWFkLikKCSogcGFyc2UueSAoamF2YV9maXhfY29uc3RydWN0b3JzKTogTm8gZ2VuZXJhdGVkIGNvbnN0cnVjdG9yIGZvcgoJaW50ZXJmYWNlcy4KCShidWlsZF9vdXRlcl9maWVsZF9hY2Nlc3MpOiBSZW1vdmVkIGRlYnVnIG1lc3NhZ2UuCgkob3V0ZXJfZmllbGRfZXhwYW5kZWRfYWNjZXNzX3ApOiBBZGFwdGVkIHRvIGJ5dGVjb2RlIGdlbmVyYXRpb24uCgkoYnVpbGRfb3V0ZXJfZmllbGRfYWNjZXNzX21ldGhvZCk6IFVzZSBmaXhfbWV0aG9kX2FyZ3VtZW50X25hbWVzLgoJKGJ1aWxkX291dGVyX21ldGhvZF9hY2Nlc3NfbWV0aG9kKTogRml4ZWQgaW5kZW50YXRpb24uIEFkZGVkCgljb21tZW50LiBIYW5kbGUgYWNjZXNzIG1ldGhvZCBnZW5lcmF0aW9uIGZvciBzdGF0aWMgYW5kIGFsc28gdm9pZAoJbWV0aG9kcy4KCShidWlsZF9hY2Nlc3NfdG9fdGhpc24pOiBJbnNlcnRlZCBkZWJ1ZyBtZXNzYWdlLgoJKG1heWJlX2J1aWxkX3RoaXNuX2FjY2Vzc19tZXRob2QpOiBVc2UgZml4X21ldGhvZF9hcmd1bWVudF9uYW1lcy4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBGaXhlZCBjb21tZW50LgoJKG5vdF9hY2Nlc3NpYmxlX3ApOiBBZGFwdGVkIHRvIGJ5dGVjb2RlIGdlbmVyYXRpb24uIEFkZGVkIGNvbW1lbnQuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBBZGRlZCBjb21tZW50LgoJKG1heWJlX3VzZV9hY2Nlc3NfbWV0aG9kKTogRml4ZWQgbGVhZGluZyBjb21tZW50LiBIYW5kbGUgc3RhdGljCgltZXRob2RzLgoJKGphdmFfY29tcGxldGVfbGhzKTogRG9uJ3Qgc2hvcnRjdXQgaGFuZGxpbmcgb2YgaW5pdGlhbGl6ZWQgdXBvbgoJZGVjbGFyYXRpb24gU3RyaW5nIHR5cGUgc3RhdGljIGZpZWxkcyB3aGVuIGdlbmVyYXRpbmcgYnl0ZWNvZGUuCgkocGF0Y2hfdW5hcnlvcCk6IEhhbmRsZSBvdXRlciBmaWVsZCBhY2Nlc3Mgd2hlbiBnZW5lcmF0aW5nCglieXRlY29kZS4KCjIwMDAtMDItMDMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamF2YS10cmVlLmggKEZJRUxEX1RISVNOKTogTmV3IG1hY3JvLgoJKiBqY2Ytd3JpdGUuYyAoYXBwZW5kX3N5bnRoZXRpY19hdHRyaWJ1dGUpOiBOZXcgZnVuY3Rpb24uCgkoZ2VuZXJhdGVfY2xhc3NmaWxlKTogU2V0ICJTeW50aGV0aWMiIGF0dHJpYnV0ZSBvbiB0aGlzJDxuPiwKCXZhbCQ8bmFtZT4gZmllbGRzLCBhY2Nlc3MkPG4+IGFuZCAkZmluaXQkIG1ldGhvZHMuIEZpeGVkIGluZGVudGF0aW9uLgoJKiBwYXJzZS55IChhZGRfaW5uZXJfY2xhc3NfZmllbGRzKTogU2V0IEZJRUxEX1RISVNOIGZvciBjcmVhdGVkCgl0aGlzJDxuPiBmaWVsZHMuCgkoYnVpbGRfb3V0ZXJfZmllbGRfYWNjZXNzKTogVHVybmVkIG9uIGFjY2VzcyBmdW5jdGlvbnMgdXNhZ2UgYW5kCglnZW5lcmF0aW9uIHdoZW4gY29tcGlsaW5nIHRvIGJ5dGVjb2RlLgoJKG1heWJlX3VzZV9hY2Nlc3NfbWV0aG9kKTogTGlrZXdpc2UuCgoyMDAwLTAxLTI1ICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIGphdmEtZXhjZXB0LmggKHN0cnVjdCBlaF9yYW5nZSk6IEFkZCBgZXhwYW5kZWQnIGZpZWxkLgoJKG1heWJlX3N0YXJ0X3RyeSk6IEFkZCBlbmRfcGMgYXJnLgoJKG1heWJlX2VuZF90cnkpOiBEaXR0by4KCSogamF2YS10cmVlLmggKGZvcmNlX3BvcGxldmVscyk6IG5ldyBmdW5jdGlvbi4KCSogZXhwci5jIChleHBhbmRfYnl0ZV9jb2RlKTogRG9uJ3QgY2FsbCBtYXliZV9zdGFydF90cnkgb3IKCW1heWJlX2VuZF90cnkuCgkqIGV4Y2VwdC5jIChhZGRfaGFuZGxlcik6IFJlc2V0IGV4cGFuZGVkLgoJKGV4cGFuZF9zdGFydF9qYXZhX2hhbmRsZXIpOiBTZXQgZXhwYW5kZWQuCgkoY2hlY2tfc3RhcnRfaGFuZGxlcnMpOiBEb24ndCBleHBhbmQgYSBzdGFydCBoYW5kbGVyIHRoYXQncwoJYWxyZWFkeSBiZWVuIGV4cGFuZGVkLgoJKG1heWJlX3N0YXJ0X3RyeSk6IEFkZCBlbmRfcGMgYXJnLiAgT25seSBleHBhbmQgYSBoYW5kbGVyIHdoaWNoCgllbmRzIGFmdGVyIGVuZF9wYy4KCShleHBhbmRfZW5kX2phdmFfaGFuZGxlcik6IGNhbGwgZm9yY2VfcG9wbGV2ZWxzLgoJKGZvcmNlX3BvcGxldmVscyk6IG5ldyBmdW5jdGlvbi4KCSogZGVjbC5jIChiaW5kaW5nX2xldmVsKTogQWRkIHN0YXJ0X3BjIG9mIGJpbmRpbmcgbGV2ZWwuCgkobWF5YmVfcHVzaGxldmVscyk6IENhbGwgbWF5YmVfc3RhcnRfdHJ5IHdoZW4gcHVzaGluZyBiaW5kaW5nCglsZXZlbHMuCgkobWF5YmVfcG9wbGV2ZWxzKTogQ2FsbCBtYXliZV9lbmRfdHJ5IHdoZW4gcG9wcGluZyBiaW5kaW5nIGxldmVscy4KCShMQVJHRVNUX1BDKTogRGVmaW5lLgoJKGNsZWFyX2JpbmRpbmdfbGV2ZWwpOiBVc2UgTEFSR0VTVF9QQy4KCgkqIGphdmEtdHJlZS5oIChERUJVR19KQVZBX0JJTkRJTkdfTEVWRUxTKTogbmV3IGRlZmluZS4KCSogZGVjbC5jIChERUJVR19KQVZBX0JJTkRJTkdfTEVWRUxTKTogbmV3IGRlZmluZS4KCShiaW5kaW5nX2RlcHRoLCBpc19jbGFzc19sZXZlbCwgY3VycmVudF9wYyk6IG5ldyB2YXJpYWJsZXMuCgkoc3RydWN0IGJpbmRpbmdfbGV2ZWwpOiBkaXR0by4KCShpbmRlbnQpOiBuZXcgZnVuY3Rpb24uCgkocHVzaF9qdm1fc2xvdCk6IGFkZCBkZWJ1Z2dpbmcgaW5mby4KCShtYXliZV9wdXNobGV2ZWxzKTogZGl0dG8uCgkobWF5YmVfcG9wbGV2ZWxzKTogZGl0dG8uCgkocHVzaGxldmVsKTogZGl0dG8uCgkocG9wbGV2ZWwpOiBkaXR0by4KCShzdGFydF9qYXZhX21ldGhvZCk6IGRpdHRvLgoJKGdpdmVfbmFtZV90b19sb2NhbHMpOiBjb21tZW50IG9ubHkuCgkqIGV4Y2VwdC5jIChiaW5kaW5nX2RlcHRoLCBpc19jbGFzc19sZXZlbCwgY3VycmVudF9wYyk6CgluZXcgdmFyaWFibGVzLgoJKGV4cGFuZF9zdGFydF9qYXZhX2hhbmRsZXIpOiBhZGQgZGVidWdnaW5nIGluZm8uCgkoZXhwYW5kX2VuZF9qYXZhX2hhbmRsZXIpOiBkaXR0by4KCjIwMDAtMDItMDUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGdqYXZhaC5jIChvdmVybG9hZGVkX2puaV9tZXRob2RfZXhpc3RzX3ApOiBBZGQgcHJvdG90eXBlLgoJKHByaW50X25hbWVfZm9yX3N0dWJfb3Jfam5pLCBwcm9jZXNzX2ZpbGUpOiBDb25zdGlmeSBhIGNoYXIqLgoKMjAwMC0wMi0wMyAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogamNmLWlvLmMgKGpjZl9wcmludF91dGY4X3JlcGxhY2UpOiBIYW5kbGUgVVRGLTggaW5wdXQuCgoyMDAwLTAxLTMxICBTY290dCBCYW1icm91Z2ggIDxzY290dGJAbmV0d2luZGVyLm9yZz4KCgkqIGdjYy9qYXZhL2phdmFvcC5oIChXT1JEU19UT19ET1VCTEUpOiBBbGxvdyBXT1JEU19UT19ET1VCTEUgdG8KCWFzc2VtYmxlIGRvdWJsZXMgY29ycmVjdGx5IHdoZW4gSE9TVF9GTE9BVF9XT1JEU19CSUdfRU5ESUFOIGlzCglkZWZpbmVkIHRvIGJlIDEuCgoyMDAwLTAyLTAyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGphdmEtdHJlZS5kZWYgKElOU1RBTkNFX0lOSVRJQUxJWkVSU19FWFBSKTogTmV3IHRyZWUgY29kZS4KCSogamF2YS10cmVlLmggKFRZUEVfSUlfU1RNVF9MSVNUKTogTmV3IG1hY3JvLgoJKHN0cnVjdCBsYW5nX3R5cGUpOiBOZXcgZmllbGQgYGlpX2Jsb2NrJy4KCSogbGV4LmMgKGphdmFfaW5pdF9sZXgpOiBVc2UgQ1BDX0lOSVRJQUxJWkVSX0xJU1QsCglDUENfU1RBVElDX0lOSVRJQUxJWkVSX0xJU1QgYW5kIENQQ19JTlNUQU5DRV9JTklUSUFMSVpFUl9MSVNULgoJKiBwYXJzZS5oIChzdHJ1Y3QgcGFyc2VyX2N0eHQpOiBOZXcgZmllbGQgYGluc3RhbmNlX2luaXRpYWxpemVycycuCgkoQ1BDX0lOSVRJQUxJWkVSX0xJU1QsIENQQ19TVEFUSUNfSU5JVElBTElaRVJfTElTVCwKCUNQQ19JTlNUQU5DRV9JTklUSUFMSVpFUl9MSVNULCBDUENfSU5JVElBTElaRVJfU1RNVCwKCUNQQ19TVEFUSUNfSU5JVElBTElaRVJfU1RNVCwgQ1BDX0lOU1RBTkNFX0lOSVRJQUxJWkVSX1NUTVQpOiBOZXcKCW1hY3Jvcy4KCSogcGFyc2UueSAoYWRkX2luc3RhbmNlX2luaXRpYWxpemVyKTogTmV3IGZ1bmN0aW9uLgoJKGluX2luc3RhbmNlX2luaXRpYWxpemVyKTogTmV3IHN0YXRpYyBnbG9iYWwuCgkoY2xhc3NfYm9keV9kZWNsYXJhdGlvbjopOiBMaW5rIGluc3RhbmNlIGluaXRpYWxpemVyIGJsb2NrLgoJKHN0YXRpY19pbml0aWFsaXplcjopOiBVc2UgQ1BDX1NUQVRJQ19JTklUSUFMSVpFUl9TVE1ULgoJKGFycmF5X2NyZWF0aW9uX2V4cHJlc3Npb246KTogUmVtb3ZlIHVudXNlZCBsb2NhbC4KCShqYXZhX3BhcnNlcl9jb250ZXh0X3B1c2hfaW5pdGlhbGl6ZWRfZmllbGQpOiBGaXhlZCBsZWFkaW5nCgljb21tZW50LiBVc2UgQ1BDX1NUQVRJQ19JTklUSUFMSVpFUl9MSVNULCBDUENfSU5JVElBTElaRVJfTElTVCBhbmQKCUNQQ19JTlNUQU5DRV9JTklUSUFMSVpFUl9MSVNULgoJKGphdmFfcGFyc2VyX2NvbnRleHRfcG9wX2luaXRpYWxpemVkX2ZpZWxkKTogTGlrZXdpc2UuCgkoYWRkX2lubmVyX2NsYXNzX2ZpZWxkcyk6IFVzZSBDUENfSU5JVElBTElaRVJfU1RNVC4KCShyZWdpc3Rlcl9maWVsZHMpOiBVc2UgQ1BDX1NUQVRJQ19JTklUSUFMSVpFUl9TVE1UIGFuZAoJQ1BDX0lOSVRJQUxJWkVSX1NUTVQuCgkoZml4X2NvbnN0cnVjdG9ycyk6IE5ldyBsb2NhbCBgY2xhc3NfdHlwZScuIFVzZSBpdC4gQ2FsbAoJYWRkX2luc3RhbmNlX2luaXRpYWxpemVyLgoJKGphdmFfY29tcGxldGVfbGhzKTogTmV3IGNhc2UgSU5TVEFOQ0VfSU5JVElBTElaRVJTX0VYUFIuCgkocGF0Y2hfcmV0dXJuKTogRm9yYmlkIHJldHVybiBpbiBpbnN0YW5jZSBpbml0aWFsaXplcnMuCgkocGF0Y2hfdGhyb3dfc3RhdGVtZW50KTogRW5mb3JjZSBleGNlcHRpb24gaGFuZGxpbmcgaW4gdGhlIGNvbnRleHQKCW9mIGluc3RhbmNlIGluaXRpYWxpemVycy4KCjIwMDAtMDItMDMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS5tb3N0bHljbGVhbik6IFJlbW92ZSBleGVjdXRhYmxlcyBpbgoJYG1vc3RseWNsZWFuJy4KCjIwMDAtMDEtMzEgIFNjb3R0IEJhbWJyb3VnaCAgPHNjb3R0YkBuZXR3aW5kZXIub3JnPgoKCSogZ2NjL2phdmEvZ2phdmFoLmMgKERfTkFOX01BU0spOiBBbHRlcm5hdGUgZGVmaW5pdGlvbiByZXF1aXJlZCB3aGVuCglIT1NUX0ZMT0FUX1dPUkRTX0JJR19FTkRJQU4gaXMgZGVmaW5lZCB0byBiZSAxLgoJKGphdmFfZmxvYXRfZmluaXRlKTogQ29udmVydCB0byB1c2UgdW5pb24gV29yZCBmcm9tIGphdmFvcC5oLgoJKGphdmFfZG91YmxlX2Zpbml0ZSk6IENvbnZlcnQgdG8gdXNlIHVuaW9uIERXb3JkIGZyb20gamF2YW9wLmguCgoyMDAwLTAyLTAyICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBnamF2YWguYyAob3B0aW9ucyk6IEFkZGVkIGBqbmknIGVudHJ5LgoJKGhlbHApOiBEb2N1bWVudCAtam5pLgoJKGZsYWdfam5pKTogTmV3IGdsb2JhbC4KCShwcm9jZXNzX2ZpbGUpOiBIYW5kbGUgSk5JIG91dHB1dC4gIERvbid0IHByaW50IHRleHQgZnJvbQoJLXByZXBlbmQsIC1hZGQsIGV0Yywgd2hlbiBnZW5lcmF0aW5nIHN0dWJzLiAgT25seSByZW1vdmUgYC5jbGFzcycKCXN1ZmZpeCBpZiBpdCBhY3R1YWxseSBleGlzdHMuCgkobWFpbik6IENyZWF0ZSBhIGAuYycgZmlsZSB3aGVuIHJ1biB3aXRoIGAtLWpuaSAtLXN0dWJzJy4gIENyZWF0ZQoJY29ycmVjdCBvdXRwdXQgZmlsZSBuYW1lIHdpdGggYC0tam5pJy4KCShwcmludF9pbmNsdWRlKTogTWFuZ2xlIGhlYWRlciBuYW1lIGRpZmZlcmVudGx5IGluIEpOSSBjYXNlLgoJKEhBTkRMRV9NRVRIT0QpOiBJbiBKTkkgbW9kZSwgY2FsbCBwcmludF9tZXRob2RfaW5mbyB0byBnZW5lcmF0ZQoJbWV0aG9kIGxpc3QuCgkocHJpbnRfbWV0aG9kX2luZm8pOiBIYW5kbGUgSk5JIGNhc2UuICBQdXQgc2lnbmF0dXJlIGluZm8gaW50bwoJbWV0aG9kIG5hbWUuICBIYW5kbGUgY2FzZSB3aGVuIFNUUkVBTSBpcyBOVUxMLgoJKHByaW50X25hbWVfZm9yX3N0dWJfb3Jfam5pKTogTmV3IGZ1bmN0aW9uLgoJKHByaW50X3N0dWJfb3Jfam5pKTogUmVuYW1lZCBmcm9tIGBwcmludF9zdHViJy4gIEhhbmRsZSBKTkkuCgkocHJpbnRfY3h4X2NsYXNzbmFtZSk6IEhhbmRsZSBKTkkuCgkocHJpbnRfZnVsbF9jeHhfbmFtZSk6IExpa2V3aXNlLgoJKGRlY29kZV9zaWduYXR1cmVfcGllY2UpOiBMaWtld2lzZS4KCShvdmVybG9hZGVkX2puaV9tZXRob2RfZXhpc3RzX3ApOiBOZXcgZnVuY3Rpb24uCgkoc3RydWN0IG1ldGhvZF9uYW1lKTogQWRkZWQgYHNpZ25hdHVyZScgYW5kIGBzaWdfbGVuZ3RoJyBmaWVsZHMuCgkoSEFORExFX0VORF9GSUVMRCk6IERvIG5vdGhpbmcgaW4gSk5JIG1vZGUuCgoyMDAwLTAyLTAyICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBqdi1zY2FuLmM6IEluY2x1ZGUgdmVyc2lvbi5jLCA8Z2V0b3B0Lmg+LgoJKExPTkdfT1BULCBPUFRfSEVMUCwgT1BUX1ZFUlNJT04pOiBOZXcgbWFjcm9zLgoJKG9wdGlvbnMpOiBOZXcgYXJyYXkuCgkodXNhZ2UpOiBOZXcgZnVuY3Rpb24uCgkodmVyc2lvbik6IE5ldyBmdW5jdGlvbi4KCShtYWluKTogVXNlIGdldG9wdF9sb25nIHRvIHBhcnNlIGNvbW1hbmQgbGluZS4KCSogamNmLWR1bXAuYzogSW5jbHVkZSB2ZXJzaW9uLmMsIDxnZXRvcHQuaD4uCgkoTE9OR19PUFQsIE9QVF9jbGFzc3BhdGgsIE9QVF9DTEFTU1BBVEgsIE9QVF9IRUxQLCBPUFRfVkVSU0lPTiwKCU9QVF9KQVZBUCk6IE5ldyBtYWNyb3MuCgkob3B0aW9ucyk6IE5ldyBhcnJheS4KCSh1c2FnZSk6IFJldHVybiBgdm9pZCcuICBDaGFuZ2VkIG1lc3NhZ2UuCgkoaGVscCk6IE5ldyBmdW5jdGlvbi4KCSh2ZXJzaW9uKTogTmV3IGZ1bmN0aW9uLgoJKG1haW4pOiBVc2UgZ2V0b3B0X2xvbmdfb25seSB0byBwYXJzZSBjb21tYW5kIGxpbmUuCgkqIGdqYXZhaC5jOiBJbmNsdWRlIDxnZXRvcHQuaD4uCgkoTE9OR19PUFQsIE9QVF9jbGFzc3BhdGgsIE9QVF9DTEFTU1BBVEgsIE9QVF9IRUxQLCBPUFRfVEVNUCwKCU9QVF9WRVJTSU9OLCBPUFRfUFJFUEVORCwgT1BUX0ZSSUVORCwgT1BUX0FERCwgT1BUX0FQUEVORCwgT1BUX00sCglPUFRfTU0sIE9QVF9NRywgT1BUX01ELCBPUFRfTU1EKTogTmV3IG1hY3Jvcy4KCShvcHRpb25zKTogTmV3IGFycmF5LgoJKGphdmFfbm9fYXJndW1lbnQpOiBSZW1vdmVkLgoJKGhlbHApOiBVcGRhdGVkIHdpdGggbWlzc2luZyBvcHRpb25zLgoJKG1haW4pOiBVc2UgZ2V0b3B0X2xvbmdfb25seSB0byBwYXJzZSBjb21tYW5kIGxpbmUuCgkodXNhZ2UpOiBDaGFuZ2VkIG1lc3NhZ2UuCgoyMDAwLTAyLTAxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGphdmEtdHJlZS5kZWYgKE5FV19BTk9OWU1PVVNfQVJSQVlfRVhQUik6IE5ldyB0cmVlIGNvZGUuCgkqIHBhcnNlLmggKEFOT05ZTU9VU19BUlJBWV9CQVNFX1RZUEUsIEFOT05ZTU9VU19BUlJBWV9ESU1TX1NJRywKCUFOT05ZTU9VU19BUlJBWV9JTklUSUFMSVpFUik6IE5ldyBhY2Nlc3MgbWFjcm9zLgoJKiBwYXJzZS55IChhcnJheV9jcmVhdGlvbl9leHByZXNzaW9uOik6IEhhbmRsZSBhbm9ueW1vdXMgYXJyYXlzLgoJKGJ1aWxkX2FycmF5X2Zyb21fbmFtZSk6IERvbid0IHNldCBgcmV0X25hbWUnIGlmIG51bGwuCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogTmV3IGNhc2UgTkVXX0FOT05ZTU9VU19BUlJBWV9FWFBSLgoJKHF1YWxpZnlfYW1iaWd1b3VzX25hbWUpOiBMaWtld2lzZS4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9jbGFzcyk6IExpa2V3aXNlLgoKMjAwMC0wMi0wMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqYXZhLXRyZWUuZGVmIChTWU5DSFJPTklaRURfRVhQUik6IEZpeGVkIHR5cG8uCgkqIHBhcnNlLmggKE1BTkdMRV9BTElBU19JTklUSUFMSVpFUl9QQVJBTUVURVJfTkFNRV9JRCk6IE5ldyBtYWNyby4KCShNQU5HTEVfQUxJQVNfSU5JVElBTElaRVJfUEFSQU1FVEVSX05BTUVfU1RSKTogTGlrZXdpc2UuCgkoU0tJUF9USElTX0FORF9BUlRJRklDSUFMX1BBUk1TKTogVXNlIERFQ0xfRklOSVRfUC4KCShBSVBMX0ZVTkNUSU9OX0ZJTklUX0lOVk9DQVRJT04pOiBSZXBsYWNlcwoJQUlQTF9GVU5DVElPTl9DT01QTEVURURfSU5WT0NBVElPTi4KCShBSVBMX0ZVTkNUSU9OX0NUT1JfSU5WT0NBVElPTik6IFJlcGxhY2VzCglBSVBMX0ZVTkNUSU9OX0lOVk9DQVRJT05fUkVBRFkuCgkoQUlQTF9GVU5DVElPTl9ERUNMQVJBVElPTik6IE5ldyBlbnVtIGVudHJ5LgoJKiBwYXJzZS55IChyZW9yZGVyX3N0YXRpY19pbml0aWFsaXplZCk6IE5ldyBmdW5jdGlvbi4KCShqYXZhX3BhcnNlcl9jb250ZXh0X3BvcF9pbml0aWFsaXplZF9maWVsZCk6IFVzZSBpdC4KCShhZGRfaW5uZXJfY2xhc3NfZmllbGRzKTogVXNlCglNQU5HTEVfQUxJQVNfSU5JVElBTElaRVJfUEFSQU1FVEVSX05BTUVfSUQuIENvbW1lbnQKCWF1Z21lbnRlZC4gSW5zdGFsbCBtYXJrZXIgYWZ0ZXIgbGFzdCBhbGlhcyBpbml0aWFsaXplciwgaWYgYW55LgoJKGdlbmVyYXRlX2Zpbml0KTogRml4ZWQgdHlwby4gRG9uJ3QgdHJ5IHRvIHJldGFpbiBvbmx5IHRoZSB1c2VkCglmaWVsZHMuCgkobWV0aG9kX2hlYWRlcik6IENvbXB1dGUgYW5kIHNldCBERUNMX0ZVTkNUSU9OX05BUC4KCShtZXRob2RfZGVjbGFyYXRvcik6IEZpeGVkIGNvbW1lbnQuIEluc2VydCBhbGlhcyBpbml0aWFsaXplciBpbgoJcGFyYW1ldGVyIGxpc3QuCgkoYnVpbGRfYWxpYXNfaW5pdGlhbGl6ZXJfcGFyYW1ldGVyX2xpc3QpOiBGaXhlZCBsZWFkaW5nCgljb21tZW50LiBOZXcgY2FzZSBmb3IgQUlQTF9GVU5DVElPTl9ERUNMQVJBVElPTi4gT2xkIGVudW0gdmFsdWUKCXJlcGxhY2VkIGJ5IG5ldyBvbmVzLiBVc2UgTUFOR0xFX0FMSUFTX0lOSVRJQUxJWkVSX1BBUkFNRVRFUl9OQU1FX0lELgoJKGphdmFfY29tcGxldGVfZXhwYW5kX2NsYXNzKTogQ29kZSB0byByZXRhaW4gb25seSB1c2VkIGFsaWFzZXMKCXJlbW92ZWQuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IE5ldyBsb2NhbCBgZmlyc3RfZGVjbCcuIEdlbmVyYXRlCgkkZmluaXQkIGZpcnN0LCB0aGVuIGV4cGFuZCB0aGUgY29uc3RydWN0b3JzLCByZWd1bGFyIG1ldGhvZHMgYW5kCgk8Y2xpbml0Pi4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiBEb24ndCByZXBvcnQgZXJyb3Igb24gbWlzc2luZwoJcmV0dXJuIHN0YXRlbWVudCBpZiBwcmV2aW91c2x5IGRldGVjdGVkIGJvZ3VzLgoJKGZpeF9jb25zdHJ1Y3RvcnMpOiBEb24ndCBwYXRjaCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzIGxpc3QuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBVc2UgbmV3IEFJUEwgZW51bSB2YWx1ZXMuIFJldmVyc2UKCWFsaWFzIGluaXRpYWxpemVyIGxpc3QgZm9yIGFub255bW91cyBjbGFzc2VzLgoKMjAwMC0wMS0zMCAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQHJlZGhhdC5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBVc2UgVFlQRV9JU19XSURFIHRvCglkZXRlcm1pbmUgaG93IG1hbnkgc3RhY2sgc2xvdHMgdG8gcG9wLgoKMjAwMC0wMS0yOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChmb3JtYWxfcGFyYW1ldGVyOik6IFNldCBgJCQnIHRvIE5VTExfVFJFRSBmb3IgYmV0dGVyCgllcnJvciBoYW5kbGluZy9yZWNvdmVyeS4KCSogamF2YS10cmVlLmggKFNZTkNIUk9OSVpFRF9FWFBSKTogRml4ZWQgdHlwbyBpbiBjb21tZW50LgoKMjAwMC0wMS0yOCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqYXZhLXRyZWUuaCAoQVJHX0ZJTkFMX1AsIEZJRUxEX0xPQ0FMX0FMSUFTLAoJRklFTERfTE9DQUxfQUxJQVNfVVNFRCk6IE5ldyBtYWNyb3MuCgkoREVDTF9GVU5DVElPTl9OQVApOiBOZXcgbWFjcm8uCgkoc3RydWN0IGxhbmdfZGVjbCk6IE5ldyBmaWVsZCBgbmFwJy4KCShUWVBFX0ZJTklUX1NUTVRfTElTVCwgVFlQRV9DTElOSVRfU1RNVF9MSVNUKTogTmV3IG1hY3Jvcy4KCShzdHJ1Y3QgbGFuZ190eXBlKTogTmV3IGZpZWxkcyBgZmluaXRfc3RtdF9saXN0JyBhbmQKCWBjbGluaXRfc3RtdF9saXN0Jy4KCShDTEFTU19IQVNfRklOSVRfUCk6IERlZmluZWQgdXNpbmcgVFlQRV9GSU5JVF9TVE1UX0xJU1QuCgkqIHBhcnNlLmggKE1BTkdMRV9PVVRFUl9MT0NBTF9WQVJJQUJMRV9OQU1FKTogTmV3IG1hY3JvLgoJKFNLSVBfVEhJU19BTkRfQVJUSUZJQ0lBTF9QQVJNUywgTUFSS19GSU5BTF9QQVJNUywKCVVOTUFSS19GSU5BTF9QQVJNUywgQ1JBRlRFRF9QQVJBTV9MSVNUX0ZJWFVQKTogTmV3IG1hY3Jvcy4KCShBSVBMX0ZVTkNUSU9OX0NSRUFUSU9OLCBBSVBMX0ZVTkNUSU9OX0NPTVBMRVRFRF9JTlZPQ0FUSU9OLAoJQUlQTF9GVU5DVElPTl9JTlZPQ0FUSU9OX1JFQURZKTogTmV3IGVudW0gZmllbGRzLgoJKEJVSUxEX1RIUk9XKTogTWFjcm8gbGluZSBzZXBhcmF0b3IgcmUtaW5kZW50ZWQuCgkqIHBhcnNlLnkgKGVuZF9jbGFzc19kZWNsYXJhdGlvbik6IE5ldyBmdW5jdGlvbi4KCShtYXliZV9nZW5lcmF0ZV9wcmVfZXhwYW5kX2NsaW5pdCk6IE5ldyBuYW1lIGZvcgoJamF2YV9wcmVfZXhwYW5kX2NsaW5pdC4gQ3JlYXRlIDxjbGluaXQ+IG9mZiBUWVBFX0NMSU5JVF9TVE1UX0xJU1QsCglwcmUtZXhwYW5kIHN0YXRpYyBmaWVsZHMuCgkobWF5YmVfZ2VuZXJhdGVfY2xpbml0KTogRnVuY3Rpb24gZGVsZXRlZC4KCShjaGVja19mb3Jfc3RhdGljX21ldGhvZF9yZWZlcmVuY2UpOiBQcm90b3R5cGUncyBwYXJhbWV0ZXIgbGlzdAoJaW5kZW50ZWQuCgkoZ2VuZXJhdGVfZmluaXQpOiBOZXcgbmFtZSBmb3IgbWF5YmVfZ2VuZXJhdGVfZmluaXQuIENoYW5nZWQKCWxlYWRpbmcgY29tbWVudC4gRnVuY3Rpb24gcmV3cml0dGVuIHRvIHVzZQoJVFlQRV9GSU5JVF9TVE1UX0xJU1QuIENhbGwgYnVpbGRfYWxpYXNfaW5pdGlhbGl6ZXJfcGFyYW1ldGVyX2xpc3QuCgkoYnVpbGRfYWxpYXNfaW5pdGlhbGl6ZXJfcGFyYW1ldGVyX2xpc3QpOiBOZXcgZnVuY3Rpb24uCgkoamF2YV9wYXJzZXJfY29udGV4dF9wb3BfaW5pdGlhbGl6ZWRfZmllbGQpOiBMaWtld2lzZS4KCShhZGRfaW5uZXJfY2xhc3NfZmllbGRzKTogTGlrZXdpc2UuCgkodHlwZV9kZWNsYXJhdGlvbjopOiBDYWxsIGVuZF9jbGFzc19kZWNsYXJhdGlvbi4KCShjbGFzc19tZW1iZXJfZGVjbGFyYXRpb246KTogTGlrZXdpc2UuCgkoZm9ybWFsX3BhcmFtZXRlcl9saXN0Oik6IEZpeGVkIHR5cG9zLgoJKGZvcm1hbF9wYXJhbWV0ZXI6KTogVXNlIEFSR19GSU5BTF9QIHRvIG1hcmsgY3JlYXRlZCB0cmVlIGxpc3QKCWVsZW1lbnQuIEltcHJvdmVkIGVycm9yIGhhbmRsaW5nLgoJKGJsb2NrX3N0YXRlbWVudDopOiBDYWxsIGVuZF9jbGFzc19kZWNsYXJhdGlvbi4KCShhbm9ueW1vdXNfY2xhc3NfY3JlYXRpb246KTogTGlrZXdpc2UuCgkoY3JlYXRlX2Fub255bW91c19jbGFzcyk6IEZpeGVkIGNvbW1lbnRzLgoJKGNyZWF0ZV9jbGFzcyk6IENhbGwgYWRkX2lubmVyX2NsYXNzX2ZpZWxkcy4KCShyZWdpc3Rlcl9maWVsZHMpOiBTZXQgRklFTERfTE9DQUxfQUxJQVMgYWNjb3JkaW5nIHRvIEFSR19GSU5BTF9QLgoJKG1ldGhvZF9oZWFkZXIpOiBVc2UgTUFSS19GSU5BTF9QQVJNUy4KCShmaW5pc2hfbWV0aG9kX2RlY2xhcmF0aW9uKTogVXNlIFVOTUFSS19GSU5BTF9QQVJNUy4KCShtZXRob2RfZGVjbGFyYXRvcik6IFByb3BhZ2F0ZSBmaW5hbCBhcmd1bWVudCBmbGFnLgoJKGNyYWZ0X2NvbnN0cnVjdG9yKTogTmV3IGxvY2FsIGBhcnRpZmljaWFsJy4gQ2FsbAoJYnVpbGRfYWxpYXNfaW5pdGlhbGl6ZXJfcGFyYW1ldGVyX2xpc3QuIFVzZQoJQ1JBRlRFRF9QQVJBTV9MSVNUX0ZJWFVQLCBhc3NpZ24gREVDTF9GVU5DVElPTl9OQVAuCgkoc291cmNlX3N0YXJ0X2phdmFfbWV0aG9kKTogTWFyayBwYXJtIGRlY2xzIHdpdGggTE9DQUxfRklOQUwgaWYKCW5lY2Vzc2FyeS4KCShjb21wbGV0ZV9leHBhbmRfY2xhc3MpOiBHZXQgcmlkIG9mIHVudXNlZCBvdXRlciBjb250ZXh0IGxvY2FsCglhbGlhcyBmaWVsZHMuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IEZpeGVkIGxlYWRpbmcKCWNvbW1lbnQuIEdlbmVyYXRlL3ByZS1leHBhbmQgPGNsaW5pdD4gZmlyc3QuIENoYW5nZWQgbWV0aG9kCglleHBhbnNpb24gb3JkZXIgdG8gcmVndWxhciwgJGZpbml0JCwgY29uc3RydWN0b3JzLCA8Y2xpbml0Pi4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiBTZXQgY3VycmVudF9mdW5jdGlvbl9kZWNsLgoJKGZpeF9jb25zdHJ1Y3RvcnMpOiBGaXggY29uc3RydWN0b3IgcGFyYW1ldGVyIGxpc3QgdG8gYWNjb3VudCBmb3IKCW91dGVyIGNvbnRleHQgbG9jYWwgYWxpYXMgaW5pdGlhbGl6ZXJzLgoJKHZlcmlmeV9jb25zdHJ1Y3Rvcl9zdXBlcik6IFVzZSBTS0lQX1RISVNfQU5EX0FSVElGSUNJQUxfUEFSTVMuCgkocmVzb2x2ZV9leHByZXNzaW9uX25hbWUpOiBMb29rdXAgb3V0ZXIgY29udGV4dCBsb2NhbCBhbGlhc2VzLiBOZXcKCWxvY2FsIGBhY2Nlc3MnLCB1c2UgaXQuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBQYXRjaCBpbm5lciBjbGFzcyBjdG9yIGludm9jYXRpb24gd2l0aAoJb3V0ZXIgY29udGV4dCBsb2NhbCBhbGlhc2VzIGluaXRpYWxpemF0aW9uIHZhbHVlcy4gJGZpbml0JAoJaW52b2NhdGlvbiBwYXRjaGluZyBub3cgaW5jbHVkZXMgdGhpbmdzIGdlbmVyYXRlZCB3aXRoCglidWlsZF9hbGlhc19pbml0aWFsaXplcl9wYXJhbWV0ZXJfbGlzdC4KCShhcmd1bWVudF90eXBlc19jb252ZXJ0aWJsZSk6IFVzZSBTS0lQX1RISVNfQU5EX0FSVElGSUNJQUxfUEFSTVMuCgkoYnVpbGRfc3VwZXJfaW52b2NhdGlvbik6IExpa2V3aXNlLgoJKHBhdGNoX2Fzc2lnbm1lbnQpOiBDaGFuZ2VkIGNvbW1lbnQuCgoyMDAwLTAxLTI3ICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIGpjZi13cml0ZS5jIChlbWl0X2dvdG8pOiBSRVNFUlZFIDMgYnl0ZXMgZm9yIGluc24uCgkoZW1pdF9pZik6IERpdHRvLgoJKGVtaXRfanNyKTogRGl0dG8uCgoyMDAwLTAxLTI1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBwYXJzZS5oIChPQlNPTEVURV9NT0RJRklFUl9XQVJOSU5HKTogRG9uJ3QgdXNlIEFOU0kgc3RyaW5nCgljb25jYXRlbmF0aW9uLgoJKE9CU09MRVRFX01PRElGSUVSX1dBUk5JTkcyKTogTmV3IG1hY3JvIGFsbG93aW5nIHR3byBhcmdzLgoKCSogcGFyc2UueSAocmVnaXN0ZXJfZmllbGRzKTogRG9uJ3QgcGFzcyBhIGZvcm1hdCBzcGVjaWZpZXIgdG8KCU9CU09MRVRFX01PRElGSUVSX1dBUk5JTkcuCgkoY2hlY2tfYWJzdHJhY3RfbWV0aG9kX2hlYWRlcik6IFVzZSBPQlNPTEVURV9NT0RJRklFUl9XQVJOSU5HMgoJaW5zdGVhZCBvZiBPQlNPTEVURV9NT0RJRklFUl9XQVJOSU5HLCBhbmQgZG9uJ3QgcGFzcyBhIGZvcm1hdAoJc3BlY2lmaWVyLgoJKGNoZWNrX21vZGlmaWVycyk6IENoYW5nZSBmdW5jdGlvbiBpbnRvIGEgbWFjcm8uCgkoY2hlY2tfY2xhc3NfaW50ZXJmYWNlX2NyZWF0aW9uKTogUGFzcyBhIGxpdGVyYWwgZm9ybWF0IHN0cmluZy4KCjIwMDAtMDEtMjEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1ZmZlci5oOiBQUk9UTyAtPiBQQVJBTVMuCgkqIGNoZWNrLWluaXQuYzogTGlrZXdpc2UuCgkqIGNsYXNzLmM6IExpa2V3aXNlLgoJKiBjb25zdGFudHMuYzogTGlrZXdpc2UuCgkqIGNvbnZlcnQuaDogTGlrZXdpc2UuCgkqIGRlY2wuYzogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jOiBMaWtld2lzZS4KCSogZXhwci5jOiBMaWtld2lzZS4KCSogZ2phdmFoLmM6IExpa2V3aXNlLgoJKiBqYXZhLWV4Y2VwdC5oOiBMaWtld2lzZS4KCSogamF2YS10cmVlLmg6IExpa2V3aXNlLgoJKiBqY2YtZGVwZW5kLmM6IExpa2V3aXNlLgoJKiBqY2YtZHVtcC5jOiBMaWtld2lzZS4KCSogamNmLXBhcnNlLmM6IExpa2V3aXNlLgoJKiBqY2YtcGF0aC5jOiBMaWtld2lzZS4KCSogamNmLXJlYWRlci5jOiBMaWtld2lzZS4KCSogamNmLXdyaXRlLmM6IExpa2V3aXNlLgoJKiBqY2YuaDogTGlrZXdpc2UuCgkqIGp2LXNjYW4uYzogTGlrZXdpc2UuCgkqIGp2Z2VubWFpbi5jOiBMaWtld2lzZS4KCSoganZzcGVjLmM6IExpa2V3aXNlLgoJKiBsYW5nLmM6IExpa2V3aXNlLgoJKiBsZXguYzogTGlrZXdpc2UuCgkqIGxleC5oOiBMaWtld2lzZS4KCSogcGFyc2Utc2Nhbi55OiBMaWtld2lzZS4KCSogcGFyc2UuaDogTGlrZXdpc2UuCgkqIHBhcnNlLnk6IExpa2V3aXNlLgoJKiB0eXBlY2suYzogTGlrZXdpc2UuCgkqIHZlcmlmeS5jOiBMaWtld2lzZS4KCSogeHJlZi5jOiBMaWtld2lzZS4KCSogeHJlZi5oOiBMaWtld2lzZS4KCSogemV4dHJhY3QuYzogTGlrZXdpc2UuCgkqIHppcGZpbGUuaDogTGlrZXdpc2UuCgoyMDAwLTAxLTE4ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3MpOiBVc2UgTUFZQkVfQ1JFQVRFX1RZUEVfVFlQRV9MQU5HX1NQRUNJRklDLgoJKGlzX2NvbXBpbGVkX2NsYXNzKTogUmVtb3ZlIHRlc3Qgb24gVFlQRV9MQU5HX1NQRUNJRklDLCB1c2UgVFlQRV9KQ0YuCgkqIGNvbnN0YW50cy5jIChidWlsZF9jb25zdGFudF9kYXRhX3JlZik6IENoZWNrIGZvciBjYWNoZWQKCWN1cnJlbnRfY29uc3RhbnRfcG9vbF9kYXRhX3JlZi4gQ2FjaGUgY3VycmVudF9jb25zdGFudF9wb29sX2RhdGFfcmVmCglpbiBUWVBFX0NQT09MX0RBVEVfUkVGLgoJKiBqYXZhLXRyZWUuaCAoVFlQRV9KQ0YsIFRZUEVfQ1BPT0wsIFRZUEVfQ1BPT0xfREFUQV9SRUYsCglNQVlCRV9DUkVBVEVfVFlQRV9UWVBFX0xBTkdfU1BFQ0lGSUM6KSBOZXcgbWFjcm9zLgoJKHN0cnVjdCBsYW5nX3R5cGUpOiBOZXcgZmllbGRzIGBjcG9vbCcgYW5kIGBjcG9vbF9kYXRhX3JlZicuCgkoTE9DQUxfRklOQUwpOiBOZXcgbWFjcm8uCgkqIGpjZi1wYXJzZS5jIChpbml0X291dGdvaW5nX2Nwb29sKTogQWx3YXlzIGFsbG9jYXRlIG5ldyBvdXRnb2luZwoJY29uc3RhbnQgcG9vbCAtLSBkb24ndCB0cnkgdG8gcmV1c2UuCgkocGFyc2VfemlwX2ZpbGVfZW50cmllcyk6IFVzZSBUWVBFX0pDRiwgZG9uJ3QgbGF6aWx5IGFsbG9jYXRlCglUWVBFX0xBTkdfU1BFQ0lGSUMuCgkoZmluZF9pbl9jdXJyZW50X3ppcCk6IFVzZSBUWVBFX0pDRi4KCSogcGFyc2UuaCAoamF2YV9jaGVja19maW5hbCk6IFByb3RvdHlwZSByZW1vdmVkLgoJKiBwYXJzZS55IChjcmVhdGVfY2xhc3MpOiBSZXZlcnNlZCBKYW4gMTIsIDIwMDAgZXh0cmEgYXJndW1lbnQgcGF0Y2guCgkobWF5YmVfY3JlYXRlX2NsYXNzX2ludGVyZmFjZV9kZWNsLAoJY2hlY2tfY2xhc3NfaW50ZXJmYWNlX2NyZWF0aW9uKTogTGlrZXdpc2UuCgkoamF2YV9leHBhbmRfZmluYWxzKTogRnVuY3Rpb24gcmVtb3ZlZC4KCShjbGFzc19kZWNsYXJhdGlvbjopOiBSZXZlcnNlZCBKYW4gMTIsIDIwMDAgZXh0cmEgYXJndW1lbnQgcGF0Y2guCgkoYmxvY2tfc3RhdGVtZW50Oik6IEZpeGVkIGNvbW1lbnQuCgkoYW5vbnltb3VzX2NsYXNzX2NyZWF0aW9uOik6IExpa2V3aXNlLgoJKGNoZWNrX2NsYXNzX2ludGVyZmFjZV9jcmVhdGlvbik6IFJldmVyc2VkIEphbiAxMiwgMjAwMCBleHRyYQoJYXJndW1lbnQgcGF0Y2guCgkoY2hlY2tfY2xhc3NfaW50ZXJmYWNlX2NyZWF0aW9uKTogTG9vc2VuZWQgZXJyb3IgcmVwb3J0IG9uIChpbm5lcikKCXB1YmxpYyBjbGFzcyBkZWNsYXJhdGlvbnMuIENQQ19JTk5FUl9QIHJlcGxhY2VzIEdFVF9DUENfTElTVC4KCShsaW5rX25lc3RlZF9jbGFzc190b19lbmNsb3NpbmcpOiBSZXZlcnNlZCBKYW4gMTIsIDIwMDAgcGF0Y2guCgkobWF5YmVfY3JlYXRlX2NsYXNzX2ludGVyZmFjZV9kZWNsKTogUmV2ZXJzZWQgSmFuIDEyLCAyMDAwIGV4dHJhCglhcmd1bWVudCBwYXRjaC4KCShjcmVhdGVfaW50ZXJmYWNlKTogTGlrZXdpc2UuCgkoYW5vbnltb3VzX2NsYXNzX2NvdW50ZXIpOiBOZXcgc3RhdGljIGdsb2JhbC4KCShjcmVhdGVfYW5vbnltb3VzX2NsYXNzKTogUmV2ZXJzZWQgSmFuIDEyLCAyMDAwIGV4dHJhIGFyZ3VtZW50CglwYXRjaC4gRml4ZWQgY29tbWVudHMuCgkoY3JlYXRlX2NsYXNzKTogUmV2ZXJzZWQgSmFuIDEyLCAyMDAwIGV4dHJhIGFyZ3VtZW50IHBhdGNoLiBSZXNldAoJYW5vbnltb3VzX2NsYXNzX2NvdW50ZXIgd2hlbiBkZWNsYXJpbmcgYSB0b3BsZXZlbCBjbGFzcy4KCShjcmFmdF9jb25zdHJ1Y3Rvcik6IEZpeGVkIGNvbnN0cnVjdG9yIG5hbWUgd2hlbiBoYW5kbGluZwoJYW5vbnltb3VzIGNsYXNzZXMuIEFub255bW91cyBjbGFzcyBjb25zdHJ1Y3RvcnMgdG8gZmVhdHVyZSBoaWRkZW4KCXRoaXMkPG4+IHBhcmFtZXRlci4KCShqYXZhX2ZpeF9jb25zdHJ1Y3RvcnMpOiBBZGRlZCBjb21tZW50LgoJKGphdmFfY2hlY2tfZmluYWwpOiBGdW5jdGlvbiByZW1vdmVkLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZHMpOiBGaXhlZCBjb21tZW50LiBEb24ndCBnZW5lcmF0ZQoJY2xhc3MgZGF0YSwgc2F2ZSBpdHMgb3V0Z29pbmcgY29uc3RhbnQgcG9vbCBpbnN0ZWFkLgoJKHZlcmlmeV9jb25zdHJ1Y3Rvcl9zdXBlcik6IFNraXAgYW5vbnltb3VzIGNsYXNzIGNvbnN0cnVjdG9yCgloaWRkZW4gdGhpcyQ8bj4gcGFyYW1ldGVyLgoJKGphdmFfZXhwYW5kX2NsYXNzZXMpOiBOZXcgbG9jYWwgYHNhdmVkX2N0eHAnLiBSZW1vdmVkIGNhbGwgdG8KCWphdmFfZXhwYW5kX2ZpbmFscyBhbmQgamF2YV9jaGVja19maW5hbC4gRXhwYW5kIGFub255bW91cyBjbGFzcwoJY29uc3RydWN0b3JzLiBHZW5lcmF0ZSBjbGFzcyBkYXRhLgoJKGJ1aWxkX3N1cGVyX2ludm9jYXRpb24pOiBTa2lwIGFub255bW91cyBjbGFzcyBoaWRkZW4gdGhpcyQ8bj4KCXBhcmFtZXRlci4KCSogdHlwZWNrLmMgKGJ1aWxkX2phdmFfc2lnbmF0dXJlKTogVXNlIFRZUEVfU0lHTkFUVVJFIGFuZAoJTUFZQkVfQ1JFQVRFX1RZUEVfVFlQRV9MQU5HX1NQRUNJRklDLgoJKHNldF9qYXZhX3NpZ25hdHVyZSk6IExpa2V3aXNlLgoKMjAwMC0wMS0xOCAgSm9lcmcgQnJ1bnNtYW5uICA8am9lcmcuYnJ1bnNtYW5uQGZlcm51bmktaGFnZW4uZGU+CgoJKiBnamF2YWguYzogRGVsZXRlIEFDQ19WSVNJQklMSVRZIGRlZmluZS4KCSogamNmLmg6IEFkZCBBQ0NfVklTSUJJTElUWSBkZWZpbmUuCgkqIHBhcnNlLnk6IGZpbmFsOiBydWxlIHRhZ2dlZCA8dmFsdWU+LgoJKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzKTogVXNlIEFDQ19WSVNJQklMSVRZIGRlZmluZSBmb3IKCWRlZmF1bHQgcGFja2FnZSBhY2Nlc3MgY2hlY2suCgkobG9jYWxfdmFyaWFibGVfZGVjbGFyYXRpb25fc3RhdGVtZW50KTogVXNlIGZpbmFsOiBydWxlLgoKMjAwMC0wMS0xNyAgSm9lcmcgQnJ1bnNtYW5uICA8am9lcmcuYnJ1bnNtYW5uQGZlcm51bmktaGFnZW4uZGU+CgoJKiBwYXJzZS55IChmb3JtYXRfcGFyYW1ldGVyOik6IFVzZSBmaW5hbDogcnVsZSBpbnN0ZWFkIG9mIG1vZGlmaWVyczouCgkoZmluYWw6KTogTmV3IHJ1bGUuCgoyMDAwLTAxLTE3ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBnamF2YWguYyAocHJpbnRfZmllbGRfaW5mbyk6IEFsbG93IG5vbi1zdGF0aWMgZmluYWwgZmllbGRzLgoKMjAwMC0wMS0xNCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS5oIChlbnVtIGpkZXBfY29kZSk6IE5ldyBlbnRyeSBgSkRFUF9BTk9OWU1PVVMnLgoJKiBwYXJzZS55IChwYXRjaF9hbm9ueW1vdXNfY2xhc3MpOiBOZXcgZnVuY3Rpb24uCgkoY3JlYXRlX2Fub255bW91c19jbGFzcyk6IFJlZ2lzdGVyIGluY29tcGxldGUgdHlwZSB3aGVuIHRoZQoJY2xhc3MvaW50ZXJmYWNlIHRvIGV4dGVuZHMvaW1wbGVtZW50IGlzbid0IGtub3duIHlldC4KCShwYXJzZXJfY2hlY2tfc3VwZXJfaW50ZXJmYWNlKTogU2ltcGxpZnkgYXJndW1lbnQgdG8gQ0xBU1NfSU5URVJGQUNFLgoJKHZlcmlmeV9jb25zdHJ1Y3Rvcl9zdXBlcik6IFR1bmVkIGVycm9yIG1lc3NhZ2UuCgoyMDAwLTAxLTE0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGphdmEtdHJlZS5oIChGT1JfTE9PUF9QKTogUmVwbGFjZXMgSVNfRk9SX0xPT1BfUC4KCShBTk9OWU1PVVNfQ0xBU1NfUCk6IE5ldyBtYWNyby4KCShUWVBFX1NJR05BVFVSRSwgVFlQRV9KQ0YpOiBOZXcgbWFjcm9zLgoJKElOTkVSX0NMQVNTX1RZUEVfUCk6IEZpeGVkIHR5cG8gaW4gbGVhZGluZyBjb21tZW50LgoJKiBwYXJzZS55IChjcmVhdGVfY2xhc3MpOiBBZGRlZCBsZWFkaW5nIGFyZ3VtZW50LgoJKG1heWJlX2NyZWF0ZV9jbGFzc19pbnRlcmZhY2VfZGVjbCwKCWNoZWNrX2NsYXNzX2ludGVyZmFjZV9jcmVhdGlvbik6IExpa2V3aXNlLgoJKGNyYWZ0X2NvbnN0cnVjdG9yKTogTmV3IGZ1bmN0aW9uLgoJKHZlcmlmeV9jb25zdHJ1Y3Rvcl9zdXBlcik6IEFkZGVkIGFyZ3VtZW50IGluIHByb3RvdHlwZS4KCShjbGFzc19kZWNsYXJhdGlvbjopOiBJbnNlcnRlZCBsZWFkaW5nIGFyZ3VtZW50LgoJKGZvcl9iZWdpbjopOiBVc2UgRk9SX0xPT1BfUC4KCShhbm9ueW1vdXNfY2xhc3NfY3JlYXRpb24pOiBDcmVhdGUgV0ZMIG9mIHRoZSBhbm9ueW1vdXMgY2xhc3MgdG8KCWluc3RhbnRpYXRlLiBDYWxsIGJ1aWxkX25ld19pbnZvY2F0aW9uLiBBZGRlZCBjb21tZW50cy4KCShjaGVja19jbGFzc19pbnRlcmZhY2VfY3JlYXRpb24pOiBIYW5kbGUgcGFyYW1ldGVyIGBhbm9ueW1vdXMnIGluCgl2ZXJib3NlIG1vZGUgY2xhc3MgY3JlYXRpb24gYW5ub3VuY2UuCgkobGlua19uZXN0ZWRfY2xhc3NfdG9fZW5jbG9zaW5nKTogRXhjbHVkZSBhbm9ueW1vdXMgY2xhc3Nlcy4KCShtYXliZV9jcmVhdGVfY2xhc3NfaW50ZXJmYWNlX2RlY2wpOiBEb24ndCBzZXQgREVDTF9DT05URVhUIG9uCglhbm9ueW1vdXMgY2xhc3MsIGV2ZW4gdGhvdWdoIHRoZXkgYXBwZWFyIHRvIGhhdmUgYW4gZW5jbG9zaW5nCgljb250ZXh0LgoJKGNyZWF0ZV9pbnRlcmZhY2UpOiBQYXNzIGV4dHJhIGFyZ3VtZW50IHRvCgljaGVja19jbGFzc19pbnRlcmZhY2VfY3JlYXRpb24uCgkoY3JlYXRlX2Fub255bW91c19jbGFzcyk6IFNldCBBTk9OWU1PVVNfQ0xBU1NfUCB0byAxLgoJKGNyZWF0ZV9jbGFzcyk6IENhbGwgY2hlY2tfY2xhc3NfaW50ZXJmYWNlX2NyZWF0aW9uIGFuZAoJbWF5YmVfY3JlYXRlX2NsYXNzX2ludGVyZmFjZV9kZWNsIHdpdGggZXh0cmEgbmV3IGFyZ3VtZW50LiBEb24ndAoJYWRkIHByaXZhdGUgdGhpcyQ8bj4gdG8gYW5vbnltb3VzIGNsYXNzZXMuCgkobWV0aG9kX2RlY2xhcmF0b3IpOiBJbnNlcnQgaGlkZGVuIHRoaXMkPG4+IHRvIGFub255bW91cyBjbGFzcwoJY29uc3RydWN0b3JzLgoJKGphdmFfZml4X2NvbnN0cnVjdG9ycyk6IERlbGV0ZWQgY29kZSBjcmVhdGluZyBkZWZhdWx0Cgljb25zdHJ1Y3Rvci4gQ2FsbCBjcmFmdF9jb25zdHJ1Y3RvciBpbnN0ZWFkLgoJKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzKTogU2V0IGBzYXdfY29uc3RydWN0b3InIHRvIDEgZm9yCglhbm9ueW1vdXMgY2xhc3Nlcy4KCShmaXhfY29uc3RydWN0b3JzKTogUGFzcyBleHRyYSBhcmd1bWVudCB0byB2ZXJpZnlfY29uc3RydWN0b3Jfc3VwZXIuCgkodmVyaWZ5X2NvbnN0cnVjdG9yX3N1cGVyKTogTmV3IGxvY2FsIGBzZGVjbCcsIHVzZSBpdC4gU2VhcmNoIGZvcgoJbWF0Y2hpbmcgY29uc3RydWN0b3IgKHBvc3NpYmx5IGZlYXR1cmluZyBhcmd1bWVudHMpIGluIHN1cGVyCgljbGFzcy4KCShsb29rdXBfbWV0aG9kX2ludm9rZSk6IENyYWZ0IGNvbnN0cnVjdG9yIGFjY29yZGluZyB0byBhcmd1bWVudHMKCWxpc3Qgd2hlbiBkZWFsaW5nIHdpdGggYW5vbnltb3VzIGNsYXNzIGNvbnN0cnVjdG9ycy4KCShidWlsZF9zdXBlcl9pbnZvY2F0aW9uKTogUGFzcyBhcmd1bWVudHMgdG8gYW5vbnltb3VzIGNsYXNzIHN1cGVyCgljb25zdHJ1Y3RvcnMuCgkoc2VhcmNoX2xvb3ApOiBVc2UgRk9SX0xPT1BfUC4KCShsYWJlbGVkX2Jsb2NrX2NvbnRhaW5zX2xvb3BfcCk6IExpa2V3aXNlLgoKMjAwMC0wMS0xMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChzZXRfc3VwZXJfaW5mbyk6IFNldCBDTEFTU19TVEFUSUMgd2hlbiBhcHByb3ByaWF0ZS4KCShlbmNsb3NpbmdfY29udGV4dF9wKTogTmV3IGZ1bmN0aW9uLgoJKGdldF9hY2Nlc3NfZmxhZ3NfZnJvbV9kZWNsKTogSGFuZGxlIENMQVNTX1NUQVRJQy4KCShtYXliZV9sYXlvdXRfc3VwZXJfY2xhc3MpOiBFeHRyYSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgdG8KCWRvX3Jlc29sdmVfY2xhc3MuCgkobGF5b3V0X2NsYXNzX21ldGhvZCk6IFVzZSBJRF9GSU5JVF9QLCBERUNMX0NMSU5JVF9QIGFuZAoJSURfSU5JVF9QLgoJKiBkZWNsLmMgKGFjY2VzczBfaWRlbnRpZmllcl9ub2RlKTogTmV3IGdsb2JhbC4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IGFjY2VzczBfaWRlbnRpZmllcl9ub2RlIGluaXRpYWxpemVkLgoJKHB1c2hkZWNsKTogU2V0IERFQ0xfQ09OVEVYVCBvbmx5IG9uIG5vbiB0eXBlIGRlY2xzLgoJKiBleHByLmMgKGxvb2t1cF9maWVsZCk6IExvb2t1cCBpbm5lciBjbGFzcyBmaWVsZHMgaW4gZW5jbG9zaW5nCgljb250ZXh0cy4KCShleHBhbmRfaW52b2tlKTogVXNlIElEX0lOSVRfUC4KCShleHBhbmRfamF2YV9maWVsZF9vcCk6IFVzZSBERUNMX0NMSU5JVF9QLgoJKiBqYXZhLXRyZWUuZGVmIChDTEFTU19MSVRFUkFMKTogTmV3IHRyZWUgY29kZS4KCSogamF2YS10cmVlLmggKERFQ0xfRlVOQ1RJT05fQUNDRVNTX0RFQ0wsCglERUNMX0ZVTkNUSU9OX0lOTkVSX0FDQ0VTUywgRklFTERfSU5ORVJfQUNDRVNTKTogTmV3IG1hY3Jvcy4KCShzdHJ1Y3QgbGFuZ19kZWNsKTogTmV3IGZpZWxkIGBpbm5lcl9hY2Nlc3MnLgoJKGVuY2xvc2luZ19jb250ZXh0X3ApOiBQcm90b3R5cGVkLgoJKERFQ0xfSU5JVF9QLCBERUNMX0ZJTklUX1AsIERFQ0xfQ0xJTklUX1AsIElEX0lOSVRfUCwgSURfRklOSVRfUCwKCUlEX0NMSU5JVF9QKTogTmV3IG1hY3Jvcy4KCShDTEFTU19TVEFUSUMpOiBOZXcgbWFjcm8uCgkoQ0xBU1NfQUNDRVNTMF9HRU5FUkFURURfUCk6IE5ldyBtYWNyby4KCShPVVRFUl9GSUVMRF9BQ0NFU1NfSURFTlRJRklFUl9QLCBJTk5FUl9DTEFTU19ERUNMX1AsCglUT1BMRVZFTF9DTEFTU19ERUNMX1AsIElOTkVSX0NMQVNTX1RZUEVfUCwgVE9QTEVWRUxfQ0xBU1NfVFlQRV9QLAoJSU5ORVJfQ0xBU1NfUCk6IE5ldyBtYWNyb3MuCgkoREVDTF9JTk5FUl9DTEFTU19MSVNUKTogTmV3IG1hY3JvLgoJKiBqY2YtcGFyc2UuYyAoeXlwYXJzZSk6IEF2b2lkIHRoZSB1c2Ugb2YgQU5TSSBzdHJpbmcKCWNvbmNhdGVuYXRpb24uCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6IGJpbm9wOiBDaGFuZ2UgdGhlIHR5cGUgb2YKCXRoZSBzaGlmdCB2YWx1ZSB0byBpbnQuIEZpeGVkIHR5cG8gaW4gY29tbWVudC4KCSogbGV4LmMgKGluc3RfaWQsIHdwdl9pZCk6IEluaXRpYWxpemUuCgkqIG1hbmdsZS5jICh1bmljb2RlX21hbmdsaW5nX2xlbmd0aCk6IFRha2UgYCQnIGludG8gYWNjb3VudC4KCSogcGFyc2UuaCAoRFJFQ09WRVIsIFJFQ09WRVIpOiBUZXJtaW5hdGUgcHJvcGVybHkuCgkoSURFTlRJRklFUl9JTk5FUl9DTEFTU19PVVRFUl9GSUVMRF9BQ0NFU1MpOiBOZXcgbWFjcm8uCgkodHlwZWRlZiBzdHJ1Y3QgX2pkZXApOiBOZXcgZmllbGQgYGVuY2xvc2luZycuCgkoSkRFUF9FTkNMT1NJTkcpOiBOZXcgbWFjcm8uCgkoSVNfQ0xJTklUKTogRGVsZXRlZCAoREVDTF9DTElOSVRfUCByZXBsYWNlcyBpdC4pCgkoc3RydWN0IHBhcnNlcl9jdHh0KTogTmV3IGZpZWxkcyBgbWFya2VyX2JlZ2lubmluZycsIGBtYXJrZWRfZW5kJy4KCShHRVRfQ1BDX0xJU1QsIENQQ19JTk5FUl9QLCBHRVRfQ1BDLCBHRVRfQ1BDX1VOLCBHRVRfQ1BDX1VOX01PREUsCglHRVRfQ1BDX0RFQ0xfTk9ERSwgR0VUX0VOQ0xPU0lOR19DUEMsIEdFVF9ORVhUX0VOQ0xPU0lOR19DUEMsCglHRVRfRU5DTE9TSU5HX0NQQ19DT05URVhUKTogTmV3IG1hY3Jvcy4KCShQVVNIX0NQQywgUFVTSF9FUlJPUiwgUE9QX0NQQyk6IE5ldyBtYWNyb3MuCgkoZG9fcmVzb2x2ZV9jbGFzcyk6IEFkZGVkIGV4dHJhIGFyZ3VtZW50IGluIHByb3RvdHlwZS4KCSogcGFyc2UueSAocmVzb2x2ZV9jbGFzcyk6IEFkZGVkIGV4dHJhIGFyZ3VtZW50IGluIHByb3RvdHlwZS4KCShtYXliZV9jcmVhdGVfY2xhc3NfaW50ZXJmYWNlX2RlY2wpOiBMaWtld2lzZS4KCShtYXliZV91c2VfYWNjZXNzX21ldGhvZCwgYnVpbGRfd2ZsX3dyYXApOiBOZXcgZnVuY3Rpb25zLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX2NsYXNzZXMsIGphdmFfY29tcGxldGVfZXhwYW5kX2NsYXNzKToKCUxpa2V3aXNlLgoJKGphdmFfcGFyc2VyX2NvbnRleHRfcHVzaF9pbml0aWFsaXplZF9maWVsZCwKCWphdmFfcGFyc2VyX2NvbnRleHRfc3VzcGVuZCwgamF2YV9wYXJzZXJfY29udGV4dF9yZXN1bWUpOgoJTGlrZXdpc2UuCgkobWF5YmVfbWFrZV9uZXN0ZWRfY2xhc3NfbmFtZSwgbWFrZV9uZXN0ZWRfY2xhc3NfbmFtZSwKCXNldF9uZXN0ZWRfY2xhc3Nfc2ltcGxlX25hbWVfdmFsdWUsCglsaW5rX25lc3RlZF9jbGFzc190b19lbmNsb3NpbmcsIGZpbmRfYXNfaW5uZXJfY2xhc3MsCglmaW5kX2FzX2lubmVyX2NsYXNzX2RvLCBjaGVja19pbm5lcl9jbGFzc19yZWRlZmluaXRpb24sCglidWlsZF90aGlzbl9hc3NpZ24sIGJ1aWxkX2N1cnJlbnRfdGhpc24sIGJ1aWxkX2FjY2Vzc190b190aGlzbiwKCW1heWJlX2J1aWxkX3RoaXNuX2FjY2Vzc19tZXRob2QsIGJ1aWxkX291dGVyX2ZpZWxkX2FjY2VzcywKCWJ1aWxkX291dGVyX2ZpZWxkX2FjY2Vzc19tZXRob2RzLCBidWlsZF9vdXRlcl9maWVsZF9hY2Nlc3NfZXhwciwKCWJ1aWxkX291dGVyX21ldGhvZF9hY2Nlc3NfbWV0aG9kLCBidWlsZF9uZXdfYWNjZXNzX2lkLAoJYnVpbGRfb3V0ZXJfZmllbGRfYWNjZXNzX21ldGhvZCwgb3V0ZXJfZmllbGRfYWNjZXNzX3AsCglvdXRlcl9maWVsZF9leHBhbmRlZF9hY2Nlc3NfcCwgb3V0ZXJfZmllbGRfYWNjZXNzX2ZpeCwKCWJ1aWxkX2luY29tcGxldGVfY2xhc3NfcmVmLCBwYXRjaF9pbmNvbXBsZXRlX2NsYXNzX3JlZiwKCWNyZWF0ZV9hbm9ueW1vdXNfY2xhc3MpOiBMaWtld2lzZS4KCShpbnN0X2lkLCB3cHZfaWQpOiBOZXcgc3RhdGljIGdsb2JhbCB2YXJpYWJsZXMuCgkoc3luY2hyb25pemVkOik6IE5ldyBydWxlLCB0YWdnZWQgPG5vZGU+LgoJKHR5cGVfZGVjbGFyYXRpb246KTogTm8gbG9uZ2VyIHRhZ2dlZCA8bm9kZT4uIENhbGwgUE9QX0NQQyBpbiBzdWIKCXJ1bGVzLgoJKGFub255bW91c19jbGFzc19jcmVhdGlvbjopOiBOZXcgcnVsZSwgdGFnZ2VkIDxub2RlPi4KCShORVdfVEspOiBUYWdnZWQgPG5vZGU+LgoJKHR5cGVfbGl0ZXJhbHMsIGFycmF5X3R5cGVfbGl0ZXJhbCk6IE5ldyBydWxlcywgdGFnZ2VkIDxub2RlPi4KCShjbGFzc19kZWNsYXJhdGlvbjopOiBSZW1vdmVkIGFjdGlvbiB3aGVuIHJlZHVjaW5nIGJ5IGNsYXNzX2JvZHk6CgkoY2xhc3NfYm9keTopOiBTZXQgREVDTF9FTkRfU09VUkNFX0xJTkUgYW5kIHJ1bGUncyByZXR1cm5lZCB2YWx1ZQoJdXNpbmcgR0VUX0NQQyBpbiBzdWItcnVsZXMuCgkoY2xhc3NfbWVtYmVyX2RlY2xhcmF0aW9uKTogSGFuZGxlIGlubmVyIGNsYXNzZXMuCgkobWV0aG9kX2RlY2xhcmF0aW9uKTogV2hlbiByZWR1Y2luZyBtZXRob2RfaGVhZGVyOiwgcmVzZXQKCWN1cnJlbnRfZnVuY3Rpb25fZGVjbCB3aGVuIGFwcHJvcHJpYXRlLgoJKG1ldGhvZF9kZWNsYXJhdG9yOik6IFNldCB0aGUgbnVtYmVyIG9mIGZvcm1hbCBwYXJhbWV0ZXIgdG8gMCBmb3IKCW1ldGhvZCBkZWNsYXJlZCB3aXRob3V0IGFyZ3VtZW50cy4KCShjb25zdHJ1Y3Rvcl9kZWNsYXJhdG9yOik6IExpa2V3aXNlLgoJKHN0YXRpY19pbml0aWFsaXplcjopOiBMaXN0IG9mIGVsZW1lbnRzIGtlcHQgaW4gYSBsaXN0LgoJKHN0YXRpYzopOiBSdWxlIG1vZGlmaWVyczogcmVwbGFjZXMgTU9ESUZJRVJfVEsuIEVuZm9yY2UgY29ycmVjdAoJdXNlIG9mIHRoZSBrZXl3b3JkIGBzdGF0aWMnIGZvciB0eXBlIGRlY2xhcmF0aW9ucy4KCShibG9ja19zdGF0ZW1lbnQ6KTogSGFuZGxlIGlubmVyIGNsYXNzIGRlY2xhcmF0aW9ucy4KCShwcmltYXJ5X25vX25ld19hcnJheTopOiBVc2UgdHlwZV9saXRlcmFsczouIEZpeGVkIGNvbW1lbnQuIEhhbmRsZQoJdHlwZSBxdWFsaWZpZWQgYHRoaXMnLgoJKGNsYXNzX2luc3RhbmNlX2NyZWF0aW9uX2V4cHJlc3Npb24pOiBVc2UgYW5vbnltb3VzX2NsYXNzX2NyZWF0aW9uOgoJdG8gaGFuZGxlIGlubmVyIGNsYXNzIGluc3RhbmNlcyBjcmVhdGlvbi4gSGFuZGxlIHF1YWxpZmllZCBgbmV3Jy4KCShzb21ldGhpbmdfZG90X25ldyk6IEFkZGVkIGFwcHJvcHJpYXRlIGFjdGlvbnMuCgkoY3JlYXRlX25ld19wYXJzZXJfY29udGV4dCk6IE5ldyBmdW5jdGlvbi4KCShqYXZhX3B1c2hfcGFyc2VyX2NvbnRleHQsIGphdmFfcGFyc2VyX2NvbnRleHRfc2F2ZV9nbG9iYWwsCglqYXZhX3BhcnNlcl9jb250ZXh0X3N1c3BlbmQpOiBVc2UgY3JlYXRlX25ld19wYXJzZXJfY29udGV4dC4KCShjaGVja19tb2RpZmllcnMpOiBDaGFuZ2VkIGxlYWRpbmcgY29tbWVudC4KCShjaGVja19jbGFzc19pbnRlcmZhY2VfY3JlYXRpb24pOiBIYW5kbGUgaW50ZXJjbGFzc2VzLgoJKGFkZF9zdXBlcmludGVyZmFjZXMpOiBGaXhlZCBjb21tZW50LgoJKGNyZWF0ZV9pbnRlcmZhY2UpOiBCdWlsZCBxdWFsaWZpZWQgbmFtZSBmcm9tIHRoZSByYXdfbmFtZSBpbnN0ZWFkCglvZiBpdHMgbWF0Y2hpbmcgV0ZMLiBQdXNoIHRoZSBpbml0aWFsaXplZCBmaWVsZHMgbGlzdC4gcmF3X25hbWUgYWRkZWQKCWFzIGFuIGV4dHJhIGFyZ3VtZW50IHRvIG1heWJlX2NyZWF0ZV9jbGFzc19pbnRlcmZhY2VfZGVjbC4KCShjcmVhdGVfY2xhc3MpOiBCdWlsZCBxdWFsaWZpZWQgbmFtZSBmcm9tIHRoZSByYXdfbmFtZSBpbnN0ZWFkIG9mCglpdHMgbWF0Y2hpbmcgV0ZMLiBSZW1vdmVkIGFzc2lnbm1lbnQgdG8JY3VycmVudF9wYXJzZWRfY2xhc3NfdW4uCglDYWxsIFBVU0hfRVJST1IgYmVmb3JlIHJldHVybmluZyBhbiBlcnJvci4gU3VzcGVuZCB0aGUgY3VycmVudAoJcGFyc2VyIGNvbnRleHQgd2hlbiBwcm9jZXNzaW5nIGFuIGlubmVyIGNsYXNzLiBQdXNoIHRoZQoJaW5pdGlhbGl6ZWQgZmllbGRzIGxpc3QuIHJhd19uYW1lIGFkZGVkIGFzIGFuIGV4dHJhIGFyZ3VtZW50IHRvCgltYXliZV9jcmVhdGVfY2xhc3NfaW50ZXJmYWNlX2RlY2wuIEFkZCB0aGUgcHJpdmF0ZSB0aGlzJDxuPgoJZmllbGQuCgkoZHVwbGljYXRlX2RlY2xhcmF0aW9uX2Vycm9yX3ApOiBVc2UgR0VUX0NQQyB3aGVuIGNhbGxpbmcgZmluZF9maWVsZC4KCShyZWdpc3Rlcl9maWVsZHMpOiBHZXQgdGhlIGNsYXNzIHR5cGUgZnJvbSBHRVRfQ1BDIGFuZCBoYW5kbGUKCXByZXZpb3VzIGVycm9ycy4gIEFkZGVkIGNvZGUgdG8gaGFuZGxlIHRoZSBjcmVhdGlvbiBvZiBzdGF0aWMKCWZpZWxkcyBpbiBpbm5lciBjbGFzc2VzLiBJbml0aWFsaXplZCBmaWVsZHMgaW5pdGlhbGl6YXRpb24KCXN0YXRlbWVudHMga2VwdCBpbiBhIGxpc3Qgb2YgbGlzdHMuCgkobWF5YmVfZ2VuZXJhdGVfZmluaXQpOiBJbml0aWFsaXplZCBmaWVsZHMgaW5pdGlhbGl6YXRpb24KCXN0YXRlbWVudHMga2VwdCBpbiBhIGxpc3Qgb2YgbGlzdHMuIFVzZSBHRVRfQ1BDLgoJKG1heWJlX2dlbmVyYXRlX2NsaW5pdCk6IExpa2V3aXNlLgoJKG1ldGhvZF9oZWFkZXIpOiBVc2UgR0VUX0NQQyBhbmQgR0VUX0NQQ19VTi4KCShwYXJzZXJfcXVhbGlmaWVkX2NsYXNzbmFtZSk6IEhhbmRsZSBpbm5lciBjbGFzc2VzLgoJKHJlZ2lzdGVyX2luY29tcGxldGVfdHlwZSk6IFNldCBKREVQX0VOQ0xPU0lORyB1c2luZyBHRVRfQ1BDLgoJKGphdmFfZml4X2NvbnN0cnVjdG9ycyk6IEhpZGUgcG9pbnRlciB0byBlbmNsb3NpbmcgY29udGV4dAoJaW5zdGFuY2UgaW4gY29uc3RydWN0b3IgbGlzdCB3aGVuIGRlYWxpbmcgd2l0aCBpbm5lciBjbGFzc2VzLgoJKGpkZXBfcmVzb2x2ZV9jbGFzcyk6IENhbGwgcmVzb2x2ZV9jbGFzcyB3aXRoIGV4dHJhIGZpcnN0IGFyZ3VtZW50CglKREVQX0VOQ0xPU0lORy4KCShyZXNvbHZlX2NsYXNzKTogQWRkIGVuY2xvc2luZyBjb250ZXh0IGFzIGEgZmlyc3QgZXh0cmEgYXJndW1lbnQKCXRvIGRvX3Jlc29sdmVfY2xhc3MuCgkoZG9fcmVzb2x2ZV9jbGFzcyk6IENhbGwgZmluZF9hc19pbm5lcl9jbGFzcy4gSGFuZGxlIFdGTHMKCXByb3Blcmx5LgoJKHJlc29sdmVfbm9fbGF5b3V0KTogRXh0cmEgYXJndW1lbnQgYWRkZWQgdG8gcmVzb2x2ZV9jbGFzcwoJaW52b2NhdGlvbi4KCShyZXNldF9tZXRob2RfbmFtZSk6IFVzZSBERUNMX0NMSU5JVF9QLCBERUNMX0ZJTklUX1AuCgkoamF2YV9nZXRfcmVhbF9tZXRob2RfbmFtZSk6IFVzZSBHRVRfQ1BDX1VOLgoJKGNoZWNrX2Fic3RyYWN0X21ldGhvZF9kZWZpbml0aW9ucyk6IFVzZSBERUNMX0NMSU5JVF9QLgoJKGphdmFfY2hlY2tfYWJzdHJhY3RfbWV0aG9kcyk6IEhhbmRsZSBzdGF0aWMgbWV0aG9kIGRlY2xhcmVkIGluCglpbm5lciBjbGFzc2VzIGJ5IGFuIGVycm9yLgoJKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzKTogVXNlIERFQ0xfQ0xJTklUX1AuCgkoc291cmNlX3N0YXJ0X2phdmFfbWV0aG9kKTogQWxzbyBzZXQgREVDTF9NQVhfTE9DQUxTLgoJKGNyZWF0ZV9hcnRpZmljaWFsX21ldGhvZCk6IENhbGwgamF2YV9wYXJzZXJfY29udGV4dF9zYXZlX2dsb2JhbAoJYW5kIGphdmFfcGFyc2VyX2NvbnRleHRfcmVzdG9yZV9nbG9iYWwgaW5zdGVhZCBvZiBzYXZpbmcvcmVzdG9yaW5nCgl0aGUgY29udGV4dCBieSBoYW5kLgoJKGV4cGFuZF9zdGFydF9qYXZhX21ldGhvZCk6IEltcHJvdmVkIHZlcmJvc2UgbW9kZSBtZXNzYWdlLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZHMpOiBGaXhlZCBsZWFkaW5nIGNvbW1lbnQuIFVzZQoJREVDTF9DTElOSVRfUC4KCShmaXhfY29uc3RydWN0b3JzKTogQWRkZWQgYXNzaWdubWVudCB0byB0aGlzJDxuPiBpZiBuZWNlc3NhcnkuCgkoamF2YV9leHBhbmRfY2xhc3Nlcyk6IENhbGwgamF2YV9jb21wbGV0ZV9leHBhbmRfY2xhc3NlcyBpbnN0ZWFkCglvZiBqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzLgoJKG1ha2VfcXVhbGlmaWVkX3ByaW1hcnkpOiBTaW1wbGlmaWVkLgoJKG1lcmdlX3F1YWxpZmllZF9uYW1lKTogT3B0aW1pemVkIGZvciBtaXNzaW5nIGxlZnQgb3IgcmlnaHQgcGFydHMuCgkocmVzb2x2ZV9leHByZXNzaW9uX25hbWUpOiBIYW5kbGUgYWNjZXNzIHRvIG91dGVyIGNsYXNzIGZpZWxkcyBmcm9tCglpbnRlcmNsYXNzZXMuCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogTmV3IG1hY3JvCglSRVNUT1JFX1RISVNfQU5EX0NVUlJFTlRfQ0xBU1MsIHVzZWQuIEhhbmRsZSBjcmVhdGlvbiBvZiBpbm5lcgoJY2xhc3Nlcy4gUmVwb3J0IGVycm9yIG9uIG5vbiBhcHByb3ByaWF0ZSBxdWFsaWZpY2F0aW9uIG9mCglgbmV3Jy4gSGFuZGxlIHF1YWxpZmllZCBgdGhpcycuCgkobm90X2FjY2Vzc2libGVfcCk6IEFsbG93IGFjY2VzcyB0byBvdXRlciBjbGFzcyBwcml2YXRlIGZpZWxkcyBmcm9tCglpbm5lciBjbGFzc2VzLgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogSGFuZGxlIG1ldGhvZCBpbnZvY2F0aW9ucyB0aHJvdWdoCglhY2Nlc3MgbWV0aG9kcyBhbmQgaW5uZXIgY2xhc3MgY29uc3RydWN0b3IgaW52b2NhdGlvbnMuCgkoZmluZF9hcHBsaWNhYmxlX2FjY2Vzc2libGVfbWV0aG9kc19saXN0KTogU2VhcmNoIGVuY2xvc2luZwoJY29udGV4dHMgb2YgYW4gaW5uZXIgY2xhc3MuCgkoc2VhcmNoX2FwcGxpY2FibGVfbWV0aG9kc19saXN0KTogRml4ZWQgdHlwby4KCShhcmd1bWVudF90eXBlc19jb252ZXJ0aWJsZSk6IEhhbmRsZSBpbm5lciBjbGFzcyBjb25zdHJ1Y3RvcnMnCgloaWRkZW4gb3V0ZXIgY29udGV4dCByZWZlcmVuY2UgYXJndW1lbnQuCgkocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IEhhbmRsZSBxdWFsaWZpZWQgYHRoaXMnLgoJKGphdmFfY29tcGxldGVfbGhzKTogSGFuZGxlIHVzZSBvZiBmaWVsZCBhY2Nlc3NlZCB0aHJvdWdoCglhcnRpZmljaWFsIGFjY2VzcyBtZXRob2RzIGluIHZhcmlvdXMgY2FzZXMgb2YgYXNzaWdubWVudHMuIEhhbmRsZQoJQ0xBU1NfTElURVJBTCBub2RlLgoJKGNoZWNrX2ZpbmFsX2Fzc2lnbm1lbnQpOiBVc2UgREVDTF9DTElOSVRfUC4KCSh2YWxpZF9yZWZfYXNzaWduY29udl9jYXN0X3ApOiBIYW5kbGUgdGhlIGRlc3RpbmF0aW9uIGJlaW5nIGFuCgllbmNsb3NpbmcgY29udGV4dCBvZiB0aGUgc291cmNlLgoJKHBhdGNoX3VuYXJ5b3ApOiBIYW5kbGUgdXNlIG9mIGZpZWxkIGFjY2Vzc2VkIHRocm91Z2ggYXJ0aWZpY2lhbAoJYWNjZXNzIG1ldGhvZHMuCgkocGF0Y2hfcmV0dXJuKTogVXNlIERFQ0xfQ0xJTklUX1AuCgkocGF0Y2hfdGhyb3dfc3RhdGVtZW50KTogVXNlIERFQ0xfQ0xJTklUX1AuCgkoY2hlY2tfdGhyb3duX2V4Y2VwdGlvbnMpOiBVc2UgREVDTF9GSU5JVF9QIGFuZCBERUNMX0lOSVRfUC4KCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogVXNlIElEX0NMSU5JVF9QIGFuZAoJSURfSU5JVF9QLgoKMjAwMC0wMS0xNiAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChidWlsZF9zdHJpbmdfY29uY2F0ZW5hdGlvbik6IE9ubHkgdXNlCglTdHJpbmdCdWZmZXIoU3RyaW5nKSBzaG9ydGN1dCBpZiBTdHJpbmcgYXJnIGlzIGNvbnN0YW50LgoKMjAwMC0wMS0xMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiBiaW5vcDogQ2hhbmdlIHRoZSB0eXBlIG9mCgl0aGUgc2hpZnQgdmFsdWUgdG8gaW50LiBGaXhlZCB0eXBvIGluIGNvbW1lbnQuCgoyMDAwLTAxLTExICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGpjZi1wYXRoLmM6IERlbGV0ZSBQQVRIX1NFUEFSQVRPUiBhbmQgRElSX1NFUEFSQVRPUiBtYWNyb3MuCgkqIGpjZi13cml0ZS5jOiBMaWtld2lzZS4KCSogcGFyc2UueTogTGlrZXdpc2UuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGUuCgoyMDAwLTAxLTA5ICBBbnRob255IEdyZWVuICA8Z3JlZW5AY3lnbnVzLmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6IEVtaXQgaW52b2tlaW50ZXJmYWNlCglieXRlY29kZXMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuCgoyMDAwLTAxLTA5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoamNmLWR1bXAsIGdjamgpOiBNb3ZlIC4uL2Vycm9ycy5vIGJlZm9yZSAkKExJQlMpLgoKMjAwMC0wMS0wNiAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGphdmFfbGFuZ19leHBhbmRfZXhwcik6IFN3aXRjaCB0byBwZXJtYW5lbnQgb2JzdGFjawoJYmVmb3JlIGJ1aWxkaW5nIGNvbnN0YW50IGFycmF5IGRlY2wuCgoyMDAwLTAxLTA2ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9jb25kaXRpb25hbCk6IEZpeGVkIGluZGVudGF0aW9uIGluCgltZXRob2QgaW52b2NhdGlvbiBhbmQgdHlwbyBpbiBjb25kaXRpb25hbCBleHByZXNzaW9uLgoJKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogQ09ORF9FWFBSIGNhbiBiZSBwYXJ0IG9mIGEgYmlub3AuIElzc3VlCgl0aGUgYXBwcm9wcmlhdGUgTk9URV9QT1AuCgkqIHBhcnNlLnkgKHBhdGNoX2Jpbm9wKTogU2hpZnQgdmFsdWUgbWFzayB0byBmZWF0dXJlIHRoZSByaWdodAoJdHlwZS4KCjE5OTktMTItMzAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNsYXNzLmMgKGFzc3VtZV9jb21waWxlZCwgYXNzdW1lX2NvbXBpbGVkX25vZGUpOiBBZGQgc3RhdGljCglwcm90b3R5cGUuCgkoYWRkX2Fzc3VtZV9jb21waWxlZCk6IFVzZSB4bWFsbG9jL3hzdHJkdXAsIG5vdCBtYWxsb2Mvc3RyZHVwLgoKCSogamNmLWR1bXAuYyAoQVJSQVlfTkVXX05VTSk6IENhc3QgbG9uZyB0byBpbnQgaW4gc3dpdGNoLgoKCSoganZnZW5tYWluLmMgKHVzYWdlKTogQWRkIHN0YXRpYyBwcm90b3R5cGUgd2l0aCBBVFRSSUJVVEVfTk9SRVRVUk4uCgoJKiBwYXJzZS5oIChPQlNPTEVURV9NT0RJRklFUl9XQVJOSU5HKTogUmVuYW1lIHBhcmFtZXRlciBgbW9kaWZpZXInCgl0byBgX19tb2RpZmllcicgdG8gYXZvaWQgc3RyaW5naWZ5aW5nIGl0LgoKCSogcGFyc2UueSAodmVyaWZ5X2NvbnN0cnVjdG9yX2NpcmN1bGFyaXR5KTogRG9uJ3QgY2FsbCBhIHZhcmlhZGljCglmdW5jdGlvbiB3aXRoIGEgbm9uLWxpdGVyYWwgZm9ybWF0IHN0cmluZy4KCShqYXZhX2NoZWNrX2Fic3RyYWN0X21ldGhvZHMpOiBNb3ZlIHVucmVhY2hhYmxlIGNvZGUgaW5zaWRlCglgY29udGludWUnIHN0YXRlbWVudC4KCShsb29rdXBfbWV0aG9kX2ludm9rZSk6IENhbGwgeHN0cmR1cCwgbm90IHN0cmR1cC4KCgkqIGV4cHIuYyAoZXhwYW5kX2phdmFfZmllbGRfb3ApOiBBdm9pZCB0aGUgdXNlIG9mIEFOU0kgc3RyaW5nCgljb25jYXRlbmF0aW9uLgoKCSogamNmLXBhcnNlLmMgKHl5cGFyc2UpOiBMaWtld2lzZS4KCgkqIGp2LXNjYW4uYyAobWFpbik6IExpa2V3aXNlLgoKMTk5OS0xMi0zMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcGFyc2UuaCAoQUJTVFJBQ1RfQ0hFQ0ssIEpDT05TVFJVQ1RPUl9DSEVDSywKCUVSUk9SX0NBTlRfQ09OVkVSVF9UT19CT09MRUFOLCBFUlJPUl9DQU5UX0NPTlZFUlRfVE9fTlVNRVJJQywKCUVSUk9SX0NBU1RfTkVFREVEX1RPX0lOVEVHUkFMKTogQXZvaWQgdGhlIHVzZSBvZiBBTlNJIHN0cmluZwoJY29uY2F0ZW5hdGlvbi4KCgkqIHBhcnNlLnkgKHN5bmNocm9uaXplZCwgdmFyaWFibGVfcmVkZWZpbml0aW9uX2Vycm9yLAoJY2hlY2tfY2xhc3NfaW50ZXJmYWNlX2NyZWF0aW9uLCBjcmVhdGVfaW50ZXJmYWNlLCBjcmVhdGVfY2xhc3MsCgltZXRob2RfaGVhZGVyLCBmaW5pc2hfbWV0aG9kX2RlY2xhcmF0aW9uLAoJY2hlY2tfbW9kaWZpZXJzX2NvbnNpc3RlbmN5LCBtZXRob2RfZGVjbGFyYXRvciwKCWNvbXBsZXRlX2NsYXNzX3JlcG9ydF9lcnJvcnMsIGNoZWNrX2Fic3RyYWN0X21ldGhvZF9kZWZpbml0aW9ucywKCWphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzLCBjaGVja190aHJvd3NfY2xhdXNlcywKCWphdmFfY2hlY2tfYWJzdHJhY3RfbWV0aG9kcywgcmVhZF9pbXBvcnRfZGlyLAoJY2hlY2tfcGtnX2NsYXNzX2FjY2VzcywgZGVjbGFyZV9sb2NhbF92YXJpYWJsZXMsIGZpeF9jb25zdHJ1Y3RvcnMsCgljdXRfaWRlbnRpZmllcl9pbl9xdWFsaWZpZWQsIHJlc29sdmVfZXhwcmVzc2lvbl9uYW1lLAoJcmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lLCBwYXRjaF9tZXRob2RfaW52b2NhdGlvbiwKCWphdmFfY29tcGxldGVfbGhzLCBwYXRjaF9hc3NpZ25tZW50LCB0cnlfYnVpbHRpbl9hc3NpZ25jb252LAoJcGF0Y2hfYmlub3AsIHBhdGNoX2FycmF5X3JlZiwgcGF0Y2hfbmV3YXJyYXksIGJ1aWxkX2xhYmVsZWRfYmxvY2ssCglwYXRjaF9leGl0X2V4cHIsIHBhdGNoX2V4aXRfZXhwciwgcGF0Y2hfc3dpdGNoX3N0YXRlbWVudCwKCXBhdGNoX3RyeV9zdGF0ZW1lbnQsIHBhdGNoX3N5bmNocm9uaXplZF9zdGF0ZW1lbnQsCglwYXRjaF90aHJvd19zdGF0ZW1lbnQsIGNoZWNrX3Rocm93bl9leGNlcHRpb25zLAoJcGF0Y2hfY29uZGl0aW9uYWxfZXhwcik6IExpa2V3aXNlLgoKMTk5OS0xMi0yNCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoTElCREVQUyk6IEFkZGVkIGdjYydzIGVycm9ycy5vCgkoLi4vamNmLWR1bXAkKGV4ZWV4dCk6KTogTGluayB3aXRoIGdjYydzIGVycm9ycy5vCgkoLi4vZ2NqaCQoZXhlZXh0KTopOiBMaWtld2lzZS4KCSogZXhwci5jIChleHBhbmRfamF2YV9ORVcpOiBMYXlvdXQgdGhlIGVudGlyZSB0YXJnZXQgdHlwZSBpbnN0ZWFkIG9mCglsYXlpbmcgb3V0IGl0cyBtZXRob2RzIG9ubHkuCgkobG9va3VwX2ZpZWxkKTogTGF5b3V0IHRoZSBjbGFzcyBhZnRlciBoYXZpbmcgbG9hZGVkIGl0LgoJKiBqYXZhLXRyZWUuaCAoamF2YV9kZWJ1Z19jb250ZXh0KTogRGVjbGFyZWQuCgkqIGpjZi1pby5jICh0b3BsZXYuaCk6IEluY2x1ZGVkLgoJKGZpbmRfY2xhc3MpOiBSZW1vdmVkIGFzc2lnbm1lbnQgdG8gamNmJ3Mgb3V0b2ZzeW5jaAoJZmllbGQuIEZvcmNlIHNvdXJjZSBmaWxlIHRvIGJlIHJlYWQgaWYgbmV3ZXIgdGhhbiBpdHMgbWF0Y2hpbmcKCWNsYXNzIGZpbGUuIFR3ZWFrZWQgZGVidWcgbWVzc2FnZXMuCgkqIGpjZi1wYXJzZS5jIChqY2Zfb3V0X29mX3N5bmNoKTogRGVsZXRlZC4KCShyZWFkX2NsYXNzKTogQ2FsbCB0byBqY2Zfb3V0X29mX3N5bmNoIHJlbW92ZWQuCgkqIGpjZi5oICh0eXBlZGVmIHN0cnVjdCBKQ0YpOiBGaWVsZCBgb3V0b2ZzeW5jaCcgZGVsZXRlZC4KCShqY2Zfb3V0X29mX3N5bmNoKTogUHJvdG90eXBlIGRlbGV0ZWQuCgkqIHBhcnNlLmggKHN0cnVjdCBwYXJzZXJfY3R4dCk6IGBtaW51c19zZWVuJywgYGphdmFfZXJyb3JfZmxhZycsCglgZGVwcmVjYXRlZCcgYW5kIGBjbGFzc19lcnInOiBpbnRlZ2VyIHR1cm5lZCBpbnRvIGJpdC1maWVsZHMuCglOZXcgYml0LWZpZWxkcyBgc2F2ZWRfZGF0YV9jdHgnIGFuZCBgc2F2ZWRfZGF0YScuIEZpeGVkIGNvbW1lbnRzLgoJKiBwYXJzZS55IChwYWNrYWdlX2xpc3QpOiBOZXcgZ2xvYmFsLgoJKHBhY2thZ2VfZGVjbGFyYXRpb246KTogUmVjb3JkIG5ld2x5IHBhcnNlZCBwYWNrYWdlIG5hbWUuCgkoZXh0cmFfY3R4cF9wdXNoZWRfcCk6IFN0YXRpYyBnbG9iYWwgZGVsZXRlZC4KCShqYXZhX3BhcnNlcl9jb250ZXh0X3NhdmVfZ2xvYmFsKTogQ3JlYXRlIGJ1ZmZlciBjb250ZXh0IGZvciB0aGUKCXB1cnBvc2Ugb2Ygc2F2aW5nIGdsb2JhbHMsIGlmIG5lY2Vzc2FyeS4KCShqYXZhX3BhcnNlcl9jb250ZXh0X3Jlc3RvcmVfZ2xvYmFsKTogUG9wIGNvbnRleHQgcHVzaGVkIGZvciB0aGUKCXB1cnBvc2Ugb2Ygc2F2aW5nIGdsb2JhbHMsIGlmIG5lY2Vzc2FyeS4KCShqYXZhX2RlYnVnX2NvbnRleHRfZG8pOiBOZXcgcHJvdG90eXBlIGFuZCBmdW5jdGlvbi4KCShqYXZhX2RlYnVnX2NvbnRleHQpOiBMaWtld2lzZS4KCShkb19yZXNvbHZlX2NsYXNzKTogVXNlIGFscmVhZHkgcGFyc2VkIHBhY2thZ2UgbmFtZXMgdG8gcXVhbGlmeQoJYW5kIGxvb2t1cCBjbGFzcyBjYW5kaWRhdGUuCgkoamF2YV9wcmVfZXhwYW5kX2NsaW5pdCk6IFJlbW92ZWQgdW5uZWNlc3NhcnkgbG9jYWwgdmFyaWFibGUuCgoxOTk5LTEyLTE3ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBnamF2YWguYyAoZGVjb2RlX3NpZ25hdHVyZV9waWVjZSk6IFByaW50ICI6OiIgaW4gSkFycmF5PD4uICBUaGlzCglmaXhlcyBQUiBnY2ovMTE5LgoJKHByb2Nlc3NfZmlsZSk6IFVzZSBgXG5cJyBhdCBlbmQgb2YgZWFjaCBsaW5lIGluIHN0cmluZy4KCjE5OTktMTItMTYgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogZXhwci5jIChleHBhbmRfaW52b2tlKTogTGF5b3V0IHRoZSBsb2FkZWQgY2xhc3MgYmVmb3JlCglhdHRlbXB0aW5nIHRvIHVzZSBpdC4KCShleHBhbmRfamF2YV9maWVsZF9vcCk6IEFsbG93IGZpbmFsIGZpZWxkIGFzc2lnbm1lbnRzIHRvIHRha2UKCXBsYWNlIGluICRmaW5pdCQuCgkqIHR5cGVjay5jIChjb252ZXJ0KTogUmV0dXJuIGVycm9yX21hcmtfbm9kZSBpZiBleHByIGlzIG51bGwuCgoxOTk5LTEyLTE0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGNsYXNzX2RlcHRoKTogUmV0dXJuIC0xIGlmIHRoZSBjbGFzcyBkb2Vzbid0IGxvYWQKCXByb3Blcmx5LgoJKiBleHByLmMgKGNhbl93aWRlbl9yZWZlcmVuY2VfdG8pOiBDaGVjayBmb3IgZXJyb3JzIGR1cmluZyBkZXB0aAoJY29tcHV0YXRpb24gYW5kIHJldHVybiAwIGFjY29yZGluZ2x5LgoJKiBqY2YtcGFyc2UuYyAocGFyc2Vfc291cmNlX2ZpbGUpOiBDYWxsIGphdmFfZml4X2NvbnN0cnVjdG9ycyB0bwoJY3JlYXRlIGRlZmF1bHQgY29uc3RydWN0b3JzIGFuZCBhZGQgYW4gb3RoZXIgZXJyb3IgY2hlY2suCgkqIHBhcnNlLmggKGphdmFfZml4X2NvbnN0cnVjdG9ycyk6IFByb3RvdHlwZWQuCgkqIHBhcnNlLnkgKGphdmFfcHJlX2V4cGFuZF9jbGluaXQpOiBMaWtld2lzZS4KCShidWlsZF9zdXBlcl9pbnZvY2F0aW9uKTogUmUtcHJvdG90eXBlZCB0byBmZWF0dXJlIG9uZSBhcmd1bWVudC4KCShqYXZhX2NoZWNrX2NpcmN1bGFyX3JlZmVyZW5jZSk6IERpcmVjdGx5IHVzZSBgY3VycmVudCcuCgkoamF2YV9maXhfY29uc3RydWN0b3JzKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzKTogRG9uJ3QgY3JlYXRlIGRlZmF1bHQgY29uc3RydWN0b3JzCgloZXJlLCBidXQgYWJvcnQgaWYgbm9uZSB3ZXJlIGZvdW5kLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZHMpOiBQcmUtcHJvY2VzcyA8Y2xpbml0PiBjYWxsaW5nCglqYXZhX3ByZV9leHBhbmRfY2xpbml0LgoJKGphdmFfcHJlX2V4cGFuZF9jbGluaXQpOiBOZXcgZnVuY3Rpb24uCgkoZml4X2NvbnN0cnVjdG9ycyk6IGJ1aWxkX3N1cGVyX2ludm9jYXRpb24gaW52b2tlZCB3aXRoIHRoZQoJY3VycmVudCBtZXRob2QgZGVjbGFyYXRpb24gYXMgYW4gYXJndW1lbnQuCgkoYnVpbGRfc3VwZXJfaW52b2NhdGlvbik6IFVzZSB0aGUgY29udGV4dCBvZiB0aGUgcHJvY2Vzc2VkIG1ldGhvZAoJZGVjbCBhcmd1bWVudCBpbnN0ZWFkIG9mIGN1cnJlbnRfY2xhc3MuCgkqIHR5cGVjay5jIChsb29rdXBfamF2YV9tZXRob2QpOiBUYWtlIFdGTHMgaW4gbWV0aG9kIG5hbWVzIGludG8KCWFjY291bnQuCgoxOTk5LTEyLTE0ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3NfZGF0YSk6IGZsYWdfa2VlcF9pbmxpbmVfZnVuY3Rpb25zIHRvIGtlZXAKCXByaXZhdGUgbWV0aG9kcyBpbiB0aGUgbWV0aG9kIGFycmF5LgoKMTk5OS0xMi0xNSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpOiBUYWtlIGludG8gYWNjb3VudCBib3RoIHR5cGVzIG9mCglgdGhyb3cncyB3aGVuIGNoZWNraW5nIGZvciB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4KCjE5OTktMTItMTAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9saHMpOiBGb3JjZSBjb252ZXJzaW9uIG9mIGFycmF5CglkaW1lbnNpb25zIHRvIGludF90eXBlX25vZGUsIHRoYXQncyB3aGF0IHJ1bnRpbWUncyBBQkkgZXhwZWN0cy4KCjE5OTktMTItMTAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UuaCAoRVhQUl9XRkxfUVVBTElGSUNBVElPTik6IFRlbXBvcmFyeSB1c2VzIHRoZSB0aGlyZAoJb3BlcmFuZCBvZiBhIFdGTCwgdW50aWwgdGhlIEphdmEgZnJvbnQtZW5kIGdldHMgZml4ZWQgd2l0aCByZWdhcmQKCXRvIE1hcmsgTWl0Y2hlbGwncyBnY2MvdHJlZS5oIHBhdGNoICgxOTk5LTEyLTA0LikKCjE5OTktMTItMTAgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogcGFyc2UuaCAoQlVJTERfVEhST1cpOiBBZGQgc3VwcG9ydCBmb3Igc2psai1leGNlcHRpb25zLgoJZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFkZCBfSnZfU2psal9UaHJvdy4KCWV4cHIuYyAoYnVpbGRfamF2YV9hdGhyb3cpOiBBZGQgc3VwcG9ydCBmb3Igc2psai1leGNlcHRpb25zLgoJamF2YS10cmVlLmg6IERpdHRvLgoJamNmLXdyaXRlLmM6IERpdHRvLgoKMTk5OS0xMi0wOCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGphdmFfbGFuZ19leHBhbmRfZXhwcik6IFN3aXRjaCB0byBwZXJtYW5lbnQgb2JzdGFjawoJYmVmb3JlIGNhbGxpbmcgZXhwYW5kX2VoX3JlZ2lvbl9zdGFydCBhbmQgZXhwYW5kX3N0YXJ0X2FsbF9jYXRjaC4KCSogZXhjZXB0LmMgKGV4cGFuZF9zdGFydF9qYXZhX2hhbmRsZXIpOiBTd2l0Y2ggdG8gcGVybWFuZW50CglvYnN0YWNrIGJlZm9yZSBjYWxsaW5nIGV4cGFuZF9laF9yZWdpb25fc3RhcnQuCgkoZXhwYW5kX2VuZF9qYXZhX2hhbmRsZXIpOiBTd2l0Y2ggdG8gcGVybWFuZW50IG9ic3RhY2sgYmVmb3JlCgljYWxsaW5nIGV4cGFuZF9zdGFydF9hbGxfY2F0Y2guCgoxOTk5LTEyLTUgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBjeWdudXMuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IE1hcmsgdGhyb3dfbm9kZSBhcyBhIG5vcmV0dXJuCglmdW5jdGlvbiB3aXRoIHNpZGUgZWZmZWN0cy4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IE1hcmsgYWxsIG1lbW9yeSBhbGxvY2F0aW5nIERFQ0xzIHdpdGgKCURFQ0xfSVNfTUFMTE9DLgoKMTk5OS0xMi0wMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX2VuZF9qYXZhX2hhbmRsZXIpOiBDYWxsCglleHBhbmRfcmVzdW1lX2FmdGVyX2NhdGNoIGFuZCBlbmRfY2F0Y2hfaGFuZGxlci4KCjE5OTktMTEtMzAgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBjeWdudXMuY29tPgoKCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogQ3JlYXRlIG5ldyByZXR1cm4gbGFiZWwKCWNoYWluIGlmIG5vbiBleGlzdGVudCAoZG9uJ3QgcmVseSBvbiB0aGUgdmVyaWZpZWQgc3RhdGUgb2YgdGhlIGpzcgoJdGFyZ2V0LikKCjE5OTktMTEtMzAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogRml4ZWQgaW5kZW50YXRpb24gZm9yCglDT01QT1VORF9FWFBSIGFuZCBGSVhfVFJVTkNfRVhQUiBjYXNlcy4KCgkqIHBhcnNlLnkgKHBhdGNoX2Fzc2lnbm1lbnQpOiBSZW1vdmVkIGJvZ3VzIGZpbmFsIGNsYXNzIHRlc3Qgb24KCWxocyB3aGVuIGNoZWNraW5nIG9uIHdoZXRoZXIgdG8gZW1pdCBhbiBBcnJheVN0b3JlRXhjZXB0aW9uIHJ1bnRpbWUKCWNoZWNrLgoJKiBleHByLmMgKGV4cGFuZF9qYXZhX2FycmF5c3RvcmUpOiBMaWtld2lzZS4KCjE5OTktMTEtMjggQW50aG9ueSBHcmVlbiA8Z3JlZW5AY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZmluZF9sb2NhbF92YXJpYWJsZSk6IFJldXNlIHNpbmdsZSBzbG90IGRlY2xzIHdoZW4KCSAgYXBwcm9wcmlhdGUuCgoxOTk5LTExLTI0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGpjZi1wYXJzZS5jIChzYXdfamF2YV9zb3VyY2UpOiBHbG9iYWwgdmFyaWFibGUgcmVtb3ZlZC4KCShyZWFkX2NsYXNzKTogRG9uJ3QgdXNlIGBzYXdfamF2YV9zb3VyY2UnLiBBZGRlZCBleHRyYSBicmFjZXMuCgkoeXlwYXJzZSk6IENvZGUgc2V0dGluZyBgc2F3X2phdmFfc291cmNlJyByZW1vdmVkLgoKMTk5OS0xMS0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGV4Y2VwdC5jIChlbWl0X2hhbmRsZXJzKTogWmVybyBjYXRjaF9jbGF1c2VzIGFmdGVyIGVtaXR0aW5nIHRoZW0uCgoxOTk5LTExLTIzICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHZlcmlmeS5jIChtZXJnZV90eXBlX3N0YXRlKTogTm9uIHZlcmlmaWVkIHN1YnJvdXRpbmVzIGJlaW5nCgljb25zaWRlcmVkIG1vcmUgdGhhbiBvbmNlIHRvIHRyaWdnZXIgcGFzc2l2ZSB0eXBlIG1lcmdlLgoKMTk5OS0xMS0yMyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChjYXRjaF9jbGF1c2VfcGFyYW1ldGVyOik6IFN0aWxsIHNldCBgJCQnIHRvIE5VTExfVFJFRQoJaW4gY2FzZSBvZiBlcnJvci4gRXJyb3IgbWVzc2FnZSB0dW5lZC4KCjE5OTktMTEtMjEgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBjeWdudXMuY29tPgoKCSogY29uc3RhbnRzLmMgKGZpbmRfbWV0aG9kcmVmX2luZGV4KTogVW53cmFwIG1ldGhvZCBuYW1lcyBiZWZvcmUKCWluc2VydGluZyB0aGVtIGluIHRoZSBjb25zdGFudCBwb29sLgoKCSogamNmLXBhcnNlLmMgKGpjZl9wYXJzZSk6IERpc3BsYXkgYGludGVyZmFjZScgd2hlbiBhcHByb3ByaWF0ZS4KCgkqIGNsYXNzLmMgKGFzc3VtZV9jb21waWxlZF9ub2RlKTogTmV3IHR5cGVkZWYuCgkoYXNzdW1lX2NvbXBpbGVkX3RyZWUpOiBOZXcgc3RhdGljIGRhdGEuCgkoZmluZF9hc3N1bWVfY29tcGlsZWRfbm9kZSk6IE5ldyBmdW5jdGlvbi4KCShhZGRfYXNzdW1lX2NvbXBpbGVkKTogTmV3IGZ1bmN0aW9uLgoJKGFzc3VtZV9jb21waWxlZCk6IE5ldyBmdW5jdGlvbi4KCSogY2xhc3MuYyAobWFrZV9jbGFzc19kYXRhKTogVXNlIGFzc3VtZV9jb21waWxlZC4KCShpc19jb21waWxlZF9jbGFzcyk6IFVzZSBhc3N1bWVfY29tcGlsZWQuCgoJKiBqYXZhLXRyZWUuaCAoYWRkX2Fzc3VtZV9jb21waWxlZCk6IERlY2xhcmUuCgoJKiBsYW5nLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IFBhcnNlIG5ldyBvcHRpb25zLgoKMTk5OS0xMS0xNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3MpOiBBbHdheXMgY29udmVydCBUWVBFX1NJWkVfVU5JVCB0bwoJaW50X3R5cGVfbm9kZTogdGhhdCdzIHdoYXQgYF9Kdl9BbGxvY09iamVjdCcgZXhwZWN0cy4KCjE5OTktMTEtMTEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAobG9va3VwX21ldGhvZF9pbnZva2UpOiBVc2UgbGFuZ19wcmludGFibGVfbmFtZSB0bwoJcmVsaWFibHkgYnVpbGQgdGhlIHR5cGUgbmFtZSBkdXJpbmcgZXJyb3IgcmVwb3J0LiBGaXhlcyBQUiBnY2ovOTcuCgoxOTk5LTExLTA5ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBqY2YtcGF0aC5jOiBJbmNsdWRlIDxzeXMvc3RhdC5oPi4KCShqY2ZfcGF0aF9pbml0KTogU2VhcmNoIGZvciBsaWJqYXZhLnppcC4gIEZpeGVzIFBSIGdjai84NC4KCShESVJfVVApOiBOZXcgbWFjcm8uCgoxOTk5LTExLTA5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHNvdXJjZV9lbmRfamF2YV9tZXRob2QpOiBSZXN1bWUgcGVybWFuZW50IGFsbG9jYXRpb24sCglyZXZlcnNpbmcgQXByIDI3IDE5OTggcGF0Y2guCgkocGF0Y2hfc3RyaW5nX2NzdCk6IFBvcCBvYnN0YWNrcyBhZnRlciBoYXZpbmcgcHVzaGVkIHRoZSBwZXJtYW5lbnQKCW9uZXMuCgoxOTk5LTExLTA1ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfY2xhc3MpOiBFbWl0IGlubGluZWQgbWV0aG9kcyBpZiBhbnkgbmF0aXZlCgltZXRob2RzIGV4aXN0IGluIHRoZSBjbGFzcy4gIEZpeGVzIFBSIGdjai84NS4KCjE5OTktMTEtMDQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogSGFuZGxlIFBMVVNfRVhQUi4KCShxdWFsaWZ5X2FtYmlndW91c19uYW1lKTogTGlrZXdpc2UuCgoxOTk5LTExLTAzICBHb2RtYXIgQmFjayA8Z2JhY2tAY3MudXRhaC5lZHU+CgoJKiB0eXBlY2suYzogKGxvb2t1cF9qYXZhX21ldGhvZCk6ICBzZWFyY2ggYWxsIGluaGVyaXRlZAoJaW50ZXJmYWNlcyB3aGVuIGxvb2tpbmcgdXAgaW50ZXJmYWNlIG1ldGhvZC4KCjE5OTktMTEtMDEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAobWV0aG9kX2hlYWRlcjopOiBJc3N1ZSBlcnJvciBtZXNzYWdlIGZvciBydWxlIGB0eXBlCgllcnJvcicuCgkoc3luY2hyb25pemVkOik6IEVycm9yIHJlcG9ydCB3aGVuIG5vdCB1c2luZyBzeW5jaHJvbml6ZWQuCgoxOTk5LTExLTAxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IFByZXZlbnQgYHRoaXMnIGZyb20KCWJlaW5nIHVzZWQgYmVmb3JlIHRoZSBzdXBlcmNsYXNzIGNvbnN0cnVjdG9yIGhhcyBiZWVuIGNhbGxlZC4KCShjb21wbGV0ZV9mdW5jdGlvbl9hcmd1bWVudHMpOiBVc2UgQ0FMTF9FWFBMSUNJVF9DT05TVFJVQ1RPUl9QCglpbnN0ZWFkIG9mIGBDQUxMX1RISVNfQ09OU1RSVUNUT1JfUCcuCgoxOTk5LTEwLTMwICBUb2RkIFQuIEZyaWVzIDx0b2RkQGxpZ2h0aG91c2UuZnJpZXMubmV0PgoKCSogY2hlY2staW5pdC5jOiBGaXggdHlwbyBpbiBjb21tZW50LgoKMTk5OS0xMC0yOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kXzEpOiBTZXQgREVDTF9JTkxJTkUgdG8gMSBmb3IgcHJpdmF0ZSwgc3RhdGljCglhbmQgZmluYWwgbWV0aG9kLgoKMTk5OS0xMC0yOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChleHByZXNzaW9uX3N0YXRlbWVudDopOiBDYWxsIGZ1bmN0aW9uIHRvIHJlcG9ydAoJaW1wcm9wZXIgaW52b2NhdGlvbiBvZiBhIGNvbnN0cnVjdG9yLgoJKHBhcnNlX2N0b3JfaW52b2NhdGlvbl9lcnJvcik6IE5ldyBmdW5jdGlvbi4KCjE5OTktMTAtMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKHBvcGxldmVsKTogRG9uJ3Qgc2V0IEJMT0NLX1RZUEVfVEFHUyBvciBjYWxsCglyZW1lbWJlcl9lbmRfbm90ZS4KCjE5OTktMTAtMjEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGp2Z2VubWFpbi5jIChtYWluKTogX0p2X0NvbXBpbGVyX1Byb3BlcnRpZXMgbm93IGFuIGV4dGVybjsgc2V0CglpbiBnZW5lcmF0ZWQgYG1haW4nLgoKMTk5OS0xMC0yMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBIYW5kbGUgTU9ESUZZX0VYUFIuCgkocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IExpa2V3aXNlLgoKMTk5OS0xMC0yMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX3RyZWUpOiBmb2xkX2NvbnN0YW50X2Zvcl9pbml0IHRvIHdvcmsgb24KCXBlcm1hbmVudF9vYnN0YWNrLgoJKGphdmFfY29tcGxldGVfbGhzKTogTGlrZXdpc2UuCgkoYXJyYXlfY29uc3RydWN0b3JfY2hlY2tfZW50cnkpOiBDb21wbGV0ZSBhbiBpbml0aWFsaXplciBlbGVtZW50CglvbiBwZXJtYW5lbnRfb2JzdGFjay4KCjE5OTktMTAtMTkgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGpjZi1wYXJzZS5jIChwYXJzZV9zb3VyY2VfZmlsZSk6IENhbGwgamNmX2RlcGVuZGVuY3lfYWRkX2ZpbGUuCglGcm9tIE1pa2UgTW9yZXRvbiA8bWlrZUBwaWxsaW0uZGVtb24uY28udWs+LgoKMTk5OS0xMC0xNSAgR3JlZyBNY0dhcnkgIDxna21AZ251Lm9yZz4KCgkqIGphdmEtdHJlZS5oIChmbGFnX2JvdW5kc19jaGVjayk6IFJlbW92ZSBleHRlcm4gZGVjbC4KCSogbGFuZy5jIChmbGFnX2JvdW5kc19jaGVjayk6IFJlbW92ZSBnbG9iYWwgdmFyaWFibGUuCgkobGFuZ19mX29wdGlvbnMpOiBSZW1vdmUgImJvdW5kcy1jaGVjayIgZW50cnkuCgkobGFuZ19pbml0X29wdGlvbnMpOiBEZWZhdWx0IGZsYWdfYm91bmRzX2NoZWNrIHRvICJvbiIuCgoxOTk5LTEwLTE0ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBqdmdlbm1haW4uYyAodXNhZ2UpOiBOZXcgZnVuY3Rpb24uCgkobWFpbik6IFVzZSBpdC4gIEFsc28sIGhhbmRsZSBgLUQnIG9wdGlvbnMuCgkqIGp2c3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IFJlY29nbml6ZSAtRC4KCShqdmdlbm1haW5fc3BlYyk6IEFkZGVkIGAle0QqfScgdG8ganZnZW5tYWluIGludm9jYXRpb24uCgoJKiBqdnNwZWMuYyAoanZnZW5tYWluX3NwZWMpOiBVc2UgYCV1bWFpbicsIG5vdCBqdXN0IGAldScuCgoxOTk5LTEwLTE0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBqY2YtZHVtcC5jIChwcmludF9jb25zdGFudCwgZGlzYXNzZW1ibGVfbWV0aG9kKTogRG9uJ3QgY2FsbCBhCgl2YXJpYWRpYyBmdW5jdGlvbiB3aXRoIGEgbm9uLWxpdGVyYWwgZm9ybWF0IHN0cmluZy4KCgkqIHBhcnNlLXNjYW4ueSAocmVwb3J0X21haW5fZGVjbGFyYXRpb24pOiBMaWtld2lzZS4KCgkqIHBhcnNlLmggKEVSUk9SX0NBU1RfTkVFREVEX1RPX0lOVEVHUkFMKTogTGlrZXdpc2UuCgoJKiBwYXJzZS55IChyZWFkX2ltcG9ydF9kaXIsIHBhdGNoX2Fzc2lnbm1lbnQsIHBhdGNoX2Jpbm9wLAoJcGF0Y2hfYXJyYXlfcmVmKTogTGlrZXdpc2UuCgoJKiB0eXBlY2suYyAoYnVpbGRfamF2YV9hcnJheV90eXBlKTogTGlrZXdpc2UuCgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiBMaWtld2lzZS4KCjE5OTktMTAtMTIgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamNmLXdyaXRlLmMgKFJFTE9DQVRJT05fVkFMVUVfMSk6IEZpeGVkIGludGVnZXIgdmFsdWUgZnJvbSAwIHRvIDEuCgoxOTk5LTEwLTA3ICBBbnRob255IEdyZWVuICA8Z3JlZW5AY3lnbnVzLmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9jbGFzc2ZpbGUpOiBVc2UgVU5TQUZFX1BVVHggaW4gY2FzZXMKCXdoZXJlIENIRUNLX1BVVCBtYXkgZmFpbCBmb3IgdmFsaWQgcmVhc29ucy4KCgkqIGpjZi13cml0ZS5jIChVTlNBRkVfUFVUMSwgVU5TQUZFX1BVVDIsIFVOU0FGRV9QVVQzLAoJVU5TQUZFX1BVVE4pOiBOZXcgbWFjcm9zLgoKMTk5OS0xMC0wNCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogbGV4LmggKEJVSUxEX09QRVJBVE9SMik6IFJldHVybiBBU1NJR05fQU5ZX1RLIGluIGBsaXRlJyBjYXNlIGFzCgl3ZWxsLiAgRml4ZXMgSmF2YSBQUiBnY2ovNTkuCgkqIHBhcnNlLXNjYW4ueSAoeXllcnJvcik6IFJlcG9ydCBlcnJvcnMuCgoxOTk5LTA5LTI0ICBHbGVubiBDaGFtYmVycyAgPEdDaGFtYmVyc0Bwcm92c29sLmNvbT4KCgkqIGRlY2wuYyAoaW5zZXJ0X2Jsb2NrKTogUmVtb3ZlIHVuY29uZGl0aW9uYWwgYGFib3J0Jy4KCjE5OTktMDktMjQgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogZGVjbC5jIChidWlsdGluX2Z1bmN0aW9uKTogTm8gbG9uZ2VyIHN0YXRpYy4gIE5ldyBhcmcgQ0xBU1MuICBBcmcKCUZVTkNUSU9OX0NPREUgbm93IG9mIHR5cGUgaW50LiAgQWxsIGNhbGxlcnMgY2hhbmdlZC4KCVNldCB0aGUgYnVpbHRpbidzIERFQ0xfQlVJTFRfSU5fQ0xBU1MuCgoxOTk5LTA5LTIzICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBqdnNwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBEb24ndCByZWFkIHNwZWMgZmlsZSBpZgoJLWZzeW50YXgtb25seSBnaXZlbi4KCjE5OTktMDktMjIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGxhbmctc3BlY3MuaDogQWRkZWQgYCUoamMxKScgdG8gdGhlIGpjMSBzcGVjLgoKCSogamF2YW9wLmggKFdPUkRfVE9fRkxPQVQpOiBVc2UgYGlubGluZScgdW5jb25kaXRpb25hbGx5LgoJKFdPUkRTX1RPX0xPTkcpOiBMaWtld2lzZS4KCShXT1JEU19UT19ET1VCTEUpOiBMaWtld2lzZS4KCjE5OTktMDktMTQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamNmLXdyaXRlLmMgKFJFTE9DQVRJT05fVkFMVUVfMCk6IE5ldyBtYWNyby4KCShSRUxPQ0FUSU9OX1ZBTFVFXzEpOiBMaWtld2lzZS4KCShlbWl0X2lpbmMsIGVtaXRfcmVsb2MsIHB1c2hfY29uc3RhbnQxLCBwdXNoX2NvbnN0YW50MiwKCXB1c2hfaW5fY29uc3QsIHB1c2hfbG9uZ19jb25zdCk6IFByb3RvdHlwZWQuCgkocHVzaF9jb25zdGFudDEpOiBBcmd1bWVudCBgaW5kZXgnIGlzIG9mIHR5cGUgSE9TVF9XSURFX0lOVC4KCShwdXNoX2NvbnN0YW50Mik6IExpa2V3aXNlLgoJKHB1c2hfaW50X2NvbnN0KTogQ2FzdCBmaW5kX2NvbnN0YW50MSdzIGludGVnZXIgYXJndW1lbnRzIHRvIGBqd29yZCcuCgkoZmluZF9jb25zdGFudF93aWRlKTogQ2FzdCBmaW5kX2NvbnN0YW50MidzIGludGVnZXIgYXJndW1lbnRzIHRvCglgandvcmQnLgoJKGZpbmRfY29uc3RhbnRfaW5kZXgpOiBDYXN0IGZpbmRfY29uc3RhbnQyJ3MgYW5kIGZpbmRfY29uc3RhbnQyJ3MKCWludGVnZXIgYXJndW1lbnRzIHRvIGBqd29yZCcuCgkoZW1pdF9wb3ApOiBBcmd1bWVudCBgdmFsdWUnIGlzIG9mIHR5cGUgSE9TVF9XSURFX0lOVC4KCShlbWl0X3N3aXRjaF9yZWxvYyk6IFVzZSBSRUxPQ0FUSU9OX1ZBTFVFXzAuCgkoZW1pdF9pZik6IFVzZSBSRUxPQ0FUSU9OX1ZBTFVFXzEuCgkoZW1pdF9nb3RvKTogTGlrZXdpc2UuCgkoZW1pdF9qc3IpOiBMaWtld2lzZS4KCShnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6IFVzZSBSRUxPQ0FUSU9OX1ZBTFVFXzAuIENhc3Qgc2Vjb25kCglhcmd1bWVudCB0byBwdXNoX2xvbmdfY29uc3QgdG8gSE9TVF9XSURFX0lOVC4KCjE5OTktMDktMTUgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBNYWtlZmlsZS5pbiAocGFyc2Uubyk6IERlcGVuZCBvbiAkKEpBVkFfVFJFRV9IKS4KCjE5OTktMDktMjAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBsYW5nLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IEV4dGVuZCBjb21tZW50LgoKMTk5OS0wOS0xNiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChqYXZhX21ldGhvZF9hZGRfc3RtdCk6IFRlc3QgYWdhaW5zdCBHRVRfQ1VSUkVOVF9CTE9DSwoJaW5zdGVhZCBvZiBmbmRlY2wuCgoxOTk5LTA5LTE2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBnamF2YWguYyAoZ2V0X2ZpZWxkX25hbWUsIHByaW50X21ldGhvZF9pbmZvLCBwcmludF9pbmNsdWRlLAoJYWRkX25hbWVsZXQpOiBVc2UgeG1hbGxvYywgbm90IG1hbGxvYy4KCgkqIGpjZi1kZXBlbmQuYyAoYWRkX2VudHJ5KTogTGlrZXdpc2UuICBVc2UgeHN0cmR1cCwgbm90IHN0cmR1cC4KCShtdW5nZSk6IFVzZSB4cmVhbGxvYywgbm90IHJlYWxsb2MsIHRydXN0IHhyZWFsbG9jIHRvIGhhbmRsZSBhCglOVUxMIHBvaW50ZXIuCgoJKiBqY2YtaW8uYyAob3Blbl9pbl96aXAsIGZpbmRfY2xhc3MpOiBVc2UgeHN0cmR1cCwgbm90IHN0cmR1cC4KCgkqIGpjZi1wYXJzZS5jIChqY2Zfb3V0X29mX3N5bmNoLCB5eXBhcnNlKTogTGlrZXdpc2UuCgoJKiBqY2YtcGF0aC5jIChhZGRfZW50cnkpOiBMaWtld2lzZS4KCgkqIGpjZi5oIChBTExPQywgUkVBTExPQyk6IFVzZSB4bWFsbG9jL3hyZWFsbG9jLCBub3QgbWFsbG9jL3JlYWxsb2MuCgoJKiBqdi1zY2FuLmMgKHhtYWxsb2MpOiBSZW1vdmUgZGVmaW5pdGlvbi4KCgkqIGp2Z2VubWFpbi5jICh4bWFsbG9jKTogTGlrZXdpc2UuCgoJKiBqdnNwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBVc2UgeGNhbGxvYywgbm90IHhtYWxsb2MvYnplcm8uCgoJKiBsZXguYyAoamF2YV9zdG9yZV91bmljb2RlKTogVXNlIHhyZWFsbG9jLCBub3QgcmVhbGxvYy4KCgkqIHBhcnNlLXNjYW4ueTogVXNlIGNvbmNhdCwgbm90IG9mIHhtYWxsb2MvYXNzaWduL3N0cmNweS4gIFVzZQoJY29uY2F0LCBub3QgeG1hbGxvYy9zcHJpbnRmLgoJKGphdmFfcHVzaF9wYXJzZXJfY29udGV4dCk6IFVzZSB4Y2FsbG9jLCBub3QgeG1hbGxvYy9iemVyby4KCSh4c3RyZHVwKTogUmVtb3ZlIGRlZmluaXRpb24uCgoJKiBwYXJzZS55IChkdXBsaWNhdGVfZGVjbGFyYXRpb25fZXJyb3JfcCwKCWNvbnN0cnVjdG9yX2NpcmN1bGFyaXR5X21zZywgdmVyaWZ5X2NvbnN0cnVjdG9yX2NpcmN1bGFyaXR5LAoJY2hlY2tfYWJzdHJhY3RfbWV0aG9kX2RlZmluaXRpb25zLCBqYXZhX2NoZWNrX3JlZ3VsYXJfbWV0aG9kcywKCWphdmFfY2hlY2tfYWJzdHJhY3RfbWV0aG9kcywgcGF0Y2hfbWV0aG9kX2ludm9jYXRpb24sCgljaGVja19mb3Jfc3RhdGljX21ldGhvZF9yZWZlcmVuY2UsIHBhdGNoX2Fzc2lnbm1lbnQsIHBhdGNoX2Jpbm9wLAoJcGF0Y2hfY2FzdCwgYXJyYXlfY29uc3RydWN0b3JfY2hlY2tfZW50cnksIHBhdGNoX3JldHVybiwKCXBhdGNoX2NvbmRpdGlvbmFsX2V4cHIpOiBVc2UgeHN0cmR1cCwgbm90IHN0cmR1cC4KCgkqIHpleHRyYWN0LmMgKEFMTE9DKTogVXNlIHhtYWxsb2MsIG5vdCBtYWxsb2MuCgoxOTk5LTA5LTEyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlLWxhbmcuaW4gKGp2c3BlYy5vKTogRGVwZW5kIG9uIHN5c3RlbS5oIGFuZCBnY2MuaC4KCgkqIGp2c3BlYy5jOiBJbmNsdWRlIGdjYy5oLiAgRG9uJ3QgaW5jbHVkZSBnYW5zaWRlY2wuaC4KCShkb19zcGVjLCBsYW5nX3NwZWNpZmljX3ByZV9saW5rLCBsYW5nX3NwZWNpZmljX2RyaXZlciwKCWlucHV0X2ZpbGVuYW1lLCBpbnB1dF9maWxlbmFtZV9sZW5ndGgpOiBEb24ndCBkZWNsYXJlLgoJKG1haW5fY2xhc3NfbmFtZSwganZnZW5tYWluX3NwZWMsIGxhbmdfc3BlY2lmaWNfZHJpdmVyKToKCUNvbnN0aWZ5IGEgY2hhciouCgkobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBBbGwgY2FsbHMgdG8gdGhlIGZ1bmN0aW9uIHBvaW50ZXIKCXBhcmFtZXRlciBub3cgZXhwbGljaXRseSBjYWxsIGBmYXRhbCcuCgoxOTk5LTA5LTExICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGZpbmRfYXBwbGljYWJsZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCk6IFNlYXJjaAoJYWJzdHJhY3QgY2xhc3NlcyBhcyBpbnRlcmZhY2VzLgoKMTk5OS0wOS0wOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfY2xhc3MpOiBXZSdyZSBub3cgb3V0c2lkZSBhIHZhbGlkIG1ldGhvZAoJZGVjbGFyYXRpb24uIFRlbGwgdGhlIHJlc3Qgb2YgZ2NjIHNvLgoKMTk5OS0wOS0wOCAgQnJ1Y2UgS29yYiAgYXV0b2dlbkBsaW51eGJveC5jb20KCgkqIE1ha2VmaWxlLmluOiBHaXZlIHRoZSBncGVyZiB1c2VyIGEgaGludCBhYm91dCB3aHkgImdwZXJmIC1GIiBmYWlscy4KCjE5OTktMDktMDcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChhZGRfY2xhc3NfZGVjbCk6IEdlbmVyYXRlIGluY2x1ZGUgZm9yIGdjai9hcnJheS5oLCBub3QKCWphdmEtYXJyYXkuaC4KCShkZWNvZGVfc2lnbmF0dXJlX3BpZWNlKTogRG9uJ3QgZW1pdCAiOjoiIGluIEpBcnJheTw+LgoJKHByaW50X25hbWVsZXQpOiBPbmx5IHByaW50IHRyYWlsaW5nIGA7JyB3aGVuIHByaW50aW5nIGEgY2xhc3MuCgoxOTk5LTA5LTEwICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGphdmEtdHJlZS5oOiBEZWxldGUgZGVjbGFyYXRpb25zIGZvciBhbGwgdHJlZSBub2RlcyBub3cgbW92ZWQgdG8KCWdsb2JhbF90cmVlcy4KCSogZGVjbC5jOiBEZWxldGUgdGhlaXIgZGVmaW5pdGlvbnMuCgoxOTk5LTA5LTA0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZS1sYW5nLmluIChqYzEpOiBEZXBlbmQgb24gZ2djLWNhbGxiYWNrcy5vLgoJKiBNYWtlZmlsZS5pbiAoT0JKUyk6IEFkZCBnZ2MtY2FsbGJhY2tzLm8uCgkoT0JKREVQUyk6IExpa2V3aXNlLgoKMTk5OS0wOS0wMyAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogcGFyc2UueSAoc3RyaXBfb3V0X3N0YXRpY19maWVsZF9hY2Nlc3NfZGVjbCk6IFJldHVybiBvcGVyYW5kIGlmCglpdCBzYXRpc2ZpZXMgSkRFQ0xfUC4KCjE5OTktMDktMDIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChkZWNvZGVfc2lnbmF0dXJlX3BpZWNlKTogRW1pdCAiOjoiIGluIEpBcnJheTw+LgoJSGFuZGxlIG5lc3RlZCBhcnJheXMsIGxpa2UgYFtbSScuCgoxOTk5LTA5LTAyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjbGFzcy5jIChmaW5pc2hfY2xhc3MpOiBSZW1vdmUgdW51c2VkIHBhcmFtZXRlciwgYWxsIGNhbGxlcnMKCWNoYW5nZWQuCgoJKiBleHByLmMgKGJ1aWxkX2phdmFfYXRocm93KTogQ2hhbmdlIHJldHVybiB0eXBlIHRvIHZvaWQuCgkoamF2YV9sYW5nX2V4cGFuZF9leHByKTogTWFrZSBzdXJlIGVhY2ggY2FzZSBpbiBzd2l0Y2ggcmV0dXJucyBhCgl2YWx1ZS4KCgkqIGphdmEtdHJlZS5oIChmaW5pc2hfY2xhc3MpOiBGaXggcHJvdG90eXBlIHRvIHRha2Ugdm9pZCBhcmdzLgoKCSogamNmLWR1bXAuYyAodXNhZ2UpOiBNYXJrIHdpdGggQVRUUklCVVRFX05PUkVUVVJOLgoJKG1haW4pOiBJc3N1ZSByZXR1cm4gZnJvbSBtYWluLCBub3QgZXhpdC4KCgkqIGpjZi1wYXJzZS5jIChwYXJzZV9jbGFzc19maWxlKTogRml4IGNhbGwgdG8gYGZpbmlzaF9jbGFzcycuCgoJKiBqY2YuaCAoamNmX3VuZXhwZWN0ZWRfZW9mKTogTWFyayB3aXRoIEFUVFJJQlVURV9OT1JFVFVSTi4KCgkqIGp2LXNjYW4uYyAobWFpbik6IElzc3VlIHJldHVybiBmcm9tIG1haW4sIG5vdCBleGl0LgoKCSogcGFyc2UueSAoY2hlY2tfYWJzdHJhY3RfbWV0aG9kX2RlZmluaXRpb25zLAoJamF2YV9jaGVja19hYnN0cmFjdF9tZXRob2RfZGVmaW5pdGlvbnMpOiBBZGQgc3RhdGljIHByb3RvdHlwZXMuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IEZpeCBjYWxsIHRvIGBmaW5pc2hfY2xhc3MnLgoKCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogSW5pdGlhbGl6ZSB2YXJpYWJsZXMgYG9sZHBjJwoJYW5kIGBwcmV2cGMnLgoKMTk5OS0wOC0zMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGFuZy5jIChsYW5ndWFnZV9zdHJpbmcpOiBDb25zdGlmeS4KCjE5OTktMDgtMzAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChMSUJTKTogRml4IGRlZmluaXRpb24gc28gd2UgbGluayB3aXRoICQoQ0xJQikuCglSZW1vdmUgaGFja3MgZm9yIHN0dWZmIHdoaWNoIGNvbWVzIGZyb20gbGliaWJlcnR5LgoKCSogTWFrZS1sYW5nLmluOiBMaWtld2lzZS4KCjE5OTktMDgtMzAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuc2U+CgoJKiBNYWtlZmlsZS5pbiAoeHJlZi5vKTogRGVwZW5kIG9uIHhyZWYuYyBleHBsaWNpdGx5LgoKMTk5OS0wOC0yOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogamF2YS10cmVlLmggKGxhbmdfcHJpbnRhYmxlX25hbWUpOiBDb25zdGlmeSBhIGNoYXIqLgoKCSogbGFuZy5jIChsYW5nX3ByaW50YWJsZV9uYW1lKTogTGlrZXdpc2UuCgoxOTk5LTA4LTI3ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBnamF2YWguYywgamNmLXdyaXRlLmMsIHZlcmlmeS5jOiBEbyBub3QgdXNlIEMrKyBzdHlsZQoJY29tbWVudHMgaW4gQyBjb2RlLgoKMTk5OS0wOC0yNiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKHByaW50X2N4eF9jbGFzc25hbWUpOiBQcmludCAiOjoiIGJlZm9yZSBxdWFsaWZpZWQKCW5hbWUuCgoxOTk5LTA4LTI2ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGxvb2t1cF9jbCk6IENoYW5nZWQgbGVhZGluZyBjb21tZW50LiBOb3cgZG9lcyBpdHMgYmVzdAoJdG8gc2V0IHRoZSBjb2x1bW4gbnVtYmVyLgoJKHF1YWxpZnlfYW1iaWd1b3VzX25hbWUpOiBUYWtlIFdGTCB3cmFwcGVycyBpbnRvIGFjY291bnQuCgoxOTk5LTA4LTI1ICBHcmVnZyBUb3duc2VuZCAgPGdtdEBjcy5hcml6b25hLmVkdT4KCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6IERvbid0IGNoZWNrIGluc3RydWN0aW9uCgl2YWxpZGl0eSBiZXlvbmQgZW5kIG9mIG1ldGhvZC4KCjE5OTktMDgtMjUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGp2c3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IENvcnJlY3RseSBoYW5kbGUgLS1oZWxwIGFnYWluLgoKMTk5OS0wOC0yNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZ2phdmFoLmMgKHByaW50X25hbWUsIHByaW50X2Jhc2VfY2xhc3NuYW1lLCB1dGY4X2NtcCwKCWN4eF9rZXl3b3JkX3N1YnN0LCBnZW5lcmF0ZV9hY2Nlc3MsIG5hbWVfaXNfbWV0aG9kX3AsCglnZXRfZmllbGRfbmFtZSwgcHJpbnRfZmllbGRfbmFtZSwgc3VwZXJfY2xhc3NfbmFtZSwgcHJpbnRfaW5jbHVkZSwKCWRlY29kZV9zaWduYXR1cmVfcGllY2UsIHByaW50X2NsYXNzX2RlY2xzLCB1c2FnZSwgaGVscCwKCWphdmFfbm9fYXJndW1lbnQsIHZlcnNpb24sIGFkZF9uYW1lbGV0LCBwcmludF9uYW1lbGV0KTogQWRkIHN0YXRpYwoJcHJvdG90eXBlLgoJKHByaW50X2Jhc2VfY2xhc3NuYW1lLCB1dGY4X2NtcCwgY3h4X2tleXdvcmRfc3Vic3QsCgluYW1lX2lzX21ldGhvZF9wKTogQ29uc3RpZnkgYSBjaGFyKi4KCShnZXRfZmllbGRfbmFtZSk6IExpa2V3aXNlLiAgUHJlZmVyIHhzdHJkdXAgb3ZlciBtYWxsb2Mvc3RyY3B5LgoJUHJvdmlkZSBhIGZpbmFsIGVsc2UgY2xhdXNlIGluIGFuIGlmLWVsc2UtaWYuCgkocHJpbnRfZmllbGRfaW5mbyk6IEFkZCBtaXNzaW5nIGZpbmFsIGFyZyBpbiBmdW5jdGlvbiBjYWxsIHRvCglgcHJpbnRfZmllbGRfbmFtZScuCgkocHJpbnRfbWV0aG9kX2luZm8sIGRlY29tcGlsZV9tZXRob2QsIGRlY29kZV9zaWduYXR1cmVfcGllY2UsCglwcmludF9jX2RlY2wsIHByaW50X2Z1bGxfY3h4X25hbWUsIHByaW50X3N0dWIsCglwcmludF9tYW5nbGVkX2NsYXNzbmFtZSwgc3VwZXJfY2xhc3NfbmFtZSwgcHJpbnRfaW5jbHVkZSwKCWFkZF9uYW1lbGV0LCBhZGRfY2xhc3NfZGVjbCwgcHJpbnRfY2xhc3NfZGVjbHMsIHByb2Nlc3NfZmlsZSwKCWhlbHApOiBDb25zdGlmeSBhIGNoYXIqLgoKCSogamNmLXdyaXRlLmMgKGpjZl9oYW5kbGVyLCBwdXNoX2NvbnN0YW50MSwgcHVzaF9jb25zdGFudDIsCglwdXNoX2ludF9jb25zdCwgZmluZF9jb25zdGFudF93aWRlLCBmaW5kX2NvbnN0YW50X2luZGV4LAoJcHVzaF9sb25nX2NvbnN0LCBmaWVsZF9vcCwgbWF5YmVfd2lkZSwgZW1pdF9kdXAsIGVtaXRfcG9wLAoJZW1pdF9paW5jLCBlbWl0X2xvYWRfb3Jfc3RvcmUsIGVtaXRfbG9hZCwgZW1pdF9zdG9yZSwgZW1pdF91bm9wLAoJZW1pdF9iaW5vcCwgZW1pdF9yZWxvYywgZW1pdF9zd2l0Y2hfcmVsb2MsIGVtaXRfY2FzZV9yZWxvYywKCWVtaXRfaWYsIGVtaXRfZ290bywgZW1pdF9qc3IsIGNhbGxfY2xlYW51cHMsCgltYWtlX2NsYXNzX2ZpbGVfbmFtZSk6IEFkZCBzdGF0aWMgcHJvdG90eXBlcy4KCShnZW5lcmF0ZV9ieXRlY29kZV9yZXR1cm4sIGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogUGFzcyBhCglOVUxMX1BUUiwgbm90IGEgTlVMTF9UUkVFLgoKCSoganYtc2Nhbi5jOiBJbmNsdWRlICJqY2YuaCIuCgkobWFpbik6IERlY2xhcmUgdXNpbmcgREVGVU4gbWFjcm8uCgoJKiBqdnNwZWMuYyAoZmluZF9zcGVjX2ZpbGUsIGxhbmdfc3BlY2lmaWNfcHJlX2xpbmssCglsYW5nX3NwZWNpZmljX2RyaXZlcik6IEFkZCBwcm90b3R5cGVzLgoJKGZpbmRfc3BlY19maWxlKTogQ29uc3RpZnkgYSBjaGFyKi4KCgkqIGtleXdvcmQuZ3BlcmYgKGhhc2gsIGphdmFfa2V5d29yZCk6IEFkZCBwcm90b3R5cGVzLgoKCSogbGFuZy5jIChsYW5nX3ByaW50X2Vycm9yKTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgkobGFuZ19pbml0KTogUHJlZmVyIG1lbWNweSBvdmVyIGJjb3B5IHRvIGF2b2lkIGNhc3RzLgoKCSogbGV4LmMgKHl5bGV4KTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgoJKiBwYXJzZS1zY2FuLnk6IEluY2x1ZGUgImxleC5jIiBlYXJsaWVyLgoKCSogcGFyc2UuaDogUmVtb3ZlIHJlZHVuZGFudCBkZWNsYXJhdGlvbiBmb3IgYHl5bGV4Jy4KCgkqIHBhcnNlLnkgKGphdmFfZGVjbF9lcXVpdiwgYmlub3BfY29tcG91bmRfcCwgc2VhcmNoX2xvb3AsCglsYWJlbGVkX2Jsb2NrX2NvbnRhaW5zX2xvb3BfcCk6IEFkZCBzdGF0aWMgcHJvdG90eXBlcy4KCShub3RfYWNjZXNzaWJsZV9wKTogTWFrZSBzdGF0aWMgdG8gbWF0Y2ggcHJvdG90eXBlLgoKCSogdmVyaWZ5LmMgKHN0YXJ0X3BjX2NtcCk6IERvbid0IG5lZWRsZXNzbHkgY2FzdCBhd2F5IGNvbnN0LgoKMTk5OS0wOC0yMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChjaGVja19tZXRob2RfcmVkZWZpbml0aW9uKTogQ2hhbmdlZCBsZWFkaW5nIGNvbW1lbnQuCgkoY2hlY2tfYWJzdHJhY3RfbWV0aG9kX2RlZmluaXRpb25zKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfY2hlY2tfYWJzdHJhY3RfbWV0aG9kX2RlZmluaXRpb25zKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzKTogQ2FsbCBpdC4KCSh2ZXJpZnlfY29uc3RydWN0b3Jfc3VwZXIpOiBGaXhlZCBpbmRlbnRhdGlvbi4KCShsb29rdXBfbWV0aG9kX2ludm9rZSk6IExpa2V3aXNlLgoKMTk5OS0wOC0xOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChtZXRob2RfaGVhZGVyKTogUmV0dXJuIGEgbnVsbCBwb2ludGVyIGlmIHRoZSBjdXJyZW50CgljbGFzcyBub2RlIGlzIG51bGwuCgkoZmluaXNoX21ldGhvZF9kZWNsYXJhdGlvbik6IFJldHVybiBpZiB0aGUgY3VycmVudCBmdW5jdGlvbiBkZWNsCglpcyBudWxsLgoJKHNvdXJjZV9zdGFydF9qYXZhX21ldGhvZCk6IExpa2V3aXNlLgoJKGphdmFfbWV0aG9kX2FkZF9zdG10KTogTGlrZXdpc2UuCgoxOTk5LTA4LTE4ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGVtaXRfcmVnaXN0ZXJfY2xhc3MpOiBSZW1vdmVkIHVubmVjZXNzYXJ5IGNhbGwgdG8KCXN0YXJ0X3NlcXVlbmNlLgoJKiBwYXJzZS55IChsYWJlbGVkX2Jsb2NrX2NvbnRhaW5zX2xvb3BfcCk6IFJlbW92ZWQgdW51c2VkIGxvY2FsCgl2YXJpYWJsZS4KCjE5OTktMDgtMTcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoamF2YV9yZWZvbGQpOiBBZGRlZCBwcm90b3R5cGUuCgoxOTk5LTA4LTE3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKEJJTk9QX0NPTVBPVU5EX0NBTkRJREFURVMpOiBOZXcgbWFjcm8uCgkoamF2YV9zdGFiaWxpemVfcmVmZXJlbmNlKTogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBgZWxzZScuCgkoamF2YV9jb21wbGV0ZV9saHMpOiBTZXQgZmxhZyB0byByZW1lbWJlciBib29sZWFuLiBDYWxsCglqYXZhX3JlZm9sZC4gQWRkZWQgY29tbWVudHMuCgkoamF2YV9kZWNsX2VxdWl2KTogTmV3IGZ1bmN0aW9uLgoJKGJpbm9wX2NvbXBvdW5kX3ApOiBMaWtld2lzZS4KCShqYXZhX3JlZm9sZCk6IExpa2V3aXNlLgoJKHBhdGNoX3VuYXJ5b3ApOiBTdHJpcGVkIHN0YXRpYyBmaWVsZCBhY2Nlc3MgYXNzaWduZWQgdG8gZGVjbCBhbmQKCW9wLiBDaGFuZ2VkIHByb21vdGlvbiBzY2hlbWUgZm9yICsrLy0tIG9wZXJhdG9ycy4KCShzZWFyY2hfbG9vcCk6IE5ldyBmdW5jdGlvbi4KCShsYWJlbGVkX2Jsb2NrX2NvbnRhaW5zX2xvb3BfcCk6IExpa2V3aXNlLgoJKHBhdGNoX2xvb3Bfc3RhdGVtZW50KTogQ2FsbCBsYWJlbGVkX2Jsb2NrX2NvbnRhaW5zX2xvb3BfcC4gQWRkZWQKCWNvbW1lbnQuCgkocGF0Y2hfYmNfc3RhdGVtZW50KTogQ2FsbCBzZWFyY2hfbG9vcC4gRml4ZWQgY29tbWVudC4KCjE5OTktMDgtMTQgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBjeWdudXMuY29tPgoKCSogZXhwci5jIChqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiBNYXJrIHN0YXRpYyBhcnJheSBkYXRhIGFzCglyZWZlcmVuY2VkLgoKMTk5OS0wOC0xMCAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBqdmdlbm1haW4uYyAobWFpbik6IE5VTC10ZXJtaW5hdGUgbmFtZV9vYnN0YWNrLgoKMTk5OS0wOC0xMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY2hlY2staW5pdC5jIChjaGVja19ib29sMl9pbml0LCBkb25lX2FsdGVybmF0aXZlKTogQWRkIHN0YXRpYwoJcHJvdG90eXBlcy4KCgkqIGNsYXNzLmMgKGFkZF9pbnRlcmZhY2VfZG8sIG1heWJlX2xheW91dF9zdXBlcl9jbGFzcyk6IExpa2V3aXNlLgoJKGFkZF9tZXRob2QsIGJ1aWxkX3V0ZjhfcmVmLCBidWlsZF9jbGFzc19yZWYsCglhcHBlbmRfZ3BwX21hbmdsZWRfdHlwZSwgbGF5b3V0X2NsYXNzX21ldGhvZCk6IENvbnN0aWZ5IGEgY2hhciouCgoJKiBkZWNsLmMgKHB1c2hfcHJvbW90ZWRfdHlwZSwgbWFrZV9iaW5kaW5nX2xldmVsKTogQWRkIHN0YXRpYwoJcHJvdG90eXBlcy4KCShwdXNoX3Byb21vdGVkX3R5cGUsIHB1c2hkZWNsKTogQ29uc3RpZnkgYSBjaGFyKi4KCgkqIGV4Y2VwdC5jIChmaW5kX2hhbmRsZXJfaW5fcmFuZ2UsIGxpbmtfaGFuZGxlciwKCWNoZWNrX3N0YXJ0X2hhbmRsZXJzKTogQWRkIHN0YXRpYyBwcm90b3R5cGVzLgoKCSogZXhwci5jIChwcm9jZXNzX2p2bV9pbnN0cnVjdGlvbik6IENvbnN0aWZ5IGEgY2hhciouCgoJKiBnamF2YWguYyAobWFpbik6IENvbnN0aWZ5IGEgY2hhciouCgoJKiBqYXZhLXRyZWUuaCAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMsIHByb2Nlc3NfanZtX2luc3RydWN0aW9uKToKCUNvbnN0aWZ5IGEgY2hhciouCgoJKiBqY2YtZGVwZW5kLmMgKGZyZWVfZW50cnksIGFkZF9lbnRyeSwgbXVuZ2UsIHByaW50X2VudHMpOiBBZGQKCXN0YXRpYyBwcm90b3R5cGVzLgoJKGFkZF9lbnRyeSwgamNmX2RlcGVuZGVuY3lfc2V0X3RhcmdldCwgamNmX2RlcGVuZGVuY3lfYWRkX3RhcmdldCwKCW11bmdlLCBwcmludF9lbnRzKTogQ29uc3RpZnkgYSBjaGFyKi4KCgkqIGpjZi1kdW1wLmMgKGRpc2Fzc2VtYmxlX21ldGhvZCk6IENvbnN0aWZ5IGEgY2hhciouCgkocHJpbnRfY29uc3RhbnRfcG9vbCwgcHJpbnRfZXhjZXB0aW9uX3RhYmxlKTogQWRkIHN0YXRpYyBwcm90b3R5cGVzLgoJKHByaW50X2NvbnN0YW50LCBwcmludF9leGNlcHRpb25fdGFibGUsIG1haW4sIGRpc2Fzc2VtYmxlX21ldGhvZCk6CglDb25zdGlmeSBhIGNoYXIqLgoKCSogamNmLWlvLmMgKGZpbmRfY2xhc3NmaWxlLCBmaW5kX2NsYXNzKTogTGlrZXdpc2UuCgoJKiBqY2YtcGFyc2UuYyAoSlBPT0xfVVRGX0RBVEEsIGZpbmRfaW5fY3VycmVudF96aXApOiBMaWtld2lzZS4KCShzZXRfc291cmNlX2ZpbGVuYW1lLCBwcmVkZWZpbmVkX2ZpbGVuYW1lX3ApOiBBZGQgc3RhdGljIHByb3RvdHlwZXMuCgkoc2V0X3NvdXJjZV9maWxlbmFtZSwgZ2V0X2NvbnN0YW50LCBnZXRfY2xhc3NfY29uc3RhbnQsCglmaW5kX2luX2N1cnJlbnRfemlwKTogQ29uc3RpZnkgYSBjaGFyKi4KCgkqIGpjZi1wYXRoLmMgKGZyZWVfZW50cnksIGFwcGVuZF9lbnRyeSwgYWRkX2VudHJ5LCBhZGRfcGF0aCk6IEFkZAoJc3RhdGljIHByb3RvdHlwZXMuCgkoYWRkX2VudHJ5LCBhZGRfcGF0aCwgamNmX3BhdGhfY2xhc3NwYXRoX2FyZywKCWpjZl9wYXRoX0NMQVNTUEFUSF9hcmcsIGpjZl9wYXRoX2luY2x1ZGVfYXJnKTogQ29uc3RpZnkgYSBjaGFyKi4KCgkqIGpjZi1yZWFkZXIuYyAoZ2V0X2F0dHJpYnV0ZSwgamNmX3BhcnNlX3ByZWFtYmxlLAoJamNmX3BhcnNlX2NvbnN0YW50X3Bvb2wsIGpjZl9wYXJzZV9jbGFzcywgamNmX3BhcnNlX2ZpZWxkcywKCWpjZl9wYXJzZV9vbmVfbWV0aG9kLCBqY2ZfcGFyc2VfbWV0aG9kcywKCWpjZl9wYXJzZV9maW5hbF9hdHRyaWJ1dGVzKTogQWRkIHN0YXRpYyBwcm90b3R5cGVzLgoJKGdldF9hdHRyaWJ1dGUpOiBDb25zdGlmeSBhIGNoYXIqLgoKCSogamNmLmggKGZpbmRfY2xhc3MsIGZpbmRfY2xhc3NmaWxlLCBqY2ZfZGVwZW5kZW5jeV9zZXRfdGFyZ2V0LAoJamNmX2RlcGVuZGVuY3lfYWRkX3RhcmdldCwgamNmX3BhdGhfY2xhc3NwYXRoX2FyZywKCWpjZl9wYXRoX0NMQVNTUEFUSF9hcmcsIGpjZl9wYXRoX2luY2x1ZGVfYXJnKTogQ29uc3RpZnkgYSBjaGFyKi4KCgkqIGp2LXNjYW4uYyAobWFpbik6IENvbnN0aWZ5IGEgY2hhciouCgkoZ2NjX29ic3RhY2tfaW5pdCk6IEFkZCBwcm90b3R5cGUgYXJndW1lbnRzLgoKCSoganZnZW5tYWluLmMgKGdjY19vYnN0YWNrX2luaXQpOiBMaWtld2lzZS4KCShtYWluKTogQ29uc3RpZnkgYSBjaGFyKi4KCgkqIGxhbmcuYyAocHV0X2RlY2xfc3RyaW5nLCBwdXRfZGVjbF9ub2RlLCBqYXZhX2R1bW15X3ByaW50KTogQWRkCglzdGF0aWMgcHJvdG90eXBlcy4KCShwdXRfZGVjbF9zdHJpbmcsIGxhbmdfcHJpbnRfZXJyb3IpOiBDb25zdGlmeSBhIGNoYXIqLgoJKGxhbmdfaW5pdCk6IFJlbW92ZSByZWR1bmRhbnQgZXh0ZXJuIHByb3RvdHlwZS4KCgkqIG1hbmdsZS5jIChlbWl0X3VuaWNvZGVfbWFuZ2xlZF9uYW1lKTogQ29uc3RpZnkgYSBjaGFyKi4KCgkqIHR5cGVjay5jIChjb252ZXJ0X2llZWVfcmVhbF90b19pbnRlZ2VyLCBwYXJzZV9zaWduYXR1cmVfdHlwZSk6CglBZGQgc3RhdGljIHByb3RvdHlwZXMuCgkoZ2V0X3R5cGVfZnJvbV9zaWduYXR1cmUpOiBDb25zdGlmeSBhIGNoYXIqLgoKCSogdmVyaWZ5LmMgKGNoZWNrX3BlbmRpbmdfYmxvY2ssIHR5cGVfc3RhY2tfZHVwLCBzdGFydF9wY19jbXAgKToKCUFkZCBzdGF0aWMgcHJvdG90eXBlcy4KCShzdGFydF9wY19jbXApOiBQcmVmZXIgUFRSIG92ZXIgR0VORVJJQ19QVFIuCgkodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiBDb25zdGlmeSBhIGNoYXIqLgoKCSogeHJlZi5jICh4cmVmX2ZsYWdfdmFsdWUpOiBMaWtld2lzZS4KCgkqIHhyZWYuaCAoeHJlZl9mbGFnX3ZhbHVlKTogTGlrZXdpc2UuCgoJKiB6ZXh0cmFjdC5jIChtYWtld29yZCwgbWFrZWxvbmcpOiBBZGQgc3RhdGljIHByb3RvdHlwZXMuCgkobWFrZXdvcmQsIG1ha2Vsb25nKTogQ29uc3RpZnkgYSB1Y2gqLgoKMTk5OS0wOC0wOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGFuZy5jIChqYXZhX2R1bW15X3ByaW50KTogQ29uc3RpZnkgYSBjaGFyKi4KCShsYW5nX3ByaW50X2Vycm9yKTogTGlrZXdpc2UuCgkobGFuZ19pbml0KTogUmVtb3ZlIHJlZHVuZGFudCBwcm90b3R5cGUgZm9yIGBwcmludF9lcnJvcl9mdW5jdGlvbicuCgkobGFuZ19pbml0X3NvdXJjZSk6IExpa2V3aXNlLgoJKGxhbmdfaWRlbnRpZnkpOiBDb25zdGlmeSBhIGNoYXIqLgoKMTk5OS0wOC0wOSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogamF2YW9wLmggKFdPUkRfVE9fRkxPQVQpOiBvbmx5IGlubGluZSBpZiBidWlsZGluZyB3aXRoIGdjYy4KCShXT1JEU19UT19MT05HKTogTGlrZXdpc2UuCgkoV09SRFNfVE9fRE9VQkxFKTogTGlrZXdpc2UuCgoxOTk5LTA4LTA0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAobGFuZy5vKTogRGVwZW5kIG9uICQoUlRMX0gpICQoRVhQUl9IKS4KCgkqIGV4cHIuYyAoamF2YV9zdGFja19wb3AsIGphdmFfYXJyYXlfZGF0YV9vZmZzZXQsCglidWlsZF9qYXZhX3Rocm93X291dF9vZl9ib3VuZHNfZXhjZXB0aW9uLCBjYXNlX2lkZW50aXR5LAoJYnVpbGRfamF2YV9jaGVja19pbmRleGVkX3R5cGUpOiBBZGQgc3RhdGljIHByb3RvdHlwZXMuCgkobGluZW51bWJlcl90YWJsZSwgZXhwYW5kX2ludm9rZSwgZXhwYW5kX2phdmFfZmllbGRfb3AsCglidWlsZF9wcmltdHlwZV90eXBlX3JlZiwgZXhwYW5kX2J5dGVfY29kZSk6IENvbnN0aWZ5IGEgY2hhciouCgoJKiBqYXZhLXRyZWUuaCAoYnVpbGRfcHJpbXR5cGVfdHlwZV9yZWYsIGxpbmVudW1iZXJfdGFibGUpOgoJQ29uc3RpZnkgYSBjaGFyKi4KCShqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiBBZGQgcHJvdG90eXBlLgoKCSogbGFuZy5jOiBJbmNsdWRlIHJ0bC5oIGFuZCBleHByLmguICBSZW1vdmUgZXh0ZXJuIHByb3RvdHlwZSBmb3IKCWBqYXZhX2xhbmdfZXhwYW5kX2V4cHInLgoKCSogbGV4LmMgKGphdmFfbGV4X2Vycm9yKTogQ29uc3RpZnkgYSBjaGFyKi4KCShqYXZhX2dldF91bmljb2RlLCBqYXZhX3JlYWRfY2hhciwgamF2YV9hbGxvY2F0ZV9uZXdfbGluZSwKCWphdmFfdW5nZXRfdW5pY29kZSwgamF2YV9zbmVha191bmljb2RlKTogUHJvdG90eXBlLgoKCSogcGFyc2Utc2Nhbi55IChjdXJyZW50X2NsYXNzLCBwYWNrYWdlX25hbWUsIG1ldGhvZF9kZWNsYXJhdG9yLAoJcmVwb3J0X2NsYXNzX2RlY2xhcmF0aW9uLCB5eWVycm9yKTogQ29uc3RpZnkgYSBjaGFyKi4KCgkqIHBhcnNlLmggKGphdmFfcmVwb3J0X2Vycm9ycyk6IFByb3RvdHlwZS4KCSh5eWVycm9yKTogQ29uc3RpZnkgYSBjaGFyKi4KCgkqIHBhcnNlLnkgKGNsYXNzaXRmX3JlZGVmaW5pdGlvbl9lcnJvciwgY2hlY2tfbW9kaWZpZXJzLAoJcGFyc2VfamRrMV8xX2Vycm9yLCBsb29rdXBfcGFja2FnZV90eXBlLAoJbG9va3VwX3BhY2thZ2VfdHlwZV9hbmRfc2V0X25leHQsIGdldF9wcmludGFibGVfbWV0aG9kX25hbWUsCglwdXJpZnlfdHlwZV9uYW1lKTogQ29uc3RpZnkgYSBjaGFyKi4KCShidWlsZF9zdXBlcl9pbnZvY2F0aW9uLCBtYXliZV9nZW5lcmF0ZV9maW5pdCwKCXZlcmlmeV9jb25zdHJ1Y3Rvcl9zdXBlciwgcGFyc2VyX2FkZF9pbnRlcmZhY2UsCglhZGRfc3VwZXJpbnRlcmZhY2VzLCBqZGVwX3Jlc29sdmVfY2xhc3MsIG5vdGVfcG9zc2libGVfY2xhc3NuYW1lLAoJamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcywgamF2YV9leHBhbmRfZmluYWxzLAoJY3V0X2lkZW50aWZpZXJfaW5fcXVhbGlmaWVkLCBqYXZhX3N0YWJpbGl6ZV9yZWZlcmVuY2UsCglkb191bmFyeV9udW1lcmljX3Byb21vdGlvbiwgb3BlcmF0b3Jfc3RyaW5nLCBkb19tZXJnZV9zdHJpbmdfY3N0ZSwKCW1lcmdlX3N0cmluZ19jc3RlKTogUHJvdG90eXBlLgoJKHNpbmdsZV90eXBlX2ltcG9ydF9kZWNsYXJhdGlvbiwgeXllcnJvciwKCXZhcmlhYmxlX3JlZGVmaW5pdGlvbl9lcnJvciwgYnVpbGRfYXJyYXlfZnJvbV9uYW1lLAoJYnVpbGRfdW5yZXNvbHZlZF9hcnJheV90eXBlLCBjaGVja19jbGFzc19pbnRlcmZhY2VfY3JlYXRpb24sCglyZXNvbHZlX2NsYXNzLCBjb21wbGV0ZV9jbGFzc19yZXBvcnRfZXJyb3JzLAoJbm90ZV9wb3NzaWJsZV9jbGFzc25hbWUsIHJlYWRfaW1wb3J0X2RpciwKCWZpbmRfaW5faW1wb3J0c19vbl9kZW1hbmQsIHJlc29sdmVfcGFja2FnZSwgZml4X2NvbnN0cnVjdG9ycywKCWNoZWNrX2RlcHJlY2F0aW9uLCBsb29rdXBfbWV0aG9kX2ludm9rZSwKCW1heWJlX2J1aWxkX3ByaW10dHlwZV90eXBlX3JlZiwgYXJyYXlfY29uc3RydWN0b3JfY2hlY2tfZW50cnkpOgoJQ29uc3RpZnkgYSBjaGFyKi4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzLCBqYXZhX2V4cGFuZF9maW5hbHMpOiBNYWtlIHN0YXRpYy4KCShjb252ZXJ0X25hcnJvdyk6IFJlbW92ZSBzdGF0aWMgcHJvdG90eXBlLgoKMTk5OS0wOC0wMyAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogTWFrZWZpbGUuaW4gKGRlY2wubyk6IERlcGVuZHMgb24gJChzcmNkaXIpLy4uL2RlZmF1bHRzLmguCgoxOTk5LTA4LTAyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZGVjbC5jOiBJbmNsdWRlIGRlZmF1bHRzLmggaW5zdGVhZCBvZiBleHByLmguCgkqIHBhcnNlLnk6IExpa2V3aXNlLgoKMTk5OS0wOC0wMiAgSmFrdWIgSmVsaW5layAgPGpqQHVsdHJhLmxpbnV4LmN6PgoKCSogamF2YS9kZWNsLmMgKHN0YXJ0X2phdmFfbWV0aG9kKTogQ2hhbmdlIGFsbCB1c2VzIG9mCglQUk9NT1RFX1BST1RPVFlQRVMsIHNvIHRoYXQgaXQgdGVzdHMgaXQgYXMgYSBDIGV4cHJlc3Npb24uCglFbnN1cmUgZXhwci5oIGlzIGluY2x1ZGVkLgoJKiBqYXZhL2V4cHIuYyAocG9wX2FyZ3VtZW50cyk6IERpdHRvLgoJKiBqYXZhL3BhcnNlLnkgKGV4cGFuZF9zdGFydF9qYXZhX21ldGhvZCk6IERpdHRvLgoKMTk5OS0wOC0wMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKEFMTF9DRkxBR1MpOiBBZGQgJy1XIC1XYWxsJy4KCjE5OTktMDctMzEgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogZGVjbC5jOiBJbmNsdWRlICJmdW5jdGlvbi5oIi4KCSogZXhjZXB0LmM6IExpa2V3aXNlLgoJKiBwYXJzZS55OiBMaWtld2lzZS4KCSogTWFrZWZpbGUuaW46IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgoxOTk5LTA3LTMwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBleHByLmMgKGJ1aWxkX2phdmFfc29mdF9kaXZtb2QpOiBQcm92aWRlIGEgZGVmYXVsdCBjYXNlIGluIHN3aXRjaC4KCShqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiBNYXJrIHBhcmFtZXRlcnMgYHRhcmdldCcsIGB0bW9kZScgYW5kCglgbW9kaWZpZXInIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCgkqIGdqYXZhaC5jIChwcm9jZXNzX2ZpbGUpOiBBZGQgYnJhY2VzIGFyb3VuZCBhbWJpZ3VvdXMgYGVsc2UnLgoKCSogamNmLWR1bXAuYyAocHJpbnRfYWNjZXNzX2ZsYWdzLCBsb2NhbHZhcl9mcmVlKTogQ2hhbmdlIHJldHVybgoJdHlwZSB0byB2b2lkLgoKCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kKTogSW5pdGlhbGl6ZSB2YXJpYWJsZQoJYGV4Y2VwdGlvbl9jb3B5Jy4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBMaWtld2lzZSBmb3IgYGZpZWxkX2RlY2wnLgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogTGlrZXdpc2UgZm9yIGBjbGFzc190b19zZWFyY2gnLgoJKHF1YWxpZnlfYW1iaWd1b3VzX25hbWUpOiBMaWtld2lzZSBmb3IgYG5hbWUnIGFuZCBgcHRyX3R5cGUnLgoJKHBhdGNoX2Fzc2lnbm1lbnQpOiBMaWtld2lzZSBmb3IgYGxoc190eXBlJy4KCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKCWBjYWxsZXInLgoKMTk5OS0wNy0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAodmFfbGlzdF90eXBlX25vZGUpOiBOZXcuCgoxOTk5LTA3LTI1ICBBbnRob255IEdyZWVuICA8Z3JlZW5AY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChwcmludF9zdHViKTogTmV3IGZ1bmN0aW9uLgoJKE1FVEhPRF9JU19OQVRJVkUpOiBOZXcgbWFjcm8uCgkocHJpbnRfbWFuZ2xlZF9jbGFzc25hbWUpOiBNYWtlIHN0YXRpYy4KCShIQU5ETEVfRU5EX0ZJRUxEKTogRG9uJ3QgZW1pdCBmaWVsZHMgZHVyaW5nIHN0dWIgZ2VuZXJhdGlvbi4KCShwcm9jZXNzX2ZpbGUpOiBQZXJmb3JtIHN0dWIgZ2VuZXJhdGlvbi4KCShIQU5ETEVfTUVUSE9EKTogRG9uJ3QgZW1pdCBjbGFzcyBkZWNscyBkdXJpbmcgc3R1YgoJZ2VuZXJhdGlvbi4KCShIQU5ETEVfRU5EX01FVEhPRCk6IFRha2UgaW50byBhY2NvdW50IHN0dWIgZ2VuZXJhdGlvbi4KCShwcmludF9tZXRob2RfaW5mbyk6IEhhbmRsZSBzdHViIGdlbmVyYXRpb24uCgkocHJpbnRfc3R1Yik6IE5ldyBmdW5jdGlvbi4KCShwcmludF9jeHhfY2xhc3NuYW1lKTogTWFrZSBzaWduYXR1cmUgY29uc2lzdGFudCB3aXRoIG90aGVycy4KCShoZWxwKTogRGVzY3JpYmUgLXN0dWJzIG9wdGlvbi4KCShtYWluKTogQ3JlYXRlIHN0dWIgZmlsZS4KCSh2ZXJzaW9uKTogVXNlIHZlcnNpb24uYy4KCShwcmludF9mdWxsX2N4eF9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKHByaW50X2NfZGVjbCk6IFVzZSBwcmludF9mdWxsX2N4eF9uYW1lLgoKMTk5OS0wNy0yMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpOiBIYW5kbGUgTUFYX0VYUFIuCgoxOTk5LTA3LTE1ICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIGxhbmcuYyAoZmxhZ191c2VfZGl2aWRlX3N1YnJvdXRpbmUpOiBOZXcgdmFyaWFibGUuCgkqIHR5cGVjay5jOiAoY29udmVydF9pZWVlX3JlYWxfdG9faW50ZWdlcik6IEJvdW5kcyBjaGVjawoJZnAtdG8taW50ZWdlciBjb252ZXJzaW9uLgoJKGNvbnZlcnQpOiBDYWxsIGNvbnZlcnRfaWVlZV9yZWFsX3RvX2ludGVnZXIgd2hlbiBmbGFnX2Zhc3RfbWF0aAoJaXMgbm90IHNldC4KCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9zb2Z0X2Rpdm1vZCk6IE5ldyBmdW5jdGlvbi4KCShidWlsZF9qYXZhX2Jpbm9wKTogQ2FsbCBidWlsZF9qYXZhX3NvZnRfZGl2bW9kIGlmCglmbGFnX3VzZV9kaXZpZGVfc3Vicm91dGluZSBpcyBzZXQuCgkqIGRlY2wuYzogc29mdF9pZGl2X25vZGUsIHNvZnRfaXJlbV9ub2RlLCBzb2Z0X2xkaXZfbm9kZSwgdHJlZQoJc29mdF9scmVtX25vZGU6IG5ldyBidWlsdGluIGZ1bmN0aW9ucy4KCShpbml0X2RlY2xfcHJvY2Vzc2luZykgSW5pdGlhbGl6ZSB0aGUgbmV3IGJ1aWx0aW5zLgoJKiBqYXZhLXRyZWUuaCBzb2Z0X2lkaXZfbm9kZSwgc29mdF9pcmVtX25vZGUsIHNvZnRfbGRpdl9ub2RlLCB0cmVlCglzb2Z0X2xyZW1fbm9kZTogbmV3IGJ1aWx0aW4gZnVuY3Rpb25zLgoJKGJ1aWxkX2phdmFfc29mdF9kaXZtb2QpOiBOZXcgZnVuY3Rpb24uCgkqIHBhcnNlLnk6IENhbGwgYnVpbGRfamF2YV9zb2Z0X2Rpdm1vZCBpZgoJZmxhZ191c2VfZGl2aWRlX3N1YnJvdXRpbmUgaXMgc2V0LgoJKiBwYXJzZS5jOiBSZWJ1aWx0LgoKCSoganZzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogQWx3YXlzIGFsbG93IGFuIGV4dHJhIGFyZyAoZm9yCglhIC0tc3BlY3M9IGFyZykgZXZlbiBpZiBub3QgbGlua2luZy4KCSogbGFuZy1vcHRpb25zLmggKERFRklORV9MQU5HX05BTUUgKCJKYXZhIikpOiBBZGQKCS1mdXNlLWRpdmlkZS1zdWJyb3V0aW5lCgoxOTk5LTA3LTIwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHJlc29sdmVfYW5kX2xheW91dCk6IENoZWNrIG1ldGhvZHMgb25seSBvbmNlLgoJKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IFZlcmlmeSB0aHJvd24gZXhjZXB0aW9ucwoJY29tcGF0aWJpbGl0eS4KCShjaGVja190aHJvd25fZXhjZXB0aW9ucyk6IFJlamVjdCBleGNlcHRpb25zIHRocm93biBpbgoJaW5pdGlhbGl6ZXIuIEVycm9yIG1lc3NhZ2UgdHVuZWQuCgoxOTk5LTA3LTE0ICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpOiBEbyBub3QgcmV0dXJuIHRoZSBsYXN0IHN0YXRlbWVudCBpbiBhCglibG9jayBhcyB0aGUgYmxvY2sncyB2YWx1ZS4KCjE5OTktMDctMDMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogZXhwci5jIChmb3JjZV9ldmFsdWF0aW9uX29yZGVyKTogU2F2ZSB0aGUgQ09NUE9VTkRfRVhQUidlZAoJQ0FMTF9FWFBSLCB0byBhdm9pZCBvcmRlciBvZiBldmFsdWF0aW9uIGNoYW5nZXMuCgoxOTk5LTA3LTAyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHF1YWxpZnlfYW1iaWd1b3VzX25hbWUpOiBEbyBub3QgdXNlCglJREVOVElGSUVSX0xPQ0FMX1ZBTFVFIHdoZW4gbmFtZSBpcyBhIFNUUklOR19DU1QuCgoxOTk5LTA3LTAxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6IEhhbmRsZSBNQVhfRVhQUi4KCSogZXhwci5jIChmb3JjZV9ldmFsdWF0aW9uX29yZGVyKTogRm9yY2UgbWV0aG9kIGNhbGwgYXJndW1lbnRzIHRvCgliZSBldmFsdWF0ZWQgaW4gbGVmdC10by1yaWdodCBvcmRlci4KCSogcGFyc2UueSAocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IExvb3AgYWdhaW4gdG8gcXVhbGlmeQoJTkVXX0FSUkFZX0VYUFIgcHJvcGVybHkuCgoxOTk5LTA2LTMwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX2ludm9rZSk6IFJlc29sdmUgdW5yZXNvbHZlZCBpbnZva2VkIG1ldGhvZAoJcmV0dXJuZWQgdHlwZS4KCShxdWFsaWZ5X2FtYmlndW91c19uYW1lKTogU1RSSU5HX0NTVCB0byBxdWFsaWZ5IGV4cHJlc3Npb24gZm9yCgl0eXBlIG5hbWUgcmVzb2x1dGlvbi4KCjE5OTktMDYtMjQgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoZmluaXNoX2NsYXNzKTogV2hlbmV2ZXIgYSBkZWZlcnJlZCBtZXRob2QgaXMKCW91dHB1dCwgcmVzY2FuIHRoZSBsaXN0IG9mIG1ldGhvZHMgdG8gc2VlIGlmIGEgbmV3IGNhbmRpZGF0ZSBmb3IKCW91dHB1dCBjYW4gYmUgZm91bmQuCgoxOTk5LTA2LTI4ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBqdnNwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBSZWNvZ25pemUgLS1oZWxwLgoKMTk5OS0wNi0yNSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChyZXNvbHZlX3BhY2thZ2UpOiBGaXhlZCBib2d1cyByZXR1cm4gc3RhdGVtZW50LgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogUmVzb2x2ZSBtZXRob2QgaW52b2NhdGlvbiBiZWdpbm5pbmcgd2l0aAoJYSBwYWNrYWdlIG5hbWUgcXVhbGlmaWVyLgoKMTk5OS0wNi0yNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZS1sYW5nLmluIChqYXZhLnN0YWdlMSk6IERlcGVuZCBvbiBzdGFnZTEtc3RhcnQuCgkoamF2YS5zdGFnZTIpOiBMaWtld2lzZSBmb3Igc3RhZ2UyLXN0YXJ0LgoJKGphdmEuc3RhZ2UzKTogTGlrZXdpc2UgZm9yIHN0YWdlMy1zdGFydC4KCShqYXZhLnN0YWdlNCk6IExpa2V3aXNlIGZvciBzdGFnZTQtc3RhcnQuCgoxOTk5LTA2LTI0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfbGhzKTogV2hlbiBkb2luZyBjcm9zcyByZWZlcmVuY2luZywgZG9uJ3QKCXRyeSB0byBrZWVwIGZpbGUgbG9jYXRpb24gb24gYSBXRkwgZXhwYW5kZWQgYXMgYSBDQUxMX0VYUFIuCgoxOTk5LTA2LTIzICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGZpbmlzaF9tZXRob2RfZGVjbGFyYXRpb24pOiBJbnNlcnQgYSBSRVRVUk5fRVhQUiB3aGVuCgljb21waWxpbmcgdG8gY2xhc3MgZmlsZSBhIHZvaWQgbWV0aG9kIHdpdGggYW4gZW1wdHkgbWV0aG9kIGJvZHkuCglBcyBhIHNpZGUgZWZmZWN0LCB0aGUgYnl0ZWNvZGUgYmFja2VuZCB3aWxsIGdlbmVyYXRlIHRoZQoJYXBwcm9wcmlhdGUgYHJldHVybicgaW5zdHJ1Y3Rpb24uCgoxOTk5LTA2LTIyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGxvb2t1cF9wYWNrYWdlX3R5cGVfYW5kX3NldF9uZXh0KTogTmV3IGZ1bmN0aW9uIHByb3RvdHlwZS4KCShyZXNvbHZlX3BhY2thZ2UpOiBTZWFyY2ggY3VycmVudCBhbmQgaW1wb3J0ZWQgcGFja2FnZXMuCgkobG9va3VwX3BhY2thZ2VfdHlwZV9hbmRfc2V0X25leHQpOiBOZXcgZnVuY3Rpb24uCgoxOTk5LTA2LTIyICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6IENoZWNrIGZvciBwZW5kaW5nIGJsb2NrcwoJYmVmb3JlIGludmFsaWQgUEMgdGVzdCBhbmQgb3Bjb2RlIHN3aXRjaCwgbm90IGFmdGVyLgoKMTk5OS0wNi0yMSAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoZmluZF9oYW5kbGVyX2luX3JhbmdlKTogVGhlIHVwcGVyIGxpbWl0IGZvciBleGNlcHRpb24KCXJhbmdlcyBpcyBleGNsdXNpdmUsIG5vdCBpbmNsdXNpdmU6IChzdGFydCA8PSBwYyA8IGVuZCkuCgkobGlua19oYW5kbGVyKTogZmluZCBjaGlsZCBwb2ludGVyIHdoaWNoIHBvaW50cyB0byBvdXRlciBieQoJc2VhcmNoaW5nIHNpYmxpbmcgbGlzdDogcHJldmlvdXMgY29kZSBpbmNvcnJlY3RseSBhc3N1bWVkIHRoYXQKCW91dGVyLT5vdXRlci0+Zmlyc3RfY2hpbGQgbXVzdCBwb2ludCB0byBvdXRlci4KCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogRklYTUUgYWRkZWQgdG8gY29kZSBmb3IKCWBhdGhyb3cnLgoJKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogRG8gbm90IGFzc3VtZSB0aGF0IHRoZSBsYXN0IGJsb2NrCglwcm9jZXNzZWQgaW4gYSBzdWJyb3V0aW5lIGlzIGEgYmxvY2sgd2hpY2ggZW5kcyB3aXRoIGEgYHJldCcKCWluc3RydWN0aW9uLiAgV2l0aCBzb21lIGNvbnRyb2wgZmxvd3MgaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgbGFzdAoJYmxvY2sgZW5kcyB3aXRoIGFuIGBhdGhyb3cnLgoKMTk5OS0wNi0xNCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChxdWFsaWZ5X2FtYmlndW91c19uYW1lKTogUmVvcmdhbml6ZWQgdGhlIHBvc3QKCWV2YWx1YXRpb24gb2Ygbm9uIFdGTCBsZWFkaW5nIGV4cHJlc3Npb24gbm9kZXMuCgoxOTk5LTA2LTExICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHF1YWxpZnlfYW1iaWd1b3VzX25hbWUpOiBIYW5kbGUgQVJSQVlfUkVGIGFmdGVyCglDT05WRVJUX0VYUFIuCgoxOTk5LTA2LTEwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHF1YWxpZnlfYW1iaWd1b3VzX25hbWUpOiBIYW5kbGUgcXVhbGlmaWVkIGV4cHJlc3Npb24KCWJlZ2lubmluZyB3aXRoIGEgU1RSSU5HX0NTVC4KCjE5OTktMDYtMTAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocmVnaXN0ZXJfZmllbGRzKTogU2V0IERFQ0xfSU5JVElBTCBvbiBib3RoCglwcmUtaW5pdGlhbGl6ZWQgc3RhdGljIGFuZCBwdWJsaWMgZmllbGRzLgoJKHJlc29sdmVfZmllbGRfYWNjZXNzKTogU3RhdGljIGZpZWxkIGFjY2VzcyBleHByZXNzaW9ucyB0byBhbHdheXMKCXVzZSBwb2ludGVyIHR5cGVzLgoJKHF1YWxpZnlfYW1iaWd1b3VzX25hbWUpOiBXb3JrIG91dCBidXJpZWQgQ0FMTF9FWFBSIGZvciBwcm9wZXIKCXF1YWxpZmljYXRpb24uIENPTlZFUlRfRVhQUiB0byBiZSByZXNvbHZlZCBhcyBhbiBleHByZXNzaW9uIG5hbWUuCgkoamF2YV9jb21wbGV0ZV9saHMpOiBJZGVudGlmeSBhbmQgYWNjZXNzIHF1YWxpZmllZCBmaW5hbAoJaW5pdGlhbGl6ZWQgZmllbGQgaW4gc3dpdGNoIHN0YXRlbWVudCBjYXNlIGV4cHJlc3Npb24uCgkoZm9sZF9jb25zdGFudF9mb3JfaW5pdCk6IFByZS1pbml0aWFsaXplZCBmaWVsZCBkZWNsIGNvbnN0YW50IHRvCgliZSBmb2xkZWQuCgoxOTk5LTA2LTA3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKG5vdGVfcG9zc2libGVfY2xhc3NuYW1lKTogTWFyayByZXR1cm5lZCBub2RlIHdpdGgKCVFVQUxJRklFRF9QIG9ubHkgaWYgdGhlIG9yaWdpbmFsIGNsYXNzIG5hbWUgY29udGFpbmVkIGEgJy8nLgoKMTk5OS0wNi0wNSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGdjamgpOiBNb3JlIHBhcmFsbGVsIGJ1aWxkIGZpeGVzLgoKMTk5OS0wNi0wMyAgTWlrZSBTdHVtcCAgPG1yc0B3cnMuY29tPgoKCSogTWFrZS1sYW5nLmluIChKQ0ZfRFVNUF9TT1VSQ0VTLCBqdmdlbm1haW4pOiBGaXggcGFyYWxsZWwgYnVpbGRzLgoKMTk5OS0wNi0wMiAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAobGlua19oYW5kbGVyKTogQ2hhaW4gZXhjZXB0aW9uIGhhbmRsZXJzIGluIG9yZGVyLgoKMTk5OS0wNi0wMiAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9ieXRlX2NvZGUpOiBGaWxsIHVucmVhY2hhYmxlIGJ5dGVjb2RlIHJlZ2lvbnMKCXdpdGggbm9wcyBhbmQgcHJvY2VzcyBhcyB1c3VhbCBpbiBvcmRlciB0byBhbHdheXMgc2V0IGNvcnJlY3QgRUgKCXJhbmdlcy4gIEVtaXQgZGV0YWlsZWQgd2FybmluZ3MgYWJvdXQgdW5yZWFjaGFibGUgYnl0ZWNvZGVzLgoKMTk5OS0wNi0wMiAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChidWlsZF91dGY4X3JlZik6IE1hcmsgY2luaXQgYW5kIHV0ZjggdHJlZSBub2RlcyBhcwoJY29uc3RhbnQuCgoxOTk5LTA1LTI4ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGxvb2t1cF9maWVsZF93cmFwcGVyKTogVW5pZmllZCByZXR1cm5lZCB2YWx1ZSB0byBOVUxMCgkgIG9yIHRoZSBzZWFyY2hlZCBmaWVsZCBkZWNsLgoKMTk5OS0wNS0yOCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChmb2xkX2NvbnN0YW50X2Zvcl9pbml0KTogQ29udmVydCBudW1lcmljYWwgY29uc3RhbnQKCXZhbHVlcyB0byB0aGUgdHlwZSBvZiB0aGUgYXNzaWduZWQgZmllbGQuCgoxOTk5LTA1LTI3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAobG9va3VwX2ZpZWxkKTogUmVsYXhlZCB0aGUgdGVzdCBvbiBjbGFzcyBsb2FkaW5nIGVycm9yCglkZXRlY3Rpb24uCgkqIHBhcnNlLnkgKGZvbGRfY29uc3RhbnRfZm9yX2luaXQpOiBFbmFiZWxlZCBvbGQgY29kZS4KCjE5OTktMDUtMjYgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAodmFsaWRfcmVmX2Fzc2lnbmNvbnZfY2FzdF9wKTogTGV0IGBfSnZfQ2hlY2tDYXN0JwoJZGVjaWRlIHRoZSB2YWxpZGl0eSBvZiB0aGUgY2FzdCBvZiBhIGphdmEubGFuZy5DbG9uZWFibGUgcmVmZXJlbmNlCgl0byBhbiBhcnJheS4KCShwYXRjaF9jb25kaXRpb25hbF9leHByKTogRml4ZWQgZmlyc3QgYXJndW1lbnQgcGFzc2VkIHRvCgliaW5hcnlfbnVtZXJpY19wcm9tb3Rpb24uCgoxOTk5LTA1LTI2ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHF1YWxpZnlfYW1iaWd1b3VzX25hbWUpOiBUYWtlIGludG8gYWNjb3VudCB0aGF0IGEKCUNPTlZFUlRfRVhQUiBtaWdodCBzcGVjaWZ5IGEgdHlwZSBhcyBhIFdGTC4KCjE5OTktMDUtMjUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfYXNzaWdubWVudCk6IFNhdmUgdGhlIHJocyBiZWZvcmUgdXNpbmcgaXQgYXMgYW4KCWFyZ3VtZW50IHRvIF9Kdl9DaGVja0FycmF5U3RvcmUuCgoxOTk5LTA1LTI1ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGxleC5jIChqYXZhX3BhcnNlX2RvY19zZWN0aW9uKTogRml4ZWQgYHRhZycgYnVmZmVyIHNpemUuCgoxOTk5LTA1LTI0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGxleC5jIChqYXZhX2xleCk6IEFjY2VwdHMgYCsnIG9yIGAtJyBhZnRlciB0aGUgYmVnaW5uaW5nIG9mIGEKCWZsb2F0aW5nIHBvaW50IGxpdGVyYWwgb25seSB3aGVuIHRoZSBleHBvbmVudCBpbmRpY2F0b3IgaGFzIGJlZW4KCXBhcnNlZC4KCjE5OTktMDUtMjIgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoZm9ybWFsX3BhcmFtZXRlcjopOiBDb25zdHJ1Y3QgYXJndW1lbnQgdHJlZSBsaXN0CgllbGVtZW50IGV2ZW4gaWYgYSB5ZXQgdW5zdXBwb3J0ZWQgZmluYWwgcGFyYW1ldGVyIHdhcyBlbmNvdW50ZXJlZC4KCjE5OTktMDUtMTggIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoZmluaXNoX21ldGhvZF9kZWNsYXJhdGlvbik6IElzc3VlIGVycm9ycyBmb3IgbmF0aXZlIG9yCglhYnN0cmFjdCBtZXRob2RzIGRlY2xhcmVkIHdpdGggYSBtZXRob2QgYm9keSwgYXMgd2VsbCBhcyBmb3Igbm9uCgluYXRpdmUgb3Igbm9uIGFic3RyYWN0IG1ldGhvZHMgd2l0aCBubyBtZXRob2QgYm9keS4KCjE5OTktMDUtMTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3V0ZjhfcmVmKTogSW5pdGlhbGl6ZSB2YXJpYWJsZSBgZmllbGQnLgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEluaXRpYWxpemUgdmFyaWFibGUgYGZpZWxkJy4KCgkqIGV4cHIuYyAoYnVpbGRfa25vd25fbWV0aG9kX3JlZik6IE1hcmsgcGFyYW1ldGVycyBgbWV0aG9kX3R5cGUnLAoJYG1ldGhvZF9zaWduYXR1cmUnIGFuZCBgYXJnX2xpc3QnIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCShwcm9jZXNzX2p2bV9pbnN0cnVjdGlvbik6IExpa2V3aXNlIGZvciBwYXJhbWV0ZXIgYGxlbmd0aCcuCgoJKiBqdnNwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBNYXJrIHZhcmlhYmxlcyBgc2F3X21hdGgnLAoJYHNhd19saWJjJywgYHNhd19nYycsIGBzYXdfdGhyZWFkbGliJyBhbmQgYHNhd19saWJnY2onIHdpdGgKCUFUVFJJQlVURV9VTlVTRUQuCgoJKiBwYXJzZS55IChtYXliZV9nZW5lcmF0ZV9jbGluaXQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCglgaGFzX25vbl9wcmltaXRpdmVfZmllbGRzJy4KCShmaW5kX2luX2ltcG9ydHNfb25fZGVtYW5kKTogSW5pdGlhbGl6ZSB2YXJpYWJsZXMgYG5vZGVfdG9fdXNlJwoJYW5kIGBjbCcuCgkocGF0Y2hfYmlub3ApOiBMaWtld2lzZSBmb3IgdmFyaWFibGUgYHByb21fdHlwZScuCgkocGF0Y2hfdW5hcnlvcCk6IExpa2V3aXNlIGZvciB2YXJpYWJsZSBgcHJvbV90eXBlJy4KCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6IExpa2V3aXNlIGZvciB2YXJpYWJsZSBgbGFzdCcuCgoJKiB4cmVmLmMgKHhyZWZfdGFibGUpOiBBZGQgbWlzc2luZyBpbml0aWFsaXplci4KCjE5OTktMDUtMTQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGphdmEtZXhjZXB0LmggKHN0cnVjdCBlaF9yYW5nZSk6IFJlbW92ZWQgdW51c2VkIGBuZXh0JyBtZW1iZXIuCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6IENhbGwgY2hlY2tfbmVzdGVkX3JhbmdlcwoJYWZ0ZXIgYWRkaW5nIGFsbCBleGNlcHRpb24gaGFuZGxlcnMuICBTb3J0IGV4Y2VwdGlvbiByYW5nZXMgaW4KCW9yZGVyIG9mIHN0YXJ0IFBDLgoJKHN0cnVjdCBwY19pbmRleCk6IE5ldyBzdHJ1Y3R1cmUuCgkoc3RhcnRfcGNfY21wKTogTmV3IGZ1bmN0aW9uLgoJKiBleGNlcHQuYyAoYWRkX2hhbmRsZXIpOiBSZXR1cm4gYHZvaWQnLiAgRG9uJ3QgY2FsbCBsaW5rX2hhbmRsZXI7CglpbnN0ZWFkIGNvbnN0cnVjdCBhbiBvcmRpbmFyeSBsaW5rZWQgbGlzdCBhbmQgZG8gcmFuZ2UKCWNvYWxlc2NpbmcuCgkoY2hlY2tfbmVzdGVkX3Jhbmdlcyk6IE5ldyBmdW5jdGlvbi4KCShsaW5rX2hhbmRsZXIpOiBDaGFuZ2VkIGludGVyZmFjZSB0byBhbGxvdyBtZXJnaW5nIG9mIGVoX3Jhbmdlcy4KCVNwbGl0IG92ZXJsYXBwaW5nIHJhbmdlcy4gIFJldHVybiBgdm9pZCcuCgoxOTk5LTA1LTE3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGNvbnN0cnVjdG9yX2Jsb2NrX2VuZDopOiBOZXcgcnVsZSwgdGFnZ2VkIDxub2RlPi4KCShjb25zdHJ1Y3Rvcl9ib2R5Oik6IFVzZSBgY29uc3RydWN0b3JfYmxvY2tfZW5kJyBpbnN0ZWFkIG9mCglgYmxvY2tfZW5kJy4KCjE5OTktMDUtMTcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoc3RhdGVtZW50X25zaTopOiBQb3AgYGZvcicgc3RhdGVtZW50IGJsb2NrLgoJKGphdmFfY29tcGxldGVfbGhzKTogTGFiZWxlZCBibG9ja3MgY29udGFpbmluZyBubyBzdGF0ZW1lbnQgYXJlCgltYXJrZWQgYXMgY29tcGxldGluZyBub3JtYWxseS4KCjE5OTktMDUtMTQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogeHJlZi5jICh4cmVmX3NldF9jdXJyZW50X2ZwKTogTmV3IGZ1bmN0aW9uLCBkZWZpbmVkLgoJKiB4cmVmLmggKHhyZWZfc2V0X2N1cnJlbnRfZnApOiBOZXcgZnVuY3Rpb24sIHByb3RvdHlwZWQuCgoxOTk5LTA1LTE0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6IFRha2UgaW50byBhY2NvdW50IHRoYXQKCUxBQkVMRURfQkxPQ0tfU1RNVCBjYW4gYmUgZW1wdHkuCgoxOTk5LTA1LTEzICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzKTogV2FybmluZyBjaGVjayBvbiBub3QKCW92ZXJyaWRpbmcgbWV0aG9kcyB3aXRoIGRlZmF1bHQgYWNjZXNzIGluIG90aGVyIHBhY2thZ2VzIGRvZXMgbm90CglhcHBseSB0byBgPGNsaW5pdD4nLgoJKGphdmFfY29tcGxldGVfbGhzKTogSWYgYmxvY2sgYm9keSBpcyBhbiBlbXB0eV9zdG10X25vZGUsIHJlcGxhY2UKCWl0IGJ5IE5VTExfVFJFRS4gVGhpcyBwcmV2ZW50cyBnY2MgZnJvbSBnZW5lcmF0aW5nIGFuIGlycmVsZXZhbnQKCXdhcm5pbmcuCgoxOTk5LTA1LTEzICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6IFJlbW92ZWQgY29kZSBhY2NlcHRpbmcgdG8gc2VlIHRoaW5ncwoJZmFsbGluZyB0aHJvdWdoIGRlZmF1bHQ6LCB3aGVuIGRvaW5nIHhyZWZzLgoJKiBqYXZhLXRyZWUuaCAoZG9fbm90X2ZvbGQpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLCBkZWNsYXJlZC4KCSogcGFyc2UueSAoZG9fbm90X2ZvbGQpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLCBkZWZpbmVkLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZCk6IFNldCBgZG9fbm90X2ZvbGQnIHRvIHRoZSB2YWx1ZSBvZgoJYGZsYWdfZW1pdF94cmVmJy4gV2hlbiBkb2luZyB4cmVmczogY29weSB0aGUgdGhyb3duIGV4Y2VwdGlvbnMsCglhbmQgcmVpbnN0YWxsIHRoZW0gYWZ0ZXIgdGhlbSBoYXZlIGJlZW4gcHVyZ2VkOyBkbyBub3QgY2hlY2sgZm9yCglpbml0aWFsaXphdGlvbnM7IGRvIG5vdCBpc3N1ZSBtaXNzaW5nIHJldHVybiBlcnJvcnMuCgkoamF2YV9jb21wbGV0ZV9saHMpOiBEbyBub3QgYXR0ZW1wdCB0byBwYXRjaCBJTlNUQU5DRU9GX0VYUFIgbm9kZXMKCXdoZW4gZG9pbmcgeHJlZnMuCgkocGF0Y2hfYmlub3ApOiBTa2lwIHRoZSBmb2xkIHBhcnQgd2hlbiBkb2luZyB4cmVmcy4KCShidWlsZF9zdHJpbmdfY29uY2F0ZW5hdGlvbik6IFNraXAgdGhlIGNvbmNhdGVuYXRpb24gcGFydCB3aGVuCglkb2luZyB4cmVmcy4KCShwYXRjaF9zeW5jaHJvbml6ZWRfc3RhdGVtZW50KTogRG8gbm90IGdlbmVyYXRlIGEgdHJ5LWZpbmFsbHkgd2hlbgoJZG9pbmcgeHJlZnMuCgkocGF0Y2hfdGhyb3dfc3RhdGVtZW50KTogV2hlbiBkb2luZyB4cmVmcywgZG8gbm90IGNhbGwgQlVJTERfVEhST1cKCWFuZCBrZWVwIHRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgdGhyb3cgd2FzIHNlZW4uCgkqIHR5cGVjay5jIChjb252ZXJ0KTogV2hlbiBgZG9fbm90X2ZvbGQnIGlzIHNldCwgZG8gbm90IGF0dGVtcHQKCWFueSB0cmVhdG1lbnQgb24gdGhlIGNvbnZlcnRlZCBub2RlIGFuIHNpbXBseSByZXR1cm4gYSBOT1BfRVhQUiBvZgoJdGhlIHRhcmdldGVkIHR5cGUuCgkqIHhyZWYuYyAoeHJlZl9nZXRfZGF0YSk6IE5ldyBmdW5jdGlvbiwgZGVmaW5lZC4KCSogeHJlZi5oICh4cmVmX2dldF9kYXRhKTogTmV3IGZ1bmN0aW9uLCBkZWNsYXJlZC4KCShYUkVGX0dFVF9EQVRBKTogVXNlIHhyZWZfZ2V0X2RhdGEuCgoxOTk5LTA1LTEzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBnamF2YWguYyAocHJpbnRfaW5jbHVkZSk6IENhc3QgdGhlIHJlc3VsdCBvZiBgc3RybGVuJyB0byBpbnQKCXdoZW4gY29tcGFyaW5nIGFnYWluc3QgYSBzaWduZWQgdmFsdWUuCgkoYWRkX25hbWVsZXQpOiBMaWtld2lzZS4KCjE5OTktMDUtMTIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGV4cHIuYyAoZXhwYW5kX2ludm9rZSk6IE1hcmsgcGFyYW1ldGVyIGBuYXJncycgd2l0aAoJQVRUUklCVVRFX1VOVVNFRC4KCShQUkVfTE9PS1VQX1NXSVRDSCk6IExpa2V3aXNlIGZvciB2YXJpYWJsZSBgbWF0Y2gnLgoKCSogamNmLWlvLmMgKGpjZl91bmV4cGVjdGVkX2VvZik6IE1hcmsgcGFyYW1ldGVyIGBjb3VudCcgd2l0aAoJQVRUUklCVVRFX1VOVVNFRC4KCgkqIGpjZi1yZWFkZXIuYyAoZ2V0X2F0dHJpYnV0ZSk6IENhc3QgYSB2YWx1ZSB0byBsb25nCgl3aGVuIGNvbXBhcmluZyBhZ2FpbnN0IGEgc2lnbmVkIGV4cHJlc3Npb24uICBMaWtld2lzZS4KCgkqIGxleC5oOiBOZXZlciBkZWZpbmUgSE9TVF9XSURFX0lOVCwgSE9TVF9CSVRTX1BFUl9XSURFX0lOVCBvcgoJSE9TVF9CSVRTX1BFUl9DSEFSLgoKMTk5OS0wNS0xMSAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChzb3VyY2VfZW5kX2phdmFfbWV0aG9kKTogSWYgdGhlIGN1cnJlbnQgbWV0aG9kIGNvbnRhaW5zCglhbnkgZXhjZXB0aW9uIGhhbmRsZXJzLCBmb3JjZSBhc3luY2hyb25vdXNfZXhjZXB0aW9uczogdGhpcyBpcwoJbmVjZXNzYXJ5IGJlY2F1c2Ugc2lnbmFsIGhhbmRsZXJzIGluIGxpYmphdmEgbWF5IHRocm93IGV4Y2VwdGlvbnMuCgkqIGRlY2wuYyAoZW5kX2phdmFfbWV0aG9kKTogRGl0dG8uCgoxOTk5LTA1LTExICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGp2c3BlYy5vKTogRG9uJ3QgZGVmaW5lIFdJVEhfVEhSRUFEX3ggb3IgV0lUSF9HQ194CglmbGFncy4KCSoganZzcGVjLmMgKFRIUkVBRF9OQU1FKTogUmVtb3ZlZC4KCShHQ19OQU1FKTogTGlrZXdpc2UuCgkoTUFUSExJQik6IExpa2V3aXNlLgoJKFdJVEhMSUJDKTogTGlrZXdpc2UuCgkoR0NMSUIpOiBMaWtld2lzZS4KCShUSFJFQURMSUIpOiBMaWtld2lzZS4KCShNQVRIX0xJQlJBUlkpOiBMaWtld2lzZS4KCShsYW5nX3NwZWNpZmljX2RyaXZlcik6IERvbid0IGFkZCBgLWwnIG9wdGlvbnMgdG8gY29tbWFuZCBsaW5lLgoJSW5zdGVhZCwgYWRkIGEgc2luZ2xlIC0tc3BlY3Mgb3B0aW9uLiAgUmVjb2duaXplIGAtTCcgb3B0aW9ucyBhbmQKCXVzZSB0aGVtIHRvIHNlYXJjaCBmb3Igc3BlYyBmaWxlLgoJKGZpbmRfc3BlY19maWxlKTogTmV3IGZ1bmN0aW9uLgoJKFNQRUNfRklMRSk6IE5ldyBkZWZpbmUuCgoxOTk5LTA1LTExICBEYXZlIEJyb2xsZXkgIDxicm9sbGV5QGN5Z251cy5jb20+CgoJKiBsYW5nLW9wdGlvbnMuaDogLU1ELCAtTU1ELCAtTSBhbmQgLU1NIG5vdCBuZWVkZWQgaGVyZSBmb3IKCWNwcGxpYi1lbmFibGVkIGJ1aWxkLgoKMTk5OS0wNS0wNSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChtYWtlX2ZpZWxkX3ZhbHVlKTogIERFQ0xfSU5JVElBTCBtYXkgYmUgYSBzdHJpbmcgbGl0ZXJhbDsKCXRlbXBvcmFyaWx5IHplcm8gaXQgd2hpbGUgY2FsbGluZyByZXN0X29mX2RlY2xfY29tcGlsYXRpb24uCgoJKiBqYXZhLXRyZWUuaCAoc3RyaW5nX3B0cl90eXBlX25vZGUpOiAgQWRkIGRlY2xhcmF0aW9uLgoJKiBkZWNsLmM6ICBEZWZpbmUgYW5kIGluaXRpYWxpemUgc3RyaW5nX3B0cl90eXBlX25vZGUuCgkqIHBhcnNlLnkgKHBhdGNoX3N0cmluZ19jc3QpOiAgVXNlIHN0cmluZ19wdHJfdHlwZV9ub2RlLgoKCSogcGFyc2UuaCAoTE9PUF9IQVNfTEFCRUxfUCwgTE9PUF9IQVNfTEFCRUxfU0tJUF9QKTogIFJlbW92ZWQuCgkqIHBhcnNlLnkgKGZvcl9zdGF0ZW1lbnQpOiAgTm93IHVuY29uZGl0aW9uYWxseSBleGl0X2Jsb2NrLgoJKGZpbmlzaF9sYWJlbGVkX3N0YXRlbWVudCk6ICBObyBsb25nZXIgZXhpdF9ibG9jayBpZiBmb3ItbG9vcC4KCShwYXRjaF9sb29wX3N0YXRlbWVudCk6ICBDaGVjayBoYXJkZXIgaWYgdGhlIGxvb3AgaXMgYWxyZWFkeSBsYWJlbGVkLgoKCSogcGFyc2UueSAocGF0Y2hfaW5pdGlhbGl6ZWRfc3RhdGljX2ZpZWxkKTogIFJlbW92ZWQgZnVuY3Rpb24uCgkobWF5YmVfZ2VuZXJhdGVfY2xpbml0KTogIFJlbW92ZWQgc3BlY2lhbCBoYW5kbGluZyBmb3IgaW50ZXJmYWNlcy4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzKTogIERvIGEgcHJlbGltaW5hcnkgamF2YV9jb21wbGV0ZV90cmVlCglvbiA8Y2xpbml0PiB0byBkZXRlcm1pbmUgaWYgaXQgY2FuIGJlIHJlbW92ZWQuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kKTogIFJlbW92ZSBzcGVjaWFsIGhhbmRsaW5nIGZvciA8Y2xpbml0Pi4KCShqYXZhX2NvbXBsZXRlX2xocyk6ICBGb3IgQkxPQ0sgYW5kIEVYUFJfV0lUSF9GSUxFX0xPQ0FUSU9OCglvcHRpbWl6ZSBpZiB3ZSBnZXQgYmFjayBlbXB0eV9zdG10X25vZGUuCglGb3IgTU9ESUZZX0VYUFIsIHJlLWRvIGNoZWNraW5nIG9mIHN0YXRpYyBpbml0aWFsaXplcnMuCgkoZm9sZF9jb25zdGFudF9mb3JfaW5pdCk6ICBEb24ndCByZXR1cm4gaW1tZWRpYXRlIGlmIFZBUl9ERUNMLgoJRm9yIFZBUl9ERUNMLCBwYXNzIGNvcnJlY3QgY29udGV4dC4KCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6ICBCZXR0ZXIgZXJyb3IgbWVzc2FnZXMuCgoxOTk5LTA1LTAzICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBwYXJzZS1zY2FuLnkgKGludGVyZmFjZV9kZWNsYXJhdGlvbik6IENhbGwKCXJlcG9ydF9jbGFzc19kZWNsYXJhdGlvbiBmb3IgaW50ZXJmYWNlcy4KCjE5OTktMDQtMzAgMjA6NTQgLTA0MDAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHJhYmkuY29sdW1iaWEuZWR1PgoKCSogTWFrZWZpbGUuaW46IFJlbW92ZSAtdiBmcm9tIGJpc29uIGNvbW1hbmQgbGluZXMuCgoxOTk5LTA0LTMwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6IEV4Y2x1ZGUgYSBjYXNlIG9mIGVycm9yIHdoZW4gZG9pbmcKCXhyZWZzLgoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3NfbWV0aG9kKTogRG9uJ3QgZ2VuZXJhdGUgdGhlIGVycm9yIG1lc3NhZ2UKCXR3aWNlIHdoZW4gY29tcGlsaW5nIGZyb20gc291cmNlLgoJKiBsYW5nLW9wdGlvbnMuaDogQWRkZWQgYC1XcmVkdW5kYW50LW1vZGlmZXJzJyBhbmQKCWAtV3VudXN1cHBvcnRlZC1qZGsxMScgZmxhZ3MgYW5kIGhlbHAgdGV4dC4KCSogbGFuZy5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBBZGRlZCBzdXBwb3J0IGZvcgoJYC1XdW5zdXBwb3J0ZWQtamRrMTEnIGFuZCBgLVdyZWR1bmRhbnQtbW9kaWZpZXJzJy4KCWZsYWdfc3RhdGljX2xvY2FsX2pkazExIGFuZCBmbGFnX3JlZHVuZGFudCBzZXQgYWNjb3JkaW5nbHkuCgkqIGxleC5jIChqYXZhX2xleCk6IENhbGwgQlVJTERfT1BFUkFUT1Igb24gQ0NCX1RLLgoJKiBwYXJzZS5oIChFWFBSX1dGTF9BRERfQ09MKTogTmV3IG1hY3JvLgoJKERFQ0xfRU5EX1NPVVJDRV9MSU5FKTogTGlrZXdpc2UuCgkoREVDTF9JTkhFUklURURfU09VUkNFX0xJTkUpOiBMaWtld2lzZS4KCSogcGFyc2UueSAoc3RhdGljX3JlZl9lcnIpOiBOZXcgZnVuY3Rpb24sIHByb3RvdHlwZWQuCgkoQ0NCX1RLKTogTm93IHRhZ2dlZCA8b3BlcmF0b3I+LgoJKGNsYXNzX2JvZHk6KTogUmVtZW1iZXIgdGhlIGxvY2F0aW9uIG9mIHRoZSBjbG9zaW5nICd9JyBvZiBhIGNsYXNzCglkZWZpbml0aW9uIHdoZW4gZG9pbmcgeHJlZnMuCgkoYmxvY2s6KTogTGlrZXdpc2UuCgkoYmxvY2tfZW5kOik6IExpa2V3aXNlLgoJKGNyZWF0ZV9jbGFzcyk6IFJlbWVtYmVyIHRoZSBsb2NhdGlvbiBvZiB0aGUgaW5oZXJpdGVkIGNsYXNzCglpZGVudGlmaWVyIHdoZW4gZG9pbmcgeHJlZnMuCgkocmVnaXN0ZXJfZmllbGRzKTogQWRkZWQgdGVzdCBvbiBmaXJzdCBvcGVyYW5kIG9mIGBpbml0JyBiZWZvcmUKCXRlc3RpbmcgaXQgVFJFRV9DT0RFLgoJKG1ldGhvZF9oZWFkZXIpOiBTdG9yZSB0aGUgbG9jYXRpb24gb2YgdGhlIGNsYXNzIGlkZW50aWZpZXIgaW4gdGhlCgljbGFzcyBkZWNsIHdoZW4gZG9pbmcgeHJlZnMuCgkoZmluaXNoX21ldGhvZF9kZWNsYXJhdGlvbik6IERvbid0IGNvbWJpbmUgZmlyc3QvbGFzdCBtZXRob2QgbGluZQoJd2hlbiBkb2luZyB4cmVmLgoJKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzKTogV2FybmluZyBjaGVjayBvbiBub3Qgb3ZlcnJpZGluZwoJbWV0aG9kcyB3aXRoIGRlZmF1bHQgYWNjZXNzIG9uIG90aGVyIHBhY2thZ2VzIG1vdmUgYmVmb3JlIGNoZWNrIG9uCglzdGF0aWMgbWV0aG9kcy4gSW5pdGlhbGl6YXRpb24gb2YgYGFmbGFncycgYWxzbyBtb3ZlZCB1cC4KCShyZXNvbHZlX2V4cHJlc3Npb25fbmFtZSk6IENhbGwgc3RhdGljX3JlZl9lcnIgdG8gcmVwb3J0IHRoZSBlcnJvci4KCShzdGF0aWNfcmVmX2Vycik6IE5ldyBmdW5jdGlvbiwgaW1wbGVtZW50ZWQuCgkocmVzb2x2ZV9maWVsZF9hY2Nlc3MpOiBSZXR1cm5lZCBzaW1wbGlmaWVkIHN0YXRpYyBmaWVsZCBhY2Nlc3MKCXdoZW4gZG9pbmcgeHJlZnMuCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogQ2hlY2sgZm9yIGlsbGVnYWwgdXNlIG9mCglzdGF0aWMgZmllbGRzIGluIGEgbm9uIHN0YXRpYyBjb250ZXh0LiBDYWxsIHN0YXRpY19yZWZfZXJyIHRvCglyZXBvcnQgZXJyb3IgaW4gdmFyaW91cyBwbGFjZXMuCgkoamF2YV9jb21wbGV0ZV90cmVlKTogRG8gbm90IGZvbGQgaW5pdGlhbGl6ZWQgc3RhdGljIGZpZWxkcyB3aGVuCglkb2luZyB4cmVmcy4KCShqYXZhX2NvbXBsZXRlX2xocyk6IExpa2V3aXNlLgoKMTk5OS0wNC0yOSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGdlbmVyYXRlX25hbWUpOiBVc2UgQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMIHRvCgljcmVhdGUgaW50ZXJuYWwgbGFiZWxzLgoJKGxvb2t1cF9sYWJlbCk6IERpdHRvLgoKMTk5OS0wNC0yNCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3NfbWV0aG9kKTogR2VuZXJhdGUgPGNsaW5pdD4ncyBydGwgZm9yCglpbnRlcmZhY2VzLgoJKiBkZWNsLmMgKGNvbXBsZXRlX3N0YXJ0X2phdmFfbWV0aG9kKTogRG9uJ3QgY2FsbCBfSnZfSW5pdENsYXNzCglmb3IgaW50ZXJmYWNlcycgPGNsaW5pdD4uCgkqIGV4cHIuYyAobG9va3VwX2ZpZWxkKTogU2VhcmNoIGZvciBmaWVsZHMgaW4gaW50ZXJmYWNlcy4KCShleHBhbmRfaW52b2tlKTogRml4ZWQgaW5kZW50YXRpb24uCgkoZXhwYW5kX2phdmFfZmllbGRfb3ApOiBMaWtld2lzZS4gVXNlIElTX0NMSU5JVC4KCSogcGFyc2UuaCAoSlBSSU1JVElWRV9UWVBFX09SX1ZPSURfUCk6IE1hY3JvIHJlbW92ZWQuCgkoSVNfQ0xJTklUKTogTmV3IG1hY3JvLgoJKiBwYXJzZS55ICh0eXBlX2RlY2xhcmF0aW9uOik6IENhbGwgbWF5YmVfZ2VuZXJhdGVfY2xpbml0IGFmdGVyIGFuCglpbnRlcmZhY2Ugd2FzIHBhcnNlZC4KCShtYXliZV9nZW5lcmF0ZV9jbGluaXQpOiBEb24ndCBnZW5lcmF0ZSBpZiB0aGUgY3VycmVudCBjbGFzcyBpcyBhbgoJaW50ZXJmYWNlIHdpdGggb25seSBmaWVsZHMgb2YgcHJpbWl0aXZlIHR5cGVzLgoJKHJlc2V0X21ldGhvZF9uYW1lKTogVXNlIElTX0NMSU5JVC4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiBFeHBhbmQgPGNsaW5pdD4gd2hlbiBpdCBleGlzdHMgZm9yCglpbnRlcmZhY2VzLiBVc2UgSVNfQ0xJTklULgoJKHJlc29sdmVfZXhwcmVzc2lvbl9uYW1lKTogVXNlIERFQ0xfQ09OVEVYVCBpbnN0ZWFkIG9mCgljdXJyZW50X2NsYXNzIHRvIGJ1aWxkIHN0YXRpYyBmaWVsZCByZWZlcmVuY2VzLgoJKGphdmFfY29tcGxldGVfbGhzKTogVXNlIElTX19DTElOSVQuIERvbid0IHVzZSBTQVZFX0VYUFIgb24KCUFSUkFZX1JFRiB3aGVuIGRvaW5nIHhyZWZlcmVuY2luZy4KCShjaGVja19maW5hbF9hc3NpZ25tZW50KTogRml4ZWQgdHlwbyBpbiBsZWFkaW5nIGNvbW1lbnQuIFVzZQoJSVNfQ0xJTklULgoJKHBhdGNoX2FycmF5X3JlZik6IERvbid0IGZ1bGx5IGV4cGFuZCBhcnJheSByZWZlcmVuY2VzIHdoZW4KCXhyZWZlcmVuY2luZy4KCShwYXRjaF9yZXR1cm4pOiBVc2UgSVNfQ0xJTklULgoJKHBhdGNoX3Rocm93X3N0YXRlbWVudCk6IExpa2V3aXNlLgoKMTk5OS0wNC0yMiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogTWFrZS1sYW5nLmluIChKQVZBX1NSQ1MpOiBBZGRlZCBjaGVjay1pbml0LmMuCgoxOTk5LTA0LTIxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAocHJlZGVmX2ZpbGVuYW1lcywgcHJlZGVmX2ZpbGVuYW1lc19zaXplKTogTmV3IGdsb2JhbHMKCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IHByZWRlZl9maWxlbmFtZXMgYW5kIHByZWRlZl9maWxlbmFtZXNfc2l6ZQoJaW5pdGlhbGl6ZWQuCgkqIGphdmEtdHJlZS5oIChwcmVkZWZfZmlsZW5hbWVzLCBwcmVkZWZfZmlsZW5hbWVzX3NpemUpOiBEZWNsYXJlZAoJZXh0ZXJuLgoJKiBqY2YtcGFyc2UuYyAocHJlZGVmaW5lZF9maWxlbmFtZV9wKTogTmV3IGZ1bmN0aW9uLgoJKHl5cGFyc2UpOiBDaGVjayB0aGF0IGZpbGVzIG9uIHRoZSBjb21tYW5kIGxpbmUgYXJlIHNwZWNpZmllZCBvbmx5CglvbmNlIGFuZCBpc3N1ZSBhIHdhcm5pbmcgb3RoZXJ3aXNlLgoJKiBwYXJzZS5oIChKUFJJTUlUSVZFX1RZUEVfT1JfVk9JRF9QKTogTmV3IG1hY3JvLgoJKiBwYXJzZS55IChzb3VyY2VfZW5kX2phdmFfbWV0aG9kKTogTnVsbGlmeSBOT1AgbWV0aG9kIGJvZGllcywgdG8KCWF2b2lkIGEgZ2NjIHdhcm5pbmcgd2l0aCAtVyAtV2FsbCB0dXJuZWQgb24uCgkoamF2YV9leHBhbmRfY2xhc3Nlcyk6IEFib3J0IGlmIGVycm9ycyB3ZXJlIGVuY291bnRlcmVkLgoJKGphdmFfY29tcGxldGVfbGhzKTogSWYgdGhlIGNyb3NzIHJlZmVyZW5jZSBmbGFnIGlzIHNldCwgd3JhcAoJZmllbGQgREVDTCBub2RlIGFyb3VuZCBhIFdGTCB3aGVuIHJlc29sdmluZyBleHByZXNzaW9uIG5hbWUuCgoxOTk5LTA0LTE5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGxhbmcuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogRml4ZWQgcmV0dXJuZWQgdmFsdWUgd2hlbiBwYXJzaW5nCglgLWZ4cmVmPS4uLicgYW5kIGAtV2FsbCcuCgkqIHBhcnNlLnkgKHNvdXJjZV9lbmRfamF2YV9tZXRob2QpOiBEbyBub3QgZ2VuZXJhdGUgY29kZSB3aGVuCglmbGFnX2VtaXRfeHJlZiBpcyBzZXQuCgkocmVzb2x2ZV9leHByZXNzaW9uX25hbWUpOiBEbyBub3QgYnVpbGQgc3RhdGljIGZpZWxkIGFjY2VzcyB3aGVuCglmbGFnX2VtaXRfeHJlZiBpcyBzZXQuCgkocmVzb2x2ZV9maWVsZF9hY2Nlc3MpOiBObyBzcGVjaWFsIHRyZWF0bWVudCBvbiBgbGVuZ3RoJyB3aGVuCglmbGFnX2VtaXRfeHJlZiBpcyBzZXQuIERvIG5vdCBidWlsZCBxdWFsaWZpZWQgc3RhdGljIGZpZWxkIGFjY2VzcwoJd2hlbiBmbGFnX2VtaXRfeHJlZiBpcyBzZXQuCgkocGF0Y2hfaW52b2tlKTogS2VlcCB0aGUgbWV0aG9kIERFQ0wgYXMgb3BlcmFuZCAwIG9mIHRoZSBDQUxMX0VYUFIKCXdoZW4gZmxhZ19lbWl0X3hyZWYgaXMgc2V0LgoJKHBhdGNoX2Fzc2lnbm1lbnQpOiBEbyBub3QgZ2VuZXJhdGUgYXJyYXkgc3RvcmUgcnVudGltZSBjaGVjayB3aGVuCglmbGFnX2VtaXRfeHJlZiBpcyBzZXQuCgkqIHhyZWYuYyAoeHJlZl9mbGFnX3ZhbHVlKTogRml4ZWQgZnVuY3Rpb24gZGVjbGFyYXRpb24KCWluZGVudGF0aW9uLgoJKHhzZXRfc2V0X2RhdGEpOiBOZXcgZnVuY3Rpb24uCgkqIHhyZWYuaCAoeHJlZl9zZXRfZGF0YSk6IEFkZGVkIHByb3RvdHlwZSBmb3IgbmV3IGZ1bmN0aW9uLgoJKHR5cGVkZWYgc3RydWN0IHhyZWZfZmxhZ190YWJsZSk6IE5ldyBmaWVsZCBkYXRhLgoJKFhSRUZfR0VUX0RBVEEpOiBOZXcgbWFjcm8uCgoxOTk5LTA0LTE5ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiB4cmVmLmggKGVudW0pOiBSZW1vdmVkIHRyYWlsaW5nIGNvbW1hLgoKCSogcGFyc2UueSAocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogQWRkZWQgbWlzc2luZwoJYGJyZWFrJy4KCjE5OTktMDQtMTUgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBjeWdudXMuY29tPgoKCSogZ2phdmFoLmM6IE5ldyBwcm90b3R5cGVzIGZvciBqYXZhX2Zsb2F0X2Zpbml0ZSBhbmQKCWphdmFfZG91YmxlX2Zpbml0ZS4KCjE5OTktMDQtMTIgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfdW5hcnlvcCk6IEZpeGVkICsrLy0tIG9wZXJhdG9yIGNoZWNrIG9uIGFycmF5CglyZWZlcmVuY2VzLgoKMTk5OS0wNC0wNiAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKFRSRUVfSCk6IEFkZCB0cmVlLWNoZWNrLmguCgkoUlRMX0gpOiBBZGQgZ2VucnRsLmguCgoxOTk5LTA0LTA2ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX2Fzc2lnbm1lbnQpOiBBZGRlZCBBcnJheVN0b3JlRXhjZXB0aW9uIHJ1bnRpbWUKCWNoZWNrLgoKMTk5OS0wNC0wNiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBleHByLmMgKHBvcF90eXBlXzApOiAgTmV3IGZ1bmN0aW9uLgoJKHBvcF90eXBlKTogIFVzZSBwb3BfdHlwZV8wLgoJKiBqYXZhLXRyZWUuaCAocG9wX3R5cGVfMCk6ICBOZXcgZGVjbGFyYXRpb24uCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6ICBDaGVjayByZXR1cm4gaW5zdHJ1Y3Rpb25zLgoKCSogcGFyc2UueSAocGF0Y2hfYmlub3ApOiAgRG9uJ3QgZm9sZCBpZiBub24tY29uc3RhbnQgYW5kIGVtaXRpbmcKCWNsYXNzIGZpbGVzLgoKMTk5OS0wNC0wNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKGdqYXZhaC5vKTogRGVwZW5kIG9uICQoSkFWQV9UUkVFX0gpLgoKCSogZ2phdmFoLmM6IEluY2x1ZGUgbWF0aC5oIGVhcmxpZXIuICBJbmNsdWRlIHRyZWUuaC9qYXZhLXRyZWUuaC4KCShtYWluX2pjZik6IERvbid0IGRlZmluZS4KCShwcm9jZXNzX2ZpbGUpOiBEb24ndCBzZXQgYG1haW5famNmJy4KCgkqIGphdmEtdHJlZS5oIChtYWluX2pjZik6IERvbid0IGRlY2xhcmUuCgoJKiBqY2YtcGFyc2UuYyAobWFpbl9qY2YpOiBBZGQgc3RhdGljIGRlZmluaXRpb24uCgoJKiBsYW5nLmMgKG1haW5famNmKTogRG9uJ3QgZGVmaW5lLgoKMTk5OS0wNC0wNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY2xhc3MuYyAoYWRkX21ldGhvZF8xKTogQ2FzdCB0aGUgYXJndW1lbnQgb2YgYGJ6ZXJvJyB0byBQVFIuCgoJKiBkZWNsLmMgKGNvcHlfbGFuZ19kZWNsKTogTGlrZXdpc2UgZm9yIGBiY29weScuCgoJKiBqY2YtZGVwZW5kLmM6IEluY2x1ZGUgImNvbmZpZy5oIiwgbm90IDxjb25maWcuaD4uCgoJKiBqY2YtcGFyc2UuYyAoamNmX2ZpZ3VyZV9maWxlX3R5cGUpOiBDYXN0IHRoZSBhcmd1bWVudHMgb2YKCWBiY29weScgdG8gUFRSLgoKCSogamNmLXBhdGguYzogSW5jbHVkZSAiY29uZmlnLmgiLCBub3QgPGNvbmZpZy5oPi4KCgkqIGxleC5jOiBEb24ndCBpbmNsdWRlIHZhcmlvdXMgc3lzdGVtIGhlYWRlciBmaWxlcy4KCShqYXZhX2luaXRfbGV4KTogQ2FzdCB0aGUgYXJndW1lbnQgb2YgYGJ6ZXJvJyB0byBQVFIKCgkqIHBhcnNlLXNjYW4ueSAoamF2YV9wdXNoX3BhcnNlcl9jb250ZXh0KTogTGlrZXdpc2UuCgoJKiBwYXJzZS55IChqYXZhX3B1c2hfcGFyc2VyX2NvbnRleHQpOiBMaWtld2lzZS4KCShwYXRjaF9iY19zdGF0ZW1lbnQpOiBNYXRjaCBmb3JtYXQgc3BlY2lmaWVyIHRvIHZhcmlhYmxlIGFyZ3VtZW50LgoKCSogeHJlZi5jOiBEb24ndCBpbmNsdWRlIDxzdGRpby5oPi4KCjE5OTktMDQtMDUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoc3RydWN0IHBhcnNlcl9jdHh0ICpjdHhwKTogTm93IGdsb2JhbC4KCShkZWNsYXJlX2xvY2FsX3ZhcmlhYmxlcyk6IFVzZSBXRkwgY29tcG91bmQgdmFsdWUgZm9yIHRoZQoJZGVjbGFyYXRpb24gc291cmNlIGxpbmUgdmFsdWUsIHdoZW4gZG9pbmcgY3Jvc3MtcmVmZXJlbmNpbmcuCgoxOTk5LTAzLTMxICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBnamF2YWguYyAocHJpbnRfZmllbGRfaW5mbyk6IEFsbG93IGNvbnN0YW50cyBvZiBvdGhlciB0eXBlcy4KCShwcmludF9pbmNsdWRlKTogR2VuZXJhdGUgaW5jbHVkZSB3aGVuIG5ldyBuYW1lIGlzIHByb3BlciBwcmVmaXgKCW9mIGFscmVhZHkgcHJpbnRlZCBuYW1lLgoJKGFkZF9uYW1lbGV0KTogTGlrZXdpc2UuCgkoY3h4X2tleXdvcmRfc3Vic3QpOiBOZXcgZnVuY3Rpb24uCgkocHJpbnRfbWV0aG9kX2luZm8pOiBVc2UgaXQuCgkocHJpbnRfZmllbGRfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShnZXRfZmllbGRfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShwcmludF9maWVsZF9pbmZvKTogVXNlIGdldF9maWVsZF9uYW1lIGFuZCBwcmludF9maWVsZF9uYW1lLgoKMTk5OS0wMy0zMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKGtleXdvcmQuaCk6IEdlbmVyYXRlIHVzaW5nIGdwZXJmIGxhbmd1YWdlICdDJywgbm90CgknS1ItQycsIHNvIGdwZXJmIHVzZXMgdGhlIGBjb25zdCcga2V5d29yZCBvbiBzdHJpbmdzLgoKCSoga2V5d29yZC5ncGVyZiAoamF2YV9rZXl3b3JkKTogQ29uc3QtaWZ5IGEgY2hhciouCgoxOTk5LTAzLTMwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX2JjX3N0YXRlbWVudCk6IEZpeGVkIGlkZW50YXRpb24gYW5kIGEgYm9ndXMKCWBwcmludGYnIGZvcm1hdC4KCjE5OTktMDMtMzAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfYXNzaWdubWVudCk6IEFsbG93IHN0YXRpYyB2YXJpYWJsZXMgaW4gb3RoZXIKCWNsYXNzZXMgdG8gYmUgYXNzaWduZWQuCgoxOTk5LTAzLTI4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjbGFzcy5jIChtYXliZV9hZGRfaW50ZXJmYWNlKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZQoJYGludGVyZmFjZV9iaW5mbycuCgkobWFrZV9jbGFzc19kYXRhKTogVXNlID0gZm9yIGFzc2lnbm1lbnQsIG5vdCA9PS4gIExpa2V3aXNlLgoJKGVtaXRfcmVnaXN0ZXJfY2xhc3Nlcyk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGRlY2wnLgoKCSogbGV4LmM6IEZpeCBjb21tZW50IHNvIGFzIG5vdCB0byBjb250YWluIGFuIGVtYmVkZGVkIGAvKicuCgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCglgc2VsZl90eXBlJy4KCjE5OTktMDMtMjcgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogcGFyc2UueSAoY29tcGxldGVfbG9vcF9ib2R5KTogIFJlbmFtZSB0byBmaW5pc2hfbG9vcF9ib2R5LgoJKGNvbXBsZXRlX2xhYmVsZWRfc3RhdGVtZW50KTogIFJlbmFtZSB0byBmaW5pc2hfbGFiZWxlZF9zdGF0ZW1lbnQuCgkoY29tcGxldGVfZm9yX2xvb3ApOiAgUmVuYW1lIHRvIGZpbmlzaF9mb3JfbG9vcC4KCShjb21wbGV0ZV9tZXRob2RfZGVjbGFyYXRpb24pOiAgUmVuYW1lIHRvIGZpbmlzaF9tZXRob2RfZGVjbGFyYXRpb24uCgoJKiBqYXZhLXRyZWUuaCAoY29udGludWVfaWRlbnRpZmllcl9ub2RlKTogIE5ldyBnbG9iYWwgbm9kZS4KCSogZGVjbC5jOiAgRGVmaW5lIGFuZCBpbml0aWFsaXplIGNvbnRpbnVlX2lkZW50aWZpZXJfbm9kZS4KCSogcGFyc2UueSAoZ2VuZXJhdGVfbGFiZWxlZF9ibG9jayk6ICBSZW1vdmUgLSBubyBsb25nZXIgbmVlZGVkLgoJKGJ1aWxkX2xvb3BfYm9keSk6ICBVc2UgY29udGludWVfaWRlbnRpZmllcl9ub2RlIGZvciBjb250aW51ZSBibG9jay4KCShmaW5pc2hfbGFiZWxlZF9zdGF0ZW1lbnQpOiAgQWxzbyBkbyBwb3BfbGFiZWxlZF9ibG9jayBhY3Rpb25zLgoJKGphdmFfY29tcGxldGVfbGhzKTogIFBPUF9MT09QIGV2ZW4gaWYgZXJyb3IuCgkoYnVpbGRfbGFiZWxlZF9ibG9jayk6ICBTcGVjaWFsIGhhbmRsaW5nIGZvciBjb250aW51ZV9pZGVudGlmaWVyX25vZGUuCgkocGF0Y2hfbG9vcF9zdGF0ZW1lbnQpOiAgUmUtb3JnYW5pemUuCgkocGF0Y2hfYmNfc3RhdGVtZW50KTogIFJlLXdyaXRlLgoKMTk5OS0wMy0yNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS5oIChFWFBSX1dGTF9HRVRfTElORUNPTCk6IFNldCBhIGxpbmUgYW5kIGNvbHVtbiBjb3VudAoJdXNpbmcgYSBXRkwgY29tcG91bmQgdmFsdWUuCgkqIHBhcnNlLnkgKHhyZWYuaCk6IEluY2x1ZGUuCgkobWF5YmVfY3JlYXRlX2NsYXNzX2ludGVyZmFjZV9kZWNsKTogU2V0IERFQ0xfU09VUkNFX0xJTkUgdG8gdGhlCglXRkwgY29tcG91bmQgdmFsdWUuCgkocmVnaXN0ZXJfZmllbGRzKTogU2V0IFdGTCBjb21wb3VuZCB2YWx1ZSB0byBsaW5lbm8gaWYgZG9pbmcKCXhyZWZzLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZCk6IENhbGwgZXhwYW5kX3hyZWYgaWYgZmxhZ19lbWl0X3hyZWYKCWlzIHNldC4KCSogeHJlZi5jIChzeXN0ZW0uaCwgamNmLmgsIHBhcnNlLmgsIG9ic3RhY2suaCk6IEluY2x1ZGUuCgkqIHhyZWYuaCAoZXhwYW5kX3hyZWYpOiBQcm90b3R5cGUgcmVuYW1lZCBmcm9tIHhyZWZfZ2VuZXJhdGUuCgoxOTk5LTAzLTI3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLmggKEJMT0NLX0NIQUlOX0RFQ0wpOiBOZXcgdXNlIEdFVF9DVVJSRU5UX0JMT0NLLgoJKEdFVF9DVVJSRU5UX0JMT0NLKTogTmV3IG1hY3JvLgoJKiBwYXJzZS55IChjdXJyZW50X3N0YXRpY19ibG9jayk6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkobWV0aG9kX2JvZHk6KTogRGVmaW5lIGFjdGlvbi4KCShjb21wbGV0ZV9tZXRob2RfZGVjbGFyYXRpb24pOiBTZXQgY3VycmVudF9mdW5jdGlvbl9kZWNsIHRvIE5VTEwKCXdoZW4gd29yayBvbiB0aGUgY3VycmVudCBtZXRob2QgaXMgZG9uZS4KCShkZWNsYXJlX2xvY2FsX3ZhcmlhYmxlcyk6IFVzZSBHRVRfQ1VSUkVOVF9CTE9DSy4KCShqYXZhX21ldGhvZF9hZGRfc3RtdCk6IExpa2V3aXNlLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZCk6IERpc2FibGUgdGhlIHVzZSBvZiBgdGhpcycgd2hlbgoJZXhwYW5kaW5nIDxjbGluaXQ+LgoJKGVudGVyX2FfYmxvY2spOiBJZiBubyBjdXJyZW50IG1ldGhvZCBleGlzdCwgdXNlCgljdXJyZW50X3N0YXRpY19ibG9jayB0byBsaW5rIHN0YXRpYyBpbml0aWFsaXplciBibG9ja3MuCgkoZXhpdF9ibG9jayk6IFJld3JpdHRlbiB0byB1c2UgY3VycmVudF9zdGF0aWNfYmxvY2sgd2hlbiBubyBjdXJyZW50CgltZXRob2QgZGVjbCBleGlzdHMuCgkobG9va3VwX25hbWVfaW5fYmxvY2tzKTogVXNlIEdFVF9DVVJSRU5UX0JMT0NLLgoJKHBhdGNoX3JldHVybik6IEZvcmJpZCB0aGUgdXNlIG9mIGByZXR1cm4nIGluIHN0YXRpYyBpbml0aWFsaXplcnMuCgkocGF0Y2hfdGhyb3dfc3RhdGVtZW50KTogRml4ZWQgaW5kZW50YXRpb24uIElzc3VlIHNwZWNpZmljIGVycm9yCglmb3IgdW5jYXVnaHQgdGhyb3duIGNoZWNrZWQgZXhjZXB0aW9uIGluIHN0YXRpYyBpbml0aWFsaXplcgoJYmxvY2tzLiBSZW1vdmVkIEZJWE1FLgoKMTk5OS0wMy0yNSAgWmFjayBXZWluYmVyZyAgPHphY2tAcmFiaS5jb2x1bWJpYS5lZHU+CgoJKiBqYXZhL01ha2UtbGFuZy5pbjogUmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIGdjai5vL2djai5jLgoJTGluayBnY2ogZnJvbSBnY2Muby4KCjE5OTktMDMtMjMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoZmluZF9hcHBsaWNhYmxlX2FjY2Vzc2libGVfbWV0aG9kc19saXN0KTogV2hlbiBkZWFsaW5nCgl3aXRoIGludGVyZmFjZTogZW5zdXJlIHRoYXQgYSBnaXZlbiBpbnRlcmZhY2Ugb3IgamF2YS5sYW5nLk9iamVjdAoJYXJlIHNlYXJjaGVkIG9ubHkgb25jZS4KCjE5OTktMDMtMjMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGdqYXZhaC5jIChwcmludF9jX2RlY2wpOiBSZW1vdmUgdW51c2VkIGFyZ3VtZW50IGBmbGFncycuCgoJKiBqY2YtZHVtcC5jIChwcmludF9hY2Nlc3NfZmxhZ3MpOiBBZGQgYnJhY2VzIGFyb3VuZCBpZi1lbHNlLgoKCSoganZzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogV3JhcCB2YXJpYWJsZSBgbGVuJyBpbiBtYWNybwoJQ09NQklORV9JTlBVVFMuCgoJKiBsZXguYyAoYnVpbGRfd2ZsX25vZGUpOiBBZGQgc3RhdGljIHByb3RvdHlwZS4KCgkqIGxleC5oIChidWlsZF93Zmxfbm9kZSk6IFJlbW92ZSBzdGF0aWMgcHJvdG90eXBlLgoKCSogcGFyc2UueTogSW5jbHVkZSBsZXguYyBlYXJseSBlbm91Z2ggdG8gZGVjbGFyZSBldmVyeXRoaW5nIG5lZWRlZC4KCUVuc3VyZSBjYWxscyB0byBgYnVpbGRfd2ZsX25vZGUnIHBhc3MgdGhlIHByb3BlciBhcmd1bWVudHMuCgkoY3JlYXRlX2NsYXNzKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgc3VwZXJfZGVjbCcuCgkoZ2V0X3ByaW50YWJsZV9tZXRob2RfbmFtZSk6IEluaXRpYWxpemUgdmFyaWFibGUgYG5hbWUnLgoKMTk5OS0wMy0yMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBDaGFuZ2Vsb2c6IEZpeGVkIDE5OTktMDMtMjIgdHlwb3MuCgkqIGxhbmcuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogRml4ZWQgdHlwbyBpbiBlcnJvciBzdHJpbmcgaW4gdGhlCglYQVJHIHNlY3Rpb24uCgoxOTk5LTAzLTIyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChKQVZBX09CSlMpOiBBZGRlZCBlbnRyeSB4cmVmLm8uCgkoeHJlZi5vKTogTmV3IHJ1bGUuCgkqIGphdmEtdHJlZS5oIChmbGFnX2VtaXRfeHJlZik6IERlY2xhcmVkIGV4dGVybi4KCSogbGFuZy5jICh4cmVmLmgpOiBJbmNsdWRlZC4KCShmbGFnX2VtaXRfeHJlZik6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkobGFuZ19kZWNvZGVfb3B0aW9uKTogQWRkZWQgc3VwcG9ydCBmb3IgLWZ4cmVmLgoJKiB4cmVmLmM6IENyZWF0ZWQuCgkqIHhyZWYuaDogTGlrZXdpc2UuCgoxOTk5LTAzLTIxICBNYW5mcmVkIEhvbGxzdGVpbiAgPG1hbmZyZWRAcy1kaXJla3RuZXQuZGU+CgoJKiBNYWtlLWxhbmcuaW4gKCQoR0NKKSQoZXhlZXh0KSk6IEFkZCBpbnRsLm8gdG8gbGlzdCBvZiBmaWxlcyB0byBiZQoJbGlua2VkIHdpdGguCgoxOTk5LTAzLTIxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoamNmLWR1bXAubyk6IERlcGVuZCBvbiAkKENPTkZJR19IKQoJJChzcmNkaXIpLy4uL3N5c3RlbS5oIGFuZCAkKEpBVkFfVFJFRV9IKS4KCShqY2YtaW8ubyk6IERlcGVuZCBvbiAkKEpBVkFfVFJFRV9IKS4KCShtYW5nbGUubyk6IExpa2V3aXNlLgoKCSogY2hlY2staW5pdC5jIChjaGVja19jb25kX2luaXQpOiBBZGQgc3RhdGljIHByb3RvdHlwZS4KCgkqIGNsYXNzLmMgKGJ1aWxkX2phdmFfbWV0aG9kX3R5cGUsIGhhc2hVdGY4U3RyaW5nLAoJbWFrZV9maWVsZF92YWx1ZSwgZ2V0X2Rpc3BhdGNoX3ZlY3RvciwgZ2V0X2Rpc3BhdGNoX3RhYmxlLAoJYXBwZW5kX2dwcF9tYW5nbGVkX3R5cGUsIG1hbmdsZV9zdGF0aWNfZmllbGQpOiBMaWtld2lzZS4KCShzdHJMZW5ndGhVdGY4KTogSGlkZSB1bnVzZWQgZGVmaW5pdGlvbi4KCShoYXNoVXRmOFN0cmluZyk6IENvbnN0LWlmeS4KCShtYWtlX2ZpZWxkX3ZhbHVlKTogVW4tQU5TSS1meS4KCgkqIGNvbnN0YW50cy5jOiBNb3ZlIGluY2x1c2lvbiBvZiBqY2YuaCBhYm92ZSBqYXZhLXRyZWUuaC4KCShzZXRfY29uc3RhbnRfZW50cnksIGZpbmRfY2xhc3Nfb3Jfc3RyaW5nX2NvbnN0YW50LAoJZmluZF9uYW1lX2FuZF90eXBlX2NvbnN0YW50LCBnZXRfdGFnX25vZGUsCglidWlsZF9jb25zdGFudF9kYXRhX3JlZik6IEFkZCBzdGF0aWMgcHJvdG90eXBlLgoKCSogZGVjbC5jIChwdXNoX2p2bV9zbG90LCBidWlsdGluX2Z1bmN0aW9uLAoJbG9va3VwX25hbWVfY3VycmVudF9sZXZlbCk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fZnVuY3Rpb24pOiBDb25zdC1pZnkuCgoJKiBleGNlcHQuYyAoZXhwYW5kX3N0YXJ0X2phdmFfaGFuZGxlciwgZXhwYW5kX2VuZF9qYXZhX2hhbmRsZXIpOgoJQWRkIHN0YXRpYyBwcm90b3R5cGUuCgoJKiBleHByLmMgKGZsdXNoX3F1aWNrX3N0YWNrLCBwdXNoX3ZhbHVlLCBwb3BfdmFsdWUsCglqYXZhX3N0YWNrX3N3YXAsIGphdmFfc3RhY2tfZHVwLCBidWlsZF9qYXZhX2F0aHJvdywKCWJ1aWxkX2phdmFfanNyLCBidWlsZF9qYXZhX3JldCwgZXhwYW5kX2phdmFfbXVsdGlhbmV3YXJyYXksCglleHBhbmRfamF2YV9hcnJheXN0b3JlLCBleHBhbmRfamF2YV9hcnJheWxvYWQsCglleHBhbmRfamF2YV9hcnJheV9sZW5ndGgsIGJ1aWxkX2phdmFfbW9uaXRvciwgZXhwYW5kX2phdmFfcHVzaGMsCglleHBhbmRfamF2YV9yZXR1cm4sIGV4cGFuZF9qYXZhX05FVywgZXhwYW5kX2phdmFfSU5TVEFOQ0VPRiwKCWV4cGFuZF9qYXZhX0NIRUNLQ0FTVCwgZXhwYW5kX2lpbmMsIGV4cGFuZF9qYXZhX2Jpbm9wLCBub3RlX2xhYmVsLAoJZXhwYW5kX2NvbXBhcmUsIGV4cGFuZF90ZXN0LCBleHBhbmRfY29uZCwgZXhwYW5kX2phdmFfZ290bywKCWV4cGFuZF9qYXZhX2NhbGwsIGV4cGFuZF9qYXZhX3JldCwgcG9wX2FyZ3VtZW50cywgZXhwYW5kX2ludm9rZSwKCWV4cGFuZF9qYXZhX2ZpZWxkX29wLCBqYXZhX3B1c2hfY29uc3RhbnRfZnJvbV9wb29sKTogTGlrZXdpc2UuCgoJKGRlY29kZV9uZXdhcnJheV90eXBlLCBleHBhbmRfaWluYyk6IFVuLUFOU0ktZnkuCgkoYnVpbGRfamF2YV9hcnJheW51bGxfY2hlY2spOiBNYXJrIHBhcmFtZXRlcnMgYG5vZGUnIGFuZCBgdHlwZScKCXdpdGggQVRUUklCVVRFX1VOVVNFRC4KCShub3RlX2xhYmVsKTogTGlrZXdpc2UgZm9yIHBhcmFtZXRlciBgY3VycmVudF9wYycuCgkoZXhwYW5kX2phdmFfY2FsbCwgZXhwYW5kX2phdmFfcmV0KTogSGlkZSB1bnVzZWQgZGVmaW5pdGlvbi4KCgkqIGphdmEtdHJlZS5oIChtYWtlX2NsYXNzLCBidWlsZF9jb25zdGFudHNfY29uc3RydWN0b3IsCglqYXZhX3NldF9leGNlcHRpb25fbGFuZ19jb2RlLCBwb3BfbGFiZWxlZF9ibG9jaywgZW1pdF9oYW5kbGVycywKCWluaXRfb3V0Z29pbmdfY3Bvb2wsIHJlZ2lzdGVyX2NsYXNzLCBlbWl0X3JlZ2lzdGVyX2NsYXNzZXMsCglqYXZhX2xheW91dF9zZWVuX2NsYXNzX21ldGhvZHMpOiBQcm90b3R5cGUuCgkodW5pY29kZV9tYW5nbGluZ19sZW5ndGgpOiBDb25zdC1pZnkuCgkoYXBwZW5kX2dwcF9tYW5nbGVkX25hbWUsIGFwcGVuZF9ncHBfbWFuZ2xlZF9jbGFzc3R5cGUsCgllbWl0X3VuaWNvZGVfbWFuZ2xlZF9uYW1lLCBmb3JtYXRfaW50LCBmb3JtYXRfdWludCwKCWpjZl90cmltX29sZF9pbnB1dCwgamNmX3ByaW50X3V0ZjgsIGpjZl9wcmludF9jaGFyLAoJamNmX3ByaW50X3V0ZjhfcmVwbGFjZSwgb3Blbl9jbGFzcyk6IFByb3RvdHlwZS4KCgkqIGpjZi1kdW1wLmM6IEluY2x1ZGUgImNvbmZpZy5oIiwgbm90IDxjb25maWcuaD4uICBEb24ndCBpbmNsdWRlCgk8c3RkaW8uaD4uICBJbmNsdWRlIHRyZWUuaC9qYXZhLXRyZWUuaC4KCSh1dGY4X2VxdWFsX3N0cmluZyB1c2FnZSwgcHJvY2Vzc19jbGFzcyk6IEFkZCBzdGF0aWMgcHJvdG90eXBlLgoJKG9wZW5fY2xhc3MpOiBEb24ndCBwcm90b3R5cGUgdGhpcyBoZXJlLgoJKHV0ZjhfZXF1YWxfc3RyaW5nKTogTWF0Y2ggYXJndW1lbnRzIHRvIGZvcm1hdCBzcGVjaWZpZXJzLgoJKEhBTkRMRV9DT0RFX0FUVFJJQlVURSwgQlJBTkNILCBKU1IsIFJFVCwgTE9PS1VQX1NXSVRDSCwKCVRBQkxFX1NXSVRDSCwgZGlzYXNzZW1ibGVfbWV0aG9kKTogTGlrZXdpc2UuCgoJKiBqY2YtaW8uYzogSW5jbHVkZSB0cmVlLmgvamF2YS10cmVlLmguCgkob3Blbl9jbGFzcywgZmluZF9jbGFzc2ZpbGUsIGpjZl9wcmludF91dGY4LAoJamNmX3ByaW50X3V0ZjhfcmVwbGFjZSk6IENvbnN0LWlmeS4KCgkqIGpjZi1wYXJzZS5jIChwYXJzZV96aXBfZmlsZV9lbnRyaWVzLCBwcm9jZXNzX3ppcF9kaXIsCglwYXJzZV9jbGFzc19maWxlKTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgkoZmluZF9pbl9jdXJyZW50X3ppcCk6IE1hdGNoIGRlZmluaXRpb24gdG8gZXhpc3Rpbmcgc3RhdGljCglwcm90b3R5cGUuCgoJKiBqY2Ytd3JpdGUuYzogSW5jbHVkZSBqY2YuaCBiZWZvcmUgdHJlZS5oL2phdmEtdHJlZS5oLgoJKGFsbG9jX2NodW5rLCBhcHBlbmRfY2h1bmssIGFwcGVuZF9jaHVua19jb3B5LCBnZW5famNmX2xhYmVsLAoJZmluaXNoX2pjZl9ibG9jaywgZGVmaW5lX2pjZl9sYWJlbCwgZ2V0X2pjZl9sYWJlbF9oZXJlLAoJcHV0X2xpbmVudW1iZXIsIGxvY2FsdmFyX2FsbG9jLCBsb2NhbHZhcl9mcmVlLCBnZXRfYWNjZXNzX2ZsYWdzLAoJd3JpdGVfY2h1bmtzLCBhZGp1c3RfdHlwZWRfb3AsIGdlbmVyYXRlX2J5dGVjb2RlX2NvbmRpdGlvbmFsLAoJZ2VuZXJhdGVfYnl0ZWNvZGVfcmV0dXJuLCBwZXJmb3JtX3JlbG9jYXRpb25zLCBpbml0X2pjZl9zdGF0ZSwKCWluaXRfamNmX21ldGhvZCwgcmVsZWFzZV9qY2Zfc3RhdGUsIGdlbmVyYXRlX2NsYXNzZmlsZSk6CglBZGQgc3RhdGljIHByb3RvdHlwZS4KCShlbWl0X3Vub3ApOiBNYXJrIHBhcmFtZXRlciBgdHlwZScgd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoJKG1ha2VfY2xhc3NfZmlsZV9uYW1lKTogQ29uc3QtaWZ5LgoKCSogamNmLmggKGZpbmRfY2xhc3NmaWxlKTogQ29uc3QtaWZ5LgoKCSoganYtc2Nhbi5jIChyZXNldF9yZXBvcnQpOiBSZW1vdmUgcHJvdG90eXBlLgoKCSoganZnZW5tYWluLmM6IEluY2x1ZGUgamNmLmgvdHJlZS5oL2phdmEtdHJlZS5oLgoJKGVycm9yKTogUmV3cml0ZSB0byBhbGxvdyB2YXJhcmdzLgoKCSogbGFuZy5jIChsYW5nX2Zfb3B0aW9ucyk6IENvbnN0LWlmeS4KCgkqIGxleC5jIChqYXZhX3BhcnNlX2VzY2FwZV9zZXF1ZW5jZSk6IEFkZCBzdGF0aWMgcHJvdG90eXBlLgoJKGphdmFfYWxsb2NhdGVfbmV3X2xpbmUpOiBNYXRjaCBkZWZpbml0aW9uIHRvIGV4aXN0aW5nIHN0YXRpYwoJcHJvdG90eXBlLgoKCSogbWFuZ2xlLmMgSW5jbHVkZSB0cmVlLmgvamF2YS10cmVlLmguCgkodW5pY29kZV9tYW5nbGluZ19sZW5ndGgsIGVtaXRfdW5pY29kZV9tYW5nbGVkX25hbWUsCglhcHBlbmRfZ3BwX21hbmdsZWRfbmFtZSwgYXBwZW5kX2dwcF9tYW5nbGVkX2NsYXNzdHlwZSk6IENvbnN0LWlmeS4KCgkqIHBhcnNlLmggKGpkZXBfY29kZSk6IFJlbW92ZSB0cmFpbGluZyBjb21tYSBpbiBlbnVtZXJhdGlvbi4KCShqYXZhX2dldF9saW5lX2NvbCk6IE1vdmUgcHJvdG90eXBlIG91dHNpZGUgb2YgIUpDMV9MSVRFIHRlc3QuCgkocmVzZXRfcmVwb3J0KTogQWRkIHByb3RvdHlwZS4KCgkqIHZlcmlmeS5jIChwdXNoX3BlbmRpbmdfbGFiZWwsIG1lcmdlX3R5cGVzKTogQWRkIHN0YXRpYwoJcHJvdG90eXBlcy4KCgkqIHppcGZpbGUuaCAob3BlbmRpcl9pbl96aXAsIG9wZW5faW5femlwKTogUHJvdG90eXBlLgoKMTk5OS0wMy0xOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChmaW5kX2FwcGxpY2FibGVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QpOiBFeHRlbmQgdGhlCglzZWFyY2ggdG8gc3VwZXJpbnRlcmZhY2VzIHdoZW4gcmVsZXZhbnQuCgkoc2VhcmNoX2FwcGxpY2FibGVfbWV0aG9kc19saXN0KTogTmV3IGZ1bmN0aW9uLgoKMTk5OS0wMy0xOCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jICh1bm1hbmdsZV9jbGFzc25hbWUpOiBJbXBsZW1lbnRlZCBzdHJpY3RlciB0ZXN0aW5nCgliZWZvcmUgc2V0dGluZyB0aGUgUVVBTElGSUVEX1AgZmxhZyBvbiBhbiBpZGVudGlmaWVyLgoKMTk5OS0wMy0xNiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2xocyk6ICBDYWxsIGZvcmNlX2V2YWx1YXRpb25fb3JkZXIKCWFmdGVyIHBhdGNoX25ld2FycmF5LgoJKHBhdGNoX2Jpbm9wKTogIERvbid0IGNhbGwgZm9sZCBpZiB0aGVyZSBhcmUgc2lkZSBlZmZlY3RzLgoKMTk5OS0wMy0xNiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChqYXZhX3N0YWJpbGl6ZV9yZWZlcmVuY2UpOiBVc2Ugc2F2ZV9leHByIGluc3RlYWQgb2YKCWJ1aWxkaW5nIGEgU0FWRV9FWFBSIG5vZGUuCgkoamF2YV9jb21wbGV0ZV9saHMpOiBQYXRjaCB0aGUgcmVzdWx0aW5nIHN0cmluZyBvZiB0aGUgYCs9JwoJb3BlcmF0b3IgKGlmIG5lY2Vzc2FyeSkgYW5kIGNvbXBsZXRlIHRoZSBSSFMgYWZ0ZXIgaGF2aW5nIGJ1aWx0Cgl0aGUgY2FzdC4KCjE5OTktMDMtMTUgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogY2xhc3MuYyAobWFrZV9jbGFzcyk6ICBEb24ndCBzZXQgQ0xBU1NfUCBoZXJlIChiZWNhdXNlCgl0aGlzIGZ1bmN0aW9uIGlzIGFsc28gY2FsbGVkIGJ5IGJ1aWxkX2phdmFfYXJyYXlfdHlwZSkuCgkocHVzaF9jbGFzcyk6ICBTZXQgQ0xBU1NfUCBoZXJlIGluc3RlYWQuCgkqIHBhcnNlLmggKFRZUEVfQ0xBU1NfUCk6ICBDaGVjayBmb3IgVFlQRV9BUlJBWV9QIGlzIHJlZHVuZGFudC4KCgkqIGpjZi1kdW1wLmMgKHByaW50X2FjY2Vzc19mbGFncyk6ICBUYWtlIGV4dHJhIHBhcmFtZXRlciB0byBpbmRpY2F0ZQoJY29udGV4dC4gIElmIHRoZSBjb250ZXh0IGlzIGNsYXNzLCBwZXJmZXIgInN1cGVyIiBvdmVyICJzeW5jaHJvbml6ZWQiLgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfY2xhc3NmaWxlKTogIERvbid0IGFkZCBBQ0NfU1VQRVIgaWYgaW50ZXJmYWNlLgoKCSogcGFyc2UueSAoY3JlYXRlX2NsYXNzKTogIERvbid0IGNhbGwgcGFyc2VyX2NoZWNrX3N1cGVyIGhlcmU7CglpdCBpcyBub3Qgcm9idXN0LiAgQWx3YXlzIHdhaXQgdW50aWwgbGF0ZXIuCgoJKiBwYXJzZS55IChtZXRob2RfaGVhZGVyKTogIEZvciBpbnRlcmZhY2VzLCBzZXQgQUNDX0FCU1RSQUNUICh0bwoJbWF0Y2ggd2hhdCBKREsgMS4yIGRvZXMpLCBidXQgZG9uJ3Qgc2V0IEFDQ19QVUJMSUMuCgoxOTk5LTAzLTEzICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGxleC5jIChqYXZhX3JlYWRfY2hhcik6ICBVTkdFVCBpbnZhbGlkIG5vbi1pbml0aWFsIHV0ZjggY2hhcmFjdGVyLgoJKiBsZXguaCAoVU5HRVRDKTogIENoYW5nZSBtaXNsZWFkaW5nIG1hY3JvLgoKMTk5OS0wMy0xMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChqYXZhX3N0YWJpbGl6ZV9yZWZlcmVuY2UpOiBSZXR1cm4gTk9ERSB3aGVuIHBhdGNoaW5nIGEKCUNPTVBPVU5EX0VYUFIuCgkoamF2YV9jb21wbGV0ZV9saHMpOiBQdXQgcGFyZW50aGVzaXMgYXJvdW5kIHRydXRoIHZhbHVlcy4KCjE5OTktMDMtMTIgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAobGF5b3V0X2NsYXNzX21ldGhvZCk6IERvbid0IG1ha2UgcnRsIGZvciBpbnRlcmZhY2UKCW1ldGhvZHMuCgkqIHBhcnNlLmggKEdFVF9UWVBFX05BTUUpOiBOZXcgbWFjcm8uCgkqIHBhcnNlLnkgKGlmX3RoZW5fc3RhdGVtZW50Oik6IEZpeGVkIGluZGVudGF0aW9uLgoJKGlmX3RoZW5fZWxzZV9zdGF0ZW1lbnQ6KTogTGlrZXdpc2UuCgkoZm9yX3N0YXRlbWVudDopOiBGaXhlZCBzcGFjaW5nLgoJKHRyeV9zdGF0ZW1lbnQ6KTogRml4ZWQgaW5kZW50YXRpb24uCgkoY3JlYXRlX2ludGVyZmFjZSk6IERvbid0IGZvcmNlIGludGVyZmFjZXMgdG8gYmUgYWJzdHJhY3QuCgkobWV0aG9kX2hlYWRlcik6IEFic3RyYWN0IG1ldGhvZHMgYXJlIE9LIGluIGludGVyZmFjZXMuCgkoZGVjbGFyZV9sb2NhbF92YXJpYWJsZXMpOiBGaXhlZCB0eXBvIGluIGNvbW1lbnQuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kKTogRml4ZWQgaW5kZW50YXRpb24uCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogVXNlIEdFVF9UWVBFX05BTUUgdG8gcmVwb3J0Cglub24gYWNjZXNzaWJsZSBmaWVsZHMuCgkoamF2YV9zdGFiaWxpemVfcmVmZXJlbmNlKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfY29tcGxldGVfbGhzKTogRml4ZWQgaW5kZW50YXRpb24uIFVzZQoJamF2YV9zdGFiaWxpemVfcmVmZXJlbmNlIGluIGNvbXBvdW5kIGFzc2lnbm1lbnQuIEluc2VydCB0aGUKCWNhc3QuIElmIG5vdCBwcm9jZXNzaW5nIGArJyBmaXggc3RyaW5nIGNvbnN0YW50cyBiZWZvcmUgcHJvY2Vzc2luZwoJYmlub3AuCgoxOTk5LTAzLTEyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25zdGFudHMuYyAoZmluZF9jbGFzc19vcl9zdHJpbmdfY29uc3RhbnQpOiBDYXN0IHZhcmlhYmxlIGBqJwoJdG8gYSBgandvcmQnIHdoZW4gY29tcGFyaW5nIGFnYWluc3Qgb25lLgoKCSogZXhwci5jIChqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcwoJYGhhc19maW5hbGx5X3AnIGFuZCBgb3AwJy4KCgkqIGdqYXZhaC5jIChwcmludF9maWVsZF9pbmZvKTogQ2FzdCBhIHZhbHVlIHRvIGppbnQgd2hlbiBjb21wYXJpbmcKCWFnYWluc3Qgb25lLiAgTGlrZXdpc2UgZm9yIGEgamxvbmcuCgkoYWRkX25hbWVsZXQpOiBMaWtld2lzZSBjYXN0IGEgYHNpemVvZicgdG8gYW4gaW50IHdoZW4gY29tcGFyaW5nCglhZ2FpbnN0IGEgc2lnbmVkIHF1YW50aXR5LgoKCSogamNmLWR1bXAuYyAocHJpbnRfc2lnbmF0dXJlX3R5cGUpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBkaWdpdCcuCgkocHJpbnRfc2lnbmF0dXJlKTogRG9uJ3QgbmVlZGxlc3NseSBkZXJlZmVyZW5jZSB2YXJpYWJsZSBgc3RyJwoKCSogamNmLXJlYWRlci5jIChnZXRfYXR0cmlidXRlKTogTWFyayB2YXJpYWJsZXMgYG1heF9zdGFjaycgYW5kCglgbWF4X2xvY2Fscycgd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoJKGpjZl9wYXJzZV9jbGFzcyk6IExpa2V3aXNlIGZvciB2YXJpYWJsZSBgaW5kZXgnLgoKCSogcGFyc2UuaCAocmV2ZXJzZV9qZGVwX2xpc3QpOiBSZW1vdmUgc3RhdGljIHByb3RvdHlwZS4KCgkqIHBhcnNlLnkgKGJ1aWxkX2p1bXBfdG9fZmluYWxseSk6IFJlbW92ZSBwcm90b3R5cGUgYW5kIGRlZmluaXRpb24uCgkocmV2ZXJzZV9qZGVwX2xpc3QpOiBBZGQgc3RhdGljIHByb3RvdHlwZS4KCgkqIHR5cGVjay5jIChjb252ZXJ0X2llZWVfcmVhbF90b19pbnRlZ2VyKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMKCWBhc3NpZ25tZW50JyBhbmQgYGV4cHJfZGVjbCcuCgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiBSZW1vdmUgdW51c2VkIGxhYmVsIGBiYWRfbGRjJy4KCjE5OTktMDMtMTIgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogamNmLXBhdGguYyAoYWRkX2VudHJ5KTogYWxsb2NhIGxlbisyIHJhdGhlciB0aGFuIGxlbisxIGJ5dGVzOwoJd2UnbGwgbmVlZCBhIGRpcmVjdG9yeSBzZXBhcmF0b3IgYW5kIGEgbnVsbCBjaGFyYWN0ZXIuCgoxOTk5LTAzLTEwICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6ICBIYW5kbGUgX19idWlsdGluX2Ztb2QsIGZvciAlLgoKICBUdWUgTWFyICA5IDExOjUyOjA4IDE5OTkgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAobWV0aG9kX2hlYWRlcik6IERvbid0IHNldCBBQ0NfQUJTVFJBQ1QgZmxhZ3Mgb24KCWludGVyZmFjZXMuCgoxOTk5LTAzLTA1ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGxleC5jIChqYXZhX3BhcnNlX2VuZF9jb21tZW50KTogIFRha2UgZXh0cmEgcGFyYW1ldGVyIChuZXh0IGNoYXIpLgoKCSogY2xhc3MuYyAoYnVpbGRfdXRmOF9yZWYpOiAgRml4IHBvc3NpYmxlIG5hbWUgY2xhc3MvYW1iaWd1aXR5LgoKCSogY2xhc3MuYyAobGF5b3V0X2NsYXNzX21ldGhvZCk6ICBBIHN0YXRpYyBtZXRob2QgaW4gYSBiYXNlIGNsYXNzCglpcyBuZXZlciBvdmVycmlkZGVuLCBzbyB0cmVhdCBpdCBsaWtlIGl0IGRvZXNuJ3QgZXhpc3QuCglIb3dldmVyLCBkbyBjb21wbGFpbiBhYm91dCBwcml2YXRlIG5vbi1zdGF0aWMgbWV0aG9kIG92ZXJyaWRpbmcKCXB1YmxpYyBzdGF0aWMgbWV0aG9kLgoKCSogcGFyc2UueTogIERvbid0IHNldCB1bnVzZWQgSU5JVElBTElaRURfUCBmbGFnLgoJKiBqYXZhLXRyZWUuaCAoSU5JVElBTElaRURfUCk6ICBSZW1vdmVkIG5vLWxvbmdlciBuZWVkZWQgZmxhZy4KCgkqIHBhcnNlLnkgKGZpbmRfZXhwcl93aXRoX3dmbCk6ICBPcHRpbWl6ZSB0YWlsLWNhbGxzLgoJKGJ1aWxkX2FycmF5X2Zyb21fbmFtZSk6ICBSZS1vcmRlciAmaW5kZXhbc3RyaW5nXSB0byAmc3RyaW5nW2luZGV4XS4KCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfbGhzKTogIERvbid0IGNhbGwgcGF0Y2hfYXNzaWdubWVudCBpZiByaHMgaXMKCWVycm9yX21hcmsgKGl0IG1pZ2h0IGNhdGNoIG1vcmUgZXJyb3JzLCBidXQgaXQgaXMgbW9yZSBsaWtlbHkgdG8gbG9zZSkuCgoxOTk5LTAzLTA2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoamNmLXBhcnNlLm8pOiBEZXBlbmQgb24gJChQQVJTRV9IKS4KCShwYXJzZS1zY2FuLm8pOiBEZXBlbmQgb24gdG9wbGV2LmguCgoJKiBjbGFzcy5jIChtYWtlX21ldGhvZF92YWx1ZSk6IEFkZCBwcm90b3R5cGUuICBNYWtlIGl0IHN0YXRpYy4KCVJlbW92ZSB1bnVzZWQgc2Vjb25kIGFyZ3VtZW50LCBjYWxsZXIgY2hhbmdlZC4KCgkqIGV4cHIuYyAoamF2YV9sYW5nX2V4cGFuZF9leHByKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZQoJYHJldHVybl9sYWJlbCcuCgoJKiBqYXZhLXRyZWUuaDogRG9uJ3QgcHJvdG90eXBlIGZpbmRfaW5fY3VycmVudF96aXAuCglBZGQgcHJvdG90eXBlcyBmb3IgdmVyaWZ5X2NvbnN0YW50X3Bvb2wsIHN0YXJ0X2phdmFfbWV0aG9kLAoJZW5kX2phdmFfbWV0aG9kLCBnaXZlX25hbWVfdG9fbG9jYWxzLCBleHBhbmRfYnl0ZV9jb2RlLAoJb3Blbl9pbl96aXAsIHNldF9jb25zdGFudF92YWx1ZSwgZmluZF9jb25zdGFudDEsIGZpbmRfY29uc3RhbnQyLAoJZmluZF91dGY4X2NvbnN0YW50LCBmaW5kX3N0cmluZ19jb25zdGFudCwgZmluZF9jbGFzc19jb25zdGFudCwKCWZpbmRfZmllbGRyZWZfaW5kZXgsIGZpbmRfbWV0aG9kcmVmX2luZGV4LCB3cml0ZV9jb25zdGFudF9wb29sLAoJY291bnRfY29uc3RhbnRfcG9vbF9ieXRlcyBhbmQgZW5jb2RlX25ld2FycmF5X3R5cGUuCgoJKiBqY2YtZHVtcC5jOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBMT05HX3RlbXAnLgoKCSogamNmLXBhcnNlLmM6IEluY2x1ZGUgcGFyc2UuaC4KCShqY2ZfcGFyc2Vfc291cmNlKTogUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXIsIGFsbCBjYWxsZXJzIGNoYW5nZWQuCgkoamNmX2ZpZ3VyZV9maWxlX3R5cGUpOiBBZGQgc3RhdGljIHByb3RvdHlwZS4KCShmaW5kX2luX2N1cnJlbnRfemlwKTogTGlrZXdpc2UuICBBbHNvIHJlbW92ZSB1bnVzZWQgcGFyYW1ldGVyLAoJYWxsIGNhbGxlcnMgY2hhbmdlZC4KCShyZWFkX2NsYXNzKTogSW5pdGlhbGl6ZSB2YXJpYWJsZSBgc2F2ZWRfcG9zJy4KCgkqIGpjZi1yZWFkZXIuYyAoamNmX3BhcnNlX3ByZWFtYmxlKTogTWFyayB2YXJpYWJsZXMKCWBtaW5vcl92ZXJzaW9uJyBhbmQgYG1ham9yX3ZlcnNpb24nIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCgkqIGxleC5jIChqYXZhX2lzX2VvbCk6IFdyYXAgcHJvdG90eXBlIGFuZCBkZWZpbml0aW9uIGluICFKQzFfTElURS4KCShqYXZhX2luaXRfbGV4KTogV3JhcCB2YXJpYWJsZSBgamF2YV9sYW5nX2ltcG9ydGVkJyBpbiAhSkMxX0xJVEUuCgkoamF2YV9wYXJzZV9kb2Nfc2VjdGlvbik6IEluaXRpYWxpemUgdmFyaWFibGUgYHNlZW5fc3RhcicuCgkoamF2YV9sZXgpOiBXcmFwIHZhcmlhYmxlIGBudW1iZXJfYmVnaW5uaW5nJyBpbiAhSkMxX0xJVEUuCgkoamF2YV9sZXhfZXJyb3IpOiBNYXJrIHBhcmFtZXRlcnMgYG1zZycgYW5kIGBmb3J3YXJkJyB3aXRoCglBVFRSSUJVVEVfVU5VU0VELgoJKGphdmFfZ2V0X2xpbmVfY29sKTogTWFyayBwYXJhbWV0ZXJzIGBmaWxlbmFtZScgYW5kIGBsaW5lJyB3aXRoCglBVFRSSUJVVEVfVU5VU0VELgoKCSogcGFyc2Utc2Nhbi55OiBJbmNsdWRlIHRvcGxldi5oLgoJKHl5ZXJyb3IpOiBNYXJrIHBhcmFtZXRlciBgbXNnJyB3aXRoIEFUVFJJQlVURV9VTlVTRUQuCgoJKiBwYXJzZS5oOiB1c2UgYHN0cnVjdCBKQ0YnLCBub3QgcGxhaW4gYEpDRicuCgkoamF2YV9wYXJzZXJfY29udGV4dF9zYXZlX2dsb2JhbCwgamF2YV9leHBhbmRfY2xhc3NlcwoJamF2YV9wYXJzZXJfY29udGV4dF9yZXN0b3JlX2dsb2JhbCwgamF2YV9wYXJzZSk6IEFkZCBwcm90b3R5cGVzLgoKCSogdHlwZWNrLmMgKGNvbnZlcnRfaWVlZV9yZWFsX3RvX2ludGVnZXIpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCglgbm9kZScuCgoxOTk5LTAyLTI0ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAZGVuZWIuY3lnbnVzLmNvbT4KCgkqICBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpOiAgQ09QWU4gdGFrZXMgd29yZCBjb3VudCwgbm90IGJpdCBjb3VudC4KCjE5OTktMDItMjYgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGNvbnZlcnRfaWVlZV9yZWFsX3RvX2ludGVnZXIpOiAgVXNlIHNhdmVfZXhwciBpbnN0ZWFkIG9mCglleHBsaWNpdCBidWlsZF9kZWNsLiAgKEF2b2lkcyBjcmFzaCBpbiByZWxvYWQgd2hlbiBvcHRpbWl6aW5nLikKCjE5OTktMDItMjUgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogZGVjbC5jIChjb21wbGV0ZV9zdGFydF9qYXZhX21ldGhvZCk6ICBIYW5kbGUgc3luY2hyb25pemVkIG1ldGhvZAoJZXZlbiB3aGVuIGNvbXBpbGluZyBmcm9tIGJ5dGVjb2RlLgoKMTk5OS0wMi0yNiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKGFkZF9jbGFzc19kZWNsKTogT25seSBnZW5lcmF0ZSBgI2luY2x1ZGUnIGlmIG91dGVyCgljbGFzcyBpcyBub3QgdGhlIG5hbWUgb2YgdGhlIGNsYXNzIHdlIGFyZSBwcm9jZXNzaW5nLiAgQ29ycmVjdGx5CglhcHBlbmQgYC5oJyBpbiAjaW5jbHVkZS4KCShwcm9jZXNzX2ZpbGUpOiBDbGVhbiB1cCBuZXdsaW5lcyBhcm91bmQgZ2VuZXJhdGVkIGAjaW5jbHVkZSdzLgoJKGRlY29kZV9zaWduYXR1cmVfcGllY2UpOiBDb3JyZWN0bHkgaGFuZGxlIGlubmVyIGNsYXNzZXMuCgkoc3RydWN0IGluY2x1ZGUpOiBOZXcgc3RydWN0dXJlLgoJKGFsbF9pbmNsdWRlcyk6IE5ldyBnbG9iYWwuCgkocHJpbnRfaW5jbHVkZSk6IE5ldyBmdW5jdGlvbi4KCShhZGRfY2xhc3NfZGVjbCk6IFVzZSBpdC4KCShwcm9jZXNzX2ZpbGUpOiBMaWtld2lzZS4KCShhZGRfY2xhc3NfZGVjbCk6IEdlbmVyYXRlIGluY2x1ZGUgZm9yIGphdmEtYXJyYXkuaCBpZiBhcnJheQoJc2Vlbi4KCShwcm9jZXNzX2ZpbGUpOiBEb24ndCBnZW5lcmF0ZSBqYXZhLWFycmF5LmggaW5jbHVkZS4KCgkqIGdqYXZhaC5jIChhZGRfbmFtZWxldCk6IENoZWNrIGZvciBzdGFuZGFyZCBwYWNrYWdlIG5hbWVzIGhlcmUuCgkoYWRkX2NsYXNzX2RlY2wpOiBEb24ndCBjaGVjayBmb3Igc3RhbmRhcmQgcGFja2FnZSBuYW1lcyBoZXJlLgoKMTk5OS0wMi0yNSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogcGFyc2UueSAocmVhZF9pbXBvcnRfZGlyKTogVXNlIGB8PScsIG5vdCBgKz0nLCB0byBzZXQgYGZvdW5kJy4KCVdoZW4gcmVhZGluZyBhIHppcCBmaWxlLCBvbmx5IHVzZSBzdHJuY21wIGlmIGJvdGggc3RyaW5ncyBhcmUKCWJpZ2dlciB0aGFuIHRoZSBidWZmZXIgbGVuZ3RoLiAgSW5pdGlhbGl6ZSBgaycgd2hlbiBsb29waW5nCgl0aHJvdWdoIHppcCBmaWxlLgoKMTk5OS0wMi0yNCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKHN0cnVjdCBuYW1lbGV0KTogTmV3IHN0cnVjdHVyZS4KCShhZGRfbmFtZWxldCk6IE5ldyBmdW5jdGlvbi4KCShwcmludF9uYW1lbGV0KTogTmV3IGZ1bmN0aW9uLgoJKHByaW50X2NsYXNzX2RlY2xzKTogVXNlIGFkZF9uYW1lbGV0IGFuZCBwcmludF9uYW1lbGV0IHRvIGdlbmVyYXRlCgluYW1lc3BhY2VzIGFuZCBub3QgY2xhc3Nlcy4KCShtZXRob2RfcHJpbnRlZCk6IE5ldyBnbG9iYWwuCgkoSEFORExFX0VORF9NRVRIT0QpOiBFeGFtaW5lIG1ldGhvZF9wcmludGVkLgoJKHByaW50X21ldGhvZF9pbmZvKTogU2V0IG1ldGhvZF9wcmludGVkIHdoZW4gcmVxdWlyZWQuICBQcmludAoJZXJyb3IgaWYgZnVuY3Rpb24gdG8gYmUgaWdub3JlZCBpcyBtYXJrZWQgdmlydHVhbC4gIEhhbmRsZSAkZmluaXQkCgltZXRob2QuCgkoTUVUSE9EX0lTX0ZJTkFMKTogTmV3IG1hY3JvLgoJKHByaW50X2ZpZWxkX2luZm8pOiBVc2UgaXQuCgkoSEFORExFX01FVEhPRCk6IENsZWFyIG1ldGhvZF9wcmludGVkLgoJKG1ldGhvZF9wYXNzKTogTmV3IGdsb2JhbC4KCShIQU5ETEVfRU5EX0ZJRUxEKTogQ2FsbCBhZGRfY2xhc3NfZGVjbCBvbiB0aGUgZmlyc3QgcGFzcy4KCShwcm9jZXNzX2ZpbGUpOiBEbyB0d28gcGFzc2VzIG92ZXIgYm90aCBmaWVsZHMgYW5kIG1ldGhvZHMuCgkoSEFORExFX01FVEhPRCk6IEV4YW1pbmUgbWV0aG9kX3Bhc3MuCgkocm9vdCk6IE5ldyBnbG9iYWwuCgkoYWRkX2NsYXNzX2RlY2wpOiBOZXcgZnVuY3Rpb24uCgkocHJpbnRfY2xhc3NfZGVjbHMpOiBEb24ndCBzY2FuIG92ZXIgZW50aXJlIGNvbnN0YW50IHBvb2wuCgoxOTk5LTAyLTIzICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBqdnNwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBSZWNvZ25pemUgLWZzeW50YXgtb25seSBhbmQKCWRpc2FibGUgbGlua2luZyBpbiB0aGF0IGNhc2UuCgoxOTk5LTAyLTIwICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBqY2YuaCAoVVRGOF9HRVQpOiBNYXNrIGZpcnN0IGJ5dGUgb2YgMy1ieXRlIGVuY29kaW5nIHdpdGggMHgwZiwKCW5vdCAweDFmLgoKMTk5OS0wMi0yMSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGJ1aWxkX3Jlc3VsdF9kZWNsKSwgamF2YS10cmVlLmg6ICBOZXcgbWV0aG9kLgoJKGNvbXBsZXRlX3N0YXJ0X2phdmFfbWV0aG9kKTogIEhhbmRsZSBzeW5jaHJvbml6ZWQgbWV0aG9kcy4KCURvbid0IGJ1aWxkIERFQ0xfUkVTVUxUIGhlcmUuICAoT3JkZXJpbmcgZGVwZW5kZW5jeSBwcm9ibGVtLikKCShzdGFydF9qYXZhX21ldGhvZCk6ICBDYWxsIGJ1aWxkX3Jlc3VsdF9kZWNsIGhlcmUgaW5zdGVhZCAgLi4uCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZCk6ICAuLi4gYW5kIGhlcmUuCgkoZXhwYW5kX3N0YXJ0X2phdmFfbWV0aG9kKTogRG9uJ3QgY2FsbCBjb21wbGV0ZV9zdGFydF9qYXZhX21ldGhvZCBoZXJlLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZCk6ICBDYWxsIGl0IGhlcmUgaW5zdGVhZC4KCSogcGFyc2UuaCAoQlVJTERfTU9OSVRPUl9FTlRFUiwgQlVJTERfTU9OSVRPUl9FWElUKTogIE1vdmVkIHRvIC4uCgkqIGphdmEtdHJlZS5oOiAgLi4uIGhlcmUuCgoJKiBleHByLmMgKGZvcmNlX2V2YWx1YXRpb25fb3JkZXIpOiAgRml4IHR5cG8sIGRvbid0IGhhbmRsZSBBUlJBWV9SRUYuCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfbGhzKTogIERvbid0IGNhbGwgZm9yY2VfZXZhbHVhdGlvbl9vcmRlcgoJZm9yIEFSUkFZX1JFRiAtIGl0IGRvZXNuJ3Qgd29yayB3aGVuIGFycmF5IGJvdW5kcyBhcmUgY2hlY2tlZC4KCShwYXRjaF9hcnJheV9yZWYpOiAgSGFuZGxlIGl0IGhlcmUgaW5zdGVhZC4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9jbGFzc2ZpbGUpOiAgRW1pdCAiRXhjZXB0aW9ucyIgYXR0cmlidXRlLgoKMTk5OS0wMi0xOSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJRm9yY2UgbGVmdC10by1yaWdodCBldmFsdWF0aW9uIG9mIGJpbmFyeSBvcGVyYXRpb25zIGV0Yy4KCSogZXhwci5jIChmb3JjZV9ldmFsdWF0aW9uX29yZGVyKSwgamF2YS10cmVlLmg6ICBOZXcgZnVuY3Rpb24uCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfbGhzKTogIFBhc3MgYmluYXJ5IG9wZXJhdGlvbnMsIHByb2NlZHVyZQoJY2FsbHMsIGFuZCBBUlJBWV9SRUZzIHRvIGZvcmNlX2V2YWx1YXRpb25fb3JkZXIuCgkodmFyaW91cyk6ICBTZXQgVFJFRV9TSURFX0VGRkVDVFMgbW9yZSBjYXJlZnVsbHkuCgoJVG9sZXJhdGUgcmFuZG9tIChub24tVVRGOCkgZW5jb2RpbmcgaW4gY29tbWVudHMgd2l0aG91dCBjb21wbGFpbmluZy4KCSogbGV4LmMgKGphdmFfcmVhZF9jaGFyKTogIFJldHVybiAweEZGRkUgaWYgYmFkIFVURjggZW5jb2RpbmcuCgkoamF2YV9pc19lb2wpOiAgSGFuZGxlICdccicgZm9sbG93ZWQgYnkgJ1xuJyBpbnN0ZWFkIG9mIHZpY2UgdmVyc2EuCgoJKiBwYXJzZS55IChyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiAgSGFuZGxlIGVycm9yX21hcmsuCgkoamF2YV9jb21wbGV0ZV9ub2RlIGNhc2UgRVhQUl9XSVRIX0ZJTEVfTE9DQVRJT04pOiAgTGlrZXdpc2UuCgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2xocyk6ICBJZ25vcmUgYW4gZW1wdHkgc3RhdGVtZW50IGluIGEKCUNPTVBPVU5EX0VYUFIuICBEb24ndCBjb21wbGFpbiBhYm91dCBlbXB0eSBzdGF0ZW1lbnQgYWZ0ZXIgcmV0dXJuLgoKMTk5OS0wMi0xOSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChvYnRhaW5faW5jb21wbGV0ZV90eXBlKTogIERvbid0IHdyYXAgdW5rbm93biB0eXBlcwoJaW4gVFJFRV9MSVNUIC0ganVzdCBjaGFpbiB0aGUgUE9JTlRFUl9UWVBFcyB0b2dldGhlci4KCShyZXNvbHZlX2NsYXNzKTogIElmIHR5cGUgYWxyZWFkeSByZXNvbHZlZCwgcmV0dXJuIGRlY2wuCglBZnRlciByZXNvbHZpbmcsIHVwZGF0ZSBUUkVFX1RZUEUoY2xhc3NfdHlwZSksIGFuZCBuYW1lIChpZiBhcnJheSkuCgkqIHBhcnNlLmggKGRvX3Jlc29sdmVfY2xhc3MpLCBwYXJzZS55OiAgTWFrZSBub24tc3RhdGljLgoJKiBjbGFzcy5jIChtYXliZV9sYXlvdXRfc3VwZXJfY2xhc3MpOiAgVGFrZSB0aGlzX2NsYXNzIGFyZ3VtZW50LgoJRG8gZG9fcmVzb2x2ZV9jbGFzcyBpZiBuZWNlc3NhcnkuCgkobGF5b3V0X2NsYXNzLCBsYXlvdXRfY2xhc3NfbWV0aG9kcyk6IEFkanVzdCBjYWxscyBhcHByb3ByaWF0ZWx5LgoJKiBwYXJzZS5oIChKREVQX1RPX1JFU09MVkUsIEpERVBfUkVTT0xWRURfREVDTCwgSkRFUF9SRVNPTFZFRCwKCUpERVBfUkVTT0xWRURfUCk6ICBSZWRlZmluZWQgZm9yIG5ldyBUUkVFX0xJU1QtbGVzcyBjb252ZW50aW9uLgoJKiB0eXBlY2suYyAoYnVpbGRfamF2YV9hcnJheV90eXBlKTogIERvbid0IGNhbGwgbGF5b3V0X2NsYXNzLgoKMTk5OS0wMi0xNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChjaGVja19wa2dfY2xhc3NfYWNjZXNzKTogQWxsb3cgcHJpdmF0ZSBjbGFzcyBhY2Nlc3MKCXdpdGhpbiB0aGUgc2FtZSBwYWNrYWdlLgoJKHN0cmlwX291dF9zdGF0aWNfZmllbGRfYWNjZXNzX2RlY2wpOiBOZXcgZnVuY3Rpb24uCgkocGF0Y2hfdW5hcnlvcCk6IENhbGwgc3RyaXBfb3V0X3N0YXRpY19maWVsZF9hY2Nlc3NfZGVjbCBvbiArKy8tLQoJb3BlcmF0b3IgYXJndW1lbnQgYmVmb3JlIHRlc3RpbmcgaXRzIG5hdHVyZS4KCjE5OTktMDItMDMgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogamF2YS10cmVlLmRlZiAoRklOQUxMWV9FWFBSKTogIFJlbW92ZWQuICAoTm93IHVzZXMgVFJZX0ZJTkFMTFlfRVhQUi4pCgkoVFJZX0VYUFIpOiAgU2ltcGxpZnkgLSBpdCBubyBsb25nZXIgaGFzIGEgZmluYWxseSBjbGF1c2UuCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6ICBIYW5kbGUgVFJZX0ZJTkFMTFlfRVhQUi4KCVNpbXBsZXIgaGFuZGxpbmcgb2YgVFJZX0VYUFIsIHdoaWNoIG5vIGxvbmdlciBoYXMgYSBmaW5hbGx5IGNsYXVzZS4KCSogZXhwci5jIChqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiAgTGlrZXdpc2UuCgkqIGphdmEtdHJlZS5oIChDQVRDSF9FWFBSX0dFVF9FWFBSKTogIFJlbW92ZWQgLSBubyBsb25nZXIgbmVlZGVkLgoJKiBwYXJzZS5oIChqYXZhX2dldF9jYXRjaF9ibG9jayksIHBhcnNlLnk6ICBSZW1vdmVkIC0gbm8gbG9uZ2VyIG5lZWRlZC4KCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9saHMpOiAgQWRkIHN1cHBvcnQgZm9yIFRSWV9GSUFOTExZX0VYUFIuCgkoYnVpbGRfdHJ5X3N0YXRlbWVudCk6ICBSZW1vdmUgZmluYWxseSBwYXJhbWV0ZXIgYW5kIGhhbmRsaW5nLgoJKGJ1aWxkX3RyeV9maW5hbGx5X3N0YXRlbWVudCk6ICBOZXcgZnVuY3Rpb24uCgkocGF0Y2hfdHJ5X3N0YXRlbWVudCk6ICAgTm8gbG9uZ2VyIG5lZWQgdG8gc3VwcG9ydCBmaW5hbGx5IGNsYXVzZS4KCSh0cnlfc3RhdGVtZW50KTogIFVwZGF0ZSBncmFtbWFyIGFjdGlvbiBydWxlcy4KCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogIEhhbmRsZSBUUllfRklOQUxMWV9FWFBSLgoJU2ltcGxlciBoYW5kbGluZyBvZiBUUllfRVhQUiwgd2hpY2ggbm8gbG9uZ2VyIGhhcyBhIGZpbmFsbHkgY2xhdXNlLgoKMTk5OC0xMS0yNiAgQW5kcmV3IEhhbGV5ICA8YXBoQHZpYWdyYS5jeWdudXMuY28udWs+CgoJKiBqY2YtcGFyc2UuYyAoZ2V0X2NvbnN0YW50KTogQWRkIGJyYWNlcyBhcm91bmQgY29tcHV0YXRpb24gb2YgJ2QnCgl3aGVuIFJFQUxfQVJJVEhNRVRJQyBpcyBub3QgZGVmaW5lZC4gIFtPY3QgMjYgZml4IGdvdCBvdmVyd3JpdHRlbiAtUEJdCgoxOTk5LTAyLTE3ICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3V0ZjhfcmVmKTogQmFjayBvdXQgYnJva2VuIHBhdGNoIHdoaWNoIHdhcwoJaW50ZW5kZWQgdG8gdG8gb3V0cHV0IHNpZ25hdHVyZXMgdXNpbmcgJy4nIGFzIGEgc2VwYXJhdG9yLgoKCSogY2xhc3MuYyAobWFrZV9jbGFzc19kYXRhKTogT3V0cHV0IHNpZ25hdHVyZXMgdXNpbmcgJy4nIGFzIGEKCXNlcGFyYXRvciwgcmF0aGVyIHRoYW4gJy8nLgoJKG1hbmdsZWRfY2xhc3NuYW1lKTogTGlrZXdpc2UuCgkobWFrZV9maWVsZF92YWx1ZSk6IExpa2V3aXNlLgoJKG1ha2VfbWV0aG9kX3ZhbHVlKTogTGlrZXdpc2UuCgkqIGNvbnN0YW50cy5jIChhbGxvY19jbGFzc19jb25zdGFudCk6IExpa2V3aXNlLgoJKiBleHByLmMgKGJ1aWxkX2ludm9rZWludGVyZmFjZSk6IExpa2V3aXNlLgoKMTk5OS0wMi0xMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS55ICh2YWxpZF9idWlsdGluX2Fzc2lnbmNvbnZfaWRlbnRpdHlfd2lkZW5pbmdfcCk6IEdvdCByaWQKCW9mIGFuIGFuY2llbnQgd29ya2Fyb3VuZC4KCjE5OTktMDItMTAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGp2c3BlYy5jICh4bWFsbG9jKTogS2lsbCB0aGUgcHJvdG90eXBlLiAgSXQgZG9lcyBub3QgYmVsb25nCgloZXJlIGFueW1vcmUuCgoxOTk5LTAyLTEwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGxleC5jICh5eWxleCk6IEVuY29kZSBcMCBhcyBVVEY4LgoKMTk5OS0wMi0xMCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSoganZzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogVXNlIGxpYmdjaiwgbm90IGxpYmphdmEuCgkqIE1ha2VmaWxlLmluIChqY2YtcGF0aC5vKTogRGVmaW5lIExJQkdDSl9aSVBfRklMRS4KCShsaWJnY2pfemlwKTogUmVuYW1lZC4KCSogamNmLXBhdGguYyAoYWRkX2VudHJ5KTogVXNlIExJQkdDSl9aSVBfRklMRSwgbm90CglMSUJKQVZBX1pJUF9GSUxFLgoJKGpjZl9wYXRoX2luaXQpOiBVc2UgTElCR0NKX1pJUF9GSUxFLgoKCSoganZzcGVjLmMgKFRIUkVBRF9OQU1FKTogUmVuYW1lZCAtbHF0aHJlYWRzIHRvIC1sZ2NqY29vcC4KCShHQ19OQU1FKTogUmVuYW1lZCAtbGdjIHRvIC1sZ2NqZ2MuCgoxOTk5LTAyLTA5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGxleC5jIChqYXZhX2xhbmdfY2xvbmVhYmxlKTogSW5pdGlhbGl6ZS4KCSogcGFyc2UueSAoamF2YV9sYW5nX2Nsb25lYWJsZSk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IFRha2UgQ09OVkVSVF9FWFBSIGludG8gYWNjb3VudCB3aGVuCglkb2luZyBvbmUgbW9yZSBxdWFsaWZpY2F0aW9uIHJvdW5kLgoJKHZhbGlkX3JlZl9hc3NpZ25jb252X2Nhc3RfcCk6IFJlamVjdCBudWxsIHNvdXJjZSBvcgoJZGVzdGluYXRpb24uIEFsbG93IGFuIGFycmF5IHRvIGJlIGNhc3QgaW50byBqYXZhLmxhbmcuQ2xvbmVhYmxlLgoJKHBhdGNoX2Nhc3QpOiBTd2FwcGVkIHR3byBmaXJzdCBhcmd1bWVudHMgdG8gZmlyc3QgY2FsbCB0bwoJdmFsaWRfcmVmX2Fzc2lnbmNvbnZfY2FzdF9wLgoKMTk5OS0wMi0wOCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS5oOiBERUNMX1AgcmVuYW1lZCBKREVDTF9QLgoJKiBwYXJzZS55OiBERUNMX1AgcmVwbGFjZWQgYnkgSkRFQ0xfUC4KCShidWlsZF9hcnJheV9mcm9tX25hbWUpOiBBbHdheXMgdXNlIHBvaW50ZXIncyB0eXBlLgoJKHBhdGNoX2JjX3N0YXRlbWVudCk6IEV4dHJhIGNvZGUgdG8gc2VhcmNoIGNvbnRpbnVlIHRhcmdldCBpbiBhCglmb3IgbG9vcC4gRml4ZWQgY29tbWVudHMuIENvbnRpbnVlIHRhcmdldCBpcyBjdXJyZW50IGxvb3Agd2hlbgoJdW5sYWJlbGVkLgoKMTk5OS0wMi0wNSAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzX2RhdGEpOiBUaGUgc3VwZXJjbGFzcyBvZiBhbiBpbnRlcmZhY2Ugc2hvdWxkCgliZSBudWxsLCBub3QgY2xhc3MgT2JqZWN0LgoKCSogbGV4LmMgKGphdmFfbGV4KTogU2lnbiBleHRlbmQgaGV4IGxpdGVyYWxzLgoKMTk5OS0wMi0wNCAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChidWlsZF91dGY4X3JlZik6IE91dHB1dCBzaWduYXR1cmVzIHVzaW5nICcuJyBhcyBhCglzZXBhcmF0b3IsIHJhdGhlciB0aGFuICcvJy4KCShtYWtlX2NsYXNzX2RhdGEpOiBMaWtld2lzZS4KCjE5OTktMDItMDMgIE1hcmMgRXNwaWUgPE1hcmMuRXNwaWVAbGlhZmEuanVzc2lldS5mcj4KCgkqIE1ha2UtbGFuZy5pbiAoJChHQ0opKGV4ZWV4dCkpOiBSZW1vdmUgY2hvb3NlLXRlbXAubywgcGV4ZWN1dGUubyBhbmQKCW1rc3RlbXAuby4gIEdldCB0aGVtIGZyb20gbGliaWJlcnR5IG5vdy4KCjE5OTktMDItMDIgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGpjZi1pby5jOiBEbyBub3QgaW5jbHVkZSBzeXMvc3RhdC5oIG9yIHN5cy93YWl0LmgKCjE5OTktMDItMDIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGp2c3BlYy5jICh4bWFsbG9jKTogRml4IHRoZSBwcm90b3R5cGUgdG8gbWF0Y2ggdGhlIG9uZSBvYnRhaW5lZAoJZnJvbSBsaWJpYmVydHkuaAoKMTk5OS0wMi0wMiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJT3B0aW1pemU6IGByZXR1cm4gKGEgPyBiIDogYyknIGFzOiBgaWYgKGEpIHJldHVybiBiOyBlbHNlIHJldHVybiBjOycuCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9yZXR1cm4pOiAgTmV3IGZ1bmN0aW9uLgoJKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogIFVzZSBpdCwgZm9yIFJFVFVSTl9FWFBSLgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogIEZvciBSRUFMX0NTVCB0aGF0IGlzIDAgb3IgMSwKCWdlbmVyYXRlIHNwZWNpYWwgW2ZkXWNvbnN0X1swMV0gaW5zdHJ1Y3Rpb25zLgoKCSogamNmLXBhcnNlLmMgKHl5cGFyc2UpOiAgRG9uJ3QgZW1pdF9yZWdpc3Rlcl9jbGFzc2VzIGlmIC1mc3ludGF4LW9ubHkuCgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiAgRG8gSU5WQUxJREFURV9QQyBhZnRlcgoJaGFuZGxpbmcgT1BDT0RFX2xvb2t1cHN3aXRjaCBvciBPUENPREVfdGFibGVzd2l0Y2guCgoxOTk5LTAyLTAxICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uKTogIEhhbmRsZSBjYWxsaW5nIHN0YXRpYyBtZXRob2RzLAoJZXZlbiBpbiB0aGUgZm9ybSBFWFBSLk1FVEhPRChBUkdTKSwgbm90IGp1c3QgVFlQRS5NRVRIT0QoQVJHUykuCgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2xocyk6ICBEb24ndCBjb21wbGFpbiBhYm91dCB1bnJlYWNoYWJsZQoJZXhpdCBjb25kaXRpb24gaW4gYSBkby13aGlsZSBzdGF0ZW1lbnQuCgoxOTk5LTAxLTI5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGxleC5jIChqYXZhX3JlYWRfY2hhcik6IEZpeGVkIHV0ZjggZGVjb2RpbmcuCgkoamF2YV91bmljb2RlXzJfdXRmOCk6IEZpeGVkIHV0ZjggZW5jb2RpbmcgaW4gdGhlIDB4ODAwLTB4ZmZmZgoJcmFuZ2UuCgkqIHBhcnNlLnkgKHZhbGlkX2J1aWx0aW5fYXNzaWduY29udl9pZGVudGl0eV93aWRlbmluZ19wKTogRml4ZWQKCWNvbW1lbnRzLiBMb2NhbCB2YXJpYWJsZSBgYWxsX3ByaW1pdGl2ZScgaXMgZ29uZS4gQnJvYWRlbmVkCglhY2NlcHRhbmNlIG9mIGAwJyB0byBmbG9hdGluZyBwb2ludCB0YXJnZXRzLiBgbG9uZycgY2FuIG5vdyBiZQoJd2lkZW5lZCB0byBgZG91YmxlJyBvciBgZmxvYXQnLgoJKHZhbGlkX21ldGhvZF9pbnZvY2F0aW9uX2NvbnZlcnNpb25fcCk6IEFkZGVkIGxlYWRpbmcKCWNvbW1lbnQuIEZpeGVkIHRhYnVsYXRpb24uCgkoYnVpbGRfc3RyaW5nX2NvbmNhdGVuYXRpb24pOiBPcHRpbWl6ZSBvdXQgbGVmdCBvciByaWdodCBlbXB0eQoJc3RyaW5nIGNvbnN0YW50cy4KCjE5OTktMDEtMjggIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogamNmLXdyaXRlLmMgKGxvY2FsdmFyX2FsbG9jKTogIE9ubHkgZW1pdCBlbnRyeSBmb3IKCUxvY2FsVmFyaWFibGVUYWJsZSBpZiBkZWJ1Z19pbmZvX2xldmVsID4gRElORk9fTEVWRUxfVEVSU0UuCgkoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiAgT25seSBjYWxsIHB1dF9saW5lbnVtYmVyIGlmCglkZWJ1Z19pbmZvX2xldmVsID4gRElORk9fTEVWRUxfTk9ORS4KCSoganZzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogIElmIG5vIC1PKiBvciAtZyogb3B0aW9uCglpcyBzcGVjaWZpZWQsIGFkZCAtZzEgKGZvciBjb21wYXRpYmlsaXR5IHdpaCBqYXZhYykuCgoxOTk5LTAxLTI4ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLnNlPgoKCSogamF2YS9NYWtlZmlsZS5pbjogQWRkIG1pc3NpbmcgZGVwZW5kZW5jaWVzIGZvciBqY2YtZHVtcC5vLAoJZ2phdmFoLm8sIGNoZWNrLWluaXQubywganYtc2Nhbi5vCgoxOTk5LTAyLTAxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoZ2phdmFoLm8pOiBEZXBlbmQgb24gJChDT05GSUdfSCkgYW5kIHN5c3RlbS5oLgoKCSogZ2phdmFoLmM6IEluY2x1ZGUgY29uZmlnLmggYW5kIHN5c3RlbS5oLgoKCSogamF2YW9wLmggKGlubGluZSk6IERvbid0IGRlZmluZSwgaXRzIGhhbmRsZWQgYnkgc3lzdGVtLmguCgkoV09SRF9UT19GTE9BVCwgV09SRFNfVE9fTE9ORywgV09SRFNfVE9fRE9VQkxFKTogQ2hhbmdlIHRoZXNlCglmcm9tIGBpbmxpbmUnIHRvIGBzdGF0aWMgaW5saW5lJy4KCgkqIGpjZi5oIChpbmxpbmUpOiBEb24ndCBkZWZpbmUsIGl0cyBoYW5kbGVkIGJ5IHN5c3RlbS5oLgoKCSogbGV4LmMgKGlubGluZSk6IExpa2V3aXNlLgoKMTk5OS0wMS0zMSAgWmFjayBXZWluYmVyZyAgPHphY2tAcmFiaS5jb2x1bWJpYS5lZHU+CgoJKiBsYW5nLXNwZWNzLmg6IE1hcCAtUW4gdG8gLWZuby1pZGVudC4KCjE5OTktMDEtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpOiBGaXggQ0xFQU5VUF9QT0lOVF9FWFBSIHR5cG8uCgoxOTk5LTAxLTI5ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBwYXJzZS5oIChCVUlMRF9BUFBFTkQpOiBJZiBBUkcgaXMgYSBub24tU3RyaW5nIG9iamVjdCByZWZlcmVuY2UsCgl0aGVuIGNhc3QgaXQgdG8gT2JqZWN0IGJlZm9yZSBjYWxsaW5nIGBhcHBlbmQnIG1ldGhvZC4KCjE5OTktMDEtMjggIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogY2hlY2staW5pdC5jIChjaGVja19ib29sMl9pbml0LCBjaGVja19ib29sX2luaXQsIGNoZWNrX2luaXQpOgoJSGFuZGxlIFRSVVRIX0FORF9FWFBSLCBUUlVUSF9PUl9FWFBSLCBhbmQgVFJVVEhfWE9SX0VYUFIuCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6ICBMaWtld2lzZS4KCjE5OTktMDEtMjggIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamNmLXBhcnNlLmMgKGpjZl9wYXJzZSk6IERvbid0IHBhcnNlIHRoZSBzYW1lIGNsYXNzIGZpbGUgdHdpY2UuCgkqIHBhcnNlLnkgKHBhdGNoX2Nhc3QpOiBBbGxvdyBhIGJvb2xlYW4gdG8gYmUgY2FzdCBpbnRvIGEKCWJvb2xlYW4uCgoxOTk5LTAxLTI3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnk6IChjbGFzc19kZWNsYXJhdGlvbjopOiBGaXhlZCBpbmRlbnRhdGlvbi4KCShjbGFzc19tZW1iZXJfZGVjbGFyYXRpb246KTogRXh0cmEgYDsnIGFmdGVyIGZpZWxkIGRlY2xhcmF0aW9uIG5vdwoJYWNjZXB0ZWQuCgkoaW50ZXJmYWNlX2RlY2xhcmF0aW9uOik6IFJlbW92ZWQgZGVidWcgbWVzc2FnZXMgaW4gZXJyb3IgcmVwb3J0cy4KCShwYXRjaF9iaW5vcCk6IE5vZGVzIGNyZWF0ZWQgYW5kIHJldHVybmVkIGluaGVyaXQgdGhlIG9yaWduYWwKCW5vZGUncyBDT01QT1VORF9BU1NJR05fUCBmbGFnIHZhbHVlLgoJKHBhdGNoX2Nhc3QpOiBGaXggY2FzdCBmcm9tIGNoYXIgdG8gZmxvYXRpbmcgcG9pbnQuCgoxOTk5LTAxLTI1ICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jLCBqYXZhLWV4Y2VwdC5oIChleHBhbmRfcmVzdW1lX2FmdGVyX2NhdGNoKTogbmV3CglmdW5jdGlvbi4KCSogZXhwci5jIChqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiBjYWxsIGV4cGFuZF9yZXN1bWVfYWZ0ZXJfY2F0Y2gKCXRvIGJyYW5jaCBiYWNrIHRvIG1haW4gZmxvdyBvZiBjb250cm9sIGFmdGVyIGEgY2F0Y2ggYmxvY2suCgoxOTk5LTAxLTIzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAocGFyc2Uubyk6IERlcGVuZCBvbiAkKENPTkZJR19IKSBhbmQKCSQoc3JjZGlyKS8uLi9zeXN0ZW0uaC4KCShjbGFzcy5vKTogRGVwZW5kIG9uICQoUEFSU0VfSCkgYW5kICQoc3JjZGlyKS8uLi9vdXRwdXQuaC4KCShqY2YtcGFyc2Uubyk6IERlcGVuZCBvbiAkKHNyY2RpcikvLi4vdG9wbGV2LmguCgkoamNmLXdyaXRlLm8pOiBMaWtld2lzZS4KCShqdi1zY2FuLm8pOiBEZXBlbmQgb24gJChDT05GSUdfSCkgYW5kICQoc3JjZGlyKS8uLi9zeXN0ZW0uaC4KCShtYW5nbGUubyk6IERlcGVuZCBvbiAkKHNyY2RpcikvLi4vdG9wbGV2LmguCgkocGFyc2Utc2Nhbi5vKTogRGVwZW5kIG9uICQoQ09ORklHX0gpIGFuZCAkKHNyY2RpcikvLi4vc3lzdGVtLmguCgkoemV4dHJhY3Qubyk6IERlcGVuZCBvbiAkKENPTkZJR19IKSBhbmQgJChzcmNkaXIpLy4uL3N5c3RlbS5oLgoKCSogY2xhc3MuYzogSW5jbHVkZSBvdXRwdXQuaCBhbmQgcGFyc2UuaC4KCShtYW5nbGVkX2NsYXNzbmFtZSk6IEFkZCB0aGUgYGNvbnN0JyBrZXl3b3JkIHRvIGEgY2hhciouCgkoZmluZF9uYW1lZF9tZXRob2QpOiBIaWRlIHVudXNlZCBmdW5jdGlvbiBkZWZpbml0aW9uLgoJKGJ1aWxkX3V0ZjhfcmVmKTogQ2hhbmdlIHR5cGUgb2YgdmFyaWFibGUgYGMnIHRvIHVuc2lnbmVkIGNoYXIuCglVc2UgSVNBTFBIQS9JU0RJR0lUIGluc3RlYWQgb2YgaXNhbHBoYS9pc2RpZ2l0LgoJKGJ1aWxkX2NsYXNzX3JlZik6IEFkZCB0aGUgYGNvbnN0JyBrZXl3b3JkIHRvIGEgY2hhciouCgkobGF5b3V0X2NsYXNzX21ldGhvZCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGJ1ZicuCgoJKiBkZWNsLmMgKGZpbmRfbG9jYWxfdmFyaWFibGUpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBydGwnLgoJKHB1c2hkZWNsKTogTGlrZXdpc2UgZm9yIHZhcmlhYmxlcyBgZGlmZmVyZW50X2JpbmRpbmdfbGV2ZWwnIGFuZAoJYG9sZGdsb2JhbCcuCgkocHVzaGxldmVsKTogTWFyayBwYXJhbWV0ZXIgYHVudXNlZCcgd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoJKG1heWJlX2J1aWxkX2NsZWFudXApOiBMaWtld2lzZSBmb3IgcGFyYW1ldGVyIGBkZWNsJy4KCgkqIGV4Y2VwdC5jIChleHBhbmRfc3RhcnRfamF2YV9oYW5kbGVyKTogTWFyayBwYXJhbWV0ZXIgYHJhbmdlJwoJd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoKCSogZXhwci5jOiBJbmNsdWRlIGV4Y2VwdC5oLgoJKHBvcF90eXBlKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgaScuCgkocG9wX3ZhbHVlKTogTGlrZXdpc2UgZm9yIHZhcmlhYmxlcyBgbl93b3JkcycgYW5kIGBpJy4KCShleHBhbmRfamF2YV9hcnJheWxvYWQpOiBMaWtld2lzZSBmb3IgdmFyaWFibGUgYGNvbnZlcnQnLgoJKGphdmFfbGFuZ19leHBhbmRfZXhwcik6IExpa2V3aXNlIGZvciB2YXJpYWJsZXMgYG9wMCcsIGB0eXBlJywKCWBtb2RlJywgYHVuc2lnbmVkcCcsIGBub2RlJyBhbmQgYGVsZW1lbnRzJy4KCShleHBhbmRfYnl0ZV9jb2RlKTogTGlrZXdpc2UgZm9yIHZhcmlhYmxlcyBgcHJldl9laF9yYW5nZXMnIGFuZAoJYGVoX3JhbmdlcycuCgkocHJvY2Vzc19qdm1faW5zdHJ1Y3Rpb24pOiBBZGQgYSBgY29uc3QnIHF1YWxpZmllciB0byBhIGNoYXIqLgoKCSogZ2phdmFoLmMgKG91dHB1dF9kaXJlY3RvcnkpOiBBZGQgdGhlIGBjb25zdCcga2V5d29yZCB0byBhIGNoYXIqLgoJKHRlbXBfZGlyZWN0b3J5KTogTGlrZXdpc2UuCgkocHJpbnRfY19kZWNsKTogTGlrZXdpc2UuCgkocHJpbnRfbWV0aG9kX2luZm8pOiBMaWtld2lzZS4KCShkZWNvZGVfc2lnbmF0dXJlX3BpZWNlKTogTGlrZXdpc2UuCgkocHJpbnRfbWFuZ2xlZF9jbGFzc25hbWUpOiBMaWtld2lzZS4KCgkqIGphdmEtZXhjZXB0Lmg6IFByb3ZpZGUgcHJvdG90eXBlcyBmb3IgbWF5YmVfc3RhcnRfdHJ5LAoJbWF5YmVfZW5kX3RyeSBhbmQgYWRkX2hhbmRsZXIuCgoJKiBqYXZhLXRyZWUuaCAobWFuZ2xlZF9jbGFzc25hbWUpOiBBZGQgdGhlIGBjb25zdCcga2V5d29yZCB0byBhIGNoYXIqLgoJKHBhcnNlX2Vycm9yX2NvbnRleHQpOiBMaWtld2lzZS4gIEFsc28gYWRkIEFUVFJJQlVURV9QUklOVEZfMi4KCShwdXNoZGVjbF90b3BfbGV2ZWwsIGFsbG9jX2NsYXNzX2NvbnN0YW50LCB1bmljb2RlX21hbmdsaW5nX2xlbmd0aCwKCWluaXRfZXhwcl9wcm9jZXNzaW5nLCBwdXNoX3N1cGVyX2ZpZWxkLCBpbml0X2NsYXNzX3Byb2Nlc3NpbmcsCgljYW5fd2lkZW5fcmVmZXJlbmNlX3RvLCBjbGFzc19kZXB0aCwgdmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMsCgltYXliZV9wdXNobGV2ZWxzLCBtYXliZV9wb3BsZXZlbHMsIHByb2Nlc3NfanZtX2luc3RydWN0aW9uLAoJc2V0X2xvY2FsX3R5cGUsIG1lcmdlX3R5cGVfc3RhdGUsIHB1c2hfdHlwZSwgbG9hZF90eXBlX3N0YXRlLAoJYWRkX2ludGVyZmFjZSwgZmluZF9pbl9jdXJyZW50X3ppcCwgYXBwZW5kX2dwcF9tYW5nbGVkX2NsYXNzdHlwZSwKCWVtaXRfdW5pY29kZV9tYW5nbGVkX25hbWUpOiBBZGQgcHJvdG90eXBlcy4KCgkqIGpjZi1kdW1wLmMgKHByaW50X2NvbnN0YW50KTogQWRkIHRoZSBgY29uc3QnIGtleXdvcmQgdG8gYSBjaGFyKi4KCShwcmludF9zaWduYXR1cmVfdHlwZSk6IFVzZSBJU0RJR0lULCBub3QgaXNkaWdpdC4KCShwcmludF9zaWduYXR1cmUpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBqJy4KCgkqIGpjZi1pby5jIChqY2ZfZmlsYnVmX2Zyb21fc3RkaW8pOiBDYXN0IHRoZSByZXN1bHQgb2YgYGZyZWFkJyB0bwoJaW50IHdoZW4gY29tcGFyaW5nIGFnYWluc3Qgb25lLgoKCSogamNmLXBhcnNlLmM6IEluY2x1ZGUgdG9wbGV2LmguCgoJKiBqY2Ytd3JpdGUuYzogTGlrZXdpc2UuICBEb24ndCBpbmNsdWRlIDxzdHJpbmcuaD4gb3IgPHN5cy9zdGF0Lmg+LgoJKGxvY2FsdmFyX2ZyZWUpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBpJy4KCShnZW5lcmF0ZV9ieXRlY29kZV9jb25kaXRpb25hbCk6IExpa2V3aXNlIGZvciB2YXJpYWJsZSBga2luZCcuCgoJKiBqdi1zY2FuLmM6IEluY2x1ZGUgY29uZmlnLmggYW5kIHN5c3RlbS5oLiAgUmVtb3ZlIHJlZHVuZGFudAoJT1MgaGVhZGVyIGFuZCBnYW5zaWRlY2wuaCBpbmNsdWRlcy4KCSh3YXJuaW5nKTogQWRkIHRoZSBgY29uc3QnIGtleXdvcmQgdG8gYSBjaGFyKi4gIEFsc28gYWRkCglBVFRSSUJVVEVfUFJJTlRGXzEgdG8gdGhlIHByb3RvdHlwZS4gIENoZWNrIEFOU0lfUFJPVE9UWVBFUywgbm90CglfX1NURENfXywgd2hlbiBkZXRlcm1pbmluZyB3aGV0aGVyIHRvIHVzZSBBTlNJLWlzbXMuCgkoZmF0YWwpOiBMaWtld2lzZS4gIEFsc28gYWRkIEFUVFJJQlVURV9VTlVTRUQuCgkoeG1hbGxvYyk6IERvbid0IHJlZHVuZGFudGx5IHByb3RvdHlwZSBoZXJlLgoJKG1haW4pOiBSZW1vdmUgdW51c2VkIHBhcmFtZXRlciBgZW52cCcuICBBbHNvIGZpeCB0aGUgYXJndW1lbnRzCglwYXNzZWQgdG8gZnVuY3Rpb24gYGZhdGFsJyB0byBtYXRjaCB0aGUgZm9ybWF0IHNwZWNpZmllci4KCgkqIGxhbmcuYyAoamF2YV90cmVlX2NvZGVfbmFtZSk6IEFkZCB0aGUgYGNvbnN0JyBrZXl3b3JkIHRvIGEgY2hhciouCgoJKiBtYW5nbGUuYzogSW5jbHVkZSB0b3BsZXYuaC4KCShlbWl0X3VuaWNvZGVfbWFuZ2xlZF9uYW1lKTogRGVjbGFyZSBwYXJhbWV0ZXIgYGxlbicuCgoJKiBwYXJzZS55IChwYXJzZV93YXJuaW5nX2NvbnRleHQpOiBBZGQgdGhlIGBjb25zdCcga2V5d29yZCB0byBhCgljaGFyKi4gIEFsc28gYWRkIEFUVFJJQlVURV9QUklOVEZfMiB0byB0aGUgcHJvdG90eXBlLiAgQ2hlY2sKCWBBTlNJX1BST1RPVFlQRVMnIG5vdCBgX19TVERDX18nIGZvciB3aGV0aGVyIHRvIHVzZSBBTlNJLWlzbXMuCgkoaXNzdWVfd2FybmluZ19lcnJvcl9mcm9tX2NvbnRleHQpOiBBZGQgdGhlIGBjb25zdCcga2V5d29yZCB0bwoJYSBjaGFyKi4KCShwYXJzZV9lcnJvcl9jb250ZXh0KTogTGlrZXdpc2UuICBBbHNvIGNoZWNrIGBBTlNJX1BST1RPVFlQRVMnCglub3QgYF9fU1REQ19fJyBmb3Igd2hldGhlciB0byB1c2UgQU5TSS1pc21zLgoKCSogdHlwZWNrLmMgKGluY29tcGxldGVfdHlwZV9lcnJvcik6IE1hcmsgcGFyYW1ldGVycyBgdmFsdWUnIGFuZAoJYHR5cGUnIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCShwYXJzZV9zaWduYXR1cmVfdHlwZSk6IFVzZSBJU0RJR0lULCBub3QgaXNkaWdpdC4KCgkqIHZlcmlmeS5jIChjaGVja19wZW5kaW5nX2Jsb2NrKTogQWRkIHRoZSBgY29uc3QnIGtleXdvcmQgdG8gYSBjaGFyKi4KCSh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6IExpa2V3aXNlLiAgUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMKCWBmaWVsZF9uYW1lJyBhbmQgYGRlZmF1bHRfdmFsJy4KCgkqIHpleHRyYWN0LmM6IEluY2x1ZGUgY29uZmlnLmggYW5kIHN5c3RlbS5oLiAgUmVtb3ZlIHJlZHVuZGFudAoJT1MgaGVhZGVyIGluY2x1ZGVzLgoKCSogemlwZmlsZS5oOiBQcm90b3R5cGUgYHJlYWRfemlwX2FyY2hpdmUnLgoKMTk5OS0wMS0yMSAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoY29udmVydCk6IEFsbG93IGNvbnZlcnNpb25zIHRvIHZvaWQgdHlwZTogc29tZQoJb3B0aW1pemF0aW9ucyBpbiBnY2MgZG8gdGhpcy4KCjE5OTktMDEtMjEgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGNvbnZlcnRfaWVlZV9yZWFsX3RvX2ludGVnZXIpOiBOZXcgZnVuY3Rpb24uCgkoY29udmVydCk6IFdoZW4gbm90IHVzaW5nIGZhc3QtbWF0aCBhbmQgdXNpbmcgaGFyZHdhcmUgZnAsIGNvbnZlcnQKCWFuIElFRUUgTmFOIHRvIHplcm8uCgoxOTk5LTAxLTE4ICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHBhdGNoX2Jpbm9wKTogRG8gYSB0eXBlIGNvbnZlcnNpb24gZnJvbSBzaWduZWQgdG8KCXVuc2lnbmVkIGFuZCB0aGVuIGJhY2sgdG8gc2lnbmVkIHdoZW4gYSAiPj4+IiBpcyBmb3VuZC4KCjE5OTktMDEtMTcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamF2YS10cmVlLmg6IChjaGVja19mb3JfaW5pdGlhbGl6YXRpb24pOiBBZGRlZCBwcm90b3R5cGUuCgkqIGxleC5jIChqYXZhX3BhcnNlX2RvY19zZWN0aW9uKTogYFxuJyBicmVha3MgdGhlIGAqLycgc3RyaW5nLgoJKiBwYXJzZS55IChkb19yZXNvbHZlX2NsYXNzKTogUmVtb3ZlZCB1bnVzZWQgbG9jYWxzLgoJKHJlYWRfaW1wb3J0X2Rpcik6IExpa2V3aXNlLgoJKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IEFycmF5IGNyZWF0aW9uCglleHByZXNzaW9ucyBhcmUgdmFsaWQgcHJpbWFyeSBleHByZXNzaW9ucy4KCShxdWFsaWZ5X2FtYmlndW91c19uYW1lKTogTGlrZXdpc2UuCgkocGF0Y2hfc3luY2hyb25pemVkX3N0YXRlbWVudCk6IFJlbW92ZWQgdW51c2VkIGxvY2FsLgoKMTk5OS0wMS0xNyAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKHpleHRyYWN0Lm8pOiBBZGQgZGVwZW5kZW5jaWVzLgoKCSogTWFrZWZpbGUuaW46IERvIG5vdCBwdXQgXkxzIGF0IHRoZSBzdGFydCBvZiBhIGxpbmUuCgoxOTk5LTAxLTE1ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAocHJvY2Vzc19qdm1faW5zdHJ1Y3Rpb24pOiAgQ29lcmNlIHRvIGNvcnJlY3QgVGhyb3dhYmxlCglzdWItdHlwZSB0aGUgcmVzdWx0IG9mIHRoZSBjYWxsIHRoYXQgZ2V0cyB0aGUgZXhjZXB0aW9uIHZhbHVlLgoKCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6ICBJZiBmbGFnc19zeW50YXhfb25seSwKCWRvbid0IGNhbGwgZmluaXNoX2NsYXNzLgoKCSogcGFyc2UueSAoamF2YV9jaGVja19yZWd1bGFyX21ldGhvZHMpOiAgSWYgTUVUSE9EX1BSSVZBVEUsCgljbGVhciBmb3VuZCBiZWZvcmUgY29udGludWluZy4KCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6ICBPbiBhbiBhcnJheSBsb2FkLCBhbGxvdwoJYW5kIGhhbmRsZSB0b3Agb2Ygc3RhY2sgdG8gYmUgVFlQRV9OVUxMLgoKCSogZ2phdmFoLmMgKGdlbmVyYXRlX2FjY2Vzcyk6ICBUcmFuc2xhdGUgSmF2YSBwYWNrYWdlIHByaXZhdGUgb3IKCXByb3RlY3RlZCBhY2Nlc3MgdG8gQysrIHB1YmxpYywgYnV0IHdpdGggYSBjb21tZW50LgoKMTk5OS0wMS0xMyAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGdlbmVyYXRlX25hbWUpOiBOYW1lIHByZWZpeCBjaGFuZ2VkIHRvIGF2b2lkIGNsYXNoZXMKCXdpdGggYXNzZW1ibGVyIHRlbXAgbGFiZWxzLgoKCSogcGFyc2UueSAocGF0Y2hfc3luY2hyb25pemVkX3N0YXRlbWVudCk6IFNldCBUUkVFX1NJREVfRUZGRUNUUyBvbgoJTU9ESUZZX0VYUFIuICBXaXRob3V0IHRoaXMsIGNvZGUgZm9yIHRoZSBhc3NpZ25tZW50IG1heSBub3QgYmUKCWdlbmVyYXRlZCBhdCBhbGwgYW5kIHRoZSBzeW5jaHJvbml6ZWQgc3RhdGVtZW50IHdpbGwgcmVhZCBhbgoJdW5pbml0aWFsaXplZCB2YXJpYWJsZS4KCjE5OTktMDEtMTMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAobWF5YmVfbGF5b3V0X3N1cGVyX2NsYXNzKTogRml4ZWQgcmV0dXJuZWQgdmFsdWUuCgkqIGxleC5jOiBBZGRlZCAxOTk5IHRvIHRoZSBjb3B5cmlnaHQuCgkoamF2YV9pbml0X2xleCk6IEluaXRpYWxpemUgamF2YV9sYW5nX2ltcG9ydGVkLgoJKiBsZXguaDogQWRkZWQgMTk5OSB0byB0aGUgY29weXJpZ2h0LgoJKiBwYXJzZS5oOiBBZGRlZCAxOTk5IHRvIHRoZSBjb3B5cmlnaHQuCgkoUkVHSVNURVJfSU1QT1JUKTogRml4ZWQgdHlwbyBpbiB0cmFpbGluZyBtYWNyby4KCShDVVJSRU5UX09TQik6IE5ldyBtYWNyby4KCShzdHJ1Y3QgcGFyc2VyX2N0eHQpOiBOZXcgZmllbGRzIG9zYl9kZXB0aCwgb3NiX2xpbWl0LgoJKiBwYXJzZS55IChqYXZhX2xhbmdfaWQpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLgoJKHR5cGVfaW1wb3J0X29uX2RlbWFuZF9kZWNsYXJhdGlvbik6IERvbid0IGltcG9ydCBqYXZhLmxhbmcuKiB0d2ljZS4KCShhcnJheV9jcmVhdGlvbl9leHByZXNzaW9uOik6IFVzZSBDVVJSRU5UX09TQi4KCShkaW1zOik6IFVzZXMgYSBzdGFjayB0byBrZWVwIHRyYWNrIG9mIGFycmF5IGRpbWVuc2lvbnMuCgkoY2FzdF9leHByZXNzaW9uOik6IFVzZSBDVVJSRU5UX09TQi4KCShmaW5kX2V4cHJfd2l0aF93ZmwpOiBSZXR1cm4gTlVMTCBpZiBub2RlIGZvdW5kIGRvZXNuJ3QgbWVldCB0aGUKCWNvbmRpdGlvbnMuCgkocmVnaXN0ZXJfZmllbGRzKTogRml4ZWQgdHlwb3MgaW4gY29tbWVudC4KCShjaGVja19tZXRob2RfcmVkZWZpbml0aW9uKTogRml4ZWQgY29tbWVudCBpbmRlbnRhdGlvbi4KCShqYXZhX2NoZWNrX3JlZ3VsYXJfbWV0aG9kcyk6IFNldCBzYXZlZCBmb3VuZCB3ZmwgdG8gTlVMTCBhZnRlcgoJaGF2aW5nIHJlaW5zdGFsbGVkIGl0IGluIHRoZSBwcmV2aW91c2x5IGZvdW5kIERFQ0xfTkFNRS4KCjE5OTktMDEtMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBnamF2YWguYyAoamF2YV9mbG9hdF9maW5pdGUpOiBVc2UgYSB1bmlvbiB0byBkbyB0eXBlIHB1bm5pbmcuCgkoamF2YV9kb3VibGVfZmluaXRlKTogTGlrZXdpc2UuCgoxOTk5LTAxLTA5ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGJ1aWxkX25ld19hcnJheV9pbml0KTogIERvbid0IHNldCBFWFBSX1dGTF9MSU5FQ09MCglvbiBDT05TVFJVQ1RPUiAoc2luY2UgdGhhdCB0cmFzaGVzIFRSRUVfQ1NUX1JUTCkuCgkocGF0Y2hfbmV3X2FycmF5X2luaXQpOiAgQ2xlYXIgVFJFRV9DT05TVEFOVCBhbHNvIGlmIElORElSRUNUX1JFRi4KCShyZWdpc3Rlcl9maWVsZHMpOiAgU2V0IFRSRUVfU1RBVElDIG9uIE5FV19BUlJBWV9JTklULCBub3Qgb24KCUNPTlNUUlVDVE9SICh3aGljaCBjYXVzZXMgZXhwYW5kX2V4cHIgdG8gY2FsbCBvdXRwdXRfY29uc3RhbnRfZGVmKS4KCSogZXhwci5jIChqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiAgQ2hlY2sgVFJFRV9TVEFUSUMgb2YgTkVXX0FSUkFZX0lOSVQuCgoxOTk5LTAxLTA4ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGNoZWNrLWluaXQuYyAoY2hlY2tfaW5pdCk6ICBJZiBjb21waWxpbmcgdG8gbmF0aXZlLCB3ZSBkb24ndAoJc2VlIFRIUk9XX0VYUFIuICBJbnN0ZWFkLCBsb29rIGZvciBhIGNhbGwgdG8gdGhyb3dfbm9kZSAoX0p2X1Rocm93KS4KCjE5OTktMDEtMDggIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLXNjYW4ueSAodmFyaWFibGVfZGVjbGFyYXRvcl9pZCk6IFNldCBvciBpbmNyZW1lbnQKCWJyYWNrZXRfY291bnQuCgkoYnJhY2tldF9jb3VudCk6IE5ldyBnbG9iYWwuCgkoZm9ybWFsX3BhcmFtZXRlcik6IEhhbmRsZSBjYXNlIHdoZXJlIGJyYWNrZXQgcGFpcnMgdHJhaWwgdmFyaWFibGUKCWRlY2xhcmF0b3IgaWQuCgoxOTk5LTAxLTA3ICBBbmRyZXcgSGFsZXkgIDxhcGhAdmlhZ3JhLmN5Z251cy5jby51az4KCgkqIGpjZi1wYXJzZS5jICh5eXBhcnNlKTogdmFyaWFibGUgbGVuIGNoYW5nZWQgZnJvbSBhIGNoYXIgdG8gYW4KCWludCB0byBwcmV2ZW50IG92ZXJmbG93LgoKMTk5OS0wMS0wNiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBqYXZhLXRyZWUuaDogIERlY2xhcmUgcmVhZF9jbGFzcy4KCSogamNmLXBhcnNlLmMgKHJlYWRfY2xhc3MpOiAgTmV3IGZ1bmN0aW9uLgoJKGxvYWRfY2xhc3MpOiAgTm93IGp1c3QgY2FsbCByZWFkX2NsYXNzLgoKCSogamF2YS10cmVlLmggKGphdmFfcGFyc2VfYWJvcnRfb25fZXJyb3IpOiAgT25seSByZXR1cm4gaWYgbmV3IGVycm9ycy4KCSogamNmLXBhcnNlLmMgKHBhcnNlX3NvdXJjZV9maWxlKTogIERlY2xhcmUgc2F2ZV9lcnJvcl9jb3VudCwKCXdoaWNoIGlzIG5lZWRlZCBieSBqYXZhX3BhcnNlX2Fib3J0X29uX2Vycm9yIG1hY3JvLAoJKiBwYXJzZS55IChqYXZhX2xheW91dF9jbGFzc2VzLCBqYXZhX2V4cGFuZF9jbGFzc2VzKTogIExpa2V3aXNlLgoKCSogcGFyc2UueSAocmVnaXN0ZXJfZmllbGRzKTogIFNldCBUUkVFX1NUQVRJQyBmbGFnIG9mIE5FV19BUlJBWV9JTklUCgljb25zdHJ1Y3RvciwgaWYgaW5pdGlhbGl6aW5nIGEgc3RhdGljIGZpZWxkLgoJKHBhdGNoX25ld19hcnJheV9pbml0KTogIFNldCBUUkVFX0NPTlNUQU5UIGlmIGl0IGlzLgoJKiBleHByLmMgKGphdmFfbGFuZ19leHBhbmRfZXhwcik6ICBGb3IgYSBzdGF0aWMgYXJyYXkgY29uc3RydWN0b3IKCW9mIHByaW1pdGl2ZSBlbGVtZW50cywgYWxsb2NhdGUgdGhlIGFycmF5IGl0c2VsZiBzdGF0aWNhbGx5LgoJRGlzYWJsZWQgdW50aWwgd2UgY2FuIHNldCB0aGUgdnRhYmxlIGZpZWxkIHN0YXRpY2FsbHkuCgoJKiBjaGVjay1pbml0LmM6ICBOZXcgZmlsZS4gIENoZWNrcyBmb3IgZGVmaW5pdGUgYXNzaWdubWVudC4KCSogTWFrZWZpbGUuaW4gKEpBVkFfT0JKUyk6ICBBZGQgY2hlY2staW5pdC5vLgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiBDYWxsIGNoZWNrX2Zvcl9pbml0aWFsaXphdGlvbi4KCSogcGFyc2UuaCAoQkxPQ0tfRVhQUl9ERUNMUywgQkxPQ0tfRVhQUl9CT0RZKTogIE1vdmVkIHRvIGphdmEtdHJlZS5oLgoKMTk5OS0wMS0wNiAgR3JhaGFtIDxncmFoYW1zQHJjcC5jby51az4KCgkqIHBhcnNlLnkgOiBpbmNsdWRlIHN5c3RlbS5oIGluc3RlYWQgb2YgaW5jbHVkaW5nCglzdGFuZGFyZCBoZWFkZXJzIGRpcmVjdGx5IHdpdGggdGhlIGV4Y2VwdGlvbiBvZiA8ZGlyZW50Lmg+LgoKMTk5OS0wMS0wNiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBsZXguaDogIE1vdmVkIHN0YXRpYyBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgdG8gbGV4LmMsCgl0byBzaHV0IHVwIHNvbWUgLVdhbGwgd2FybmluZ3MuCgkqIGxleC5jOiAgU3RhdGljIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBtb3ZlZCBoZXJlLgoJKiBqY2YtZHVtcC5jOiAgU21hbGwgZml4ZXMgdG8gc2h1dCB1cCAtV2FsbCB3YXJuaW5ncy4KCjE5OTktMDEtMDUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2UtbGFuZy5pbiAoJChHQ0opLm8pOiBEZXBlbmQgb24gcHJlZml4LmguCgoxOTk4LTEyLTIyICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAocHJvY2Vzc19qdm1faW5zdHJ1Y3Rpb24pOiAgRG8gbG9hZF90eXBlX3N0YXRlIGFmdGVyIEpTUi4KCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogIEZpeCBvZmYtYnktb25lIGVycm9yLgoKCSogamNmLXdyaXRlLmMgKENIRUNLX1BVVCk6ICBBZGQgKHZvaWQpIGNhc3QgdG8gYXZvaWQgLVdhbGwgd2FybmluZ3MuCgkobG9jYWx2YXJfYWxsb2MpOiAgQ2hhbmdlIHJldHVybiB0eXBlIHRvIHZvaWQsCgkoZW1pdF91bm9wKTogIFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgc2l6ZS4KCgkqIGpjZi13cml0ZS5jIChzdHJ1Y3QgamNmX2Jsb2NrKTogIEFkZCBuZXcgdW5pb24uCgkoUEVORElOR19DTEVBTlVQX1BDLCBQRU5ESU5HX0VYSVRfUEMsIFVOREVGSU5FRF9QQyk6ICBOZXcgbWFjcm9zLgoJKGNhbGxfY2xlYW51cHMpOiAgTmV3IGZ1bmN0aW9ucy4KCShzdHJ1Y3QgamNmX3BhcnRpYWwpOiAgTmV3IGZpZWxkcyBudW1fZmluYWxpemVycyBhbmQgcmV0dXJuX3ZhbHVlX2RlY2wuCgkoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiAgU3VwcG9ydCBDTEVBTlVQX1BPSU5UX0VYUFIgYW5kCglXSVRIX0NMRUFOVVBfRVhQUi4gIEhhbmRsZSBjbGVhbnVwcyBpbiBSRVRVUk5fRVhQUiBhbmQgRVhJVF9CTE9DS19FWFBSLgoJKiBsYW5nLmMgKGxhbmdfaW5pdCk6ICBDYWxsIHVzaW5nX2VoX2Zvcl9jbGVhbnVwcy4KCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV9saHMpOiAgRm9yIFNZTkNIUk9OSVpFRF9FWFBSLCBkZWZlcgoJY29tcGxldGluZyBvcGVyYW5kcyB0byBwYXRjaF9zeW5jaHJvbml6ZWRfc3RhdGVtZW50LgoJU3VwcG9ydCBDTEVBTlVQX1BPSU5UX0VYUFIsIFdJVEhfQ0xFQU5VUF9FWFBSLgoJKHBhdGNoX3N5bmNocm9uaXplZF9zdGF0ZW1lbnQpOiBSZS13cml0ZSBzdWluZyBDTEVBTlVQX1BPSU5UX0VYUFIgYW5kCglXSVRIX0NMRUFOVVBfRVhQUiBpbnN0ZWFkIG9mIFRSWV9FWFBSLgoKMTk5OC0xMi0yMCAgSm9obiBGLiBDYXJyICA8amZjQG1pdC5lZHU+CgoJKiBNYWtlLWxhbmcuaW46IENvbW1lbnQgb3V0IGNvbnRyb2wtTHM7IHRoZXkgdXBzZXQgc29tZSBtYWtlcy4KCjE5OTgtMTItMTggIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGNoZWNrX2NsYXNzX2ludGVyZmFjZV9jcmVhdGlvbik6IFVzZSBESVJfU0VQQVJBVE9SCgljb25zaXN0ZW50bHkuCgoxOTk4LTEyLTE3ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChESVJfU0VQQVJBVE9SKTogTmV3IGRlZmluZS4KCShjaGVja19jbGFzc19pbnRlcmZhY2VfY3JlYXRpb24pOiBVc2UgaXQuCgoJKiBwYXJzZS1zY2FuLnkgKHJlcG9ydF9tYWluX2RlY2xhcmF0aW9uKTogUmVjb2duaXplCglgamF2YS5sYW5nLlN0cmluZycgaW4gYXJndW1lbnQgdG8gbWFpbi4KCjE5OTgtMTItMTYgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogcGFyc2UueSAoY3JlYXRlX2ludGVyZmFjZSk6ICBSZW1vdmUgYm9ndXMgdGVzdC4KCjE5OTgtMTItMTYgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogamNmLXBhcnNlLmMgKGdldF9jb25zdGFudCk6ICBTZXQgVFJFRV9UWVBFIGZvciBzdHJpbmcgY29uc3RhbnRzLgoJKEhBTkRMRV9DT05TVEFOVFZBTFVFKTogIElmIGZsYWdfZW1pdF9jbGFzc19maWxlcywgY2FsbCBnZXRfY29uc3RhbnQuCgoxOTk4LTEyLTE2ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBwYXJzZS1zY2FuLnkgKHF1YWxpZmllZF9uYW1lKTogVXNlIGNvcnJlY3Qgc3ByaW50ZiBmb3JtYXQuCgoxOTk4LTEyLTE1ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBnamF2YWguYyAocHJpbnRfZmllbGRfaW5mbyk6IENoYW5nZWQgaG93IG1vc3QgbmVnYXRpdmUgbnVtYmVyIGlzCglwcmludGVkLgoKMTk5OC0xMi0xNCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChmb2xkX2NvbnN0YW50X2Zvcl9pbml0KTogIE5ldyBmdW5jdGlvbi4KCShyZXNvbHZlX2V4cHJlc3Npb25fbmFtZSk6ICBEb24ndCByZXBsYWNlIHN0YXRpYyBmaW5hbAoJY29uc3RhbnQtaW5pdGlhbGl6ZWQgZmllbGRzIGJ5IGl0cyB2YWx1ZS4KCShqYXZhX2NvbXBsZXRlX2xocyk6ICBOZXcuICBTYW1lIGFzIGphdmFfY29tcGxldGVfdHJlZSwgZXhjZXB0IGRvZXMKCW5vdCByZXBsYWNlIHN0YXRpYyBmaW5hbCBjb25zdGFudC1pbml0aWFsaXplZCBmaWVsZHMgYnkgdGhlaXIgdmFsdWVzLgoJKHJlZ2lzdGVyX2ZpZWxkcyk6ICBJZiB0aGVyZSBpcyBhbiBpbml0aWFsaXplciwgc2V0IERFQ0xfSU5JVElBTCBhbmQKCU1PRElGWV9FWFBSX0ZST01fSU5JVElBTElaQVRJT05fUC4KCShqYXZhX2NvbXBsZXRlX3RyZWUpOiAgRm9yIE1PRElGWV9FWFBSLCB1c2UgamF2YV9jb21wbGV0ZV9saHMgZm9yIGxocy4KCU9ubHkgY2FsbCBwYXRjaF9pbml0aWFsaXplZF9zdGF0aWNfZmllbGQgaWYKCU1PRElGWV9FWFBSX0ZST01fSU5JVElBTElaQVRJT05fUC4KCShwYXRjaF9pbml0aWFsaXplZF9zdGF0aWNfZmllbGQpOiAgSWYgbm90IHZhbGlkIGNvbnN0YW50LCBjbGVhcgoJREVDTF9JTklUSUFMLgoKCSogcGFyc2UueSAobG9va3VwX2ZpZWxkX3dyYXBwZXIpOiAgRml4IHRoaW5rby4KCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfdHJlZSk6ICBJbiBFWFBSX1dJVEhfRklMRV9MT0NBVElPTiwKCXNldCBhbmQgcmVzdG9yZSBnbG9iYWwgbGluZW5vLgoKMTk5OC0xMi0xNCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKHByaW50X2ZpZWxkX2luZm8pOiBJZiB2YWx1ZSB0byBwcmludCBpcyB0aGUgc21hbGxlc3QKCXZhbHVlIG9mIGl0cyBzaXplLCB0aGVuIHByaW50IGFzIGhleCB0byBhdm9pZCBsYXRlciB3YXJuaW5ncyBmcm9tCglDKysgY29tcGlsZXIuCgoxOTk4LTEyLTE0ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBnamF2YWguYyAoZGVjb21waWxlX21ldGhvZCk6IERlY29tcGlsZSBgcmV0dXJuIG51bGwnLgoJKHByb2Nlc3NfZmlsZSk6IEdlbmVyYXRlIGAjcHJhZ21hIGludGVyZmFjZScuCgkobWV0aG9kX2RlY2xhcmVkKTogTmV3IGdsb2JhbC4KCShwcmludF9tZXRob2RfaW5mbyk6IFNldCBpdC4KCShIQU5ETEVfQ09ERV9BVFRSSUJVVEUpOiBPbmx5IHByaW50IGl0IG1ldGhvZF9kZWNsYXJlZCBzZXQuCgkocHJpbnRfbWV0aG9kX2luZm8pOiBIYW5kbGUgYWJzdHJhY3QgbWV0aG9kcy4KCjE5OTgtMTItMTMgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogcGFyc2UueSAocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiAgSWYgY2xhc3NfZGVjbCBpcyBudWxsCgkoZS5nLiBhbiBhcnJheSB0eXBlKSwgdXNlIG9yaWdpbmFsIHR5cGUuCgoJKiBwYXJzZS55IChjaGVja190aHJvd25fZXhjZXB0aW9ucyk6ICBUZW1wb3JhcnkgaGFjayB0byBzdXBwcmVzcwoJZXJyb3JzIGFib3V0IHVuY2F1Z2h0IGV4Y2VwdGlvbiBmcm9tIGNsb25lIChvZiBhcnJheSwgc3BlY2lmaWNhbGx5KS4KCjE5OTgtMTItMTMgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChkZWNvbXBpbGVfbWV0aG9kKTogSGFuZGxlIGFsbCB0eXBlcyBvZiBgcmV0dXJuJwoJb3Bjb2RlLiAgRGVjb21waWxlIGByZXR1cm4gdGhpcycgYW5kIGByZXR1cm4nLgoJKG1ldGhvZF9hY2Nlc3MpOiBOZXcgZ2xvYmFsLgoJKHByaW50X21ldGhvZF9pbmZvKTogU2V0IGl0LgoJKGRlY29tcGlsZV9tZXRob2QpOiBEb24ndCBkZWNvbXBpbGUgYSBzeW5jaHJvbml6ZWQgbWV0aG9kLgoKMTk5OC0xMi0xMyAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogamNmLXJlYWRlci5jIChqY2ZfcGFyc2Vfb25lX21ldGhvZCk6IFJlY29nbml6ZQoJSEFORExFX0VORF9NRVRIT0QuCgkqIGdqYXZhaC5jIChIQU5ETEVfRU5EX01FVEhPRCk6IE5ldyBtYWNyby4KCShIQU5ETEVfQ09ERV9BVFRSSUJVVEUpOiBOZXcgbWFjcm8uCgkoZGVjb21waWxlX21ldGhvZCk6IE5ldyBmdW5jdGlvbi4KCShwcmludF9tZXRob2RfaW5mbyk6IERvbid0IHByaW50IGA7XG4nIGF0IGVuZCBvZiBmdW5jdGlvbiBkZWNsLgoJSW5jbHVkZSBqYXZhLW9wY29kZXMuaC4KCShkZWNvbXBpbGVkKTogTmV3IGdsb2JhbC4KCjE5OTgtMTItMTIgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfY2xhc3NfcmVmKTogIEhhbmRsZSBQUklNVFlQRS5jbGFzcyBpZgoJZmxhZ19lbWl0X2NsYXNzX2ZpbGVzLgoJKiBleHByLmMgKGV4cGFuZF9qYXZhX2ZpZWxkX29wKTogIERvbid0IG9wdGltaXplIGphdmEubGFuZy5YWFguVFlQRQoJaWYgZmxhZ19lbWl0X2NsYXNzX2ZpbGVzLgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX3RyZWUpOiAgUHJlLWxpbWluYXJ5IHN1cHBvcnQgZm9yCglDT01QT05FTlRfUkVGIC0gb25seSB0byBoYW5kbGUgUFJJTUNMQVNTLlRZUEUuCgoJKiBwYXJzZS55IChwYXRjaF9zeW5jaHJvbml6ZWRfc3RhdGVtZW50KTogICBEb24ndCBjYWxsIG1vbml0b3JleGl0Cgl1bmxlc3MgYmxvY2sgQ0FOX0NPTVBMRVRFX05PUk1BTExZLiAgUHJvcGFnYXRlIHRoYXQgZmxhZyBwcm9wZXJseS4KCgkqIGphdmEtdHJlZS5oIChERUNMX0xPQ0FMX1NUQVRJQ19WQUxVRSk6ICBSZW1vdmVkIC0gbm8gbG9uZ2VyIHVzZWQuCgoJKiB6aXBmaWxlLmggKG9wZW5kaXJfaW5femlwKTogIE5ldyBkZWNsYXJhdGlvbi4KCSogamNmLWlvLmMgKHNhd19qYXZhX3NvdXJjZSk6ICBNb3ZlZCB0byBqY2YtcGFyc2UuYy4KCShvcGVuZGlyX2luX3ppcCk6ICBOZXcgZnVuY3Rpb24sIHVzaW5nIGNvZGUgZnJvbSBvcGVuX2luX3ppcC4KCShvcGVuX2luX3ppcCk6ICBDYWxsIG9wZW5kaXJfaW5femlwLgoJKGZpbmRfY2xhc3MpOiAgUmVtb3ZlIG5vLWxvbmdlci11c2VkIGRvX2NsYXNzX2ZpbGUgcGFyYW1ldGVyLAoJYnV0IGFkZCBzb3VyY2Vfb2sgcGFyYW1ldGVyLiAgQ2hhbmdlIGxvZ2ljIHNvIGlmIHdlIGZpbmQgYSAuamF2YSBmaWxlLAoJd2UgZG9uJ3QgbG9vayBmb3IgLmNsYXNzIGluIGxhdGVyIGNsYXNzcGF0aCBlbXRyaWVzLgoJKiBqY2YtcGFyc2UuYyAobG9hZF9jbGFzcyk6ICBQYXNzIHNhd19qYXZhX3NvdXJjZSB0byBmaW5kX2NsYXNzLgoJKGpjZl9maWd1cmVfZmlsZV90eXBlKTogIE9ubHkgY2FsbCBvcGVuX2luX3ppcCBpZiBjb3JyZWN0IG1hZ2ljIG51bWJlci4KCSogZ2phdmFoLmM6IFVwZGF0ZSBjYWxsIHRvIGZpbmRfY2xhc3MuCgkqIGpjZi1kdW1wLmM6ICBMaWtld2lzZS4KCgkqIGpjZi13cml0ZS5jIChwdXRfbGluZW51bWJlcik6ICBIYW5kbGUgZHVwbGljYXRlIGxpbmUgbnVtYmVycy4KCShnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6ICBGb3IgRVhQUl9XSVRIX0ZJTEVfTE9DQVRJT04sIGRvCglub3RoaW5nIGlmIGJvZHkgaXMgZW1wdHlfc3RtdF9ub2RlLgoJVmFyaW91cyBsaXR0bGUgZml4ZXMgc28gU1AgZ2V0cyBjb3JyZWN0bHkgYWRqdXN0ZWQuCglGb3IgTkVXX0FSUkFZX0lOSVQsIGhhbmRsZSBJR05PUkVfVEFSR0VULgoJRm9yIENBTExfRVhQUiwgdGVzdCBpZiBzdGF0aWMgZmlyc3QuCgkoZ2VuZXJhdGVfY2xhc3NmaWxlKTogIElnbm9yZSBmaWVsZHMgdGhhdCBhcmUgREVDTF9BUlRJRklDSUFMLAoJc3VjaCBhcyB0aGUgb25lcyB3ZSBjcmVhdGUgZm9yIE9iamVjdCBhbmQgQ2xhc3MuCglTZXQgYW5kIHJlc3RvcmUgY3VycmVudF9mdW5jdGlvbl9kZWNsLgoJKiBwYXJzZS55OiAgQ2hlY2svc2V0IElTX0FOX0lNUE9SVF9PTl9ERU1BTkRfUCBpbiByZWFkX2ltcG9ydF9kaXIuCgkobm90ZV9wb3NzaWJsZV9jbGFzc25hbWUpOiAgTmV3IGZ1bmN0aW9uLgoJKHJlYWRfaW1wb3J0X2VudHJ5KTogIFJlbW92ZWQuICBNZXJnZWQgd2l0aCByZWFkX2ltcG9ydF9kaXIuCgkocmVhZF9pbXBvcnRfZGlyKTogIERvbid0IGNhbGwgZmluZF9jbGFzcyAtIHRoYXQgb25seSBnaXZlcyB1cwoJdGhlIGZpcnN0IGNsYXNzcGF0aCBlbnRyeSBoYXZpbmcgdGhlIG5lZWRlZCBwYWNrYWdlLgoJVXNlIHRoZSBzdHJ1Y3QgYnVmZmVyIGRhdGEgc3RydWN0dXJlIGZyb20gYnVmZmVyLmguCgkocmVhZF9pbXBvcnRfZGlyLCBmaW5kX2luX2ltcG9ydHNfb25fZGVtYW5kKTogIFRoZSByZW1lbWJlcmVkCgljbGFzcyBuYW1lcyBub3cgdXNlICcuJyAobm90ICcvJykgYXMgcGFja2FnZSBzZXBhcmF0b3IuCgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzKTogIENhbGwgd3JpdGVfY2xhc3NmaWxlCgloZXJlLCBhbmQgbm90IGluIGphdmFfZXhwYW5kX2NsYXNzZXMgKHdoaWNoIG9ubHkgZ2V0cyBmaXJzdCBjbGFzcykuCgoxOTk4LTEyLTEyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKDx0eXBlX2RlY2xhcmF0aW9uPik6ICBEbyBtYXliZV9nZW5lcmF0ZV9jbGluaXQgbGFzdC4KCShyZWdpc3Rlcl9maWVsZHMpOiAgSWYgYSBzdGF0aWMgZmllbGRzIGhhcyBhbiBpbml0aWFsaXplciwganVzdAoJY2hhaW4gaXQgb24gY3R4cC0+c3RhdGljX2luaXRpYWxpemVkLCBhbmQgaGFuZGxlIGxhdGVyLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZHMpOiAgRm9yY2UgPGNsaW5pdD4gZmlyc3QuCgkocmVzb2x2ZV9leHByZXNzaW9uX25hbWUsIHJlc29sdmVfZmllbGRfYWNjZXNzKTogIEp1c3QgZ2V0IERFQ0xfSU5JVElBTAoJLSBpdCdzIGFscmVhZHkgYmVlbiBjb21wbGV0ZWQuCgkocGF0Y2hfaW5pdGlhbGl6ZWRfc3RhdGljX2ZpZWxkKTogIE5ldyBmdW5jdGlvbi4KCShqYXZhX2NvbXBsZXRlX2ZpZWxkKTogIENhbGwgaXQuCgoxOTk4LTEyLTEyICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoZW5jb2RlX25ld2FycmF5X3R5cGUsIGJ1aWxkX25ld19hcnJheSk6ICBOZXcgZnVuY3Rpb25zLgoJKiBqYXZhLXRyZWUuaDogIERlY2xhcmUgYnVpbGRfbmV3X2FycmF5LgoJKiBqY2Ytd3JpdGUuYyAocGF0Y2hfbmV3YXJyYXkpOiAgVXNlIGJ1aWxkX25ld19hcnJheS4KCgkqIGV4cHIuYyAoamF2YV9sYW5nX2V4cGFuZF9leHApOiAgU3VwcG9ydCBORVdfQVJSQVlfSU5JVC4KCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogIFN1cHBvcnQgTkVXX0FSUkFZX0lOSVQuCgoJKiBwYXJzZS55IChwYXRjaF9uZXdfYXJyYXlfaW5pdCk6ICBSZS1vcmdhbml6ZS4KCU5vdyBpcyBwYXNzZWQgdGhlIGFjdHVhbCBhcnJheSAocG9pbnRlcikgdHlwZSBvZiB0aGUgdmFsdWUuCglTZXQgdGhlIHR5cGUgb2YgdGhlIENPTlNUUlVDVE9SIHRvIGJlIGFuIEFSUkFZX1RZUEUuCgkocGF0Y2hfYXJyYXlfY29uc3RydWN0b3IpOiAgUmVtb3ZlZCAtIG1lcmdlZCBpbnRvIHBhdGNoX25ld19hcnJheV9pbml0LgoJKGphdmFfY29tcGxldGVfdHJlZSk6ICBVcGRhdGUgcGF0Y2hfbmV3X2FycmF5X2luaXQuCgoJKiBqY2Ytd3JpdGUuYyAoZmluZF9jb25zdGFudF9pbmRleCk6ICBOZXcgZnVuY3Rpb24uCgkoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiAgVXNlIGZpbmRfY29uc3RhbnRfaW5kZXguCgkoZ2VuZXJhdGVfY2xhc3NmaWxlKTogIFVzZSBmaW5kX2NvbnN0YW50X2luZGV4IGZvciBDb25zdGFudFZhbHVlLgoKMTk5OC0xMi0xMSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZXhwci5jIChpbnZva2VfYnVpbGRfZHRhYmxlKTogUmVuYW1lZCBkdGFibGUgLT4gdnRhYmxlLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogUmVuYW1lZCBkdGFibGUgLT4gdnRhYmxlLgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzX2RhdGEpOiBSZW5hbWVkIGR0YWJsZSAtPiB2dGFibGUsIGFuZAoJZHRhYmxlX21ldGhvZF9jb3VudCAtPiB2dGFibGVfbWV0aG9kX2NvdW50LgoKMTk5OC0xMi0xMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGxvbmdfemVyb19ub2RlLCBmbG9hdF96ZXJvX25vZGUsIGRvdWJsZV96ZXJvX25vZGUpOiBOZXcKCWdsb2JhbCB2YXJpYWJsZXMsIGluaXRpYWxpemVkLgoJKiBqYXZhLXRyZWUuaCAobG9uZ196ZXJvX25vZGUsIGZsb2F0X3plcm9fbm9kZSwgZG91YmxlX3plcm9fbm9kZSk6CglEZWNsYXJlZCBuZXcgZ2xvYmFsIHZhcmlhYmxlcy4KCSogbGV4LmMgKGphdmFfbGV4KTogUmV0dXJuIGxvbmdfemVyb19ub2RlLCBmbG9hdF96ZXJvX25vZGUsCglkb3VibGVfemVyb19ub2RlLCBpbnRlZ2VyX3plcm9fbm9kZSB1cG9uIGRpcmVjdCBtYXRjaGluZy4KCSogcGFyc2UueSAocHVyaWZ5X3R5cGVfbmFtZSk6IEFkZGVkIGZ1bmN0aW9uIHByb3RvdHlwZS4KCShkdXBsaWNhdGVfZGVjbGFyYXRpb25fZXJyb3JfcCk6IENvbnNpZGVyIG5ld190eXBlIGFzIHBvdGVudGlhbGx5CgliZWluZyBhIGluY29tcGxldGUgdHlwZS4gVXNlIHB1cmlmeV90eXBlX25hbWUgb24gdHlwZSBzdHJpbmcuCgkobWV0aG9kX2hlYWRlcik6IHNhdmVkX3R5cGU6IHVudXNlZCB2YXJpYWJsZSByZW1vdmVkLiBEb24ndCBmaWd1cmUKCXJldHVybiB0eXBlIGlmIG1ldGhvZCBuYW1lIGlzIGludmFsaWQuCgkoamF2YV9jb21wbGV0ZV90cmVlKTogU2V0IENBTl9DT01QTEVURV9OT1JNQUxMWSBhZnRlciBgbm9kZScgd2FzCglwcm9jZXNzZWQgYnkgcGF0Y2hfdW5hcnlvcC4KCShwYXRjaF91bmFyeW9wKTogRml4ZWQgdHlwbyBpbiBjb21tZW50LiBSZS1jb252ZXJ0IHByZS9wb3N0CglpbmNyZW1lbnQvZGVjcmVtZW50IG5vZGUgaW50byBpdHMgb3JpZ2luYWwgdHlwZSBhZnRlciBiaW5hcnkKCW51bWVyaWMgcHJvbW90aW9uIG9uIGl0cyBvcGVyYW5kcy4KCjE5OTgtMTItMTAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoYXJyYXlfaW5pdGlhbGl6ZXI6KTogQXJyYXkgaW5pdCBvcGVyYW5kIGlzIE5VTExfVFJFRQoJaW5zdGVhZCBvZiBhIFRSRUVfTElTVCBvZiBOVUxMX1RSRUVzIHdoZW4gcGFyc2luZyBge30nLiBgeyx9JyBpcwoJbm93IGFuIGVycm9yLiBGaXhlZCBpbmRlbnRhdGlvbiBwcm9ibGVtcy4KCShwYXRjaF9zdHJpbmcpOiBIYW5kbGUgZXJyb3JfbWFya19ub2RlIGFzIGFuIGFyZ3VtZW50LgoJKHBhdGNoX25ld19hcnJheV9pbml0KTogRml4ZWQgaW5kZW50YXRpb24gcHJvYmxlbXMuCgkoYXJyYXlfY29uc3RydWN0b3JfY2hlY2tfZW50cnkpOiBSZW1vdmVkIGNoZWNrIG9uIG51bGwgd2ZsX3ZhbHVlLgoJUmV0dXJuIGFuIGVycm9yIGlmIHdmbF92YWx1ZSdzIHdhbGsgcmV0dXJucyBhbiBlcnJvci4KCjE5OTgtMTItMDkgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamF2YS10cmVlLmRlZiAoTkVXX0FSUkFZX0lOSVQpOiBOZXcgSmF2YSB0cmVlIGNvZGUuCgkqIGxleC5jIChqYXZhX2xleCk6IFJlbWVtYmVyIGNvbHVtbiBwb3NpdGlvbiBiZWZvcmUgYWR2YW5jaW5nIG9uZQoJdG9rZW4uIFJldGFpbiBsb2NhdGlvbiBpbmZvcm1hdGlvbiBvbiBPQ0JfVEsuCgkqIGxleC5oICh0eXBlZGVmIHN0cnVjdCBqYXZhX2xjKTogQWRkZWQgbmV3IGZpZWxkLgoJKiBwYXJzZS5oIChHRVRfU0tJUF9UWVBFKTogTmV3IG1hY3JvLgoJKFFVQUxfREVDTF9UWVBFKTogUmVkZWZpbmVkIHVzaW5nIEdFVF9TS0lQX1RZUEUuCgkqIHBhcnNlLnkgKGJ1aWxkX25ld19hcnJheV9pbml0LCBwYXRjaF9uZXdfYXJyYXlfaW5pdCwKCXBhdGNoX2FycmF5X2NvbnN0cnVjdG9yLCBtYXliZV9idWlsZF9hcnJheV9lbGVtZW50X3dmbCwKCWFycmF5X2NvbnN0cnVjdG9yX2NoZWNrX2VudHJ5KTogTmV3IGZ1bmN0aW9uIHByb3RvdHlwZXMuCgkoc3dpdGNoX2Jsb2NrOik6IFRhZ2dlZCA8bm9kZT4uCgkoT0NCX1RLKTogVGFnZ2VkIDxvcGVyYXRvcj4uCgkoYXJyYXlfaW5pdGlhbGl6ZXI6KTogSW5zdGFsbGVkIGFjdGlvbnMuCgkodmFyaWFibGVfaW5pdGlhbGl6ZXIpOiBCdWlsZCBsb2NhdGlvbiBpbmZvcm1hdGlvbiBvbiBlbGVtZW50IGlmCgluZWNlc3NhcnkuCgkoc3dpdGNoX3N0YXRlbWVudDopOiBGaXhlZCBpbmRlbnRhdGlvbiB0eXBvLgoJKHN3aXRjaF9ibG9jazopOiBSZWRlZmluZWQgZGVmYXVsdCBhY3Rpb24uCgkoamF2YV9jb21wbGV0ZV90cmVlKTogSGFuZGxlIE5FV19BUlJBWV9JTklUIGluIE1PRElGWV9FWFBSOi4KCShwYXRjaF9hc3NpZ25tZW50KTogUmVtb3ZlZCBkdXBsaWNhdGUgY29kZS4KCShtYXliZV9idWlsZF9hcnJheV9lbGVtZW50X3dmbCwgYnVpbGRfbmV3X2FycmF5X2luaXQsCglwYXRjaF9uZXdfYXJyYXlfaW5pdCwgcGF0Y2hfYXJyYXlfY29uc3RydWN0b3IsCglhcnJheV9jb25zdHJ1Y3Rvcl9jaGVja19lbnRyeSk6IE5ldyBmdW5jdGlvbnMuCgoxOTk4LTEyLTA3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGFycmF5X2luaXRpYWxpemVyKTogVGFnZ2VkIDxub2RlPi4KCSh2YXJpYWJsZV9pbml0aWFsaXplcjopOiBVc2UgZGVmYXVsdCBydWxlLgoJKGFycmF5X2luaXRpYWxpemVyOik6IERlZmluZWQgYWN0aW9ucy4KCSh2YXJpYWJsZV9pbml0aWFsaXplcnM6KTogTGlrZXdpc2UuCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogVXNlIERFQ0xfQ09OVEVYVCB0byBidWlsZAoJbm9uLXN0YXRpYyBmaWVsZCBhY2Nlc3Nlcy4KCShwYXRjaF9pbnZva2UpOiBGaXhlZCBpbmRlbnRhdGlvbiB0eXBvLgoJKGphdmFfY29tcGxldGVfdHJlZSk6IExpa2V3aXNlLgoJKGJ1aWxkX2xhYmVsZWRfYmxvY2spOiBDaGFuZ2VkIGxlYWRpbmcgY29tbWVudC4gR2VuZXJhdGUgYW4gZXJyb3IKCWluIGNhc2Ugb2YgZHVwbGljYXRlIGxvb3AgbGFiZWxzLgoJKHBhdGNoX2NvbmRpdGlvbmFsX2V4cHIpOiBQYXRjaCByZXN1bHRzIG9mIHN0cmluZyBjb25jYXRlbmF0aW9uCglvcGVyYXRpb25zLgoKMTk5OC0xMi0wNiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBjb25zdGFudHMuYyAoZmluZF9tZXRob2RyZWZfaW5kZXgpOiAgV2hlbiB0aGUgY2xhc3MgaXMgYW4gaW50ZXJmYWNlLAoJZ2VuZXJhdGUgQ09OU1RBTlRfSW50ZXJmYWNlTWV0aG9kcmVmIGluc3RlYWQgb2YgYSBDT05TVEFOVF9NZXRob2RSZWYuCgoJKiBkZWNsLmMgKGZpbml0X2lkZW50aWZpZXJfbm9kZSk6ICBVc2UgIiRmaW5pdCQiLCByYXRoZXIgdGhhbgoJIjxmaW5pdD4iICh3aGljaCBTdW4ncyB2ZXJpZmllciByZWplY3RzKS4KCSogcGFyc2UueSAobWF5YmVfZ2VuZXJhdGVfZmluaXQpOiAgTGVhdmUgb3V0IG1lYW5pbmdsZXNzIGZpbmFsIGZsYWcuCgkoZ2VuZXJhdGVfZmllbGRfaW5pdGlhbGl6YXRpb25fY29kZSk6ICBSZW1vdmVkLgoJKGZpeF9jb25zdHJ1Y3RvcnMpICBEb24ndCBhZGQgY2FsbCB0byAkZmluaXQkIGhlcmUgKHdyb25nIG9yZGVyKS4KCShwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6ICBBZGQgJGZpbml0JCBjYWxsIGhlcmUuCgoJKiBqYXZhLXRyZWUuaCAoQ0FMTF9VU0lOR19TVVBFUik6ICBOZXcgbWFjcm8uCgkqIHBhcnNlLnkgKHBhdGNoX2ludm9rZSk6ICBSZW1vdmUgaW0gbG9jYWwgdmFyaWFibGUuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24sIHBhdGNoX2ludm9rZSk6ICBEb24ndCBwYXNzIHN1cGVyIHBhcmFtZXRlci4KCShwYXRjaF9pbnZva2UpOiAgVXNlIENBTExfVVNJTkdfU1VQRVIgaW5zdGVhZCBvZiBmcm9tX3N1cGVyIHBhcmFtZXRlci4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiAgTWF5YmUgc2V0IENBTExfVVNJTkdfU1VQRVIuCgoJKiBqY2Ytd3JpdGUuYyAoZ2V0X2FjY2Vzc19mbGFncyk6ICBGaXggdHlwbyBBQ0NfUFVCTElDIC0+IEFDQ19GSU5BTC4KCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfdHJlZSk6ICBEb24ndCBjb21wbGFpbiBhYm91dCB1bnJlYWNoYWJsZQoJc3RhdGVtZW50IGlmIGl0IGlzIGVtcHR5X3N0bXRfbm9kZS4KCgkqIGpjZi13cml0ZS5jIChmaW5kX2NvbnN0YW50X3dpZGUpOiAgTmV3IGZ1bmN0aW9uLgoJKHB1c2hfbG9uZ19jb25zdCk6ICBVc2UgZmluZF9jb25zdGFudF93aWRlLgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc24pOiAgRml4IGJ1ZyBpbiBzd2l0Y2ggaGFuZGxpbmcuCgkoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbik6ICBVc2UgY29ycmVjdCBkdXAgdmFyaWFudCBmb3IgTU9ESUZZX0VYUFIuCglBZGQgInJlZHVuZGFudCIgTk9URV9QVVNIL05PVEVfUE9QIHVzZXMgc28gY29kZV9TUF9tYXggZ2V0cyBzZXQuCglFbWl0IGludm9rZWludGVyZmFjZSB3aGVuIGNhbGxpbmcgYW4gaW50ZXJmYWNlIG1ldGhvZC4KCUVtaXQgaW52b2tlc3BlY2lhbCBhbHNvIHdoZW4gY2FsbGluZyBzdXBlciBvciBwcml2YXRlIG1ldGhvZHMuCgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfY2xhc3NmaWxlKTogIEVtaXQgQ29uc3RhbnRWYWx1ZSBhdHRyaWJ1dGVzLgoKMTk5OC0xMi0wNiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBqY2YtZHVtcC5jIChJTlZPS0UpOiAgSWYgaW52b2tlaW50ZXJmYWNlLCBwcmludCBudW1iZXIgb2YgYXJncy4KCjE5OTgtMTItMDMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamF2YS10cmVlLmggKGphdmFfbGF5b3V0X3NlZW5fY2xhc3NfbWV0aG9kcyk6IE5ldyBmdW5jdGlvbgoJcHJvdG90eXBlLgoJKExBWU9VVF9TRUVOX0NMQVNTX01FVEhPRFMpOiBNYWNybyByZW1vdmVkLgoJKiBqY2YtcGFyc2UuYyAocGFyc2VfY2xhc3NfZmlsZSk6IENhbGwgamF2YV9sYXlvdXRfc2Vlbl9jbGFzc19tZXRob2RzLgoJKiBwYXJzZS5oIChQUk9NT1RFX1JFQ09SRF9JRl9DT01QTEVURSk6IE5ldyBtYWNyby4KCSogcGFyc2UueSAobWV0aG9kX2RlY2xhcmF0b3I6KTogRGVmaW5lZCBhY3Rpb24uCgkoaXNzdWVfd2FybmluZ19lcnJvcl9mcm9tX2NvbnRleHQpOiBpbnB1dF9maWxlbmFtZSBzYXZlZCwgc2V0IHRvCgl0aGUgYXBwcm9wcmlhdGUgdmFsdWUgYW5kIHJlc3RvcmVkIGFmdGVyIGphdmFfZXJyb3IgaXMgY2FsbGVkLgoJKGJ1aWxkX3VucmVzb2x2ZWRfYXJyYXlfdHlwZSk6IEZpeGVkIGNvbW1lbnQuCgkocmVnaXN0ZXJfZmllbGRzKTogVXNlIFBST01PVEVfUkVDT1JEX0lGX0NPTVBMRVRFLgoJKG1ldGhvZF9oZWFkZXIpOiBEZWFsIHdpdGggcmV0dXJuIHR5cGUgdGhlIHNhbWUgd2F5IHR5cGUgYXJlCgloYW5kbGVkIGZvciBmaWVsZHMgYW5kIG1ldGhvZCdzIHBhcmFtZXRlcnMgYW5kIGxvY2FsIHZhcmlhYmxlcwoJdHlwZXMgYXJlIGhhbmRsZWQuCgkoY2hlY2tfbWV0aG9kX3JlZGVmaW5pdGlvbik6IFJlbW92ZWQgZXh0cmEgQ1IuCgkoZGVjbGFyZV9sb2NhbF92YXJpYWJsZXMpOiBVc2UgUFJPTU9URV9SRUNPUkRfSUZfQ09NUExFVEUuCgkoamF2YV9sYXlvdXRfc2Vlbl9jbGFzc19tZXRob2RzKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfbGF5b3V0X2NsYXNzZXMpOiBDYWxsIGphdmFfbGF5b3V0X3NlZW5fY2xhc3NfbWV0aG9kcy4KCjE5OTgtMTItMDMgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogcGFyc2UseSAocGF0Y2hfc3luY2hyb25pemVkX3N0YXRlbWVudCk6ICBTZXQgQ0FOX0NPTVBMRVRFX05PUk1BTExZLgoKMTk5OC0xMi0wMyAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBqY2YtZHVtcC5jIChtYWluKTogIEZpeCBlcnJvciBtZXNzYWdlLgoJKiBqY2YtcGF0aC5jIChhZGRfZW50cnkpOiAgU3R5bGUgZml4LgoKMTk5OC0xMi0wMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3NfbWV0aG9kKTogQ2FsbCBidWlsZF9qYXZhX2FyZ3VtZW50X3NpZ25hdHVyZQoJb24gY29uc3RydWN0b3JzIHRvby4KCSogcGFyc2UueSAoY2hlY2tfbWV0aG9kX3JlZGVmaW5pdGlvbik6IFVzZSBUWVBFX0FSR1VNRU5UX1NJR05BVFVSRS4KCShwYXRjaF9tZXRob2RfaW52b2NhdGlvbik6IERlZmluZSBhIHByaW1hcnkgd2hlbiByZXNvbHZpbmcgYW4KCWV4cHJlc3Npb24gbmFtZS4gQXVnbWVudGVkIGNvbW1lbnQgb24gY29kZSBjaGVja2luZyBpbGxlZ2FsIGB0aGlzJwoJdXNhZ2UuIExvb3NlbmVkIGl0IHRlc3QgYnkgYWNjZXB0aW5nIE5FV19DTEFTU19FWFBSLgoKMTk5OC0xMi0wMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3NfbWV0aG9kKTogRG9uJ3QgcmVwb3J0IGVycm9yIG9uIG5vbi1zdGF0aWMKCW92ZXJyaWRpbmcgc3RhdGljIGlmIHRoZSBtZXRob2QgaXMgcHJpdmF0ZS4KCSogamF2YS10cmVlLmggKGZpbmlzaF9jbGFzcyk6IFByb3RvdHlwZSBhZGRlZC4KCSogbGV4LmMgKGphdmFfZ2V0X2xpbmVfY29sKTogSGFuZGxlIGNvbCBhcmd1bWVudCAtMiB2YWx1ZS4KCSogcGFyc2UuaDogQWxsIHN0YXRpYyBtZXRob2QgZGVjbGFyYXRpb25zIG1vdmVkIHRvIHBhcnNlLnkuCgkqIHBhcnNlLnk6IE5vdyBjb250YWlucyBhbGwgc3RhdGljIG1ldGhvZCBkZWNsYXJhdGlvbnMgcHJldmlvdXNseQoJZm91bmQgaW4gcGFyc2UuaC4KCShmaW5kX2V4cHJfd2l0aF93ZmwsIG1pc3NpbmdfcmV0dXJuX2Vycm9yLAoJdW5yZWFjaGFibGVfc3RtdF9lcnJvcik6IE5ldyBmdW5jdGlvbnMuCgkoamF2YV9nZXRfcmVhbF9tZXRob2RfbmFtZSk6IElkZW50aWZ5IGNvbnN0cnVjdG9ycyBiZWFyaW5nIGNsYXNzCgluYW1lcyBpbiBzb3VyY2UgY29kZSBjb21waWxlZCBjbGFzc2VzIG9ubHkuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IENhbGwgbWlzc2luZ19yZXR1cm5fZXJyb3IuCgkoaW52b2NhdGlvbl9tb2RlKTogUHJpdmF0ZSBtZXRob2RzIGludm9rZWQgYXMgc3RhdGljIG1ldGhvZHMuCgkoamF2YV9jb21wbGV0ZV90cmVlKTogQ2FsbCB1bnJlYWNoYWJsZV9zdG10X2Vycm9yLgoKMTk5OC0xMi0wMSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKCt0YXJnZXQpOiBSZW1vdmVkLgoJKCt4bWFrZV9maWxlKTogTGlrZXdpc2UuCgkoK3RtYWtlX2ZpbGUpOiBMaWtld2lzZS4KCSguTk9FWFBPUlQpOiBSZW1vdmVkIGR1cGxpY2F0ZS4KCjE5OTgtMTEtMjcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChqYzEsIGp2LXNjYW4pOiBMaW5rIHdpdGggJChTVUJESVJfT0JTVEFDSykuCgoJKiBqdi1zY2FuLmM6IEZpeCB4bWFsbG9jIHByb3RvdHlwZS4gIFByb3ZpZGUgYW4geG1hbGxvYyBkZWZpbml0aW9uLgoKCSoganZnZW5tYWluLmM6IFJlbW92ZSB0aGUgeG1hbGxvYyBwcm90b3R5cGUsIHdlIGdldCBpdCBmcm9tCglsaWJpYmVydHkuaC4gIFByb3ZpZGUgYW4geG1hbGxvYyBkZWZpbml0aW9uLgoKCSoganZzcGVjLmM6IFJlbW92ZSB0aGUgeG1hbGxvYyBwcm90b3R5cGUuCgoJKiBwYXJzZS1zY2FuLnk6IEluY2x1ZGUgY29uZmlnLmggYW5kIHN5c3RlbS5oLiAgRG9uJ3QgaW5jbHVkZQoJT1MgaGVhZGVycyBvciBnYW5zaWRlY2wuaC4gIERvbid0IHByb3RvdHlwZSB4bWFsbG9jL3hzdHJkdXAuCglQcm92aWRlIGFuIHhzdHJkdXAgZGVmaW5pdGlvbi4KCjE5OTgtMTEtMjYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogamNmLXBhdGguYyAoYWRkX2VudHJ5KTogUmVjb2duaXplICIuamFyIiB0b28uCgkqIGxhbmctc3BlY3MuaDogTGlrZXdpc2UuCgoxOTk4LTExLTI2ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6ICBJbiBDYWxsX0VYUFIsIGhhbmRsZQoJc29mdF9tb25pdG9yZW50ZXJfbm9kZSwgc29mdF9tb25pdG9yZXhpdF9ub2RlLCB0aHJvd19ub2RlLgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKToKCUhhbmRsZSBwcmUvcG9zdC1pbmNyZW1lbnQvZGVjcmVtZW50IG9mIGxvbmcuCgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOgoJSGFuZGxlIG1pc3NpbmcgZXhjZXB0aW9uIGhhbmRsZXIgKGZpbmFsbHkgZm9yIHN5bmNocm9uaXplZCkuCgoxOTk4LTExLTI1ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGphdmEtdHJlZS5oIChlbmRfcGFyYW1zX25vZGUpOiAgRGVjbGFyZSBnbG9iYWwuCgkqIGRlY2wuYyAoZW5kX3BhcmFtc19ub2RlKTogIE5ldyBnbG9iYWwuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcsIHN0YXJ0X2phdmFfbWV0aG9kKTogIFVzZSBlbmRfcGFyYW1zX25vZGUgZm9yCgllbmQgb2YgbGlzdCBvZiBwYXJhbWV0ZXIgdHlwZXMuICBGb2xsb3dzIGNvcnJlY3QgZ2NjIGNvbnZlbnRpb25zLgoJKiBleHByLmMgKHBvcF9hcmd1bWVudF90eXBlcywgcG9wX2FyZ3VtZW50cyk6ICBMaWtld2lzZS4KCSogbGFuZy5jIChwdXRfZGVjbF9ub2RlKTogIExpa2V3aXNlLgoJKiB0eXBlY2suYyAodmFyaW91cyBwbGFjZXMpOiAgTGlrZXdpc2UuCgkqIGNsYXNzLnkgKHZhcmlvdXMgcGxhY2VzKTogIExpa2V3aXNlLgoJKiBwYXJzZS55ICh2YXJpb3VzIHBsYWNlcyk6ICBMaWtld2lzZS4KCgkqIHBhcnNlLnkgKGphdmFfY29tcGxldGVfdHJlZSk6ICBNb3ZlIENBTl9DT01QTEVURV9OT1JNQUxMWS4KCShidWlsZF9qdW1wX3RvX2ZpbmFsbHkpOiAgQWRkIG1pc3NpbmcgQ0FOX0NPTVBMRVRFX05PUk1BTExZLgoKCSogY2xhc3MuYzogIEFkZCAjaW5jbHVkZSBmbGFncy5oLCByZW1vdmUgbm8tbG9uZ2VyIG5lZWRlZCBkZWNsYXJhdGlvbi4KCgkqIGNsYXNzLmMgKGxheW91dF9jbGFzc19tZXRob2QpOiAgUmVtb3ZlIGNvbW1lbnRlZC1vdXQgY29kZSwgcmUtZm9ybWF0LgoJRG9uJ3QgYWRkIHZ0YWJsZSBlbnRyeSAob3IgaW5kZXgpIGZvciBwcml2YXRlIG1ldGhvZHMuCgkqIGV4cHIuYyAoZXhwYW5kX2ludm9rZSk6ICBBIHByaXZhdGUgbWV0aG9kIGlzIGltcGxpY2l0bHkgZmluYWwuCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3NfZGF0YSk6ICBJZiBpbmxpbmluZyBvciBvcHRpbWl6aW5nLAoJc2tpcCBwcml2YXRlIG1ldGhvZHMuCgoJKiBjbGFzcy5jIChmaW5pc2hfY2xhc3MpOiAgTmV3IGZ1bmN0aW9uLiAgQ2FsbHMgZXhpc3RpbmcgbWV0aG9kcywKCWJ1dCBhbGxzIGVtaXRzIGRlZmVycmVkIGlubGluZSBmdW5jdGlvbnMuCgkqIGpjZi1wYXJzZS5jIChwYXJzZV9jbGFzc19maWxlKTogIENhbGwgZmluaXNoX2NsYXNzLgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzKTogIExpa2V3aXNlLgoKCSogZXhwci5jIChidWlsZF9qYXZhX2Jpbm9wKTogIEV4cGxpY2l0IGRlZmF1bHQsIHRvIHNpbGVuY2UgLVdhbGwuCgoJKiBleHByLmMgKENIRUNLX1BDX0lOX1JBTkdFKTogIEFkZCB2b2lkIGNhc3QgdG8ga2lsbCB3YXJuaW5ncy4KCjE5OTgtMTEtMjUgIE1hcmMgRXNwaWUgPGVzcGllQHF1YXRyYW1hcmFuLmVucy5mcj4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9jb25kaXRpb25hbCk6IEZpeCB0eXBvLgoKMTk5OC0xMS0yNCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiAoZ2VuZXJhdGVfY2xhc3NmaWxlKTogQWx3YXlzIHdyaXRlIGNsYXNzIGFjY2VzcyBmbGFnIHdpdGgKCUFDQ19TVVBFUiBzZXQuCgoxOTk4LTExLTI0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKG1heWJlX2xheW91dF9zdXBlcl9jbGFzcyk6IE5ldyBmdW5jdGlvbi4KCShsYXlvdXRfY2xhc3MpOiBSZW9yZ2FuaXplZC4gTG9vcCBvbiBjbGFzcyBtZXRob2RzIGRpc3BhdGNoZWQgaW50bwoJYSBuZXcgZnVuY3Rpb24uIENhbGwgbWF5YmVfbGF5b3V0X3N1cGVyX2NsYXNzLgoJKGxheW91dF9jbGFzc19tZXRob2RzLCBsYXlvdXRfY2xhc3NfbWV0aG9kKTogTmV3IGZ1bmN0aW9ucy4KCSogZXhwci5jIChleHBhbmRfamF2YV9ORVcpOiBDYWxsIGxheW91dF9jbGFzc19tZXRob2RzIG9uIGxvYWRlZAoJY2xhc3MuCgkoZXhwYW5kX2ludm9rZSk6IExpa2V3aXNlLgoJKiBqYXZhLXRyZWUuaCAoYWxsX2NsYXNzX2xpc3QpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlIGRlY2xhcmVkLgoJKGxheW91dF9jbGFzc19tZXRob2RzLCBsYXlvdXRfY2xhc3NfbWV0aG9kKTogTmV3IGZ1bmN0aW9uCglwcm90b3R5cGVzLgoJKExBWU9VVF9TRUVOX0NMQVNTX01FVEhPRFMpOiBOZXcgbWFjcm8uCgkqIGpjZi1wYXJzZS5jIChhbGxfY2xhc3NfbGlzdCk6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkobG9hZF9jbGFzcyk6IEV4dGVuZGVkIHdoYXQgY2xhc3Nfb3JfbmFtZSBjYW4gYmUuIFVzZSBwYXJzZXIKCWNvbnRleHQgbWVjaGFuaXNtIHRvIHNhdmUgZ2xvYmFscyBiZWZvcmUgY2FsbGluZyBqY2ZfcGFyc2UuCgkoamNmX3BhcnNlX3NvdXJjZSk6IERvbid0IHBhcnNlIHR3aWNlIGlmIEhBU19CRUVOX0FMUkVBRFlfUEFSU0VEX1AKCWlzIHNldCBvbiB0aGUgZmlsZSBuYW1lLgoJKGpjZl9wYXJzZSk6IExheW91dCBjbGFzcyBtZXRob2RzIHdoZW4gT2JqZWN0IGlzIGxvYWRlZCwgb3RoZXJ3aXNlCglyZWNvcmQgY2xhc3MgaW4gYWxsX2NsYXNzX2xpc3QgZm9yIGRlbGF5ZWQgbWV0aG9kIGxheW91dC4KCShwYXJzZV9jbGFzc19maWxlKTogVXNlIExBWU9VVF9TRUVOX0NMQVNTX01FVEhPRFMuCgkqIGxhbmcuYyAocHV0X2RlY2xfbm9kZSk6IERlY29kZSA8aW5pdD4gaW50byB0aGUgZGVjbCBjb250ZXh0CgljbGFzcyBuYW1lLgoJKiBsZXguYyAoamF2YV9hbGxvY2F0ZV9uZXdfbGluZSk6IFVzZSB4bWFsbG9jLgoJKiBwYXJzZS5oIChJTkNPTVBMRVRFX1RZUEVfUCk6IFJlZGVmaW5lZCB0byB3b3JrIHdpdGggaW5jb21wbGV0ZQoJcG9pbnRlcnMsIG5vdCBUUkVFX0xJU1QgZWxlbWVudHMuCgkoc3RydWN0IHBhcnNlcl9jdHh0KTogRml4ZWQgY29tbWVudCBpbmRlbnRhdGlvbnMsIGFkZGVkIGNvbW1lbnRzCglhbmQgcmVvcmRlcmVkIHNvbWUgZmllbGRzLgoJKGphdmFfY2hlY2tfbWV0aG9kcyk6IEZ1bmN0aW9uIHByb3RvdHlwZSByZW1vdmVkLgoJKiBwYXJzZS55IChqYXZhX3B1c2hfcGFyc2VyX2NvbnRleHQpOiBVc2UgeG1hbGxvYy4KCShqYXZhX3BhcnNlcl9jb250ZXh0X3Jlc3RvcmVfZ2xvYmFsKTogUG9wIGV4dHJhIHB1c2hlZCBjdHhwIG9ubHkKCXdoZW4gdGhlcmUncyBub3RoaW5nIG5leHQuCgkobWF5YmVfY3JlYXRlX2NsYXNzX2ludGVyZmFjZV9kZWNsKTogRml4ZWQgY29tbWVudCwgYWRkIG5ldwoJY3JlYXRlZCBjbGFzcyBkZWNsIHRvIGFsbF9jbGFzc19saXN0LgoJKG1ldGhvZF9oZWFkZXIpOiBVc2UgR0VUX1JFQUxfVFlQRSBvbiBhcmd1bWVudCdzIHR5cGVzLgoJKG1ldGhvZF9kZWNsYXJhdG9yKTogVXNlIEdFVF9SRUFMX1RZUEUsIGNoYW5nZSB0eXBlIHRvIHRoZSByZWFsCgl0eXBlIGluIFRSRUVfTElTVCBkZXBlbmRlbmN5IG5vZGUuIEJ1aWxkIGFyZ3VtZW50IGxpc3Qgd2l0aCB0aGUKCXJlYWwgdHlwZS4KCShjcmVhdGVfamRlcF9saXN0KTogVXNlIHhtYWxsb2MuIFJlbW92ZWQgYWxsb2NhdGlvbiBlcnJvciBtZXNzYWdlLgoJKG9idGFpbl9pbmNvbXBsZXRlX3R5cGUpOiBGaXhlZCBsZWFkaW5nIGNvbW1lbnQuIEJyb2FkZW5lZAoJaW5jb21pbmcgYXJndW1lbnQgbWVhbmluZy4KCShyZWdpc3Rlcl9pbmNvbXBsZXRlX3R5cGUpOiBVc2UgeG1hbGxvYy4gUmVtb3ZlZCBhbGxvY2F0aW9uIGVycm9yCgltZXNzYWdlLgoJKHNhZmVfbGF5b3V0X2NsYXNzKTogRml4ZWQgbGVhZGluZyBjb21tZW50LgoJKGpkZXBfcmVzb2x2ZV9jbGFzcyk6IFJldmVyc2VkIGlmIHN0YXRlbWVudCBjb25kaXRpb24gYW5kIHN3aXRjaAoJaWYgYW5kIGVsc2UgYm9kaWVzLgoJKHJlc29sdmVfYW5kX2xheW91dCk6IEZpeGVkIGxlYWRpbmcgY29tbWVudC4gQnJvYWRlbmVkIGluY29taW5nCglhcmd1bWVudCBtZWFuaW5nLgoJKGNvbXBsZXRlX2NsYXNzX3JlcG9ydF9lcnJvcnMpOiBOZXcgbG9jYWwgdmFyaWFibGUgbmFtZSwgZm9yCgljbGFyaXR5LiBwdXJpZnlfdHlwZV9uYW1lIHVzZWQgZm9yIGFsbCBlcnJvciBjYXNlcy4KCShqYXZhX2dldF9yZWFsX21ldGhvZF9uYW1lKTogU3RyaWN0ZXIgY2hlY2sgb24gY29uc3RydWN0b3JzLgoJKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzKTogUmV2ZXJzZSBtZXRob2RzIGxpc3Qgb25seSBpZiBub3QKCWFscmVhZHkgbGFpZCBvdXQuIExheW91dCBhcnRpZmljaWFsIGNvbnN0cnVjdG9yLgoJKGphdmFfY2hlY2tfbWV0aG9kcyk6IERlbGV0ZWQuCgkoc291cmNlX3N0YXJ0X2phdmFfbWV0aG9kKTogT2J0YWluIGluY29tcGxldGUgdHlwZSBmb3IgcGF0Y2hhYmxlCgltZXRob2QgYXJndW1lbnRzLgoJKGphdmFfbGF5b3V0X2NsYXNzZXMpOiBGaXhlZCBsZWFkaW5nIGNvbW1lbnQuIFVzZQoJTEFZT1VUX1NFRU5fQ0xBU1NfTUVUSE9EUywgdXNlIGEgbG9vcCB0byBjaGVjayBtZXRob2RzLiBBZGRlZCBlbHNlCglzdGF0ZW1lbnQgdG8gbGF5b3V0IG9wZXJhdGlvbiwgcmV1c2UgTEFZT1VUX1NFRU5fQ0xBU1NfTUVUSE9EUwoJYmVmb3JlIHJldHVybmluZy4gRml4ZWQgY29tbWVudHMuCgkoamF2YV9leHBhbmRfY2xhc3Nlcyk6IENoZWNrIGZvciBlcnJvcnMgdXAgZnJvbnQuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBDbGFzcyB0byBzZWFyY2ggaXMgcmVzb2x2ZWQgYW5kIGxhaWQKCW91dC4KCjE5OTgtMTEtMjQgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogZXhwci5jIChqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiAgQWRkIG1pc3NpbmcgZW1pdF9xdWV1ZS4KCgkqIGphdmFvcC5oIChpbnQ4KTogIFJlbW92ZWQgLSBub3QgdXNlZC4KCShqYnl0ZSk6ICBSZWRlZmluZSBwb3J0YWJseSB3aXRoIGNvcnJlY3Qgc2lnbmVkbmVzcy4KCgkqIGpjZi13cml0ZS5jIChnZW5lcmF0ZV9ieXRlY29kZV9pbnNucyk6ICBEb24ndCBmcmVlIHN3X3N0YXRlLmNhc2VzLgoKCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogIEZpeCB0eXBvCglPUENPREVfZ2V0c3RhdGljIHRvIE9QQ09ERV9nZXRmaWVsZC4KCgkqIGphdmEtdHJlZS5kZWYgKENBU0VfRVhQUiwgREVGQVVMVF9FWFBSKTogIEtpbmQgaXMgJ3gnLCBub3QgJzEnLgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX3RyZWUpOiAgRm9yIENBU0VfRVhQUiBhbmQgREVGQVVMVF9FWFBSLAoJc2V0IFRSRUVfU0lERV9FRkZFQ1RTIChvdGhlcndpc2UgZXhwYW5kX2V4cHIgbWF5IHNraXAgdGhlbSkuCgoxOTk4LTExLTE5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGpjZi1wYXJzZS5jIChqY2ZfcGFyc2Vfc291cmNlKTogRnVuY3Rpb24gcmV0dXJuZWQgdHlwZSBpcwoJdm9pZC4gQWRkZWQgcHJvdG90eXBlLgoJKGpjZl9wYXJzZSk6IEZ1bmN0aW9uIHJldHVybmVkIHR5cGUgaXMgdm9pZC4KCSh5eXBhcnNlKTogUmVtb3ZlIGNhbGwgdG8gZmNsb3NlIG9uIHRoZSBsYXN0IHBhcnNlZCBmaWxlLgoKCSogamF2YS10cmVlLmggKGpjZl9wYXJzZSk6IENoYW5nZWQgamNmX3BhcnNlIHByb3RvdHlwZS4KCjE5OTgtMTEtMTggIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAodW5tYW5nbGVfY2xhc3NuYW1lKTogU2V0IFFVQUxJRklFRF9QIHdoZW4gYXBwcm9wcmlhdGUuCgkobGF5b3V0X2NsYXNzKTogQ29wZSB3aXRoIG1ldGhvZHMgZmVhdHVyaW5nIFdGTCBpbiBkZWNsIG5hbWVzLgoJKiBkZWNsLmMgKHVucXVhbGlmaWVkX29iamVjdF9pZF9ub2RlKTogTmV3IGdsb2JhbCB2YXJpYWJsZSwKCWluaXRpYWxpemVkLgoJKGJ1aWxkX2RlY2xfbm9fbGF5b3V0KTogUmVtb3ZlZC4KCSogZXhwci5jIChidWlsZF9wcmltdHlwZV90eXBlX3JlZik6IEhhbmRsZSBEb3VibGUuCgkoamF2YV9sYW5nX2V4cGFuZF9leHByKTogRml4ZWQgaW5kZW50YXRpb25zLgoJKiBqYXZhLXRyZWUuaCAoQ0xBU1NfTUVUSE9EX0NIRUNLRURfUCk6IEZsYWcgZGVsZXRlZC4KCShmbGFnX3dhbGwsIGZsYWdfcmVkdW5kYW50LCBmbGFnX25vdF9vdmVycmlkaW5nLAoJZmxhZ19zdGF0aWNfbG9jYWxfamRrMV8xLCB1bnF1YWxpZmllZF9vYmplY3RfaWRfbm9kZSk6IEdsb2JhbAoJdmFyaWFibGUgZGVjbGFyYXRpb25zLgoJKGJ1aWxkX2RlY2xfbm9fbGF5b3V0KTogUmVtb3ZlZCBwcm90b3R5cGUuCgkoamF2YV9nZXRfcmVhbF9tZXRob2RfbmFtZSk6IEFkZGVkIHByb3RvdHlwZS4KCShJU19VTkNIRUNLRURfRVhQUkVTU0lPTl9QKTogUmVuYW1lZCBJU19VTkNIRUNLRURfRVhDRVBUSU9OX1AuCgkoamF2YV9wYXJzZV9hYm9ydF9vbl9lcnJvcik6IE1hY3JvIG5vdyBqdXN0IHJldHVybnMuCgkqIGpjZi1wYXJzZS5jIChqY2ZfcGFyc2Vfc291cmNlKTogQ2hlY2sgZmNsb3NlIHJldHVybmVkCgl2YWx1ZS4gQ2FsbCBlbWl0X3JlZ2lzdGVyX2NsYXNzZXMgaWYgamF2YV9yZXBvcnRfZXJyb3JzIHJldHVybnMKCXplcm8uCgkqIGxhbmMuYyAoZmxhZ193YWxsLCBmbGFnX3JlZHVuZGFudCwgZmxhZ19ub3Rfb3ZlcnJpZGluZywKCWZsYWdfc3RhdGljX2xvY2FsX2pkazFfMSk6IE5ldyBpbnRlZ2VyIGZsYWdzLgoJKGxhbmdfZGVjb2RlX29wdGlvbik6IE5ldyBmbGFncyBzZXQgaGVyZS4KCSogcGFyc2UuaCAoR0VUX1JFQUxfVFlQRSwgR0VUX01FVEhPRF9OQU1FKTogTmV3IG1hY3Jvcy4KCShPQlNPTEVURV9NT0RJRklFUl9XQVJOSU5HKTogSXNzdWUgZXJyb3IgbWVzc2FnZSBjb25kaXRpb25hbGx5IHRvCgl0aGUgZmxhZ19yZWR1bmRhbnQgdmFyaWFibGUuCgkoU0VUX1RZUEVfRk9SX1JFU09MVVRJT04pOiBDb25zaWRlciBPYmplY3QgYmVpbmcgamF2YS5sYW5nLk9iamVjdAoJd2hlbiBwYXJzaW5nIGphdmEubGFuZy5PYmplY3QgY2xhc3MuCgkoQlVJTERfTU9OSVRPUl9FTlRFUiwgQlVJTERfTU9OSVRPUl9FWElUKTogQWRkZWQgdGVybWluYWwKCU5VTExfVFJFRSB0byBidWlsZC4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBGaXhlZCBpbmRlbnRhdGlvbi4KCShwYXRjaF9hcnJheV9yZWYpOiBDaGFuZ2VkIHByb3RvdHlwZS4KCShub3RfaW5pdGlhbGl6ZWRfYXNfaXRfc2hvdWxkX3ApOiBQcm90b3R5cGUgcmVtb3ZlZC4KCShqYXZhX3JlcG9ydF9lcnJvcnMpOiBBZGRlZCBmdW5jdGlvbiBwcm90b3R5cGUuCgkqIHBhcnNlLnkgKGZvcm1hbF9wYXJhbWV0ZXI6KTogQ2hhbmdlZCBlcnJvciBtZXNzYWdlIGZvciBub3QgeWV0CglzdXBwb3J0ZWQgZmluYWwgcGFyYW1ldGVycy4KCShjbGFzc190eXBlX2xpc3Q6KTogU2V0IGJvdGggUFVSUE9TRSBhbmQgVkFMVUUgb2YgY3JlYXRlZAoJVFJFRV9MSVNUIHRvIGJlIGNsYXNzX3R5cGUuCgkocHJpbWFyeV9ub19uZXdfYXJyYXk6KTogSGFuZGxlIGNsYXNzIGxpdGVyYWxzIG9uIHByaW1pdGl2ZSB0eXBlcy4KCShwYXJzZV93YXJuaW5nX2NvbnRleHQpOiBSZWluc3RhbGxlZCBjb3JyZWN0IGZvcmNlX2Vycm9yIGFuZAoJZG9fd2FybmluZyBmbGFncyBzZXR1cHMuCgkoamF2YV9yZXBvcnRfZXJyb3JzKTogQ2hhbmdlZCBwcm90b3R5cGUuIFJldHVybiBqYXZhX2Vycm9yX2NvdW50Cgl2YWx1ZS4KCSh2YXJpYWJsZV9yZWRlZmluaXRpb25fZXJyb3IpOiBDb25zaWRlciB0cmVhdGluZyB2YXJpYWJsZSB0eXBlIGFzCglhIGZha2UgcG9pbnRlci4KCShjcmVhdGVfaW50ZXJmYWNlKTogV2FybiBhYm91dCByZWR1bmRhbnQgYWJzdHJhY3QgbW9kaWZpZXIgaWYKCWZsYWdfcmVkdW5kYW50IGlzIHNldC4gQ2hhbmdlZCBlcnJvciBtZXNzYWdlLgoJKGxvb2t1cF9maWVsZF93cmFwcGVyKTogU2F2ZS9yZXN0b3JlIGdsb2JhbHMgYmVmb3JlL2FmdGVyIGxvb2tpbmcKCXVwIGZpZWxkLgoJKGR1cGxpY2F0ZV9kZWNsYXJhdGlvbl9lcnJvcl9wKTogQ29uc2lkZXIgdHJlYXRpbmcgZGVjbGFyYXRpb24KCXR5cGUgYXMgYSBmYWtlIHBvaW50ZXIuCgkocmVnaXN0ZXJfZmllbGRzKTogRXh0cmFjdCByZWFsIHR5cGUgZnJvbSBkZXBlbmRlbmN5IG5vZGUuIENoZWNrCglmb3IgZHVwbGljYXRlIGZpZWxkIGRlY2xhcmF0aW9uIGFmdGVyIHR5cGUgYWRqdXN0bWVudC4gVXNlCglERUNMX0lOSVRJQUwgdG8gc3RvcmUgc3RhdGljIGZpbmFsIGluaXRpYWxpemVkIHZhbHVlcy4KCShtZXRob2RfaGVhZGVyKTogRXh0cmFjdCByZWFsIGZ1bmN0aW9uIHR5cGUgZnJvbSBkZXBlbmRlbmN5IG5vZGUuCgkoY2hlY2tfYWJzdHJhY3RfbWV0aG9kX2hlYWRlcik6IFVzZSBHRVRfTUVUSE9EX05BTUUuCgkob2J0YWluX2luY29tcGxldGVfdHlwZSk6IExheW91dCBmYWtlIHBvaW50ZXIgdHlwZS4KCShzYWZlX2xheW91dF9jbGFzcyk6IERvbid0IHRyeSB0byBjaGVjayBmb3IgbWV0aG9kcyBiZWZvcmUgbGF5b3V0LgoJKGphdmFfY29tcGxldGVfY2xhc3MpOiBEb24ndCBjaGVjayBmb3IgY29ycmVjdCB0aHJvd3MgY2xhdXNlCgllbGVtZW50cyBpbmhlcml0YW5jZSBoZXJlLgoJKHJlc29sdmVfYW5kX2xheW91dCk6IEJyb2FkZW5lZCBuYW1lIHBhcmFtZXRlciBtZWFuaW5nLgoJKHJlc2V0X21ldGhvZF9uYW1lKTogVXNlIEdFVF9NRVRIT0RfTkFNRS4KCShqYXZhX2dldF9yZWFsX21ldGhvZF9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzKTogRG9uJ3QgY2hlY2sgbWV0aG9kcyBpbgoJamF2YS5sYW5nLk9iamVjdC4gIFZlcmlmeSBsaW5lYWdlIG9mIHRocm93cyBjbGF1c2UgZWxlbWVudHMuIFVzZQoJZmxhZ19ub19vdmVycmlkaW5nIGluIHdhcm5pbmcgcmVwb3J0LgoJKGNoZWNrX3Rocm93c19jbGF1c2VzKTogRG9uJ3QgY2hlY2sgaWYgY2xhc3Mgd2FzIGZyb20KCWJ5dGVjb2RlLiBVc2UgSVNfVU5DSEVDS0VEX0VYQ0VQVElPTl9QIG1hY3JvLgoJKGphdmFfY2hlY2tfbWV0aG9kcyk6IERvbid0IHNldCBDTEFTU19NRVRIT0RfQ0hFQ0tFRF9QIGZsYWcuCgkoZGVjbGFyZV9sb2NhbF92YXJpYWJsZXMpOiBVc2UgZmxhZ19zdGF0aWNfbG9jYWxfamRrMV8xIHRvIHJlcG9ydAoJd2FybmluZyBvbiB1bnN1cHBvcnRlZCBmaW5hbCBsb2NhbCB2YXJpYWJsZXMuIFVzZSBidWlsZF9kZWNsCglpbnN0ZWFkIG9mIGJ1aWxkX2RlY2xfbm9fbGF5b3V0LiBHZXQgcmVhbCBsb2NhbCB2YXJpYWJsZSB0eXBlIGZyb20KCWRlcGVuZGVuY3kgbm9kZS4KCShzb3VyY2Vfc3RhcnRfamF2YV9tZXRob2QpOiBHZXQgcmVhbCBwYXJhbWV0ZXIgdHlwZSBmcm9tCglkZXBlbmRlbmN5IG5vZGUuIENhbGwgYnVpbGRfZGVjbCBpbnN0ZWFkIG9mIGJ1aWxkX2RlY2xfbm9fbGF5b3V0LgoJKGphdmFfbGF5b3V0X2NsYXNzZXMpOiBSZXZlcnNlIHRyZWUgYW5kIGxheW91dCB0eXBlIGFuZCBjbGFzcyBhcwoJcmVxdWlyZWQuIE1hcmsgY2xhc3MgYXMgbG9hZGVkIHdoZW4gZG9uZS4KCShyZXNvbHZlX2ZpZWxkX2FjY2Vzcyk6IEZpeGVkIGluZGVudGF0aW9uLiBSZXN0cmljdGVkIGNvbmRpdGlvbgoJbGVhZGluZyB0byBzdGF0aWMgZmllbGQgYWNjZXNzIGNvZGUgZ2VuZXJhdGlvbi4gU2V0IGZpZWxkX3R5cGUKCWRlY2wncyBUUkVFX1RZUEUgaWYgUVVBTF9ERUNMX1RZUEUgbm90IGF2YWlsYWJsZS4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBJbml0aWFsaXplIHR5cGVfZm91bmQgdG8KCW51bGwuIEhhbmRsZSBzdGF0aWMgZmllbGQgcmVzb2x2ZWQgZHVyaW5nIHF1YWxpZmljYXRpb24uIEZpeGVkCglsYXlvdXQgb24gbm9uIHByaW1pdGl2ZSBmaWVsZCBkZWNsIHR5cGVzLgoJKG5vdF9hY2Nlc3NpYmxlX3ApOiBGaXhlZCB0eXBvIGluIGNvbW1lbnQuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiBSZXNvbHZlIGFuZCBsYXlvdXQgY2xhc3MgdG8gc2VhcmNoIGZyb20KCXR5cGUuCgkobG9va3VwX21ldGhvZF9pbnZva2UpOiBLZWVwIGludGVnZXIgY29uc3RhbnQgMCBhcyBpcy4gUmVzb2x2ZSBhbmQKCWxheW91dCBub24gcHJpbWl0aXZlIHR5cGUsIGlmIG5lY2Vzc2FyeS4gTWFrZSBtZXRob2Qgbm9kZSBvbmx5IHRvCglyZXBvcnQgZXJyb3JzLgoJKGZpbmRfYXBwbGljYWJsZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCk6IENvbnNpZGVyIFdGTCdlZCBtZXRob2QKCWRlY2wgbmFtZXMuIEZpeGVkIGluZGVudGF0aW9uLgoJKGFyZ3VtZW50X3R5cGVzX2NvbnZlcnRpYmxlKTogUmVzb2x2ZSBhbmQgbGF5b3V0IHRhcmdldCB0eXBlIGlmCgluZWNlc3NhcnkuCgkoamF2YV9jb21wbGV0ZV90cmVlKTogRml4ZWQgaW5kZW50YXRpb24gcHJvYmxlbXMuIFJld3JvdGUKCUNBTExfRVhQUiB0aHJvd24gZXhjZXB0aW9ucyBjaGVjay4gUmUtaW5zdGFsbGVkIGZ1cnRoZXIgcHJvY2Vzc2luZwoJb2YgdGhlIGFzc2lnbm1lbnQgaW4gY2VydGFpbiBjYXNlcy4KCShwYXRjaF9hc3NpZ25tZW50KTogQ2FsbCBtYXliZV9idWlsZF9wcmltdHR5cGVfdHlwZV9yZWYgdG8gcGVyZm9ybQoJaW5saW5pbmcgb24gY2xhc3MgbGl0ZXJhbHMuCgkodmFsaWRfYnVpbHRpbl9hc3NpZ25jb252X2lkZW50aXR5X3dpZGVuaW5nX3ApOiBDb3BlIHdpdGggY29uc3RhbnQKCTAgbGl0ZXJhbC4KCSh2YWxpZF9tZXRob2RfaW52b2NhdGlvbl9jb252ZXJzaW9uX3ApOiBMaWtld2lzZS4KCShwYXRjaF9zdHJpbmcpOiBUZW1wb3JhcnkgZGlzYWJsZSBmb3JiaWRkZW4gdXNlIG9mIGB0aGlzJyBpbgoJZXhwbGljaXQgY29uc3RydWN0b3IgaW52b2NhdGlvbnMgd2hlbiBkb2luZyBzdHJpbmcgY29uY2F0ZW5hdGlvbgoJd2l0aGluIHRoZWlyIHNjb3BlLgoJKHBhdGNoX3VuYXJ5b3ApOiBBZGRlZCBjb21tZW50LiBSZWluc3RhbGxlZCBjb2RlIHRvIGRpc2FibGUKCWZ1cnRoZXIgY2hlY2sgb24gYXNzaWdubWVudCBvcGVyYXRpb24gd2l0aCBjYXN0IGV4cHJlc3Npb24gUkhTLgoJKHBhdGNoX3N3aXRjaF9zdGF0ZW1lbnQpOiBGaXhlZCBpbmRlbnRhdGlvbi4KCShidWlsZF90cnlfc3RhdGVtZW50KTogQ2FsbCBidWlsZF9kZWNsIGluc3RlYWQgb2YKCWJ1aWxkX2RlY2xfbm9fbGF5b3V0LgoJKHBhdGNoX3N5bmNocm9uaXplZF9zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCShwYXRjaF90aHJvd19zdGF0ZW1lbnQpOiBVc2UgSVNfVU5DSEVDS0VEX0VYQ0VQVElPTl9QIGluc3RlYWQgb2YKCUlTX1VOQ0hFQ0tFRF9FWFBSRVNTSU9OX1AuCgkoY2hlY2tfdGhyb3duX2V4Y2VwdGlvbnNfZG8pOiBDaGFuZ2VkIGxlYWRpbmcgY29tbWVudC4gUmVzb2x2ZSBhbmQKCWxheW91dCBhcmd1bWVudCBleGNlcHRpb24gdHlwZS4KCShwdXJnZV91bmNoZWNrZWRfZXhjZXB0aW9ucyk6IFVzZSBJU19VTkNIRUNLRURfRVhDRVBUSU9OX1AgaW5zdGVhZAoJb2YgSVNfVU5DSEVDS0VEX0VYUFJFU1NJT05fUC4KCjE5OTgtMTEtMTggIEFudGhvbnkgR3JlZW4gIDxncmVlbkBjeWdudXMuY29tPgoKCSogamNmLXBhcnNlLmMgKHl5cGFyc2UpOiBPcGVuIGNsYXNzIGZpbGUgaW4gYmluYXJ5IG1vZGUuCgoxOTk4LTExLTE1ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGp2Z2VubWFpbi5jOiAgTmVlZCB0byAjaW5jbHVkZSAiZ2Fuc2lkZWNsLmgiICh0byBnZXQgUFJPVE8pLgoKCSogamNmLXdyaXRlLmMgKHBlcmZvcm1fcmVsb2NhdGlvbnMpOiAgTW92ZSBjaGVjayBvdXQgb25lIGxvb3AuCgoxOTk4LTExLTE1ICBBbnRob255IEdyZWVuICA8Z3JlZW5AaG9zZXIuY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogRml4IHJlZmVyZW5jZSB0byBzcmNkaXIuCgkqIGp2LXNjYW4uYzogQWRkIG1pc3NpbmcgeG1hbGxvYyBwcm90b3R5cGUuCgkqIGp2Z2VubWFpbi5jOiBEaXR0by4KCjE5OTgtMTEtMTUgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogZGVjbC5jIChlcnJvcl9tYXJrX25vZGUpLCBqYXZhLXRyZWUuaDogIE5ldyBnbG9iYWwuCgkqIHBhcnNlLnk6ICBVc2UgZW1wdHlfc3RtdF9ub2RlIGluc3RlYWQgb2Ygc2l6ZV96ZXJvX25vZGUuCgkoYnVpbGRfaWZfZWxzZV9zdGF0ZW1lbnQpOiAgSWYgbWlzc2luZyBlbHNlLCB1c2UgZW1wdHlfc3RtdF9ub2RlLgoKCSogcGFyc2UueSAobm90X2luaXRpYWxpemVkX2FzX2l0X3Nob3VsZF9wKTogIFJlbW92ZWQsIHdpdGggaXRzIGNhbGxlcnMuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kKTogIENvbXBsYWluIGlmIHJldHVybiBpcyBtaXNzaW5nLgoJKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzKTogIENvbW1lbnQgb3V0IGluY29ycmVjdCBlcnJvciBjaGVjay4KCShub3RfYWNjZXNzaWJsZV9wKTogIEZpeCBpbmNvcnJlY3QgaGFuZGxpbmcgb2YgcHJvdGVjdGVkIG1ldGhvZHMuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb24pOiAgUGFzcyBjb3JyZWN0IGNvbnRleHQgdG8gbm90X2FjY2Vzc2libGVfcC4KCShmaW5kX2FwcGxpY2FibGVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QpOiAgTGlrZXdpc2UuCgkocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6ICBJZiBBUlJBWV9SRUYsIGl0J3MgYW4gZXhwcmVzc2lvbiBuYW1lLgoJKGphdmFfY29tcGxldGVfdHJlZSk6ICBGb3IgQ0FTRV9FWFBSIGFuZCBERUZBVUxUX0VYUFIsIHNldAoJVFJFRV9UWVBFICh0byB2b2lkX3R5cGVfbm9kZSk7ICBvdGhlcndpc2UgZXhwYW5kX2V4cHIgY3Jhc2hlcy4KCShwYXRjaF9pZl9lbHNlX3N0YXRlbWVudCk6ICBGaXggc2V0dGluZyBvZiBDQU5fQ09NUExFVEVfTk9STUFMTFkuCgoJKiBqY2Ytd3JpdGUuYyAoQ0hFQ0tfT1AsIENIRUNLX1BVVCk6ICBBZGQgc29tZSBlcnJvciBjaGVja2luZy4KCShwdXNoX2ludF9jb25zdCk6ICBSZW1vdmUgcmV1bmRhbnQgTk9URV9QVVNILgoJKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zIC0gY2FzZSBTVFJJTkdfQ1NUKTogIERvIE5PVEVfUFVTSC4KCSgtIGNhc2UgU1dJVENIX0VYUFIpOiAgRml4IGNvZGUgZ2VuZXJhdGlvbiBidWcuCgkoLSBjYXNlIFBSRURFQ1JFTUVOVF9FWFBSIGV0Yyk6ICBSZW1vdmUgcmVkdW5kYW50IE5PVEVfUFVTSC4KCShnZW5lcmF0ZV9jbGFzc2ZpbGUpOiAgTW9yZSByb2J1c3QgZm9yIGFic3RyYWN0IG1ldGhvZHMuCgoxOTk4LTExLTE1ICBBbnRob255IEdyZWVuICA8Z3JlZW5AY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBqdi1zY2FuIGFuZCBqdmdlbm1haW4gYWxsIHJlcXVpcmUgbGliaWJlcnR5LgoJKiBNYWtlLWxhbmcuaW46IERpdHRvLgoKCSoganYtc2Nhbi5jOiBSZW1vdmUgeG1hbGxvYyBhbmQgeHN0cmR1cCBkZWZpbml0aW9ucy4KCSoganZnZW5tYWluOiBEaXR0by4KCjE5OTgtMTEtMTUgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogamNmLXBhcnNlLmMgKEhBTkRMRV9FWENFUFRJT05TX0FUVFJJQlVURSk6ICBOZXcgbWFjcm8uCgoJKiBqY2YtaW8uYyAoZmluZF9jbGFzcyk6ICBTaW1wbGVyL2NsZWFuZXIgc3RydWN0dXJlIGZpeGVzIGEgYnVnLgoKMTk5OC0xMS0xNCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJQWxsb3cgdXNlcyBvZiBpbnRlcmZhY2UgdHlwZXMgdG8gdmVyaWZ5LiAgVGhpcyBpcyBub3QgcmVhbGx5Cgl0eXBlLXNhZmUsIGJ1dCBpdCBtYXRjaGVzIHdoYXQgU3VuIGRvZXMsIGFuZCBpcyBPSyBhcyBsb25nIGFzCgl0aGVyZSBhcmUgYXBwcm9wcmlhdGUgcnVuLXRpbWUgY2hlY2tzLgoJKiB2ZXJpZnkuYyAobWVyZ2VfdHlwZXMpOiAgSWYgbWVyZ2luZyB0d28gaW50ZXJmYWNlIHR5cGVzLAoJanVzdCBzZXQgdGhlIHJlc3VsdCB0byBqYXZhLmxhbmcuT2JqZWN0LgoJKiBleHByLmMgKHBvcF90eXBlKTogIEFueSBpbnRlcmZhY2UgaXMgbWF0Y2hlcyBieSBqYXZhLmxhbmcuT2JqZWN0LgoKMTk5OC0xMS0xMyAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKG1haW4pOiBIYW5kbGUgLS1vdXRwdXQtY2xhc3MtZGlyZWN0b3J5IGFyZ3VtZW50LgoJKiBqdnNwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBUcmFuc2xhdGUgYC1kJyBpbnRvCgktZm91dHB1dC1jbGFzcy1kaXIuCgkqIGpjZi5oIChqY2Zfd3JpdGVfYmFzZV9kaXJlY3RvcnkpOiBEZWNsYXJlLgoJKiBsYW5nLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IFJlY29nbml6ZSAtZm91dHB1dC1jbGFzcy1kaXIuCgkqIGxhbmctb3B0aW9ucy5oOiBNZW50aW9uIC1mb3V0cHV0LWNsYXNzLWRpci4KCSogamNmLXdyaXRlLmMgKGpjZl93cml0ZV9iYXNlX2RpcmVjdG9yeSk6IE5ldyBnbG9iYWwuCgkobWFrZV9jbGFzc19maWxlX25hbWUpOiBQdXQgZ2VuZXJhdGVkIC5jbGFzcyBmaWxlIGludG8gYC1kJwoJZGlyZWN0b3J5LCBvciBpbnRvIHNvdXJjZSBkaXJlY3RvcnkgaWYgLWQgbm90IGdpdmVuLiAgRnVuY3Rpb24gbm93CglzdGF0aWMuCgkod3JpdGVfY2xhc3NmaWxlKTogRnJlZSBjbGFzcyBmaWxlIG5hbWUuICBIYW5kbGUgY2FzZSB3aGVyZSBjbGFzcwoJZmlsZSBuYW1lIGlzIE5VTEwuCgkoRElSX1NFUEFSQVRPUik6IE5ldyBtYWNyby4KCUluY2x1ZGUgPHN5cy9zdGF0Lmg+CgoJKiBNYWtlZmlsZS5pbiAocHJlZml4KTogTmV3IG1hY3JvLgoKMTk5OC0xMS0xMiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChwYXRjaF9pbnZva2UpOiAgRG8gbGVzcyBpZiBmbGFnX2VtaXRfY2xhc3NfZmlsZXMuCgkqIGV4cHIuYyAoYnVpbGRfa25vd25fbWV0aG9kX3JlZik6ICBEb24ndCBjaGVjayBmbGFnX2VtaXRfY2xhc3NfZmlsZXMKCWhlcmUgKGRvbmUgaW4gcGF0Y2hfaW52b2tlIGluc3RlYWQpLgoJKGNhc2VfaWRlbnRpdHkpOiAgTW92ZWQgaGVyZSBmcm9tIHBhcnNlLnkuCgoJKiBqYXZhLXRyZWUuaCAoQ0FOX0NPTVBMRVRFX05PUk1BTExZKTogIE5ldyBtYWNyby4KCSogcGFyc2UueSAoamF2YV9jb21wbGV0ZV90cmVlIGV0Yyk6ICBNYXliZSBzZXQgQ0FOX0NPTVBMRVRFX05PUk1BTExZLgoJKiBwYXJzZS55IChqYXZhX2NvbXBsZXRlX3RyZWUpOiAgUmUtb3JkZXIgQ09NUE9VTkRfRVhQUiBpbiBCTE9DSwoJc28gdGhleSBjYW4gYmUgZWZmaWNpZW50bHkgc2Nhbm5lZCB3aXRob3V0IHJlY3Vyc2lvbi4KCUVycm9yIGl0ICEgQ0FOX0NPTVBMRVRFX05PUk1BTExZIGZpcnN0IHBhcnQgb2YgQ09NUE9VTkRfRVhQUi4KCSogZXhwci5jIChqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiAgRXhwYW5kIHN0YXRlbWVudHMgb2YgQ09NUE9VTkRfRVhQUgoJaW4gQkxPQ0sgaXRlcmF0aXZlbHksIHJhdGhlciB0aGFuIHJlY3Vyc2l2ZWx5LgoKCSogcGFyc2UueSAoZG9fdW5hcnlfbnVtZXJpY19wcm9tb3Rpb24pOiAgTmV3IGZ1bmN0aW9uLgoJKHBhdGNoX3VuYXJ5b3AsIHBhdGNoX2Jpbm9wLCBwYXRjaF9hcnJheV9yZWYpOiAgVXNlIGl0LgoKCSogcGFyc2UueSAocGF0Y2hfbmV3YXJyYXkpOiAgVmFyaW91cyBmaXhlcy4KCglSZS1kbyBoYW5kbGluZyBvZiBzd2l0Y2ggc3RhdGVtZW50cyAoZm9yIHByb3BlciBibG9jayBzY29waW5nKS4KCSogcGFyc2UueTogIEFkZCBqdXN0IGEgc2luZ2xlIGJsb2NrIGZvciB0aGUgZW50dXJlIHN3aXRjaCBibG9jaywKCWJ1dCBkb24ndCBjcmVhdGUgYW55ICJjYXNlIGJsb2NrcyIuCgkoZ3JvdXBfb2ZfbGFiZWxzKTogIFJtZW92ZWQgdW5uZWVkZWQgbm9uLXRlcm1pbmFsLgoJQ0FTRV9FWFBSIGFuZCBERUZBVUxUX0VYUFIgYXJlIGFkZGVkIHRvIGN1cnJlbnQgYmxvY2suCgkqIGV4cHIuYyAoamF2YV9sYW5nX2V4cGFuZF9leHByKTogIElubGluZSBTV0lUQ0hfRVhQUiBoZXJlLgoJTm93IGFsc28gbmVlZCB0byBoYW5kbGUgQ0FTRV9FWFBSIGFuZCBERUZBVUxUX0VYUFIuCgkqIGphdmEtdHJlZS5oIChTV0lUQ0hfSEFTX0RFRkFVTFQpOiAgTmV3IG1hY3JvLgoJKiBwYXJzZS55ICh3Zmxfb3BlcmF0b3IsIHByaW50X2ludF9ub2RlKTogTWFrZSBub24tc3RhdGljLgoJKGphdmFfY29tcGxldGVfdHJlZSk6ICBDQVNFX0VYUFIgYW5kIERFRkFVTFRfRVhQUiBhcmUgbm93IHByb2Nlc3NlZAoJYXMgcGFydCBvZiByZWN1cnNpdmUgc2NhbiBvZiBibG9jay4KCShqYXZhX2V4cGFuZF9zd2l0Y2ggKTogIFJlbW92ZWQgLSBpbmxpbmVkIGludG8gamF2YV9sYW5nX2V4cGFuZF9leHByLgoJKHBhdGNoX3N3aXRjaF9zdGF0ZW1lbnQpOiAgTW9zdCB0ZXN0cyBtb3ZlIGRpbnRvIGphdmFfY29tcGxldGVfdHJlZS4KCgkqIHBhcnNlLnk6ICBNYWtlIHZhcmlvdXMgcHJvZHVjdGlvbiBiZSBub24tdHlwZWQgKHZvaWQpLgoJKiBwYXJzZS55IChwYXJzZV9lcnJvcik6ICBNZXJnZWQgaW50byBpc3N1ZV93YXJuaW5nX2Vycm9yX2Zyb21fY29udGV4dC4KCSogcGFyc2UueSAoYWRkX3N0bXRfdG9fY29tcG91bmQpOiAgRG9uJ3QgY3JlYXRlL2NoYW5nZSBleHRyYSBub2RlLgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uX3N0bXQpOiAgUmVuYW1lZCB0byBwYXRjaF9tZXRob2RfaW52b2NhdGlvbi4KCgkqIGpjZi13cml0ZS5jIChzdHJ1Y3QgamNmX2hhbmRsZXIpOiAgTmV3IHR5cGUuCgkoc3RydWN0IGpjZl9zd2l0Y2hfc3RhdGUpOiAgTmV3IHR5cGUuCgkoU1dJVENIX0FMSUdOX1JFTE9DLCBCTE9DS19TVEFSVF9SRUxPQyk6ICBOZXcgcmVsb2NhdGlvbiBraW5kcy4KCShhbGxvY19oYW5kbGVyLCBlbWl0X3Vub3AsIGVtaXRfcmVsb2MpOiAgTmV3IGZ1bmN0aW9ucy4KCShhZGp1c3RfdHlwZWRfb3ApOiAgQWRkIGV4dHJhIHBhcmFtZXRlciAoIm1heCB0eXBlIiBvZmZzZXQpLgoJKGVtaXRfc3dpdGNoX3JlbG9jLCBlbWl0X2Nhc2UtcmVsb2MpOiAgTmV3IGZ1bmN0aW9uLgoJKGdlbmVyYXRlX2J5dGVjb2RlX2NvbmRpdGlvbmFsKTogIEhhbmRsZSBSRUFMX1RZUEUgY29tcGFyaXNvbnMuCgkoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiAgU3VwcG9ydCBSRUFMX0NTVCwgc3dpdGNoIHN0YXRlbWVudHMsCglleGNlcHRpb24gaGFuZGxpbmcsIG1ldGhvZCBjYWxscywgb2JqZWN0L2FycmF5IGNyZWF0aW9uLCBhbmQgbW9yZS4KCgkqIGNsYXNzLmM6ICBSZW1vdmUgc29tZSB1bnVzZWQgdmFyaWFibGVzLgoJKiBjb25zdGFudHMuYyAoZmluZF9zdHJpbmdfY29uc3RhbnQpOiAgTmV3IGZ1bmN0aW9uLgoJKGNvdW50X2NvbnN0YW50X3Bvb2xfYnl0ZXMpOiAgRml4IHRvIGNvcnJlY3RseSBoYW5kbGUgd2lkZSBjb25zdGFudHMuCgkqIGRlY2wuYyAoY29tcGxldGVfc3RhcnRfamF2YV9tZXRob2QpOiAgRG9uJ3QgX0p2X0luaXRDbGFzcwoJaWYgZmxhZ19lbWl0X2NsYXNzX2ZpbGVzLgoKMTk5OC0xMS0xMiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogamNmLWlvLmMgKGZpbmRfY2xhc3MpOiBBZGRlZCBleHBsYW5hdG9yeSBjb21tZW50LgoKCSogamNmLXBhdGguYyAoYWRkX2VudHJ5KTogTG9vayBmb3IgYC56aXAnIGF0IGVuZCBvZiBmaWxlbmFtZS4gIEFkZAoJdHJhaWxpbmcgc2xhc2ggdG8gYC56aXAnIGVudHJpZXMuCgoJKiBqdnNwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBDb3JyZWN0bHkgaGFuZGxlIGNhc2Ugd2hlcmUKCUdDX05BTUUgbm90IGRlZmluZWQuCgoxOTk4LTExLTExICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBqdnNwZWMuYyAoR0NfTkFNRSk6IE5ldyBkZWZpbmUuCgkobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBVc2UgR0NfTkFNRS4gIEFkZCBHQ19OQU1FIHRvIGNvbW1hbmQgbGluZQoJaWYgcmVxdWlyZWQuCgkqIE1ha2UtbGFuZy5pbiAoanZzcGVjLm8pOiBEZWZpbmUgV0lUSF9HQ188bmFtZT4uCgoxOTk4LTExLTExICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGpjZi1kdW1wLmMgKFRBQkxFX1NXSVRDSCk6ICBGaXggdHlwb3MuCgoxOTk4LTExLTExICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBqY2YtZHVtcC5jIChtYWluKTogQ29ycmVjdGx5IHJlY29nbml6ZSBgLS0nLXN0eWxlIGxvbmcgb3B0aW9ucy4KCjE5OTgtMTEtMTAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoaXNfY29tcGlsZWRfY2xhc3MpOiBDYWxsIHNhZmVfbGF5b3V0X2NsYXNzIGZvciBjbGFzcwoJY29tcGlsZWQgZnJvbSBzb3VyY2UuCgkqIGNvbnZlci5oIChjb252ZXJ0X3RvX2ludGVnZXIsIGNvbnZlcnRfdG9fcmVhbCwKCWNvbnZlcnRfdG9fcG9pbnRlcik6IEFkZGVkIHByb3RvdHlwZXMuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBOb24gbG9uZ2VyIHB1c2ggdGhlIGRlY2xzIG9mCglgbWV0aG9kdGFibGUnLCBgY29uc3RhbnRzJywgYENsYXNzJywgYEZpZWxkJywgYGRpc3BhdGNoVGFibGUnCglgamV4Y2VwdGlvbicgYW5kIGBNZXRob2QnLgoJKiBleHByLmMgKGJ1aWxkX2ludm9rZWludGVyZmFjZSk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfaW52b2tlKTogc3RhdGljIHZhcmlhYmxlIENMQVNTX0lERU5UIG5vdyBpbgoJYnVpbGRfaW52b2tlaW50ZXJmYWNlLiBVc2UgYnVpbGRfaW52b2tlaW50ZXJmYWNlLgoJKGV4cGFuZF9qYXZhX2ZpZWxkX29wKTogTW92ZWQgY29kZSB0byBpbmxpbmUKCWphdmEubGFuZy5QUklNVFlQRS5UWVBFIGludG8gYSBmdW5jdGlvbi4KCShidWlsZF9wcmltdHlwZV90eXBlX3JlZik6IE5ldyBmdW5jdGlvbi4KCSogamF2YS10cmVlLmRlZiAoSU5TVEFOQ0VPRl9FWFBSKTogTmV3IHRyZWUgY29kZS4KCSogamF2YS10cmVlLmggKENMQVNTX01FVEhPRF9DSEVDS0VEX1AsIE1FVEhPRF9ERVBSRUNBVEVELAoJRklFTERfREVQUkVDQVRFRCwgQ0xBU1NfREVQUkVDQVRFRCk6IE5ldyBmbGFnIG1hY3Jvcy4KCShERUNMX0NPTlNUUlVDVE9SX1ApOiBGaXhlZCB0eXBvIGluIGNvbW1lbnQuCgkoREVDTF9MT0NBTF9TVEFUSUNfVkFMVUUpOiBOZXcgbWFjcm8uCgkoYnVpbGRfaW52b2tlaW50ZXJmYWNlLCBidWlsZF9wcmltdHlwZV90eXBlX3JlZik6IE5ldyBmdW5jdGlvbgoJcHJvdG90eXBlcy4KCShqYXZhX3BhcnNlX2Fib3J0X29uX2Vycm9yKTogTWFjcm8gcmV3cml0dGVuLgoJKiBqY2YtcGFyc2UuYyAoY3VycmVudF9tZXRob2QpOiBBZGQgY29tbWVudCB0byBkZWNsYXJhdGlvbi4KCShwYXJzZV96aXBfZmlsZV9lbnRyaWVzLCBwcm9jZXNzX3ppcF9kaXIsIHZvaWQgcGFyc2Vfc291cmNlX2ZpbGUpOgoJRnVuY3Rpb24gcHJvdG90eXBlcyBmaXhlZC4KCShqY2ZfcGFyc2Vfc291cmNlKTogcHVzaC9wb3AgcGFyc2VyIGNvbnRleHQuIHNhdmUvcmVzdG9yZSBnbG9iYWwuCgkocGFyc2Vfc291cmNlX2ZpbGUpOiBGaXhlZCBsZWFkaW5nIGNvbW1lbnQuIE5vdyB0YWtlIGEKCUlERU5USUZJRVJfTk9ERSBhcyBhbiBhcmd1bWVudC4gRG9lc24ndCBjaGVjayBtZXRob2RzLCBsYXlvdXQKCWNsYXNzZXMgYW5kIHBvcCB0aGUgcGFyc2VyIGNvbnRleHQgYW55bW9yZS4KCSh5eXBhcnNlKTogUHVzaCBwYXJzZXIgY29udGV4dCwgc2F2ZSBnbG9iYWxzLCBwYXJzZSB0aGUgc291cmNlCglmaWxlLCByZXN0b3JlIGdsb2JhbHMgYW5kIHBvcCB0aGUgcGFyc2VyIGNvbnRleHQgd2hlbiBwcm9jZXNzaW5nIGEKCXNvdXJjZSBmaWxlLgoJKiBqY2YuaCAoVkVSQk9TRV9TS0VMRVRPTik6IFJlcGxhY2VzIFNPVVJDRV9GUk9OVEVORF9ERUJVRyBkZWZpbmUuCgkqIGxleC5jIChqYXZhX3BhcnNlX2RvY19zZWN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfbGV4KTogQ2FsbCBqYXZhX3BhcnNlX2RvY19zZWN0aW9uIHdoZW4gYXBwcm9wcmlhdGUuIEJ1aWxkIGFuCglvcGVyYXRvciBhcm91bmQgSU5TVEFOQ0VPRl9USy4KCSogbGV4LmggKGphdmFfbGluZXRlcm1pbmF0b3IsIGphdmFfc3ByaW50X3VuaWNvZGUsCglqYXZhX3VuaWNvZGVfMl91dGY4LCBqYXZhX2xleF9lcnJvciwgamF2YV9zdG9yZV91bmljb2RlKToKCVByb3RvdHlwZXMgcmV3cml0dGVuLgoJKGphdmFfcGFyc2VfZXNjYXBlX3NlcXVlbmNlLCBqYXZhX2xldHRlcl9vcl9kaWdpdF9wLAoJamF2YV9wYXJzZV9kb2Nfc2VjdGlvbiwgamF2YV9wYXJzZV9lbmRfY29tbWVudCwgamF2YV9nZXRfdW5pY29kZSwKCWphdmFfcmVhZF91bmljb2RlLCBqYXZhX3N0b3JlX3VuaWNvZGUsIGphdmFfcmVhZF9jaGFyLAoJamF2YV9hbGxvY2F0ZV9uZXdfbGluZSwgamF2YV91bmdldF91bmljb2RlLCBqYXZhX3NuZWFrX3VuaWNvZGUpOgoJQWRkZWQgZnVuY3Rpb24gcHJvdG90eXBlcy4KCSogcGFyc2UuaCAoVkVSQk9TRV9TS0VMRVRPTik6IFJlcGxhY2VzIFNPVVJDRV9GUk9OVEVORF9ERUJVRwoJZGVmaW5lLgoJKEpOVUxMUF9UWVBFX1AsIENIRUNLX01FVEhPRFMsIENIRUNLX0RFUFJFQ0FURUQsIFJFR0lTVEVSX0lNUE9SVCk6CglOZXcgbWFjcm9zCgkoc3RydWN0IHBhcnNlcl9jdHh0KTogTmV3IGZpZWxkczogZGVwcmVjYXRlZCwKCWN1cnJlbnRfcGFyc2VkX2NsYXNzX3VuLCBnY2xhc3NfbGlzdC4KCShmaXhfbWV0aG9kX2FyZ3VtZW50X25hbWVzLCBpc3N1ZV93YXJuaW5nX2Vycm9yX2Zyb21fY29udGV4dCwKCXJlc29sdmVfcGFja2FnZSwgbG9va3VwX3BhY2thZ2VfdHlwZSk6IE5ldyBmdW5jdGlvbiBwcm90b3R5cGVzLgoJKHJlc29sdmVfZXhwcmVzc2lvbl9uYW1lKTogRml4ZWQgZnVuY3Rpb24gcHJvdG90eXBlLgoJKGZpbmRfYXBwbGljYWJsZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCk6IEZpeGVkIGluZGVudGF0aW9uLCBhZGRlZAoJZXh0cmEgYXJndW1lbnQgaW4gcHJvdG90eXBlLgoJKGNoZWNrX2ZpbmFsX2Fzc2lnbm1lbnQsIGJ1aWxkX251bGxfb2ZfdHlwZSwgY2hlY2tfZGVwcmVjYXRpb24sCgljaGVja19tZXRob2RfcmVkZWZpbml0aW9uLCByZXNldF9tZXRob2RfbmFtZSwKCWphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzLCBqYXZhX2NoZWNrX2Fic3RyYWN0X21ldGhvZHMsCgltYXliZV9idWlsZF9wcmltdHR5cGVfdHlwZV9yZWYpOiBOZXcgZnVuY3Rpb24gcHJvdG90eXBlLgoJKiBwYXJzZS55IChjb252ZXIuaCk6IEluY2x1ZGUuCgkoSU5TVEFOQ0VPRl9USyk6IFRhZ2dlZCA8b3BlcmF0b3I+LgoJKHNpbmdsZV90eXBlX2ltcG9ydF9kZWNsYXJhdGlvbik6IFVzZSBSRUdJU1RFUl9JTVBPUlQgbWFjcm8uCgkocmVsYXRpb25hbF9leHByZXNzaW9uOik6IEJ1aWxkIGJpbm9wIGZvciBpbnN0YW5jZW9mLgoJKGphdmFfcHVzaF9wYXJzZXJfY29udGV4dCk6IFJlbWVtYmVyIGN0eHAtPmdjbGFzc19saXN0IGFjcm9zcwoJY29udGV4dHMuCgkoamF2YV9wb3BfcGFyc2VyX2NvbnRleHQpOiBTaW1wbHkgcmV0dXJuIGlmIG5vIGNvbnRleHQKCWV4aXN0cy4gUmVtZW1iZXIgZ2NsYXNzX2xpc3QgYWNyb3NzIGNvbnRleHRzLgoJKGlzc3VlX3dhcm5pbmdfZXJyb3JfZnJvbV9jb250ZXh0KTogTmV3IGZ1bmN0aW9uLgoJKHBhcnNlX2Vycm9yX2NvbnRleHQpOiBEb24ndCBzZXR1cCBjdHhwLT5lbGMgaGVyZS4gQ2FsbAoJaXNzdWVfd2FybmluZ19lcnJvcl9mcm9tX2NvbnRleHQgaW5zdGVhZC4KCShwYXJzZV93YXJuaW5nX2NvbnRleHQpOiBMaWtld2lzZS4KCShtYXliZV9jcmVhdGVfY2xhc3NfaW50ZXJmYWNlX2RlY2wpOiBSZW1vdmVkIERFQ0xfQVJUSUZJQ0lBTAoJc2V0dXAuIExpbmsgbmV3IGNsYXNzL2ludGVyZmFjZSB0byBjdHhwLT5nY2xhc3NfbGlzdC4KCShhZGRfc3VwZXJpbnRlcmZhY2VzKTogUmVnaXN0ZXIgaW50ZXJmYWNlIGFzIGluY29tcGxldGUgaWYgbm90Cglsb2FkZWQuCgkoY3JlYXRlX2NsYXNzKTogUmVtZW1iZXIgY2xhc3MgdW5xdWFsaWZpZWQgbmFtZSBpbgoJY3R4cC0+Y3VycmVudF9wYXJzZWRfY2xhc3NfdW4uIENoZWNrIGNsYXNzIGRlcHJlY2F0aW9uLgoJKHJlZ2lzdGVyX2ZpZWxkcyk6IENoZWNrIGZpZWxkIGRlcHJlY2F0aW9uLiBSZW1lbWJlciBzdGF0aWMgZmluYWwKCWZpZWxkIHZhbHVlIGluIERFQ0xfTE9DQUxfU1RBVElDX1ZBTFVFLiBDaGFuZ2VkIGNvbW1lbnQgaW4gcGFydAoJcHJvY2Vzc2luZyBJTklULgoJKG1ldGhvZF9oZWFkZXIpOiBOZXcgbG9jYWwgdmFyaWFibGUgT1JJR19BUkcuIFVzZSB1bnF1YWxpZmllZAoJY3VycmVudCBjbGFzcyBuYW1lIGZvciBjaGVjayBvbiBjb25zdHJ1Y3RvciBlcnJvcnMuIFByb21vdGUgcmV0dXJuCgl0eXBlIGlmIG9mIHJlY29yZCB0eXBlLiBBcmd1bWVudCBsaXN0IGZpeCBtb3ZlZCBpbgoJZml4X21ldGhvZF9hcmd1bWVudF9uYW1lcywgY2FsbGVkIGhlcmUuIENoZWNrIG1ldGhvZCBkZXByZWNhdGlvbi4KCShmaXhfbWV0aG9kX2FyZ3VtZW50X25hbWVzKTogTmV3IGZ1bmN0aW9uLgoJKG1ldGhvZF9kZWNsYXJhdG9yKTogUHJvbW90ZSByZWNvcmQgdHlwZWQgYXJndW1lbnRzLgoJKHNhZmVfbGF5b3V0X2NsYXNzKTogQ2hlY2sgY2xhc3MgbWV0aG9kcyBiZWZvcmUgbGF5b3V0LgoJKGphdmFfY29tcGxldGVfY2xhc3MpOiBDb21wdXRlIGZpZWxkIGxheW91dCB3aGVuIHBhdGNoZWQuCgkoZG9fcmVzb2x2ZV9jbGFzcyk6IFRyeSB0byBsb2FkIGNsYXNzIGFmdGVyIGhhdmluZyBpdCByZW5hbWVkCglhZnRlciB0aGUgcGFja2FnZSBuYW1lLgoJKGdldF9wcmludGFibGVfbWV0aG9kX25hbWUpOiBVc2UgREVDTF9DT05URVhULgoJKHJlc2V0X21ldGhvZF9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKGNoZWNrX21ldGhvZF9yZWRlZmluaXRpb24pOiBVc2UgcmVzZXRfbWV0aG9kX25hbWUuCgkoamF2YV9jaGVja19yZWd1bGFyX21ldGhvZHMpOiBOZXcgbG9jYWwgdmFyaWFibGUKCVNBVkVEX0ZPVU5EX1dGTC4gVGVtcG9yYXJpbHkgcmVpbnN0YWxsIG92ZXJyaWRpbmcvaGlkaW5nIG1ldGhvZAoJbmFtZXMgZm9yIGVycm9yIHJlcG9ydC4gQ2hlY2sgZm9yIGNvbXBpbGUtdGltZSBlcnJvciB3aGVuIG1ldGhvZAoJZm91bmQgaGFzIGRlZmF1bHQgKHBhY2thZ2UpIGFjY2Vzcy4KCShqYXZhX2NoZWNrX2Fic3RyYWN0X21ldGhvZHMpOiBOb3cgdGFrZXMgYW4gaW50ZXJmYWNlIERFQ0wgbm9kZSBhcwoJYW4gYXJndW1lbnQuIEFsc28gcmVpbnN0YWxsIHJlYWwgbmFtZSBvbiB1bmNoZWNrZWQKCW92ZXJyaWRpbmcvaGlkaW5nIG1ldGhvZHMgZm9yIGVycm9yIHJlcG9ydC4KCShqYXZhX2NoZWNrX21ldGhvZHMpOiBGaXhlZCBsZWFkaW5nIGNvbW1lbnQuIEdldCBjbGFzc2VzIHRvIHZlcmlmeQoJZnJvbSBjdHhwLT5nY2xhc3NfbGlzdC4gVXNlIENIRUNLX01FVEhPRFMgbWFjcm8gYW5kIHNldAoJQ0xBU1NfTUVUSE9EX0NIRUNLRURfUCBvbiBjbGFzcyB2ZXJpZmljYXRpb24uCgkobG9va3VwX2phdmFfbWV0aG9kMik6IEdldCByZWFsIG1ldGhvZCBuYW1lIGlmIG5lY2Vzc2FyeS4KCShmaW5kX2luX2ltcG9ydHMpOiBEb24ndCBjaGVjayBwYWNrYWdlIGNsYXNzIGFjY2VzcyBoZXJlLgoJKHJlc29sdmVfcGFja2FnZSwgbG9va3VwX3BhY2thZ2VfdHlwZSk6IE5ldyBmdW5jdGlvbnMuCgkoamF2YV9sYXlvdXRfY2xhc3Nlcyk6IEZpeGVkIGxlYWRpbmcgY29tbWVudC4gVGFrZSBjbGFzc2VzIHRvIGJlCglsYWlkIG91dCBmcm9tIGN0eHAtPmdjbGFzc19saXN0LgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZHMpOiBEb24ndCBleHBhbmQgbmF0aXZlIGFuZCBhYnN0cmFjdAoJbWV0aG9kcy4KCShqYXZhX2V4cGFuZF9jbGFzc2VzKTogTmV3IGZ1bmN0aW9uLgoJKHJlc29sdmVfZXhwcmVzc2lvbl9uYW1lKTogVXNlIGFkZGl0aW9uYWwgYXJndW1lbnQgT1JJRy4gIFJldHJpZXZlCgl2YWx1ZXMgb2Ygc3RhdGljIGZpbmFsIGZpZWxkIG9mIHByaW1pdGl2ZSB0eXBlcy4KCShyZXNvbHZlX2ZpZWxkX2FjY2Vzcyk6IEhhbmRsZXMgc3RhdGljIGZpbmFsIGZpZWxkIG9mIHByb21vdGl2ZQoJdHlwZS4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBIYW5kbGUgU1RSSU5HX0NTVCBhcwoJcHJpbWFyaWVzIGFuZCBwYWNrYWdlIG5hbWUgcmVzb2x1dGlvbi4gQ2hlY2sgZGVwcmVjYXRpb24gb24gZm91bmQKCWRlY2xzLiBTZXQgd2hlcmVfZm91bmQgYW5kIHR5cGVfZm91bmQgb24gbm9uIHN0YXRpYyBmaWVsZCByZXNvbHZlZAoJZHVyaW5nIHF1YWxpZmljYXRpb24uIExheW91dCBub24gcHJpbWl0aXZlIGZpZWxkIGRlY2wgdHlwZXMuCgkoY2hlY2tfZGVwcmVjYXRpb24pOiBOZXcgZnVuY3Rpb24uCgkobWF5YmVfYWNjZXNzX2ZpZWxkKTogU2ltcGxpZmllZC4KCShwYXRjaF9tZXRob2RfaW52b2NhdGlvbl9zdG10KTogTG9jYWwgdmFyaWFibGUgQ0xBU1NfVFlQRQoJcmVtb3ZlZC4gUmV2ZXJzZSBtZXRob2QncyBhcmd1bWVudCB3aGVuIHByaW1hcnkgaXMgYSB0eXBlLiBEb24ndAoJdXNlIENMQVNTX1RZUEUgdG8gcmVwb3J0IHByb2JsZW1zLCB1c2UgSURFTlRJRklFUl9XRkwKCWluc3RlYWQuIEluY2x1ZGUgYWJzdHJhY3QgY2xhc3MgaW4gdGhlIGxpc3Qgb2YgY2xhc3Mgc2VhcmNoYWJsZQoJZm9yIGNvbnN0cnVjdG9ycy4gVXNlIERFQ0xfQ09OVEVYVCBvZiBmb3VuZCBtZXRob2QgZm9yIGFjY2VzcwoJY2hlY2tzLiBDaGVjayBtZXRob2QgZGVwcmVjYXRpb24uCgkocGF0Y2hfaW52b2tlKTogUGF5IGV4dHJhIGNhcmUgdG8gTkVXX0NMQVNTX0VYUFIgdHlwZSBjYWxsIHdoZW4KCWNvbnZlcnRpbmcgYXJndW1lbnRzLiBIYW5kbGUgSU5WT0tFX0lOVEVSRkFDRS4KCShsb29rdXBfbWV0aG9kX2ludm9rZSk6IFNlYXJjaCBjb25zdHJ1Y3RvciB1c2luZyBleGlzdGluZwoJaW5mcmFzdHJ1Y3R1cmUgKGRvbid0IHJlbHkgb24gbG9va3VwX2phdmFfY29uc3RydWN0b3IgYW55bW9yZSkuCgkoZmluZF9hcHBsaWNhYmxlX2FjY2Vzc2libGVfbWV0aG9kc19saXN0KTogRXh0cmEgYXJndW1lbnQgZmxhZwoJTEMuIE5vdyBpbmNsdWRlIGNvbnN0cnVjdG9yIGluIHRoZSBzZWFyY2guCgkocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IENvbmRpdGlvbmFsIGV4cHJlc3Npb24gYXJlIHByaW1hcmllcy4KCShub3RfaW5pdGlhbGl6ZWRfYXNfaXRfc2hvdWxkX3ApOiBzdGF0aWMgZmluYWwgYXJlIGFsd2F5cwoJaW5pdGlhbGl6ZWQuCgkoamF2YV9jb21wbGV0ZV90cmVlKTogUGFzcyBleHRyYSBOVUxMIGFyZ3VtZW50IHRvCglyZXNvbHZlX2V4cHJlc3Npb25fbmFtZS4gU3RyaWN0ZXIgdGVzdCB0byBjYXJyeSBvbiBwYXRjaGluZwoJYXNzaWdubWVudHMuIE5ldyBjYXNlIGZvciBJTlNUQU5DRU9GX0VYUFIuCgkoY29tcGxldGVfZnVuY3Rpb25fYXJndW1lbnRzKTogSW5saW5lIFBSSU1UWVBFLlRZUEUgcmVhZCBhY2Nlc3MuCgkoY2hlY2tfZmluYWxfYXNzaWdubWVudCwgbWF5YmVfYnVpbGRfcHJpbXR0eXBlX3R5cGVfcmVmKTogTmV3CglmdW5jdGlvbnMuCgkocGF0Y2hfYXNzaWdubWVudCk6IERldGVjdCByZXNvbHZlZCBzdGF0aWMgZmluYWxzIGFuZCBjYXJyeSBub3JtYWwKCWFzc2lnbm1lbnQgZXJyb3IgY2hlY2sgb24gdGhlbS4gSW5saW5lIFBSSU1UWVBFLlRZUEUgcmVhZCBhY2Nlc3MuCgkodHJ5X2J1aWx0aW5fYXNzaWduY29udik6IEFjY2VzcyBjb25zdGFudCAwIG9uIGFsbCBwcmltaXRpdmUKCXR5cGVzLgoJKHZhbGlkX2J1aWx0aW5fYXNzaWduY29udl9pZGVudGl0eV93aWRlbmluZ19wKTogQWNjZXB0IGlkZW50aWNhbAoJdHlwZXMuIEFjY2VwdCBhbGwgcHJvbW90ZWQgdHlwZSBvbiBpbnQgdHlwZS4KCSh2YWxpZF9yZWZfYXNzaWduY29udl9jYXN0X3ApOiBBY2NlcHQgYSBudWxsIHBvaW50ZXIgdG8gYmUKCWFzc2lnbmVkIHRvIGEgcmVmZXJlbmNlLgoJKHZhbGlkX21ldGhvZF9pbnZvY2F0aW9uX2NvbnZlcnNpb25fcCk6IEFjY2VwdCB0byBjaGVjayBudWxsCglwb2ludGVycy4KCShidWlsZF9iaW5vcCk6IE1lcmdlIGRlY2xhcmF0aW9uIGFuZCBpbml0aWFsaXphdGlvbiBvZiBsb2NhbAoJdmFyaWFibGUgQklOT1AuCgkocGF0Y2hfYmlub3ApOiBOZXcgY2FzZSBmb3IgSU5TVEFOQ0VPRl9FWFBSLiBORV9FWFBSIHRvIGFjY2VwdCBhbGwKCW51bWVyaWMgdHlwZXMuIEltcHJvdmVkIHZhbGlkaXR5IHRlc3QgZm9yIHF1YWxpZnkgb3BlcmF0b3JzIG9uCglyZWZlcmVuY2VzLgoJKHBhdGNoX3VuYXJ5b3ApOiBCcm9hZGVuZWQgcmVqZWN0aW9uIHRlc3QgZm9yIFBSRURFQ1JFTUVOVF9FWFBSCglhbmQgUFJFSU5DUkVNRU5UX0VYUFIuIEFsc28gZGV0ZWN0IHJlc29sdmVkIHN0YXRpYyBmaW5hbHMgb2YgYQoJcHJpbWl0aXZlIHR5cGUgYW5kIGlzc3VlIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBtZXNzYWdlLgoJKHJlc29sdmVfdHlwZV9kdXJpbmdfcGF0Y2gpOiBNYXJrIGNsYXNzIGxvYWRlZCB3aGVuIHJlc29sdmVkLgoJKHBhdGNoX2Nhc3QpOiBBbGxvdyBudWxsIHRvIGJlIGNhc2VkIHRvIHJlZmVyZW5jZSB0eXBlcy4KCShidWlsZF9udWxsX29mX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkocGF0Y2hfYXJyYXlfcmVmKTogSGFuZGxlIGFycmF5IG9uIHJlZmVyZW5jZXMgY29ycmVjdGx5LgoJKHBhdGNoX3JldHVybik6IFJlbW92ZWQgdW51c2VkIGxvY2FsIHZhcmlhYmxlIE1PRElGWS4gRm9yY2UKCWJvb2xlYW4gdG8gYmUgcmV0dXJuZWQgYXMgaW50ZWdlcnMuIEFsbG93cyBudWxsIHRvIGJlIHJldHVybmVkIGJ5CglhIGZ1bmN0aW9uIHJldHVybmluZyBhIHJlZmVyZW5jZS4KCSogdHlwZWNrLmMgKGNvbnZlcnRfdG9faW50ZWdlciwgY29udmVydF90b19yZWFsLAoJY29udmVydF90b19wb2ludGVyKTogUHJvdG90eXBlcyBtb3ZlZCB0byBjb252ZXJ0LmgKCShsb29rdXBfYXJndW1lbnRfbWV0aG9kKTogVXNlIG1ldGhvZCByZWFsIG5hbWUsIGlmIG5lY2Vzc2FyeS4KCjE5OTgtMTAtMzAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX2NsYXNzX3JlZik6IENoYW5nZWQgbmFtZSBvZiBwcmltaXRpdmUgY2xhc3NlcyB0bwoJc3RhcnQgd2l0aCBgX0p2XycuCgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzX2RhdGEpOiBSZW5hbWVkIGZpZWxkczogbm1ldGhvZHMgdG8KCW1ldGhvZF9jb3VudCwgbWV0aG9kX2NvdW50IHRvIGR0YWJsZV9tZXRob2RfY291bnQuICBBbHdheXMgc2V0Cglgc3RhdGUnIGZpZWxkIHRvIDAuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCjE5OTgtMTAtMjggIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAobGF5b3V0X2NsYXNzKTogRG9uJ3QgbWFuZ2xlIDxmaW5pdD4sIHByb2R1Y2UKCV9fZmluaXQ8Y2xhc3M+IGluc3RlYWQuIERvbid0IHZlcmlmeSBhcnRpZmljaWFsIG1ldGhvZHMuCgkqIGRlY2wuYyAoZmluaXRfaWRlbnRpZmllcl9ub2RlKTogTmV3IGRlY2xhcmVkIGdsb2JhbC4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IGZpbml0X2lkZW50aWZpZXJfbm9kZSBpbml0aWFsaXplZC4KCSogamF2YS10cmVlLmRlZiAoQ09ORElUSU9OQUxfRVhQUik6IE5ldyBKYXZhIHRyZWUgY29kZS4KCSogamF2YS10cmVlLmggKGZpbml0X2lkZW50aWZpZXJfbm9kZSk6IERlY2xhcmVkIGFzIGV4dGVybi4KCShzdHJ1Y3QgbGFuZ19kZWNsKTogTmV3IGZpZWxkIGNhbGxlZF9jb25zdHJ1Y3Rvci4KCShERUNMX0NPTlNUUlVDVE9SX0NBTExTKTogQWNjZXNzIG1hY3JvIHRvIGNhbGxlZF9jb25zdHJ1Y3Rvci4KCShDTEFTU19IQVNfRklOSVRfUCk6IE5ldyBtYWNyby4KCShDQUxMX0NPTlNUUlVDVE9SX1ApOiBMZWFkaW5nIGNvbW1lbnQgY2hhbmdlZC4gTWFjcm8gbm93IGNoZWNrcwoJZXhwbGljaXQgY29uc3RydWN0b3IgaW52b2NhdGlvbi4KCShDQUxMX0VYUExJQ0lUX0NPTlNUUlVDVE9SX1AsIENBTExfVEhJU19DT05TVFJVQ1RPUl9QLAoJQ0FMTF9TVVBFUl9DT05TVFJVQ1RPUl9QKTogTmV3IG1hY3Jvcy4KCSh3cml0ZV9jbGFzc2ZpbGUpOiBBZGRlZCBwcm90b3R5cGUuCgkqIGpjZi1wYXJzZS5jIChqY2ZfcGFyc2Vfc291cmNlKTogUGFyc2UgYW5kIHJlbWVtYmVyIGZvcgoJZ2VuZXJhdGlvbiBpZiB0aGUgZmlsZSB3YXMgc2VlbiBvbiB0aGUgY29tbWFuZCBsaW5lLgoJKHBhcnNlX3NvdXJjZV9maWxlKTogRG9uJ3Qgd3JpdGUgdGhlIGNsYXNzIGZpbGUgaGVyZS4KCSh5eXBhcnNlKTogTG9vcCBvbiBmaWxlcyByZXdyaXR0ZW4uIFNldCBjdXJyZW50X2pjZi4KCShwYXJzZV96aXBfZmlsZV9lbnRyaWVzKTogUGFyc2UgY2xhc3MgZmlsZSBvbmx5IGlmIGl0IHdhcyBmb3VuZC4KCSogbGFuZy5jIChpbml0X3BhcnNlKTogRG9uJ3Qgb3BlbiBjb21tYW5kIGxpbmUgcHJvdmlkZWQgZmlsZW5hbWUKCWhlcmUuCgkobGFuZ19wYXJzZSk6IERvbid0IHNldCBtYWluX2pjZiBhbnltb3JlLgoJKiBwYXJzZS5oIChBQlNUUkFDX0NIRUNLKTogQ2FwaXRhbGl6ZWQgYXJndW1lbnRzLgoJKEpDT05TVFJVQ1RPUl9DSEVDSyk6IE5ldyBtYWNyby4KCShKQlNDX1RZUEVfUCk6IE5ldyBtYWNyby4KCShJTl9UUllfQkxPQ0tfUCwgRVhDRVBUSU9OU19QKTogRml4ZWQgbGVhZGluZyBjb21tZW50LgoJKENPTVBMRVRFX0NIRUNLX09QXzIpOiBOZXcgbWFjcm8uCgkoc3RydWN0IHBhcnNlX2N0eHQpOiBOZXcgZmllbGQgZXhwbGljaXRfY29uc3RydWN0b3JfcC4KCShjaGVja19jbGFzc19pbnRlcmZhY2VfY3JlYXRpb24pOiBGaXhlZCBwcm90b3R5cGUgaW5kZW50YXRpb24uCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb25fc3RtdCk6IFByb3RvdHlwZSByZWZsZWN0cyBhZGRlZCBhcmd1bWVudC4KCShwYXRjaF9pbnZva2UpOiBMaWtld2lzZS4KCShjb21wbGV0ZV9tZXRob2RfZGVjbGFyYXRpb24sIGJ1aWxkX3N1cGVyX2ludm9jYXRpb24sCgl2ZXJpZnlfY29uc3RydWN0b3JfY2lyY3VsYXJpdHksCglidWlsZF90aGlzX3N1cGVyX3F1YWxpZmllZF9pbnZvY2F0aW9uLCBnZXRfcHJpbnRhYmxlX21ldGhvZF9uYW1lLAoJcGF0Y2hfY29uZGl0aW9uYWxfZXhwciwgbWF5YmVfZ2VuZXJhdGVfZmluaXQsIGZpeF9jb25zdHJ1Y3RvcnMsCgl2ZXJpZnlfY29uc3RydWN0b3Jfc3VwZXIsIGNyZWF0ZV9hcnRpZmljaWFsX21ldGhvZCwKCXN0YXJ0X2FydGlmaWNpYWxfbWV0aG9kX2JvZHksIGVuZF9hcnRpZmljaWFsX21ldGhvZF9ib2R5LAoJZ2VuZXJhdGVfZmllbGRfaW5pdGlhbGl6YXRpb25fY29kZSk6IE5ldyBmdW5jdGlvbiBwcm90b3R5cGVzLgoJKiBwYXJzZS55OiBGaXhlZCBsZWFkaW5nIGNvbW1lbnQKCShjb25zdHJ1Y3Rvcl9oZWFkZXI6LCBjb25zdHJ1Y3Rvcl9ib2R5OiwgYmxvY2tfZW5kOik6IFJ1bGVzIHRhZ2dlZAoJPG5vZGU+LgoJKHR5cGVfZGVjbGFyYXRpb246KTogQ2FsbCBtYXliZV9nZW5lcmF0ZV9maW5pdC4KCShtZXRob2RfZGVjbGFyYXRpb246KTogQWN0aW9uIGZvciBtZXRob2RfYm9keTogcGxhY2VkIGluIG5ldwoJZnVuY3Rpb24gY29tcGxldGVfbWV0aG9kX2RlY2xhcmF0aW9uLCBjYWxsZWQgaGVyZS4KCShjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbjopOiBEZWZpbmVkIGFjdGlvbnMuIFJlbW92ZWQgbGVhZGluZwoJRklYTUUuCgkoY29uc3RydWN0b3JfaGVhZGVyOik6IE5ldyBydWxlIHdpdGggYWN0aW9uLgoJKGNvbnN0cnVjdG9yX2JvZHk6KTogUnVsZSByZXdyaXR0ZW4gdXNpbmcgYmxvY2tfYmVnaW46IGFuZAoJYmxvY2tfZW5kOi4gRGVmaW5lZCBhY3Rpb25zLgoJKGNvbnN0cnVjdG9yX2RlY2xhcmF0b3I6LCBleHBsaWNpdF9jb25zdHJ1Y3Rvcl9pbnZvY2F0aW9uOik6CglEZWZpbmVkIGFjdGlvbnMuCgkoYmxvY2s6KTogVXNlIG5ldyBydWxlcyBibG9ja19iZWdpbjogYmxvY2tfZW5kOi4KCShibG9ja19iZWdpbjosIGJsb2NrX2VuZDopOiBOZXcgcnVsZXMgYW5kIGFjdGlvbnMuCgkoYmxvY2tfc3RhdGVtZW50czopOiBGaXhlZCBlcnJvciBtZXNzYWdlIGZvciBleHBsaWNpdAoJY29uc3RydWN0b3JzLgoJKG1ldGhvZF9pbnZvY2F0aW9uOik6IENhbGwgYnVpbGRfdGhpc19zdXBlcl9xdWFsaWZpZWRfaW52b2NhdGlvbgoJaWYgcHJpbWFyeSBpcyBgdGhpcycgb3IgYHN1cGVyJyB3YXMgc2Vlbi4KCShjb25kaXRpb25hbF9leHByZXNzaW9uOik6IEFjdGlvbiBkZWZpbmVkLgoJKGV4dHJhX2N0eHBfcHVzaGVkX3ApOiBOZXcgc3RhdGljIGdsb2JhbCBmbGFnLgoJKGphdmFfcGFyc2VyX2NvbnRleHRfc2F2ZV9nbG9iYWwpOiBDcmVhdGUgcGFyc2VyIGNvbnRleHQgaWYKCW5lY2Vzc2FyeS4gVXNlIGV4dHJhX2N0eHBfcHVzaGVkX3AgdG8gcmVtZW1iZXIgaXQuCgkoamF2YV9wYXJzZXJfY29udGV4dF9yZXN0b3JlX2dsb2JhbCk6IFBvcCBleHRyYSBwYXJzZXIgY29udGV4dCBpZgoJb25lIGV4aXN0cy4KCShidWlsZF9hcnJheV9mcm9tX25hbWUpOiBBcnJheSBvbiBwcmltaXRpdmUgdHlwZXMgYXJlIG1hcmtlZAoJbG9hZGVkLgoJKHJlZ2lzdGVyX2ZpZWxkcyk6IFJlc3RvcmUgbmV3IG5hbWUgaW4gZmllbGQgaW5pdGlhbGl6ZXIKCWV4cHJlc3Npb24gaWYgdHlwZSB3YXMgYWx0ZXJlZC4gTm9uIHN0YXRpYyBmaWVsZHMgaW5pdGlhbGl6ZWQgdXBvbgoJZGVjbGFyYXRpb24gbWFya2VkIGluaXRpYWxpemVkLgoJKG1heWJlX2dlbmVyYXRlX2Zpbml0KTogTmV3IGZ1bmN0aW9uLgoJKG1heWJlX2dlbmVyYXRlX2NsaW5pdCk6IFVzZSBjcmVhdGVfYXJ0aWZpY2lhbF9tZXRob2QsCglzdGFydF9hcnRpZmljaWFsX21ldGhvZF9ib2R5LCBlbmRfYXJ0aWZpY2lhbF9tZXRob2RfYm9keS4gR2VuZXJhdGUKCWRlYnVnIGluZm8gZm9yIGVuY2xvc2VkIGluaXRpYWxpemF0aW9uIHN0YXRlbWVudHMuCgkobWV0aG9kX2hlYWRlcik6IEZpeGVkIGxlYWRpbmcgY29tbWVudC4gQ2hlY2sgY29uc3RydWN0b3IKCWZsYWdzLiBEZXRlY3QgY29uc3RydWN0b3IgZGVjbGFyYXRpb25zIGFuZCBzZXQgREVDTF9DT05TVFJVQ1RPUl9QCglhY2NvcmRpbmdseS4KCShjb21wbGV0ZV9tZXRob2RfZGVjbGFyYXRpb24sIGNvbnN0cnVjdG9yX2NpcmN1bGFyaXR5X21zZywKCXZlcmlmeV9jb25zdHJ1Y3Rvcl9jaXJjdWxhcml0eSk6IE5ldyBmdW5jdGlvbnMuCgkoZ2V0X3ByaW50YWJsZV9tZXRob2RfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShjaGVja19tZXRob2RfcmVkZWZpbml0aW9uKTogRG9uJ3QgcmVuYW1lIDxmaW5pdD4gbWV0aG9kcy4gRml4CglkZWNsYXJlZCBjb25zdHJ1Y3RvciBuYW1lcy4gRXJyb3IgbWVzc2FnZSBmb3IKCWNvbnN0cnVjdG9ycyBtb2RpZmllZC4KCShqYXZhX2NoZWNrX3JlZ3VsYXJfbWV0aG9kcyk6IExvY2FsIHZhcmlhYmxlIHNlZW5fY29uc3RydWN0b3IKCXJlbmFtZWQgc2F3X2NvbnN0cnVjdG9yLiBTa2lwIHZlcmlmaWNhdGlvbiBvbiBjb25zdHJ1Y3RvcnMuIENyZWF0ZQoJZGVmYXVsdCBjb25zdHJ1Y3RvciB3aXRoIGNyZWF0ZV9hcnRpZmljaWFsX21ldGhvZC4KCShqYXZhX2NoZWNrX21ldGhvZHMpOiBSZW1vdmVkIHVubmVjZXNzYXJ5IGVtcHR5IGxpbmUuCgkoY3JlYXRlX2FydGlmaWNpYWxfbWV0aG9kLCBzdGFydF9hcnRpZmljaWFsX21ldGhvZF9ib2R5LAoJZW5kX2FydGlmaWNpYWxfbWV0aG9kX2JvZHkpOiBOZXcgZnVuY3Rpb25zLgoJKGphdmFfbGF5b3V0X2NsYXNzZXMpOiBDaGFuZ2VkIGxlYWRpbmcgY29tbWVudC4gUmV2ZXJzZSBmaWVsZHMKCWxpc3QgaWYgbmVjZXNzYXJ5LiBBbHdheXMgbGF5b3V0IGphdmEubGFuZy5PYmplY3QgaWYgYmVpbmcKCWRlZmluZWQuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IFZlcmlmeSBjb25zdHJ1Y3RvciBjaXJjdWxhcml0eS4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiBDYWxsIGZpeF9jb25zdHJ1Y3RvciBvbgoJY29uc3RydWN0b3JzLiAgTG9jYWwgdmFyaWFibGUgbm9fYWNfZm91bmQgcmVtb3ZlZC4gUmVzdG9yZQoJYmluZGluZ3MgaWYgbWV0aG9kIGJvZHkgZXhwYW5zaW9uIGZhaWxlZC4KCShmaXhfY29uc3RydWN0b3JzLCB2ZXJpZnlfY29uc3RydWN0b3Jfc3VwZXIsCglnZW5lcmF0ZV9maWVsZF9pbml0aWFsaXphdGlvbl9jb2RlKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfZXhwYW5kX2NsYXNzZXMpOiBGaXhlZCBsZWFkaW5nIGNvbW1lbnQuIFdyaXRlIGNsYXNzIGZpbGUKCWhlcmUuCgkocmVzb2x2ZV9leHByZXNzaW9uX25hbWUpOiBDaGVjayBmb3IgaWxsZWdhbCBpbnN0YW5jZSB2YXJpYWJsZQoJdXNhZ2Ugd2l0aGluIHRoZSBhcmd1bWVudCBzY29wZSBvZiBhbiBleHBsaWNpdCBjb25zdHJ1Y3RvcgoJaW52b2NhdGlvbi4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBQYXNzIGV4dHJhIGZyb21fc3VwZXIgZmxhZwoJd2hlbiBpbnZva2luZyBwYXRjaF9tZXRob2RfaW52b2NhdGlvbl9zdG10LiBOZXcgY2FzZSBmb3IKCWNvbmRpdGlvbmFsIGV4cHJlc3Npb24gd2hlbiB1c2VkIGFzIGEgcHJpbWFyeS4gQ2hlY2sgZm9yIGVycm9yCgl3aGVuIGFjcXVpcmluZyBzdXBlci4KCShwYXRjaF9tZXRob2RfaW52b2NhdGlvbl9zdG10KTogQWRkZWQgZXh0cmEgYXJndW1lbnQgc3VwZXIuIE5ldwoJbG9jYWwgdmFyaWFibGUgaXNfc3RhdGljX2ZsYWcuIFNldCBjbGFzc190b19zZWFyY2ggYWNjb3JkaW5nIHRvCgl0aGUgbmF0dXJlIG9mIHRoZSBjb25zdHJ1Y3RvciBpbnZvY2F0aW9uLiBEb24ndCBhZGQgYHRoaXMnCglhcmd1bWVudCB3aGVuIGV4cGFuZGluZyBORVdfQ0xBU1NfRVhQUi4gQ2hlY2sgZm9yIGlsbGVnYWwgbWV0aG9kCglpbnZvY2F0aW9uIHdpdGhpbiB0aGUgYXJndW1lbnQgc2NvcGUgb2YgZXhwbGljaXQgY29uc3RydWN0b3IKCWludm9jYXRpb24uIFNldCBpc19zdGF0aWMgYWNjb3JkaW5nIHRvIGlzX3N0YXRpY19mbGFnLiBQcm92aWRlCglleHRyYSBgc3VwZXInIGFyZ3VtZW50IHRvIHBhdGNoX2ludm9rZSBpbnZvY2F0aW9uLgoJKHBhdGNoX2ludm9rZSk6IE5ldyBhcmd1bWVudCBmcm9tX3N1cGVyLiBMb29wIG9uIGFyZ3VtZW50cwoJaW5kZW50YXRpb24gZml4ZWQuIFBhc3MgZnJvbV9zdXBlciB0byBpbnZvY2F0aW9uX21vZGUuIE5ldyBzd2l0Y2gKCWNhc2UgSU5WT0tFX1NVUEVSLiBGaXhlZCBlcnJvciBtZXNzYWdlIGluIHN3aXRjaCBkZWZhdWx0IGNhc2UuCglEb24ndCB1c2UgQ0FMTF9DT05TVFJVQ1RPUl9QIGJ1dCByYXRoZXIgYSB0ZXN0IG9uIHRoZSB0cmVlIG5vZGUKCXZhbHVlLgoJKGludm9jYXRpb25fbW9kZSk6IFJldHVybiBJTlZPS0VfU1VQRVIgbW9kZSB3aGVuIGFwcHJvcHJpYXRlLgoJKGxvb2t1cF9tZXRob2RfaW52b2tlKTogRml4ZWQgcHJvdG90eXBlcyBpbiBjYW5kaWRhdGVzIGxpc3QuIEVycm9yCgltZXNzYWdlIHRha2VzIGNvbnN0cnVjdG9ycyBpbnRvIGFjY291bnQuCgkoZmluZF9hcHBsaWNhYmxlX2FjY2Vzc2libGVfbWV0aG9kc19saXN0KTogRml4ZWQgaW5kZW50YXRpb24uCgkocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IFRha2UgZXhwbGljaXQgY29uc3RydWN0b3IgaW52b2NhdGlvbgoJaW50byBhY2NvdW50LiBEZWFsIHdpdGggYSBjb25kaXRpb25hbCBleHByZXNzaW9uIGFzIGEgcHJpbWFyeSB0bwoJYSBtZXRob2QgY2FsbC4KCShqYXZhX2NvbXBsZXRlX3RyZWUpOiBBZGRlZCBsb2NhbCB3Zmxfb3AzLiBOZXcgQ09ORElUSU9OQUxfRVhQUgoJY2FzZS4gQWRkZWQgZXh0cmEgYXJndW1lbnQgdG8gcGF0Y2hfbWV0aG9kX2ludm9jYXRpb25fc3RtdC4KCVJlZ2lzdGVyIGNhbGxzIG1hZGUgdG8gZXhwbGljaXQgY29uc3RydWN0b3IgYHRoaXMnLiBEb24ndCBjYWxsCglzYXZlX2V4cHIgaW4gQVJSQVlfUkVGIGNhc2Ugd2hlbiBlbWl0dGluZyBjbGFzcyBmaWxlcy4gQ2hlY2sgZm9yCglpbGxlZ2FsIHVzZSBvZiB0aGlzIHdoZW4gZXhwYW5kaW5nIGV4cGxpY2l0IGNvbnN0cnVjdG9yIGludm9jYXRpb24KCWFyZ3VtZW50cy4KCShjb21wbGV0ZV9mdW5jdGlvbl9hcmd1bWVudHMpOiBTZXQgYW5kIHJlc2V0IHBhcnNlciBjb250ZXh0CglleHBsaWNpdF9jb25zdHJ1Y3Rvcl9wIGZpZWxkIHZhbHVlIHdoZW4gYXBwcm9wcmlhdGUuCgkoYnVpbGRfc3VwZXJfaW52b2NhdGlvbiwgYnVpbGRfdGhpc19zdXBlcl9xdWFsaWZpZWRfaW52b2NhdGlvbik6CglOZXcgZnVuY3Rpb25zLgoJKHBhdGNoX2Fzc2lnbm1lbnQpOiBGaXhlZCB0eXBvLgoJKHBhdGNoX3VuYXJ5b3ApOiBDaGVjayBvbiBmaW5hbCBmaWVsZHMgb2NjdXJzIG9ubHkgd2hlbiBhIGRlY2wKCWV4aXRzLgoJKHBhdGNoX3JldHVybik6IFRha2UgY29uc3RydWN0b3JzIGludG8gYWNjb3VudC4KCShwYXRjaF9jb25kaXRpb25hbF9leHByKTogTmV3IGZ1bmN0aW9uLgoJKiB0eXBlY2suYyAoYnVpbGRfamF2YV9zaWduYXR1cmUpOiBSZW1vdmVkIHVubmVjZXNzYXJ5IGVtcHR5IGxpbmUuCgoxOTk4LTEwLTI4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAoamNmLWR1bXAsIGdjamgpOiBMaW5rIGluICQoTElCUykgdG9vLgoKMTk5OC0xMC0yOCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFJlbmFtZWQgZmllbGRzLgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzX2RhdGEpOiBSZW5hbWVkIGJmc2l6ZSwgbmZpZWxkcywgbnNmaWVsZHMsCglpbnRlcmZhY2VfbGVuLCBtc2l6ZSBmaWVsZHMuCgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzX2RhdGEpOiBSZW1vdmVkIHN1YmNsYXNzX2hlYWQgYW5kCglzdWJjbGFzc19uZXh0IGZpZWxkcy4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFJlbW92ZWQgc3ViY2xhc3NfaGVhZCBhbmQKCXN1YmNsYXNzX25leHQgZmllbGRzLgoKMTk5OC0xMC0yOCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogamNmLXdyaXRlLmMgKGVtaXRfbG9hZF9vcl9zdG9yZSk6IEF2b2lkIGltcGxpY2l0IGludCBhcmd1bWVudHMuCgkqIG1hbmdsZS5jIChlbWl0X3VuaWNvZGVfbWFuZ2xlZF9uYW1lKTogU2ltaWxhcmx5LgoKMTk5OC0xMC0yNiAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGpjZi1wYXJzZS5jIChnZXRfY29uc3RhbnQpOiBQbGFjZSBicmFjZXMgYXJvdW5kIGNvZGUgdG8gY29tcHV0ZQoJJ2QnIHdoZW4gUkVBTF9BUklUSE1FVElDIGlzIG5vdCBkZWZpbmVkLgoKMTk5OC0xMC0yNSAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogTWFrZS1sYW5nLmluIChqdi1zY2FuJChleGVleHQpKTogQWRkIHN0YW1wLW9iamxpc3QgdG8KCWRlcGVuZGVuY3kuCgoxOTk4LTEwLTIzICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBsYW5nLXNwZWNzLmg6IGAuemlwJyBmaWxlcyBhcmUgaW5wdXQgdG8gamMxLgoKMTk5OC0xMC0yMiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBqdnNwZWNzLmM6ICBBZGQgKGJ1dCBkb24ndCBlbmFibGUpIHN1cHBvcnQgZm9yIGNvbWJpbmluZyBtdWx0aXBsZQoJLmNsYXNzIGFuZCAuamF2YSBpbnB1dCBmaWxlbmFtZXMgdG8gYSBzaW5nbGUgamMxIGludm9jYXRpb24uCglBZGQgc3VwcG9ydCBmb3IgLUMgZmxhZyAoY29waWxlIHRvIC5jbGFzcyBmaWxlcykuCglUcmFuc2xhdGUgLWNsYXNzcGF0aCBhbmQgLUNMQVNTUEFUSCBhcmd1bWVudHMuCgkqIGxhbmctc3BlY3MuaDogIERvbid0IHNldCAlMiBzcGVjLgoKMTk5OC0xMC0yMiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogamNmLXBhdGguYyAoYWRkX2VudHJ5KTogRG9uJ3QgYWRkIHRyYWlsaW5nIHNlcGFyYXRvciBpZiBlbnRyeSBpcwoJYSAuemlwIGZpbGUuCgkoYWRkX3BhdGgpOiBEb24ndCBhZGQgdHJhaWxpbmcgc2VwYXJhdG9yIHRvIG5vbi1lbXB0eSBwYXRoCgllbGVtZW50cy4KCgkqIGxhbmcuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogQ2hlY2sgZm9yIC1mY2xhc3NwYXRoIGFuZAoJLWZDTEFTU1BBVEggYmVmb3JlIGV4YW1pbmluZyBvdGhlciBgLWYnIG9wdGlvbnMuCgoJKiBqYXZhLXRyZWUuaCAoZmluYWxpemVfaWRlbnRpZmllcl9ub2RlKTogRG9uJ3QgZGVjbGFyZS4KCSogY2xhc3MuYyAobWFrZV9jbGFzc19kYXRhKTogRG9uJ3QgcHVzaCAiZmluYWwiIGZpZWxkLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogRG9uJ3QgcHVzaCAiZmluYWwiIGZpZWxkLgoJKGZpbmFsaXplX2lkZW50aWZpZXJfbm9kZSk6IFJlbW92ZWQuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCBzZXQgZmluYWxpemVfaWRlbnRpZmllcl9ub2RlLgoKCSogY29uZmlnLWxhbmcuaW4gKHN0YWdlc3R1ZmYpOiBBZGRlZCBqY2YtZHVtcCBhbmQganYtc2Nhbi4KCjE5OTgtMTAtMTEgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBjeWdudXMuY29tPgoKCSogTWFrZS1sYW5nLmluIChqYXZhKTogRGVwZW5kIG9uIGpjZi1kdW1wIGFuZCBqdi1zY2FuLgoJKEpWX1NDQU5fU09VUkNFUyk6IE5ldyBtYWNyby4KCShKQ0ZfRFVNUF9TT1VSQ0VTKTogTGlrZXdpc2UuCgkoamNmLWR1bXAkKGV4ZWV4dCkpOiBOZXcgdGFyZ2V0LgoJKGp2LXNjYW4kKGV4ZWV4dCkpOiBOZXcgdGFyZ2V0LgoKMTk5OC0xMC0yMiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKExFWCk6IFJlbW92ZWQuCgkoTEVYRkxBR1MpOiBMaWtld2lzZS4KCShTRVRfQklTT04pOiBOZXcgbWFjcm8uCgkoQklTT04pOiBSZW1vdmVkLgoJKCQoUEFSU0VfQykpOiBVc2UgU0VUX0JJU09OLiAgUnVuIGJpc29uIGZyb20gc3JjZGlyIHRvIGF2b2lkCglzcHVyaW91cyBkaWZmcyBpbiBwYXJzZS5jLgoJKCQoUEFSU0VfU0NBTl9DKSk6IExpa2V3aXNlLgoJKFBBUlNFX0RJUik6IE5ldyBtYWNyby4KCShQQVJTRV9DKTogVXNlIGl0LgoJKFBBUlNFX1NDQU5fQyk6IExpa2V3aXNlLgoJKFBBUlNFX1JFTERJUik6IE5ldyBtYWNyby4KCgkqIGpjZi1pby5jIChzYXdfamF2YV9zb3VyY2UpOiBEZWZpbmUgaGVyZSwgbm90IGluIGpjZi1wYXJzZS5jLgoKCSogamNmLWlvLmMgKGZpbmRfY2xhc3MpOiBVc2Ugc2F3X2phdmFfc291cmNlIHRvIGRldGVybWluZSB3aGVuIHRvCglsb29rIGZvciBgLmphdmEnIGZpbGUuCgkqIGpjZi1wYXJzZS5jIChzYXdfamF2YV9zb3VyY2UpOiBOZXcgZ2xvYmFsLgoJKHl5cGFyc2UpOiBTZXQgaXQgaWYgYC5qYXZhJyBmaWxlIHNlZW4uCgoJKiBNYWtlLWxhbmcuaW4gKEpBVkFfU1JDUyk6IEFkZGVkIGpjZi1wYXRoLmMuCgkoR0NKSF9TT1VSQ0VTKTogTGlrZXdpc2UuCgkqIE1ha2VmaWxlLmluIChkYXRhZGlyKTogTmV3IG1hY3JvLgoJKGxpYmphdmFfemlwKTogTGlrZXdpc2UuCgkoSkFWQV9PQkpTKTogQWRkZWQgamNmLXBhdGguby4KCSguLi9qY2YtZHVtcCQoZXhlZXh0KSk6IERlcGVuZCBvbiBhbmQgbGluayB3aXRoIGpjZi1kZXBlbmQuby4KCSguLi9nY2poJChleGVleHQpKTogTGlrZXdpc2UuCgkoamNmLXBhdGgubyk6IE5ldyB0YXJnZXQuCgkqIGphdmEtdHJlZS5oIChmaXhfY2xhc3NwYXRoKTogUmVtb3ZlZCBkZWNsLgoJKiBqY2YtcGFyc2UuYyAoZml4X2NsYXNzcGF0aCk6IFJlbW92ZWQuCgkobG9hZF9jbGFzcyk6IERvbid0IGNhbGwgZml4X2NsYXNzcGF0aC4KCSogcGFyc2UueSAocmVhZF9pbXBvcnRfZGlyKTogRG9uJ3QgY2FsbCBmaXhfY2xhc3NwYXRoLgoJKiBsZXguaDogRG9uJ3QgbWVudGlvbiBjbGFzc3BhdGguCgkqIGxleC5jIChqYXZhX2luaXRfbGV4KTogRG9uJ3QgaW5pdGlhbGl6ZSBjbGFzc3BhdGguCgkqIGpjZi1pby5jIChjbGFzc3BhdGgpOiBSZW1vdmVkIGdsb2JhbC4KCShmaW5kX2NsYXNzKTogVXNlIGpjZl9wYXRoIGl0ZXJhdGlvbiBmdW5jdGlvbnMuICBDb3JyZWN0bHkgc2VhcmNoCgljbGFzcyBwYXRoIGZvciAuamF2YSBmaWxlLgoJKG9wZW5faW5femlwKTogTmV3IGFyZ3VtZW50IGBpc19zeXN0ZW0nLgoJKiBqY2YtZHVtcC5jIChtYWluKTogQ2FsbCBqY2ZfcGF0aF9pbml0LiAgUmVjb2duaXplIGFsbCBuZXcKCWNsYXNzcGF0aC1yZWxhdGVkIG9wdGlvbnMuCgkqIGxhbmcuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogSGFuZGxlIC1mY2xhc3NwYXRoLCAtZkNMQVNTUEFUSCwKCWFuZCAtSS4KCShsYW5nX2luaXQpOiBDYWxsIGpjZl9wYXRoX2luaXQuCgkqIGxhbmctb3B0aW9ucy5oOiBNZW50aW9uIC1JLCAtZmNsYXNzcGF0aCwgYW5kIC1mQ0xBU1NQQVRILgoJKiBsYW5nLXNwZWNzLmg6IEhhbmRsZSAtSS4gIE1pbm9yIGNsZWFudXAgdG8gLU0gb3B0aW9ucy4KCUNvcnJlY3RseSBwdXQgYnJhY2VzIGFyb3VuZCBzZWNvbmQgc3RyaW5nIGluIGVhY2ggZW50cnkuCgkqIGdqYXZhaC5jIChtYWluKTogQ2FsbCBqY2ZfcGF0aF9pbml0LiAgUmVjb2duaXplIGFsbCB0aGUgbmV3CgljbGFzc3BhdGgtcmVsYXRlZCBvcHRpb25zLgoJKGhlbHApOiBVcGRhdGVkIGZvciBuZXcgb3B0aW9ucy4KCSogamNmLmg6IERlY2xhcmUgZnVuY3Rpb25zIGZyb20gamNmLXBhdGguYy4gIERvbid0IG1lbnRpb24KCWBjbGFzc3BhdGgnIGdsb2JhbC4KCSogamNmLXBhdGguYzogTmV3IGZpbGUuCgoJKiBqY2YtZGVwZW5kLmM6IEluY2x1ZGUgamNmLmguCgoJKiBqY2Ytd3JpdGUuYyAobG9jYWx2YXJfYWxsb2MpOiBSZXR1cm5zIGB2b2lkJy4KCShsb2NhbHZhcl9mcmVlKTogUmVtb3ZlZCB1bnVzZWQgdmFyaWFibGUuCgoJKiBsYW5nLmMgKE9CSkVDVF9TVUZGSVgpOiBEZWZpbmUgaWYgbm90IGFscmVhZHkgZGVmaW5lZC4KCShpbml0X3BhcnNlKTogVXNlIE9CSkVDVF9TVUZGSVgsIG5vdCAiLm8iLgoKMTk5OC0xMC0yMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChlbWl0X3JlZ2lzdGVyX2NsYXNzZXMpOiBSZW5hbWVkIGZyb20KCWVtaXRfcmVnaXN0ZXJfY2xhc3MuCgkqIGphdmEtdHJlZS5oIChlbWl0X3JlZ2lzdGVyX2NsYXNzZXMpOiBQcm90b3R5cGUgcmVuYW1lZCBmcm9tCgllbWl0X3JlZ2lzdGVyX2NsYXNzLgoJKiBqY2YtcGFyc2UuYyAoeXlwYXJzZSk6IENhbGwgZW1pdF9yZWdpc3Rlcl9jbGFzc2VzIG9uY2UgYmVmb3JlCglyZXR1cm5pbmcuCgkqIHBhcnNlLnkgKGphdmFfZXhwYW5kX2NsYXNzZXMpOiBObyBsb25nZXIgcmVnaXN0ZXIgY2xhc3Nlcy4KCjE5OTgtMTAtMjAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoaXNfY29tcGlsZWRfY2xhc3MpOiBOZXcgbG9jYWwgdmFyaWFibGUKCXNlZW5faW5femlwLiBJZGVudGlmeSBjbGFzc2VzIGZvdW5kIGluIGN1cnJlbnRseSBjb21waWxlZCBzb3VyY2UKCWZpbGUocykuCgkqIGRlY2wuYyAoY29tcGxldGVfc3RhcnRfamF2YV9tZXRob2QpOiBGaXhlZCB0eXBvLgoJKiBqYXZhLXRyZWUuaCAoQ0xBU1NfRlJPTV9DVVJSRU5UTFlfQ09NUElMRURfU09VUkNFX1AsCglIQVNfQkVFTl9BTFJFQURZX1BBUlNFRF9QLCBJU19BX0NPTU1BTkRfTElORV9GSUxFTkFNRV9QKTogTmV3IG1hY3Jvcy4KCShDTEFTU19QKTogTW92ZWQgYXJvdW5kLgoJKGphdmFfcGFyc2VfYWJvcnRfb25fZXJyb3IpOiBNYWNybyBtb3ZlZCBmcm9tIGpjZi1wYXJzZS5jCgkqIGpjZi1wYXJzZS5jIChqYXZhX3BhcnNlX2Fib3J0X29uX2Vycm9yKTogTWFjcm8gbW92ZWQgdG8KCWphdmEtcGFyc2UuaAoJKGpjZl9wYXJzZV9zb3VyY2UpOiBDaGFuZ2VkIGxlYWRpbmcgY29tbWVudC4gUmVtb3ZlZCB1bm5lY2Vzc2FyeQoJZmNsb3NlIGFuZCBDTEFTU19GUk9NX1NPVVJDRV9QIG1hcmtpbmcuCgkocGFyc2Vfc291cmNlX2ZpbGUpOiBOZXcgbG9jYWwgdmFyaWFibGVzIHJlbWVtYmVyX2Zvcl9nZW5lcmF0aW9uCglhbmQgZmlsZW5hbWUuIE1hcmsgcGFyc2VkIGZpbGUgbmFtZSBpZGVudGlmaWVyIG5vZGUuIFJlbW92ZWQgYmxvY2sKCWV4ZWN1dGVkIHdoZW4gcGFyc2Vfb25seSB3YXMgbnVsbC4gU2V0IHJlbWVtYmVyX2Zvcl9nZW5lcmF0aW9uLgoJVXNlIGl0IGFzIGFuIGFyZ3VtZW50IHRvIGphdmFfcG9wX3BhcnNlcl9jb250ZXh0LgoJKHl5cGFyc2UpOiBOZXcgbG9jYWwgdmFyaWFibGVzIHNldmVyYWxfZmlsZXMsIGxpc3QsIG5leHQgbm9kZSBhbmQKCWN1cnJlbnRfZmlsZV9saXN0LiBTcGxpdCBhbXBlcnNhbmQgc2VwYXJhdGVkIGZpbGUgbmFtZXMgaW50bwoJY3VycmVudF9maWxlX2xpc3QuIEl0ZXJhdGUgdGhyb3VnaCB0aGUgbGlzdCBhbmQgcGFyc2UgYWNjb3JkaW5nbHkuCgkqIHBhcnNlLmggKGphdmFfcG9wX3BhcnNlcl9jb250ZXh0KTogTmV3IGZ1bmN0aW9uIHByb3RvdHlwZS4KCSogcGFyc2UueSAoY3R4cF9mb3JfZ2VuZXJhdGlvbik6IE5ldyBzdGF0aWMgZ2xvYmFsIHZhcmlhYmxlLgoJKGphdmFfcG9wX3BhcnNlcl9jb250ZXh0KTogTmV3IGFyZ3VtZW50IGdlbmVyYXRlLiBMaW5rIHBvcHBlZCBjdHhwCgl0byBjdHhwX2Zvcl9nZW5lcmF0aW9uIGxpc3QgYWNjb3JkaW5nbHkuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IEZpeGVkIGluZGVudGF0aW9uLgoJKGphdmFfZXhwYW5kX2NsYXNzZXMpOiBOZXcgZnVuY3Rpb24uCgoxOTk4LTEwLTE3ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluOiAgTGluayB3aXRoIGxpYmliZXJ0eS5hIGluc3RlYWQgb2YgbWVtbW92ZS5vLgoKMTk5OC0xMC0xNiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBsZXguYyAoc2V0am1wLmgpOiBObyBsb25nZXIgaW5jbHVkZWQuCgkqIGxleC5oIChzZXRqbXAuaCk6IEluY2x1ZGVkLgoJKiBwYXJzZS5oIChTRVRfVFlQRV9GT1JfUkVTT0xVVElPTik6IE5ldyBtYWNyby4KCShkdXBsaWNhdGVfZGVjbGFyYXRpb25fZXJyb3JfcCk6IFJlbmFtZWQgZnJvbQoJZHVwbGljYXRlX2RlY2xhcmF0aW9uX2Vycm9yLgoJKGJ1aWxkX2FycmF5X2Zyb21fbmFtZSk6IE5ldyBmdW5jdGlvbiBwcm90b3R5cGUuCgkqIHBhcnNlLnkgKHNldGptcC5oKTogTm8gbG9uZ2VyIGluY2x1ZGVkLgoJKHZhcmlhYmxlX2RlY2xhcmF0b3JfaWQpOiBEZWZpbmUgYWN0aW9uLgoJKGJ1aWxkX2FycmF5X2Zyb21fbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShkdXBsaWNhdGVfZGVjbGFyYXRpb25fZXJyb3JfcCk6IFJlbmFtZWQgZnJvbQoJZHVwbGljYXRlX2RlY2xhcmF0aW9uX2Vycm9yLiAgRml4ZWQgbGVhZGluZyBjb21tZW50LgoJKHJlZ2lzdGVyX2ZpZWxkcyk6IE1haW4gYGZvcicgbG9vcCByZW9yZ2FuaXplZC4gVXNlcwoJU0VUX1RZUEVfRk9SX1JFU09MVVRJT04gYW5kIGJ1aWxkX2FycmF5X2Zyb21fbmFtZS4KCShtZXRob2RfZGVjbGFyYXRvcik6IFVzZXMgU0VUX1RZUEVfRk9SX1JFU09MVVRJT04gYW5kIGNhbGwKCWJ1aWxkX2FycmF5X2Zyb21fbmFtZS4KCShyZXNvbHZlX2NsYXNzKTogU2V0IENMQVNTX0xPQURFRF9QIG9uIG5ld2x5IGJ1aWxkIGFycmF5IGRpbWVuc2lvbgoJdHlwZXMuCgkocmVhZF9pbXBvcnRfZGlyKTogRG9uJ3QgdHJ5IHRvIHNraXAgYC4nIGFuZCBgLi4nLgoJKGRlY2xhcmVfbG9jYWxfdmFyaWFibGVzKTogVXNlcyBTRVRfVFlQRV9GT1JfUkVTT0xVVElPTiBhbmQKCWJ1aWxkX2FycmF5X2Zyb21fbmFtZS4gTWFpbiBgZm9yJyBsb29wIHJlb3JnYW5pemVkLgoJKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IFdoZW4gYnVpbGRpbmcgYWNjZXNzIHRvIGEKCWZpZWxkLCB1c2UgdGhlIHR5cGUgd2hlcmUgdGhlIGZpZWxkIHdhcyBmb3VuZCwgbm90IGl0cyBvd24gdHlwZS4KCShtYXliZV9hY2Nlc3NfZmllbGQpOiBVc2UgZmllbGQgREVDTF9DT05URVhUIGlmIHRoZSB0eXBlIHdoZXJlIHRoZQoJZmllbGQgd2FzIGZvdW5kIGlzIG51bGwuCgkocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IFN3ZWVwIHRocm91Z2ggYWxsIHN1Y2Nlc3NpdmUgYXJyYXkKCWRpbWVuc2lvbnMuCgoxOTk4LTEwLTE0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGphdmEtdHJlZS5oIChwb3BfbGFiZWxlZF9ibG9jaywgbGFuZ19wcmludGFibGVfbmFtZSwKCW1heWJlX2FkZF9pbnRlcmZhY2UsIHNldF9zdXBlcl9pbmZvLCBnZXRfYWNjZXNzX2ZsYWdzX2Zyb21fZGVjbCwKCWludGVyZmFjZV9vZl9wLCBpbmhlcml0c19mcm9tX3AsIGZpeF9jbGFzc3BhdGgsCgljb21wbGV0ZV9zdGFydF9qYXZhX21ldGhvZCwgZW1pdF9oYW5kbGVycywgaW5pdF9vdXRnb2luZ19jcG9vbCwKCW1ha2VfY2xhc3NfZGF0YSwgcmVnaXN0ZXJfY2xhc3MsIGFsbG9jX25hbWVfY29uc3RhbnQpOiBOZXcKCWZ1bmN0aW9uIHByb3RvdHlwZXMuCgkqIGxhbmcuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogU2V0IGFyZ2MgYXJndW1lbnQgdW51c2VkLiBGaXhlZAoJaW5kZW50YXRpb24uIEFkZGVkIGNhc3QgdG8gcmVtb3ZlIHdhcm5pbmcuCgkobGFuZ19wcmludGFibGVfbmFtZSk6IFNldCB2IGFyZ3VtZW50IHVudXNlZC4KCShsYW5nX3ByaW50X2Vycm9yKTogQWRkZWQgYXJndW1lbnQgdG8gbGFuZ19wcmludGFibGVfbmFtZSBjYWxsLgoJKGphdmFfZHVtbXlfcHJpbnQsIHByaW50X2xhbmdfZGVjbCwgcHJpbnRfbGFuZ190eXBlLAoJcHJpbnRfbGFuZ19pZGVudGlmaWVyLCBsYW5nX3ByaW50X3hub2RlKTogQWxsIGFyZ3VtZW50IG1hcmtlZAoJdW51c2VkLgoJKiBsZXguYyAoamF2YV91bmdldF91bmljb2RlKTogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBhcmd1bWVudC4KCShqYXZhX2FsbG9jYXRlX25ld19saW5lKTogVW51c2VkIGxvY2FsIHZhcmlhYmxlIGlzIGdvbmUuCgkoamF2YV9yZWFkX2NoYXIpOiBBZGRlZCBwYXJlbnRoZXNpcyBpbiBleHByZXNzaW9ucyB0byByZW1vdmUKCXdhcm5pbmdzLiAgQWRkZWQgZmluYWwgcmV0dXJuIHN0YXRlbWVudC4KCShqYXZhX3JlYWRfdW5pY29kZSk6IEFkZGVkIHBhcmVudGhlc2lzIGluIGV4cHJlc3Npb24gdG8gcmVtb3ZlCgl3YXJuaW5nLgoJKGphdmFfcGFyc2VfZW5kX2NvbW1lbnQpOiBGaXhlZCBqYXZhX3VuZ2V0X3VuaWNvZGUgaW52b2NhdGlvbi4KCShqYXZhX3BhcnNlX2VzY2FwZV9zZXF1ZW5jZSk6IExpa2V3aXNlLgoJKGphdmFfbGV4KTogVW51c2VkIGxvY2FsIHZhcmlhYmxlcyBhcmUgZ29uZS4gRml4ZWQKCWphdmFfdW5nZXRfdW5pY29kZSBpbnZvY2F0aW9uLgoJKiBsZXguaCAoc2V0X2Zsb2F0X2hhbmRsZXIpOiBQcm90b3R5cGUgYWRkZWQgd2hlbiBKQzFfTElURSBub3QKCWRlZmluZWQuCgkqIHBhcnNlLmggKEVSUk9SX0NBTlRfQ09OVkVSVF9UT19CT09MRUFOKTogRml4ZWQKCWxhbmdfcHJpbnRhYmxlX25hbWUgaW52b2NhdGlvbiBpbiBtYWNyby4KCShFUlJPUl9DQU5UX0NPTlZFUlRfVE9fTlVNRVJJQywgRVJST1JfQ0FTVF9ORUVERURfVE9fSU5URUdSQUwpOgoJTGlrZXdpc2UuCgkoZHVwbGljYXRlX2RlY2xhcmF0aW9uX2Vycm9yKTogU3VwcHJlc3NlZCB1bnVzZWQgYXJndW1lbnQgaW4KCXByb3RvdHlwZS4KCShpZGVudGljYWxfc3VicGF0aF9wKTogRnVuY3Rpb24gZGVjbGFyYXRpb24gaXMgZ29uZS4KCShwYXRjaF9pbnZva2UpOiBTdXBwcmVzc2VkIHVudXNlZCBhcmd1bWVudCBpbiBwcm90b3R5cGUuCgkocGF0Y2hfY2FzdCwgYnVpbGRfbGFiZWxlZF9ibG9jaywgY2hlY2tfdGhyb3duX2V4Y2VwdGlvbnMpOgoJTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHNldGptcC5oKTogSW5jbHVkZWQKCSh0b3BsZXYuaCk6IExpa2V3aXNlLgoJKGZpZWxkX2RlY2xhcmF0aW9uOik6IFN1cHByZXNzZWQgdW51c2VkIGxvY2FsCgkobGFiZWxfZGVjbDopOiBGaXhlZCBidWlsZF9sYWJlbGVkX2Jsb2NrIGludm9jYXRpb24uCgkoamF2YV9wb3BfcGFyc2VyX2NvbnRleHQpOiBQdXQgZXh0cmEgcGFyZW50aGVzaXMgYXJvdW5kIGFzc2lnbm1lbnQKCWluIGlmLgoJKHl5ZXJyb3IpOiBTdXBwcmVzc2VkIHVudXNlZCBsb2NhbCB2YXJpYWJsZXMuCgkodmFyaWFibGVfcmVkZWZpbml0aW9uX2Vycm9yKTogRml4ZWQgbGFuZ19wcmludGFibGVfbmFtZQoJaW52b2NhdGlvbi4KCShjcmVhdGVfaW50ZXJmYWNlKTogU3VwcHJlc3NlZCB1bnVzZWQgbG9jYWwgdmFyaWFibGVzLgoJKGNyZWF0ZV9jbGFzcyk6IExpa2V3aXNlLgoJKGR1cGxpY2F0ZV9kZWNsYXJhdGlvbl9lcnJvcik6IFN1cHByZXNzZWQgdW51c2VkIGFyZ3VtZW50LiBGaXhlZAoJbGFuZ19wcmludGFibGVfbmFtZSBpbnZvY2F0aW9uLgoJKHJlZ2lzdGVyX2ZpZWxkcyk6IFN1cHByZXNzZWQgdW51c2VkIGxvY2FsIHZhcmlhYmxlLiBGaXhlZAoJZHVwbGljYXRlX2RlY2xhcmF0aW9uX2Vycm9yIGludm9jYXRpb24uCgkobWV0aG9kX2hlYWRlcik6IFN1cHByZXNzZWQgdW51c2VkIGxvY2FsIHZhcmlhYmxlLgoJKG1ldGhvZF9kZWNsYXJhdG9yLCBwYXJzZXJfY2hlY2tfc3VwZXIpOiBMaWtld2lzZS4KCShqYXZhX2NvbXBsZXRlX2NsYXNzKTogU3VwcHJlc3NlZCB1bnVzZWQgbG9jYWwgdmFyaWFibGUuIEZpeGVkCglmYXRhbCBlcnJvciBtZXNzYWdlLgoJKGNvbXBsZXRlX2NsYXNzX3JlcG9ydF9lcnJvcnMpOiBBZGRlZCBkZWZhdWx0OiBpbiBzd2l0Y2guCgkoamF2YV9jaGVja19yZWd1bGFyX21ldGhvZHMpOiBGaXhlZCBsYW5nX3ByaW50YWJsZV9uYW1lCglpbnZvY2F0aW9ucy4KCShjaGVja190aHJvd3NfY2xhdXNlcyk6IExpa2V3aXNlLgoJKGphdmFfY2hlY2tfYWJzdHJhY3RfbWV0aG9kcyk6IFN1cHByZXNzZWQgdW51c2VkIGxvY2FsCgl2YXJpYWJsZS4gRml4ZWQgbGFuZ19wcmludGFibGVfbmFtZSBpbnZvY2F0aW9uLgoJKHJlYWRfaW1wb3J0X2VudHJ5KTogQWRkZWQgc3VwcGxlbWVudGFsIHJldHVybiBzdGF0ZW1lbnQuCgkocmVhZF9pbXBvcnRfZGlyKTogU3VwcHJlc3NlZCB1bnVzZWQgbG9jYWwgdmFyaWFibGVzLgoJKGNoZWNrX3BrZ19jbGFzc19hY2Nlc3MsIGRlY2xhcmVfbG9jYWxfdmFyaWFibGVzKTogTGlrZXdpc2UuCgkoc291cmNlX3N0YXJ0X2phdmFfbWV0aG9kKTogU3VwcHJlc3NlZCB1bnVzZWQgZXh0ZXJuIHZhcmlhYmxlCglkZWNsYXJhdGlvbnMKCShleHBhbmRfc3RhcnRfamF2YV9tZXRob2QpOiBTdXBwcmVzc2VkIHVudXNlZCBleHRlcm4gYW5kIGxvY2FsCgl2YXJpYWJsZSBkZWNsYXJhdGlvbnMuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IExpa2V3aXNlLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZCk6IFN1cHByZXNzZWQgdW51c2VkIGxvY2FsIHZhcmlhYmxlcy4KCShtYWtlX3F1YWxpZmllZF9uYW1lKTogTGlrZXdpc2UuCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogQWRkZWQgZGVmYXVsdDogaW4KCXN3aXRjaC4gRml4ZWQgbGFuZ19wcmludGFibGVfbmFtZSBpbnZvY2F0aW9uLgoJKGNsYXNzX2luc3RhbmNlX2NyZWF0aW9uX2V4cHJlc3Npb24pOiBBZGRlZCBwYXJlbnRoZXNpcyBhcm91bmQKCWV4cHJlc3Npb25zLgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uX3N0bXQpOiBGaXhlZCBsYW5nX3ByaW50YWJsZV9uYW1lIGFuZAoJcGF0Y2hfaW52b2tlIGludm9jYXRpb25zLgoJKGNoZWNrX2Zvcl9zdGF0aWNfbWV0aG9kX3JlZmVyZW5jZSk6IEZpeGVkIGxhbmdfcHJpbnRhYmxlX25hbWUKCWludm9jYXRpb24uCgkocGF0Y2hfaW52b2tlKTogU3VwcHJlc3NlZCB1bnVzZWQgYXJndW1lbnRzIGFuZCBsb2NhbCB2YXJpYWJsZXMuCgkobG9va3VwX21ldGhvZF9pbnZva2UpOiBTdXBwcmVzc2VkIHVudXNlZCBsb2NhbCB2YXJpYWJsZXMuCgkocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IEFkZGVkIGRlZmF1bHQ6IGluIHN3aXRjaC4KCShpZGVudGljYWxfc3VicGF0aF9wKTogRnVuY3Rpb24gcmVtb3ZlZC4KCShwYXRjaF9hc3NpZ25tZW50KTogU3VwcHJlc3NlZCB1bnVzZWQgbG9jYWwgdmFyaWFibGVzLiBTdXBwcmVzc2VkCgl1bm5lY2Vzc2FyeSBpZiBzdGF0ZW1lbnQuIEZpeGVkIGxhbmdfcHJpbnRhYmxlX25hbWUgaW52b2NhdGlvbnMuCgkodHJ5X2J1aWx0aW5fYXNzaWduY29udik6IEZpeGVkIGxhbmdfcHJpbnRhYmxlX25hbWUgaW52b2NhdGlvbnMuCgkodmFsaWRfcmVmX2Fzc2lnbmNvbnZfY2FzdF9wKTogUGFyZW50aGVzaXMgYXJvdW5kCglleHByZXNzaW9uLiBTdXBwcmVzc2VkIHVudXNlZCBsb2NhbCB2YXJpYWJsZXMuCgkoYnVpbGRfYmlub3ApOiBTdXBwcmVzc2VkIHVudXNlZCBsb2NhbCB2YXJpYWJsZXMuIGZpeGVkCglsYW5nX3ByaW50YWJsZV9uYW1lIGludm9jYXRpb25zLgoJKHN0cmluZ19jb25zdGFudF9jb25jYXRlbmF0aW9uKTogU3VwcHJlc3NlZCB1bnVzZWQgbG9jYWwKCXZhcmlhYmxlcy4KCShwYXRjaF91bmFyeW9wKTogRml4ZWQgbGFuZ19wcmludGFibGVfbmFtZSBpbnZvY2F0aW9uLgoJKHBhdGNoX2Nhc3QpOiBTdXBwcmVzc2VkIHVubmVjZXNzYXJ5IGFyZ3VtZW50LiBGaXhlZAoJbGFuZ19wcmludGFibGVfbmFtZSBpbnZvY2F0aW9uLgoJKHBhdGNoX2FycmF5X3JlZik6IEZpeGVkIGxhbmdfcHJpbnRhYmxlX25hbWUgaW52b2NhdGlvbi4KCShwYXRjaF9uZXdhcnJheSwgcGF0Y2hfcmV0dXJuLCBwYXRjaF9pZl9lbHNlX3N0YXRlbWVudCk6IExpa2V3aXNlLgoJKGJ1aWxkX2xhYmVsZWRfYmxvY2spOiBTdXBwcmVzc2VkIHVudXNlZCBhcmd1bWVudC4KCShnZW5lcmF0ZV9sYWJlbGVkX2Jsb2NrKTogRml4ZWQgYnVpbGRfbGFiZWxlZF9ibG9jayBpbnZvY2F0aW9uLgoJKGJ1aWxkX2xvb3BfYm9keSk6IFN1cHByZXNzZWQgdW51c2VkIGxvY2FsIHZhcmlhYmxlcy4KCShwYXRjaF9sb29wX3N0YXRlbWVudCk6IExpa2V3aXNlLgoJKHBhdGNoX2V4aXQpOiBGaXhlZCBsYW5nX3ByaW50YWJsZV9uYW1lIGludm9jYXRpb24uCgkocGF0Y2hfc3dpdGNoX3N0YXRlbWVudCk6IExpa2V3aXNlLgoJKGNhc2VfaWRlbnRpdHkpOiBGaXJzdCBhcmd1bWVudCBtYXJrZWQgdW51c2VkLgoJKHBhdGNoX3RyeV9zdGF0ZW1lbnQpOiBGaXhlZCBsYW5nX3ByaW50YWJsZV9uYW1lIGludm9jYXRpb25zLgoJKHBhdGNoX3N5bmNocm9uaXplZF9zdGF0ZW1lbnQsIHBhdGNoX3Rocm93X3N0YXRlbWVudCk6IExpa2V3aXNlLgoJKGNoZWNrX3Rocm93bl9leGNlcHRpb25zKTogRml4ZWQgY2hlY2tfdGhyb3duX2V4Y2VwdGlvbnMgYW5kCglsYW5nX3ByaW50YWJsZV9uYW1lIGludm9jYXRpb25zLgoJKGNoZWNrX3Rocm93bl9leGNlcHRpb25zX2RvKTogU3VwcHJlc3NlZCB1bnVzZWQgYXJndW1lbnQuCgoxOTk4LTEwLTE0ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBqY2Ytd3JpdGUuYyAod3JpdGVfY2xhc3NmaWxlKTogQWRkIG91dHB1dCBjbGFzcyBmaWxlIGFzIHRhcmdldC4KCSogbGFuZy1vcHRpb25zLmg6IEFkZGVkIC1NRCwgLU1NRCwgLU0sIGFuZCAtTU0uCgkqIGpjZi5oOiBBZGRlZCBkZWNsYXJhdGlvbnMgZm9yIGRlcGVuZGVuY3ktdHJhY2tpbmcgZnVuY3Rpb25zLgoJKiBsYW5nLXNwZWNzLmg6IEhhbmRsZSAtTSwgLU1NLCBNRCwgYW5kIC1NTUQuCgkqIGxhbmcuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogUmVjb2duaXplIC1NRCBhbmQgLU1NRC4KCShmaW5pc2hfcGFyc2UpOiBDYWxsIGpjZl9kZXBlbmRlbmN5X3dyaXRlLgoJKGRlcGVuZGVuY3lfdHJhY2tpbmcpOiBOZXcgZ2xvYmFsLgoJKERFUEVORF9TRVRfRklMRSk6IE5ldyBkZWZpbmUuCgkoREVQRU5EX0VOQUJMRSk6IE5ldyBkZWZpbmUuCgkoaW5pdF9wYXJzZSk6IEVuYWJsZSBkZXBlbmRlbmN5IHRyYWNraW5nIGlmIHJlcXVpcmVkLgoJSW5jbHVkZSAiZmxhZ3MuaCIuCgkqIE1ha2VmaWxlLmluIChKQVZBX09CSlMpOiBBZGRlZCBqY2YtZGVwZW5kLm8uCgkoLi4vamNmLWR1bXAkKGV4ZWV4dCkpOiBEZXBlbmQgb24gYW5kIGxpbmsgd2l0aCBqY2YtZGVwZW5kLm8uCgkoLi4vZ2NqaCQoZXhlZXh0KSk6IExpa2V3aXNlLgoJKGpjZi1kZXBlbmQubyk6IE5ldyB0YXJnZXQuCgkqIE1ha2UtbGFuZy5pbiAoSkFWQV9TUkNTKTogQWRkZWQgamNmLWRlcGVuZC5jLgoJKEdDSkhfU09VUkNFUyk6IExpa2V3aXNlLgoJKiBqY2YtaW8uYyAob3Blbl9jbGFzcyk6IENhbGwgamNmX2RlcGVuZGVuY3lfYWRkX2ZpbGUuICBBZGRlZAoJZGVwX25hbWUgYXJndW1lbnQuCgkoZmluZF9jbGFzc2ZpbGUpOiBBZGRlZCBkZXBfbmFtZSBhcmd1bWVudC4KCShmaW5kX2NsYXNzKTogQ29tcHV0ZSBuYW1lIG9mIGRlcGVuZGVuY3kuCgkob3Blbl9pbl96aXApOiBDYWxsIGpjZl9kZXBlbmRlbmN5X2FkZF9maWxlLgoJKiBnamF2YWguYyAob3V0cHV0X2ZpbGUpOiBObyBsb25nZXIgZ2xvYmFsLgoJKHVzYWdlKTogRG9uJ3QgbWVudGlvbiAiZ2phdmFoIi4KCShoZWxwKTogTGlrZXdpc2UuCgkoamF2YV9ub19hcmd1bWVudCk6IExpa2V3aXNlLgoJKHZlcnNpb24pOiBMaWtld2lzZS4KCShtYWluKTogUmVjb2duaXplIGFuZCBoYW5kbGUgLU0gZmFtaWx5IG9mIG9wdGlvbnMuCgkocHJpbnRfbWFuZ2xlZF9jbGFzc25hbWUpOiBSZXR1cm4gaXMgdm9pZC4KCShwcm9jZXNzX2ZpbGUpOiBIYW5kbGUgY2FzZSB3aGVyZSBvdXRwdXQgaXMgc3VwcHJlc3NlZC4KCShIQU5ETEVfRU5EX0ZJRUxEKTogTGlrZXdpc2UuCgkoSEFORExFX01FVEhPRCk6IExpa2V3aXNlLgoJKiBqY2YtZGVwZW5kLmM6IE5ldyBmaWxlLgoKMTk5OC0xMC0xMyAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogamF2YS10cmVlLmRlZjogQWRkIG1pc3NpbmcgbmV3bGluZSBhdCBFT0YuCgoxOTk4LTEwLTEzICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBqY2YtZHVtcC5jIChwcm9jZXNzX2NsYXNzKTogVXNlIEZBVEFMX0VYSVRfQ09ERSwgbm90IC0xLgoJKG1haW4pOiBMaWtld2lzZS4gIEV4aXQgd2l0aCBTVUNDRVNTX0VYSVRfQ09ERSBhdCBlbmQgb2YKCWZ1bmN0aW9uLgoJSW5jbHVkZSA8Y29uZmlnLmg+IGFuZCAic3lzdGVtLmgiLgoJKGRpc2Fzc2VtYmxlX21ldGhvZCk6IFVuZGVmaW5lIFJFVCB0byBhdm9pZCBjbGFzaCB3aXRoCgljb25maWcvaTM4Ni9pMzg2LmguCgoxOTk4LTEwLTEzICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAocnVudGltZV9leGNlcHRpb25fdHlwZV9ub2RlLCBlcnJvcl9leGNlcHRpb25fdHlwZV9ub2RlKToKCU5ldyBnbG9iYWwgdmFyaWFibGVzLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZWQuCgkqIGV4cHIuYyAoamF2YV9sYW5nX2V4cGFuZF9leHByKTogU2V0IGNhdWdodCBleGNlcHRpb24gdHlwZSB0bwoJbnVsbCBpZiBjYXRjaCBoYW5kbGVyIGFyZ3VtZW50IGRvZXNuJ3QgZXhpdC4KCSogamF2YS10cmVlLmRlZiAoU1lOQ0hST05JWkVEX0VYUFIsIFRIUk9XX0VYUFIpOiBOZXcgSmF2YSBzcGVjaWZpYwoJdHJlZSBjb2Rlcy4KCSogamF2YS10cmVlLmggKHJ1bnRpbWVfZXhjZXB0aW9uX3R5cGVfbm9kZSwKCWVycm9yX2V4Y2VwdGlvbl90eXBlX25vZGUpOiBHbG9iYWwgdmFyaWFibGVzIGRlY2xhcmVkLgoJKERFQ0xfRlVOQ1RJT05fVEhST1dTKTogTmV3IG1hY3JvLgoJKERFQ0xfRlVOQ1RJT05fQk9EWSk6IE1vZGlmaWVkIGNvbW1lbnQuCgkoREVDTF9TUEVDSUZJQ19DT1VOVCk6IExpa2V3aXNlLgoJKHN0cnVjdCBsYW5nX2RlY2wpOiBOZXcgZmllbGQgdGhyb3dzX2xpc3QuCgkoSVNfVU5DSEVDS0VEX0VYUFJFU1NJT05fUCk6IE5ldyBtYWNyby4KCSogbGV4LmMgKGphdmFfbGV4KTogR2VuZXJhdGUgbG9jYXRpb24gaW5mb3JtYXRpb24gZm9yIFRIUk9XX1RLLgoJKiBwYXJzZS5oIChQVVNIX0VYQ0VQVElPTlMsIFBPUF9FWENFUFRJT05TLCBJTl9UUllfQkxPQ0tfUCwKCUVYQ0VQVElPTlNfUCk6IE5ldyBtYWNyb3MuCgkoZW51bSBqZGVwX2NvZGUpOiBOZXcgdmFsdWUgSkRFUF9FWENFUFRJT04uCgkoQlVJTERfTU9OSVRPUl9FTlRFUiwgQlVJTERfTU9OSVRPUl9FWElULAoJQlVJTERfQVNTSUdOX0VYQ0VQVElPTl9JTkZPLCBCVUlMRF9USFJPVywgU0VUX1dGTF9PUEVSQVRPUiwKCVBBVENIX01FVEhPRF9SRVRVUk5fRVJST1IpOiBOZXcgbWFjcm9zLgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uX3N0bXQpOiBBZGRlZCBuZXcgYXJndW1lbnQgdG8gcHJvdG90eXBlLgoJKHBhdGNoX3N5bmNocm9uaXplZF9zdGF0ZW1lbnQsIHBhdGNoX3Rocm93X3N0YXRlbWVudCwKCWNoZWNrX3Rocm93bl9leGNlcHRpb25zLCBjaGVja190aHJvd25fZXhjZXB0aW9uc19kbywKCXB1cmdlX3VuY2hlY2tlZF9leGNlcHRpb25zLCBjaGVja190aHJvd3NfY2xhdXNlcyk6IE5ldyBmdW5jdGlvbgoJcHJvdG90eXBlcy4KCSogcGFyc2UueSBGaXhlZCB0eXBvIGluIGtleXdvcmQgc2VjdGlvbi4KCSh0aHJvdzopOiBSdWxlIHRhZ2dlZCA8bm9kZT4uCgkoVEhST1dfVEspOiBLZXl3b3JkIHRhZ2dlZCA8b3BlcmF0b3I+LgoJKG1ldGhvZF9oZWFkZXI6KTogTGFzdCBhcmd1bWVudCB0byBjYWxsIHRvIG1ldGhvZF9oZWFkZXIgcGFzc2VkCglmcm9tIHRocm93czogcnVsZS4KCSh0aHJvd3M6LCBjbGFzc190eXBlX2xpc3Q6LCB0aHJvd19zdGF0ZW1lbnQ6LAoJc3luY2hyb25pemVkX3N0YXRlbWVudDosIHN5bmNocm9uaXplZDopOiBEZWZpbmVkIGFjdGlvbnMuCgkobWV0aG9kX2hlYWRlcik6IE5ldyBsb2NhbCB2YXJpYWJsZSBjdXJyZW50LiBSZWdpc3RlciBleGNlcHRpb25zCglmcm9tIHRocm93cyBjbGF1c2UuCgkoamF2YV9jb21wbGV0ZV90cmVlKTogQ29tcGxldGUgYW5kIHZlcmlmeSBleGNlcHRpb25zIGZyb20gdGhyb3dzCgljbGF1c2UuCgkoY29tcGxldGVfY2xhc3NfcmVwb3J0X2Vycm9ycyk6IEVycm9yIG1lc3NhZ2Ugb24gZXhjZXB0aW9ucyBub3QKCWZvdW5kCgkoamF2YV9jaGVja19yZWd1bGFyX21ldGhvZHMpOiBGaXhlZCB0eXBvLiBTaG9ydGN1dCBvbiBwcml2YXRlCglvdmVycmlkaW5nIG1ldGhvZHMuIENoYW5nZWQgZXJyb3IgbWVzc2FnZSBvbiBtZXRob2QKCXJlZGVmaW5pdGlvbi4gQ2hlY2sgZm9yIHRocm93cyBjbGF1c2UgY29tcGF0aWJpbGl0eS4KCShjaGVja190aHJvd3NfY2xhdXNlcyk6IE5ldyBmdW5jdGlvbi4KCShqYXZhX2NoZWNrX2Fic3RyYWN0X21ldGhvZHMpOiBVc2UgREVDTF9OQU1FIGZvciB3Zmwgb3IgY3VycmVudAoJbWV0aG9kLiBDaGFuZ2VkIGVycm9yIG1lc3NhZ2Ugb24gbWV0aG9kIHJlZGVmaW5pdGlvbi4KCShjdXJyZW50bHlfY2F1Z2h0X3R5cGVfbGlzdCk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IFB1cmdlIHVuY2hlY2tlZCBleGNlcHRpb25zIGZyb20KCXRocm93cyBjbGF1c2UgbGlzdC4gQ2FsbCBQVVNIX0VYQ0VQVElPTlMgYmVmb3JlIHdhbGsgYW5kCglQT1BfRVhDRVBUSU9OUyBhZnRlci4KCShyZXNvbHZlX3F1YWxpZmllZF9leHByZXNzaW9uX25hbWUpOiBQYXNzIG5ldyBhcmd1bWVudCBhcyBOVUxMIHRvCglwYXRjaF9tZXRob2RfaW52b2NhdGlvbl9zdG10LgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uX3N0bXQpOiBOZXcgYXJndW1lbnQgcmVmX2RlY2wuIEludm9rZQoJUEFUQ0hfTUVUSE9EX1JFVFVSTl9FUlJPUiB3aGVuIHJldHVybmluZyB3aXRoIGVycm9yLiBSZXZlcnNlCglhcmd1bWVudCBsaXN0IHdoZW4gYXBwcm9wcmlhdGUuIFVzZSBuZXcgYXJndW1lbnQgaWYgbm9uIG51bGwgdG8KCXN0b3JlIHNlbGVjdGVkIG1ldGhvZCBkZWNsLgoJKHBhdGNoX2ludm9rZSk6IENvbnZlcnQgaWYgbmVjZXNzYXJ5IGFyZ3Mgb2YgYnVpbHRpbiB0eXBlcyBiZWZvcmUKCWZvcm1pbmcgQ0FMTF9FWFBSLiBBcmd1bWVudCBsaXN0IG5vIGxvbmdlciByZXZlcnNlZCBoZXJlLgoJKGludm9jYXRpb25fbW9kZSk6IFRyZWF0IGZpbmFsIG1ldGhvZHMgYXMgc3RhdGljIG1ldGhvZHMuCgkoamF2YV9jb21wbGV0ZV90cmVlKTogTmV3IGNhc2VzIGZvciBUSFJPV19FWFBSOiBhbmQKCVNZTkNIUk9OSVpFRF9FWFBSOi4gQ2hlY2sgdGhyb3duIGV4Y2VwdGlvbnMgd2hlbiBjb21wbGV0aW5nCglmdW5jdGlvbiBjYWxsLgoJKGNvbXBsZXRlX2Z1bmN0aW9uX2FyZ3VtZW50cyk6IE5vIG1vcmUgUkVDT1JEX1RZUEUKCWNvbnZlcnNpb24uIEZ1bmN0aW9uIHBhcmFtZXRlciBub2RlcyBubyBsb25nZXIgc2F2ZWQuCgkodmFsaWRfcmVmX2Fzc2lnbmNvbnZfY2FzdF9wKTogQXZvaWQgaGFuZGxpbmcgbnVsbCB0eXBlLgoJKHBhdGNoX2Jpbm9wKTogRml4ZWQgbnVsbCBjb25zdGFudCByZWZlcmVuY2UgaGFuZGxpbmcuCgkoYnVpbGRfdHJ5X3N0YXRlbWVudCk6IFVzZSBCVUlMRF9BU1NJR05fRVhDRVBUSU9OX0lORk8gYW5kCglCVUlMRF9USFJPVyBtYWNyb3MuCgkocGF0Y2hfdHJ5X3N0YXRlbWVudCk6IEZpeGVkIGNvbW1lbnRzLiBSZWNvcmQgY2F1Z2h0IHR5cGVzIGluCglsaXN0LCBwdXNoIHRoZSBsaXN0LCBleHBhbmQgdHJ5IGJsb2NrIGFuZCBwb3AgdGhlIGxpc3QuCgkocGF0Y2hfc3luY2hyb25pemVkX3N0YXRlbWVudCwgcGF0Y2hfdGhyb3dfc3RhdGVtZW50LAoJY2hlY2tfdGhyb3duX2V4Y2VwdGlvbnMsIGNoZWNrX3Rocm93bl9leGNlcHRpb25zX2RvLAoJcHVyZ2VfdW5jaGVja2VkX2V4Y2VwdGlvbnMpOiBOZXcgZnVuY3Rpb25zLgoJKiB0eXBlY2suYyAobG9va3VwX2FyZ3VtZW50X21ldGhvZCk6IEFsbG93IFdGTCBpbiBwbGFjZSBvZiBtZXRob2QKCURFQ0xfTkFNRSBkdXJpbmcgbWV0aG9kIGRlZmluaXRpb24gY2hlY2sKCjE5OTgtMTAtMDkgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChkZWNvZGVfc2lnbmF0dXJlX3BpZWNlKTogTmV3IGZ1bmN0aW9uLgoJKHByaW50X2NfZGVjbCk6IFVzZSBpdC4gIEFkZGVkIGBuYW1lX292ZXJyaWRlJyBhcmd1bWVudC4KCShwcmludF9tZXRob2RfaW5mbyk6IFVzZSBuYW1lX292ZXJyaWRlIGFyZ3VtZW50IHRvIHByaW50X2NfZGVjbC4KCShzZWVuX2ZpZWxkcyk6IFJlbW92ZWQuCgkocHJpbnRfZmllbGRfaW5mbyk6IERvbid0IHVwZGF0ZSBzZWVuX2ZpZWxkcy4KCShzdHJ1Y3QgbWV0aG9kX25hbWUpOiBOZXcgc3RydWN0dXJlLgoJKG1ldGhvZF9uYW1lX2xpc3QpOiBOZXcgZ2xvYmFsLgoJKHByaW50X21ldGhvZF9pbmZvKTogQWRkIG5ldyBtZXRob2QgdG8gbGlzdCBvZiBtZXRob2RzLgoJKG5hbWVfaXNfbWV0aG9kX3ApOiBOZXcgZnVuY3Rpb24uCgkocHJpbnRfZmllbGRfaW5mbyk6IElmIGZpZWxkIG5hbWUgaGFzIHNhbWUgbmFtZSBhcyBtZXRob2QsIHRoZW4KCWNoYW5nZSBmaWVsZCBuYW1lLgoJKHByb2Nlc3NfZmlsZSk6IFBhcnNlIG1ldGhvZHMgYmVmb3JlIGZpZWxkcy4KCShmaWVsZF9wYXNzKTogTmV3IGdsb2JhbC4KCShIQU5ETEVfRU5EX0ZJRUxEKTogVGFrZSBmaWVsZF9wYXNzIGludG8gYWNjb3VudC4KCjE5OTgtMTAtMDcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChrZXl3b3JkLmgpOiBBZGQgLUwgS1ItQyAtRiAnLCAwJyBmbGFncyB0byBncGVyZi4KCShrZXl3b3JkLmgpOiBSZWdlbmVyYXRlIHVzaW5nIGdwZXJmIDIuNy4xICgxOTk4MTAwNiBlZ2NzKS4KCjE5OTgtMTAtMDMgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBjeWdudXMuY29tPgoKCSoganZzcGVjLmM6IEZpeCBidWcgaW4ganZnZW5tYWluX3NwZWMgcGF0Y2guCgoxOTk4LTEwLTAyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChsYW5nLm86KTogSW5zdGFsbCBkZXBlbmRlbmN5IG9uIGphdmEtdHJlZS5kZWYuCgkqIGRlY2wuYyAoc29mdF9leGNlcHRpb25pbmZvX2NhbGxfbm9kZSk6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBGaXhlZCBpbmRlbnRhdGlvbi4gc29mdF9iYWRhcnJheWluZGV4X25vZGUKCXRha2VzIGV4dHJhIGludGVnZXIgYXJndW1lbnQuIHNvZnRfZXhjZXB0aW9uaW5mb19jYWxsX25vZGUKCWluaXRpYWxpemVkLgoJKiBleGNlcHQuYyAoamF2YV9zZXRfZXhjZXB0aW9uX2xhbmdfY29kZSk6IE5ldyBmdW5jdGlvbgoJKG1ldGhvZF9pbml0X2V4Y2VwdGlvbnMpOiBDYWxsZWQgaGVyZS4KCShwcmVwYXJlX2VoX3RhYmxlX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX2VuZF9qYXZhX2hhbmRsZXIpOiBDYWxsZWQgaGVyZS4KCSogZXhwci5jIChidWlsZF9qYXZhX3Rocm93X291dF9vZl9ib3VuZHNfZXhjZXB0aW9uKTogTm93IGZlYXR1cmVzCglvbmUgYXJndW1lbnQuIE1vZGlmaWVkIGdlbmVyYXRpb24gb2YgY2FsbCB0bwoJc29mdF9iYWRhcnJheWluZGV4X25vZGUgdG8gdXNlIG5ldyBhcmd1bWVudC4KCShidWlsZF9qYXZhX2FycmF5YWNjZXNzKTogUGFzcyBmYXVsdHkgaW5kZXggdmFsdWUgdG8KCWJ1aWxkX2phdmFfdGhyb3dfb3V0X29mX2JvdW5kc19leGNlcHRpb24uCgkoZ2VuZXJhdGVfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShqYXZhX2xhbmdfZXhwYW5kX2V4cHIpOiBOZXcgbG9jYWwgdmFyaWFibGVzIG5vZGUsIGN1cnJlbnQsCgloYXNfZmluYWxseV9wLiBFeHBhbmQgVFJZX0VYUFIgbm9kZS4KCShwcm9jZXNzX2p2bV9pbnN0cnVjdGlvbik6IFJlcGxhY2UgdG9wIG9mIHRoZSBzdGFjayB3aXRoIHRocm93bgoJb2JqZWN0IHJlZmVyZW5jZSB3aGVuIGVudGVyaW5nIGV4Y2VwdGlvbiBoYW5kbGVyLgoJKiBqYXZhLXRyZWUuZGVmIChUUllfRVhQUiwgQ0FUQ0hfRVhQUiwgRklOQUxMWV9FWFBSKTogTmV3IEphdmEKCXNwZWNpZmljIHRyZWUgY29kZXMuCgkqIGphdmEtdHJlZS5oIChzb2Z0X2V4Y2VwdGlvbmluZm9fY2FsbF9ub2RlKTogRGVjbGFyYXRpb24gb2YgbmV3CglnbG9iYWwuCgkoREVDTF9TUEVDSUZJQ19DT1VOVCk6IE5ldyBtYWNyby4KCShwcmVwYXJlX2VoX3RhYmxlX3R5cGUsIGphdmFfc2V0X2V4Y2VwdGlvbl9sYW5nX2NvZGUsCglnZW5lcmF0ZV9uYW1lKTogTmV3IGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KCShtYXRjaF9qYXZhX21ldGhvZCk6IERlY2xhcmF0aW9uIGRlbGV0ZWQuCgkoRklOQUxMWV9FWFBSX0xBQkVMLCBGSU5BTExZX0VYUFJfQkxPQ0ssIENBVENIX0VYUFJfR0VUX0VYUFIpOiBOZXcKCW1hY3Jvcy4KCSogbGV4LmMgKFRSWV9USywgQ0FUQ0hfVEspOiBHZW5lcmF0ZSBsb2NhdGlvbiBpbmZvcm1hdGlvbi4KCSogcGFyc2UuaCAocmVkZWZpbml0aW9uX2Vycm9yLCByZWZpbmVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QsCgljYW5fY2FzdF90b19wKTogRnVuY3Rpb24gZGVjbGFyYXRpb24gcmVtb3ZlZC4KCShjbGFzc2l0Zl9yZWRlZmluaXRpb25fZXJyb3IsIHZhcmlhYmxlX3JlZGVmaW5pdGlvbl9lcnJvciwKCXBhcnNlX2pkazFfMV9lcnJvciwgZmluZF9hcHBsaWNhYmxlX2FjY2Vzc2libGVfbWV0aG9kc19saXN0LAoJZmluZF9tb3N0X3NwZWNpZmljX21ldGhvZHNfbGlzdCwgYXJndW1lbnRfdHlwZXNfY29udmVydGlibGUsCgllbnRlcl9hX2Jsb2NrLCB2YWxpZF9idWlsdGluX2Fzc2lnbmNvbnZfaWRlbnRpdHlfd2lkZW5pbmdfcCwKCXZhbGlkX2Nhc3RfdG9fcCwgdmFsaWRfbWV0aG9kX2ludm9jYXRpb25fY29udmVyc2lvbl9wLAoJdHJ5X3JlZmVyZW5jZV9hc3NpZ25jb252LCBhZGRfc3RtdF90b19jb21wb3VuZCwKCWJ1aWxkX2p1bXBfdG9fZmluYWxseSwgYnVpbGRfdHJlZV9saXN0LCBwYXRjaF90cnlfc3RhdGVtZW50LAoJamF2YV9nZXRfY2F0Y2hfYmxvY2spOiBOZXcgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgoJKiBwYXJzZS55IChzdHJpbmdfYnVmZmVyX3R5cGUpOiBHbG9iYWwgdmFyaWFibGUgZGVsZXRlZC4KCShncm91cF9vZl9sYWJlbHMsIGNhdGNoZXMsIGNhdGNoX2NsYXVzZSwgY2F0Y2hfY2xhdXNlX3BhcmFtZXRlciwKCWZpbmFsbHkpOiBSdWxlcyB0YWdnZWQgPG5vZGU+LgoJKFRSWV9USywgQ0FUQ0hfVEspOiBUb2tlbiB0YWdnZWQgPG9wZXJhdG9yPi4KCShjbGFzc19ib2R5X2RlY2xhcmF0aW9uOiwgY2xhc3NfbWVtYmVyX2RlY2xhcmF0aW9uOiwKCWZvcm1hbF9wYXJhbWV0ZXI6LCBleHBsaWNpdF9jb25zdHJ1Y3Rvcl9pbnZvY2F0aW9uOiwKCWludGVyZmFjZV9tZW1iZXJfZGVjbGFyYXRpb246LCBjb25zdGFudF9kZWNsYXJhdGlvbjosCglwcmltYXJ5X25vX25ld19hcnJheTosIGNsYXNzX2luc3RhbmNlX2NyZWF0aW9uX2V4cHJlc3Npb246LAoJYXJyYXlfY3JlYXRpb25fZXhwcmVzc2lvbjopOiBJc3N1ZSBlcnJvciBvbiB1bnN1cG9ydGVkIEpESzEuMQoJZmVhdHVyZXMuCgkodHJ5X3N0YXRlbWVudDosIGNhdGNoZXM6LCBmaW5hbGx5Oik6IERlZmluZSBhY3Rpb25zLgoJKGNhdGNoX2NsYXVzZV9wYXJhbWV0ZXIpOiBOZXcgcnVsZS4KCShjYXRjaF9jbGF1c2U6KTogVXNlIG5ldyBydWxlIGNhdGNoX2NsYXVzZV9wYXJhbWV0ZXIuCgkocGFyc2VfamRrMV8xX2Vycm9yKTogTmV3IGZ1bmN0aW9uLgoJKHJlZGVmaW5pdGlvbl9lcnJvcik6IFJlbmFtZWQgY2xhc3NpdGZfcmVkZWZpbml0aW9uX2Vycm9yLgoJKHZhcmlhYmxlX3JlZGVmaW5pdGlvbl9lcnJvcik6IE5ldyBmdW5jdGlvbi4KCShjaGVja19jbGFzc19pbnRlcmZhY2VfY3JlYXRpb24pOiBDYWxsCgljbGFzc2l0Zl9yZWRlZmluaXRpb25fZXJyb3IuCgkoamF2YV9jb21wbGV0ZV90cmVlKTogQWRkZWQgZXJyb3IgbWVzc2FnZSBvbiBKREVQX1RZUEU6IGNhc2UuCgkoY29tcGxldGVfY2xhc3NfcmVwb3J0X2Vycm9ycyk6IEZpeGVkIGluZGVudGF0aW9uLgoJKGRlY2xhcmVfbG9jYWxfdmFyaWFibGVzKTogQ2FsbCB2YXJpYWJsZV9yZWRlZmluaXRpb25fZXJyb3IuCgkoc291cmNlX2VuZF9qYXZhX21ldGhvZCk6IENhbGwgamF2YV9zZXRfZXhjZXB0aW9uX2xhbmdfY29kZSBhbmQKCWVtaXRfaGFuZGxlcnMgd2hlcmUgYXBwcm9wcmlhdGUuCgkoamF2YV9tZXRob2RfYWRkX3N0bXQpOiBDYWxsIGFkZF9zdG10X3RvX2Jsb2NrLgoJKGFkZF9zdG10X3RvX2Jsb2NrKTogTmV3IGZ1bmN0aW9uLgoJKGxvb2t1cF9tZXRob2RfaW52b2tlKTogRml4ZWQgb3V0c2lkZSBjb21tZW50LiBuZXcgbG9jYWwgdmFyaWFibGUKCWNhbmRpY2F0ZXMuICBDYWxsIGZpbmRfYXBwbGljYWJsZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCBhbmQKCWZpbmRfbW9zdF9zcGVjaWZpY19tZXRob2RzX2xpc3Qgd2hlbiBzZWFyY2hpbmcgZm9yIGEKCW1ldGhvZC4gTW9kaWZpZWQgZXJyb3IgcmVwb3J0IHRvIGxpc3QgcG9zc2libGUgY2FuZGlkYXRlcyB3aGVuCglhcHBsaWNhYmxlLgoJKGZpbmRfYXBwbGljYWJsZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCwKCWZpbmRfbW9zdF9zcGVjaWZpY19tZXRob2RzX2xpc3QsIGFyZ3VtZW50X3R5cGVzX2NvbnZlcnRpYmxlKTogTmV3CglmdW5jdGlvbi4KCShyZWZpbmVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QpOiBGdW5jdGlvbiBkZWxldGVkLgoJKGphdmFfY29tcGxldGVfdHJlZSk6IEhhbmRsZSBUUllfRVhQUi4gQVJSQVlfUkVGIGhhbmRsaW5nOiBzYXZlCglleHByIChpZiBhcHBsaWNhYmxlKSBiZWZvcmUgY2FsbGluZyBwYXRjaF9hcnJheV9yZWYuCgkoYnVpbGRfZXhwcl9ibG9jayk6IEZpeGVkIEJMT0NLX0VYUFJfQk9EWSBhc3NpZ25tZW50LgoJKGVudGVyX2Jsb2NrKTogRml4ZWQgY29tbWVudC4KCShlbnRlcl9hX2Jsb2NrKTogTmV3IGZ1bmN0aW9uLgoJKHBhdGNoX2Fzc2lnbm1lbnQpOiBSZW9yZ2FuaXplZC4gQ2FsbCB0cnlfcmVmZXJlbmNlX2Fzc2lnbmNvbnYgZm9yCglyZWZlcmVuY2VzLiBDYWxsIHZhbGlkX2Nhc3RfdG9fcCBpbnN0ZWFkIG9mIGNhbl9jYXN0X3RvX3AuCgkodHJ5X3JlZmVyZW5jZV9hc3NpZ25jb252LAoJdmFsaWRfYnVpbHRpbl9hc3NpZ25jb252X2lkZW50aXR5X3dpZGVuaW5nX3ApOiBOZXcgZnVuY3Rpb25zLgoJKHZhbGlkX3JlZl9hc3NpZ25jb252X2Nhc3RfcCk6IEZpeGVkIGludmVydGVkIHRlc3Qgb24gQ0xBU1NfRklOQUwuCgkodmFsaWRfY2FzdF90b19wLCB2YWxpZF9tZXRob2RfaW52b2NhdGlvbl9jb252ZXJzaW9uX3ApOiBOZXcKCWZ1bmN0aW9ucy4KCShidWlsZF9zdHJpbmdfY29uY2F0ZW5hdGlvbik6IERvbid0IHJlc29sdmUgU3RyaW5nQnVmZmVyLgoJKHBhdGNoX2Nhc3QpOiBGaXhlZCBpbnZlcnRlZCBhcmd1bWVudHMuCgkocGF0Y2hfYXJyYXlfcmVmKTogQ29kZSB0byBzYXZlIGFycmF5IGV4cHIgZGVsZXRlZC4gQ2FsbAoJdmFsaWRfY2FzdF90b19wIGluc3RlYWQgb2YgY2FuX2Nhc3RfdG9fcC4KCShnZW5lcmF0ZV9sYWJlbGVkX2Jsb2NrKTogQ2FsbCBnZW5lcmF0ZV9uYW1lLgoJKGJ1aWxkX2p1bXBfdG9fZmluYWxseSwgYnVpbGRfdHJ5X3N0YXRlbWVudCwgamF2YV9nZXRfY2F0Y2hfYmxvY2ssCglwYXRjaF90cnlfc3RhdGVtZW50KTogTmV3IGZ1bmN0aW9ucy4KCSogdHlwZWNrLmMgKG1hdGNoX2phdmFfbWV0aG9kKTogRnVuY3Rpb24gZGVsZXRlZC4KCjE5OTgtMTAtMDIgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBjeWdudXMuY29tPgoKCSoganZzcGVjLmM6IGp2Z2VubWFpbl9zcGVjIHVzZXMgZGlmZmVyZW50IHRlbXBvcmFyeSBmaWxlIG5hbWVzLgoKMTk5OC0xMC0wMiAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiBqdnNwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBGYWlsIGlmIHVzZXIgc3BlY2lmaWVzCgktLW1haW49IHdoZW4gbm90IGxpbmtpbmcuCgoxOTk4LTA5LTI4ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzX2RhdGEpOiBQdXNoIHZhbHVlIGZvciBgdGhyZWFkJyBmaWVsZC4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFkZGVkIGB0aHJlYWQnIGZpZWxkIHRvIGNsYXNzLgoKCSogY2xhc3MuYyAoYWRkX2ZpZWxkKTogQWx3YXlzIG1ha2Ugc3RhdGljIGZpZWxkcyBleHRlcm5hbGx5Cgl2aXNpYmxlLgoKMTk5OC0wOS0yNiAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGJ1aWxkX2phdmFfYXRocm93LAoJYnVpbGRfamF2YV90aHJvd19vdXRfb2ZfYm91bmRzX2V4Y2VwdGlvbiwgZXhwYW5kX2ludm9rZSwKCWJ1aWxkX25ld2FycmF5LCBleHBhbmRfamF2YV9tdWx0aWFuZXdhcnJheSwgYnVpbGRfamF2YV9tb25pdG9yKToKCVVwZGF0ZSBjb21tZW50cyB0byByZWZsZWN0IF9Kdl8qIGZ1bmN0aW9uIG5hbWVzLgoKMTk5OC0wOS0yNSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGNvbXBsZXRlX3N0YXJ0X2phdmFfbWV0aG9kKTogIERFQ0xfUkVTVUxUIGlzIGFsd2F5cyBwcm9tb3RlZC4KCSogZGVjbC5jIChzdGFydF9qYXZhX21ldGhvZCk6ICBIYW5kbGUgUFJPTU9URV9QUk9UT1RZUEVTIHRhcmdldCBtYWNyby4KCSogcGFyc2UueSAoZXhwYW5kX3N0YXJ0X2phdmFfbWV0aG9kKTogIExpa2V3aXNlLgoKMTk5OC0wOS0yNCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBleHByLmMgKHBvcF9hcmd1bWVudHMpOiAgSGFuZGxlIFBST01PVEVfUFJPVE9UWVBFUyB0YXJnZXQgbWFjcm8uCgoJKiBjbGFzcy5jIChwdXNoX2NsYXNzKTogIElERU5USUZJRVJfU0lHTkFUVVJFX1RZUEUgaXMgbm93IFBPSU5URVJfVFlQRS4KCShhZGRfZmllbGQpOiAgTm8gbG9uZ2VyIG5lZWQgdG8gY29udmVydCBmcm9tIFJFQ09SRF9UWVBFIHRvIHBvaW50ZXIsCgkqIGV4cHIuYzogIFJlbW92ZSBuby1sb25nZXItbmVlZGVkIGNhbGxzIHRvIHByb21vdGVfdHlwZS4KCSogZGVjbC5jIChnaXZlX25hbWVfdG9fbG9jYWxzKTogIExpZWt3aXNlLgoJKiBqY2YtcGFyc2UuYyAoZ2V0X2NsYXNzX2NvbnN0YW50KTogIENvbXBlbnNhdGUgZm9yIG5ldyBzaWduYXR1cmVzLgoJKiBwYXJzZS55OiAgQWRkL3JlbW92ZSBwcm9tb3RlX3R5cGUgY2FsbHMgYXMgYXBwcm9wcmlhdGUuCgkqIHR5cGVjay5jIChwYXJzZV9zaWduYXR1cmVfdHlwZSk6ICBSZXR1cm5zIFBPSU5URVJfVFlQRSBmb3Igb2JqZWN0cy4KCShwYXJzZV9zaWduYXR1cmVfc3RyaW5nKTogIExpa2V3aXNlLgoJKGJ1aWxkX2phdmFfYXJyYXlfdHlwZSk6ICBGaXggZm9yIG5vdyBzaWduYXR1cmUgY29udmVuaW9ucy4KCgkqIGxleC5jIChqYXZhX2xleCk6ICBGaXggKGZyb20gQWxleCkgZm9yIEpDMV9MSVRFIHByb2JsZW0uCgoxOTk4LTA5LTIzICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChpbml0X2NsYXNzX3Byb2Nlc3NpbmcpOiBsaWJqYXZhIGZ1bmN0aW9uIHJlbmFtZWQgdG8KCV9Kdl9SZWdpc3RlckNsYXNzLgoKMTk5OC0wOS0yMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGphdmFfbGFuZ19leHBhbmRfZXhwcik6IE5ldyBjYXNlIGZvciBTV0lUQ0hfRVhQUi4KCSogamF2YS10cmVlLmRlZjogRml4ZWQgREVGVFJFRUNPREUgdGhpcmQgYXJndW1lbnQuCgkoVU5BUllfUExVU19FWFBSLCBORVdfQVJSQVlfRVhQUiwgTkVXX0NMQVNTX0VYUFIsIFRISVNfRVhQUiwKCUNBU0VfRVhQUiwgREVGQVVMVF9FWFBSKTogTmV3IHRyZWUgY29kZXMgZm9yIEphdmEuCgkqIGphdmEtdHJlZS5oOiAoSVNfQ1JBRlRFRF9TVFJJTkdfQlVGRkVSX1ApOiBOZXcgbWFjcm8uCgkoSkFWQV9VTkFSWV9QTFVTX0VYUFIsIEpBVkFfTkVXX0FSUkFZX0VYUFIsIEpBVkFfTkVXX0NMQVNTX0VYUFIsCglKQVZBX1RISVNfRVhQUik6IE5vdyByZXBsYWNlZCBieSB0cmVlIGNvZGUgZGVmaW5pdGlvbnMuCgkoQ0FMTF9DT05TVFJVQ1RPUl9QKTogTm93IHVzZXMgTkVXX0NMQVNTX0VYUFIuCgkqIGxhbmcuYyAoamF2YV90cmVlX2NvZGVfdHlwZSwgamF2YV90cmVlX2NvZGVfbGVuZ3RoLAoJamF2YV90cmVlX2NvZGVfbmFtZSk6IE5ldyBhcnJheXMuCgkobGFuZ19pbml0KTogQXBwZW5kIEphdmEgdHJlZSBub2RlIGRlZmluaXRpb25zIHRvIEdjYyBvbmVzLgoJKiBsZXguYyAoZXhwcmVzc2lvbl9vYnN0YWNrKTogRGVjbGFyZWQgYXMgZXh0ZXJuIHdoZW4gSkMxX0xJVEUKCWRlZmluZWQuCgkoamF2YV9pbml0X2xleCk6IEluaXRpYWxpemUgd2ZsX2FwcGVuZCwgd2ZsX3N0cmluZ19idWZmZXIsCgl3ZmxfdG9fc3RyaW5nLgoJKGphdmFfbGV4KTogQWxsb3cgZGVjbGFyYXRpb24gb2YgZW1wdHkgc3RyaW5nIGNvbnN0YW50cy4gUmV0YWluCglsb2NhdGlvbiBpbmZvcm1hdGlvbiBvbiBDQVNFX1RLIGFuZCBERUZBVUxUX1RLLgoJKiBwYXJzZS5oIChKRkxPQVRfVFlQRV9QLCBKSU5URUdSQUxfVFlQRV9QLCBKTlVNRVJJQ19UWVBFX1AsCglKUFJJTUlUSVZFX1RZUEVfUCwgSlNUUklOR19UWVBFX1AsIEpTVFJJTkdfUCwgSlJFRkVSRU5DRV9UWVBFX1ApOgoJTW9kaWZpZWQgdG8gYmUgbW9yZSByb2J1c3QuCgkoQlVJTERfQVBQRU5ELCBCVUlMRF9TVFJJTkdfQlVGRkVSKTogTmV3IG1hY3Jvcy4KCShidWlsZF9uZXdfaW52b2NhdGlvbiwgdHJ5X2J1aWx0aW5fYXNzaWduY29udiwKCXBhdGNoX3N3aXRjaF9zdGF0ZW1lbnQsIHN0cmluZ19jb25zdGFudF9jb25jYXRlbmF0aW9uLAoJYnVpbGRfc3RyaW5nX2NvbmNhdGVuYXRpb24sIHBhdGNoX3N0cmluZ19jc3QsIHBhdGNoX3N0cmluZywKCWphdmFfZXhwYW5kX3N3aXRjaCk6IE5ldyBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCgkqIHBhcnNlLnk6IFJ1bGVzIHJlbGF0ZWQgdG8gc3dpdGNoIGFuZCBFSCB0YWdnZWQgPG5vZGU+LgoJKGxhYmVsX2lkKTogU2V0IHRvIE5VTExfVFJFRQoJKHdmbF9zdHJpbmdfYnVmZmVyLCB3ZmxfYXBwZW5kLCB3ZmxfdG9fc3RyaW5nKTogTmV3IHN0YXRpYyBnbG9iYWwKCXRyZWUgbm9kZXMuCgkodGhpc19vcl9zdXBlcjopOiBGaXhlZCBpbmRlbnRhdGlvbi4KCShzdGF0ZW1lbnQ6LCBzdGF0ZW1lbnRfbnNpOiwgc3RhdGVtZW50X3dpdGhvdXRfdHJhaWxpbmdfc3Vic3RhdGVtZW50OiwKCXN0YXRlbWVudF9leHByZXNzaW9uOik6IFJlbW92ZWQgY2FsbCB0byBSVUxFIG9uIGFsbCBzdWItcnVsZXMuCgkoc3dpdGNoX2V4cHJlc3Npb246LCBzd2l0Y2hfbGFiZWxzOik6IE5ldyBydWxlcy4KCShzd2l0Y2hfc3RhdGVtZW50Oiwgc3dpdGNoX2Jsb2NrOiwgc3dpdGNoX2Jsb2NrX3N0YXRlbWVudF9ncm91cHM6LAoJc3dpdGNoX2Jsb2NrX3N0YXRlbWVudF9ncm91cDosIHN3aXRjaF9sYWJlbHM6LCBzd2l0Y2hfbGFiZWw6KToKCURlZmluZWQgYWN0aW9ucy4KCSh0aHJvd19zdGF0ZW1lbnQ6LCBzeW5jaHJvbml6ZWRfc3RhdGVtZW50OiwgdHJ5X3N0YXRlbWVudDopOgoJRGVmaW5lZCB0ZW1wb3JhcnkgYWN0aW9ucy4KCShjbGFzc19pbnN0YW5jZV9jcmVhdGlvbl9leHByZXNzaW9uOik6IENhbGwKCWJ1aWxkX25ld19pbnZvY2F0aW9uLiBGaXhlZCBpbmRlbnRhdGlvbi4KCShmaWVsZF9hY2Nlc3MpOiBGaXhlZCBpbmRlbnRhdGlvbi4KCShtZXRob2RfaW52b2NhdGlvbik6IExpa2V3aXNlLgoJKG1ha2VfcXVhbGlmaWVkX3ByaW1hcnkpOiBVc2UgVEhJU19FWFBSLgoJKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IFVzZSBORVdfQ0xBU1NfRVhQUi4gV2hlbgoJcmVzb2x2aW5nIGZyb20gU1VQRVIsIHNldCAqdHlwZV9mb3VuZC4KCShxdWFsaWZ5X2FtYmlndW91c19uYW1lKTogVXNlIE5FV19DTEFTU19FWFBSLgoJKGphdmFfY29tcGxldGVfdHJlZSk6IFJlbW92ZWQgdW51c2VkIGxvY2FsIHZhcmlhYmxlIGBsb2NhdGlvbicuIENhc2UKCWZvciBTV0lUQ0hfRVhQUiwgc2hhcmluZyBjb2RlIHdpdGggTE9PUF9FWFBSLiBVc2UgTkVXX0FSUkFZX0VYUFIsCglORVdfQ0xBU1NfRVhQUiwgVU5BUllfUExVU19FWFBSIGFuZCBUSElTX0VYUFIuIE5ldyBzdHJpbmcgaGFuZGxpbmcKCW9uIE1PRElGWV9FWFBSOiBhbmQgYWxsIGJpbmFyeSBvcGVyYXRvciB0cmVlIGNvZGUgY2FzZXMuIFJlbW92ZWQKCVNUUklOR19DU1Q6IGNhc2UuIGRlZmF1bHQ6IGNoZWNrcyBmb3IgcGF0Y2hhYmxlIHN0cmluZ3MuCgkoY29tcGxldGVfZnVuY3Rpb25fYXJndW1lbnRzKTogVHJhbnNmb3JtIHN0cmluZyBjb25zdGFudCBvcgoJY3JhZnRlZCBTdHJpbmdCdWZmZXIgaWYgbmVjZXNzYXJ5LgoJKGJ1aWxkX21ldGhvZF9pbnZvY2F0aW9uKTogRml4ZWQgY29tbWVudHMuCgkoYnVpbGRfbmV3X2ludm9jYXRpb24pOiBOZXcgZnVuY3Rpb24uCgkocGF0Y2hfYXNzaWdubWVudCk6IENhbGwgdHJ5X2J1aWx0aW5fYXNzaWduY29udiB0byBmaWd1cmUgYSB2YWxpZAoJYXNzaWdubWVudCBjb252ZXJzaW9uIGJldHdlZW4gYnVpbHRpbiB0eXBlcy4KCSh0cnlfYnVpbHRpbl9hc3NpZ25jb252KTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX2Jpbm9wKTogVXNlIFVSU0hJRlRfRVhQUiBkaXJlY3RseSB0byBjYWxsIGJ1aWxkLgoJKG9wZXJhdG9yX3N0cmluZyk6IFVzZSBVTkFSWV9QTFVTX0VYUFIuCgkocGF0Y2hfYmlub3ApOiBVc2UgVU5BUllfUExVU19FWFBSLiBIYW5kbGUgc3RyaW5nIGNvbmNhdGVuYXRpb24KCW9wZXJhdG9yLgoJKGRvX21lcmdlX3N0cmluZ19jc3RlLCBtZXJnZV9zdHJpbmdfY3N0ZSwKCXN0cmluZ19jb25zdGFudF9jb25jYXRlbmF0aW9uLCBidWlsZF9zdHJpbmdfY29uY2F0ZW5hdGlvbiwKCXBhdGNoX3N0cmluZywgcGF0Y2hfc3RyaW5nX2NzdCk6IE5ldyBmdW5jdGlvbi4KCShidWlsZF91bmFyeV9vcCk6IFVzZSBVTkFSWV9QTFVTX0VYUFIgYW5kIENPTlZFUlRfRVhQUi4KCShwYXRjaF91bmFyeW9wKTogTGlrZXdpc2UuIE5ldyB0ZXN0IG9mIHZhbGlkICsrLy0tIG9wZXJhbmRzLgoJKGJ1aWxkX25ld2FycmF5X25vZGUpOiBVc2UgTkVXX0FSUkFZX0VYUFIuCgkoYnVpbGRfdGhpcyk6IFVzZSBUSElTX0VYUFIuCgkoYnVpbGRfcmV0dXJuKTogRW5hYmxlIGRlYnVnIGluZm9ybWF0aW9uIG9uIHJldHVybiBzdGF0ZW1lbnQuCgkoYnVpbGRfaWZfZWxzZV9zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCShjb21wbGV0ZV9sYWJlbGVkX3N0YXRlbWVudCk6IEZpeGVkIHJlbGF0ZWQgY29tbWVudC4KCShidWlsZF9sb29wX2JvZHkpOiBGaXhlZCBjb21tZW50LgoJKGJ1aWxkX2JjX3N0YXRlbWVudCk6IEVuYWJsZSBkZWJ1ZyBpbmZvcm1hdGlvbiBvbiBicmVhay9jb250aW51ZQoJc3RhdGVtZW50cy4KCShwYXRjaF9iY19zdGF0ZW1lbnQpOiBGaXhlZCB0eXBvcy4gSGFuZGxlIFNXSVRDSCBzdGF0ZW1lbnQKCWNvbnRleHQuCgkocGF0Y2hfc3dpdGNoX3N0YXRlbWVudCwgY2FzZV9pZGVudGl0eSwgamF2YV9leHBhbmRfc3dpdGNoKTogTmV3CglmdW5jdGlvbnMuCgoxOTk4LTA5LTIxICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGJ1ZmZlci5oIChCVUZGRVJfSU5JVCk6ICBOZXcgbWFjcm8uCgkqIGpjZi13cml0ZS5jIChzdHJ1Y3QgamNmX3BhcnRpYWwpOiAgTmV3IHR5cGUuICBQdXQgZ2xvYmFsIHN0dWZmIGhlcmUuCglQYXNzIChzdHJ1Y3QgamNmX3BhcnRpYWwgKnN0YXRlKSB0byBtb3N0IGZ1bmN0aW9ucy4KCShqY2ZfYmxvY2ssIGpjZl9yZWxvY2F0aW9uKTogIE5ldyB0eXBlcy4KCVN1cHBvcnQgbGFiZWxzLCBicmFuY2hlcywgY29uZGl0aW9uYWxzLCBsb29wcy4KCjE5OTgtMDktMjEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoSU5UX1RZUEVfU0laRSk6IERlZmluZSBhcyBCSVRTX1BFUl9XT1JEIGlmIG5vdCBkZWZpbmVkLgoKMTk5OC0wOS0yMSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGludGVnZXJfdHlwZV9ub2RlKTogIE1ha2UgaXQgaGF2ZSBJTlRfVFlQRV9TSVpFLgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiAgVXNlIGludF90eXBlX25vdCAoMzIgYml0cyksCglub3QgaW50ZWdlcl90eXBlX25vZGUgKElOVF9UWVBFX1NJWiBiaXRzKS4KCgkqIHBhcnNlLnkgKHBhdGNoX2lmX2Vsc2Vfc3RhdGVtZW50KTogIEFjY2VwdCBwcm9tb3RlZF9ib29sZWFuX3R5cGVfbm9kZS4KCgkqIGpjZi1yZWFkZXIuYyAoZ2V0X2F0dHJpYnV0ZSk6ICBOZXcgSEFORExFX0VYQ0VQVElPTl9UQUJMRSBob29rLgoJKiBqY2YtZHVtcC5jIChwcmludF9leGNlcHRpb25fdGFibGUpOiAgTmV3IGZ1bmN0aW9uLgoJKGRpc2Fzc2VtYmxlX21ldGhvZCk6ICBCZXR0ZXIgaGFuZGxpbmcgb2Ygd2lkZSBpbnN0cnVjdGlvbnMuCglNYWtlIG1vcmUgcm9idXN0IGZvciBiYWQgaW5wdXQuCgoxOTk4LTA5LTMwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBqY2Ytd3JpdGUuYyAoT1AyLCBPUDQpOiBVc2UgIl9pIiwgbm90ICJfSSIgdG8gYXZvaWQgcHJvYmxlbXMgb24KCUZyZWVCU0QuCgoxOTk4LTA5LTE3ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAoamNmLWR1bXAsIGp2Z2VubWFpbik6IExpbmsgaW4gbWVtbW92ZS5vIHRvby4KCjE5OTgtMDktMTcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluICgkKFBBUlNFX0gpKTogUmVtb3ZlZCB0YXJnZXQuCgoxOTk4LTA5LTE3ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAoSkFWQV9PQkpTKTogQWRkIG1lbW1vdmUubwoJKG1lbW1vdmUubyk6IE5ldyB0YXJnZXQgJiBydWxlcy4KCjE5OTgtMDktMTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2ludm9rZSk6IERvbid0IGdlbmVyYXRlIGEgY2FsbCB0byB0aGUgY2xhc3MgaW5pdAoJY29kZS4KCjE5OTgtMDktMTQgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluOiBBZGQgbWFueSBtaXNzaW5nIGRlcGVuZGVuY2llcy4KCSogYnVmZmVyLmMsIGNsYXNzLmMsIGNvbnN0YW50cy5jLCBkZWNsLmM6IFVzZSBzeXN0ZW0uaCBhbmQgdG9wbGV2LmgKCWFzIGFwcHJvcHJpYXRlLgoJKiBleGNlcHQuYywgZXhwci5jLCBqY2YtaW8uYyBqY2YtcGFyc2UuYywgamNmLXdyaXRlLmM6IExpa2V3aXNlLgoJKiBqdmdlbm1haW4uYyBsYW5nLmMgbWFuZ2xlLmMgdHlwZWNrLmMgdmVyaWZ5LmM6IExpa2V3aXNlLgoKMTk5OC0wOS0xMSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGNvbXBsZXRlX3N0YXJ0X2phdmFfbWV0aG9kKTogIElmIG1ldGhvZCBpcyBzdGF0aWMgKGFuZAoJbm90IHByaXZhdGUpIGNhbGwgX0p2X0luaXRDbGFzcy4KCSogZXhwci5jIChleHBhbmRfaW52b2tlKTogIERvbid0IGNhbGwgYnVpbGRfY2xhc3NfaW5pdC4KCgkqIGp2c3BlYy5jIChqdmdlbm1haW5fc3BlYyk6ICBGaXggc3BlYyBmb3IgZ2VuZXJhdGVkIC5vIGZpbGUuCgoxOTk4LTA5LTEwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBNYWtlLWxhbmcuaW4gKEdDSik6IERlZmluZSBiZWZvcmUgdXNpbmcuCgoxOTk4LTA5LTA5ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBnamF2YWguYyAoamF2YV9ub19hcmd1bWVudCk6IFJlbmFtZWQgZnJvbSBub19hcmd1bWVudCB0byBhdm9pZAoJbG9zaW5nIGR1ZSB0byBuYW1lc3BhY2UgcG9sbHV0aW9uIGluIEdOVSBnZXRvcHQuaAoKMTk5OC0wOS0wOSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogTWFrZS1sYW5nLmluIChqYXZhLmFsbC5idWlsZCk6IERvbid0IG1lbnRpb24ganZnZW5tYWluIG9yIGdjamguCgkoamF2YS5hbGwuY3Jvc3MpOiBMaWtld2lzZS4KCShqYXZhLnJlc3QuZW5jYXApOiBMaWtld2lzZS4KCjE5OTgtMDktMDggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGdqYXZhaC5jIChwcmludF9jbGFzc19kZWNscyk6IEZpeCB0aGlua28gaW4gYXJnbGlzdAoJKiBqY3YtaW8uYyAoZmluZF9jbGFzc2ZpbGUpOiBTaW1pbGFybHkuCgoxOTk4LTA5LTA3ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAoSU5DTFVERVMpOiBVcGRhdGUgZm9yIHJlY2VudCB0b3BsZXZlbCBnY2MgY2hhbmdlcy4KCjE5OTgtMDktMDUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoamF2YS5tYWludGFpbmVyLWNsZWFuKTogRG9uJ3QgcmVtb3ZlIHBhcnNlLmguCgkoamF2YS5tb3N0bHljbGVhbik6IFJlbW92ZSBwYXJzZS5jIGFuZCBwYXJzZS1zY2FuLmMsIG5vdCBwYXJzZS5oLgoJKiBNYWtlZmlsZS5pbiAoUEFSU0VfQyk6IE5ldyBtYWNyby4KCShQQVJTRV9IKTogTGlrZXdpc2UuCgkoUEFSU0VfU0NBTl9DKTogTGlrZXdpc2UuCgkoJChQQVJTRV9DKSk6IFRhcmdldCByZW5hbWVkIGZyb20gcGFyc2UuYy4KCSgkKFBBUlNFX1NDQU5fQykpOiBUYXJnZXQgcmVuYW1lZCBmcm9tIHBhcnNlLXNjYW4uYy4KCShjbGVhbik6IFJlbW92ZSBwYXJzZS1zY2FuLmMgYXMgd2VsbC4KCShwYXJzZS5vKTogRGVwZW5kIG9uICQoUEFSU0VfQykuCgoxOTk4LTA5LTA1ICBBbnRob255IEdyZWVuICA8Z3JlZW5AY3lnbnVzLmNvbT4KCgkqIFJFQURNRSwgbGljZW5zZS50ZXJtczogUmVtb3ZlZC4KCgkqIE1ha2UtbGFuZy5pbiwgTWFrZWZpbGUuaW4sIGNsYXNzLmMsIGNvbmZpZy1sYW5nLmluLCBjb25zdGFudHMuYywKCWRlY2wuYywgZXhjZXB0LmMsIGV4cHIuYywgZ2phdmFoLmMsIGphdmEtZXhjZXB0LmgsIGphdmEtdHJlZS5oLAoJamF2YW9wLmRlZiwgamF2YW9wLmgsIGpjZi1kdW1wLmMsIGpjZi1pby5jLCBqY2YtcGFyc2UuYywKCWpjZi1yZWFkZXIuYywgamNmLXdyaXRlLmMsIGpjZi5oLCBqdmdlbm1haW4uYywganZzcGVjLmMsCglrZXl3b3JkLmdwZXJmLCBrZXl3b3JkLmgsIGxhbmctb3B0aW9ucy5oLCBsYW5nLXNwZWNzLmgsIGxhbmcuYywKCWxleC5jLCBsZXguaCwgbWFuZ2xlLmMsIHBhcnNlLXNjYW4ueSwgcGFyc2UuaCwgcGFyc2UueSwgdHlwZWNrLmMsCgl2ZXJpZnkuYywgemV4dHJhY3QuYywgemlwZmlsZS5oOiBGaXhlZCBjb3B5cmlnaHQgYXNzaWdubWVudCwKCWFuZCBKYXZhIHRyYWRlbWFyayBhdHRyaWJ1dGlvbi4KCjE5OTgtMDktMDQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBVc2UgZ2NqaCwgbm90IGdqYXZhaC4KCSogY29uZmlnLWxhbmcuaW4gKHN0YWdlc3R1ZmYpOiBVc2UgZ2NqaCwgbm90IGdqYXZhaC4KCSogTWFrZS1sYW5nLmluOiBDaGFuZ2VkIGdqYXZhaCB0byBnY2poIGV2ZXJ5d2hlcmUuCgoxOTk4LTA5LTAzICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jOiAgU3VwcG9ydCBuZXcgLXByZXBlbmQgLWFkZCAtYXBwZW5kIGZsYWdzLgoJKHByaW50X21ldGhvZF9pbmZvKTogIE1ldGhvZCBpcyBub3QgdmlydHVhbCBpZiBjbGFzcyBpcyBmaW5hbC4KCjE5OTgtMDktMDMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSoganYtc2Nhbi5jOiBGaXhlZCBjb3B5cmlnaHQgYXNzaWdubWVudC4KCSoga2V5d29yZC5ncGVyZjogTGlrZXdpc2UuCgkqIGtleXdvcmQuaDogTGlrZXdpc2UuCgkqIGxleC5jOiBGaXhlZCBjb3B5cmlnaHQgYXNzaWdubWVudC4KCShqYXZhX2xleCk6IFB1c2ggdW5pY29kZSBiYWNrIHdoZW4gcGFyc2luZyAnPCcuCgkqIGxleC5oOiBGaXhlZCBjb3B5cmlnaHQgYXNzaWdubWVudC4KCSogcGFyc2Utc2Nhbi55OiBMaWtld2lzZS4KCSogcGFyc2UuaDogRml4ZWQgY29weXJpZ2h0IGFzc2lnbm1lbnQuCgkoYnVpbGRfZGVidWdhYmxlX3N0bXQsIGNvbXBsZXRlX2Zvcl9sb29wKTogTmV3IGZ1bmN0aW9uIHByb3RvdHlwZXMuCgkqIHBhcnNlLnk6IEZpeGVkIGNvcHlyaWdodCBhc3NpZ25tZW50LgoJKGZvcl9zdGF0ZW1lbnQ6KTogQ2FsbCBjb21wbGV0ZV9mb3JfbG9vcC4gU2V0IEVYSVRfRVhQUiB0byBiZQoJc2l6ZV96ZXJvX25vZGUgd2hlbiBjb21wbGV0aW5nIGEgbG9vcCB3aXRoIG5vIGV4aXQgY29uZGl0aW9uLgoJKGZvcl9zdGF0ZW1lbnRfbnNpOik6IERlZmluZSBhY3Rpb24uCgkoZm9yX2luaXQ6LCBmb3JfdXBkYXRlOik6IFJldHVybiBzaXplX3plcm9fbm9kZSB3aGVuIGVtcHR5LgoJKGRlY2xhcmVfbG9jYWxfdmFyaWFibGVzKTogQ2FsbCBidWlsZF9kZWJ1Z2FibGVfc3RtdC4KCShidWlsZF9kZWJ1Z2FibGVfc3RtdCk6IE5ldyBmdW5jdGlvbi4KCShidWlsZF9sb29wX2JvZHkpOiBCdWlsZCBkZWJ1Z2FibGUgc3RhdGVtZW50IGFyb3VuZCBsb29wCgljb25kaXRpb24gcGFydC4KCShjb21wbGV0ZV9sb29wX2JvZHkpOiBUYWtlIGludG8gYWNjb3VudCB0aGUgZGVidWdhYmxlIHN0YXRlbWVudAoJYXJvdW5kIHRoZSBFWElUX0VYUFIuCgkoY29tcGxldGVfbG9vcF9ib2R5KTogTmV3IGZ1bmN0aW9uLgoJKHBhdGNoX2V4aXRfZXhwcik6IEZpeGVkIGNvbmRpdGlvbiBpbnZlcnNpb24uCgoxOTk4LTA5LTAyICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGp2c3BlYy5vKTogVXNlIEdDQ19USFJFQURfRklMRSB0byBjb21wdXRlIGNvcnJlY3QKCW5hbWUgb2YgdGhyZWFkIGRlZmluZS4KCSoganZzcGVjLmMgKFRIUkVBRF9OQU1FKTogTmV3IG1hY3JvLgoJKEdDTElCKTogTGlrZXdpc2UuCgkoVEhSRUFETElCKTogTGlrZXdpc2UuCgkobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBSZWNvZ25pemUgYXR0ZW1wdCB0byBsaW5rIHdpdGggdGhyZWFkCglsaWJyYXJ5IG9yIGdjIGxpYnJhcnkuICBSZWNvZ25pemUgLWxqYXZhIG9uIGNvbW1hbmQgbGluZSBzbyBpdAoJaXNuJ3QgbGlua2VkIGFnYWluc3QgbW9yZSB0aGFuIG9uY2UuCgoxOTk4LTA5LTAyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLXNjYW4ueSAocmVwb3J0X21haW5fZGVjbGFyYXRpb24pOiBOYW1lIG9mIHRoZSBjbGFzcwoJY29udGFpbmluZyBgbWFpbicgY2FuIGJlIGEgcXVhbGlmaWVkIG5hbWUuCgoxOTk4LTA4LTMxICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBjb25maWctbGFuZy5pbjogQ2hhbmdlZCBnamF2YWMgdG8gZ2pjIGV2ZXJ5d2hlcmUuCgkqIE1ha2UtbGFuZy5pbjogQ2hhbmdlZCBnamF2YWMgdG8gZ2pjIGV2ZXJ5d2hlcmUuCgoxOTk4LTA4LTI3ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoSkFWQV9UQVJHRVRfSU5ERVBFTkRFTlRfQklOX1RPT0xTKTogTmV3IHZhcmlhYmxlLgoJKGphdmEuaW5zdGFsbC1jb21tb246KTogTG9vcCBvdmVyIEpBVkFfVEFSR0VUX0lOREVQRU5ERU5UX0JJTl9UT09MUwoJYW5kIGluc3RhbGwgdGhlIGZpbGVzLgoJKiBNYWtlZmlsZS5pbiAoSkFWQV9PQkpTX0xJVEUpOiBOZXcgdmFyaWFibGUuCgkoY29tcGlsZXI6KTogTm93IGluY2x1ZGUganYtc2NhbiBhcyBhIGRlcGVuZGVuY3kuCgkoLi4vanYtc2NhbiQoZXhlZXh0KSwgcGFyc2Utc2Nhbi5jKTogTmV3IHRhcmdldHMuCgkoLi4vamNmLWR1bXAkKGV4ZWV4dCkpOiBXYXMgamNmLWR1bXAkKGV4ZWV4dCkgYmVmb3JlLgoJKiBjb25maWctbGFuZy5pbiAoY29tcGlsZXJzKTogUmVtb3ZlZCBnY2osIGdqYXZhaCBmcm9tIHRoZSBsaXN0LgoJKiBqY2YtcGFyc2UuYyAocGFyc2Vfc291cmNlX2ZpbGUpOiBDYWxsIGphdmFfbGF5b3V0X2NsYXNzZXMgYW5kCgljaGVjayBmb3IgZXJyb3JzIGV2ZW4gaWYgcGFyc2Vfb25seS4KCSogbGV4LmMgKGphdmFfaW5pdF9sZXgpOiBSZW9yZ2FuaXplZCBhbmQgc2tpcCBwYXJ0cyBpZiBKQzFfTElURSBpcwoJZGVmaW5lZC4KCSh5eWxleCk6IE5ldyBmdW5jdGlvbi4gVXNlcyBqYXZhX2xleCBib2R5LgoJKGphdmFfbGV4KTogUmVtb3ZlZCBjb21tZW50ZWQgb3V0IHN0YXRlbWVudC4gUmVtb3ZlIGxvY2FsIHZhcmlhYmxlCglsaXRlcmFsLiBVc2UgU0VUX0xWQUxfTk9ERV9UWVBFIGFuZCBTRVRfTFZBTF9OT0RFIHdoZXJlCglhcHByb3ByaWF0ZS4gIFVzZSBtYWNyb3MgRkxPQVRfVFlQRV9OT0RFLCBET1VCTEVfVFlQRV9OT0RFLAoJRENPTlNUMCwgU0VUX0ZMT0FUX0hBTkRMRVIsIFNFVF9SRUFMX1ZBTFVFX0FUT0YsCglTRVRfTFZBTF9OT0RFX1RZUEUgYW5kIEdFVF9UWVBFX1BSRUNJU0lPTi4gRG9uJ3QgY3JlYXRlIFNUUklOR19DU1QKCWlmIEpDMV9MSVRFIGlzIGRlZmluZWQuIFVzZSBCVUlMRF9JRF9XRkwgdG8gYnVpbGQgaWRlbnRpZmllcnMuIFVzZQoJU0VUX01PRElGSUVSX0NUWCwgU0VUX0xWQUxfTk9ERSwgQlVJTERfSURfV0ZMIGFuZCBHRVRfSURFTlRJRklFUgoJd2hlcmUgYXBwcm9wcmlhdGUuCgkoamF2YV9sZXhfZXJyb3IpOiBFbXB0eSBpZiBKQzFfTElURSBpcyBkZWZpbmVkLgoJKGphdmFfZ2V0X2xpbmVfY29sKTogUmV0dXJuIDAgaWYgSkMxX0xJVEUgaXMgZGVmaW5lZC4KCSogbGV4LmggKEpBVkFfRkxPQVRfUkFOR0VfRVJST1IsIEpBVkFfSU5URUdSQUxfUkFOR0VfRVJST1IsCglTRVRfTU9ESUZJRVJfQ1RYKTogTW92ZWQgaW50byB0aGUgc2VjdGlvbiBjb250YWluaW5nIHRoZSBtYWNyb3MKCWNvbmRpdGlvbmFsbHkgZGVmaW5lZCBieSBKQzFfTElURS4KCShCVUlMRF9PUEVSQVRPUixCVUlMRF9PUEVSQVRPUjIpOiBKdXN0IHJldHVybiB0aGUgVE9LRU4KCWFyZ3VtZW50IGlmIEpDMV9MSVRFIGlzIGRlZmluZWQuCgkoSE9TVF9CSVRTX1BFUl9XSURFX0lOVCwgSE9TVF9XSURFX0lOVCwgUkVBTF9WQUxVRV9BVE9GLAoJUkVBTF9WQUxVRV9JU0lORiwgUkVBTF9WQUxVRV9JU05BTik6IFByZXNldCB0byB2YWx1ZXMgaWYgSkMxX0xJVEUKCWlzIGRlZmluZWQuCgkoRENPTlNUMCwgU0VUX0ZMT0FUX0hBTkRMRVIsIEdFVF9JREVOVElGSUVSLCBTRVRfUkVBTF9WQUxVRV9BVE9GLAoJRkxPQVRfVFlQRSwgRE9VQkxFX1RZUEUsIFNFVF9NT0RJRklFUl9DVFgsIEdFVF9UWVBFX1BSRUNJU0lPTiwKCVNFVF9MVkFMX05PREUsIFNFVF9MVkFMX05PREVfVFlQRSwgQlVJTERfSURfV0ZMKTogTmV3IG1hY3Jvcywgc2V0Cgl0byBkaWZmZXJlbnQgdmFsdWVzIGFjY29yZGluZyB0byBKQzFfTElURS4KCSogcGFyc2UuaCAoaW50X2ZpdHNfdHlwZV9wLCBzdGFiaWxpemVfcmVmZXJlbmNlKTogUHJvdG90eXBlIG5vdAoJZGVjbGFyZWQgaWYgSkMxX0xJVEUgc2V0LgoJKGpkZXBfY29kZSwgdHlwZWRlZiBzdHJ1Y3QgX2pkZXAsIHR5cGVkZWYgc3RydWN0IF9qZGVwbGlzdCk6IE5vdAoJZGVmaW5lZCBpZiBKQzFfTElURSBub3Qgc2V0LgoJKHN0cnVjdCBwYXJzZXJfY3R4KTogUmVvcmdhbml6ZWQgYW5kIHNraXAgdGhlIGpjMSBmcm9udCBlbmQgcGFydAoJaWYgSkMxX0xJVEUgc2V0LgoJKGphdmFfbGF5b3V0X2NsYXNzZXMpOiBOZXcgZnVuY3Rpb24gZGVmaW5pdGlvbi4KCShqYXZhX3B1c2hfcGFyc2VyX2NvbnRleHQsIGphdmFfaW5pdF9sZXgsIHl5cGFyc2UsIHl5bGV4LAoJeXllcnJvcik6IFByb3RvdHlwZSBhbHdheXMgZGVjbGFyZWQuIEFsbCBvdGhlciBzdGF0aWMgZnVuY3Rpb24KCXByb3RvdHlwZXMgZGVjbGFyZWQgb25seSBpZiBKQzFfTElURSBpcyBub3Qgc2V0LgoJKiBwYXJzZS55ICh5eXBhcnNlLCB5eWxleCwgeXllcnJvcik6IE5vIGxvbmdlciBkZWNsYXJlZCBoZXJlLiBOb3cKCWRlY2xhcmVkIGluIHBhcnNlLmguCgkoamF2YV9sYXlvdXRfY2xhc3Nlcyk6IE5ldyBmdW5jdGlvbi4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzKTogTm8gbG9uZ2VyIGxheW91dCB0aGUgY2xhc3MgaGVyZS4KCSogcGFyc2Utc2Nhbi55OiBOZXcgZmlsZS4KCSoganYtc2Nhbi5jOiBOZXcgZmlsZS4KCjE5OTgtMDgtMjUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChtYWluKTogSGFuZGxlIC1mcmllbmQgb3B0aW9uLgoJKGZyaWVuZF9zcGVjcyk6IE5ldyBnbG9iYWwuCgkoZ2VuZXJhdGVfYWNjZXNzKTogSGFuZGxlIGZyaWVuZF9zcGVjcy4KCShwcm9jZXNzX2ZpbGUpOiBMaWtld2lzZS4KCShNQVhfRlJJRU5EUyk6IE5ldyBtYWNyby4KCShmcmllbmRfY291bnQpOiBOZXcgZ2xvYmFsLgoJKHByaW50X2N4eF9jbGFzc25hbWUpOiBBZGRlZCBgcHJlZml4JyBhcmd1bWVudC4gIElnbm9yZSBhcnJheXMuCglDaGFuZ2VkIGFsbCBjYWxsZXJzLgoKMTk5OC0wOC0yNCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBqY2YtZHVtcC5jIChwcm9jZXNzX2NsYXNzKTogIE1vdmUgSkNGX0ZJTklTSCB1c2UgdG8gbWFpbiwKCShtYWluKTogIEhhbmRsZSBwcm9jZXNzaW5nIGFsbCB0aGUgZW50cmllcyBvZiBhIG5hbWVkIC56aXAgYXJjaGl2ZS4KCSogamNmLWlvLmMgKGpjZl90cmltX29sZF9pbnB1dCk6ICBOZXcgZnVuY3Rpb24uCgkqIGpjZi5oIChHRVRfdTJfbGUsR0VUX3U0X2xlLEpDRl9yZWFkdTJfbGUsSkNGX3JlYWR1NF9sZSk6ICBOZXcgbWFjcm9zLgoKMTk5OC0wOC0yNCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBsYW5nLmMgKGZsYWdfYXNzdW1lX2NvbXBpbGVkKTogIE1ha2UgZGVmYXVsdCBiZSBvbi4KCjE5OTgtMDgtMjEgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogamNmLWR1bXAuYzogIEFkZCBidW5jaGVzIG9mIGZsYWdzIHRvIGNvbnRyb2wgb3V0cHV0IG1vcmUuCgkocHJvY2Vzc19jbGFzcyk6ICBOZXcgZnVuY3Rpb247ICBzdXBwb3J0IHByaW50aW5nIG1vcmUgdGhhbiBvbmUgY2xhc3MuCgkobWFpbik6IFN1cHBvcnQgbmV3IC0tcHJpbnQtbWFpbiBhbmQgLS1qYXZhcCBmbGFncy4KCSogamNmLXJlYWRlci5jIChJR05PUkVfQVRUUklCVVRFKTogIE5ldyBob29rLgoJKiBqY2YuaCAoQ1BPT0xfSU5ERVhfSU5fUkFOR0UpOiAgTmV3IG1hY3JvLgoKMTk5OC0wOC0yMCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJQ2hhbmdlIG1hbmdsaW5nIG9mIGRpc3BhdGNoIHRhYmxlIHRvIG1hdGNoIEMrKyB2dGFibGUgKHcvdGh1bmtzKS4KCSogY2xhc3MuYyAoYnVpbGRfZHRhYmxlX2RlY2wpLCBqYXZhLXRyZWUuaDogIE5ldyBmdW5jdGlvbi4KCShtYWtlX2NsYXNzX2RhdGEpOiAgQ2FsbCBpdC4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6ICBMaWtld2lzZS4KCjE5OTgtMDgtMTkgIFdhcnJlbiBMZXZ5ICA8d2FycmVubEBjeWdudXMuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFVzZSBfSnZfTmV3T2JqZWN0QXJyYXksIG5vdAoJc29mdF9hbmV3YXJyYXk7IGFkanVzdCBhcmdzIHBhc3NlZC4KCSogZXhwci5jIChidWlsZF9hbmV3YXJyYXkpOiBBZGp1c3QgYXJncyBmb3Igc29mdF9hbmV3YXJyYXlfbm9kZSB0bwoJbWF0Y2ggX0p2X05ld09iamVjdEFycmF5LgoKMTk5OC0wOC0xOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHB1c2hfbGFiZWxlZF9ibG9jaywgcG9wX2xhYmVsZWRfYmxvY2spOiBOZXcgZnVuY3Rpb25zLgoJKiBleHByLmMgKGxvb3B1cF9sYWJlbCk6IENhbGwgY3JlYXRlX2xhYmVsX2RlY2wuCgkoY3JlYXRlX2xhYmVsX2RlY2wpOiBOZXcgZnVuY3Rpb24uCgkoamF2YV9sYW5nX2V4cGFuZF9leHByKTogQ2FsbCBleHBhbmRfc3RhcnRfYmluZGluZ3Mgd2l0aCBhcmd1bWVudAoJc2V0IHRvIHplcm8uCgkqIGphdmEtdHJlZS5oIEFkZGVkIHNwYWNlIGFmdGVyIFBST1RPIGluIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucwoJd2hlbiBuZWNlc3NhcnkuCgkoSVNfRk9SX0xPT1BfUCwgSVNfQlJFQUtfU1RNVF9QKTogTmV3IG1hY3Jvcy4KCShjcmVhdGVfbGFiZWxfZGVjbCwgcHVzaF9sYWJlbGVkX2Jsb2NrKTogTmV3IGZ1bmN0aW9uCglkZWNsYXJhdGlvbnMuCgkqIGxleC5jIChsYWJlbF9pZCk6IEluaXRpYWxpemUuCgkoU1VQRVJfVEssIFRISVNfVEssIFJFVFVSTl9USyk6IE1lcmdlZCBjb21tb24gYWN0aW9ucyBpbiBmaW5hbAoJc3dpdGNoLgoJKiBwYXJzZS5oIEFkZGVkIHNwYWNlIGFmdGVyIFBST1RPIGluIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyB3aGVuCgluZWNlc3NhcnkuCgkoTE9PUF9FWFBSX0JPRFlfTUFJTl9CTE9DSywgTE9PUF9FWFBSX0JPRFlfVVBEQVRFX0JMT0NLLAoJTE9PUF9FWFBSX0JPRFlfQ09ORElUSU9OX0VYUFIsIExPT1BfRVhQUl9CT0RZX0xBQkVMRURfQk9EWSwKCUxPT1BfRVhQUl9CT0RZX0JPRFlfRVhQUiwgTE9PUF9IQVNfTEFCRUxfUCwgTE9PUF9IQVNfTEFCRUxfU0tJUF9QLAoJUFVTSF9MQUJFTEVEX0JMT0NLLCBQT1BfTEFCRUxFRF9CTE9DSywgUFVTSF9MT09QLCBQT1BfTE9PUCk6IE5ldwoJbWFjcm9zLgoJKHN0cnVjdCBwYXJzZXJfY3R4dCk6IE5ldyBmaWVsZHMgY3VycmVudF9sb29wLAoJY3VycmVudF9sYWJlbGVkX2Jsb2NrLgoJKGJ1aWxkX2lmX2Vsc2Vfc3RhdGVtZW50LCBwYXRjaF9pZl9lbHNlX3N0YXRlbWVudCwKCWFkZF9zdG10X3RvX2NvbXBvdW5kLCBwYXRjaF9leGl0X2V4cHIsIGJ1aWxkX2xhYmVsZWRfYmxvY2ssCglnZW5lcmF0ZV9sYWJlbGVkX2Jsb2NrLCBjb21wbGV0ZV9sYWJlbGVkX3N0YXRlbWVudCwKCWJ1aWxkX2JjX3N0YXRlbWVudCwgcGF0Y2hfYmNfc3RhdGVtZW50LCBwYXRjaF9sb29wX3N0YXRlbWVudCwKCWJ1aWxkX25ld19sb29wLCBidWlsZF9sb29wX2JvZHksIGNvbXBsZXRlX2xvb3BfYm9keSk6IE5ldyBmdW5jdGlvbgoJZGVjbGFyYXRpb25zLgoJKiBwYXJzZS55IChqYXZhX3dhcm5pbmdfY291bnQpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLgoJKGxhYmVsX2lkKTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCShCUkVBS19USywgQ09OVElOVUVfVEspOiBUb2tlbiB0YWdnZWQgPG9wZXJhdG9yPi4KCShibG9jazopOiBSZXR1cm4gc2l6ZV96ZXJvX25vZGUgd2hlbiBibG9jayBpcyBlbXB0eS4KCShlbXB0eV9zdGF0ZW1lbnQ6KTogUmV0dXJuIHNpemVfemVyb19ub2RlLgoJKHN0YXRlbWVudDopOiBJbXBsZW1lbnQgc3VwcGxlbWVudGFsIGFjdGlvbiB3aGVuIGZvcl9zdGF0ZW1lbnQ6IGlzCglyZWR1Y2VkLgoJKGxhYmVsX2RlY2w6KTogTmV3IHJ1bGUuCgkobGFiZWxlZF9zdGF0ZW1lbnQ6KTogUmV3cml0dGVuIHVzaW5nIGxhYmVsX2RlY2wuIEFjdGlvbnMKCWltcGxlbWVudGVkLgoJKGxhYmVsZWRfc3RhdGVtZW50X25zaTopOiBMaWtld2lzZS4KCShpZl90aGVuX3N0YXRlbWVudCk6IEFjdGlvbnMgaW1wbGVtZW50ZWQuCgkod2hpbGVfZXhwcmVzc2lvbik6IE5ldyBydWxlLgoJKHdoaWxlX3N0YXRlbWVudDopOiBSZXdyaXR0ZW4gdXNpbmcgd2hpbGVfZXhwcmVzc2lvbi4gQWN0aW9ucwoJaW1wbGVtZW50ZWQuCgkod2hpbGVfc3RhdGVtZW50X25zaTopOiBMaWtld2lzZS4KCShkb19zdGF0ZW1lbnRfYmVnaW46KTogTmV3IHJ1bGUuCgkoZG9fc3RhdGVtZW50Oik6IFJld3JpdHRlbiB1c2luZyBkb19zdGF0ZW1lbnRfYmVnaW4uIEFjdGlvbnMKCWltcGxlbWVudGVkLgoJKGZvcl9zdGF0ZW1lbnQ6KTogUmV3cml0dGVuIHVzaW5nIGZvcl9iZWdpbi4gQWN0aW9ucyBpbXBsZW1lbnRlZC4KCShmb3Jfc3RhdGVtZW50X25zaTopOiBMaWtld2lzZS4KCShmb3JfaGVhZGVyOiwgZm9yX2JlZ2luOik6IE5ldyBydWxlcy4KCShmb3JfaW5pdDopOiBBY3Rpb25zIGltcGxlbWVudGVkLgoJKHN0YXRlbWVudF9leHByZXNzaW9uX2xpc3Q6LCBicmVha19zdGF0ZW1lbnQ6LAoJY29udGludWVfc3RhdGVtZW50Oik6IExpa2V3aXNlLgoJKHl5ZXJyb3IpOiBDb3VudCBudW1iZXIgb2YgaXNzdWVkIHdhcm5pbmcocykuCgkoamF2YV9yZXBvcnRfZXJyb3JzKTogUmVwb3J0IGVycm9yKHMpIGFuZC9vciB3YXJuaW5nKHMpLgoJKGphdmFfY29tcGxldGVfY2xhc3MpOiBVc2UgYnVpbGRfamF2YV9hcmd1bWVudF9zaWduYXR1cmUgdG8KCXJlY29tcHV0ZSBjb21wbGV0ZWQgbWV0aG9kIHNpZ25hdHVyZS4KCShqYXZhX2NoZWNrX3JlZ3VsYXJfbWV0aG9kcyk6IE5ldyBsb2NhbHMgbWV0aG9kX3dmbCBhbmQgYWZsYWdzLgoJVXNlIG1ldGhvZF93ZmwgaW5zdGVhZCBvZiBsb29rdXBfY2wgZHVyaW5nIGVycm9yIHJlcG9ydHMuIEZpeGVkCglpbmRlbnRhdGlvbiBhbmQgbW9kaWZpZWQgc29tZSBlcnJvciBtZXNzYWdlcy4gVXNlCglsYW5nX3ByaW50YWJsZV9uYW1lIGluIG1ldGhvZCBpbnN0ZWFkIG9mIHRoZSBERUNMX05BTUUuIE5ldyBjb2RlCgl0byBpc3N1ZSB3YXJuaW5ncyBvbiBtZXRob2RzIG5vdCBvdmVycmlkaW5nIGNvcnJlc3BvbmRpbmcgbWV0aG9kcwoJcHJpdmF0ZSB0byBhIGRpZmZlcmVudCBwYWNrYWdlLgoJKGphdmFfbWV0aG9kX2FkZF9zdG10KTogQ2FsbCBhZGRfc3RtdF90b19jb21wb3VuZC4KCShhZGRfc3RtdF90b19jb21wb3VuZCk6IE5ldyBmdW5jdGlvbi4KCShqYXZhX2NvbXBsZXRlX3RyZWUpOiBIYW5kbGUgTEFCRUxFRF9CTE9DS19FWFBSLCBFWElUX0JMT0NLX0VYUFIsCglMT09QX0VYUFIsIEVYSVRfRVhQUiBhbmQgQ09ORF9FWFBSLgoJKGJ1aWxkX2lmX2Vsc2Vfc3RhdGVtZW50LCBwYXRjaF9pZl9lbHNlX3N0YXRlbWVudCwKCWJ1aWxkX2xhYmVsZWRfYmxvY2ssIGdlbmVyYXRlX2xhYmVsZWRfYmxvY2ssCgljb21wbGV0ZV9sYWJlbGVkX3N0YXRlbWVudCwgYnVpbGRfbmV3X2xvb3AsIGJ1aWxkX2xvb3BfYm9keSwKCWNvbXBsZXRlX2xvb3BfYm9keSwgcGF0Y2hfbG9vcF9zdGF0ZW1lbnQsIGJ1aWxkX2JjX3N0YXRlbWVudCwKCXBhdGNoX2JjX3N0YXRlbWVudCwgcGF0Y2hfZXhpdF9leHByKTogTmV3IGZ1bmN0aW9ucy4KCSogdHlwZWNrLmMgKGJ1aWxkX2phdmFfc2lnbmF0dXJlKTogQnVpbGQgYXJndW1lbnQgc2lnbmF0dXJlIGJlZm9yZQoJZW5jbG9zaW5nIGl0IGluIGJldHdlZW4gcGFyZW50aGVzaXMuCgoxOTk4LTA4LTE3ICBXYXJyZW4gTGV2eSAgPHdhcnJlbmxAY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoSkFWQV9TUkNTKTogQ3JlYXRlZCBmb3IgZGVwZW5kZW5jaWVzICogTWFrZWZpbGUuaW4KCShKQVZBX09CSlMpOiBBZGRlZCByZW1pbmRlciBjb21tZW50CgoxOTk4LTA4LTEzICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZ2phdmFoLmMgKERfTkFOX01BU0spOiBBcHBlbmQgTEwgdG8gdGhlIGNvbnN0YW50IHRvIGZvcmNlIGl0IHRvCgliZSBpbnRlcnByZXRlZCBhcyBhIGxvbmcgbG9uZy4KCjE5OTgtMDgtMTMgIFdhcnJlbiBMZXZ5ICA8d2FycmVubEBjeWdudXMuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFVzZSBfSnZfSW5pdENsYXNzLCBub3QKCXNvZnRfaW5pdGlhbGlzZV9jbGFzcy4gIFVzZSBfSnZfTmV3TXVsdGlBcnJheSwgbm90Cglzb2Z0X211bHRpYW5ld2FycmF5LiAgVXNlIF9Kdl9UaHJvd0JhZEFycmF5SW5kZXgsIG5vdAoJc29mdF9iYWRhcnJheWluZGV4LiAgVXNlIF9Kdl9DaGVja0Nhc3QsIG5vdCBzb2Z0X2NoZWNrY2FzdC4gIFVzZQoJX0p2X0NoZWNrQXJyYXlTdG9yZSwgbm90IHNvZnRfY2hlY2thcnJheXN0b3JlLiAgVXNlCglfSnZfTG9va3VwSW50ZXJmYWNlTWV0aG9kLCBub3Qgc29mdF9sb29rdXBpbnRlcmZhY2VtZXRob2QuCgoxOTk4LTA4LTEyICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYywgamF2YS10cmVlLmggKHRoaXNfaWRlbnRpZmllcl9ub2RlLCBzdXBlcl9pZGVudGlmaWVyX25vZGUsCglsZW5ndGhfaWRlbnRpZmllcl9ub2RlKTogIE5ldyBnbG9iYWwgdHJlZSBub2RlIGNvbnN0YW50cy4KCSogcGFyc2UueSAoa3dfc3VwZXIsIGt3X3RoaXMsIGt3X2xlbmd0aCk6ICBSZW1vdmVkIGdsb2JhbHMuCglSZXBsYWNlIHVzZXMgYnkgc3VwZXJfaWRlbnRpZmllcl9ub2RlIGV0Yy4KCSogbGV4LmMgKGt3X3N1cGVyLCBrd190aGlzLCBrd19sZW5ndGgpOiAgRG9uJ3QgaW5pdGlhbGl6ZS4KCgkqIHBhcnNlLnkgKHJlc29sdmVfZmllbGRfYWNjZXNzKTogIERvbid0IHNwZWNpYWwtY2FzZSAiLmxlbmd0aCIgaWYKCWZsYWdfZW1pdF9jbGFzc19maWxlcy4KCShwYXRjaF9hcnJheV9yZWYpOiAgTGVhdmUgYXMgQVJSQVlfUkVGIGlmIGZsYWdfZW1pdF9jbGFzc19maWxlcy4KCSogamNmLXdyaXRlLmMgKGdlbmVyYXRlX2J5dGVjb2RlX2luc25zKTogIEhhbmRsZSBBUlJBWV9SRUYgb3Bjb2RlCglhbmQgQVJSQVkubGVuZ3RoLgoKMTk5OC0wOC0xMSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogUmVtb3ZlIHVudXNlZCBtZXRob2RfdHlwZV9ub2RlIGZpZWxkcy4KCSogY2xhc3MuYyAobWFrZV9tZXRob2RfdmFsdWUpOiAgUmVtb3ZlIGluaXQgZm9yIHJlbW92ZWQgZmllbGRzLgoKCSogY2xhc3MuYyAobGF5b3V0X2NsYXNzKTogIFVzZSBidWlsZF9qYXZhX2FyZ3VtZW50X3NpZ25hdHVyZS4KCSogamF2YS10cmVlLmggKFRZUEVfQVJHVU1FTlRfU0lHTkFUVVJFKTogIE5ldyBtYWNyby4KCgkqIHR5cGVjay5jIChwdXNoX2phdmFfYXJndW1lbnRfc2lnbmF0dXJlKTogIFJlbW92ZWQuICBNZXJnZWQgaW50byAuLi4KCShidWlsZF9qYXZhX2FyZ3VtZW50X3NpZ25hdHVyZSk6ICBVc2UgVFlQRV9BUkdVTUVOVF9TSUdOQVRVUkUgY2FjaGUuCgkoYnVpbGRfamF2YV9zaWduYXR1cmUpOiAgRG9uJ3QgdXNlIHB1c2hfamF2YV9hcmd1bWVudF9zaWduYXR1cmUuCgoJKiB0eXBlY2suYyAobG9va3VwX2FyZ3VtZW50X21ldGhvZCk6ICBOZXcgZnVuY3Rpb24uCgkqIHBhcnNlLnkgKGphdmFfY2hlY2tfcmVndWxhcl9tZXRob2RzKTogIFVzZSBsb29rdXBfYXJndW1lbnRfbWV0aG9kCglpbnN0ZWFkIG9mIGxvb2t1cF9qYXZhX21ldGhvZDIgZm9sbG93ZWQgYnkgbG9va3VwX2phdmFfbWV0aG9kLgoKCSogcGFyc2UueSAoY2hlY2tfbWV0aG9kX3JlZGVmaW5pdGlvbik6ICBNaW5vciBvcHRpbWl6YXRpb24uCgoJKiBqY2Ytd3JpdGUuYyAoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiAgSGFuZGxlIFJFVFVSTl9FWFBSLAoJTUlOVVNfRVhQUiwgTVVMVF9FWFBSLCBUUlVOQ19ESVZfRVhQUiwgYW5kIFJESVZfRVhQUi4KCjE5OTgtMDgtMTAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoamMxJChleGVleHQpKTogRG9uJ3QgZGVwZW5kIG9uIGMtY29tbW9uLm8gb3IKCWMtcHJhZ21hLm8uCgoJKiBnamF2YWguYyAoamF2YV9mbG9hdF9maW5pdGUpOiBVc2UgSyZSLXN0eWxlIGRlZmluaXRpb24uCgkoamF2YV9kb3VibGVfZmluaXRlKTogTGlrZXdpc2UuCgkoZ2VuZXJhdGVfYWNjZXNzKTogTm93IHJldHVybnMgdm9pZC4gIENoYW5nZWQgYWxsIGNhbGxlcnMuCgkobGFzdF9hY2Nlc3NfZ2VuZXJhdGVkKTogUmVtb3ZlZC4KCShwcm9jZXNzX2ZpbGUpOiBPbmx5IG1ha2UgYSBzaW5nbGUgcGFzcyBvdmVyIHRoZSAuY2xhc3MgZmlsZS4KCjE5OTgtMDctMjkgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoZ2V0X2Rpc3BhdGNoX3RhYmxlKTogIEFkZCBleHRyYSBkdW1teSB2dGFibGUgZW50cnksCglmb3IgY29tcGF0aWJpbGl0eSBmb3IgRysrICh3aXRoIC1mdnRhYmxlLXRodW5rcykuCgkqIGV4cHIuYyAoYnVpbGRfaW52b2tldmlydHVhbCk6ICBBZGQgb25lIGZvciBleHRyYSBkdW1teSB2dGFibGUgZW50cnkuCgoJKiBnamF2YWguYyAocHJvY2Vzc19maWxlKTogIFVzZSBwdWJsaWMgaW5oZXJpdGFuY2UgZm9yIHN1cGVyLWNsYXNzLgoKMTk5OC0wNy0yOSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBsZXguYyAoamF2YV9pbml0X2xleCk6IEluaXRpYWxpemUgY3R4cC0+cGFja2FnZS4KCSogcGFyc2UuaCAoc3RydWN0IHBhcnNlcl9jdHh0KTogcGFja2FnZSBhbmQgcGFja2FnZV9sZW4gcmVwbGFjZWQKCWJ5IHRyZWUgcGFja2FnZSwgYW4gaWRlbnRpZmllciBub2RlLiBGaWVsZCBtZXRob2RfZGVjbF9saXN0IGlzCglnb25lLiBGaXhlZCBjb21tZW50cy4KCShsb29rdXBfZmllbGRfd3JhcHBlciwgbWVyZ2VfcXVhbGlmaWVkX25hbWUsIG5vdF9hY2Nlc3NpYmxlLAoJY2xhc3NfaW5fY3VycmVudF9wYWNrYWdlKTogTmV3IGZ1bmN0aW9uIHByb3RvdHlwZXMuCgkqIHBhcnNlLnkgKGFycmF5X3R5cGU6KTogU2V0IGNsYXNzIGxvYWRlZCBmbGFnIG9uIHByaW1pdGl2ZSB0eXBlCglhcnJheXMuCgkocGFja2FnZV9kZWNsYXJhdGlvbjopOiBBc3NpZ24gY3R4cC0+cGFja2FnZSB0byB0aGUKCWlkZW50aWZpZXIgbm9kZS4KCShtZXRob2RfaW52b2NhdGlvbjopOiBIYW5kbGUgaW52b2NhdGlvbiBvZiBtZXRob2QgcXVhbGlmaWVkIGJ5Cglgc3VwZXInLgoJKHNpbmdsZV90eXBlX2ltcG9ydF9kZWNsYXJhdGlvbjopOiBSZW1vdmVkIGFtYmlndWl0eSBjaGVjay4KCShqYXZhX3BvcF9wYXJzZXJfY29udGV4dCk6IE5ldyBsb2NhbCB2YXJpYWJsZSBgbmV4dCcuIFJlc2V0IGFuZAoJc2V0IElNUE9SVF9DTEFTU0ZJTEVfTkFNRSBmbGFncyBvbiBjdXJyZW50IGFuZCBwcmV2aW91cyBpbXBvcnQKCWxpc3QuCgkoamF2YV9hY2NzdHJpbmdfbG9va3VwKTogVXNlIG5ldyBsb2NhbCBtYWNybyBDT1BZX1JFVFVSTi4KCShsb29rdXBfZmllbGRfd3JhcHBlcik6IE5ldyBmdW5jdGlvbi4KCShwYXJzZXJfcXVhbGlmaWVkX2NsYXNzbmFtZSk6IFVzZSBtZXJnZV9xdWFsaWZpZWRfbmFtZS4KCShwYXJzZXJfY2hlY2tfc3VwZXJfaW50ZXJmYWNlKTogQnJvYWRlbiBlcnJvciBtZXNzYWdlLgoJKGRvX3Jlc29sdmVfY2xhc3MpOiBDaGVjayBmb3IgcXVhbGlmaWVkIGNsYXNzIG5hbWUgaW4gdGhlIGN1cnJlbnQKCWNvbXBpbGF0aW9uIHVuaXQgaWYgYXBwcm9wcmlhdGUuCgkocHJvY2Vzc19pbXBvcnRzKTogQ2hlY2sgZm9yIGFscmVhZHkgZGVmaW5lZCBjbGFzc2VzLgoJKGNoZWNrX3BrZ19jbGFzc19hY2Nlc3MpOiBHb3QgcmlkIG9mIGNhbGwgdG8KCWdldF9hY2Nlc3NfZmxhZ3NfZnJvbV9kZWNsLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZHMpOiBDYWxsIHNhZmVfbGF5b3V0X2NsYXNzIGJhc2VkIG9uCgl0aGUgY3VycmVudCBjbGFzcyBzaXplLgoJKG1ha2VfcXVhbGlmaWVkX3ByaW1hcnkpOiBCdWlsZCBhIFdGTCBxdWFsaWZpY2F0aW9uIG9uIHByaW1hcnkgaWYKCW5vbmUgZXhpc3RzLgoJKG1lcmdlX3F1YWxpZmllZF9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKG1ha2VfcXVhbGlmaWVkX25hbWUpOiBVc2UgbWVyZ2VfcXVhbGlmaWVkX25hbWUuCgkocmVzb2x2ZV9leHByZXNzaW9uX25hbWUpOiBVc2Ugc2FmZV9sb29rdXBfZmllbGQuCgkocmVzb2x2ZV9maWVsZF9hY2Nlc3MpOiBHb3QgcmlkIG9mIGNhbGwgdG8gZ2V0X2FjY2Vzc19mbGFnc19mcm9tX2RlY2wuCgkocmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lKTogTGlrZXdpc2UuIENoZWNrIG9uIHJlc29sdmVkCgllbGVtZW50IGFjY2Vzc2liaWxpdHkuCgkobm90X2FjY2Vzc2libGVfcCwgY2xhc3NfaW5fY3VycmVudF9wYWNrYWdlKTogTmV3IGZ1bmN0aW9ucy4KCShtYXliZV9hY2Nlc3NfZmllbGQpOiBHb3QgcmlkIG9mIGNhbGwgdG8gZ2V0X2FjY2Vzc19mbGFnc19mcm9tX2RlY2wuCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb25fc3RtdCk6IE1lcmdlZCBjb21tb24gcGllY2VzLiBDaGVjawoJYWNjZXNzaWJpbGl0eSBvZiBpbnZva2VkIG1ldGhvZC4KCShjaGVja19mb3Jfc3RhdGljX21ldGhvZF9yZWZlcmVuY2UpOiBBZGQgcmV0dXJuZWQgdHlwZSBpbiBlcnJvcgoJbWVzc2FnZS4KCShpbnZvY2F0aW9uX21vZGUpOiBHZXQgcmlkIG9mIGJvZ3VzIGNoZWNrIG9uIFBSSVZBVEUgbWV0aG9kcy4KCShyZWZpbmVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QpOiBNZXJnZWQgdHdvIGNvbmRpdGlvbnMgaW4gdGVzdC4KCShqYXZhX2NvbXBsZXRlX2NsYXNzKTogU2FuaXR5IGNoZWNrIG9uIHN0YWJpbGl6ZV9yZWYgZ29uZS4KCSogemV4dHJhY3QuYyAocmVhZF96aXBfYXJjaGl2ZSk6IENhc3QgbHNlZWsgc2Vjb25kIGFyZ3VtZW50IHRvIGxvbmcuCgoxOTk4LTA3LTI4ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGhhc2hVdGY4U3RyaW5nKTogIEZpeCAtIHVzZSBuZXcgSmF2YVNvZnQgc3BlY2lmaWNhdGlvbi4KCjE5OTgtMDctMjQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChGX05BTik6IFJlbW92ZWQuCgkoRl9OQU5fTUFTSyk6IE5ldyBtYWNyby4KCShGX1BPU0lUSVZFX0lORklOSVRZKTogUmVtb3ZlZC4KCShGX05FR0FUSVZFX0lORklOSVRZKTogTGlrZXdpc2UuCgkoamF2YV9mbG9hdF9maW5pdGUpOiBSZXdyb3RlLgoJKERfTkFOX01BU0spOiBSZW5hbWVkLgoJKGphdmFfZG91YmxlX2Zpbml0ZSk6IFJld3JvdGUuCgkoRF9QT1NJVElWRV9JTkZJTklUWSk6IFJlbW92ZWQuCgkoRF9ORUdBVElWRV9JTkZJTklUWSk6IExpa2V3aXNlLgoKCSogamNmLWR1bXAuYyAocHJpbnRfY29uc3RhbnQpOiBbQ09OU1RBTlRfRG91YmxlLCBDT05TVEFOVF9GbG9hdF0KCUlmIHZlcmJvc2UsIHByaW50IHVuZGVybHlpbmcgcmVwcmVzZW50YXRpb24gb2YgdmFsdWUgaW4gaGV4LgoKMTk5OC0wNy0yNCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBidWZmZXIuaCwgYnVmZmVyLmM6ICBOZXcgZmlsZXMuCgkqIE1ha2VmaWxlLmluIChKQVZBX09CSlMpOiAgQWRkIGJ1ZmZlci5vLgoKCVN1cHBvcnQgbG9jYWxzIHZhcmlhYmxlcyBhbmQgd3JpdGluZyB0aGVpciBkZWJ1ZyBlbnRyaWVzIHRvIC5jbGFzcy4KCSogamNmLXdyaXRlLmM6ICBTaW1wbGlmeSBzb21lIGJ5IHVzZXIgbmV3IGJ1ZmZlciB0eXBlLgoJKHZvZGVfYnVmZmVyX2dyb3cpOiAgUmVtb3ZlZC4KCShzdHJ1Y3QgbG9jYWx2YXJfaW5mbyk6ICBOZXcgdHlwZS4KCShsb2NhbHN2YXJzLCBsb2NhbHZhcnRhYmxlKTogIE5ldyBidWZmZXJzLgoJKGxvY2FsdmFyX2FsbG9jLCBsb2NhbHZhcl9mcmVlKTogIE5ldyBmdW5jdGlvbnMuCgkoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMpOiAgSGFuZGxlIGxvY2FsIHZhcmlhYmxlcy4KCShnZW5lcmF0ZV9jbGFzc2ZpbGUpOiAgV3JpdGUgTG9jYWxWYXJpYWJsZVRhYmxlIGF0dHJpYnV0ZS4KCjE5OTgtMDctMjQgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogamNmLWlvLmMgKG9wZW5faW5femlwKTogQ2hlY2sgdGhlIHppcGZpbGUgbWFnaWMgbnVtYmVyLgoJKiB6aXBmaWxlLmggKFpJUE1BR0lDKTogTmV3IG1hY3JvLgoKMTk5OC0wNy0yNCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGdqYXZhaC5vKTogVXBkYXRlZCBkZXBlbmRlbmNpZXMuCgkoamNmLWR1bXAubyk6IExpa2V3aXNlLgoJKGFsbC5pbmRpcmVjdCk6IFVzZSAuLi9namF2YWguCgkoLi4vZ2phdmFoJChleGVleHQpKTogTGlrZXdpc2UuCgkoY2xlYW4pOiBEb24ndCByZW1vdmUgZ2phdmFoLgoJKGNsZWFuKTogUmVtb3ZlIHBhcnNlLmMsIG5vdCBqYXZhL3BhcnNlLmMuCgkqIE1ha2UtbGFuZy5pbiAoamF2YSk6IEFkZGVkIGdqYXZhaC4KCShnamF2YWgkKGV4ZWV4dCkpOiBOZXcgdGFyZ2V0LgoJKEdKQVZBSF9TT1VSQ0VTKTogTmV3IG1hY3JvLgoJKGphdmEuYWxsLmJ1aWxkKTogQWRkZWQgZ2phdmFoLgoJKGphdmEuYWxsLmNyb3NzKTogTGlrZXdpc2UuCgkoamF2YS5yZXN0LmVuY2FwKTogTGlrZXdpc2UuCgkqIGNvbmZpZy1sYW5nLmluIChjb21waWxlcnMsIHN0YWdlc3R1ZmYpOiBBZGRlZCBnamF2YWguCgoxOTk4LTA3LTIzICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBnamF2YWguYyAoamF2YV9mbG9hdF9maW5pdGUpOiBOZXcgZnVuY3Rpb24uCgkoamF2YV9kb3VibGVfZmluaXRlKTogTGlrZXdpc2UuCgkoRl9QT1NJVElWRV9JTkZJTklUWSk6IE5ldyBtYWNyby4KCShGX05FR0FUSVZFX0lORklOSVRZKTogTGlrZXdpc2UuCgkoRl9OQU4pOiBMaWtld2lzZS4KCShEX1BPU0lUSVZFX0lORklOSVRZKTogTGlrZXdpc2UuCgkoRF9ORUdBVElWRV9JTkZJTklUWSk6IExpa2V3aXNlLgoJKERfTkFOKTogTGlrZXdpc2UuCgkocHJpbnRfZmllbGRfaW5mbyk6IFVzZSBqYXZhX2Zsb2F0X2Zpbml0ZSBhbmQgamF2YV9kb3VibGVfZmluaXRlLgoKMTk5OC0wNy0yMyAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChtZXRob2RfaGVhZGVyKTogIE5hbWUgInRoaXMiIGltcGxpY2l0IGFyZ3VtZW50LgoKMTk5OC0wNy0yMiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBqY2Ytd3JpdGUuYzogIFdyaXRlIG91dCBMaW5lTnVtYmVyVGFibGUgYXR0cmlidXRlIGluIC5jbGFzcyBmaWxlLgoJKGxpbmVudW1iZXJfYnVmZmVyLCBsaW5lbnVtYmVyX3B0ciwgbGluZW51bWJlcl9saW1pdCk6ICBOZXcgc3RhdGljcy4KCShwdXRfbGluZW51bWJlcik6ICBOZXcgZnVuY3Rpb24uCgkoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbnMsIGdlbmVyYXRlX2NsYXNzZmlsZSk6ICBXcml0ZSBsaW5lIG51bWJlcnMuCgoxOTk4LTA3LTIyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGphdmEtdHJlZS5oIChDQUxMX0VYUFJfRlJPTV9QUklNQVJZX1ApOiBDaGFuZ2VkIGluIFBSSU1BUllfUC4KCShsb29rdXBfbmFtZSwgYnVpbGRfa25vd25fbWV0aG9kX3JlZiwgYnVpbGRfY2xhc3NfaW5pdCwKCWJ1aWxkX2ludm9rZXZpcnR1YWwsIGludm9rZV9idWlsZF9kdGFibGUsIG1hdGNoX2phdmFfbWV0aG9kLAoJYnVpbGRfZmllbGRfcmVmLCBwdXNoZGVjbF9mb3JjZV9oZWFkLCBidWlsZF9qYXZhX2Jpbm9wLAoJYmluYXJ5X251bWVyaWNfcHJvbW90aW9uLCBidWlsZF9kZWNsX25vX2xheW91dCwKCWJ1aWxkX2phdmFfYXJyYXlhY2Nlc3MsIGJ1aWxkX25ld2FycmF5LCBidWlsZF9hbmV3YXJyYXksCglidWlsZF9qYXZhX2FycmF5X2xlbmd0aF9hY2Nlc3MsIGJ1aWxkX2phdmFfYXJyYXludWxsX2NoZWNrKTogTmV3CglleHRlcm4gZnVuY3Rpb24gcHJvdG90eXBlcy4KCShKQVZBX1VOQVJZX1BMVVNfRVhQUiwgSkFWQV9ORVdfQVJSQVlfRVhQUiwgSkFWQV9ORVdfQ0xBU1NfRVhQUiwKCUpBVkFfVEhJU19FWFBSLCBDQUxMX0NPTlNUUlVDVE9SX1ApOiBNYWNybyBkZWZpbml0aW9uIG1vdmVkIGluCglqYXZhLXRyZWUuaC4KCSogamNmLXBhcnNlLmMgKGluaXRfb3V0Z29pbmdfY3Bvb2wpOiBTZXQgY3VycmVudF9jb25zdGFudF9wb29sX2RhdGFfcmVmCgl0byBOVUxMCgkqIGpjZi5oIChqY2Zfb3V0X29mX3N5bmNoKTogTmV3IGV4dGVybiBmdW5jdGlvbiBwcm90b3R5cGUuCgkqIHBhcnNlLmg6IFN0YXRpYy9nbG9iYWwgZnVuY3Rpb24gaW1wbGVtZW50ZWQgaW4gcGFyc2UueQoJcHJvdG90eXBlZCBhbmQgZGVjbGFyYXRpb25zIG1vdmVkIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUuCgkoREVDTF9QKTogQ2hlY2sgdGhhdCB0aGUgYXJndW1lbnQgaXNuJ3QgbnVsbC4KCShKQVZBX1VOQVJZX1BMVVNfRVhQUiwgSkFWQV9ORVdfQVJSQVlfRVhQUiwgSkFWQV9ORVdfQ0xBU1NfRVhQUiwKCUpBVkFfVEhJU19FWFBSKTogTm8gbG9uZ2VyIGRlZmluZWQgaGVyZS4gU2VlIGphdmEtdHJlZS5oCgkoUVVBTF9ERUNMX1RZUEUpOiBOZXcgbWFjcm8uCgkoUEFSQU1TKTogTWFjcm8gZGVmaW5pdGlvbiByZW1vdmVkLgoJKiBwYXJzZS55OiAoeXlwYXJzZSwgeXllcnJvcik6IFVzZSBQUk9UTyBpbnN0ZWFkIG9mIFBBUkFNUy4KCShyZXR1cm5fc3RhdGVtZW50Oik6IENhbGwgYnVpbGRfcmV0dXJuLgoJKGZpZWxkX2FjY2VzczopOiBDYWxsIG1ha2VfcXVhbGlmaWVkX3ByaW1hcnkgaW4gc3ViIHJ1bGUuCgkobWV0aG9kX2ludm9jYXRpb246KTogQnVpbGQgbWV0aG9kIGludm9jYXRpb24gYW5kIGNhbGwKCW1ha2VfcXVhbGlmaWVkX3ByaW1hcnkgd2hlbiBwcm9jZXNzaW5nIHByaW1hcmllcy4KCShqYXZhX2NvbXBsZXRlX2NsYXNzKTogU2V0IElERU5USUZJRVJfU0lHTkFUVVJFX1RZUEUgYnkgY2FsbGluZwoJZ2V0X3R5cGVfZnJvbV9zaWduYXR1cmUuCgkoamF2YV9jaGVja19yZWd1bGFyX21ldGhvZCk6IEV4dHJhIGludGVnZXIgMCBhcmd1bWVudCB3aGVuIGNhbGxpbmcKCWxvb2t1cF9qYXZhX21ldGhvZDIuCgkobG9va3VwX2phdmFfaW50ZXJmYWNlX21ldGhvZDIpOiBFeHRyYSBtZXRob2QgREVDTCBhcmd1bWVudCB3aGVuCgljYWxsaW5nIGxvb2t1cF9qYXZhX2ludGVyZmFjZV9tZXRob2QyLgoJKGphdmFfbWV0aG9kX2FkZF9zdG10KTogU2V0IFRSRUVfU0lERV9FRkZFQ1RTIG9uIG5ld2x5IGNyZWF0ZWQKCUNPTVBPVU5EX0VYUFIgbm9kZS4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiBMYXlvdXQgY3VycmVudCBjbGFzcyBpZmYgbm90CglhbHJlYWR5IGRvbmUuIERvbid0IHByb2Nlc3MgaW50ZXJmYWNlJ3MgbWV0aG9kcy4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiBVc2Ugc3VwZXIgY2xhc3Mgb25seSBpZiBpdAoJZXhpc3RzLiBVc2UgY3VycmVudCBjbGFzcyBvdGhlcndpc2UuCgkobWFrZV9xdWFsaWZpZWRfcHJpbWFyeSk6IE5ldyBmdW5jdGlvbi4KCShyZXNvbHZlX2V4cHJlc3Npb25fbmFtZSk6IFByb2Nlc3MgcXVhbGlmaWVkIGV4cHJlc3Npb24gb3IKCWV4cHJlc3Npb24gZnJvbSBwcmltYXJ5IHRoZSBzYW1lIHdheS4KCShyZXNvbHZlX2V4cHJlc3Npb25fbmFtZSk6IFR3byBsYXN0IGFyZ3VtZW50cyB0bwoJcmVzb2x2ZV9maWVsZF9hY2Nlc3MgYXJlIG5vdyBOVUxMX1RSRUVzLgoJKHJlc29sdmVfZmllbGRfYWNjZXNzKTogTmV3IHZhcmlhYmxlIGlzX3N0YXRpYy4gTG9jYWwgZmllbGQgbXVzdAoJYmUgREVDTHMuIGlzX3N0YXRpYyBjb21wdXRlZCBvbiBmaWVsZCBERUNMcyBvbmx5LiBBcHBlbmQgY29kZSBpbgoJd2hlcmVfZm91bmQgdG8gdGhlIGZpZWxkIGFjY2VzcyBpZiBuZWNlc3NhcnkuIFVzZSBRVUFMX0RFQ0xfVFlQRQoJdG8gaW5pdGlhbGl6ZSBmaWVsZF90eXBlLgoJKHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IE5ldyBsb2NhbCB2YXJpYWJsZSwKCXByZXZpb3VzX2NhbGxfc3RhdGljIGFuZCBpc19zdGF0aWMuIEhhbmRsZSBwcmltYXJpZXMgd2l0aCBmdW5jdGlvbgoJY2FsbHMsIGNhc3RzLCBhcnJheSByZWZlcmVuY2VzIGFuZCBgdGhpcycuIGBzdXBlcicgbm93IGhhbmRsZWQgYXMKCWAoc3VwZXJfY2xhc3MpdGhpcycuIFVzZSBpc19zdGF0aWMgdG8gY2xhcmlmeSBib29sZWFuIGV4cHJlc3Npb25zLgoJQWRkZWQgY29kZSB0byBoYW5kbGUgY2FzZSB3aGVyZSBhIHByb3BlciBoYW5kbGUgaXMgcmVxdWlyZWQgdG8KCWFjY2VzcyBhIGZpZWxkLiBVc2UgUVVBTF9ERUNMX1RZUEUgd2hlcmUgYXBwbGljYWJsZS4KCShtYXliZV9hY2Nlc3NfZmllbGQpOiBOZXcgZnVuY3Rpb24uCgkocGF0Y2hfbWV0aG9kX2ludm9jYXRpb25fc3RtdCk6IE5ldyBhcmd1bWVudHMgcHJpbWFyeSwgd2hlcmUsCglpc19zdGF0aWMuIEJyYW5jaCBvZiB0aGUgdGVzdCBvbiBDQUxMX0VYUFJfRlJPTV9QUklNQVJZX1AKCWRlbGV0ZWQuIFVzZSBgd2hlcmUnIGFzIGEgdHlwZSB0byBzZWFyY2ggZnJvbSBpZiBzcGVjaWZpZWQuIENoZWNrCglmb3Igc3RhdGljIG1ldGhvZCByZWZlcmVuY2Ugd2hlcmUgZm9yYmlkZGVuLiBBcHBlbmQgcHJpbWFyeSBvcgoJY3VycmVudF90aGlzIHRvIHRoZSBhcmd1bWVudCBsaXN0IGlmIG5vdCBjYWxsaW5nIGNvbnN0cnVjdG9yIG5vcgoJc3RhdGljIG1ldGhvZHMuCgkoY2hlY2tfZm9yX3N0YXRpY19tZXRob2RfcmVmZXJlbmNlKTogTmV3IGZ1bmN0aW9uLgoJKHBhdGNoX2ludm9rZSk6IExheW91dCB0aGUgY2xhc3Mgb24gd2hpY2ggbmV3IGlzIGRvbmUgaWYKCW5lY2Vzc2FyeS4KCShsb29rdXBfbWV0aG9kX2ludm9rZSk6IENoYW5nZWQgZm9ybWF0IHRvIHJlcG9ydCBlcnJvcnMgb24KCW1ldGhvZHMuCgkocXVhbGlmeV9hbWJpZ3VvdXNfbmFtZSk6IE5ldyBsb2NhbCB2YXJpYWJsZSB0aGlzX2ZvdW5kLiBOb3cKCWhhbmRsZSB0aGluZ3MgZnJvbSBwcmltYXJpZXMuIE1ldGhvZCBjYWxsIGFyZSBjb25zaWRlcmVkCglleHByZXNzaW9uIG5hbWVzLgoJKGlkZW50aWNhbF9zdWJwYXRoX3ApOiBOVUxMX1RSRUUgYXJndW1lbnRzIHRvIGJyZWFrZG93bl9xdWFsaWZpZWQKCWNoYW5nZWQgaW50byBOVUxMcy4KCShub3RfaW5pdGlhbGl6ZWRfYXNfaXRfc2hvdWxkX3ApOiBDb21wbHkgd2l0aCB0aGUgbmV3IERFQ0xfUC4KCShqYXZhX2NvbXBsZXRlX3RyZWUpOiBOZXcgY2FzZSBmbyBSRVRVUk5fRVhQUi4gUHJvY2VzcyBmdW5jdGlvbgoJY2FsbCBhcmd1bWVudHMgaW4gc2VwYXJhdGUgZnVuY3Rpb24uCgkoY29tcGxldGVfZnVuY3Rpb25fYXJndW1lbnRzKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX21ldGhvZF9pbnZvY2F0aW9uKTogRG9uJ3QgdXNlIENBTExfRVhQUl9GUk9NX1BSSU1BUllfUAoJYW55bW9yZS4KCShwYXRjaF9hc3NpZ25tZW50KTogVGFrZSB0aGUgcmV0dXJuIGZ1bmN0aW9uIHNsb3QgaW50byBhY2NvdW50IGFzCglhIFJIUy4gRGlzdGluZ3Vpc2ggYXNzaWdubWVudCBmcm9tIGEgcmV0dXJuLgoJKHZhbGlkX3JlZl9hc3NpZ25jb252X2Nhc3RfcCk6IFVzZSBidWlsZF9qYXZhX2FyZ3VtZW50X3NpZ25hdHVyZQoJd2hlbiBjaGVja2luZyBtZXRob2RzIGluIGludGVyZmFjZXMuCgkocmVzb2x2ZV90eXBlX2R1cmluZ19wYXRjaCk6IE5VTEwgYXJndW1lbnQgdG8gdW5yZXNvbHZlX3R5cGVfcAoJaW5zdGVhZCBvZiBOVUxMX1RSRUUuCgkocGF0Y2hfbmV3YXJyYXkpOiBGaXhlZCB0eXBvIGluIGNvbW1lbnQuCgkoYnVpZF90aGlzKTogQnVpbGQgYSBXRkwgd2l0aCBga3dfdGhpcycgaW5zdGVhZCBvZiBhIEZJRUxEX0RFQ0wuCgkoYnVpbGRfcmV0dXJuLCBwYXRjaF9yZXR1cm4pOiBOZXcgZnVuY3Rpb25zLgoJKiB0eXBlY2suYyAobG9va3VwX2phdmFfY29uc3RydWN0b3IpOiBGaXhlZCB0eXBvIGluIGNvbW1lbnQuCgoxOTk4LTA3LTIxICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGNvbnN0YW50cy5jIChmaW5kX25hbWVfYW5kX3R5cGVfY29uc3RhbnQsIGZpbmRfZmllbGRyZWZfaW5kZXgsCglmaW5kX21ldGhvZHJlZl9pbmRleCk6ICBOZXcgbWV0aG9kcy4KCSogZXhwci5jIChidWlsZF9pbnZva2Vfbm9uX2ludGVyZmFjZSk6ICBJZiBmbGFnX2VtaXRfY2xhc3NfZmlsZXMsCglqdXN0IHJldHVybiBnaXZlbiBtZXRob2QuICBBbHNvLCByZW5hbWUgdG8gYnVpbGRfa25vd25fbWV0aG9kX3JlZi4KCShleHBhbmRfaW52b2tlKTogIFJlbmFtZSBjYWxsIHRvIGJ1aWxkX2ludm9rZV9ub25faW50ZXJmYWNlLgoJKiBqYXZhLXRyZWUuaCwgcGFyc2UuaDogIFVwZGF0ZSBwcm90b3R5cGUuCgkqIHBhcnNlLnksIGRlY2wuYywgamNmLXBhcnNlLmM6ICBTdXBwcmVzcyBjYWxscyB0byBiYWNrLWVuZCBmdW5jdGlvbnMKCShzdWNoIGFzIGV4cGFuZF9leHByX3N0bXQpIGlmIGZsYWdfZW1pdF9jbGFzc19maWxlcy4KCSogamNmLXdyaXRlLmMgKFJFU0VSVkUsIE9QMSwgT1AyLCBPUDQsIE5PVEVfUFVTSCwgTk9URV9QT1AsCglTVEFDS19UQVJHRVQsIElHTk9SRV9UQVJHRVQpOiAgTmV3IG1hY3Jvcy4KCShjb2RlX2J1ZmZlciwgY29kZV9wdHIsIGNvZGVfbGltaXQsIGNvZGVfUywgY29kZV9TUF9tYXgpOiAgTmV3IGdsb2JhbHMuCgkoZ2VuZXJhdGVfYnl0ZWNvZGVfaW5zbik6ICBOZXcgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgbWV0aG9kJ3MgYnl0ZWNvZGUuCgkoZ2VuZXJhdGVfY2xhc3NmaWxlKTogIE5vZGUgZ2VuZXJhdGUgQ29kZSBhdHRyaWJ1dGUgZm9yIGEgbWV0aG9kLgoJKGNvZGVfYnVmZmVyX2dyb3csIHB1c2hfY29uc3RhbnQxLCBwdXNoX2NvbnN0YW50MiwgcHVzaF9pbnRfY29uc3QsCglwdXNoX2xvbmdfY29uc3QsIGZpZWxkX29wLCBhZGp1c3RfdHlwZWRfb3AsIG1heWJlX3dpZGUpOgoJTmV3IGZ1bmN0aW9ucyB1c2VkIGJ5IGdlbmVyYXRlX2J5dGVjb2RlX2luc24uCgoJKiB0eXBlY2suYyAoc2lnbmF0dXJlX2luY2x1ZGVfcmV0dXJuKTogIFJlbW92ZSB2YXJpYWJsZS4KCShwdXNoX2phdmFfYXJndW1lbnRfc2lnbmF0dXJlLCBidWlsZF9qYXZhX2FyZ3VtZW50X3NpZ25hdHVyZSk6ICBOZXcuCgkoYnVpbGRfamF2YV9zaWduYXR1cmUpOiAgVXNlIHB1c2hfamF2YV9hcmd1bWVudF9zaWduYXR1cmUuCgkqIHBhcnNlLnk6ICBVc2UgYnVpbGRfamF2YV9hcmd1bWVudF9zaWduYXR1cmUgaW5zdGVhZCBvZiBmaWRkbGluZwoJd2l0aCBzaWduYXR1cmVfaW5jbHVkZV9yZXR1cm4uCgoxOTk4LTA3LTE3ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBnamF2YWguYyAocHJpbnRfY19kZWNsKTogQWx3YXlzIGdlbmVyYXRlIEpBcnJheTw+KiBmb3IgYXJyYXkKCXR5cGVzLgoKCSogTWFrZWZpbGUuaW4gKGFsbC5pbmRpcmVjdCk6IEFkZGVkIGdqYXZhaCQoZXhlZXh0KS4KCShnamF2YWgkKGV4ZWV4dCkpOiBBZGRlZCAkKGV4ZWV4dCkuCgkoY2xlYW4pOiBMaWtld2lzZS4KCjE5OTgtMDctMTYgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAobGF5b3V0X2NsYXNzKTogQ2FsbCB0byBqYXZhX2xheW91dF9wYXJzZWRfY2xhc3MgcmVwbGFjZQoJYnkgc2FmZV9sYXlvdXRfY2xhc3MuCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9hcnJheV9sZW5ndGhfYWNjZXNzKTogUmVtb3ZlZCBzdGF0aWMgc3RvcmFnZQoJY2xhc3MgaW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uCgkoYnVpbGRfamF2YV9hcnJheW51bGxfY2hlY2spOiBMaWtld2lzZS4KCUFsc28gZml4ZWQgdHlwb3MgaW4gdHdvIGNvbW1lbnRzLgoJKiBsZXguYyAoamF2YV9pbml0X2xleCk6IEluaXRpYWxpemUgc3RhdGljIGdsb2JhbCBrd19sZW5ndGguCgkoamF2YV9sZXgpOiBVc2UgQlVJTERfT1BFUkFUT1Igb24gUkVUVVJOX1RLLgoJKiBsZXguaCAoSkFWQV9GTE9BVF9SQU5HRV9FUlJPUik6IEFkZCBleHRyYSBhcmd1bWVudCB0bwoJamF2YV9sZXhfZXJyb3IuCgkoSkFWQV9JTlRFR1JBTF9SQU5HRV9FUlJPUik6IExpa2V3aXNlLgoJKiBwYXJzZS5oIChyZXNvbHZlX25vX2xheW91dCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24gZGVjbGFyYXRpb24uCgkoZ2V0X2lkZW50aWZpZXJfaW5fc3RhdGljKTogRGVjbGFyYXRpb24gcmVtb3ZlZC4KCShqYXZhX2xheW91dF9wYXJzZWRfY2xhc3MpOiBGdW5jdGlvbiBuYW1lIGRlY2xhcmF0aW9uIGNoYW5nZWQgdG8KCXNhZmVfbGF5b3V0X2NsYXNzLgoJKGJ1aWxkX25ld2FycmF5X25vZGUsIHBhdGNoX25ld2FycmF5LCByZXNvbHZlX3R5cGVfZHVyaW5nX3BhdGNoLAoJbm90X2luaXRpYWxpemVkX2FzX2l0X3Nob3VsZF9wLCBidWlsZF90aGlzKTogTmV3IHN0YXRpYyBmdW5jdGlvbgoJZGVjbGFyYXRpb25zLgoJKHB1c2hkZWNsX2ZvcmNlX2hlYWQsIGJ1aWxkX2phdmFfYmlub3AsIGludF9maXRzX3R5cGVfcCwKCWJpbmFyeV9udW1lcmljX3Byb21vdGlvbiwgc3RhYmlsaXplX3JlZmVyZW5jZSwKCWJ1aWxkX2RlY2xfbm9fbGF5b3V0LCBidWlsZF9qYXZhX2FycmF5YWNjZXNzKTogRXh0ZXJuIGZ1bmN0aW9uCglkZWNsYXJhdGlvbnMgbW92ZWQgaW50byB0aGVpciBvd24gc2VjdGlvbi4KCShidWlsZF9uZXdhcnJheSwgYnVpbGRfYW5ld2FycmF5LCBidWlsZF9qYXZhX2FycmF5X2xlbmd0aF9hY2Nlc3MsCglidWlsZF9qYXZhX2FycmF5bnVsbF9jaGVjayk6IE5ldyBleHRlcm4gZnVuY3Rpb24gZGVjbGFyYXRpb25zLgoJKFVOQVJZX1BMVVNfRVhQUik6IE1hY3JvIHJlbmFtZWQgaW50byBKQVZBX1VOQVJZX1BMVVNfRVhQUi4KCShKQVZBX05FV19BUlJBWV9FWFBSLCBKQVZBX05FV19DTEFTU19FWFBSLCBKQVZBX1RISVNfRVhQUik6IE5ldwoJZmFrZSB0cmVlIGNvZGVzLgoJKENBTExfQ09OU1RSVUNUT1JfUCk6IE5ldyBtYWNyby4KCSogcGFyc2UueSAoa3dfbGVuZ3RoKTogTmV3IHN0YXRpYyBnbG9iYWwgdHJlZSBub2RlLgoJKHJldHVybl9zdGF0ZW1lbnQpOiBUYWdnZWQgPG5vZGU+LgoJKFJFVFVSTl9USyk6IFRhZ2dlZCA8b3BlcmF0b3I+LgoJKHZhcmlhYmxlX2RlY2xhcmF0b3JfaWQ6KTogQnVpbGQgdmFyaWFibGUgZGVjbGFyYXRpb24gd2l0aCBhbgoJZW1wdHkgaW5pdGlhbGl6YXRpb24gdmFsdWUgaWYgYSBzeW50YXggZXJyb3Igd2FzIGZvdW5kIGluIHRoZQoJaW5pdGlhbGl6YXRpb24gcGFydCBvZiB0aGUgdmFyaWFibGUgZGVjbGFyYXRpb24uCgkoc3RhdGVtZW50X3dpdGhvdXRfdHJhaWxpbmdfc3Vic3RhdGVtZW50Oik6IHJldHVybl9zdGF0ZW1lbnQ6IG5vdwoJdXNlcyB0aGUgZGVmYXVsdCBydWxlLgoJKHJldHVybl9zdGF0ZW1lbnQ6KTogVGVtcG9yYXJpbHkgZml4ZWQgdG8gcmV0dXJuIE5VTExfVFJFRS4KCShwcmltYXJ5X25vX25ld19hcnJheTopOiBDYWxsIGJ1aWxkX3RoaXMgd2hlbiBUSElTX1RLIHdhcyBwYXJzZWQuCgkoY2xhc3NfaW5zdGFuY2VfY3JlYXRpb25fZXhwcmVzc2lvbjopOiBDbGFzcyBjcmVhdGlvbiBydWxlcyBub3cKCWNhbGwgYnVpbGRfbWV0aG9kX2ludm9jYXRpb24gdXBvbiByZWR1Y3Rpb24uCgkoYXJyYXlfY3JlYXRpb25fZXhwcmVzc2lvbjopOiBSdWxlcyBjYWxsIGJ1aWxkX25ld2FycmF5X25vZGUgdXBvbgoJcmVkdWN0aW9uLgoJKGRpbV9leHByczopOiBCdWlsZCBhIGxpc3Qgb2YgZGltZW5zaW9uIGV4cHJlc3Npb25zLgoJKGRpbV9leHByOik6IFN0b3JlIGxvY2F0aW9uIG9mIHRoZSBPU0JfVEsgaW4gdGhlIGRpbWVuc2lvbgoJZXhwcmVzc2lvbiBub2RlLgoJKG1ldGhvZF9pbnZvY2F0aW9uOik6IEFkZGVkIGEgbmV3IGVycm9yIHJ1bGUuCgkoYnVpbGRfdW5yZXNvbHZlZF9hcnJheV90eXBlKTogV0ZMIGFyZ3VtZW50IG1heSBhbHNvIGJlIGFuIGFycmF5CglvbiBhIHByaW1pdGl2ZSB0eXBlLiBOYW1lIG9mIHRoZSBhcmd1bWVudCBjaGFuZ2VkIHRvIHJlZmxlY3QgdGhpcy4KCShtZXRob2RfZGVjbGFyYXRvcik6IEluc2VydCBhcmd1bWVudCB0eXBlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlCglhcmd1bWVudCB0eXBlIGxpc3QgYW5kIGxhdGVyIHJldmVyc2UgdGhlIGxpc3QuCgkodW5yZXNvbHZlZF90eXBlX3ApOiBBcmd1bWVudCAncmV0dXJuZWQnIG1heSBiZSBvcHRpb25hbGx5CglOVUxMX1RSRUUuCgkoamF2YV9sYXlvdXRfY2xhc3NfZnJvbV9zb3VyY2UpOiBGdW5jdGlvbiByZW5hbWVkCglzYWZlX2xheW91dF9jbGFzcy4KCShyZXNvbHZlX2FuZF9sYXlvdXQpOiBOb3cgY2FsbCByZXNvbHZlX25vX2xheW91dCBhbmQKCXNhZmVfbGF5b3V0X2NsYXNzLgoJKHJlc29sdmVfbm9fbGF5b3V0KTogTmV3IGZ1bmN0aW9uLgoJKHB1cmlmeV90eXBlX25hbWUpOiBOZXcgZnVuY3Rpb24uCgkoY29tcGxldGVfY2xhc3NfcmVwb3J0X2Vycm9ycyk6IENhbGwgcHVyaWZ5X3R5cGVfbmFtZSBkdXJpbmcgZXJyb3IKCXJlcG9ydCBvbiBhIHR5cGUgbm90IGZvdW5kLgoJKHByb2Nlc3NfaW1wb3J0cyk6IGVycm9yX2ZvdW5kIGxvY2FsIHZhcmlhYmxlIGRvZXNuJ3QgbmVlZCB0byBiZQoJaW5pdGlhbGl6ZWQgdG8gemVyby4KCShkZWNsYXJlX2xvY2FsX3ZhcmlhYmxlcyk6IE5ldyBsb2NhbCB0eXBlX3dmbC4gRml4ZWQgdHlwbyBpbiBlcnJvcgoJbWVzc2FnZS4gdHlwZV93ZmwgYXNzaWduZWQgdG8gdW5yZXNvbHZlZCB0eXBlIGFuZCB1c2VkIHRvIHJlZ2lzdGVyCglpbmNvbXBsZXRlIHR5cGUuIEJ1aWxkIGEgV0ZMIGFyb3VuZCB0aGUgdmFyaWFibGUgaW5pdGlhbGl6YXRpb24KCXN0YXRlbWVudCBzbyB0aGF0IGRlYnVnIGluZm8gY2FuIGJlIGdlbmVyYXRlZCBvbiBpdC4KCShzb3VyY2Vfc3RhcnRfamF2YV9tZXRob2QpOiBSZXZlcnNlIGFyZ3VtZW50IGxpc3QgYWZ0ZXIgdGhleSd2ZQoJYmVlbiBwcm9jZXNzZWQuCgkoY3VycmVudF90aGlzKTogTmV3IHN0YXRpYyBnbG9iYWwgdmFyaWFibGUuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IFNldCBjdXJyZW50X3RoaXMgd2hlbiBhcHByb3ByaWF0ZS4KCShyZXNvbHZlX2V4cHJlc3Npb25fbmFtZSk6IEJ1aWxkIGNvcnJlY3Qgc3RhdGljIGFuZCBub24gc3RhdGljCglmaWVsZCBhY2Nlc3MgYmVhcmluZyBhIHNpbXBsZSBuYW1lLgoJKHJlc29sdmVfZmllbGRfYWNjZXNzKTogUmVzb2x2ZSB0aGUgbGVuZ3RoIGZpZWxkIG9mIGFycmF5cy4gSGFuZGxlCglmLm0oKSBjYXNlcy4KCShwYXRjaF9tZXRob2RfaW52b2NhdGlvbl9zdG10KTogU2V0IHRoZSB0eXBlIG9mIHRoZSBtZXRob2QKCWludm9jYXRpb24gdG8gZXJyb3JfbWFya19ub2RlLiBUaGlzIHZhbHVlIGlzIGxhdGVyIG92ZXJyaWRkZW4gYnkgYQoJdmFsaWQgdHlwZSwgaWYgYW55LiBEb24ndCBoYW5kbGUgcXVhbGlmaWVkIGNvbnN0cnVjdG9yIGludm9jYXRpb24KCWFzIHF1YWxpZmllZCBtZXRob2QgaW52b2NhdGlvbi4gQ2FsbCBsb29rdXBfbWV0aG9kX2ludm9rZSB3aXRoIGl0cwoJbmV3IGZsYWcuIEl0J3Mgbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byBhY2Nlc3MgdGhlIHNlbGVjdGVkIG1ldGhvZAoJYXMgdGhlIHZhbHVlIG9mIGEgdHJlZSBsaXN0LiBIYW5kbGUgY29uc3RydWN0b3IgaW52b2NhdGlvbi4KCShwYXRjaF9pbnZva2UpOiBSZXZlcnNlIGFyZ3VtZW50IGxpc3Qgd2hlbiBpbnZva2luZyBub24gaW50ZXJmYWNlCgltZXRob2RzLiBJbnNlcnQgY2FsbCB0byBuZXcgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIHRoZQoJY29uc3RydWN0b3IuCgkoaW52b2NhdGlvbl9tb2RlKTogUmV0dXJuIGEgSU5WT0tFX1NUQVRJQyBpcyB0aGUgaW52b2tlZCBtZXRob2QgaXMKCWRlZmluZWQgd2l0aGluIGEgZmluYWwgY2xhc3MuIFJldHVybiBJTlZPS0VfU1RBVElDIGlmIHRoZSBpbnZva2VkCgltZXRob2QgaXMgYSBjb25zdHJ1Y3Rvci4KCShsb29rdXBfbWV0aG9kX2ludm9rZSk6IE5ldyBsYyBhcmd1bWVudCBpcyBhIGZsYWcgdG8gaW5kaWNhdGUgYQoJY29uc3RydWN0b3IgbG9va3VwLiBOb3cgaGFuZGxlIGNvbnN0cnVjdG9yIGxvb2t1cC4gQ2hvb3NlIHRoZSBtb3N0CglzcGVjaWZpYyBtZXRob2QgaW4gY2FzZSBzZXZlcmFsIHdlcmUgbWF0Y2hpbmcgdGhlIGludm9jYXRpb24KCXJlcXVpcmVtZW50cy4gUmV0dXJuIGEgbWV0aG9kIGRlY2wgaW5zdGVhZCBvZiBhIHRyZWUgbGlzdCBmZWF0dXJpbmcKCW9uZSBzaW5nbGUgbWV0aG9kIGRlY2wgZWxlbWVudC4KCShyZWZpbmVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QpOiBOZXcgbGMgZmxhZyBhcmd1bWVudCB0bwoJaW5kaWNhdGUgdGhhdCBhIGNvbnN0cnVjdG9yIGlzIGJlaW5nIGxvb2tlZCB1cC4KCShub3RfaW5pdGlhbGl6ZWRfYXNfaXRfc2hvdWxkX3ApOiBOZXcgZnVuY3Rpb24uCgkoamF2YV9jb21wbGV0ZV90cmVlKTogTm93IHByb2Nlc3MgZmFrZSB0cmVlIGNvZGVzCglKQVZBX05FV19BUlJBWV9FWFBSLCBKQVZBX05FV19DTEFTU19FWFBSIGFuZCBKQVZBX1RISVNfRVhQUi4gQ2FsbAoJc2F2ZV9leHByIG9uIHJlc29sdmVkIGZ1bmN0aW9uIGNhbGwgYXJndW1lbnRzLiBDYXNlIG9uCglVTkFSWV9QTFVTX0VYUFIgY2hhbmdlZCBpbnRvIGEgY2FzZSBvbiBKQVZBX1VOQVJZX1BMVVNfRVhQUi4KCShwYXRjaF9hc3NpZ25tZW50KTogTEhTIGNhbiBiZSBhIGZpZWxkIGFjY2VzcyBleHByZXNzaW9uLiBXaGVuCglkZWFsaW5nIHdpdGggcmVmZXJlbmNlLCBsaHNfdHlwZSBpcyB0aGUgcHJvbW90ZWQgdHlwZSBvZiB0aGUKCXJoc190eXBlLCBub3QgdGhlIFJIUy4gVXNlIG5vdF9pbml0aWFsaXplZF9hc19pdF9zaG91bGRfcCB3aGVyZQoJYXBwbGljYWJsZS4KCShvcGVyYXRvcl9zdHJpbmcpOiBKQVZBX1VOQVJZX1BMVVNfRVhQUiByZXBsYWNlcyBVTkFSWV9QTFVTX0VYUFIuCgkocGF0Y2hfYmlub3ApOiBVc2Ugbm90X2luaXRpYWxpemVkX2FzX2l0X3Nob3VsZF9wIHdoZXJlCglhcHBsaWNhYmxlLgoJKGJ1aWxkX3VuYXJ5b3ApOiBKQVZBX1VOQVJZX1BMVVNfRVhQUiByZXBsYWNlcyBVTkFSWV9QTFVTX0VYUFIuCgkocGF0Y2hfdW5hcnlvcCk6IExpa2V3aXNlLiBBbmQgdXNlIG5vdF9pbml0aWFsaXplZF9hc19pdF9zaG91bGRfcAoJd2hlcmUgYXBwbGljYWJsZS4KCShyZXNvbHZlX3R5cGVfZHVyaW5nX3BhdGNoKTogTmV3IGZ1bmN0aW9uLgoJKHBhdGNoX2Nhc3QpOiBDYWxsIHJlc29sdmVfdHlwZV9kdXJpbmdfcGF0Y2ggdG8gcmVzb2x2ZSB0eXBlIGFuZAoJcmVwb3J0IGVycm9yIGFjY29yZGluZ2x5LgoJKHBhdGNoX2FycmF5X3JlZik6IFVzZSBub3RfaW5pdGlhbGl6ZWRfYXNfaXRfc2hvdWxkX3Agd2hlcmUKCWFwcGxpY2FibGUuIEFycmF5IGJhc2UgZXhwcmVzc2lvbiBpcyBzYXZlZCBiZWZvcmUgYmVpbmcKCXVzZWQuIFByb21vdGUgdGhlIHR5cGUgb2YgYW4gYXJyYXkgZWxlbWVudHMgaWYgaXQgY29udGFpbnMgbm9uCglidWlsdGluIHR5cGVzLgoJKGJ1aWxkX25ld2FycmF5X25vZGUsIHBhdGNoX25ld2FycmF5LCBidWlsZF90aGlzKTogTmV3IGZ1bmN0aW9ucy4KCjE5OTgtMDctMTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChwcmludF9jX2RlY2wpOiBVVEY4X0dFVCBpbmNyZW1lbnRzIHBvaW50ZXI7IGRvbid0CglpbmNyZW1lbnQgaXQgaW4gYGZvcicgc3RhdGVtZW50LgoJKHByaW50X2ZpZWxkX2luZm8pOiBJZiBudW1iZXIgaXMgaW5mIG9yIG5hbiwgZG9uJ3QgcHJpbnQgaXQuCgkocHJpbnRfbWV0aG9kX2luZm8pOiBJZiBtZXRob2QgbmFtZSBpcyBgZGVsZXRlJywganVzdCBpZ25vcmUgaXQuCgkocHJpbnRfY19kZWNsKTogU3BlY2lhbC1jYXNlIGpzdHJpbmdBcnJheS4KCgkqIGdqYXZhaC5jIChoZWxwKTogTmV3IGZ1bmN0aW9uLgoJKG5vX2FyZ3VtZW50KTogTmV3IGZ1bmN0aW9uLgoJKHVzYWdlKTogQ2hhbmdlZCB0ZXh0LgoJKG1haW4pOiBSZXdyb3RlIGFyZ3VtZW50IGhhbmRsaW5nLiAgTm93IGhhbmRsZXMgLXYsIC0taGVscCwKCS0tdmVyc2lvbi4KCSh2ZXJzaW9uKTogTmV3IGZ1bmN0aW9uLgoJKGZvdW5kX2Vycm9yKTogTmV3IGdsb2JhbC4KCShtYWluKTogUmV0dXJuIGZvdW5kX2Vycm9yLgoJKGdlbmVyYXRlX2FjY2Vzcyk6IFNldCBmb3VuZF9lcnJvci4KCShwcmludF9jX2RlY2wpOiBMaWtld2lzZS4KCjE5OTgtMDctMTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChwcmludF9jX2RlY2wpOiBEb24ndCBwcmludCAiLCIgd2hlbiBleGFtaW5pbmcgZmllbGQuCglTa2lwIHR5cGUgbmFtZSB3aGVuIGxvb2tpbmcgYXQgIltMIiB0eXBlcy4KCShwcm9jZXNzX2ZpbGUpOiBOb3cgc3RhdGljLgoJKGdlbmVyYXRlX2FjY2Vzcyk6IE5vdyByZXR1cm5zIGludC4KCShsYXN0X2FjY2Vzc19nZW5lcmF0ZWQpOiBOZXcgZ2xvYmFsLgoJKHByb2Nlc3NfZmlsZSk6IENsZWFyIGxhc3RfYWNjZXNzX2dlbmVyYXRlZDsgbWFrZSBtdWx0aXBsZSBwYXNzZXMKCW92ZXIgdGhlIGNsYXNzLgoJKHByaW50X2ZpZWxkX2luZm8pOiBKdXN0IHJldHVybiBpZiBnZW5lcmF0ZV9hY2Nlc3MgcmV0dXJucyB0cnVlLgoJKHByaW50X21ldGhvZF9pbmZvKTogTGlrZXdpc2UuICBBbHNvLCBhbGxvdyA8aW5pdD4gZnVuY3Rpb25zIHRvCglwYXNzIHRocm91Z2guCgkocHJpbnRfY19kZWNsKTogQWRkZWQgaXNfaW5pdCBhcmd1bWVudC4gIFByaW50IGNvbnN0cnVjdG9ycwoJcHJvcGVybHkuCgkocHJpbnRfY3h4X2NsYXNzbmFtZSk6IFVzZSBVVEY4X0dFVCB0byBleHRyYWN0IGNoYXJhY3RlcnMgZnJvbQoJc3RyaW5nLgoJKHByaW50X2Jhc2VfY2xhc3NuYW1lKTogTmV3IGZ1bmN0aW9uLgoJKHByaW50X2NsYXNzX2RlY2xzKTogTmV3IGZ1bmN0aW9uLgoJKHByb2Nlc3NfZmlsZSk6IFVzZSBpdC4KCSh1dGY4X2NtcCk6IE5ldyBmdW5jdGlvbi4KCjE5OTgtMDctMTMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBsYW5nLW9wdGlvbnMuaDogRm9ybWF0IGNoYW5nZWQgdG8gbWF0Y2ggY2hhbmdlcyBpbiBnY2MvdG9wbGV2LmMKCXRvIGltcGxlbWVudCBhIC0taGVscCBvcHRpb24uCgoxOTk4LTA3LTEwICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFJldmVydCBjaGFuZ2UgdG8gZHRhYmxlX3R5cGUuCgoxOTk4LTA3LTA5ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGphdmEtdHJlZS5oIChDTEFTU19QKTogIENoYW5nZWQgREVDTF9MQU5HX0ZMQUdfNyAtPiBUWVBFX0xBTkdfRkxBR180LgoKMTk5OC0wNy0wOCAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBTZXQgQ0xBU1NfTE9BREVEX1Agb24gZHRhYmxlX3R5cGUuCgoJKiBsYW5nLmMgKGxhbmdfaW5pdCk6IERlZmF1bHQgZmxhZ19leGNlcHRpb25zIHRvIDEsIHdpdGhvdXQKCWNoZWNraW5nIHRvIHNlZSBpZiBpdCdzIDIgZmlyc3QuCgoxOTk4LTA3LTA4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBjb25zdGFudHMuYzogSW5jbHVkZSAic3lzdGVtLmgiLgoJKiBkZWNsLmM6IExpa2V3aXNlLgoJKiBsYW5nLmMgKGZsYWdfbmV3X2V4Y2VwdGlvbnMpOiBHZXQgdmlhIGV4dGVybiBub3cuCgkobGFuZ19pbml0X29wdGlvbnMpOiBOZXcgZnVuY3Rpb25zLiAgVHVybiBvbiBmbGFnX25ld19leGNlcHRpb25zLgoKMTk5OC0wNy0wNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBsZXguYyAoamF2YV9sZXgpOiBSZXR1cm4gMCB3aGVuIHdlIHNlZSBhbiBpbnZhbGlkIGNoYXJhY3RlciBpbgoJdGhlIGlucHV0LgoKCSogbGV4LmMgKGphdmFfcmVhZF9jaGFyKTogU3BlY2lmeSBleHRyYSBhcmd1bWVudCB3aGVuIGNhbGxpbmcKCWphdmFfbGV4X2Vycm9yLgoJKGphdmFfcmVhZF91bmljb2RlLCBqYXZhX3BhcnNlX2VuZF9jb21tZW50LAoJamF2YV9wYXJzZV9lc2NhcGVfc2VxdWVuY2UpOiBMaWtld2lzZSwKCShqYXZhX2xleCk6IFNwZWNpZnkgZXh0cmEgYXJndW1lbnQgd2hlbiBjYWxsaW5nCglqYXZhX2xleF9lcnJvci4gVGVzdCB0aGF0IElEcyBhcmUgYmVnaW5uaW5nIHdpdGggYSBsZWdhbCBjaGFyYWN0ZXIKCWZvciBJRHMuIEhhbmRsZSBpbnZhbGlkIGNoYXJhY3RlcnMgd2l0aCBhbiBlcnJvciBtZXNzYWdlIGFuZCBhCgljYWxsIHRvIGphdmFfbGV4X2Vycm9yLgoJKGphdmFfbGV4X2Vycm9yKTogQWRqdXN0IGNvbHVtbiBwb3NpdGlvbiBieSBuZXcgYXJndW1lbnQKCWBmb3J3YXJkJy4gSXNzdWUgYW4gZXJyb3IgZXZlbiBpZiBpbiB0aGUgbWlkZGxlIG9mIHJlcG9ydGluZyBhbgoJb3RoZXIgZXJyb3IuCgoxOTk4LTA3LTA3ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogamNmLWlvLmMgKGZpbmRfY2xhc3MpOiBaZXJvIG91dCBCVUZGRVIgYmVmb3JlIHdlIHVzZSBpdCwgc2luY2UKCXdlIGRvbid0IGV4cGxpY2l0bHkgcHV0IGEgbnVsbCBwb2ludGVyIHdoZW4gd2UncmUgY29weWluZyBpdC4KCjE5OTgtMDctMDcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGdqYXZhaC5jIChwcmludF9jeHhfY2xhc3NuYW1lKTogTmV3IGZ1bmN0aW9uLgoJKHN1cGVyX2NsYXNzX25hbWUpOiBMaWtld2lzZS4KCShwcmludF9zdXBlcl9maWVsZHMpOiBSZW1vdmVkLgoJKGluX3N1cGVyKTogUmVtb3ZlZC4KCShwcmludF9maWVsZF9pbmZvKTogTmV2ZXIgZ2VuZXJhdGUgI2RlZmluZXMuCgkocHJpbnRfY19kZWNsKTogQ2hhbmdlZCBnZW5lcmF0ZWQgdHlwZXMgdG8gbWF0Y2ggSk5JLiAgTm8gbG9uZ2VyCglwcmludCBjbGFzcyBuYW1lIGJlZm9yZSBtZXRob2QgbmFtZS4KCShwcmludF9tZXRob2RfaW5mbyk6IFByaW50ICJzdGF0aWMiIGJlZm9yZSBzdGF0aWMgbWV0aG9kcy4KCVByaW50ICJ2aXJ0dWFsIiBiZWZvcmUgbm9uLWZpbmFsIG1ldGhvZHMuCgkodXNhZ2UpOiBVc2UgZXhpdCgxKSwgbm90IGV4aXQoLTEpLgoJKG1haW4pOiBMaWtld2lzZS4KCShwcmludF9maWVsZF9pbmZvKTogVXNlICUuMTdnIHRvIHByaW50IGEgZG91YmxlLgoJKGxhc3RfYWNjZXNzKTogTmV3IGdsb2JhbHMuCgkocHJvY2Vzc19maWxlKTogSW5pdGlhbGl6ZSBsYXN0X2FjY2Vzcy4KCSh1c2FnZSk6IE5vdyBzdGF0aWMuCgkoQUNDX1ZJU0lCSUxJVFkpOiBOZXcgZGVmaW5lLgoJKGdlbmVyYXRlX2FjY2Vzcyk6IE5ldyBmdW5jdGlvbi4KCShwcmludF9maWVsZF9pbmZvKTogQ2FsbCBpdC4KCShwcmludF9tZXRob2RfaW5mbyk6IExpa2V3aXNlLiAgQWxzbywgZ2VuZXJhdGUgaW5mb3JtYXRpb24gZm9yIGFsbAoJbWV0aG9kcywgbm90IGp1c3QgbmF0aXZlIG1ldGhvZHMuICBSZXR1cm4gdm9pZC4KCShwcmludF9jX2RlY2wpOiBSZXR1cm4gdm9pZC4KCShwcmludF9maWVsZF9pbmZvKTogUmV0dXJuIHZvaWQuCgoxOTk4LTA3LTAyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChKQVZBQklTT05GTEFHUyk6IFNwZWNpZmljIGZsYWcgZm9yIGJpc29uIHdoZW4KCXByb2Nlc3NpbmcgdGhlIGpjMSBncmFtbWFyIGZpbGUuIFByZWZpeCBiaXNvbiBmdW5jdGlvbnMgYW5kCgl2YXJpYWJsZXMgd2l0aCBqYXZhXy4KCShwYXJzZS5jKTogRGVwZW5kZW5jaWVzIG9uIHBhcnNlLmggYW5kIGxleC5oCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9hcnJheWFjY2Vzcyk6IEZ1bmN0aW9uIG5vdyBnbG9iYWwuCgkqIGphdmEtdHJlZS5oOiBDb21tZW50IHJlb3JnYW5pemVkIHRvIGNhcnJ5IG9uIHByZXZpb3VzCgljbGFzc2lmaWNhdGlvbiBlZmZvcnQuCgkoUkVTT0xWRV9FWFBSRVNTSU9OX05BTUVfUCwgUkVTT0xWRV9QQUNLQUdFX05BTUVfUCwKCVJFU09MVkVfVFlQRV9OQU1FX1ApOiBOZXcgZmxhZ3Mgb24gV0ZMcy4KCSogamNmLXBhcnNlLmMgKHBhcnNlX3NvdXJjZV9maWxlKTogamF2YV9wYXJzZV9zb3VyY2VfZmlsZSByZW5hbWVkCglqYXZhX3BhcnNlIChuZXcgcHJlZml4IGphdmFfIGdlbmVyYXRlZCBieSBiaXNvbikuCgkoamF2YV9sYXlvdXRfcGFyc2VkX2NsYXNzLCBqYXZhX3JlZ2lzdGVyX3BhcnNlZF9jbGFzcyk6IEZ1bmN0aW9uCgljYWxsIHJlbW92ZWQuCgkoeXlwYXJzZSk6IFJlbW92ZWQgdW5uZWNlc3NhcnkgY2FsbCB0byBpbml0X291dGdvaW5nX2Nwb29sLgoJKiBsZXguYyAoc3RhdGljIHRyZWUgd2ZsX29wKTogVmFyaWFibGUgZGVsZXRlZC4KCShqYXZhX2luaXRfbGV4KTogSW5pdGlhbGl6ZSBrd19zdXBlciBhbmQga3dfdGhpcy4gSW5pdGlhbGl6ZSBtb3JlCgljdHhwIGZpZWxkcyB0byBOVUxMX1RSRUUuCgkoamF2YV9sZXgpOiBObyBsb25nZXIgY3JlYXRlIFdGTCBmb3Igb3BlcmF0b3JzLiBGaWxlbmFtZSBjYWNoaW5nCgltZWNoYW5pc20gZGVsZXRlZC4gQ2FsbCBCVUlMRF9PUEVSQVRPUiBmb3IgYC4nLCAnKCcsICdbJy4gU3RyaW5ncwoJY3JlYXRlZCBhcyBTVFJJTkdfQ1NUIGFuZCBsYXRlciBleHBhbmRlZC4gUmVtb3ZlZCBleHRyYSBhcmd1bWVudAoJdG8gQlVJTERfT1BFUkFUT1IgYW5kIEJVSUxEX09QRVJBVE9SMi4gQnVpbGQgb3BlcmF0b3JzIGZvciBUSElTCglhbmQgU1VQRVIuCgkoYnVpbGRfd2ZsX25vZGUpOiBSZW1vdmVkIGNvZGUgaW4gY29tbWVudHMuCgkqIGxleC5oIChCVUlMRF9PUEVSQVRPUiwgQlVJTERfT1BFUkFUT1IyKTogTm8gbG9uZ2VyIGJ1aWxkIGEgV0ZMIGJ1dAoJc3RvcmUgdG9rZW4gYW5kIGxvY2F0aW9uIGRhdGEgaW4gdGhlIGN1cnJlbnQgYmlzb24gdG9rZW4uCgkqIHBhcnNlLmg6IFJlbW92ZWQgcHJlLXByb2Nlc3NvciBiYXNlZCBzeW1ib2wgcHJlZml4ZXMgaGFjay4gTW92ZWQKCXN0YXRpYy9leHRlcm4gZnVuY3Rpb24gZGVjbGFyYXRpb24gYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4KCShzdHJ1Y3QgcXVhbGlmaWNhdGlvbik6IERhdGEgc3RydWN0dXJlIGRlZmluaXRpb24gZGVsZXRlZC4KCShSRVNPTFZFX0NIQUlOX1JFTUFJTkRFUik6IE1hY3JvIGRlZmluaXRpb24gZGVsZXRlZC4KCShxdWFsaWZ5X2FtYmlndW91c19uYW1lKTogRnVuY3Rpb24gZGVjbGFyYXRpb24gbW9kaWZpZWQuIEZ1bmN0aW9uCglub3cgcmV0dXJucyBub3RoaW5nLgoJKGJ1aWxkX2FycmF5X3JlZiwgcGF0Y2hfYXJyYXlfcmVmLCBtYWtlX3F1YWxpZmllZF9uYW1lLAoJcmVzb2x2ZV9xdWFsaWZpZWRfZXhwcmVzc2lvbl9uYW1lLCBtYXliZV9nZW5lcmF0ZV9jbGluaXQsCglyZXNvbHZlX2ZpZWxkX2FjY2Vzcyk6IE5ldyBzdGF0aWMgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgoJKGJ1aWxkX2phdmFfYXJyYXlhY2Nlc3MpOiBOZXcgZXh0ZXJuIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLgoJKGVudW0geyBSRVNPTFZFX0VYUFJFU0lPTl9OQU1FLi4ufSk6IEVudW0gZGVsZXRlZC4KCShDQUxMX0VYUFJfUFJJTUFSWSk6IE1hY3JvIGRlbGV0ZWQuCgkoRVhQUl9XRkxfUVVBTElGSUNBVElPTiwgUVVBTF9XRkwsIFFVQUxfUkVTT0xVVElPTik6IE5ldyBtYWNyb3MuCgkoc3RydWN0IHBhcnNlcl9jdHh0KTogRmllbGQgaW5pdGlhbGl6ZWRfZmluYWwKCXJlbW92ZWQuIG5vbl9zdGF0aWNfaW5pdGlhbGl6ZWQsIHN0YXRpY19pbml0aWFsaXplZDogTmV3IGZpZWxkcy4KCSogcGFyc2UueSAoc3RhdGljIHRyZWUga3dfc3VwZXIsIHN0YXRpYyB0cmVlIGt3X3RoaXMpOiBOZXcgZ2xvYmFsCglzdGF0aWMuCgkoJXVuaW9uKTogdHJlZSB3ZmwgZmllbGQgb2Ygb3BlcmF0b3IgbWVtYmVyIHJlcGxhY2VkIGJ5IGludAoJbG9jYXRpb24uIFdGTHMgYXJlIG5vbiBsb25nZXIgY3JlYXRlZCBmb3Igb3BlcmF0b3JzLgoJKE9TQl9USywgRE9UX1RLLCBUSElTX1RLLCBTVVBFUl9USyk6IFRhZ2dlZCA8b3BlcmF0b3I+LgoJKHF1YWxpZmllZF9uYW1lOik6IE5vdyBjYWxscyBtYWtlX3F1YWxpZmllZF9uYW1lIHRvIGJ1aWxkIHRoZQoJaWRlbnRpZmllci4KCSh0eXBlX2RlY2xhcmF0aW9uOik6IENvbnNpZGVyIGdlbmVyYXRpbmcgPGNsaW5pdD4gd2hlbiBjbGFzcwoJcGFyc2luZyBjb21wbGV0ZWQuCgkodmFyaWFibGVfZGVjbGFyYXRvcjopOiBEaXJlY3RseSBidWlsZCBhbiBhc3NpZ25tZW50IG5vZGUgd2hlbiB0aGUKCXZhcmlhYmxlIGlzIGluaXRpYWxpemVkIHdoZW4gZGVjbGFyZWQuCgkodGhpc19vcl9zdXBlcjopOiBCdWlsZCBhIFdGTCBhbmQgc2V0IGN1cnJlbnQgbG9jYXRpb24gd2hlbiBUSElTCglvciBTVVBFUiBhcmUgcGFyc2VkLgoJKGV4cHJlc3Npb25fc3RhdGVtZW50Oik6IFdyYXAgc3RhdGVtZW50IGFyb3VuZCBhIFdGTC4KCShwcmltYXJ5X25vX25ld19hcnJheTopOiBGaXhlZCB0eXBvLiBDaGFuZ2VkIHZhbHVlIHJldHVybmVkIGJ5CglUSElTX1RLIGJlY2F1c2Ugb2YgaXRzIG5ldyB0eXBlICh0ZW1wb3JhcnkpLgoJKGRpbV9leHByczopOiBUZW1wb3JhcnkgZml4IGJlY2F1c2Ugb2YgT1NCX1RLJ3MgbmV3IHR5cGUuCgkoZmllbGRfYWNjZXNzOik6IEJ1aWxkIHF1YWxpZmllZCBuYW1lIHdpdGggU1VQRVIuCgkobWV0aG9kX2ludm9jYXRpb246KTogRml4ZWQgcmV0dXJuZWQgdmFsdWUgYmVjYXVzZSBvZiBTVVBFUidzIG5ldwoJdHlwZS4KCShhcnJheV9hY2Nlc3M6KTogVXNlIE9TQl9USyBsb2NhdGlvbiBpbmZvcm1hdGlvbi4KCShwb3N0X2luY3JlbWVudF9leHByZXNzaW9uOiwgcG9zdF9kZWNyZW1lbnRfZXhwcmVzc2lvbjosCgl1bmFyeV9leHByZXNzaW9uOiwgcHJlX2luY3JlbWVudF9leHByZXNzaW9uOiwKCXByZV9kZWNyZW1lbnRfZXhwcmVzc2lvbjosIHVuYXJ5X2V4cHJlc3Npb25fbm90X3BsdXNfbWludXM6LAoJY2FzdF9leHByZXNzaW9uOiwgbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbjosCglhZGRpdGl2ZV9leHByZXNzaW9uOiwgc2hpZnRfZXhwcmVzc2lvbjosIHJlbGF0aW9uYWxfZXhwcmVzc2lvbjosCgllcXVhbGl0eV9leHByZXNzaW9uOiwgYW5kX2V4cHJlc3Npb246LCBleGNsdXNpdmVfb3JfZXhwcmVzc2lvbjosCglpbmNsdXNpdmVfb3JfZXhwcmVzc2lvbjosIGNvbmRpdGlvbmFsX2FuZF9leHByZXNzaW9uOiwKCWNvbmRpdGlvbmFsX29yX2V4cHJlc3Npb246LCBhc3NpZ25tZW50Oik6IFVzZSBuZXcgbG9jYXRpb24vdG9rZW4KCWluZm9ybWF0aW9uIGF2YWlsYWJsZSBvbiBvcGVyYXRvcnMuCgkoY3JlYXRlX2NsYXNzKTogU2V0IHN1cGVyX2RlY2xfdHlwZSB0byBOVUxMX1RSRUUgd2hlbiBwcm9jZXNzaW5nCglqYXZhLmxhbmcuT2JqZWN0LgoJKHJlZ2lzdGVyX2ZpZWxkcyk6IEZpZWxkIGluaXRpYWxpemF0aW9uIGlzIG5vdyBhIE1PRElGWV9FWFBSCglub2RlLiBDaGFpbiBpbml0aWFsaXphdGlvbiBjb2RlIHRvIHRoZSBtYXRjaGluZyBsaXN0cyAoYWNjb3JkaW5nCgl0byB0aGUgZmllbGQgZGVjbGFyYXRpb24gbW9kaWZpZXJzKS4KCShtYXliZV9nZW5lcmF0ZV9jbGluaXQpOiBOZXcgZnVuY3Rpb24uCgkobWV0aG9kX2hlYWRlcik6IERvbid0IHNldCBtZXRob2QncyBERUNMX05BTUUgdG8gYSBXRkwgd2hlbiBhZGRpbmcKCW1ldGhvZHMgdG8gamF2YS5sYW5nLk9iamVjdC4KCShyZXNvbHZlX2FuZF9sYXlvdXQpOiBOb3cgY2FuIHJldHVybiBOVUxMX1RSRUUgaWYgdGhlIHR5cGUKCXJlc29sdXRpb24gZmFpbHMuIE90aGVyd2lzZSwgcmV0dXJuIHRoZSBjbGFzcyBERUNMIGluc3RlYWQgb2YgaXRzCglUWVBFLgoJKGNoZWNrX21ldGhvZF9yZWRlZmluaXRpb24pOiBEb24ndCBwYXRjaCBtZXRob2QgREVDTF9OQU1FIGlmIGl0CgliZWxvbmdzIHRvIGphdmEubGFuZy5PYmplY3QuCgkocHJvY2Vzc19pbXBvcnRzKTogU2ltcGx5IGFzc2lnbiBlcnJvcl9mb3VuZCB0byB0aGUgdmFsdWUgcmV0dXJuZWQKCWJ5IGNoZWNrX3BrZ19jbGFzc19hY2Nlc3MuCgkoZGVjbGFyZV9sb2NhbF92YXJpYWJsZXMpOiBEb24ndCB1c2UgdGhlaXIgaW5pdCBzdGF0ZW1lbnRzIChpZgoJYW55KSB3aGVuIHBhcnNpbmcgZXJyb3Igd2VyZSBwcmV2aW91c2x5IGZvdW5kLiBSZXVzZSBNT0RJRllfRVhQUgoJYnVpbGQgZHVyaW5nIHBhcnNpbmcgYXMgYW4gaW5pdCBzdGF0ZW1lbnQuCgkoamF2YV9tZXRob2RfYWRkX3N0bXQpOiBOb3cgcmV0dXJuIHRoZSBjdXJyZW50IG1ldGhvZCBib2R5LgoJKGphdmFfbGF5b3V0X3BhcnNlZF9jbGFzcywgamF2YV9yZWdpc3Rlcl9wYXJzZWRfY2xhc3MpOiBGdW5jdGlvbnMKCXJlbW92ZWQuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyk6IEluaXRpYWxpemUgdGhlIGNvbnN0YW50IHBvb2wgb24gYQoJcGVyIGNsYXNzIGJhc2lzLiBMYXlvdXQgdGhlIGNsYXNzZXMgYmVmb3JlIGV4cGFuZGluZyB0aGVpciBtZXRob2QKCWJvZGllcy4gRG9uJ3QgdHJ5IGV4cGFuZCBhcnRpZmljaWFsIGNvbnN0cnVjdG9yIGNvZGUgaWYgZXJyb3Igd2VyZQoJZm91bmQuIE1ha2UgdGhlIGNsYXNzZXMgZGF0YSBhbmQgcmVnaXN0ZXIgdGhlbSBpZiBubyBlcnJvciB3ZXJlCglmb3VuZC4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2QpOiBSZXRyaWV2ZSBhbiBhcnRpZmljaWFsIGNvbnN0cnVjdG9yCglhcmd1bWVudCBsaXN0IGJlZm9yZSBlbnRlcmluZyBpdHMgYm9keS4gQXNzaWduIHRoZSB0b3AgYmxvY2sgdG8KCXRoZSBhcnRpZmljaWFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uIGJvZHkgYW5kIHNldCB0eXBlcyBvZiBkZWNsYXJlZAoJYmxvY2tzIGFuZCBjb21wb3VuZCBzdGF0ZW1lbnRzIHRvIHZvaWQuIFdhbGsgbWV0aG9kIGJvZHkgaWYgbm90IGFuCglhcnRpZmljaWFsIGNvbnN0cnVjdG9yLgoJKG1ha2VfcXVhbGlmaWVkX25hbWUsIGN1dF9pZGVudGlmaWVyX2luX3F1YWxpZmllZCk6IE5ldyBmdW5jdGlvbnMuCgkocmVzb2x2ZV9leHByZXNzaW9uX25hbWUpOiBGaXhlZCBjb21tZW50cy4gU2F2ZS9yZXN0b3JlIHRoZQoJY3VycmVudCBjbGFzcyBDTEFTU19MT0FERURfUCBmbGFnIHZhbHVlLiBCdWlsZCBub24gcXVhbGlmaWVkCglzdGF0aWMgZmllbGQgYWNjZXNzIGFuZCBoYW5kbGUgcXVhbGlmaWVkIGV4cHJlc3Npb24gbmFtZXMuCgkocmVzb2x2ZV9maWVsZF9hY2Nlc3MsIHJlc29sdmVfcXVhbGlmaWVkX2V4cHJlc3Npb25fbmFtZSk6IE5ldwoJZnVuY3Rpb25zLgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uX3N0bXQpOiBVc2UgdGhlIG5ldyBleHByZXNzaW9uIHJlc29sdXRpb24KCXNjaGVtZSwgY2FsbGluZyByZXNvbHZlX2ZpZWxkX2FjY2VzcyB3aGVuIHRoZSBmdW5jdGlvbiBjYWxsIGlzCglyZXNvbHZlZCBhcyBhbiBleHByZXNzaW9uLgoJKHF1YWxpZnlfYW1iaWd1b3VzX25hbWUpOiBGdW5jdGlvbiByZXdyaXR0ZW4gdG8gd29yayBvbiBxdWFsaWZpZWQKCWV4cHJlc3Npb24gcHJvZHVjZWQgYnkgbWFrZV9xdWFsaWZpZWRfbmFtZS4KCShqYXZhX2NvbXBsZXRlX3RyZWUpOiBQcm9tb3RlIHR5cGUgd2hlbiBmdW5jdGlvbidzIGFyZ3VtZW50IGFyZQoJUkVDT1JEX1RZUEVzLiBXaGlsZSBwcm9jZXNzaW5nIHRoZSBNT0RJRllfRVhQUiBjYXNlOiBkb24ndCBwYXRjaAoJdGhlIGFzc2lnbm1lbnQgdG8gZGlzY292ZXIgZnVydGhlciBlcnJvcnMgaWYgUkhTIGlzIGEgZXhwcmVzc2lvbgoJbmFtZSB0aGF0IGZhaWxzIHRvIGV2YWx1YXRlLiBEZWNsYXJlIExIUyBpbml0aWFsaXplZCBldmVuIHRob3VnaAoJdGhlIGFzc2lnbm1lbnQgZmFpbGVkLiBEb24ndCB1c2UgdGhlIGxvY2F0aW9uIHZhcmlhYmxlIGFuZCByZW1vdmVkCglleHRyYSBhcmd1bWVudCBpbiBwYXRjaCBmdW5jdGlvbiBjYWxscy4gTm93IGhhbmRsZSB0aGUgQVJSQVlfUkVGCgljYXNlIGFuZCBidWlsZCBpbnRlcm5hbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gd2hlbiBTVFJJTkdfQ1NUcyBhcmUKCXdhbGtlZC4KCShidWlsZF9tZXRob2RfaW52b2NhdGlvbik6IERvbid0IHdyYXAgZnVuY3Rpb24gY2FsbCBhcm91bmQgYSBXRkwuCgkoYnVpbGRfYXNzaWdubWVudCk6IExpa2V3aXNlLiBVc2UgdGhlIG9wZXJhdG9yIGxvY2F0aW9uCglpbmZvcm1hdGlvbi4KCShwYXRjaF9hc3NpZ25tZW50KTogSGFuZGxlIGFycmF5IGFjY2VzcyBMSFNzLiBIYW5kbGUgZXJyb3IKCXByb3ZlbmFuY2UsIHJlc3VsdGluZyBpbiBhIGJldHRlciBlcnJvciByZXBvcnQuCgkoYnVpbGRfYmlub3ApOiBVc2Ugb3BfbG9jYXRpb24gZnJvbSBvcGVyYXRvciBhcyBiaW5vcCBsb2NhdGlvbgoJaW5mb3JtYXRpb24uCgkoYnVpbGRfdW5hcnlvcCwgYnVpbGRfaW5jZGVjLCBidWlsZF9jYXN0KTogTGlrZXdpc2UuCgkocGF0Y2hfYmlub3ApOiBFeHRyYWN0IGxvY2F0aW9uIGluZm9ybWF0aW9uIGZyb20gdGhlIG5vZGUuIEZpeGVkCgl0eXBvIGluIGVycm9yIG1lc3NhZ2UuCgkocGF0Y2hfdW5hcnlfb3ApOiBFeHRyYWN0IGxvY2F0aW9uIGluZm9ybWF0aW9uIGZyb20gdGhlIG5vZGUuCgkoYnVpbGRfYXJyYXlfcmVmLCBwYXRjaF9hcnJheV9yZWYpOiBOZXcgZnVuY3Rpb25zLgoKMTk5OC0wNy0wMSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogZXhwci5jIChleHBhbmRfamF2YV9JTlNUQU5DRU9GKTogQ2hhbmdlZCBjYWxsaW5nIGNvbnZlbnRpb24gdG8KCW1hdGNoIF9Kdl9Jc0luc3RhbmNlT2YuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBVc2UgX0p2X05ld0FycmF5LCBub3QKCXNvZnRfbmV3YXJyYXkuICBVc2UgX0p2X0lzSW5zdGFuY2VPZiwgbm90IHNvZnRfaW5zdGFuY2VvZi4KCjE5OTgtMDYtMzAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBGdW5jdGlvbnMgYXJlIG5vdyBuYW1lZAoJX0p2X01vbml0b3JFbnRlciBhbmQgX0p2X01vbml0b3JFeGl0LCBhbmQgcmV0dXJuIGppbnQuCgoxOTk4LTA2LTI5ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGphdmEtdHJlZS5oIChsb2FkX2NsYXNzKTogIEFkZCBwcm90b3R5cGUuCgkqIGNsYXNzLmMgKGlzX2NvbXBpbGVkX2NsYXNzKTogIEFkZCBtaXNzaW5nIGFyZyB0byBsb2FkX2NsYXNzLgoJKiBleHByLmMgKGV4cGFuZF9qYXZhX05FVyk6ICBDYWxsIGxvYWRfY2xhc3MuCgkqIHBhcnNlLnkgKHByb2Nlc3NfaW1wb3J0KTogIFJlbW92ZWQgYm9ndXMgdXNlIG9mIHZvaWQgcmV0dXJuIHZhbHVlLgoKMTk5OC0wNi0yNSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBkZWNsLmMsIGphdmEtdHJlZS5oIChzb2Z0X2F0aHJvd19ub2RlKTogIFJlbmFtZWQgdG8gc29mdF9ub2RlLgoJRnVuY3Rpb24gbmFtZSBpcyAiX0p2X1Rocm93IiBpbnN0ZWFkIG9mICJzb2Z0X2F0aHJvdyIuCgkqIGRlY2wuYywgamF2YS10cmVlLmggKHNvZnRfbmV3X25vZGUpOiAgUmVuYW1lZCB0byBhbGxvY19vYmplY3Rfbm9kZS4KCUZ1bmN0aW9uIG5hbWUgaXMgIl9Kdl9BbGxvY09iamVjdCIgaW5zdGVhZCBvZiAic29mdF9uZXciLgoJVGFrZXMgYW4gZXh0cmEgcGFyYW1ldGVyIChvYmplY3Qgc2l6ZSkuCgkqIGV4cHIuYzogIFVwZGF0ZSBjYWxscy4KCjE5OTgtMDYtMjQgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogbGV4LmMgKGphdmFfZ2V0X2xpbmVfY29sKTogIEhhbmRsZSBlbmQtb2YtZmlsZS4KCSogZXhjZXB0LmMgKGV4cGFuZF9lbmRfamF2YV9oYW5kbGVyKTogIEhhbmRsZSBudWxsIHR5cGUgKGkuZS4gZmluYWxseSkuCgoxOTk4LTA2LTI0ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBsYW5nLmMgKGxhbmdfaW5pdCk6IE1ha2UgLWZleGNlcHRpb25zIHRoZSBkZWZhdWx0LgoJKiBleGNlcHQuYyAobWF5YmVfc3RhcnRfdHJ5LCBtYXliZV9lbmRfdHJ5KTogRG9uJ3QgZG8gYW55dGhpbmcgaWYKCWV4Y2VwdGlvbiBoYW5kbGluZyBpcyBub3QgdHVybmVkIG9uLgoKMTk5OC0wNi0yMyAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogbGFuZy5jIChmbGFnX25ld19leGNlcHRpb25zKTogTWFrZSB0aGlzIHRoaXMgZGVmYXVsdC4KCSogZGVjbC5jIChlbmRfamF2YV9tZXRob2QpOiBDYWxsIGVtaXRfaGFuZGxlcnMuCgkqIGV4Y2VwdC5jIChtZXRob2RfaW5pdF9leGNlcHRpb25zKTogU2V0IGxhbmd1YWdlIGNvZGUgYW5kIHZlcnNpb24uCgkoZXhwYW5kX3N0YXJ0X2phdmFfaGFuZGxlcik6IEVuYWJsZSBleGNlcHRpb24sIGFuZCBjYWxsCglleHBhbmRfZWhfcmVnaW9uX3N0YXJ0LgoJKGV4cGFuZF9lbmRfamF2YV9oYW5kbGVyKTogRW5hYmxlIGV4Y2VwdGlvbiwgYW5kIHNldCB1cCBjYXRjaCBibG9ja3MuCgkoZW1pdF9oYW5kbGVycyk6IE5ldyByb3V0aW5lIHRvIGdlbmVyYXRlIHRoZSBzYXZlZCBoYW5kbGVycy4KCSogamF2YS1leGNlcHQuaCAoZW1pdF9oYW5kbGVycyk6IEFkZCBwcm90b3R5cGUuCgoxOTk4LTA2LTEyICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCglXZSB1c2VkIHRvIGhhdmUgdGhyZWUgZGlmZmVyZW50IHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgY29uc3RhbnQgcG9vbDoKCXRoZSBDUG9vbCBzdHJ1Y3R1cmUsIHRoZSB0cmVlX2NvbnN0YW50X3Bvb2wsIGFuZCB0aGUgY29uc3RydWN0dXJlcwoJdXNlZCB0byBidWlsZCB0aGUgQ2xhc3Mgb2JqZWN0ICh3aGljaCBtYXkgbmVlZCBjbGFzcyBhbmQgc3RyaW5nCgljb25zdGFudHMpIGluIGNvbXBpbGVkIGNvZGUuICBOb25lIHdlcmUgYXBwcm9wcmlhdGUgZm9yIGNvbXBpbGluZwoJdG8gLmNsYXNzIGZpbGVzLCBzbyBJIGRpZCBhIG1ham9yIG92ZXJoYXVsLgoKCUZpcnN0LCB0aGUgdHJlZV9jb25zdGFudF9wb29sIGFycmF5IHdhcyByZW1vdmVkLiAgVGhpbmdzIHdlcmUKCW1vZGlmaWVkIHRvIHRoZSBDUG9vbCBzdHJ1Y3R1cmUgaW4gdGhlIEpDRiBjb3VsZCBiZSB1c2VkLgoJU2Vjb25kLCBhICJjYXBhY2l0eSIgZmllbGQgd2FzIGFkZGVkIHRvIHRoZSBDUG9vbCwgYW5kIGZ1bmN0aW9ucwoJd3JpdHRlbiB0byBzZWFyY2ggZm9yIGEgbWF0Y2hpbmcgY29uc3RhbnQsIGFkZGluZyBvbmUgaWYgbm90IGZvdW5kLgoJVGhlIGNvZGUgdGhhdCBnZW5lcmF0ZWQgdGhlIENsYXNzIG9iamVjdCB3YXMgY2hhbmdlZCB0byB1c2UgYSBDUG9vbC4KCVRoZSBhY3R1YWwgVFJFRV9MSVNUcyB1c2VkIHRvIGJ1aWxkIHRoZSBDT05TVFJVQ1RPUnMgdXNlZCBmb3IKCXRoZSBzdGF0aWMgQ2xhc3Mgb2JqZWN0IGFyZSBub3cgb25seSBpbiBidWlsZF9jb25zdGFudHNfY29uc3RydWN0b3IuCglGaW5hbGx5LCBJIHdyb3RlIGNvZGUgd2hpY2ggY2FuIGdlbmVyYXRlIGEgLmNsYXNzIGZpbGUgKGluY2x1ZGluZyBpdHMKCWNvbnN0YW50IHBvb2wpIGZyb20gdGhlIFJFQ09SRF9UWVBFIG9mIGEgY2xhc3MuICBUaGlzIGlzIGEgYmlnIHN0ZXAKCW9uIHRoZSB3YXkgdG8gY29tcGlsaW5nIEphdmEgc291cmNlIGludG8gLmNsYXNzIGZpbGVzLgoKCSogamNmLXdyaXRlLmM6ICBOZXcgZmlsZS4gV3JpdGVzIG91dCBhIFJFQ09SRF9UWVBFIGFzIGEgLmNsYXNzIGZpbGUuCgkqIE1ha2VmaWxlLmluIChKQVZBX09CSlMpOiAgQWRkZWQgamNmLXdyaXRlLm8uCgoJKiBqYXZhLXRyZWUuaCAoQ1BPT0xfVVRGLCBDT05TVEFOVF9SZXNvbHZlZEZsYWcsCglDT05TVEFOVF9SZXNvbHZlZFN0cmluZywgQ09OU1RBTlRfUmVzb2x2ZWRDbGFzcyk6ICBOZXcgbWFjcm9zLgoJKE5BTUVfQU5EX1RZUEVfTkFNRSwgTkFNRV9BTkRfVFlQRV9TSUdOQVRVUkUsIENPTVBPTkVOVF9SRUZfTkFNRSwKCUNPTVBPTkVOVF9SRUZfTkFNRV9BTkRfVFlQRSwgQ09NUE9ORU5UX1JFRl9TSUdOQVRVUkUpOiBSZWRlZmluZWQuCgkoQ09NUE9ORU5UX1JFRl9DTEFTUyk6ICBSZXBsYWNlZCBieSBDT01QT05FTlRfUkVGX0NMQVNTX0lOREVYLgoJKGxhbmdfdHlwZSk6ICBSZW1vdmVkIGNvbnN0YW50X3Bvb2wgZmllbGQuCgkqIGpjZi5oIChDUG9vbCk6ICBSZW5hbWVkIHNpemUgdG8gY291bnQuICBBZGRlZCBmaWVsZCBjYXBhY2l0eS4KCShDUE9PX0NPVU5ULCBDUE9PTF9VSU5ULCBDUE9PTF9VU0hPUlQxLCBDUE9PTF9VU0hPUlQyLAoJQ1BPT0xfRklOSVNILCBDUE9PTF9JTklULCBDUE9PTF9SRUlOSVQpOiAgTmV3IG1hY3Jvcy4KCVJld3JpdGUgc29tZSBvZiB0aGUgb2xkIEpDRl9YWFggaW4gdGVybXMgb2YgQ1BPT0xfWFhYIG1hY3Jvcy4KCgkqIGNvbnN0YW50cy5jIChjdXJyZW50X2NvbnN0YW50X3Bvb2xfdGFncywgY3VycmVudF9jb25zdGFudF9wb29sX2RhdGEsCgljdXJyZW50X2NvbnN0YW50X3Bvb2xfbGVuZ3RoKSwgamF2YS10cmVlLmg6IFJlcGxhY2VkIGJ5IG91dGdvaW5nX2Nwb29sLgoJKiBjb25zdGFudHMuYyAoYnVpbGRfY29uc3RhbnRzX2NvbnN0cnVjdG9yKTogIFVzZSBuZXcgb3V0Z29pbmdfY3Bvb2wuCgkoc2V0X2NvbnN0YW50X2VudHJ5LCBmaW5kX2NvbnN0YW50MSwgZmluZF9jb25zdGFudDIsCglmaW5kX2NsYXNzX2NvbnN0YW50LCBjb3VudF9jb25zdGFudF9wb29sX2J5dGVzLCB3cml0ZV9jb25zdGFudF9wb29sLAoJZmluZF91dGY4X2NvbnN0YW50LCBmaW5kX2NsYXNzX29yX3N0cmluZ19jb25zdGFudCk6ICBOZXcgZnVuY3Rpb25zLgoKCSogamNmLXBhcnNlLmMgKGxvYWRfY2xhc3MpOiAgRG9uJ3Qgc2F2ZS9yZXN0b3JlIHRyZWUtY29uc3RhbnRfcG9vbC4KCShnZXRfY29uc3RhbnQpOiAgVXNlIGN1cnJlbnRfamNmLmNwb29sIGluc3RlYWQgb2YgdHJlZV9jb25zdGFudF9wb29sLgoJKGdpdmVfbmFtZV90b19jbGFzcywgZ2V0X2NsYXNzX2NvbnN0YW50KTogIExpa2V3aXNlLgoJKiBqY2YtcGFyc2UuYywgamF2YS10cmVlLmggKHRyZWVfY29uc3RhbnRfcG9vbCk6ICBSZW1vdmVkLgoJKGdldF9uYW1lX2FuZF90eXBlX2NvbnN0YW50LCBnZXRfcmVmX2NvbnN0YW50KTogIFJlbW92ZWQuCgkqIHBhcnNlLmggKHBhcnNlcl9jdHh0KTogIFJlbW92ZSBmaWVsZCB0cmVlX2NvbnN0YW50X3Bvb2wuCgkqIHBhcnNlLnk6ICBEb24ndCBzYXZlL3Jlc3RvcmUgdHJlZV9jb25zdGFudF9wb29sLgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiAgVXBkYXRlIGZvciBuZXcgYXBwcm9hY2guCgkqIGV4cHIuYyAoZXhwYW5kX2ludm9rZSwgZXhwYW5kX2phdmFfZmllbGRfb3ApOiBMaWtld2lzZS4KCgkqIGxhbmctb3B0aW9ucy5oOiAgQWRkZWQgLWZlbWl0LWNsYXNzLWZpbGUsIC1mZW1pdC1jbGFzcy1maWxlcy4KCSogbGFuZy5jIChmbGFnX2VtaXRfY2xhc3NfZmlsZXMpLCBqYXZhLXRyZWUuaDogIE5ldyBmbGFnLgoJKGxhbmdfZl9vcHRpb25zKTogIEFkZGVkICJlbWl0LWNsYXNzLWZpbGUocykiLgoKCSogZXhwci5jIChidWlsZF9qYXZhX2FycmF5YWNjZXNzKTogIEdlbmVyYXRlIG1vcmUgZWZmaWNpZW50IGFycmF5Cglib3VuZHMgY2hlY2tpbmcsIGJ5IHVzaW5nIHVuc2lnbmVkIGNvbXBhcmUuCgoJKiBleHByLmMgKGV4cGFuZF9pbnZva2UpOiAgUmUtYXJyYW5nZSBlcnJvciBjaGVja3MgdG8gbWFrZSBtb3JlIHJvYnVzdC4KCjE5OTgtMDYtMTAgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UuaDogTmV3IGNvbW1lbnQgb24gdGhlIGhhbmRsaW5nIG9mIHVucmVzb2x2ZWQgdHlwZQoJaWRlbnRpZmllcnMuIEpERVBzIGFyZSBub3cgcGFydCBvZiB0aGUgamRlcF9jb2RlIGVudW0uCgkodHlwZWRlZiBzdHJ1Y3QgamRlcCk6IE5vdyB1c2UgZW51bSBqZGVwX2NvZGUgb3IgaW50LCBkZXBlbmRpbmcgb24KCWF2YWlsYWJpbGl0eS4gQm90aCBhcmUgbmFycm93ZWQgZG93biB0byBhbiA4IGJpdHMgYml0ZmllbGQuCgkoQ0FMTF9FWFBSX1BSSU1BUlkpOiBGaXhlZCBjb21tZW50LgoKMTk5OC0wNi0xMCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogTWFrZS1sYW5nLmluIChqYXZhKTogQWRkZWQgZ2phdmFjIGFuZCBqdmdlbm1haW4uCgkoamF2YS5zdGFydC5lbmNhcCk6IERlcGVuZCBvbiBnamF2YWMuCgkoamF2YS5yZXN0LmVuY2FwKTogRGVwZW5kIG9uIGp2Z2VubWFpbi4KCgkqIE1ha2UtbGFuZy5pbiAoSkFWQV9JTlNUQUxMX05BTUUpOiBOYW1lIGlzIGdqYXZhYywgbm90IGMrKy4KCShKQVZBX0NST1NTX05BTUUpOiBMaWtld2lzZS4KCShqYXZhLmFsbC5idWlsZCk6IERlcGVuZCBvbiBqdmdlbm1haW4gYW5kIGdqYXZhYy4KCShqYXZhLmFsbC5jcm9zcyk6IERlcGVuZCBvbiBqdmdlbm1haW4gYW5kIGdqYXZhYy1jcm9zcy4KCShqdmdlbm1haW4kKGV4ZWV4dCkpOiBOZXcgdGFyZ2V0LgoJKGphdmEuaW5zdGFsbC1jb21tb24pOiBXcm90ZS4KCSogY29uZmlnLWxhbmcuaW4gKGNvbXBpbGVycywgc3RhZ2VzdHVmZik6IEFkZGVkIGdqYXZhYyBhbmQKCWp2Z2VubWFpbi4KCjE5OTgtMDYtMTAgIERhdmUgQnJvbGxleSAgPGJyb2xsZXlAY3lnbnVzLmNvbT4KCgkqIGxhbmcuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogTmV3IGFyZ2MvYXJndiBpbnRlcmZhY2UuCgoxOTk4LTA2LTA5ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIENoYW5nZUxvZzogRml4ZWQgZW50cmllcyBub3QgY29tcGxpYW50IHdpdGggdGhlIEdudSBDb2RpbmcgU3RhbmRhcmQuCgkqIGRlY2wuYyAoYnVpbGRfZGVjbF9ub19sYXlvdXQpOiBOZXcgZnVuY3Rpb24uCgkqIGV4cHIuYyAoamF2YV9sYW5nX2V4cGFuZF9leHByKTogTGF5b3V0IGRlY2xhcmF0aW9ucyBmb3VuZCBpbgoJYmxvY2tzIGJlZm9yZSB0aGV5J3JlIHB1c2hlZC4KCSogamNmLXBhcnNlLmMgKGxvYWRfY2xhc3MpOiBTYXZlIGN1cnJlbnQgbGluZSB3aGVuIHBhcnNpbmcgY2xhc3MKCWZpbGUuCgkocGFyc2Vfc291cmNlX2ZpbGUpOiBSZWdpc3RlciBjbGFzcyBiZWZvcmUgZXhwYW5kaW5nIHRoZWlyCgltZXRob2RzLgoJKiBsYW5nLmMgKHB1dF9kZWNsX25vZGUpOiBQcm9kdWNlIGBudWxsJyB3aGVuIGB2b2lkIConIGlzCglwcm9jZXNzZWQuCgkqIGxleC5jIChzdGF0aWMgdHJlZSB3Zmxfb3ApOiBOZXcgc3RhdGljIGdsb2JhbCwgZm9yIGVycm9yIHJlcG9ydAoJb24gY2FzdHMuCgkoamF2YV9pbml0X2xleCk6IHdmbF9vcGVyYXRvciBhbmQgd2ZsX29wIGluaXRpYWxpemVkCgloZXJlLiBGaWxlbmFtZSBjYWNoaW5nIGFkZGVkIGZvciB3Zmxfb3AuIFJldHVybiB3Zmxfb3Agd2hlbiBgKCcgaXMKCXBhcnNlZC4KCSogcGFyc2UuaCAoYnVpbGRfdW5hcnlvcCwgYnVpbGRfaW5jZGVjLCBwYXRjaF91bmFyeW9wLCBidWlsZF9jYXN0LAoJcGF0Y2hfY2FzdCwgdmFsaWRfcmVmX2Fzc2lnbmNvbnZfY2FzdF9wLCBjYW5fY2FzdF90b19wLAoJYnVpbGRfdW5yZXNvbHZlZF9hcnJheV90eXBlKTogTmV3IHN0YXRpYyBmdW5jdGlvbiBkZWZpbml0aW9ucy4KCShidWlsZF9kZWNsX25vX2xheW91dCk6IE5ldyBleHRlcm4gZnVuY3Rpb24gZGVjbGFyZWQuCgkoT0JTT0xFVEVfTU9ESUZJRVJfV0FSTklORyk6IFJlcG9ydCBlcnJvciBvbmx5IGlmIHRoZSBXRkwgb2YgdGhlCglmYXVsdHkgbW9kaWZpZXIgZXhpc3RzLgoJKFRZUEVfSU5URVJGQUNFX1AsIFRZUEVfQ0xBU1NfUCk6IE5ldyBtYWNyb3MuCgkoRVJST1JfQ0FTVF9ORUVERURfVE9fSU5URUdSQUwpOiBFcnJvciBtZXNzYWdlIHR1bmVkLgoJKFVOQVJZX1BMVVNfRVhQUik6IE5ldyBmYWtlIG9wZXJhdG9yLgoJKHN0cnVjdCBwYXJzZXJfY3R4dCk6IE5ldyBmaWVsZCBvc2JfbnVtYmVyLgoJKiBwYXJzZS55IChzdGF0aWMgdHJlZSB3Zmxfb3BlcmF0b3IpOiBOZXcgc3RhdGljIFdGTCBmb3Igb3BlcmF0b3IKCWJvdW5kIGVycm9yIG1lc3NhZ2VzLgoJKERFQ1JfVEssIElOQ1JfVEspOiBNb3ZlZC4KCShPUF9USyk6IFRhZ2dlZCA8b3BlcmF0b3I+LgoJKGFycmF5X3R5cGU6KTogTm93IGNhbGwgYnVpbGRfdW5yZXNvbHZlZF9hcnJheV90eXBlLgoJKGRpbV9leHByOik6IENvdW50IHRoZSBudW1iZXIgb2YgJ1snIHNlZW4uCgkocG9zdF9pbmNyZW1lbnRfZXhwcmVzc2lvbiwgcG9zdF9kZWNyZW1lbnRfZXhwcmVzc2lvbiwKCXByZV9pbmNyZW1lbnRfZXhwcmVzc2lvbiwgcHJlX2RlY3JlbWVudF9leHByZXNzaW9uLAoJdW5hcnlfZXhwcmVzc2lvbl9ub3RfcGx1c19taW51cywgdW5hcnlfZXhwcmVzc2lvbjopOiBBY3Rpb25zIGFyZQoJbm93IGJ1aWxkaW5nIHRoZSBjb3JyZXNwb25kaW5nIHVuYXJ5IGV4cHJlc3Npb25zLgoJKGNhc3RfZXhwcmVzc2lvbjopOiBBY3Rpb25zIGFyZSBub3cgYnVpbGRpbmcgY2FzdCBleHByZXNzaW9ucy4KCShidWlsZF91bnJlc29sdmVkX2FycmF5X3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkoY3JlYXRlX2ludGVyZmFjZSk6IFJlc2V0IHRoZSBudW1iZXIgb2YgZGVjbGFyZWQgaW50ZXJmYWNlcy4KCShjcmVhdGVfY2xhc3MpOiBMaWtld2lzZS4KCShtZXRob2RfaGVhZGVyKTogTWV0aG9kcyBkZWNsYXJlZCB3aXRoaW4gdGhlIHNjb3BlIG9mIGFuIGludGVyZmFjZQoJYXJlIG5vdyBpbXBsaWNpdGx5IHNldCBwdWJsaWMgYW5kIGFic3RyYWN0LgoJKGphdmFfY29tcGxldGVfY2xhc3MpOiBWYXJpYWJsZSdzIGFuZCBwYXJhbWV0ZXIncyB0eXBlIGFyZSBwYXRjaGVkCgl3aXRoIGEgcHJvbW90ZWQgdHlwZS4KCShkZWNsYXJlX2xvY2FsX3ZhcmlhYmxlcyk6IFJlc29sdmVkIG5vbiBidWlsdGluIHR5cGVzIGFyZSBwcm9tb3RlZAoJYmVmb3JlIGJlaW5nIHVzZWQgdG8gYnVpbGQgYSB2YXJpYWJsZSBkZWNsLiBSZW1vdmVkIHR5cGUgcGF0Y2gKCXBvc3RlZCBvbiB2YXJpYWJsZSBpbml0aWFsaXphdGlvbiBzdGF0ZW1lbnQuCgkoc291cmNlX3N0YXJ0X2phdmFfbWV0aG9kKTogVXNlIGJ1aWxkX2RlY2xfbm9fbGF5b3V0IHRvIGJ1aWxkIHRoZQoJZGVjbCBvZiBhIHBhcmFtZXRlciBvZiBpbmNvbXBsZXRlIHR5cGUuCgkoamF2YV9yZWdpc3Rlcl9wYXJzZWRfY2xhc3MpOiBQcm9jZXNzIGludGVyZmFjZXMgdG9vLiBDYWxsCglyZXN0X29mX2RlY2xfY29tcGlsYXRpb24gb24gZWFjaCBwcm9jZXNzZWQgY2xhc3MgZGVjbGFyYXRpb25zLgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZHMpOiBEb24ndCBhdHRlbXB0IHRvIGV4cGFuZCB0aGluZ3MgaW4KCWludGVyZmFjZXMuCgkoamF2YV9jb21wbGV0ZV90cmVlKTogUHJvY2VzcyBDT05WRVJUX0VYUFIsIGV2ZW4gdGhvdWdoIGl0IGFsd2F5cwoJaGFzIGEgdHlwZS4gUHJvcGFnYXRlIGVycm9yX21hcmtfbm9kZSB0byBub2RlJ3MgdHlwZSB0b28uIFByb21vdGUKCW1ldGhvZCdzIGNhbGwgYXJndW1lbnQgdHlwZSBhbmQgcmV0dXJuIGVycm9yX21hcmtfbm9kZSBpZgoJYXJndW1lbnQncyBjb21wbGV0aW9uIGRpZG4ndCB3b3JrLiBNT0RJRllfRVhQUiBjYW4gaGF2ZSBhIFdGTCBhcyBhCglSSFMuIEZpeGVkIGJ1ZyBpbiB0aGUgaGFuZGxpbmcgb2YgYm9ndXMgUkhTIG9mIGEgZml4ZWQgdHlwZS4gTm93CgloYW5kbGUgdW5hcnkgb3BlcmF0b3Igbm9kZXMuCgkoYnVpbGRfYXNzaWdubWVudCk6IEFkZGVkIGNvbW1lbnQuCgkocHJpbnRfaW50X25vZGUpOiBOZXcgZnVuY3Rpb24uCgkocGF0Y2hfYXNzaWdubWVudCk6IE5ldyBzZWNvbmQgYXJndW1lbnQuIE5ldyBlcnJvciBoYW5kbGluZy4gVXNlCglwcmludF9pbnRfbm9kZS4gSGFuZGxlIHJlZmVyZW5jZXMuIFVzZSBjYW5fY2FzdF90b19wIHRvIGlzc3VlCglkaWZmZXJlbnQgZXJyb3IgbWVzc2FnZSBhY2NvcmRpbmcgdG8gdGhlIGNvbnRleHQgYW5kIGNoZWNrIHVwb24KCXRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgUkhTLgoJKGNhbl9jYXN0X3RvX3AsIHZhbGlkX3JlZl9hc3NpZ25jb252X2Nhc3RfcCk6IE5ldyBmdW5jdGlvbnMuCgkob3BlcmF0b3Jfc3RyaW5nKTogSGFuZGxlIG1vcmUgb3BlcmF0b3JzLgoJKHBhdGNoX2Jpbm9wKTogTm8gbG9uZ2VyIHVzZSBhIGZ1bmN0aW9uIHN0YXRpYwoJd2ZsX29wZXJhdG9yLiBJbXByb3ZlZCBlcnJvciBtZXNzYWdlIG9uIHNoaWZ0IGRpc3RhbmNlLgoJKGJ1aWxkX3VuYXJ5b3AsIGJ1aWxkX2luY2RlYywgYnVpbGRfY2FzdCwgcGF0Y2hfdW5hcnlvcCwKCXBhdGNoX2Nhc3QpOiBOZXcgZnVuY3Rpb25zLgoKMTk5OC0wNi0wNSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBqdnNwZWMuYzogIE5ldyBmaWxlLgoJKiBNYWtlLWxhbmcuaW46ICBOZXcgcnVsZXMgdG8gYnVpbGQgZ2phdmFjIGZyb20ganZzcGVjLmMgYW5kIC4uL2djYy5jLgoKCSogamF2YS10cmVlLmggKGlkZW50aWZpZXJfc3Vic3QpOiAgQWRkIGRlY2xhcmF0aW9uLgoKMTk5OC0wNi0wNCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSoganZnZW5tYWluLmMgKG1haW4pOiBHZW5lcmF0ZSBjYWxsIHRvIEp2UnVuTWFpbi4KCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3NfZGF0YSk6IFB1c2ggdmFsdWUgZm9yICJzeW5jX2luZm8iIGZpZWxkLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogUHVzaCAic3luY19pbmZvIiBmaWVsZC4KCjE5OTgtMDYtMDMgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2phdmFfYXJyYXlfdHlwZSk6ICBTZXQgVFlQRV9OQU1FIHRvIGFjdHVhbAoJSmF2YSAoc291cmNlKSBuYW1lLCBub3Qgc2lnbmF0dXJlLgoJU2V0IFRZUEVfQUxJR04gdG8gKGF0IGxlYXN0KSB0aGF0IG9mIGVsZW1lbnRfdHlwZS4KCjE5OTgtMDYtMDIgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogY2xhc3MuYzogIE1vdmVkIGNsYXNzbmFtZS1tYW5nbGluZy1yZWthdGVkIGNvZGUgdG8gLi4uCgkqIG1hbmdsZS5jOiAgLi4uIHRoaXMgbmV3IGZpbGUuCgkqIGp2Z2VubWFpbi5jOiAgTmV3IHByb2dyYW0gKG5lZWRzIG1hbmdsZS5jKSB0byBnZW5lcmF0ZSBtYWluIHByb2dyYW0uCgkqIE1ha2VmaWxlLmluOiAgVXBkYXRlIGZvciBhYm92ZSBjaGFuZ2VzLgoKMTk5OC0wNi0wMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBleHByLmMgKHRydXRodmFsdWVfY29udmVyc2lvbik6IENvbnZlcnQgaW50ZWdlciBhbmQgZmxvYXRpbmcKCXBvaW50IHZhbHVlIHRvIHRoZWlyIHRydXRoIHZhbHVlLgoJKiBsZXguYyAoamF2YV9sZXgpOiBIYW5kbGUgdGhlIGBudWxsJyBsaXRlcmFsLgoJKiBwYXJzZS5oIChKUkVGRVJFTkNFX1RZUEVfUCwgREVDTF9QKTogTmV3IG1hY3Jvcy4KCShFUlJPUl9DQU5UX0NPTlZFUlRfVE9fQk9PTEVBTiwgRVJST1JfQ0FOVF9DT05WRVJUX1RPX05VTUVSSUMsCglFUlJPUl9DQVNUX05FRURFRF9UT19JTlRFR1JBTCwgRVJST1JfVkFSSUFCTEVfTk9UX0lOSVRJQUxJWkVEKToKCU5ldyBtYWNyb3MuCgoJKiBwYXJzZS55OiBSZW9yZ2FuaXphdGlvbi9kb2N1bWVudGF0aW9uIG9uIHRva2VuIGRlY2xhcmF0aW9uLgoJKGJpbm9wX2xvb2t1cFtdKTogTmV3IGFkZGVkIG5ldyB0cmVlIGNvZGVzLgoJKHJlbGF0aW9uYWxfZXhwcmVzc2lvbik6IEJ1aWxkIGNvcnJlc3BvbmRpbmcgYmluYXJ5IG9wZXJhdG9ycy4KCShlcXVhbGl0eV9leHByZXNzaW9uLCBjb25kaXRpb25hbF9hbmRfZXhwcmVzc2lvbiwKCWNvbmRpdGlvbmFsX29yX2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShqYXZhX2NvbXBsZXRlX2NsYXNzKTogRml4IGNyYXNoIGluIGRlYnVnIG1lc3NhZ2UuCgkoamF2YV9jb21wbGV0ZV90cmVlKTogQ2hlY2sgaW5pdGlhbGl6YXRpb24gb2YgbWV0aG9kIGNhbGwKCWFyZ3VtZW50cy4gRnVydGhlciBib2d1cyBub2RlIGV2YWx1YXRpb24gdG8gZGV0ZWN0IG1vcmUgZXJyb3IKCWR1cmluZyBhc3NpZ25tZW50cy4gSGFuZGxlcyBtb3JlIGJpbmFyeSBvcGVyYXRvcnMuCgkocGF0Y2hfYXNzaWdubWVudCk6IFVzZSBERUNMX1AuCgkoYnVpbGRfYmlub3ApOiBGaXggY3Jhc2ggd2hlbiB1c2luZyBVUlNISUZUX0VYUFIsIGEgSmF2YSBvbmx5IHRyZWUKCWNvZGUuCgkob3BlcmF0b3Jfc3RyaW5nKTogSGFuZGxlIG1vcmUgY2FzZS4gQ29tcGFjdGVkIHNvdXJjZS4KCShwYXRjaF9iaW5vcCk6IENoYW5nZWQgZnVuY3Rpb24gY29tbWVudC4gQ2hlY2tpbmcgZm9yCgl1bmluaXRpYWxpemVkIGZpcnN0IG9wZXJhbmQgdGFrZXMgdGhlIGNvbXBvdW5kIGFzc2lnbm1lbnQgaW50bwoJYWNjb3VudCBhbmQgdXNlcyBERUNMX1AuIENoZWNraW5nIGZvciB1bmluaXRpYWxpemVkIHNlY29uZCBvcGVyYW5kCglkZWxheWVkIHRvIHJvdXRpbmUncyBlbmQuIFVzZSBtYWNyb3MgdG8gaXNzdWUgdHlwZSBib3VuZCBlcnJvcgoJbWVzc2FnZXMgYW5kIGlzc3VlIG1lc3NhZ2VzIG9uIGJvdGggb3BlcmFuZHMgaWYgdGhlaXIgdHlwZXMgYXJlCglkaWZmZXJlbnQuIEZvcmNlIGZpeGVkIHR5cGUgaW50byBub2RlLiBIYW5kbGUgYWxsIGJpbmFyeQoJb3BlcmF0b3JzLgoKMTk5OC0wNS0yNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqYXZhLXRyZWUuaCAoQ09NUE9VTkRfQVNTSUdOX1AsIElOSVRJQUxJWkVEX1ApOiBOZXcgbWFjcm9zLgoJKiBsZXguYyAoamF2YV9sZXgpOiBVc2UgQlVJTERfT1BFUkFUT1IgYW5kIEJVSUxEX09QRVJBVE9SMiB0bwoJYnVpbGQgb3BlcmF0b3Igbm9kZSBhbmQgcmV0dXJuIHRva2Vucy4KCSogbGV4LmggKEJVSUxEX09QRVJBVE9SLCBCVUlMRF9PUEVSQVRPUjIpOiBOZXcgbWFjcm9zLgoJKiBwYXJzZS5oIChqYXZhX2NvbXBsZXRlX3RyZWUpOiBDaGFuZ2VkIHJldHVybmVkIHR5cGUgaW4gcHJvdG90eXBlLgoJKGJ1aWxkX21ldGhvZF9pbnZvY2F0aW9uLCBidWlsZF9hc3NpZ25tZW50LCBwYXRjaF9hc3NpZ25tZW50LAoJcGF0Y2hfYmlub3ApOiBOZXcgc3RhdGljIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KCShKRkxPQVRfVFlQRV9QLCBKTlVNRVJJQ19UWVBFX1AsIEpQUklNSVRJVkVfVFlQRV9QLCBKU1RSSU5HX1AsCglCVUlMRF9FWFBSX1dGTCk6IE5ldyBtYWNyb3MuCgkqIHBhcnNlLnkgKGVudW0gdHJlZV9jb2RlIGJpbm9wX2xvb2t1cFtdKTogTmV3IHN0YXRpYyBmb3IgdG9rZW4gdG8KCVRSRUVfQ09ERSBsb29rdXAuCgkoJXVuaW9uKTogUGFyc2VyIHVuaW9uIGhhcyBuZXcgc3ViLXN0cnVjdHVyZSBgb3BlcmF0b3InLgoJKEFTU0lHTl9USywgTVVMVF9BU1NJR05fVEssIERJVl9BU1NJR05fVEssIFJFTV9BU1NJR05fVEssCglQTFVTX0FTU0lHTl9USywgTUlOVVNfQVNTSUdOX1RLLCBMU19BU1NJR05fVEssIFNSU19BU1NJR05fVEssCglaUlNfQVNTSUdOX1RLLCBBTkRfQVNTSUdOX1RLLCBYT1JfQVNTSUdOX1RLLCBPUl9BU1NJR05fVEssCglBU1NJR05fQU5ZX1RLKTogVG9rZW5zIHRhZ2dlZCBgb3BlcmF0b3InLgoJKEVRX1RLLCBHVEVfVEssIFpSU19USywgU1JTX1RLLCBHVF9USywgTFRFX1RLLCBMU19USywgQk9PTF9BTkRfVEssCglBTkRfVEssIEJPT0xfT1JfVEssIE9SX1RLLCBJTkNSX1RLLCBQTFVTX1RLLCBERUNSX1RLLCBNSU5VU19USywKCU1VTFRfVEssIERJVl9USywgWE9SX1RLLCBSRU1fVEssIE5FUV9USywgTkVHX1RLLCBSRUxfUU1fVEssCglSRUxfQ0xfVEssIE5PVF9USywgTFRfVEspOiBUb2tlbnMgdGFnZ2VkIGBvcGVyYXRvcicuCgkoYXNzaWdubWVudF9vcGVyYXRvcjopOiBSdWxlIHRhZ2dlZCBgb3BlcmF0b3InLgoJKGV4cHJlc3Npb25fc3RhdGVtZW50Oik6IFJlLWluc3RhbGxlZCBkZWZhdWx0IHJ1bGUuCgkobWV0aG9kX2ludm9jYXRpb246KTogU3ViIHJ1bGVzIGNhbGwgYnVpbGRfbWV0aG9kX2ludm9jYXRpb24uCgkocG9zdGZpeF9leHByZXNzaW9uOik6IERvbid0IGF0dGVtcHQgdG8gcmVzb2x2ZSBuYW1lIGhlcmUuIEp1c3QKCXJldHVybiBhbiBJRC4KCShtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uOik6IFN1Yi1ydWxlcyBidWlsZCBjb3JyZXNwb25kaW5nIGJpbm9wCglleHByZXNzaW9uIG5vZGUuCgkoYWRkaXRpdmVfZXhwcmVzc2lvbjosIHNoaWZ0X2V4cHJlc3Npb246LCBhbmRfZXhwcmVzc2lvbjosCglleGNsdXNpdmVfb3JfZXhwcmVzc2lvbjosIGluY2x1c2l2ZV9vcl9leHByZXNzaW9uOik6IExpa2V3aXNlLgoJKGFzc2lnbm1lbnQ6KTogU3ViIHJ1bGUgaW52b2tlIGJ1aWxkX2Fzc2lnbm1lbnQuCgkoYXNzaWdubWVudF9vcGVyYXRvcjopOiBEZWZhdWx0IHJ1bGVzIG9uIHN1YiBydWxlcy4KCShmb3JjZV9lcnJvcik6IEFkZGVkIGRvY3VtZW50YXRpb24gb24gdGhpcyB2YXJpYWJsZS4KCShkZWNsYXJlX2xvY2FsX3ZhcmlhYmxlcyk6IEJ1aWxkIGluaXRpYWxpemF0aW9uIGNhbGxpbmcKCWJ1aWxkX2Fzc2lnbm1lbnQuCgkoZXhwYW5kX3N0YXJ0X2phdmFfbWV0aG9kKTogUmVtb3ZlZCB1bnVzZWQgcnR4IGRlY2xhcmF0aW9uLiBNYXJrCglhcmd1bWVudHMgYXMgYWxyZWFkeSBpbml0aWFsaXplZC4KCShqYXZhX21ldGhvZF9hZGRfc3RtdCk6IFR5cGUgb2YgYnVpbHQgQ09NUE9VTkRfRVhQUiBzZXQgdG8gTlVMTC4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzKTogRG9uJ3QgcHJvY2VzcyBuZXh0IG1ldGhvZCBpZgoJY29tcGxldGlvbiBvZiB0aGUgcHJldmlvdXMgb25lIHRyaWdnZXJlZCBlcnJvcnMuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kKTogQ2FsbCBzb3VyY2VfZW5kX2phdmFfbWV0aG9kIGlmIG5vCgllcnJvciB3ZXJlIGZvdW5kIGR1cmluZyBjb21wbGV0aW9uLgoJKHJlc29sdmVfZXhwcmVzc2lvbl9uYW1lKTogVXNlIElERU5USUZJRVJfTE9DQUxfVkFMVUUgdG8gcmV0cmlldmUKCWxvY2FscyBkZWNsYXJhdGlsb24uIEhhbmRsZSBuYW1lcyBmb3VuZCB3aXRoaW4gYSBjbGFzcy4gUmV0dXJuCgllcnJvcl9tYXJrX25vZGUgd2hlbiB0aGluZ3MgYXJlbid0IGZvdW5kLgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uX3N0bXQpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlIG9uIGZhaWx1cmVzLgoJKHBhdGNoX2ludm9rZSk6IFJlbW92ZWQgdW51c2VkIGxvY2FsLiBSZXR1cm4gdGhlIGNvcnJlY3Qgbm9kZS4KCShqYXZhX2NvbXBsZXRlX3RyZWUpOiBOb3cgcmV0dXJucyBhIHZhbHVlLiBUaGUgQkxPQ0sgc2VjdGlvbiBiaW5kcwoJbG9jYWwgaWRlbnRpZmllcnMgYW5kIHRoZSB0eXBlIG9mIGEgQkxPQ0sgaXMgbm93IHZvaWQuIEFzc2lnbiB0aGUKCXJlc3VsdCBvZiBvcGVyYW5kIGNvbXBsZXRpb24gb24gQ09NUE9VTkRfRVhQUi4gQXNzaWduIHRoZQoJZW5jYXBzdWxhdGVkIG5vZGUgb2YgYSBXRkwgdG8gdGhlIHJlc3VsdCBvZiBpdHMgY29tcGxldGlvbiwgZXhjZXB0Cgl3aGVuIHRoZSBub2RlIGlzIGFuIGlkZW50aWZpZXIuIE5vdyBoYW5kbGUgTU9ESUZZX0VYUFIgYW5kIHNldmVyYWwKCWJpbmFyeSBvcGVyYXRvcnMuIFJldHVybiBlcnJvcl9tYXJrX25vZGUgb24gZXJyb3JzLgoJKGJ1aWxkX21ldGhvZF9pbnZvY2F0aW9uLCBidWlsZF9hc3NpZ25tZW50LCBwYXRjaF9hc3NpZ25tZW50LAoJYnVpbGRfYmlub3AsIG9wZXJhdG9yX3N0cmluZywgcGF0Y2hfYmlub3ApOiBOZXcgZnVuY3Rpb25zLgoJKiB0eXBlY2suYyAoYmluYXJ5X251bWVyaWNfcHJvbW90aW9uKTogTmV3IGZ1bmN0aW9uLgoKMTk5OC0wNS0yMSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChpZGVudGlmaWVyX3N1YnN0KTogIE5ldyBjb252ZW5pZW5jZSB3cmFwcGVyIGZvciBpZGVudF9zdWJzdC4KCVJlcGxhY2UgbW9zdCB1c2VzIG9mIGlkZW50X3N1YnN0IGJ5IGlkZW50aWZpZXJfc3Vic3QuCgoJKiBjbGFzcy5jIChwdXNoX2NsYXNzX3N0YXRpY19kdW1teV9maWVsZCk6ICBSZW1vdmVkIGZ1bmN0aW9uLgoJKGJ1aWxkX2NsYXNzX3JlZik6ICBGaW5kIENsYXNzIG9iamVjdCBkZWNsIGJ5IGxvb2tpbmcgdXAgIkNOQU1FLmNsYXNzIiwKCWluc3RlYWQgb2YgbG9va2luZyBnb3QgImNsYXNzIiBzdGF0aWMgZmllbGQuICBDcmVhdGUgdGhhdCBkZWNsIGhlcmUuCgkoY2xhc3NfaWRlbnRpZmllcl9ub2RlKTogIFJlbW92ZWQ7ICBubyBsb25nZXIgbmVlZGVkLgoJKGluaXRfY2xhc3NfcHJvY2Vzc2luZyk6ICBEb24ndCBpbml0IGNsYXNzX2lkZW50aWZpZXJfbm9kZS4KCSogamNmLXBhcnNlLmMgKGpjZl9wYXJzZSk6ICBEb24ndCBjYWxsIHB1c2hfY2xhc3Nfc3RhdGljX2R1bW15X2ZpZWxkLgoJRG8gbnJldmVyc2UgMCB0aW1lcyAoaW5zdGVhZCBvZiB0d2ljZSkgZm9yIE9iamVjdCBhbmQgQ2xhc3MuCgkqIHBhcnNlLnkgKGphdmFfbGF5b3V0X3BhcnNlZF9jbGFzcyk6IE5vIHB1c2hfY2xhc3Nfc3RhdGljX2R1bW15X2ZpZWxkLgoKMTk5OC0wNS0yMCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBqY2YtcGFyc2UuYyAocGFyc2VfY2xhc3MtZmlsZSk6ICBTZXQgbGlubyB0byBzbWFsbGVzdCBsaW5lIG51bWJlciwKCXdoaWxlIGluaXRpYWxpemluZyBsaW5lbnVtYmVyX2NvdW50IGFuZCBsaW5lbnVtYmVyX3RhYmxlLgoJRG8gaXQgYmVmb3JlIGluaXRfZnVuY3Rpb25fc3RhcnQgKHdoaWNoIGNhbGxzIGVtaXRfbGluZV9ub3RlKS4KCSogZXhwci5jIChleHBhbmRfYnl0ZV9jb2RlKTogIERvbid0IG5lZWQgdG8gY2xlYXIgbGluZW5vIGhlcmUuCgoxOTk4LTA1LTE4ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChhcHBlbmRfZ3BwX21hbmdsZWRfdHlwZSk6IElmIGBxdWFsaWZpY2F0aW9ucycgaXMgPj05LAoJdGhlbiBtYW5nbGUgbnVtYmVyIGFzIF9OXy4KCgkqIGNsYXNzLmMgKG1hbmdsZV9jbGFzc19maWVsZCk6IE5ldyBmdW5jdGlvbi4KCShidWlsZF9jbGFzc19yZWYpOiBTZXQgYXNzZW1ibGVyIG5hbWUgb2YgY2xhc3MgcmVmZXJlbmNlIHVzaW5nCgltYW5nbGVfY2xhc3NfZmllbGQuCgkocHVzaF9jbGFzc19zdGF0aWNfZHVtbXlfZmllbGQpOiBMaWtld2lzZS4KCjE5OTgtMDUtMTcgIE1pY2hhZWwgVGllbWFubiA8dGllbWFubkBjeWdudXMuY29tPgoKCSogcGFyc2UueSAoc291cmNlX3N0YXJ0X2phdmFfbWV0aG9kKTogVXNlIFRSRUVfU0VUX0NPREUgaW5zdGVhZAoJb2YgYXNzaWduaW5nIHRvIFRSRUVfQ09ERS4gIFRoZSBsYXR0ZXIgbWV0aG9kIGV4cGxvaXRzIGEgZmVhdHVyZQoJb2YgR0NDIHRoYXQgaXMgbm90IEFOU0kgY29tcGxpYW50LgoKMTk5OC0wNS0xMiAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHB1c2hkZWNsX2ZvcmNlX2hlYWQpOiBOZXcgZnVuY3Rpb24uCgkocHVzaGxldmVsKTogUmVtb3ZlZCBjb25kaXRpb25hbCBwcmludGYuCgkoY29tcGxldGVfc3RhcnRfamF2YV9tZXRob2QpOiBEb24ndCBlbnRlciBsb2NhbCB2YXJpYWJsZSBzY29wZSBpZgoJZnVuY3Rpb24gaXMgY29tcGlsZWQgZnJvbSBzb3VyY2UgY29kZS4KCSogZXhwci5jOiBwYXJzZS5oIG5vdyBpbmNsdWRlZAoJKGphdmFfbGFuZ19leHBhbmRfZXhwcik6IE5ldyBmdW5jdGlvbi4KCSogamNmLWlvLmMgKGZpbmRfY2xhc3MpOiBVc2UgU09VUkNFX0ZST05URU5EX0RFQlVHIGluc3RlYWQgb2YKCXByaW50Zi4gVGVybWluYXRlIGJ1ZmZlciB3aGVuIGRvaW5nIGRpcmVjdG9yaWVzLgoJKiBqY2YtcGFyc2UuYyAocGFyc2Vfc291cmNlX2ZpbGUpOiBDYWxsIGxhbmdfaW5pdF9zb3VyY2UgYmVmb3JlCglwYXJzaW5nIGFuZCBiZWZvcmUgY29kZSBnZW5lcmF0aW9uLgoJKiBqY2YuaCAoU09VUkNFX0ZST05URU5EX0RFQlVHKTogTWFjcm8gcmVkZWZpbmVkIHRvIGNvbmRpdGlvbmFsbHkKCXVzZSBwcmludGYgaWYgdGhlIG1hY3JvIGlzIGRlZmluZWQuCgkqIGxhbmcuYyAobGFuZ19pbml0KTogSW5zdGFsbCBsYW5nX2V4cGFuZF9leHByIGhvb2sgb24KCWphdmFfbGFuZ19leHBhbmRfZXhwci4KCShqYXZhX2R1bW15X3ByaW50KTogTmV3IGZ1bmN0aW9uLgoJKGxhbmdfaW5pdF9zb3VyY2UpOiBOZXcgZnVuY3Rpb24uCgkqIGxleC5jIChqYXZhX2xleCk6IFJlbWVtYmVyIGxvY2F0aW9uIG9mIGFuIG9wZW5pbmcgYnJhY2UgYXQgdGhlCglzZWNvbmQgbmVzdGluZyBsZXZlbC4KCShqYXZhX2lzX2VvbCk6IFVuZ2V0IGNoYXJhY3RlciBzZWVuIGFmdGVyIGEgQ1IgaWYgaXQgaXMgRU9GLgoJKiBwYXJzZS5oOiBOb3cgaW5jbHVkZXMgbGV4LmgKCShTT1VSQ0VfRlJPTlRFTkRfREVCVUcpOiBNYWNybyByZWRlZmluZWQgdG8gY29uZGl0aW9uYWxseSB1c2UKCXByaW50ZiBpZiB0aGUgbWFjcm8gaXMgZGVmaW5lZC4KCShleHBhbmRfc3RhcnRfamF2YV9tZXRob2QsIGJ1aWxkX2V4cHJfYmxvY2ssIGVudGVyX2Jsb2NrLAoJZXhpdF9ibG9jaywgbG9va3VwX25hbWVfaW5fYmxvY2tzLCBtYXliZV9hYnNvcmJfc2NvcGluZ19ibG9ja3MpOgoJTmV3IHN0YXRpYyBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCgkocHVzaGRlY2xfZm9yY2VfaGVhZCk6IE5ldyBleHRlcm4gZnVuY3Rpb24gZGVjbGFyYXRpb24uCgkoSU5DT01QTEVURV9UWVBFX1ApOiBOZXcgbWFjcm8uCgkoSkRFUF9QQVJNLCBKREVQX1RZUEUpOiBOZXcgZW50cmllcyBpbiBKREVQcyBlbnVtLgoJKEJMT0NLX0NIQUlOX0RFQ0wsIEJMT0NLX0VYUFJfREVDTFMsIEJMT0NLX0VYUFJfQk9EWSwKCUJMT0NLX0VYUFJfT1JJR0lOKTogTmV3IG1hY3Jvcy4KCShERUNMX1NPVVJDRV9MSU5FX01FUkdFLCBERUNMX1NPVVJDRV9MSU5FX0ZJUlNULAoJREVDTF9TT1VSQ0VfTElORV9MQVNUKTogTmV3IG1hY3Jvcy4KCShzdHJ1Y3QgcGFyc2VyX2N0eHQpOiBSZW1vdmVkIGZpZWxkIGN1cnJlbnRfbWV0aG9kX2RlY2wsIHJlZHVuZGFudAoJd2l0aCB0aGUgZmllbGQgY3VycmVudF9mdW5jdGlvbl9kZWNsLiBBZGRlZCBmaWVsZHMKCWZpcnN0X2NjYl9pbmRlbnQxIGFuZCBwZW5kaW5nX2Jsb2NrLgoJKiBwYXJzZS55IChtZXRob2RfYm9keSwgbGl0ZXJhbCwgSU5UX0xJVF9USywgRlBfTElUX1RLLAoJQk9PTF9MSVRfVEssIENIQVJfTElUX1RLLCBTVFJJTkdfTElUX1RLLCBOVUxMX1RLLCBWT0lEX1RLKTogUnVsZXMKCXRhZ2dlZCA8bm9kZT4KCShTT1VSQ0VfRlJPTlRFTkRfREVCVUcpOiBVc2VkIGFzIG1hY3JvIGFjY2VwdGluZyB2YXJhcmdzLgoJKGNvbXBpbGF0aW9uX3VuaXQ6KTogQ29zbWV0aWMgb24gc3ViIHJ1bGUuCgkodHlwZV9kZWNsYXJhdGlvbjopOiBDb3NtZXRpYyBvbiBzdWIgcnVsZXMuIEFkZGVkIGFuIGVycm9yIHJ1bGUuCgkodmFyaWFibGVfaW5pdGlhbGl6ZXI6KTogSW5zdGFsbGVkIGRlZmF1bHQgcnVsZSBvbiBleHByZXNzaW9uOi4KCShtZXRob2RfZGVjbGFyYXRpb246KTogbWV0aG9kX2hlYWRlcjogc3RhcnRzIGEgbmV3CgltZXRob2QuIG1ldGhvZF9ib2R5OiBpbnN0YWxscyB0aGUgZnVuY3Rpb24gYm9keSwgYWJzb3JicyBibG9ja3MKCWVtaXR0ZWQgZm9yIHRlbXBvcmFyeSB2YXJpYWJsZSBzY29waW5ncywgcG9wcyBmdW5jdGlvbidzIGJvZHkgYmxvY2sKCWFuZCBtZXJnZXMgZnVuY3Rpb24ncyBsYXN0IHN0YXRlbWVudCBsaW5lbm8gaW4gREVDTF9TT1VSQ0VfTElORS4KCShtZXRob2RfYm9keTopOiBJbnN0YWxsZWQgZGVmYXVsdCBydWxlcy4KCShibG9jazopOiBDYWxsIGVudGVyX2Jsb2NrIHdoZW4gYW4gb3BlbmluZyBicmFjZSBpcyBzZWVuLiAgQWJzb3JiCglzY29waW5nIGJsb2NrcyBhbmQgY2FsbCBleGl0X2Jsb2NrIHdoZW4gYSBjbG9zaW5nIGJyYWNlIGlzIHNlZW4uCgkoYmxvY2tfc3RhdGVtZW50Oik6IENvc21ldGljIGNoYW5nZXMuCgkobWV0aG9kX2ludm9jYXRpb246KTogQ3JlYXRlIFdGTCBhcm91bmQgQ0FMTF9FWFBSIG5vZGUuCgkocGF0Y2hfc3RhZ2UpOiBBZGRlZCBjb21tZW50IGFyb3VuZCBkZWZpbml0aW9uLgoJKG1ldGhvZF9oZWFkZXIpOiBUcnkgdG8gdXNlIGZpcnN0X2NjYl9pbmRlbnQxIGFzIHRoZSBmaXJzdCBsaW5lIG9mCgl0aGUgbWV0aG9kLCBzbyBCUCBkZWJ1ZyBpbmZvIGFyZSBlbWl0dGVkIGF0IHRoZSBmaXJzdCBvcGVuaW5nCglicmFjZSBvZiB0aGUgZnVuY3Rpb24uIElmIHRoZSBmdW5jdGlvbiBoYXMgbm8gYm9keSwgdXNlIHRoZQoJbG9jYXRpb24gb2YgdGhlIGZ1bmN0aW9uJ3MgbmFtZS4gT3ZlcnJpZGUgY3VycmVudGx5IGRlZmluZWQgbWV0aG9kCgluYW1lIHdpdGggdGhlIG1hdGNoaW5nIFdGTCBzbyB3ZSBjYW4gcG9pbnQgcmVkZWZpbml0aW9uIGVycm9ycwoJdXNpbmcgdGhlIGxvY2F0aW9uIHdoZXJlIHRoZSBmdW5jdGlvbidzIG5hbWUgd2FzIGRlY2xhcmVkLgoJKGNoZWNrX2Fic3RyYWN0X21ldGhvZF9oZWFkZXIpOiBJbnRlcnByZXRzIERFQ0xfTkFNRSBhcyBhbgoJaWRlbnRpZmllciBvciBhcyBhIFdGTCwgYWNjb3JkaW5nbHkuCgkoamF2YV9jb21wbGV0ZV9jbGFzcyk6IE5ldyBjYXNlcyBmb3IgSkRFUF9UWVBFIGFuZCBKREVQX1BBUk0uCgkoY2hlY2tfbWV0aG9kX3JlZGVmaW5pdGlvbik6IFVzZSBERUNMX05BTUUgYXMgYSBXRkwuIEV4dHJhY3QKCWxvY2F0aW9uIGFuZCBuYW1lIGluZm9ybWF0aW9uIG91dCBvZiBpdCBhbmQgcmVpbnN0YWxsIERFQ0xfTkFNRSB0bwoJaXRzIG9yaWdpbmFsIGlkZW50aWZpZXIgbm9kZSB2YWx1ZS4KCShsb29rdXBfY2wpOiBVc2UgREVDTF9TT1VSQ0VfTElORV9GSVJTVCAoZmlyc3QgbGluZSBvZiB0aGUKCWZ1bmN0aW9uJ3Mgc291cmNlIGNvZGUpLgoJKHJlYWRfaW1wb3J0X2Rpcik6IFRlc3QgdGhlIHZhbHVlIHJldHVybmVkIGJ5IGZpbmRfY2xhc3MgYW5kIGlzc3VlCglhIGZhdGFsIGFjY29yZGluZ2x5LgoJKGRlY2xhcmVfbG9jYWxfdmFyaWFibGVzKTogUHVzaCBhIG5ldyBibG9jayBmb3IgdGhlIHNjb3BlIG9mIHRoZQoJbmV3IHZhcmlhYmxlKHMpIGlmIGNvZGUgaGFzIGJlZW4gYWxyZWFkeSBnZW5lcmF0ZWQgYXQgdGhhdCBuZXN0aW5nCglsZXZlbC4gUGlucG9pbnQgcmVkZWZpbml0aW9uIGVycm9ycyB1c2luZyB0aGUgdmFyaWFibGUgaWQKCVdGTHMuIEdlbmVyYXRlIGluaXRpYWxpemF0aW9uIGNvZGUgaWYgbmVjZXNzYXJ5LiBJZiB0aGUgdmFyaWFibGUKCXR5cGUgaXMgaW5jb21wbGV0ZSwgcmVnaXN0ZXIgYSBwYXRjaCBvbiBpdHMgZGVjbC4KCShzb3VyY2Vfc3RhcnRfamF2YV9tZXRob2QpOiBSZXdyaXR0ZW4uIERlZmluZSBhIG5ldyBibG9jayBmb3IgdGhlCglmdW5jdGlvbidzIHBhcmFtZXRlcnMuIEJ1aWxkIHBhcmFtZXRlciBkZWNsIG91dCBvZiBmdW5jdGlvbidzCglhcmd1bWVudHMgYW5kIHJlZ2lzdGVyIHRoZW0gZm9yIGEgcGF0Y2ggaWYgdGhlaXIgdHlwZXMgYXJlCglpbmNvbXBsZXRlLgoJKGV4cGFuZF9zdGFydF9qYXZhX21ldGhvZCk6IEluY2x1ZGVzIHRoZSBwYXJ0IG9mCglzb3VyY2Vfc3RhcnRfamF2YV9tZXRob2QgdGhhdCB3YXMgcHVzaGluZyB0aGUgcGFyYW1ldGVyIGRlY2xzIGFuZAoJY29tcGxldGluZyB0aGUgbWV0aG9kIHN0YXJ0IGNvZGUuCgkoc291cmNlX2VuZF9qYXZhX21ldGhvZCk6IFJlbW92ZWQgY2FsbCB0aGUgZXhwYW5kX2VuZF9iaW5kaW5ncyBhbmQKCXBvcGxldmVsIChhbHJlYWR5IHRha2VuIGNhcmUgb2YpLiBSZWluc3RhbGwgZnVuY3Rpb24ncyBhcmd1bWVudHMKCWFuZCBnZXQgZnVuY3Rpb24ncyBsYXN0IGxpbmUgb2YgY29kZSBiZWZvcmUgY2FsbGluZwoJZXhwYW5kX2Z1bmN0aW9uX2VuZC4KCShqYXZhX21ldGhvZF9hZGRfc3RtdCk6IE5ldyBjb21tZW50IGJlZm9yZSB0aGUgZnVuY3Rpb24ncwoJY29kZS4gQ29tcGxlbWVudCB0aGUgc2Vjb25kIG9wZXJhbmQgb2YgdGhlIGN1cnJlbnQgQ09NUE9VTkRfRVhQUgoJaWYgbmVjZXNzYXJ5LgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZHMpOiBEb24ndCBnZW5lcmF0ZSBkZWJ1ZyBpbmZvIG9uIGxpbmUKCXplcm8gd2hlbiBleHBhbmRpbmcgYSBnZW5lcmF0ZWQgY29uc3RydWN0b3IuCgkoamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kKTogU2V0IHN0YXJ0IGFuZCBlbmQgbGluZSBudW1iZXJzIGZvcgoJYSBhcnRpZmljaWFsbHkgZ2VuZXJhdGVkIGNvbnN0cnVjdG9yIHRvIG9uZSBhbmQgbWFudWFsbHkgY2FsbAoJZW50ZXJfYmxvY2sgYW5kIGV4aXRfYmxvY2sgd2hlbiBkZWZpbmluZyBpdC4gRm9yIGFsbCBtZXRob2RzOgoJZXhwYW5kIGZ1bmN0aW9uJ3Mgc3RhcnQgY2FsbGluZyB0aGUgbmV3IGV4cGFuZF9zdGFydF9qYXZhX21ldGhvZAoJYW5kIGludm9rZSBqYXZhX2NvbXBsZXRlX3RyZWUgb24gdGhlIGVmZmVjdGl2ZSBtZXRob2QncyBib2R5LCBpZgoJYW55LgoJKHJlc29sdmVfZXhwcmVzc2lvbl9uYW1lKTogTm93IHVzZSBsb29rdXBfbmFtZV9pbl9ibG9ja3MgdG8gc2VhcmNoCglsb2NhbCB2YXJpYWJsZSBkZWNscyBhbmQgcHJpbnQgb3V0IGFuIGVycm9yIHdoZW4gdmFyaWFibGVzIGFyZQoJdW5kZWZpbmVkLgoJKHBhdGNoX21ldGhvZF9pbnZvY2F0aW9uX3N0bXQpOiBJbnNlcnRlZCBjb21tZW50IGJlZm9yZSB0aGUKCWZ1bmN0aW9uJ3MgY29kZS4KCShsb29rdXBfbWV0aG9kX2ludm9rZSk6IENoYWluIG1ldGhvZCdzIGFyZ3VtZW50cyB1c2luZyBjaGFpbm9uCgl3aXRoIHRoZSBjdXJyZW50IGFyZyBsaXN0IGFzIGEgc2Vjb25kIGFyZ3VtZW50LiBJbnNlcnRlZCBtaXNzaW5nCglJREVOVElGSUVSX1BPSU5URVIgd2hlbiByZXBvcnRpbmcgYW4gZXJyb3Igb24gbWV0aG9kcyBub3QgZm91bmQuCgkocmVmaW5lX2FjY2Vzc2libGVfbWV0aG9kc19saXN0KTogRG9uJ3QgcmV0YWluIGNvbnN0cnVjdG9ycy4KCShwYXRjaF9hcmd1bWVudHMpOiBGdW5jdGlvbiByZW1vdmVkLgoJKGphdmFfY29tcGxldGVfdHJlZSk6IEluc2VydGVkIGNvbW1lbnQgYmVmb3JlIHRoZSBmdW5jdGlvbidzCgljb2RlLiBOZXcgY2FzZSBmb3IgQkxPQ0tzLiBNb3ZlZCB0aGUgV0ZMIGNhc2UgYSBiaXQKCWZ1cnRoZXIuIENvbXBsZXRlIGZ1bmN0aW9uJ3MgYXJndW1lbnRzLgoJKGJ1aWxkX2V4cHJfYmxvY2ssIGVudGVyX2Jsb2NrLCBleGl0X2Jsb2NrLCBsb29rdXBfbmFtZV9pbl9ibG9ja3MsCgltYXliZV9hYnNvcmJfc2NvcGluZ19ibG9ja3MpOiBOZXcgZnVuY3Rpb25zLgoKMTk5OC0wNC0yNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqY2YtaW8uYyAoZmluZF9jbGFzcyk6IFJlc2V0IGpjZi0+amF2YV9zb3VyY2UgYWZ0ZXIgSkNGX1pFUk8sIGlmCglwcmV2aW91c2x5IHNldC4KCSogamNmLXBhcnNlLmMgKHBhcnNlX3NvdXJjZV9maWxlLCBqYXZhX2Vycm9yX2NvdW50KTogTmV3IGZvcndhcmQKCWFuZCBleHRlcm4gZGVjbGFyYXRpb25zLgoJKGphdmFfcGFyc2VfYWJvcnRfb25fZXJyb3IpOiBNYWNybyBtb3ZlZC4KCShqY2ZfcGFyc2Vfc291cmNlKTogZmF0YWwgY2FsbGVkIGlmIGZvcGVuIGZhaWxzLiBOb3cgY2FsbHMKCXBhcnNlX3NvdXJjZV9maWxlLgoJKHBhcnNlX3NvdXJjZV9maWxlKTogTmV3IHBhcnNlX29ubHkgcGFyYW1ldGVyLiBSZWZsZWN0cyB0aGUKCWVsaW1pbmF0aW9uIG9mIHRoZSBzZWNvbmQgcGFzcy4KCSh5eXBhcnNlKTogcGFyc2Vfc291cmNlX2ZpbGUgY2FsbGVkIHdpdGggYXJndW1lbnQgc2V0IHRvIDAuCgkqIGpjZi5oIChKQ0ZfWkVSTyk6IFNldHMgamF2YV9zb3VyY2UgdG8gemVyby4KCSogbGV4LmMgKGphdmFfaW5pdF9sZXgpOiBwYXNzIGFyZ3VtZW50IGlzIGdvbmUuIEZ1bmN0aW9uIG1vZGlmaWVkCgl0byBiZSBjYWxsZWQgb25jZSBkdXJpbmcgdGhlIGFuYWx5c2lzIG9mIGEgZmlsZS4KCShqYXZhX3VuZ2V0X3VuaWNvZGUpOiBGaXhlZCB0eXBvIGluIGZhdGFsIG1lc3NhZ2UuCgkoamF2YV9nZXRfbGluZV9jb2wpOiBMaWtld2lzZS4KCShqYXZhX2x2YWwpOiBMaWtld2lzZS4gU3RyaW5nIGxpdGVyYWxzIG5vIGxvbmdlciBidWlsdCBkdXJpbmcKCXNlY29uZCBwYXNzLgoJKiBsZXguaCAoSkFWQV9DT0xVTU5fREVMVEEpOiBUYWtlIHRoZSB0YWJ1bGF0aW9uIGNoYXJhY3RlciBpbnRvCglhY2NvdW50LgoJKiBwYXJzZS5oIChNT0RJRklFUl9XRkwpOiBOZXcgbWFjcm8uCgkocGFyc2VfY2hlY2tfc3VwZXIsIHBhcnNlcl9jaGVja19zdXBlcl9pbnRlcmZhY2UpOiBOb3cgcmV0dXJuIGludC4KCShwYXJzZXJfY2hhaW5faW5jb21wbGV0ZV9pdGVtLCBub3RfYnVpbHRpbl9wLAoJY29tcGxldGVfbWV0aG9kX2RlY2wpOiBEZWNsYXJhdGlvbnMgcmVtb3ZlZC4KCShidWlsZF9tZXRob2RfaW52b2NhdGlvbl9zdG10LCBidWlsZF9pbnZva2UpOiBSZW5hbWVkIHVzaW5nIHRoZQoJYHBhdGNoJyBpbnN0ZWFkIG9mIGBidWlsZCcKCShyZWdpc3Rlci1pbmNvbXBsZXRlX3R5cGUsIG9idGFpbl9pbmNvbXBsZXRlX3R5cGUsCglqYXZhX2NvbXBsZXRlX3RyZWUsIGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZCwKCXVucmVzb2x2ZWRfdHlwZV9wLCBjcmVhdGVfamRlcF9saXN0KTogTmV3IGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KCShJQ19UWVBFLCBJQ19ERVBFTkQsIERFUEVORF9ERUNMLCBERVBFTkRfV0ZMLCBCRUdJTl9PTkxZX1BBU1MsCglFTkRfT05MWV9QQVNTLCBFTFNFX09OTFlfUEFTUyk6IE1hY3JvIGRlbGV0ZWQuCgkoamRlcCk6IE5ldyB0eXBlZGVmIG9uIG5ldyBzdHJ1Y3QgX2pkZXAuCgkoSkRFUF9ERUNMLCBKREVQX0RFQ0xfV0ZMLCBKREVQX0tJTkQsIEpERVBfU09MViwgSkRFUF9XRkwsCglKREVQX01JU0MsIEpERVBfQVBQTFlfUEFUQ0gsIEpERVBfR0VUX1BBVENILCBKREVQX0NIQUlOLAoJSkRFUF9UT19SRVZPTFZFLCBKREVQX1JFU09MVkVEX0RFQ0wsIEpERVBfUkVTT0xWRUQsCglKREVQX1JFU09MVkVEX1ApOiBOZXcgbWFjcm9zLgoJKEpERVBfTk9fUEFUQ0gsIEpERVBfU1VQRVIsIEpERVBfRklFTEQsIEpERVBfTUVUSE9ELAoJSkRFUF9NRVRIT0RfUkVUVVJOLCBKREVQX01FVEhPRF9FTkQsIEpERVBfSU5URVJGQUNFLAoJSkRFUF9WQVJJQUJMRSk6IE5ldyBlbnVtIHZhbHVlcyBhbmQgamRlcCBraW5kcy4KCShqZGVwbGlzdCk6IE5ldyB0eXBlZGVmIG9uIHN0cnVjdCBfamRlcGxpc3QuCgkoQ0xBU1NEX0ZJUlNULCBDTEFTU0RfTEFTVCwgQ0xBU1NEX0NIQUlOLCBKREVQX0lOU0VSVCk6IE5ldwoJbWFjcm9zLgoJKENBTExfRVhQUl9QUklNQVJZKTogTmV3IG1hY3JvLgoJKHN0cnVjdCBwYXJzZXJfY3R4dCk6IEZpZWxkcyBqYXZhX3Bhc3MsIGN1cnJlbnRfbWV0aG9kX2RlY2wsCgltZXRob2RfZGVjbF9saXN0IGRlbGV0ZWQuIE5ldyBmaWVsZCBqZGVwbGlzdC4KCShJTkNPTVBMRVRFX1ApOiBNYWNybyBkZWxldGVkLgoJKiBwYXJzZS55IChzaW5nbGVfdHlwZV9pbXBvcnRfZGVjbGFyYXRpb246KTogUmVtb3ZlZCBwYXNzIHN3aXRjaC4KCSh0eXBlX2ltcG9ydF9vbl9kZW1hbmRfZGVjbGFyYXRpb24pOiBMaWtld2lzZS4KCShmaWVsZF9kZWNsYXJhdGlvbjopOiBSZW1vdmVkIHBhc3Mgc3dpdGNoIG9uIGFsbCBzdWIgcnVsZXMuCgkoY2xhc3NfZGVjbGFyYXRpb246KTogQ2FsbCB0aGUgY29tcGxldGVfY2xhc3NfZGVjbCByZW1vdmVkIG9uCgljbGFzc19ib2R5IHJ1bGVzLgoJKG1ldGhvZF9kZWNsYXJhdGlvbjopOiBSZW1vdmVkIHNlY29uZCBwYXNzIHN3aXRjaC4gTm8gbG9uZ2VyIGNoYWluCgltZXRob2RzIGRlY2wgd2hlbiBtZXRob2RfaGVhZGVyIHJlZHVjZWQuCgkobWV0aG9kX2hlYWRlcjopOiBTdWIgcnVsZXMgbm8gbG9uZ2VyIGRlcGVuZCBvbiBwYXNzIHN3aXRjaC4KCShtZXRob2RfZGVjbGFyYXRvcjopOiBMaWtld2lzZS4KCShtZXRob2RfYm9keTopOiBMaWtld2lzZS4KCShhYnN0cmFjdF9tZXRob2RfZGVjbGFyYXRpb246KTogTGlrZXdpc2UuCgkoYmxvY2tfc3RhdGVtZW50Oik6IExpa2V3aXNlLgoJKGxvY2FsX3ZhcmlhYmxlX2RlY2xhcmF0aW9uOik6IExpa2V3aXNlLgoJKGFyZ3VtZW50X2xpc3Q6KTogTGlrZXdpc2UuCgkobWV0aG9kX2ludm9jYXRpb246KTogTGlrZXdpc2UuIENhbGwgdG8JYnVpbGRfbWV0aG9kX2ludm9jYXRpb25fc3RtdAoJcmVtb3ZlZC4gUGFydGlhbCBDTEFTU19FWFBSIHRyZWUgbm9kZSBidWlsdCBpbnN0ZWFkLgoJKHBvc3RmaXhfZXhwcmVzc2lvbjopOiBSZW1vdmVkIHBhc3Mgc3dpdGNoIG9uIGFsbCBzdWIgcnVsZXMuCgkoamF2YV9wb3BfcGFyc2VyX2NvbnRleHQpOiBGcmVlIGNsYXNzZF9saXN0IGNvbnRlbnQuCgkoeXllcnJvcik6IENhbGwgb2JzdHJhY2tfZ3JvdzAgdG8gZmluYWxpemUgZXJyb3IgbWVzc2FnZS4KCShjaGVja19jbGFzc19pbnRlcmZhY2VfY3JlYXRpb24pOiBDb21tZW50IG1vZGlmaWVkIHRvIHJlZmxlY3QgbmV3CglyZXR1cm5lZCB2YWx1ZSBtZWFuaW5nLiBSZW1vdmVkIHNlY29uZCBwYXNzIHN3aXRjaC4gUmV0dXJuIDEgaWYgYW4KCWVycm9yIHdhcyBmb3VuZCwgMCBvdGhlcndpc2UuIEFkanVzdCBwb2ludGVyIG9uIGZpbGVuYW1lIGlmIGEKCWxlYWRpbmcgcGF0aCBzZXBhcmF0b3Igd2FzIGZvdW5kLgoJKG1heWJlX2NyZWF0ZV9jbGFzc19pbnRlcmZhY2VfZGVjbCk6IFJlbW92ZWQgZmlyc3QgcGFzcyBzd2l0Y2gKCXdoZW4gbGlua2luZyB0aGUgY2xhc3MgZGVjbCB0byB0aGUgY2xhc3NfbGlzdC4gSW5zdGFsbCBhIG5ldwoJamRlcF9saXN0IGZvciB0aGUgY2xhc3MuCgkoYWRkX3N1cGVyaW50ZXJmYWNlcyk6IExpc3Qgb2YgdW5yZXNvbHZlZCBpbnRlcmZhY2VzIGlzCglnb25lLiBVbnJlc29sdmVkIGludGVyZmFjZXMgYXJlIGRpcmVjdGx5IGFkZGVkIHRvIHRoZSBjdXJyZW50CglkZXBlbmRlbmNpZXMgbGlzdC4KCShjcmVhdGVfaW50ZXJmYWNlKTogU2Vjb25kIHBhc3Mgc2hvcnRjdXQgcmVtb3ZlZC4KCWN0cHgtPm1vZGlmaWVyX2N0eCBhY2Nlc3MgdGhyb3VnaCBNT0RJRklFUl9XRkwuCgkoY3JlYXRlX2NsYXNzKTogU2Vjb25kIHBhc3Mgc2hvcnRjdXQgcmVtb3ZlZC4gQ2FsbCB0bwoJcmVnaXN0ZXJfaW5jb21wbGV0ZV90eXBlIHJlcGxhY2VzIHRoZSBjYWxsIHRvCglwYXJzZXJfY2hhaW5faW5jb21wbGV0ZV9pdGVtLgoJKGNvbXBsZXRlX2NsYXNzX2RlY2wpOiBGdW5jdGlvbiByZW1vdmVkLgoJKGR1cGxpY2F0ZV9kZWNsYXJhdGlvbl9lcnJvcik6IE5ldyB3YXkgb2YgcmV0cmlldmluZyByZWRlY2xhcmVkCglpdGVtIHR5cGUuCgkocmVnaXN0ZXJfZmllbGRzKTogQ2FsbCB0byBsb29rdXBfbW9kaWZpZXJfY2wgcmVwbGFjZWQgYnkKCU1PRElGSUVSX1dGTC4gTmV3IHdheSBvZiBoYW5kbGluZyB1bnJlc29sdmVkIHR5cGUsIHVzaW5nCgl1bnJlc29sdmVkX3R5cGVfcCBhbmQgb2J0YWluX2luY29tcGxldGVfdHlwZS4KCXJlZ2lzdGVyX2luY29tcGxldGVfdHlwZSByZXBsYWNlcyBjYWxsIHRvIHBhcnNlcl9jaGFpbl9pbmNvbXBsZXRlX2l0ZW0uCgkocGF0Y2hfc3RhZ2UpOiBOZXcgc3RhdGljIGdsb2JhbCB2YXJpYWJsZS4KCShtZXRob2RfaGVhZGVyKTogTmV3IHdheSBvZiBoYW5kbGluZyB1bnJlc29sdmVkIHR5cGUsIHVzaW5nCgl1bnJlc29sdmVkX3R5cGVfcCBhbmQgb2J0YWluX2luY29tcGxldGVfdHlwZS4gcGF0Y2hfc3RhZ2UgdXNlZCB0bwoJaW5kaWNhdGVzIHRoYXQgdGhlIG1ldGhvZCBkZWNsIG5lZWRzIHRvIGJlIHBhdGNoZWQuCgkoY2hlY2tfYWJzdHJhY3RfbWV0aG9kX2hlYWRlcik6IENhbGwgdG8gbG9va3VwX21vZGlmaWVyX2NsCglyZXBsYWNlZCBieSBNT0RJRklFUl9XRkwuCgkobWV0aG9kX2RlY2xhcmF0b3IpOiBJbmNvbXBsZXRlIGFyZ3VtZW50IHR5cGUgYXJlIHJlZ2lzdGVyZWQKCWNhbGxpbmcgcmVnaXN0ZXJfaW5jb21wbGV0ZV90eXBlLiBQYXRjaCBvbiB0aGUgZGVjbGFyZWQgbWV0aG9kIGlzCglpc3N1ZWQgaW4gdGhhdCBjYXNlLgoJKHVucmVzb2x2ZWRfdHlwZV9wKTogTmV3IGZ1bmN0aW9uLgoJKHBhcnNlcl9jaGVja19zdXBlcl9pbnRlcmZhY2UpOiBOZXcgY29tbWVudCB0byByZWZsZWN0IGZ1bmN0aW9uJ3MKCW1vZGlmaWVkIHJldHVybmVkIHR5cGUgKGludCkuIEZ1bmN0aW9uIGFuZCBoYXMgYSBuZXcgYXJndW1lbnQKCXRoaXNfd2ZsLiBDYWxsIHRvIHBhcnNlX2Vycm9yX2NvbnRleHQgdXNlcyB0aGlzX3dmbCBpbnN0ZWFkIG9mCglyZWx5aW5nIG9uIGxvb2t1cF9jbC4KCShwYXJzZXJfY2hlY2tfc3VwZXIpOiBDb21tZW50IHJlZmxlY3RzIGZ1bmN0aW9uJ3MgbmV3IHJldHVybmVkCgl0eXBlIChpbnQpLiBGdW5jdGlvbiByZXR1cm5zIG5vbnplcm8gdmFsdWUgb24gZXJyb3IuCgkoY3JlYXRlX2pkZXBfbGlzdCwgcmV2ZXJzZV9qZGVwX2xpc3QsIG9idGFpbl9pbmNvbXBsZXRlX3R5cGUsCglyZWdpc3Rlcl9pbmNvbXBsZXRlX3R5cGUsIGpkZXBfcmVzb2x2ZV9jbGFzcyk6IE5ldyBmdW5jdGlvbnMgdG8KCWhhbmRsZSBpbmNvbXBsZXRlIHR5cGVzIGluIGRlY2xhcmF0aW9ucy4KCShqYXZhX2NvbXBsZXRlX2NsYXNzKTogUmV3cml0dGVuIHRvIHdvcmsgd2l0aCB0aGUgbmV3IGluY29tcGxldGUKCXR5cGUgaGFuZGxpbmcgc2NoZW1lLgoJKGNvbXBsZXRlX2NsYXNzX3JlcG9ydF9lcnJvcnMpOiBMaWtld2lzZS4KCShjb21wbGV0ZV9tZXRob2RfZGVjbCk6IFJlbW92ZWQ6IGl0IGpvYnMgaXMgbm93IGhhbmRsZWQgYnkKCWphdmFfY29tcGxldGVfY2xhc3MuCgkoZG9fcmVzb2x2ZV9jbGFzcyk6IENsYXNzIGxvYWRlZCBpbiBub3QgYWxyZWFkeSBsb2FkZWQgYW5kIG5vdAoJZm91bmQgaW4gSmF2YSBzb3VyY2UgY29kZS4KCShqYXZhX2NoZWNrX3JlZ3VsYXJfbWV0aG9kcywgamF2YV9jaGVja19hYnN0cmFjdF9tZXRob2RzKTogRG9uJ3QKCWNhbGwgY29tcGxldGVfbWV0aG9kX2RlY2wgYW55bW9yZS4KCShsb29rdXBfbW9kaWZpZXJfY2wsIG5vdF9idWlsdGluX3ApOiBGdW5jdGlvbnMgZGVsZXRlZC4KCShyZWFkX2ltcG9ydF9kaXIpOiBHb3QgcmlkIG9mIHRoZSBwYXNzIG51bWJlciBkZXBlbmRlbmN5LgoJKGRlY2xhcmVfbG9jYWxfdmFyaWFibGVzKTogTmV3IGhhbmRsaW5nIG9mIHVucmVzb2x2ZWQgdHlwZXMgKHBhdGNoCglpc3N1ZWQpLgoJKHNvdXJjZV9zdGFydF9qYXZhX21ldGhvZCk6IE5ldyBwYXJhbWV0ZXIgbGV2ZWwuIEZ1bmN0aW9uIGNhbGxlZAoJd2l0aCBsZXZlbCBzZXQgdG8gMSB3aGVuIGFyZ3VtZW50IHR5cGVzIGFyZSBwb3RlbnRpYWxseQoJdW5yZXNvbHZlZC4gIENhbGxlZCB0byBjb21wbGV0ZSB0aGUgam9iIHdpdGggbGV2ZWwgc2V0IHRvIDIgb25jZQoJdHlwZXMgYXJlIGNvbXBsZXRlLgoJKHNvdXJjZV9lbmRfamF2YV9tZXRob2QpOiBDYWxsIHRvIHBlcm1hbmVudF9hbGxvY2F0aW9uCglyZW1vdmVkLiBXYWl0aW5nIHRvIGJlIHJlcGxhY2VkIGJ5IGEgbW9yZSBzdWl0YWJsZSBvYnN0YWNrCgltYW5hZ2VtZW50LgoJKGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZHMsIGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZCwKCWphdmFfZXhwYW5kX2ZpbmFscyk6IE5ldyBmdW5jdGlvbnMuCgkoYnVpbGRfbWV0aG9kX2ludm9jYXRpb25fc3RtdCk6IFJlbmFtZWQKCXBhdGNoX21ldGhvZF9pbnZvY2F0aW9uX3N0bXQuIEV4dHJhY3RzIGZ1bmN0aW9uIGNhbGwgZXhwcmVzc2lvbgoJKHdmbCkgYW5kIGFyZ3VtZW50cyAoYXJncykgZnJvbSBDQUxMX0VYUFIgdHJlZSBvcGVyYW5kcy4KCShidWlsZF9pbnZva2UpOiBSZW5hbWVkIHBhdGNoX2ludm9rZS4gRml4ZWQgdHlwbyBpbiBmYXRhbAoJY2FsbC4gUGF0Y2ggdGhlIGZ1bmN0aW9uIGFuZCBhcmd1bWVudCBvcGVyYW5kIG9mIHRoZSBDQUxMX0VYUFIKCXRyZWUgYXJndW1lbnQuCgkocGF0Y2hfYXJndW1lbnQsIGphdmFfY29tcGxldGVfdHJlZSk6IE5ldyBmdW5jdGlvbnMuCgoxOTk4LTA0LTIwICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCglSZWNvdmVyIGZyb20gbWlzc2luZyBmaWVsZHMgYW5kIG1ldGhvZHMgKGkuZS4gZXJyb3IgaW5zdGVhZCBvZiBmYXRhbCkuCgkqIGRlY2wuYywgamF2YS10cmVlLmggKFRZUEVfaWRlbnRpZmllcl9ub2RlKTogIE5ldyBnbG9iYWwgY29uc3RhbnQuCgkqIGV4cHIuYyAoZXhwYW5kX2ludm9rZSk6ICBSZWNvdmVyIGZyb20gbWlzc2luZyBtZXRob2QuCgkoZXhwYW5kX2phdmFfZmllbGRfb3ApOiAgUmVjb3ZlciBmcm9tIG1pc3NpbmcgZmllbGQuCglJbmxpbmUgcmVmZXJlbmNlcyB0byBqYXZhLmxhbmcue0ludGVnZXIsQ2hhciwuLi59LlRZUEUuCgkqIHR5cGVjay5jIChnZXRfdHlwZV9mcm9tX3NpZ25hdHVyZSksIGphdmEtdHJlZS5oOiAgTmV3IGZ1bmN0aW9uLgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogIFVzZSBnZXRfdHlwZV9mcm9tX3NpZ25hdHVyZS4KCShidWlsZF9jbGFzc19yZWYpOiAgSGFuZGxlIGEgY2xhc3MgdGhhdCB3YXMgbm90IGZvdW5kLgoJKiB0eXBlY2suYyAoY29udmVydCk6ICBIYW5kbGUgY29udmVyc2lvbiB0byBwb2ludGVycyAoZm9yIGNvbnZlbmllbmNlKS4KCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogIFVzZSBnZXRfdHlwZV9mcm9tX3NpZ25hdHVyZQoJaW5zdGVhZCBvZiBsb29rdXBfZmllbGQgdG8gaGFuZGxlIG1pc3NpbmcgZmllbGRzLgoKCSogamNmLXBhcnNlLmMgKHByb2Nlc3NfemlwX2Rpcik6ICBTZXQgamF2YV9zb3VyY2UuCgoxOTk4LTA0LTIwICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogamNmLXBhcnNlLmMgKHNldF9zb3VyY2VfZmlsZW5hbWUpOiBVc2UgVFlQRV9OQU1FLCBub3QgREVDTF9OQU1FLgoKMTk5OC0wNC0xNCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBqY2YtcGFyc2UuYyAobG9hZF9jbGFzcyk6IERvbid0IGNoYW5nZSBpbnB1dF9maWxlbmFtZSBiZWZvcmUKCWNhbGxpbmcgamNmX3BhcnNlX3NvdXJjZSAoYnV0IHN0aWxsIGRvIGl0IGJlZm9yZSBjYWxsaW5nCglqY2ZfcGFyc2UpLgoJKGpjZl9wYXJzZV9zb3VyY2UpOiBBc3NpZ24gaW5wdXRfZmlsZW5hbWUgYWZ0ZXIgaGF2aW5nIHNhdmVkIHRoZQoJcGFyc2VyIGNvbnRleHQuCgkqIGxleC5jIChqYXZhX2luaXRfbGV4KTogQ2hhaW4gYSBXRkwgbm9kZSB0byB0aGUgaW1wb3J0IG9uIGRlbWFuZAoJbGlzdC4gY3R4cC0+bW9kaWZpZXJfY3R4IHplcm9lZCBhY2NvcmRpbmcgdG8gaXRzIG5ldwoJZGVmaW5pdGlvbi4gY3R4cC0+ZmlsZW5hbWUgaW5pdGlhbGl6ZWQuIFJlbW92ZWQKCUpBVkFfTU9ESUZJRVJfQ1RYX1VOTUFSSy4KCShqYXZhX3VuZ2V0X3VuaWNvZGUpOiBVcGRhdGUgdGhlIGNoYXJhY3RlciBiYXNlZCBjb2x1bW4gcG9zaXRpb24uCgkoamF2YV9hbGxvY2F0ZV9uZXdfbGluZSk6IHJlZl9jb3VudCBub3QgdXNlZCBhbnltb3JlLiBBbHdheXMgZnJlZQoJY3R4cC0+cF9saW5lLiBJbml0aWFsaXplIGNfbGluZS0+Y2hhcl9jb2wgdG8gMC4KCShqYXZhX2dldF91bmljb2RlKTogVXBkYXRlIHRoZSBjaGFyYWN0ZXIgYmFzZWQgY29sdW1uIHBvc2l0aW9uLgoJKGphdmFfbGV4KTogVXNlIGN0eHAtPmVsYyB0byBzdG9yZSBjdXJyZW50IHBvc2l0aW9uIGluIHNvdXJjZQoJZmlsZSwgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcGFyc2VkIHRva2VuLiBTZXQgbW9kaWZpZXJfY3R4IGVudHJ5Cgljb3JyZXNwb25kaW5nIHRvIHRoZSBwYXJzZSBtb2RpZmllciB0byBhIFdGTCBub2RlLiBSZXR1cm4gYSBXRkwKCW5vZGUgd2hlbiBhbiBpZGVudGlmaWVyIGlzIHBhcnNlZC4KCShqYXZhX2xleF9lcnJvcik6IE5vdyB1c2VzIGN0eHAtPmVsYyB0byBzdG9yZSBjdXJyZW50IHBvc2l0aW9uIGluCglzb3VyY2UuCgkoYnVpbGRfd2ZsX25vZGUsIGphdmFfaXNfZW9sLCBqYXZhX2dldF9saW5lX2NvbCk6IE5ldyBmdW5jdGlvbnMuCgkqIGxleC5oIChidWlsZF93Zmxfbm9kZSk6IE5ldyBmdW5jdGlvbiBkZWZpbml0aW9ucy4KCShzdHJ1Y3QgamF2YV9saW5lKTogcmVmX2NvdW50IGFuZCBuZXh0IGZpZWxkcyBhcmUgZ29uZS4gTmV3IGZpZWxkCgljaGFyX2NvbC4KCShKQVZBX0xJTkVfQ0hFQ0ssIEpBVkFfTElORV9NQVJLLCBKQVZBX0xJTkVfQ0hBSU4sCglKQVZBX0xJTkVfVU5NQVJLLCBJRF9OQU1FLCBJRF9DTCk6IE1hY3JvIGRlZmluaXRpb25zIGRlbGV0ZWQuCgkoSkFWQV9DT0xVTU5fREVMVEEpOiBOZXcgbWFjcm8uCgkoamF2YV9sYyk6IE5ldyB0eXBlZGVmIG9uIG5ldyBzdHJ1Y3QgX2phdmFfbGMuCgkqIHBhcnNlLmggKGxvb2t1cF9jbCwgbG9va3VwX21vZGlmaWVyX2NsKTogQ2hhbmdlZCByZXR1cm5lZCB0eXBlcy4KCShwYXJzZV9lcnJvcl9jb250ZXh0LCBwYXJzZV93YXJuaW5nX2NvbnRleHQpOiBDaGFuZ2VkIHByb3RvdHlwZXMuCgkoamF2YV9nZXRfbGluZV9jb2wpOiBBZGRlZCBhcyBhbiBhdmFpbGFibGUgZ2xvYmFsIGZ1bmN0aW9uLgoJKEpBVkFfTU9ESUZJRVJfQ1RYX1VOTUFSSyk6IE1hY3JvIHJlbW92ZWQuCgkoSUNfREVDTCk6IFJlcGxhY2VkIGJ5IG1hY3JvIElDX1RZUEUKCShERVBFTkRfV0ZMKTogTmV3IG1hY3JvLgoJKFRISVNfTU9ESUZJRVJfT05MWSk6IE5vdyB3b3JrcyB3aXRoIFdGTCBhbmQgb25seSByZW1lbWJlcnMgdGhlIGZpcnN0Cgl3cm9uZyBtb2RpZmllci4KCShleGl0X2phdmFfY29tcGxldGVfY2xhc3MpOiBSZW1vdmVkIGEgY29tbWVudGVkIG91dCBzdGF0ZW1lbnQuCgkoc3RydWN0IHBhcnNlcl9jdHh0KTogQWRkZWQgY29tbWVudHMgb24gZmllbGRzLiBtb2RpZmllcl9jdHggaXMKCW5vdyBhbiBhcnJheSBvZiB0cmVlIG5vZGVzLiBEZWxldGVkIGZpZWxkcyBsaW5lX2xpc3QgYW5kCgllX2xpbmUuIE5ldyBmaWVsZCBlbGMsIHRvIHJlcGxhY2UgZV9saW5lLgoJKiBwYXJzZS55IChhcnJheV90eXBlOik6IEJ1aWxkIFdGTCBub2RlLgoJKHF1YWxpZmllZF9uYW1lOik6IEJ1aWxkIGEgc2luZ2xlIFdGTCBub2RlIG91dCBvZiB0d28uIFJldGFpbgoJdGhlIGxvY2F0aW9uIGluZm9ybWF0aW9uIG9mIHRoZSBmaXJzdCBub2RlIGluIHRoZSByZXN1bHRpbmcgbm9kZS4KCShwYWNrYWdlX2RlY2xhcmF0aW9uOik6IFVzZSBwYWNrYWdlIG5hbWUgYXMgYSBXRkwgbm9kZQoJKHNpbmdsZV90eXBlX2ltcG9ydF9kZWNsYXJhdGlvbjopOiBVc2UgaW1wb3J0ZWQgbmFtZSBhcyBhIFdGTCBub2RlLgoJKHR5cGVfaW1wb3J0X29uX2RlbWFuZF9kZWNsYXJhdGlvbjopOiBVc2Ugcm9vdCBvZiB0aGUgaW1wb3J0ZWQKCXBhY2thZ2VzIGFzIGEgV0ZMIG5vZGUuCgkoZmllbGRfZGVjbGFyYXRpb246KTogUmVtb3ZlZCB1bnVzZWQgbG9jYWwgdmFyaWFibGUgY2wuCgkobWV0aG9kX2RlY2xhcmF0aW9uOik6IERvbid0IGNhbGwgSkFWQV9NT0RJRklFUl9DVFhfVU5NQVJLLgoJKHl5ZXJyb3IpOiBOZXcgc3RhdGljIGVsYy4gUmVtb3ZlZCBzdGF0aWMgZXJyb3JfbGluZSwgZXJyb3JfcG9zLgoJTmV3IGxvY2FsIGNvZGVfZnJvbV9zb3VyY2UuIFNhdmUgY3R4cC0+ZWxjIGludG8gZWxjIGF0IHRoZSBmaXJzdAoJcGFzcy4gQ2FsbCBqYXZhX2dldF9saW5lX2NvbCB0byBnZXQgYSBzdHJpbmcgb2YgdGhlIGxpbmUgd2hlcmUKCXRoZSBlcnJvciBvY2N1cnJlZC4KCShkZWJ1Z19saW5lKTogUmVtb3ZlZCBzdGF0aWMgZnVuY3Rpb24uCgkocGFyc2VfZXJyb3JfY29udGV4dCwgcGFyc2Vfd2FybmluZ19jb250ZXh0KTogUGFyYW1ldGVyIGNsIGlzIG5vdwoJYSBXRkwgbm9kZS4gVXNlIGl0cyB2YWx1ZSB0byBpbml0aWFsaXplIGN0eHAtPmVsYy4KCShyZWRlZmluaXRpb25fZXJyb3IpOiBQYXJhbWV0ZXIgY2wgaXMgbm93IGEgV0ZMIG5vZGUuCgkocGFyc2VfYWRkX2ludGVyZmFjZSk6IE5ldyBwYXJhbWV0ZXIgd2ZsLiBObyBsb25nZXIgY2FsbAoJbG9va3VwX2NsLCB1c2Ugd2ZsIGluc3RlYWQuCgkoY2hlY2tfY2xhc3NfaW50ZXJmYWNlX2NyZWF0aW9uKTogUGFyYW1ldGVyIGNsIGlzIG5vdyBhIFdGTCBub2RlLgoJKG1heWJlX2NyZWF0ZV9jbGFzc19pbnRlcmZhY2VfZGVjbCk6IExpa2V3aXNlLgoJKGFkZF9zdXBlcmludGVyZmFjZXMpOiBOZXcgZnVuY3Rpb24uCgkoY3JlYXRlX2ludGVyZmFjZSk6IFJlbW92ZWQgbG9jYWwgY2wsIG5vZGUsIHN1cGVyX2RlY2wsCglzdXBlcl9kZWNsX3R5cGUuICBGdW5jdGlvbiBub3cgdXNlcyBpZCBhcyBhIFdGTCBub2RlLiBCZXR0ZXIKCXdhcm5pbmcvZXJyb3IgcmVwb3J0IG9uIG9ic29sZXRlIG9yIGZvcmJpZGRlbiBtaXggb2YKCW1vZGlmaWVycy4gTm93IGNhbGxzIGFkZF9zdXBlcmludGVyZmFjZXMgdG8gcmVnaXN0ZXIgaW50ZXJmYWNlcy4KCShjcmVhdGVfY2xhc3MpOiBSZW1vdmVkIGxvY2FsIGNsLCBub2RlLiBMb2NhbCB2YXJpYWJsZSBpZCBpcyB1c2VkCglhcyBhIFdGTCBub2RlLiBCZXR0ZXIgZXJyb3IgcmVwb3J0IG9uIGZvcmJpZGRlbiBtb2RpZmllcgoJbWl4LiBVc2VzIGFkZF9zdXBlcmludGVyZmFjZXMgdG8gcmVnaXN0ZXIgaW50ZXJmYWNlcy4KCShmaW5kX2ZpZWxkKTogQXJndW1lbnQgY2wgaXMgbm93IGEgV0ZMIG5vZGUuIE5vdyBzdG9yZSB0aGUgV0ZMCglub2RlIG9mIGEgZmllbGRzIHRoYXQgbmVlZHMgdG8gYmUgY2hlY2tlZCBmb3IgdGhlaXIKCWluaXRpYWxpemF0aW9uLgoJKG1ldGhvZF9oZWFkZXIpOiBMb2NhbCB2YXJpYWJsZSBub2RlIG5vbiBsb25nZXIgdXNlZC4gTG9jYWwKCXZhcmlhYmxlIGlkIHJlcGxhY2VzIGNsLgoJKGNoZWNrX21vZGlmaWVyc19jb25zaXN0ZW5jeSk6IExvY2FsIHZhcmlhYmxlIGNsIGlzIG5vdyBhIFdGTAoJbm9kZS4KCShtZXRob2RfZGVjbGFyYXRvcik6IExvY2FsIHZhcmlhYmxlIGNsIHJlcGxhY2VkIGJ5IHBhcmFtZXRlciBpZC4KCShwYXJzZXJfcXVhbGlmaWVkX25hbWUpOiBOb3cgdXNlcyBwYXJhbWV0ZXIgbmFtZSBhcyBhIFdGTCBub2RlLgoJKHBhcnNlcl9jaGVja19zdXBlcl9pbnRlcmZhY2UpOiBOZXcgcGFyYW1ldGVyIHdmbCwgZm9yIGFjaGlldmUKCWdyZWF0ZXIgYWNjdXJhY3kgZHVyaW5nIGVycm9yIHJlcG9ydHMuCgkocGFyc2VyX2NoYWluX2luY29tcGxldGVfaXRlbSk6IE5ldyBwYXJhbWV0ZXIgbmFtZWQgbG9jYXRpb24uIFVzZWQsCglhbG9uZyB0aGUgZGVjbCwgdG8gY29uc3RydWN0IHRoZSBpbmNvbXBsZXRlIGl0ZW0gbm9kZS4KCShqYXZhX2NvbXBsZXRlX2NsYXNzKTogcmVzb2x2ZV9jbGFzcyBub3cgdXNlcyBXRkwgbm9kZSBleHRyYWN0ZWQKCWZyb20gdGhlIGluY29tcGxldGUgaXRlbSBub2RlLiBNYWNybyBJQ19UWVBFIHJlcGxhY2VzIFRSRUVfUFVSUE9TRQoJd2hlcmUgYXBwcm9wcmlhdGUuCgkoY29tcGxldGVfbWV0aG9kX2RlY2wpOiBVbnJlc29sdmVkIGZ1bmN0aW9uJ3MgYXJndW1lbnQgdHlwZXMgYXJlIFdGTC4KCShyZXNvbHZlX2NsYXNzKTogUGFyYW1ldGVyIGNsIGlzIG5vdyBhIFdGTCBub2RlLgoJKHJlc29sdmVfYW5kX2xheW91dCk6IExpa2V3aXNlLgoJKGRvX3Jlc29sdmVfY2xhc3MpOiBMaWtld2lzZS4gVHJ5IGZpcnN0IHRvIHVzZSBjbCBhbmQgdGhlbiBkbyB0aGUKCWxvb2t1cCBvbiB0aGUgZGVjbCB3aGVuIGNhbGxpbmcgY2hlY2tfcGtnX2NsYXNzX2FjY2Vzcy4KCShjb21wbGV0ZV9jbGFzc19yZXBvcnRfZXJyb3JzKTogVXNlIElDX1RZUEUgaW4gcGxhY2Ugb2YKCVRSRUVfUFVSUE9TRSB3aGVyZSBhcHByb3ByaWF0ZS4gVXNlIERFUEVORF9XRkwgb24gZGVwZW5kZW5jeQoJaW5zdGVhZCBvZiBkb2luZyBhIGxvb2t1cCBvdmVyIHRoZSBkZWNsLgoJKGphdmFfY2hlY2tfZmluYWwpOiBVc2UgV0ZMIGluZm8gZnJvbSBmaWVsZCB0cmVlIGxpc3QuCgkobG9va3VwX2NsKTogUmV3cml0dGVuIGFuZCByZXR1cm5zIGEgc3RhdGljYWxseSBkZWZpbmVkIFdGTCBub2RlLgoJKGxvb2t1cF9tb2RpZmllcl9jbCk6IE5vdyB1c2VzIGluZm9ybWF0aW9uIGZyb20gV0ZMIG5vZGVzLgoJKHByb2Nlc3NfaW1wb3J0cyk6IExpa2V3aXNlLgoJKHJlYWRfaW1wb3J0X2Rpcik6IG5hbWUgYW5kIGNsIGFyZ3VtZW50cyByZXBsYWNlZCBieSBhIHNpbmdsZSBXRkwKCW5vZGUuIEZ1bmN0aW9uIG1vZGlmaWVkIGFjY29yZGluZ2x5LgoJKGZpbmRfaW5faW1wb3J0c19vbl9kZW1hbmQpOiBOb3cgdXNlcyBXRkwgbm9kZS4KCShjaGVja19wa2dfY2xhc3NfYWNjZXNzKTogY2wgYXJndW1lbnQgaXMgbm93IGEgV0ZMIG5vZGUuCgkoZGVjbGFyZV9sb2NhbF92YXJpYWJsZXMpOiBGaXhlZCB0byB1c2UgV0ZMIG5vZGVzLgoJKHJlc29sdmVfZXhwcmVzc2lvbl9uYW1lKTogTGlrZXdpc2UuCgkoYnVpbGRfbWV0aG9kX2ludm9jYXRpb25fc3RtdCk6IG5hbWVfY29tYm8gYXJndW1lbnQgcmVuYW1lZAoJd2ZsLiBGdW5jdGlvbiBtb2RpZmllZCB0byB1c2UgV0ZMIG5vZGVzLgoJKGJ1aWxkX2ludm9rZSk6IGNsIHVzZWQgYXMgYSBXRkwgbm9kZSB3aGVuIGNhbGxpbmcgYnVpbGRfZXhwcl93ZmwuCgkobG9va3VwX21ldGhvZF9pbnZva2UpOiBjbCBpcyBub3cgYSBXRkwgbm9kZS4gQWRkZWQgbWlzc2luZwoJSURFTlRJRklFUl9QT0lOVEVSIHRvIGNsYXNzIHR5cGUgZGVjbCBuYW1lLgoKMTk5OC0wNC0xNCAgRGF2ZSBCcm9sbGV5ICA8YnJvbGxleUBjeWdudXMuY29tPgoKCSogbGFuZy5jIChpbml0X3BhcnNlKTogTm93IHJldHVybnMgY2hhciogY29udGFpbmluZyB0aGUgZmlsZW5hbWUuCgoxOTk4LTA0LTEwICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGxheW91dF9jbGFzcyk6ICBNYW5nbGUgcmVwZWF0ZWQgYXJnIHR5cGVzIHRvIG1hdGNoIGNjMXBsdXMuCgoJKiBkZWNsLmMsIGphdmEtdHJlZS5oIChpbnRlZ2VyX2ZvdXJfbm9kZSk6ICBOZXcgSU5URUdFUl9DU1Qgbm9kZS4KCSogY2xhc3MuYyAobWFrZV9jbGFzc19kYXRhKTogIElmIGZsYWdfYXNzdW1lX2NvbXBpbGVkLCBpbml0aWFsIGNsYXNzCglzdGF0ZSBpcyBDU1RBVEVfUFJFUEFSRUQ7IG1ha2Ugc3VwZXJjbGFzcyBhbmQgaW50ZXJmYWNlcyBkaXJlY3QKCXJlZmVyZW5jZXMsIHJhdGhlciB0aGFuIGNvbnN0YW50IHBvb2wgaW5kZXhlcy4KCjE5OTgtMDQtMDkgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2VyLnk6IEluY2x1ZGUgZmxhZ3MuaC4gUmVtb3ZlZCBkZWJ1ZyB2YXJpYWJsZSBwbC4KCShtZXRob2RfZGVjbGFyYXRpb246KTogVXNlcyBjdHhwLT5wYXJzZXJfY2NiX2luZGVudCBpbnN0ZWFkIG9mIHBsLgoJKGJsb2NrOik6IExpa2V3aXNlLgoJKGxhYmVsZWRfc3RhdGVtZW50X25zaTopOiBHZW5lcmF0ZSBkZWJ1ZyBpbmZvIHdoZW4gcmVkdWNpbmcKCWV4cHJlc3Npb25fc3RhdGVtZW50Oi4KCShjaGVja19wa2dfY2xhc3NfYWNjZXNzKTogZ2V0X2FjY2Vzc19mbGFnc19mcm9tX2RlY2wgaW52b2NhdGlvbgoJZml4ZWQgZm9yIG5ldyBDTEFTU18qIGZsYWdzIGxvY2F0aW9uLgoJKHNvdXJjZV9lbmRfamF2YV9tZXRob2QpOiBTYXZlL3Jlc3RvcmUgcGFyc2VyIGNvbnRleHQgd2hlbgoJZW50ZXJpbmcvbGVhdmluZyB0aGlzIHJvdXRpbmUuIFJlc3RvcmUgbGluZW5vIHRvIGl0cyByaWdodCB2YWx1ZQoJYmVmb3JlIGNhbGxpbmcgZXhwYW5kX2VuZF9iaW5kaW5ncy4KCShidWlsZF9tZXRob2RfaW52b2NhdGlvbl9zdG10KTogYnVpbGRfaW52b2tlIGNhbGxlZCB3aXRoIHRoZQoJY3VycmVudCBsaW5lIGluZm9ybWF0aW9uLgoJKGJ1aWxkX2ludm9rZSk6IE5ldyBhcmd1bWVudCBjbC4gV3JhcCB0aGUgZnVuY3Rpb24gY2FsbCBhcm91bmQgYQoJd2ZsIG5vZGUuCgkocmVmaW5lX2FjY2Vzc2libGVfbWV0aG9kc19saXN0KTogQ2hhbmdlZCBjb21tZW50LCByZW1vdmVkCgl1bm5lY2Vzc2FyeSBjb2RlLgoJKiBwYXJzZS5oOiBGaXhlZCB0eXBvIGluIGNvbW1lbnRzLgoJKENMQVNTX09SX0lOVEVSRkFDRSk6IEhhbmRsZSB0aGUgbmV3IENMQVNTXyogZmxhZ3MgbG9jYXRpb24uCgkoSkFWQV9NQVlCRV9HRU5FUkFURV9ERUJVR19JTkZPKTogTmV3IG1hY3JvLgoJKHN0cnVjdCBwYXJzZXJfY3R4dCk6IE5ldyBmaWVsZHMgY2NiX2luZGVudCwgbGFzdF9jY2JfaW5kZW50MSwKCXBhcnNlcl9jY2JfaW5kZW50LgoJKiBsZXguYyAoamF2YV9sZXgpOiBSZWNvcmQgdGhlIGxhc3QgY2xvc2luZyBjdXJseSBicmFja2V0IG9mIGEKCWZ1bmN0aW9uLgoJKiBqY2YtcGFyc2UuYyAoamNmX3BhcnNlX3NvdXJjZSk6IE5vdyBjYWxscwoJamF2YV9jaGVja19tZXRob2RzLiBDbGFyaWZpZWQgY29tbWVudCwgZml4ZWQgdHlwby4KCjE5OTgtMDQtMDkgIERhdmUgQnJvbGxleSAgPGJyb2xsZXlAY3lnbnVzLmNvbT4KCgkqIGxhbmcuYyAoaW5pdF9wYXJzZSk6IEV4cG9zZSBmb3Igbm9uIFVTRV9DUFBMSUIgYnVpbGRzLgoJKGZpbmlzaF9wYXJzZSk6IEV4cG9zZSBmb3Igbm9uIFVTRV9DUFBMSUIgYnVpbGRzLgoKMTk5OC0wNC0wOCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogbGFuZy5jIChsYW5nX3ByaW50X3hub2RlKTogTmV3IGZ1bmN0aW9uLgoKMTk5OC0wNC0wMyAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGNsYXNzX2R0YWJsZV9kZWNsKSwgamF2YS10cmVlLmg6ICBOZXcgdHJlZSBub2RlLgoJKiBjbGFzcy5jIChnZXRfZGlzcGF0Y2hfdmVjdG9yLCBnZXRfZGlzcGF0Y2hfdGFibGUpOiAgTmV3IGZ1bmN0aW9ucwoJdXNlZCB0byBidWlsZCBhIGNsYXNzJ3MgZGlzcGF0Y2ggdGFibGUuCgkobWFrZV9jbGFzc19kYXRhKTogIEdlbmVyYXRlIGRpc3BhdGNoIHRhYmxlIGlmIGZsYWdfYXNzdW1lX2NvbXBpbGVkLgoJU2V0IGR0YWJsZSBvZiBjbGFzcyBvYmplY3QgdG8gYWRkcmVzcyBvZiBjbGFzc19kdGFibGVfZGVjbC4KCgkqIGRlY2wuYyAoaW50X2RlY2xfcHJvY2Vzc2luZyk6ICBNYWtlIHNvZnRfYmFkYXJyYXlpbmRleF9ub2RlCgliZSB2b2xhdGlsZSBhbmQgaGF2ZSBzaWRlIGVmZmVjdHMgLSBnZW5lcmF0ZXMgYmV0dGVyIGNvZGUuCgoJKiBjbGFzcy5jLCBleHByLmMsIHBhcnNlLnk6ICBDTEFTU19JTlRFUkZBQ0UsIENMQVNTX0ZJTkFMLCBldGM6CglUaGVzZSBmbGFncyB3ZXJlIGRlZmluZWQgZm9yIFRZUEVfREVDTHMsIGJ1dCB1c2VkIG9uIFJFQ09SRF9UWVBFcy4KCgkqIGV4cHIuYyAoZXhwYW5kX2ludm9rZSk6ICBJZiBjbGFzcyBpcyBmaW5hbCwgbWV0aG9kIGlzCgllZmZlY3RpdmVseSBmaW5hbCwgc28gY2FuIGNhbGwgaXQgZGlyZWN0bHkuCgoJKiBqYXZhLXRyZWUuaCAoVFlQRV9OVklSVFVBTFMsIFRZUEVfVlRBQkxFKTogIE5ldyBtYWNyb3MuCgoJKiBNYWtlZmlsZS5pbiwgTWFrZS1sYW5nLmluOiAgQWRkIG1pc3NpbmcgJChleGVleHQpcy4KCjE5OTgtMDMtMTkgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoYnVpbGRfbWV0aG9kX2ludm9jYXRpb25fc3RtdCk6IFJlbW92ZWQgZXh0cmEgYXJndW1lbnQKCXRvIGJ1aWxkX2ludm9rZS4KCjE5OTgtMDMtMTYgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogZXhwci5jIChkdGFibGVfaW5kZW50KTogTm93IHN0YXRpYyBnbG9iYWwuCgkoZXhwYW5kX2ludm9rZSk6IE5vdyBjYWxsIGludm9rZV9idWlsZF9kdGFibGUgYW5kCglidWlsZF9pbnZva2V2aXJ0dWFsLgoJKGludm9rZV9idWlsZF9kdGFibGUsIGJ1aWxkX2ludm9rZXZpcnR1YWwpOiBOZXcgZnVuY3Rpb25zLgoJKiBqY2YtaW8uYyAoZmluZF9jbGFzcyk6IERlZmVyIGlzc3VpbmcgYSB3YXJuaW5nIGJ5IHNldHRpbmcKCWpjZi0+b3V0b2ZzeW5jaCB0byAxLgoJKiBqY2YtcGFyc2UuYyAoamNmX291dF9vZl9zeW5jaCk6IE5ldyBmdW5jdGlvbi4KCShsb2FkX2NsYXNzKTogVGVzdCB0aGlzX2pjZi5vdXRvZnN5bmNoIGZsYWcgYW5kIGNhbGwKCWpjZl9vdXRfb2Zfc3luY2ggYWNjb3JkaW5nbHkuCgkqIGpjZi5oOiAodHlwZWRlZiBzdHJ1Y3QgSkNGKTogTmV3IGZsYWcgb3V0b2ZzeW5jaC4gRml4ZWQgdHlwbyBpbgoJY29tbWVudCBpbmRlbnRhdGlvbi4KCSogbGV4LmMgKGphdmFfZ2V0X3VuaWNvZGUpOiBGaXhlZCBjb2RlIGluZGVudGF0aW9uLgoJKGphdmFfbGV4KTogQ3JlYXRlIHN0cmluZyBsaXRlcmFsLiBGaXhlZCB0eXBvLiBSZW1vdmVkIHNldmVyYWwKCXByZW1hdHVyZSBvYnN0YWNrX2ZyZWUuCgkqIHBhcnNlLmg6IE5ldyBlbnVtcyBmb3IgbmFtZSByZXNvbHV0aW9uIGFuZCBpbnZvY2F0aW9uIG1vZGUuCgkoc3RydWN0IHF1YWxpZmljYXRpb24pOiBOZXcgZGF0YSBzdHJ1Y3R1cmUuCgkoUkVTT0xWRV9DSEFJTl9SRU1BSU5ERVIsIEJVSUxEX1BUUl9GUk9NX05BTUUpOiBOZXcgbWFjcm9zLgoJKGRvX3Jlc29sdmVfY2xhc3MsIGJ1aWxkX21ldGhvZF9pbnZvY2F0aW9uX3N0bXQsCglicmVha2Rvd25fcXVhbGlmaWVkLCBxdWFsaWZ5X2FtYmlndW91c19uYW1lLCByZXNvbHZlX2FuZF9sYXlvdXQsCglkZWJ1Z19saW5lLCBpZGVudGljYWxfc3VicGF0aF9wLCBpbnZvY2F0aW9uX21vZGUsCglyZWZpbmVfYWNjZXNzaWJsZV9tZXRob2RzX2xpc3QsIGJ1aWxkX2ludm9rZSwKCWxvb2t1cF9tZXRob2RfaW52b2tlKTogTmV3IGZ1bmN0aW9ucyBkZWNsYXJlZC4KCShidWlsZF9pbnZva2V2aXJ0dWFsLCBpbnZva2VfYnVpbGRfZHRhYmxlLCBtYXRjaF9qYXZhX21ldGhvZCwKCWJ1aWxkX2ZpZWxkX3JlZiwgamNmX291dF9vZl9zeW5jaCk6IE5ldyByZWZlcmVuY2VzIHRvIGV4dGVybmFsCglmdW5jdGlvbnMuCgkoc3RydWN0IHBhcnNlX2N0eHQpOiBSZW1vdmVkIGFydGlmaWNpYWxfY29uc3RydWN0b3IgZmllbGQuCgkqIHBhcnNlLnk6IChhcnJheV90eXBlOik6IFR5cGUgZGVmaW5lZCBmb3IgdGhpcyBydWxlLgoJKGNsYXNzX3R5cGU6KTogSW5zdGFsbGVkIGRlZmF1bHQgcnVsZSBmb3IgaW50ZXJmYWNlX3R5cGU6LgoJKGFycmF5X3R5cGU6KTogTm93IGJ1aWxkIEphdmEgYXJyYXkgdHlwZS4KCShxdWFsaWZpZWRfbmFtZTopOiBOb3cgdXNlIG9ic3RhY2tfZ3JvdzAuCgkobWV0aG9kX2RlY2xhcmF0aW9uOik6IFNraXAgdGhlIGFydGlmaWNpYWwgY29uc3RydWN0b3IgYWRkZWQgdG8KCXRoZSBsaXN0LCBpZiBhbnkuCgkoYWJzdHJhY3RfbWV0aG9kX2RlY2xhcmF0aW9uOik6IEV4ZWN1dGUgdGhlIGNvZGUgb25seSBkdXJpbmcgcGFzcyAxLgoJKGJsb2NrOik6IEluc3RhbGxlZCBkZWZhdWx0IHJ1bGUgaW4gYmxvY2tfc3RhdGVtZW50czouCgkoYmxvY2tfc3RhdGVtZW50Oik6IEFkZCB0aGUgc3RhdGVtZW50IHRvIHRoZSBtZXRob2QgZHVyaW5nIHBhc3MgMi4KCShzdGF0ZW1lbnRfZXhwcmVzc2lvbik6IEluc3RhbGxlZCBkZWZhdWx0IHJ1bGUgZm9yCgltZXRob2RfaW52b2NhdGlvbjouCgkoYXJndW1lbnRfbGlzdDopOiBBZGRlZCBjb2RlIHRvIGJ1aWxkIHRoZSBhcmd1bWVudCBsaXN0LgoJKG1ldGhvZF9pbnZvY2F0aW9uOik6IEFkZGVkIGNhbGwgdG8gY3JlYXRlIHRoZSBtZXRob2QgaW52b2NhdGlvbgoJbm9kZS4KCSh5eWVycm9yKTogTm93IHVzZSBvYnN0YWNrX2dyb3cwLiBSZW1vdmVkIGJvZ3VzIG9ic3RhY2tfZnJlZS4KCShkZWJ1Z19saW5lKTogTmV3IGZ1bmN0aW9uIGZvciBkZWJ1Zy4KCShjb21wbGV0ZV9jbGFzc19kZWNsKTogTm8gbG9uZ2VyIGRvIHNvbWV0aGluZyBkdXJpbmcgcGFzcyAxLgoJKG1ldGhvZF9oZWFkZXIpOiBVc2UgQlVJTERfUFRSX0ZST01fTkFNRS4KCShwYXJzZXJfcXVhbGlmaWVkX2NsYXNzbmFtZSk6IFVzZSBvYnN0YWNrX2dyb3cwLiBSZW1vdmVkIGJvZ3VzCglvYnN0YWNrX2ZyZWUuCgkocGFyc2VyX2NoYWluX2luY29tcGxldGVfaXRlbSk6IFVzZSBCVUlMRF9QVFJfRlJPTV9OQU1FLiBNb2RpZmllZAoJZnVuY3Rpb24ncyBtYWluIGNvbW1lbnQuCgkoamF2YV9jb21wbGV0ZV9jbGFzcyk6IFNldCBDTEFTU19MT0FERURfUCBvbiBhbGwgZml4ZWQgaW5jb21wbGV0ZQoJY2xhc3Nlcy4KCShjb21wbGV0ZV9tZXRob2RfZGVjbCk6IFVzZSBCVUlMRF9QVFJfRlJPTV9OQU1FIGFuZCBwcm9tb3RlIHR5cGVzLgoJKHJlc29sdmVfY2xhc3MpOiBOb3cgd29ya3Mgd2l0aCBhcnJheXMuCgkoZG9fcmVzb2x2ZV9jbGFzcywgcmVzb2x2ZV9hbmRfbGF5b3V0KTogTmV3IGZ1bmN0aW9ucy4KCShqYXZhX2NoZWNrX3JlZ3VsYXJfbWV0aG9kcyk6IFJldmVyc2UgbWV0aG9kIGxpc3QgYmVmb3JlIGFuZCBhZnRlcgoJaGF2aW5nIHByb2Nlc3NlZCBpdC4gTm8gbG9uZ2VyIHNldCBjdHhwLT5hcnRpZmljaWFsX2NvbnN0cnVjdG9yLgoJKHJlYWRfaW1wb3J0X2Rpcik6IFRlc3QgamNmLT5vdXRvZnN5bmNoIGFuZCBjYWxsIGpjZl9vdXRfb2Zfc3luY2gKCWFjY29yZGluZ2x5LiBGaXhlZCB0eXBvIGluIGlzc3VlZCBlcnJvciBtZXNzYWdlLiBOb3cgdXNlCglvYnN0YWNrX2dyb3cwLgoJKGZpbmRfaW5faW1wb3J0c19vbl9kZW1hbmQpOiBOb3cgdXNlIG9ic3RhY2tfZ3JvdzAuCgkoZGVjbGFyZV9sb2NhbF92YXJpYWJsZXMpOiBVc2UgQlVJTERfUFRSX0ZST01fTkFNRS4KCShzb3VyY2VfZW5kX2phdmFfbWV0aG9kKTogQ2FsbCBleHBhbmRfZXhwcl9zdG10IGluc3RlYWQgb2YKCWV4cGFuZF9leHByLiBDYWxscyBpdCBiZWZvcmUgY2FsbGluZyBleHBhbmRfZnVuY3Rpb25fZW5kLgoJKGphdmFfbWV0aG9kX2FkZF9zdG10KTogRG8gbm90aGluZyBpZiBlcnJvcnMgd2VyZSBmb3VuZCBkdXJpbmcKCXBhcnNpbmcuCgkoamF2YV9sYXlvdXRfcGFyc2VkX2NsYXNzKTogU2V0IENMQVNTX0xPQURFRF9QIGFuZCBmaXhlZCB0eXBvLgoJKGJ1aWxkX21ldGhvZF9pbnZvY2F0aW9uX3N0bXQsIGJ1aWxkX2ludm9rZSwgaW52b2NhdGlvbl9tb2RlLAoJbG9va3VwX21ldGhvZF9pbnZva2UsIHJlZmluZV9hY2Nlc3NpYmxlX21ldGhvZHNfbGlzdCwKCXF1YWxpZnlfYW1iaWd1b3VzX25hbWUsIGJyZWFrZG93bl9xdWFsaWZpZWQsIGlkZW50aWNhbF9zdWJwYXRoX3ApOgoJTmV3IGZ1bmN0aW9ucy4KCSogdHlwZWNrLmMgKGJ1aWxkX2phdmFfc2lnbmF0dXJlKTogUHJvcGVybHkgZW5kIG1ldGhvZCBzaWduYXR1cmUKCWlmIHJldHVybiB0eXBlIHNraXBwZWQuCgkobWF0Y2hfamF2YV9tZXRob2QpOiBOZXcgZnVuY3Rpb24uCgoxOTk4LTAzLTE2ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGpjZi1pby5jIChmaW5kX2NsYXNzZmlsZSk6ICBJZiBVU0VfSkNGX1NURElPLCBmb3BlbiBpbiBiaW5hcnkgbW9kZS4KCjE5OTgtMDItMjUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogZXhwci5jIChidWlsZF9pbnZva2Vfbm9uX2ludGVyZmFjZSk6IE5ldyBmdW5jdGlvbi4KCShtZXRob2RzX2lkZW50LCBuY29kZV9pZGVudCk6IE5vdyBzdGF0aWMgZ2xvYmFscy4KCShleHBhbmRfaW52b2tlKTogVXNlIGJ1aWxkX2ludm9rZV9ub25faW50ZXJmYWNlLgoJKiBqYXZhLXRyZWUuaCAoc3RydWN0IGxhbmdfZGVjbCk6IE5ldyBmaWVsZCBmdW5jdGlvbl9kZWNsX2JvZHkuCgkoREVDTF9GVU5DVElPTl9CT0RZKTogTmV3IG1hY3JvLgoJKiBqY2YtcGFyc2UuYyAoamNmX3BhcnNlX3NvdXJjZSk6IERlZXBlciBjaGVjayBiZWZvcmUgc2V0dGluZwoJQ0xBU1NfRlJPTV9TT1VSQ0VfUC4KCShwYXJzZV9zb3VyY2VfZmlsZSk6IEZpeGVkIHR5cG9zLiBDYWxsIGphdmFfbGF5b3V0X3BhcnNlZF9jbGFzcwoJYmVmb3JlIHN0YXJ0aW5nIHBhc3MgMi4gQ2FsbCB0byBqYXZhX2dlbmVyYXRlX3BhcnNlZF9jbGFzcyByZXBsYWNlZAoJYnkgamF2YV9yZWdpc3Rlcl9wYXJzZWRfY2xhc3MuCgkqIGxleC5jOiBGaXhlZCB0eXBvIGluIGhlYWRlci4gU29tZSBsaW5lIHdpZHRoIHJlbGF0ZWQgZm9ybWF0aW5nLgoJKiBsZXguaDogU29tZSBsaW5lIHdpZHRoIHJlbGF0ZWQgZm9ybWF0aW5nLgoJKiBwYXJzZS5oIChzb3VyY2VfZW5kX2phdmFfbWV0aG9kLCByZXNvbHZlX2V4cHJlc3Npb25fbmFtZSwKCWNvbXBsZXRlX2NsYXNzX2RlY2wsIG1heWJlX2NyZWF0ZV9jbGFzc19pbnRlcmZhY2VfZGVjbCwKCWNoZWNrX2NsYXNzX2ludGVyZmFjZV9jcmVhdGlvbik6IE5ldyBzdGF0aWMgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgoJKGphdmFfbGF5b3V0X3BhcnNlZF9jbGFzcywgamF2YV9tZXRob2RfYWRkX3N0bXQpOiBOZXcgZnVuY3Rpb24KCWRlY2xhcmF0aW9ucy4KCShzdHJ1Y3QgcGFyc2VyX2N0eHQpOiBGaWVsZCBtYXJrX2NsYXNzX2dlbmVyYXRlIHJlbW92ZWQuIE5ldwoJZmllbGRzIGNsYXNzX2xpc3QgYW5kIGFydGlmaWNpYWxfY29uc3RydWN0b3IuCgkqIHBhcnNlLnk6IEZpeGVkIHR5cG8gaW4gaGVhZGVyLgoJKGNsYXNzX2RlY2xhcmF0aW9uOik6IENhbGwgY29tcGxldGVfY2xhc3NfZGVjbCB3aGVuIGNsYXNzIGJvZHkKCXBhcnNlZC4KCShtZXRob2RfZGVjbGFyYXRpb246KTogQ2FsbCBzb3VyY2VfZW5kX2phdmFfbWV0aG9kIGluIHBhc3MgMiB3aGVuCgl0aGUgbWV0aG9kIGJvZHkgaXMgZGVmaW5lZC4KCShwb3N0Zml4X2V4cHJlc3Npb246KTogRG8gZXhwcmVzc2lvbiBuYW1lIHJlc29sdXRpb24gb24gc3ViLXJ1bGUKCW5hbWUgZHVyaW5nIHBhc3MgMi4KCShjcmVhdGVfY2xhc3MsIGNyZWF0ZV9pbnRlcmZhY2UpOiBNZXJnZWQgY29tbW9uIHBpZWNlcy4KCShjaGVja19jbGFzc19pbnRlcmZhY2VfY3JlYXRpb24sIG1heWJlX2NyZWF0ZV9jbGFzc19pbnRlcmZhY2VfZGVjbCk6CglOZXcgZnVuY3Rpb25zLgoJKGNvbXBsZXRlX2NsYXNzX2RlY2wpOiBOZXcgZnVuY3Rpb24uCgkocmVnaXN0ZXJfZmllbGRzKTogRml4ZWQgbGluZSB3aWR0aCByZWxhdGVkIHR5cG8uCgkobWV0aG9kX2hlYWRlcik6IENvcnJlY3RseSBza2lwIGZpcnN0IGFyZ3VtZW50IHdoZW4gZml4aW5nCglhcmd1bWVudCBsaW5lLiBDaGFuZ2VkIHRoZSBsb29wLgoJKGphdmFfY2hlY2tfY2lyY3VsYXJfcmVmZXJlbmNlKTogTm93IHVzZSBjdHhwLT5jbGFzc19saXN0LgoJKGphdmFfY29tcGxldGVfY2xhc3MpOiBSZW1vdmVkIHN0YXJ0L3N0b3AgbWFya2luZy4KCShqYXZhX2NoZWNrX3JlZ3VsYXJfbWV0aG9kcyk6IE5vdyB0YWtlcyBhIGNsYXNzIGRlY2wgYXMgYW4KCWFyZ3VtZW50LiAgQWRkIGRlZmF1bHQgY29uc3RydWN0b3IgaWYgbm9uZSB3ZXJlIGVuY291bnRlcmVkLgoJKGphdmFfY2hlY2tfbWV0aG9kcyk6IE5vdyB1c2UgY3R4cC0+Y2xhc3NfbGlzdC4gQ2hhbmdlZCBjYWxsIHRvCglqYXZhX2NoZWNrX3JlZ3VsYXJfbWV0aG9kcy4KCShzb3VyY2Vfc3RhcnRfamF2YV9tZXRob2QpOiBTZXQgREVDTF9BUkdfVFlQRSBmb3IgZWFjaCBmdW5jdGlvbgoJYXJndW1lbnRzLgoJKHNvdXJjZV9lbmRfamF2YV9tZXRob2QsIGphdmFfbWV0aG9kX2FkZF9zdG10KTogTmV3IGZ1bmN0aW9ucy4KCShqYXZhX2dlbmVyYXRlX3BhcnNlZF9jbGFzcyk6IE5vIGxvbmdlciBleGlzdHMuCgkoamF2YV9sYXlvdXRfcGFyc2VkX2NsYXNzLCBqYXZhX3JlZ2lzdGVyX3BhcnNlZF9jbGFzcyk6IE5ldyBmdW5jdGlvbnMuCgkocmVzb2x2ZV9leHByZXNzaW9uX25hbWUpOiBOZXcgZnVuY3Rpb24uCgoxOTk4LTAyLTEyICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGpjZi1wYXJzZS5jOiAocGFyc2Vfc291cmNlX2ZpbGUpOiBDaGVjayBvbiBlcnJvcnMgYWZ0ZXIgaW5pdCBsZXguCgkqIGxleC5jOiAoamF2YV9pbml0X2xleCk6IERlZmVyIGN0eHAtPmphdmFfcGFzcyBpbml0aWFsaXphdGlvbgoJdW50aWwgcGFzcyBpbml0aWFsaXphdGlvbnMgYXJlIGRvbmUuIENhbGwgcmVhZF9pbXBvcnRfZGlyIHdpdGgKCXBhc3Mgc2V0IHRvIDAuCgkqIHBhcnNlLmg6IChsb29rdXBfbW9kaWZpZXJfY2wpOiBOZXcgZnVuY3Rpb24gZGVjbGFyZWQuCgkoSU5URVJGQUNFX0ZJRUxEX01PRElGSUVSUyk6IE5ldyBtYWNyby4KCShPQlNPTEVURV9NT0RJRklFUl9XQVJOSU5HKTogTmV3IG1hY3JvLgoJKiBwYXJzZS55OiAocmVnaXN0ZXJfZmllbGRzKTogQ2xhc3MgdHlwZSBhbmQgY3VycmVudCBmaWVsZCBuYW1lIGluCglsb2NhbCB2YXJpYWJsZXMuIENoZWNrIG1vZGlmaWVyKHMpIGlmIGFkZGluZyBmaWVsZChzKSB0byBhbiBpbnRlcmZhY2UuCgkoY2hlY2tfYWJzdHJhY3RfbWV0aG9kX2hlYWRlcik6IE5vdyB1c2UgT0JTT0xFVEVfTU9ESUZJRVJfV0FSTklORwoJYW5kIHJlcG9ydCBlcnJvcnMgdXNpbmcgdGhlIGZhdWx0eSBtb2RpZmllciBsaW5lIGNvbnRleHQuCgkobG9va3VwX21vZGlmaWVyX2NsKTogTmV3IGZ1bmN0aW9uLgoJKHJlYWRfaW1wb3J0X2Rpcik6IERldGVjdCBhbmQgcmVwb3J0IGRlZmF1bHQgaW1wb3J0IHByb2Nlc3NpbmcKCWZhaWx1cmUuCgoxOTk4LTAyLTExICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCUFkZCBhIHBhaXIgb2YgLWZhc3N1bWUtY29tcGlsZWQvLWZuby1hc3N1bWUtY29tcGlsZWQgb3B0aW9ucy4KCSogY2xhc3MuYyAoaXNfY29tcGlsZWRfY2xhc3MpOiBSZXR1cm4gMSBhZnRlciBtYWtpbmcgc3VyZSBpdAoJcXVhbGlmaWVzIGFzIGxvYWRlZCwgaWYgRkxBR19BU1NVTUVfQ09NUElMRUQgaXMgc2V0LgoJKiBsYW5nLW9wdGlvbnMuaDogQWRkIC1mYXNzdW1lLWNvbXBpbGVkLy1mbm8tYXNzdW1lLWNvbXBpbGVkLgoJKiBqYXZhLXRyZWUuaCAoZmxhZ19hc3N1bWVfY29tcGlsZWQpOiBBZGQgZGVjbC4KCSogbGFuZy5jIChsYW5nX2Zfb3B0aW9ucyk6IEFkZCB0aGUgZmxhZy4KCShmbGFnX2Fzc3VtZV9jb21waWxlZCk6IEFkZCBkZWNsLCBkZWZhdWx0IHRvIDAuCgoxOTk4LTAyLTExICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGNsYXNzX2RlcHRoKTogQ2FsbCB0byBsb2FkX2NsYXNzIHVzZXMgZXh0cmEgVkVSQk9TRSBhcmcuCgkoaXNfY29tcGlsZWRfY2xhc3MpOiBMaWtld2lzZS4KCShsYXlvdXRfY2xhc3MpOiBMaWtld2lzZS4KCShsYXlvdXRfY2xhc3MpOiBEZXRlY3QgYW5kIGxheSBvdXQgY2xhc3NlcyBkZWZpbmVkIGluIHNvdXJjZSBjb2RlLgoJKGludGVyZmFjZV9vZl9wLCBhZGRfaW50ZXJmYWNlX2RvLCBtYXlfYWRkX2ludGVyZmFjZSk6IE5ldwoJZnVuY3Rpb24uCgkoYWRkX2ludGVyZmFjZSk6IE5vdyB1c2UgYWRkX2ludGVyZmFjZV9kby4KCShhZGRfbWV0aG9kXzEpOiBOZXcgZnVuY3Rpb24uCgkoYWRkX21ldGhvZCk6IE5vdyB1c2UgYWRkX21ldGhvZF8xLgoJKHB1c2hsZXZlbCk6IERlYnVnIG1lc3NhZ2UgY29uZGl0aW9uYWwgdG8gU09VUkNFX0ZST05URU5EX0RFQlVHLgoJKGNvbXBsZXRlX3N0YXJ0X2phdmFfbWV0aG9kKTogTmV3IGZ1bmN0aW9uLgoJKHN0YXJ0X2phdmFfbWVob2QpOiBOb3cgY2FsbCBjb21wbGV0ZV9zdGFydF9qYXZhX21ldGhvZC4KCSogZXhwci5jIChsb29rdXBfZmllbGQpOiBDYWxsIHRvIGxvYWRfY2xhc3MgdXNlcyBleHRyYSBWRVJCT1NFIGFyZy4KCShleHBhbmRfaW52b2tlKTogTGlrZXdpc2UgYW5kIGZpeGVkIHR5cG8uCgkqZ2phdmEuYzogKHByaW50X3N1cGVyX2ZpZWxkKTogVXNlIG5ldyBhcmd1bWVudCB0byBmaW5kX2NsYXNzCglET19DTEFTU19GSUxFLgoJKG1haW4pOiBMaWtld2lzZS4KCSpqYXZhLXRyZWUuaDogKENMQVNTX0ZST01fU09VUkNFX1ApOiBOZXcgZmxhZyBvbiBSRUNPUkRfVFlQRS4KCShJU19BX1NJTkdMRV9JTVBPUlRfQ0xBU1NGSUxFX05BTUVfUCwgSVNfQV9DTEFTU0ZJTEVfTkFNRSwKCVFVQUxJRklFRF9QLCBJU19BTl9JTVBPUlRfT05fREVNQU5EX1ApOiBOZXcgZmxhZ3Mgb24KCUlERU5USUZJRVJfTk9ERS4KCShDTEFTU19DT01QTEVURV9QKTogTmV3IGZsYWcgb24gVFlQRV9ERUNMLgoJKGFkZF9tZXRob2RfMSwgcHVzaF9jbGFzcyk6IE5ldyBwcm90b3R5cGVzLgoJKmpjZi1kdW1wLmM6IGZpbmRfY2xhc3Mgbm93IHVzZXMgbmV3IERPX0NMQVNTX0ZJTEUgYXJndW1lbnQuCgkqamNmLWlvLmM6IChvcGVuX2luX3ppcCk6IGpjZiBub3cgc3RvcmVzIGEgcG9pbnRlciB0byB0aGUgWmlwCglkaXJlY3Rvcnkgd2hlcmUgdGhlIGNsYXNzIHdhcyBmb3VuZC4KCShmaW5kX2NsYXNzKTogTmV3IGFyZ3VtZW50IERPX0NMQVNTX0ZJTEUuIEZ1bmN0aW9uIGZpbmRfY2xhc3MKCW1vZGlmaWVkIGFjY29yZGluZ2x5LgoJKmpjZi1wYXJzZS5jOiAoZml4X2NsYXNzX3BhdGgpOiBOZXcgZnVuY3Rpb24uCgkobG9hZF9jbGFzcyk6IFVzZSBuZXcgVkVSQk9TRSBhcmd1bWVudC4gbG9hZF9jbGFzcyBub3cgZmluZHMgYW5kCglsb2Fkcy9wYXJzZXMgLmNsYXNzLy5qYXZhIGZpbGVzLiBTYXZlIHJlYWRfc3RhdGUgb2YgY3VycmVudF9qY2YKCWlmIG5lY2Vzc2FyeS4KCShqYXZhX3BhcnNlcl9hYm9ydF9vbl9lcnJvcik6IE5ldyBtYWNyby4KCShqY2ZfcGFyc2Vfc291cmNlLCBwYXJzZV9zb3VyY2VfZmlsZSk6IE5ldyBmdW5jdGlvbi4KCShqY2ZfcGFyc2UpOiBGaXhlZCB0eXBvLgoJKHl5cGFyc2UpOiBDYWxsIHBhcnNlX3NvdXJjZV9maWxlICgpIG9ubHkuCgkocHJvY2Vzc196aXBfZGlyKTogRml4ZWQgdHlwbywgZml4IHpkaXItPmZpbGVuYW1lX2xlbmd0aCB3aGVuCgl3cml0aW5nIHRoZSByZWFsIGNsYXNzIG5hbWUgYmFjayBpbiB0aGUgemlwIGRpcmVjdG9yeSBlbnRyeS4KCShmaW5kX2luX2N1cnJlbnRfemlwKTogSURFTlRJRklFUl9DTEFTU19WQUxVRSBtYXkgYmUgbnVsbC4KCShqY2ZfZmlndXJlX2ZpbGVfdHlwZSk6IEZpeGVkIGJvZ3VzIGFsbG9jIGFuZCBiY29weS4KCSpqY2YuaDogKHR5cGVkZWYgc3RydWN0IEpDRik6IE5ldyBmaWVsZHMgamF2YV9zb3VyY2UgYW5kIHppcGQuCgkoZmluZF9jbGFzcyk6IFByb3RvdHlwZSBmaXhlZC4KCSpsZXguYzogQWRkZWQgMTk5OCB0aW1lIHN0YW1wLgoJUmVtb3ZlZCBhbGwgc3RhdGljIGdsb2JhbCB2YXJpYWJsZXMsIG1vdmVkIGludG8gdGhlIHBhcnNlcgoJY29udGV4dCBkYXRhIHN0cnVjdHVyZS4uIE5vdyBpbmNsdWRlIHVuaXN0ZC5oIGlmIFNFRUtfU0VUIG5vdAoJZGVmaW5lZC4KCShqYXZhX2luaXRfbGV4KTogUmV3cml0dGVuLgoJKGphdmFfc25lYWtfdW5pY29kZSk6IE1vZGlmaWVkIGN1cnJlbnQgdW5pY29kZSBhY2Nlc3MgaW4gY3VycmVudCBsaW5lLgoJKGphdmFfdW5nZXRfdW5pY29kZSk6IExpa2V3aXNlLgoJKGphdmFfYWxsb2NhdGVfbmV3X2xpbmUpOiBOZXcgYWxsb2NhdGlvbiBtYW5hZ2VtZW50LgoJKGphdmFfcmVhZF9jaGFyKTogTW9kaWZpZWQgYWNjZXNzIGFuZCBzdG9yYWdlIG9mIHVuZ2V0X3V0ZjhfdmFsdWUuCglOZXcgd2F5IG9mIHByb2Nlc3NpbmcgY3VycmVudCB1bmljb2RlLgoJKGphdmFfc3RvcmVfdW5pY29kZSwgamF2YV9yZWFkX3VuaWNvZGUpOiBGaXhlZCB0eXBvIGluIGRlY2xhcmF0aW9uLgoJKGphdmFfZ2V0X3VuaWNvZGUpOiBOb3cgdXNlIHRoZSBwYXJzZXIgY29udGV4dC4KCShqYXZhX2xpbmV0ZXJtaW5hdG9yKTogTGlrZXdpc2UuCgkoamF2YV9sZXgpOiBOb3cgdXNlZCBqYXZhX2x2YWwgYXJndW1lbnQgKHBvaW50ZXIgdG8gWVlTVFlQRSksIHBhcnQKCW9mIHRoZSByZWVudHJhbnQgcGFyc2VyIGltcGxlbWVudGF0aW9uLiBGdW5jdGlvbiBub3cgdXNlIHRoZQoJcGFyc2VyIGNvbnRleHQgZGF0YSBzdHJ1Y3R1cmUgYW5kIGphdmFfbHZhbC4gRml4ZWQgcHJvZHVjdGlvbiBvZgoJdGhlIGZsb2F0IGFuZCBkb3VibGUgY29uc3RhbnQgIm91dCBvZiByYW5nZSIgZXJyb3IgbWVzc2FnZS4gRml4ZWQKCW9ic3RhY2sgdXNlLiBSZXR1cm4gaW50ZWdlciB2YWx1ZSB3aGVuIGhpdHRpbmcgYSBtb2RpZmllci4gTm93CglyZXR1cm4gdHlwZSBmb3IgVFJVRSwgRkFMU0UgYW5kIG90aGVyIHByZWRlZmluZWQgdHlwZXMuIFJldHVybgoJaWRlbnRpZmllciBhcyBhIFRSRUVfTElTVCBsaXN0IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgbGluZSBjb250ZXh0CglhcyB0aGUgVFJFRV9WQUxVRSBzdWItbm9kZS4KCShqYXZhX3VuaWNvZGVfMl91dGY4KTogRml4ZWQgdHlwbyBpbiBkZWNsYXJhdGlvbi4KCShqYXZhX2xleF9lcnJvcik6IE5vdyB1c2UgdGhlIHBhcnNlciBjb250ZXh0IGRhdGEgc3RydWN0dXJlLgoJKmxleC5oOiBBZGRlZCAxOTk4IHRpbWUgc3RhbXAuCgkoc3RydWN0IGphdmFfbGluZSk6IE5ldyBmaWVsZHMgcmVmX2NvdW50IGFuZCBuZXh0LgoJKEpBVkFfTElORV9DSEVDSywgSkFWQV9MSU5FX01BUkssIEpBVkFfTElORV9DSEFJTiwKCUpBVkFfTElORV9VTk1BUkssIElEX05BTUUsIElEX0NMKTogTmV3IG1hY3Jvcy4KCShKQVZBX0ZMT0FUX1JBTkdFX0VSUk9SLCBKQVZBX0lOVEVHUkFMX1JBTkdFX0VSUk9SLCBVTkdFVEMpOiBGaXhlZC4KCSpwYXJzZS5oOiBBZGRlZCAxOTk4IHRpbWUgc3RhbXAuCgkoamF2YV9wYXJzZV9zb3VyY2VfZmlsZSk6IFJlbmFtZWQgZnJvbSBwYXJzZV9zb3VyY2VfZmlsZS4KCShZWUVSUk9SX05PVywgWVlOT1RfVFdJQ0UpOiBGaXhlZC4KCShDTEFTU19NT0RJRklFUlMsIEZJRUxEX01PRElGSUVSUywgTUVUSE9EX01PRElGSUVSUywKCUlOVEVSRkFDRV9NT0RJRklFUiwgSU5URVJGQUNFX01FVEhPRF9NT0RJRklFUlMsCglKQVZBX01PRElGSUVSX0NUWF9VTk1BUkssIElDX0RFQ0wsIElDX0RFUEVORCwgREVQRU5EX0RFQ0wsCglUSElTX01PRElGSUVSX09OTFksIEFCU1RSQUNUX0NIRUNLLCBCRUdJTl9PTkxZX1BBU1MsCglFTkRfT05MWV9QQVNTLCBFTFNFX09OTFlfUEFTUywgZXhpdF9qYXZhX2NvbXBsZXRlX2NsYXNzLAoJQ0xBU1NfT1JfSU5URVJGQUNFLCBJTkNPTVBMRVRFX1ApOiBOZXcgbWFjcm9zLgoJKHN0cnVjdCBwYXJzZXJfY3R4dCk6IE5ldyBkYXRhIHN0cnVjdHVyZSB0byBrZWVwIHRoZSBwYXJzZXIgY29udGV4dC4KCSpwYXJzZS55OiBBZGRlZCAxOTk4IHRpbWUgc3RhbXAsIGdvdCByaWQgb2Ygc3RhdGljIGdsb2JhbCB2YXJpYWJsZXMuCgkoamF2YV9lcnJvcl9jb3VudCwgY3R4cCk6IE5ldyBnbG9iYWwgdmFyaWFibGVzLgoJKCV1bmlvbik6IE5ldyB2YWx1ZSBmaWVsZC4KCShudW1lcmljX3R5cGUsIGludGVncmFsX3R5cGUpOiBSdWxlcyByZW1vdmVkLgoJKHByaW1pdGl2ZV90eXBlKTogUnVsZSBkZWZpbmVkIHRvIGhhbmRsZSBpbnRlZ3JhbCwgZmxvYXQsIGRvdWJsZSBhbmQKCWJvb2xlYW4gdHlwZXMuCgkocXVhbGlmaWVkX25hbWUsIHBhY2thZ2VfZGVjbGFyYXRpb24sCglzaW5nbGVfdHlwZV9pbXBvcnRfZGVjbGFyYXRpb24sIHR5cGVfaW1wb3J0X29uX2RlbWFuZF9kZWNsYXJhdGlvbiwKCW1vZGlmaWVycywgY2xhc3NfZGVjbGFyYXRpb24sIHN1cGVyLCBpbnRlcmZhY2VzLAoJaW50ZXJmYWNlX3R5cGVfbGlzdCwgY2xhc3NfYm9keSwgZmllbGRfZGVjbGFyYXRpb24sCglmaWVsZF9kZWNsYXJhdGlvbiwgdmFyaWFibGVfZGVjbGFyYXRvcnMsIHZhcmlhYmxlX2RlY2xhcmF0b3IsCgl2YXJpYWJsZV9kZWNsYXJhdG9yX2lkLCBtZXRob2RfZGVjbGFyYXRpb24sIG1ldGhvZF9oZWFkZXIsCglmb3JtYWxfcGFyYW1ldGVyX2xpc3QsIGZvcm1hbF9wYXJhbWV0ZXIsIG1ldGhvZF9ib2R5LCBibG9jaywKCXN0YXRpYywgaW50ZXJmYWNlX2RlY2xhcmF0aW9uLCBleHRlbmRzX2ludGVyZmFjZXMsCglhYnN0cmFjdF9tZXRob2RfZGVjbGFyYXRpb24sIGxvY2FsX3ZhcmlhYmxlX2RlY2xhcmF0b3JzKTogUnVsZXMgbm93CglkZWZpbmUgYWN0aW9ucy4KCShmb3JjZV9lcnJvciwgZG9fd2FybmluZyk6IE5ldyBnbG9iYWwgc3RhdGljcy4KCShwdXNoX3BhcnNlcl9jb250ZXh0LCBwYXJzZXJfY29udGV4dF9zYXZlX2dsb2JhbCwKCXBhcnNlcl9jb250ZXh0X3Jlc3RvcmVfZ2xvYmFsLCBwb3BfcGFyc2VyX2NvbnRleHQpOiBOZXcgZnVuY3Rpb25zLgoJKHl5ZXJyb3IpOiBOb3cgdXNlcyB0aGUgZ2xvYmFsIHBhcnNlciBjb250ZXh0LiBGaXhlZCB1c2Ugb2Ygb2JzdGFjay4KCShwYXJzZV9lcnJvciwgcGFyc2VfZXJyb3JfY29udGV4dCwgcGFyc2Vfd2FybmluZ19jb250ZXh0LAoJamF2YV9hY2NzdHJpbmdfbG9va3VwLCByZWRlZmluaXRpb25fZXJyb3IsIGNoZWNrX21vZGlmaWVycywKCXBhcnNlcl9hZGRfaW50ZXJmYWNlLCBjcmVhdGVfaW50ZXJmYWNlLCBjcmVhdGVfY2xhc3MsIGZpbmRfZmllbGQsCglkdXBsaWNhdGVfZGVjbGFyYXRpb25fZXJyb3IsIHJlZ2lzdGVyX2ZpZWxkcywgbWV0aG9kX2hlYWRlciwKCWNoZWNrX21vZGlmaWVyc19jb25zaXN0ZW5jeSwgY2hlY2tfYWJzdHJhY3RfbWV0aG9kX2hlYWRlciwKCW1ldGhvZF9kZWNsYXJhdG9yLCBwYXJzZXJfcXVhbGlmaWVkX2NsYXNzbmFtZSwKCXBhcnNlcl9jaGVja19zdXBlcl9pbnRlcmZhY2UsIHBhcnNlcl9jaGVja19zdXBlciwKCXBhcnNlcl9jaGFpbl9pbmNvbXBsZXRlX2l0ZW0sIGphdmFfY2hlY2tfY2lyY3VsYXJfcmVmZXJlbmNlLAoJbGF5b3V0X2NsYXNzX2Zyb21fc291cmNlLCBqYXZhX2NvbXBsZXRlX2NsYXNzLAoJY29tcGxldGVfbWV0aG9kX2RlY2wsIHJlc29sdmVfY2xhc3MsIGNvbXBsZXRlX2NsYXNzX3JlcG9ydF9lcnJvcnMsCglqYXZhX2NoZWNrX2ZpbmFsLCBjaGVja19tZXRob2RfcmVkZWZpbml0aW9uLAoJamF2YV9jaGVja19yZWd1bGFyX21ldGhvZHMsIGphdmFfY2hlY2tfYWJzdHJhY3RfbWV0aG9kcywKCWphdmFfY2hlY2tfbWV0aG9kcywgbG9va3VwX2phdmFfaW50ZXJmYWNlX21ldGhvZDIsCglsb29rdXBfamF2YV9tZXRob2QyLCBsb29rdXBfY2wsIGZpbmRfbmFtZV9pbl9zaW5nbGVfaW1wb3J0cywKCXByb2Nlc3NfaW1wb3J0cywgZmluZF9pbl9pbXBvcnRzLCByZWFkX2ltcG9ydF9lbnRyeSwKCXJlYWRfaW1wb3J0X2RpciwgZmluZF9pbl9pbXBvcnRzX29uX2RlbWFuZCwKCWNoZWNrX3BrZ19jbGFzc19hY2Nlc3MsIG5vdF9idWlsdGluX3AsIGRlY2xhcmVfbG9jYWxfdmFyaWFibGVzLAoJc291cmNlX3N0YXJ0X2phdmFfbWV0aG9kLCBqYXZhX2dlbmVyYXRlX3BhcnNlZF9jbGFzcyk6IE5ldwoJZnVuY3Rpb25zLgoJKnR5cGVjay5jOiAoc2lnbmF0dXJlX2luY2x1ZGVfcmV0dXJuKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShidWlsZF9qYXZhX3NpZ25hdHVyZSk6IFVzZSBTSUdOQVRVUkVfSU5DTFVERV9SRVRVUk4gZmlndXJlIHdoZXRoZXIKCXRvIGFkZCB0aGUgZnVuY3Rpb24gcmV0dXJuZWQgdHlwZSBpbiB0aGUgc2lnbmF0dXJlLgoKMTk5OC0wMi0wOSAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AY3lnbnVzLmNvbT4KCgkqIGpjZi1pby5jIChvcGVuX2luX3ppcCk6IFVzZSBzdHJuY21wIGFuZCBMRU4uCgoxOTk4LTAxLTI5ICBEYXZlIEJyb2xsZXkgIDxicm9sbGV5QGN5Z251cy5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEuaW5mbyk6IEFkZGVkLgoJKGphdmEuaW5zdGFsbC1pbmZvKTogQWRkZWQKCjE5OTgtMDEtMjcgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoY2xlYW4pOiBBbHNvIHJlbW92ZSBqYXZhL3BhcnNlLmMuCgoxOTk4LTAxLTI2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCUFkZCBhIHBhaXIgb2YgLWZib3VuZHMtY2hlY2svLWZuby1ib3VuZHMtY2hlY2sgb3B0aW9ucy4KCSogbGFuZy5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBBZGQgY29kZSB0byBncm9rIGFyZ3VtZW50cy4KCShmbGFnX2JvdW5kc19jaGVjayk6IEFkZCBkZWNsLgoJKGxhbmdfZl9vcHRpb25zKTogTmV3IGFycmF5IHcvIHRoZSBvcHRpb24gaW4gaXQuCgkqIGphdmEtdHJlZS5oIChmbGFnX2JvdW5kc19jaGVjayk6IEFkZCBkZWNsLgoJKiBsYW5nLW9wdGlvbnMuaDogTmV3IGZpbGUuCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9hcnJheWFjY2Vzcyk6IFVzZSBmbGFnX2JvdW5kc19jaGVjayBpbnN0ZWFkCglvZiBhIHN0YXRpYyBtYWNybyB2YWx1ZS4KCShKQVZBX0FSUkFZX0VYQ0VQVElPTik6IERlbGV0ZSBtYWNyby4KCjE5OTgtMDEtMjMgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2phdmFfYXJyYXlfdHlwZSk6ICBGaXggdHdvIGJ1Z3MgaW4gcHJldmlvdXMgY2hhbmdlLgoJKiBleHByLmMgKGJ1aWxkX2FuZXdhcnJheSk6ICBBZGQgbWlzc2luZyBwcm9tb3RlX3R5cGUuCgoxOTk4LTAxLTIyICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCglBZGQgYXJyYXkgdHlwZXMgd2l0aCBrbm93biBsZW5ndGggdG8gb3B0aW1pemUgYm91bmRzIGNoZWNraW5nLgoJKiB0eXBlY2suYyAoYnVpbGRfamF2YV9hcnJheV90eXBlKTogIFRha2UgbGVuZ3RoIHBhcmFtZXRlci4KCShqYXZhX2FycmF5X3R5cGVfbGVuZ3RoLCBidWlsZF9wcmltX2FycmF5X3R5cGUpOiAgTmV3IGZ1bmN0aW9ucy4KCSogamF2YS10cmVlLmg6ICBVcGRhdGUgZm9yIG5ldyBmdW5jdGlvbnMuCgkqIGV4cHIuYywgdHlwZWNrLmMsIHZlcmlmeS5jOiBVcGRhdGUgYnVpbGRfamF2YV9hcnJheV90eXBlIGNhbGxzLgoJKiBjbGFzcy5jOiAgVXNlIGJ1aWxkX3ByaW1fYXJyYXlfdHlwZS4KCSogZXhwci5jIChjYW5fd2lkZW5fcmVmZXJlbmNlX3RvKTogIEhhbmRsZSBrbm93bi1sZW5ndGggYXJyYXkgdHlwZXMuCgkodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiAgS2VlcCB0cmFjayBvZiBpbnRlZ2VyIHB1c2ggaW5zdHJ1Y3Rpb25zCglmb2xsb3dlZCBieSBuZXdhcnJheS9hbmV3YXJyYXksIHNvIHdlIGNhbiBidWlsZCBrbm93bi1sZW5ndGggYXJyYXlzLgoJKEpBVkFfQVJSQVlfREFUQV9PRkZTRVQpOiAgUmVwbGFjZSBieSAuLi4KCShqYXZhX2FycmF5X2RhdGFfb2Zmc2V0KTogIE5ldyBmdW5jdGlvbi4KCShidWlsZF9qYXZhX2FycmF5X2xlbmd0aF9hY2Nlc3MpOiAgTmV3IGZ1bmN0aW9uLiAgT3B0aW1pemUgaWYgY29uc3RhbnQuCgkoYnVpbGRfamF2YV9hcnJheWFjY2Vzcyk6ICBDb25zdGFudCBmb2xkIGJvdW5kcyBjaGVjay4KCShleHBhbmRfamF2YV9uZXdhcnJheSwgZXhwYW5kX2phdmFfYW5ld2FycmF5KTogIFJlcGxhY2VkIGJ5IC4uLgoJKGJ1aWxkX25ld2FycmF5LCBidWlsZF9hbmV3YXJyYXkpOiAgTmV3IGZ1bmN0aW9ucy4KCShBUlJBWV9ORVdfTlVNLCBBUlJBWV9ORVdfUFRSKTogIFVzZSBidWlsZF97YSx9bmV3YXJyYXkuCgkqIHZlcmlmeS5jIChtZXJnZV90eXBlcyk6ICBIYW5kbGUga25vd24tbGVuZ2ggYXJyYXkgdHlwZXMuCgoxOTk4LTAxLTE5ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2J5dGVfY29kZSk6ICBGaXggcGVyZm9ybWFjZSBidWcsIHdoaWNoIGNhdXNlZAoJc2VhcmNoaW5nIGxpbmVudW1iZXJfdGFibGUgdG8gYmUgbGluZWFyIHJhdGhlciB0aGFuIGNvbnN0YW50LgoKMTk5Ny0xMi0xMiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoQklTT04sIEJJU09ORkxBR1MpOiAgQWRkIG1pc3NpbmcgbWFjcm9zLgoKCSogZGVjbC5jLCBqYXZhLXRyZWUuaCAoc29mdF9mbW9kX25vZGUpOiAgTmV3IGdsb2JhbC4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6ICBEZWZpbmUgX19idWlsdGluX2Ztb2QuCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9iaW5vcCk6ICBJbXBsZW1lbnQgVFJVTkNfTU9EX0VYUFIgZm9yIFJFQUxfVFlQRQoJdXNpbmcgX19idWlsdGluX2Ztb2QuCgoxOTk3LTEyLTA0ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGtleXdvcmQuaDogTmV3IGZpbGUsIG91dHB1dCBvZiBrZXl3b3JkLmdwZXJmIGFzIHByb2Nlc3NlZCBieQoJZ3BlcmYuCgkqIGxleC5jIChqYXZhX2xleF9pbml0KTogSW5pdGlhbGl6ZSBqYXZhX2Vycm9yX2ZsYWcuCgkqIHBhcnNlLmMgKFlZRVJST1JfTk9XKTogVXNlcyBqYXZhX2Vycm9yX2ZsYWcuCgkqIHBhcnNlLnk6IE5ldyBzdGF0aWMgamF2YV9lcnJvcl9mbGFnLiBVc2VsZXNzIGRlZmluaXRpb24gb2YKCWJ1ZmZlcl9lcnJvciBnb25lLgoJKiBwYXJzZS55IChqYXZhX2Vycm9yKTogUG9ydGFibGUgZXJyb3IgcmVjb3ZlcnkgdXNpbmcKCWphdmFfZXJyb3JfZmxhZwkobm90IHlldCBjb21wbGV0ZWx5IHR1bmVkKS4KCjE5OTctMTItMDQgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChwYXJzZS5jKTogVXNlICQoc3JjZGlyKSBmb3IgcGFyc2UueS4KCjE5OTctMTItMDMgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW46IChKQVZBX09CSlMpOiBOZXcgb2JqZWN0IGpjZi1wYXJzZS5vLgoJKHBhcnNlLmMsIGxleC5jLCBrZXl3b3JkLmgpOiBOZXcgcnVsZXMgZm9yIEphdmEgc291cmNlIGNvZGUKCWZyb250LWVuZC4KCSogcGFyc2UuYzogUmVuYW1lZCBpbnRvIGpjZi1wYXJzZS5jLgoJKiBqY2YtcGFyc2UuYyAoeXlwYXJzZSk6IEludm9rZSB0aGUgcGFyc2VyIHRvIHByb2Nlc3MgSmF2YSBzb3VyY2UgY29kZS4KCSoga2V5d29yZC5ncGVyZjogTmV3IGZpbGUsIEphdmEga2V5d29yZHMuCgkqIHBhcnNlLnk6IE5ldyBmaWxlLCBKYXZhIGxhbmd1YWdlIGdyYW1tYXIuCgkqIHBhcnNlLmg6IE5ldyBmaWxlLCBKYXZhIGxhbmd1YWdlIGdyYW1tYXIgZGVmaW5pdGlvbnMuCgkqIGxleC5jOiBOZXcgZmlsZSwgSmF2YSBsYW5ndWFnZSBsZXhlci4KCSogbGV4Lmg6IE5ldyBmaWxlLCBKYXZhIGxhbmd1YWdlIGxleGVyIGRlZmluaXRpb25zLgoKMTk5Ny0xMi0wMyAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGNsaW5pdF9pZGVudGlmaWVyX25vZGUpLCBqYXZhLXRyZWUuaDogIE5ldyBnbG9iYWwuCgkqIGphdmEtdHJlZS5oIChJU19NRVRIT0RfSU5JVF9QLCBJU19NRVRIT0RfQ0xJTklUX1ApOiAgUmVtb3ZlZC4KCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogIElubGluZSB1c2Ugb2YgcmVtb3ZlZCBtYWNyb3MuCgkqIGV4cHIuYyAoZXhwYW5kX2phdmFfZmllbGRfb3ApOiAgQ2hlY2sgZm9yIGludmFsaWQgYXNzaWdubWVudAoJdG8gZmluYWwgZmllbGQuCgoJKiBqY2YtcmVhZGVyLmMgKGdldF9hdHRyaWJ1dGUpOiAgVGVzdCBmb3Igd3JvbmcgYXR0cmlidXRlIGxlbmd0aC4KCjE5OTctMTAtMjcgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogIFdoZW4gcHJvY2Vzc2luZyBhIGhhbmRsZXIsCglhdHRlbXB0IHRvIHNldCB0aGUgY3VycmVudF9zdWJyIHRvIHRoZSByaWdodCB2YWx1ZS4KCShNb3JlIGNvbXBsaWNhdGVkIGNvZGUgY29tYmluZXMgU2VwIDE3IGFuZCBPY3QgMjIgdmVyc2lvbnMuKQoKMTk5Ny0xMC0yNCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChwdXNoX2NsYXNzKTogIEZpZ3VyZSBvdXQgKGd1ZXNzKSBuYW1lIG9mIHNvdXJjZSBmaWxlLgoJKiBwYXJzZS5jICAoc2V0X3NvdXJjZV9maWxlbmFtZSk6ICBTZXQgREVDTF9TT1VSQ0VfRklMRSBvZiBjbGFzcyBkZWNsLgoJKGdpdmVfbmFtZV90b19jbGFzcyk6ICBEb24ndCBndWVzcyBzb3VyY2UgbmFtZTsgIHVzZSBERUNMX1NPVVJDRV9GSUxFLgoJKHBhcnNlX2NsYXNzX2ZpbGUpOiAgQ2hhbmdlIHJldHVybiB0eXBlIGZyb20gaW50IHRvIHZvaWQuCglDYWxsIGRlYnVnX3N0YXJ0X3NvdXJjZV9maWxlL2RlYnVnX2VuZF9zb3VyY2VfZmlsZS4KCgkqIGV4cHIuYyAoYnVpbGRfamF2YV9iaW5vcCk6ICBGaXggbWFza2luZyAybmQgb3BlcmFuZC4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6ICBTZXQgc2l6ZXR5cGUgZmlyc3QuCgoxOTk3LTEwLTIyICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6ICBEb24ndCBzZXQgY3VycmVudF9zdWJyIHRvIE5VTEwuCgkoUmV2ZXJ0IFNlcCAxNyBjaGFuZ2UuKQoKMTk5Ny0xMC0yMSAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBwYXJzZS5jIChwcm9jZXNzX3ppcF9kaXIpOiBTa2lwIFpJUCBlbnRyaWVzIG5vdCBiZWFyaW5nIHRoZQoJLmNsYXNzIGV4dGVuc2lvbiBpbiB0aGVpciBuYW1lIGFuZCBmaXggdGhpbmcgc28gd2UgZG9uJ3QgcHJvY2VzcwoJdGhlbSBwYXJzZV96aXBfZmlsZV9lbnRyaWVzKCkuCgkocGFyc2VfemlwX2ZpbGVfZW50cmllcyk6IENsZWFuZWQgdW51c2VkIGxvY2FsIHZhcmlhYmxlcy4KCjE5OTctMTAtMjAgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogZXhwci5jIChjYW5fd2lkZW5fcmVmZXJlbmNlX3RvKTogIEFsbG93cyBlcXVhbCBhcnJheSBlbGVtZW50IHR5cGVzLgoJKGV4cGFuZF9ieXRlX2NvZGUpOiAgUFJFX1JFVCBtdXN0IGV4cGFuZCBPUEVSQU5EX1ZBTFVFICh0byBnZXQgaW5kZXgpLgoJKiBqY2YtZHVtcC5jIChSRVQpOiAgR2V0IChhbmQgcHJpbnQpIGluZGV4LgoKCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zIGNhc2UgT1BDT0RFX2FuZXdhcnJheSk6CglQcm9tb3RlIGVsZW1lbnQgdHlwZSB0byBQT0lOVEVSX1RZUEUuCgoxOTk3LTEwLTIwICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGpjZi1yZWFkZXIuYywgcGFyc2UuYzogKHBhcnNlX3ppcF9maWxlLCBwcm9jZXNzX3ppcF9kaXIsCglmaW5kX2luX2N1cnJlbnRfemlwLCBqY2ZfZmlndXJlX2ZpbGVfdHlwZSk6IE1vdmVkIGZyb20KCWpjZi1yZWFkZXIuYyB0byBwYXJzZS5jLgoJKiB6ZXh0cmFjdC5jOiAocmVhZF96aXBfYXJjaGl2ZSk6IHRha2VzIGZpbGVfY29tbWVudF9sZW5ndGggcG9zc2libGUKCWZpZWxkIGludG8gYWNjb3VudC4KCjE5OTctMTAtMjAgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogIFZhciBjYW4gYWxzbyBiZSBwcm9tb3RlZCB0byBpbnQuCgoJKiB2ZXJpZnkuYyAobWVyZ2VfdHlwZXMpOiAgSGFuZGxlIGFycmF5IHR5cGVzIGV2ZW4gYmV0dGVyIC4uLgoKMTk5Ny0xMC0xNyAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGphdmFfc3RhY2tfcG9wKTogIEZpeCB1c2Ugb2YgTlVMTF9UUkVFIGZvciBUWVBFX1NFQ09ORC4KCgkqIGphdmEtdHJlZS5oIChQVVNIX0ZJRUxEKTogIFNldCBERUNMX0FSVElGSUNJQUwuCgkqIGNsYXNzLmMgKG1ha2VfY2xhc3NfZGF0YSk6ICBEb24ndCBidWlsZCBmaWVsZHNfZGVjbCBpZiBubyBmaWVsZHMuCglXaGVuIGJ1aWxkaW5nIGZpZWxkc19kZWNsLCBza2lwIGlmIERFQ0xfQVJUSUZJQ0lBTC4KCgkqIGV4cHIuYyAoamF2YV9zdGFja19zd2FwKTogIFVwZGF0ZSBzdGFja190eXBlX21hcC4KCSogdmVyaWZ5LmMgKG1lcmdlX3R5cGVzKTogIEhhbmRsZSBhcnJheSB0eXBlcyBiZXR0ZXIuCgoxOTk3LTEwLTE1ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGFkZF9maWVsZCk6ICBEb24ndCBwcm9tb3RlIHNob3J0IGludGVncmFsIGZpZWxkcyB0bwoJaW50IGFueSBtb3JlICh1bmxlc3MgSkFWQV9QUk9NT1RFX1RPX0lOVCksIHNpbmNlIEthZmZlIGRvZXNuJ3QuCgkqIGV4cHIuYyAocHVzaF92YWx1ZSk6ICBQcm9tb3RlIGFuZCBjb252ZXJ0IHNob3J0IGludGVncmFsIHZhbHVlcy4KCgkqIGRlY2wuYywgamF2YS10cmVlLmggKGludGVnZXJfdHdvX25vZGUpOiAgTmV3IGNvbnN0YW50IG5vZGUuCgkqIHZlcmlmeS5jIChtZXJnZV90eXBlcyk6ICBDaGVjayBmb3IgVFlQRV9SRVRVUk5fQUREUi4KCjE5OTctMTAtMTUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoYXBwZW5kX2dwcF9tYW5nbGVkX3R5cGUpOiBVc2UgZnVuY3Rpb24gYXJndW1lbnQKCXVucHJvbW90ZWQgdHlwZSB0byBnZW5lcmF0ZSBtYW5nbGVkIG5hbWUuCgoxOTk3LTEwLTEzICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGNvbnN0YW50cy5jIChidWlsZF9jb25zdGFudF9kYXRhX3JlZik6IE5vdyB1c2VzIGN1cnJlbnRfY2xhc3MKCWluc3RlYWQgb2YgbWFpbl9jbGFzcy4KCShidWlsZF9jb25zdGFudHNfY29uc3RydWN0b3IpOiBOb3cgdXNlcyBjdXJyZW50X2NsYXNzIGluc3RlYWQgb2YKCW1haW5fY2xhc3MuCgkqIHppcGZpbGUuaDogKHN0cnVjdCBaaXBGaWxlQ2FjaGUpOiBOb3cgZGVmaW5lZCBoZXJlLiBEZWNsYXJhdGlvbgoJb2YgdGhlIGdsb2JhbCB2YXJpYWJsZSBTZWVwWmlwRmlsZXMgZG9uZSBoZXJlLgoJKiB6ZXh0cmFjdC5jIChyZWFkX3ppcF9hcmNoaXZlKTogZXh0cmFfZmllbGQgb3B0aW9uYWwgZmllbGQgdGFrZW4KCWludG8gYWNjb3VudCB3aGlsZSBjb21wdXRpbmcgdGhlIHBvc2l0aW9uIG9mIHRoZSBjbGFzcyBmaWxlIGluIHRoZQoJYXJjaGl2ZS4KCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogVXNlIGN1cnJlbnRfamNmIHRvIHNlYXJjaAoJdGhlIGNvbnN0YW50IHBvb2wuCgkqIHBhcnNlLmMgKGxvYWRfY2xhc3MpOiBGaXJzdCBzZWFyY2ggZm9yIHRoZSBjbGFzcyB0byBsb2FkIGluIHRoZQoJY3VycmVudCB6aXAgZmlsZS4gU2F2ZXMgY3VycmVudF9qY2YgKHJlc3RvcmVkIGJlZm9yZSByZXR1cm5pbmcKCWZyb20gdGhhdCBmdW5jdGlvbikuIERvbid0IGNhbGwgSkNGX0ZJTklTSCBpbiB0aGUgY2xhc3Mgd2FzIGZvdW5kCglpbiB0aGUgY3VycmVudCBaSVAgZmlsZS4KCShqY2ZfcGFyc2UpOiBJZiB0aGUgY2xhc3Mgd2FzIGZvdW5kIGluIHRoZSBjdXJyZW50IFpJUCBmaWxlLCBzYXZlCglpdHMgdHJlZV9jb25zdGFudF9wb29sIChmb3IgbGF0ZXIgcmV1c2UpLgoJKHBhcnNlX2NsYXNzX2ZpbGUpOiBOZXcgZnVuY3Rpb24uIFByb2Nlc3MgZWFjaCBtZXRob2QgZGVmaW5lZCBpbgoJdGhlIGN1cnJlbnQgY2xhc3MgYW5kIHJlY29yZCB0aGUgY2xhc3MgYXMgdG8gYmUgbGF0ZXIgcmVnaXN0ZXJlZC4KCSh5eXBhcnNlKTogUmV3cml0dGVuLiBGaWd1cmUgdGhlIHR5cGUgb2YgdGhlIGN1cnJlbnQgZmlsZSBhbmQgc3dpdGNoCglhY2NvcmRpbmdseS4KCSogbGFuZy5jOiBOZXcgZ2xvYmFsIHZhcmlhYmxlIGN1cnJlbnRfamNmLgoJKGxhbmdfaW5pdCk6IFJlbW92ZWQgY29tcGlsaW5nX2Zyb21fc291cmNlIHRlc3QgKGRvbmUgbGF0ZXIsIGluCgl5eXBhcnNlKS4gUmVtb3ZlZCBjYWxsIHRoZSBqY2ZfcGFyc2UgKCkuCgkqIGpjZi5oIChKQ0ZfWklQLCBKQ0ZfQ0xBU1MsIEpDRl9TT1VSQ0UpOiBOZXcgZGVmaW5lZCB2YWx1ZXMuCgkodHlwZWRlZiBzdHJ1Y3QgSkNGKTogTmV3IGZpZWxkcyBzZWVuX2luX3ppcCAodG8gbWFyayBhIGNsYXNzIGZvdW5kCglpbiB0aGUgY3VycmVudCBaSVAgZmlsZSkgYW5kIHppcF9vZmZzZXQgKG9mZnNldCB0byB0aGUgY2xhc3MgZGF0YSBpbgoJdGhlIGN1cnJlbnQgemlwIGZpbGUpLgoJKiBqY2YtcmVhZGVyLmM6IHppcGZpbGUuaCBpbmNsdWRlZC4KCWxvY2FsVG9GaWxlOiBOZXcgWmlwRmlsZUNhY2hlIHN0YXRpYyBnbG9iYWwgdmFyaWFibGUKCShwYXJzZV96aXBfZmlsZV9lbnRyaWVzKTogTmV3IGZ1bmN0aW9uLiBCcm93c2UgdGhlIGN1cnJlbnQgWklQCglmaWxlIGRpcmVjdG9yeSBhbmQgcHJvY2VzcyBlYWNoIGNsYXNzIGZvdW5kLgoJKHByb2Nlc3NfemlwX2Rpcik6IE5ldyBmdW5jdGlvbi4gUmVnaXN0ZXIgZWFjaCBjbGFzcyBmb3VuZCBpbiB0aGUKCVpJUCBmaWxlIGRpcmVjdG9yeS4gVGhlIGNsYXNzIGFyZW4ndCBwYXJzZWQgYnV0IGEgdmFsaWQgSkNGIGlzCglsaW5rIHRvIGVhY2ggb2YgdGhlbS4KCShmaW5kX2luX2N1cnJlbnRfemlwKTogTmV3IGZ1bmN0aW9uLiBTZWFyY2ggZm9yIGEgY2xhc3MgaW4gdGhlCgljdXJyZW50IFpJUCBmaWxlIGRpcmVjdG9yeS4gSWYgZm91bmQsIHByZXBhcmUgdGhlIGNsYXNzIHNvIHRoYXQgaXQKCWNhbiBiZSBsb2FkZWQuCgkoamNmX2ZpZ3VyZV9maWxlX3R5cGUpOiBOZXcgZnVuY3Rpb24uIEV4YW1pbmUgdGhlIGZpbGUgc3RydWN0dXJlCgl0byBmaWd1cmUgYSBjbGFzcyBmaWxlLCBhIFpJUCBmaWxlLiBJZiBub25lIG9mIHRoZXNlIGNhdGVnb3JpZXMgYXJlCgltYXRjaGVkLCBhIHNvdXJjZSBmaWxlIGlzIGFzc3VtZWQuCgkqIGpjZi1pby5jOiBSZW1vdmVkIGRlZmluaXRpb24gb2YgWmlwRmlsZUNhY2hlIChtb3ZlZCBpbiB6aXBmaWxlLmgpLgoJU2VlblppcEZpbGU6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkob3Blbl9pbl96aXApOiBVc2UgemlwbWVtYmVyJ3MgbGVuZ3RoIHRvIGFjY2VsZXJhdGUgdGhlIHNlYXJjaCBmb3IKCWEgbWVtYmVyLiBJZiB6aXBtZW1iZXIgd2FzIE5VTEwgYW5kIHppcCBmaWxlIHN1Y2Nlc3NmdWxseSByZWFkLAoJcmV0dXJuIDAuCgkqIGphdmEtdHJlZS5oOiBOZXcgZ2xvYmFsIHZhcmlhYmxlIGN1cnJlbnRfamNmIGRlY2xhcmVkLiAgQWRkZWQKCWRlY2xhcmF0aW9uIGZvciBjdXJyZW50X2NvbnN0YW50X3Bvb2xfdGFncywgY3VycmVudF9jb25zdGFudF9wb29sX2RhdGEsCgljdXJyZW50X2NvbnN0YW50X3Bvb2xfbGVuZ3RoLCBjdXJyZW50X2NvbnN0YW50X3Bvb2xfZGF0YV9yZWYuCgkoc3RydWN0IGxhbmdfdHlwZSk6IEF1Z21lbnRlZCB3aXRoIHR3byBmaWVsZHMuIHN0cnVjdCBKQ0YgKmpjZiAodG8KCXN0b3JlIHRoZSBKQ0Ygb2YgY2xhc3NlcyBzZWVuIGluIGEgemlwIGZpbGUpIGFuZCB0cmVlICpjb25zdGFudF9wb29sCgkodG8gc2F2ZSBhIGxvYWRlZCBjbGFzcyBjb25zdGFudCBwb29sKS4gY3VycmVudF9jbGFzcyBkZWNsYXJlZCBoZXJlLgoJKiBleHByLmMgKGV4cGFuZF9pbnZva2UpOiBVc2UgY3VycmVudF9qY2YgaW5zdGVhZCBvZiBtYWluX2pjZiB0bwoJcmV0cmlldmUgbWV0aG9kX3JlZl9jb25zdGFudC4KCShQVVNIQyk6IGphdmFfcHVzaF9jb25zdGFudF9mcm9tX3Bvb2wgbm93IHVzZXMgY3VycmVudF9qY2YuCgkoT0JKRUNUKTogZ2V0X2NsYXNzX2NvbnN0YW50IG5vdyB1c2VzIGN1cnJlbnRfamNmLgoJKEFSUkFZX05FV19QVFIpOiBnZXRfY2xhc3NfY29uc3RhbnQgbm93IHVzZXMgY3VycmVudF9qY2YuCgkoQVJSQVlfTkVXX01VTFRJKTogZ2V0X2NsYXNzX2NvbnN0YW50IG5vdyB1c2VzIGN1cnJlbnRfamNmLgoJKGV4cGFuZF9pbnZva2UpOiBOb3cgdXNlcyBjdXJyZW50X2NsYXNzIGluc3RlYWQgb2YgbWFpbl9jbGFzcwoJKGJ1aWxkX2NsYXNzX2luaXQpOiBOb3cgdXNlcyBjdXJyZW50X2NsYXNzIGluc3RlYWQgb2YgbWFpbl9jbGFzcwoJKiBjbGFzcy5jOiBOZXcgc3RhdGljIGdsb2JhbCB2YXJpYWJsZSByZWdpc3RlcmVkX2NsYXNzLgoJKHJlZ2lzdGVyX2NsYXNzKTogTmV3IGZ1bmN0aW9uLgoJKGVtaXRfcmVnaXN0ZXJfY2xhc3MpOiBNb2RpZmllZCB0byB1c2UgcmVnaXN0ZXJlZF9jbGFzcyBpbnN0ZWFkIG9mCgltYWluX2NsYXNzCgkoaXNfY29tcGlsZWRfY2xhc3MpOiBOb3cgdGFrZSBpbnRvIGFjY291bnQgY2xhc3Mgc2VlbiBpbiB0aGUgYXJjaGl2ZS4KCjE5OTctMTAtMDYgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogZXhjZXB0Lmg6ICBSZW5hbWVkIHRvOiBqYXZhLWV4Y2VwdC5oLgoJKiBwYXJzZS5jLCBleGNlcHQuYywgZXhwci5jLCB2ZXJpZnkuYzogIFVwZGF0ZSAjaW5jbHVkZSBhY2NvcmRpbmdseS4KCSogZXhjZXB0LmM6ICBBZGQgc2VtaS13b3JraW5nIChjb21tZW50ZWQgb3V0KSBpbXBsZW1lbnRhdGlvbi4KCgkqIGV4cHIuYyAoZXhwYW5kX2lpbmMpOiAgQWRkIG5lZWRlZCBmbHVzaF9xdWlja19zdGFjay4KCSogcGFyc2UuYyAoc2V0X3NvdXJjZV9maWxlbmFtZSk6ICBOZXcgZnVuY3Rpb24uCgkoZ2l2ZV9uYW1lX3RvX2NsYXNzKTogIFNldCBpbnB1dF9maWxlbmFtZSBmcm9tIHBhY2thZ2UuY2xhc3NuYW1lLmphdmEuCgoJKiBqY2YtaW8uYyAoZmluZF9jbGFzcyk6ICBEb24ndCBsb29rIGZpcnN0IGluICIuIi4KCjE5OTctMTAtMDEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogemV4dHJhY3QuYyAocmVhZF96aXBfYXJjaGl2ZSk6IE5vdyB0YWtlcyBpbnRvIGFjY291bnQgdGhlCglleHRyYV9maWVsZCBmaWVsZC4KCSogZXhwci5jIChjYW5fd2lkZW5fcmVmZXJlbmNlX3RvKTogTW9kaWZpZWQgdG8gaGFuZGxlIHN1Yi1pbnRlcmZhY2VzLgoKMTk5Ny0wOS0yMCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBjb25zdGFudHMuYywgamF2YS10cmVlLmggKGJ1aWxkX2ludGVybmFsX2NsYXNzX25hbWUpOiAgTmV3IGZ1bmN0aW9uLgoJKGFsbG9jX2NsYXNzX2NvbnN0YW50KTogIFJlLWltcGxlbWVudCB1c2luZyBidWlsZF9pbnRlcm5hbF9jbGFzc19uYW1lLgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzX2RhdGEpOiAgTGlrZXdpc2UuCgkqIGNsYXNzLmMgKGhhc2hVdGY4U3RyaW5nKTogIE1ha2UgaGFzaCBhbGdvcml0aG0gbWF0Y2ggU3RyaW5nLmhhc2hDb2RlLgoKMTk5Ny0wOS0xNyAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiB2ZXJpZnkuYyAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiAgVGVtcG9yYXJpbHkgc2V0IGN1cnJlbnRfc3VicgoJdG8gTlVMTCBiZWZvcmUgcHVzaGluZyBhbiBleGNlcHRpb24gaGFuZGxlciB0YXJnZXQuCgoJKiBleHByLmMgKGZsdXNoX3F1aWNrX3N0YWNrKTogIFNhdmUgZnJvbSBsb3cgc3RhY2sgaW5kZXhlcyB0byBoaWdoLgoJKGphdmFfc3RhY2tfc3dhcCwgamF2YV9zdGFja19kdXApOiAgUmUtd3JpdGUgdG8gYmUgc2FmZSBmcm9tCgljbG9iYmVyaW5nIHJlZ2lzdGVycy4KCShidWlsZF9jbGFzc19pbml0KTogIE5ldyBmdW5jdGlvbi4KCjE5OTctMDktMTcgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2phdmFfYXJyYXlfdHlwZSk6IFRlbXBvcmFyeSB1c2UKCXBlcm1hbmVudF9vYnN0YWNrIHRvIGNyZWF0ZSB0aGUgYXJyYXkgJ2xlbmd0aCcgZmllbGQuCgkqIGV4cHIuYyAobG9va3VwX2xhYmVsKTogVGVtcG9yYXkgdXNlIHBlcm1hbmVudF9vYnN0YWNrIHRvIGNyZWF0ZQoJbGFiZWwgaWYgbm90IGZvdW5kLgoJKiBjbGFzcy5jIChwdXNoX3N1cGVyX2ZpZWxkKTogVGVtcG9yeSB1c2UgcGVybWFuZW50X29ic3RhY2suCgoxOTk3LTA5LTE1ICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jICh0eXBlX2Zvcl9tb2RlKTogTm93IGhhbmRsZXMgZG91YmxlX3R5cGVfbm9kZSBhbmQKCWZsb2F0X3R5cGVfbm9kZS4KCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogVGhlIGluc3RydWN0aW9uIGZvbGxvd2luZwoJdGhlIHdpZGUgYnl0ZWNvZGUgaXMgY2hlY2tlZC4gT1BDT0RFX3JldCBhZGRlZCB0byB0aGUgbGlzdCBvZgoJd2lkZS4KCjE5OTctMDktMTEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAobWFrZV9jbGFzcyk6IFRlbXBvcmFyeSB1c2UgcGVybWFuZW50X29ic3RhY2suIFNldCB0aGUKCWNsYXNzIENMQVNTX1AgZmllbGQgdG8gMS4KCShwdXNoX2NsYXNzKTogVGVtcG9yYXJ5IHVzZSBwZXJtYW5lbnRfb2JzdGFjay4KCShzZXRfc3VwZXJfaW5mbyk6IFRlbXBvcmFyeSB1c2UgcGVybWFuZW50X29ic3RhY2suCgkoYWRkX21ldGhvZCk6IFRlbXBvcmFyeSB1c2UgcGVybWFuZW50X29ic3RhY2ssIHNldAoJTUVUSE9EX1RSQU5TSUVOVCgpLgoJKGFkZF9maWVsZCk6IFRlbXBvcmFyeSB1c2UgcGVybWFuZW50X29ic3RhY2suIFNldHMKCUZJRUxEX1ZPTEFUSUxFKCkgYW5kIEZJRUxEX1RSQU5TSUVOVCgpLgoJKGJ1aWxkX2NsYXNzX3JlZik6IFRlbXBvcmFyeSB1c2UgcGVybWFuZW50X29ic3RhY2sgaWYgdGhlIGNsYXNzCglpc24ndCBjb21waWxlZC4KCShidWlsZF9zdGF0aWNfZmllbGRfcmVmKTogVGVtcG9yYXJ5IHVzZSBwZXJtYW5lbnRfb2JzdGFjayB3aGVuCgljcmVhdGluZyBmaWVsZCdzIHJ0bC4KCShnZXRfYWNjZXNzX2ZsYWdzX2Zyb21fZGVjbCk6IEhhbmRsZSBBQ0NfVk9MQVRJTEUsIEFDQ19UUkFOU0lFTlQsCglBQ0NfU1lOQ0hST05JWkVELCBBQ0NfTkFUSVZFLCBBQ0NfQUJTVFJBQ1QgZmxhZ3MgZm9yIG1ldGhvZHMKCWFuZCBmaWVsZHMuIEZ1bmN0aW9uIGZpbmFsaXplZCwgYXMgZmFyIGFzIGZsYWcgaGFuZGxpbmcuCgkocHVzaF9jbGFzc19zdGF0aWNfZHVtbXlfZmllbGQpOiBUZW1wb3JhcnkgdXNlIHBlcm1hbmVudF9vYnN0YWNrLgoJKGVtaXRfcmVnaXN0ZXJfY2xhc3MpOiBGb3JjZSBnZW5lcmF0aW9uIG9mIGNsYXNzIHJlZ2lzdHJhdGlvbiBhdAoJLU8zIG9yIGRlZXBlci4KCSogZGVjbC5jIChlbmRfamF2YV9tZXRob2QpOiBDYWxsIHBlcm1hbmVudF9hbGxvY2F0aW9uKCkgYmVmb3JlCglyZXR1cm5pbmcuCgkqIGV4cHIuYyAoY2FuX3dpZGVuX3JlZmVyZW5jZV90byk6IEFkZGVkIGNvbW1lbnQgdG8gaW50ZXJmYWNlCgloYW5kbGluZywgZml4ZWQgdHlwby4KCShsb29rdXBfZmllbGQpOiBOb3cgdXNlcyBDTEFTU19QKCkgdG8gY29ycmVjdCBGSVhNRQoJKGV4cGFuZF9pbnZva2UpOiBWZXJpZmljYXRpb24gb24gcHVibGljICYmICFzdGF0aWMgJiYKCSFhYnN0cmFjdCBtb3ZlZCBpbnRvIHNvZnRfbG9va3VwaW50ZXJmYWNlbWV0aG9kIChrYWZmZSkuCglVc2UgT2JqZWN0IGNsYXNzIGR0YWJsZSBpZiBvYmplY3RyZWYgaXMgYW4gYXJyYXkgd2hlbiBleHBhbmRpbmcKCWludm9rZWludGVyZmFjZS4KCShqYXZhX3B1c2hfY29uc3RhbnRfZnJvbV9wb29sKTogVGVtcG9yYXJ5IHVzZSBwZXJtYW5lbnRfb2JzdGFjawoJZm9yIENPTlNUQU5UX3N0cmluZwoJKiBwYXJzZS5jIChnZXRfcmVmX2NvbnN0YW50KTogVGVtcG9yYXJ5IHVzZSBwZXJtYW5lbnRfb2JzdGFjayB0bwoJY3JlYXRlIGNvbnN0YW50IHJlZmVyZW5jZXMuCgkoZ2V0X2NvbnN0YW50KTogVGVtcG9yYXJ5IHVzZSBwZXJtYW5lbnRfb2JzdGFjayB0byBjcmVhdGUgY29uc3RhbnQuCgkobG9hZF9jbGFzcyk6IFRlbXBvcmFyeSB1c2UgcGVybWFuZW50X29ic3RhY2sgdG8gbG9hZCBjbGFzcy4KCShqY2ZfcGFyc2UpOiBUZW1wb3JhcnkgdXNlIHBlcm1hbmVudF9vYnN0YWNrIHRvIHBlcmZvcm0gY2xhc3MKCWxheW91dC4KCSogdHlwZWNrLmM6IChwYXJzZV9zaWduYXR1cmVfc3RyaW5nKTogVGVtcG9yYXJ5IHVzZSBwZXJtYW5lbnRfb2JzdGFjay4KCShidWlsZF9qYXZhX3NpZ25hdHVyZSk6IFRlbXBvcmFyeSB1c2UgcGVybWFuZW50X29ic3RhY2suCgkqIHZlcmlmeS5jOiAodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbik6IHJlbW92ZWQgdW5uZWNlc3NhcnkgdmVyaWZpY2F0aW9uCglvbiBBQ0NfU1VQRVIgZmxhZy4KCSogamF2YS10cmVlLmggKE1FVEhPRF9OQVRJVkUsIE1FVEhPRF9UUkFOU0lFTlQpOiBEZWZpbmVkLgoJKEZJRUxEX1ZPTEFUSUxFLCBGSUVMRF9UUkFOU0lFTlQpOiBEZWZpbmVkLgoJKENMQVNTX1ApOiBEZWZpbmVkCgoxOTk3LTA5LTExICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGFwcGVuZF9ncHBfbWFuZ2xlZF90eXBlKTogIEZpeCB0eXBvLgoJKGVtaXRfcmVnaXN0ZXJfY2xhc3MpOiAgVXNlIG1haW5fY2xhc3MgdG8gZ2V0IGNsYXNzIG9iamVjdCwgcmF0aGVyCgl0aGFuIGxvb2tpbmcgZm9yIG5vLWxvbmdlci1leGlzdGluZyBzdGF0aWMgZGVjbCBzdGFydGluZyB3aXRoIF9DTC4KCSogdHlwZWNrLmMgKHBhcnNlX3NpZ25hdHVyZV90eXBlKTogIFByb21vdGUgYXJyYXkgZWxlbWVudCB0eXBlCglpZiBpdCBpcyBhIFJFQ09SRF9UWVBFLgoKMTk5Ny0wOS0xMCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChwdXNoX2NsYXNzX3N0YXRpY19kdW1teV9maWVsZCk6ICBOZXcgZnVuY3Rpb24uCgkobWFuZ2xlX3N0YXRpY19maWVsZCk6ICBOZXcuIERvIEcrKy1zdHlsZSBtYW5nbGluZyBvZiBzdGF0aWMgZmllbGRzLgoJKGxheW91dF9jbGFzcyk6ICBNYW5kbGUgc3RhdGljIGZpZWxkcyBoZXJlLCBub3QgaW4gYWRkX2ZpZWxkLgoJKGJ1aWxkX2NsYXNzX3JlZik6ICBUaGUgY2xhc3Mgb2JqZWN0IGlzIG5vdyBhIGR1bW15IHN0YXRpYyBmaWVsZC4KCSogZGVjbC5jIChmaW5kX2xvY2FsX3ZhcmlhYmxlKTogIExvb2sgZm9yIGJlc3QsIGluc3RlYWQgb2YgZmlyc3QgbWF0Y2guCgkqIGV4cHIuYyAocHVzaF90eXBlKTogIEFsd2F5cyBwcm9tb3RlX3R5cGUsIG5vdCBqdXN0IGZvciBSRUNPUkRfVFlQRS4KCShidWlsZF9qYXZhX2F0aHJvdyk6ICBEb24ndCBjaGVjayBoZXJlIGlmIGV4Y2VwdGlvbiBpcyBUaHJvd2FibGUuCgkqIGphdmEtdHJlZS5oIChUWVBFX1VOU0VUKTogIFJlbmFtZWQgdG8gVFlQRV9VTktOT1dOLgoJKFRZUEVfVVNFRCk6ICBSZW1vdmVkLiAgTm8gbG9uZ2VyIHVzZWQgLi4uCgkqIHBhcnNlLmMgKGpjZl9wYXJzZSk6ICBDYWxsIHB1c2hfY2xhc3Nfc3RhdGljX2R1bW15X2ZpZWxkLgoJKiB2ZXJpZnkuYyAocHVzaF9wZW5kaW5nX2xhYmVsKTogIE5ldyBmdW5jdGlvbi4KCShwdXNoX3BlbmRpbmdfYmxvY2spOiAgUmVuYW1lZCB0byBjaGVja19wZW5kaW5nX2Jsb2NrLgoJKG1lcmdlX3R5cGVzKTogIFJlbW92ZSB1bm5lZWRlZCBzdXVwb3J0IGZvciBUWVBFX1VOVVNFRC4KCSh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6ICBPbmx5IHJlc2V0IHByZXZfZWhfcmFuZ2VzICh0byBmb3JjZQoJcmUtY2hlY2tpbmcgcG9zc2libGUgaGFuZGxlcnMpIGFmdGVyIGEgc3RvcmUgKGxlc3Mgd2FzdGVkIHdvcmspLgoJQ2hlY2sgZm9yIG51bGwgaGFuZGxlciAoZmluYWxseSkgYmVmb3JlIGNhbGxpbmcgYWRkX2hhbmRsZXIuCglWYXJpb3VzIGNoYW5nZXMgdG8gKGZpbmFsbHk/KSBjb3JyZWN0bHkgaGFuZGxlIHRyeS9maW5hbGx5LgoKMTk5Ny0wOS0wOSAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogY2xhc3MuYzogSW5jbHVkZSBzdGRpby5oLgoKMTk5Ny0wOS0wNCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9pbnZva2UpOiAgVXNlIENPTVBPVU5EX0VYUFIgKGFuZCBUUkVFX1NJREVfRUZGRUNUUykKCXRvIG1ha2Ugc3VyZSBjbGFzcyBpcyBpbml0aWFsaXplZCBiZWZvcmUgc3RhdGljL3NwZWNpYWwgaW52b2tlLgoKCSogdmVyaWZ5LmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogIE9uIGEgc3RvcmUgaW5zdHJ1Y3Rpb24sCgljYWxsIGZpbmRfbG9jYWxfdmFyaWFibGUgdG8gZm9yY2UgcHJlLWFsbG9jYXRpb24gb2YgZGVjbCBhbmQgcnR4LgoJKiBkZWNsLmMgKHB1c2hfanZtX3Nsb3QpOiAgU2V0IERFQ0xfUkVHSVNURVIgb24gc3RhY2sgc2xvdHMuCgoxOTk3LTA5LTAzICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX2NsYXNzX3JlZik6ICAgU3RyaXAgb2ZmICJwcm9tb3RlZF8iIGlmIG5lZWQgYmUuCgkobWFrZV9maWVsZF92YWx1ZSk6IENhbGwgYnVpbGRfamF2YV9zaWduYXR1cmUgd2hlbiBuZWVkZWQuCgkobGF5b3V0X2NsYXNzKTogIERvbid0IG1ha2VfZnVuY3Rpb25fcnRsIGlmIE1FVEhPRF9BQlNUUkFDVC4KCSogZXhwci5jIChidWlsZF9qYXZhX2F0aHJvdyk6ICBEb24ndCBwdXNoX3ZhbHVlIG9mIGV4Y2VwdGlvbi4KCShidWlsZF9qYXZhX2Jpbm9wKTogIEltcGxlbWVudCBDT01QQVJFX0xfRVhQUiBhbmQgQ09NUEFSRV9HX0VYUFIgdG8KCW1hdGNoIHNwZWNpZmljYXRpb24gb2YgW2ZkXWNtcFtsZ10gZm9yIE5hTnMuCgkoZXhwYW5kX2J5dGVfY29kZSk6ICBBZGQgc3VwcG9ydCBmb3IgZXhjZXB0aW9uIGhhbmRsZXIgcmFuZ2VzLgoJKiBleGNlcHQuYzogIEFkZCBza2VsZXRvbiBmb3IgRUggY29kZS1nZW5lcmF0aW9uLgoJKiB2ZXJpZnkuYyAobWVyZ2VfdHlwZXMpOiAgVHJlYXQgYWxsIHByb21vdGVkIGludGVncmFsIHR5cGVzIGFzIGVxdWFsLgoJKiBjb25zdGFudHMuYyAoYnVpbGRfY29uc3RhbnRzX2NvbnN0cnVjdG9yKTogIFRvIGZvcmNlIGNyZWF0aW9uIG9mCgljdXJyZW50X2NvbnN0YW50X3Bvb2xfZGF0YV9yZWYsIGNhbGwgYnVpbGRfY29uc3RhbnRfZGF0YV9yZWYuCgoJKiBqYXZhb3AuZGVmIChsbG9hZCk6ICBGaXggdHlwby4KCSogamNmLWR1bXAuYyAobWFpbik6ICBDbGVhciBmaWxlbmFtZSB0byBwcmV2ZW50IHBvc3NpYmx5LWJhZCBmcmVlLgoKMTk5Ny0wOS0wMiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogcGFyc2UuYzogRG9uJ3QgaW5jbHVkZSBmdW5jdGlvbi5oLgoKMTk5Ny0wOC0yNyAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBleGNlcHQuW2NoXTogIE5ldyBmaWxlcy4KCSogTWFrZWZpbGUuaW4gKEpBVkFfT0JKUyk6ICBBZGQgZXhjZXB0Lm8KCSogZXhwci5jOiAgVGVtcG9yYXJ5IHdhcm5pbmcgYWJvdXQgdW5pbXBsZW1lbnRlZCBleGNlcHRpb25zLgoJKiB2ZXJpZnkuYzogIFZlcmlmeSBleGNlcHRpb24gaGFuZGxlcnMuCgoJKiBqY2YtZHVtcC5jIChkaXNhc3NlbWJsZV9tZXRob2QpOiAgUHJpbnQgZXhjZXB0aW9uIHRhYmxlLgoKMTk5Ny0wOC0yNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBleHByLmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogU3RhcnRlZCBhIHRob3JvdWdoCgl2ZXJpZmljYXRpb24gb2YgaW52b2tlKiBieXRlY29kZXMuCgkoZXhwYW5kX2J5dGVfY29kZSk6IGZsdXNoIHF1aWNrIHN0YWNrIGlmIFBDIGlzIHRoZSB0YXJnZXQgb2YgYQoJYnJhbmNoLiAgYW5kIHVuZGVmIFJFVCAoY29uZmxpY3Rpbmcgd2l0aCBjb25maWcvaTM4Ni9pMzg2LmgpLgoJKGV4cGFuZF9qYXZhX2FycmF5bG9hZCk6IEZpeGVkIGJvZ3VzIGNhc3QsIHdoZW4gQm9vbGVhbiB0eXBlIGlzCgl1c2VkLgoJKGV4cGFuZF9pbnZva2UpOiBOb3cgaGFuZGxlcyBpbnZva2VpbnRlcmZhY2UgYW5kIGRvIG1vcmUKCXZlcmlmaWNhdGlvbiBhY2NvcmRpbmcgdG8gdGhlIGJ5dGVjb2RlLgoJKGxvb2t1cF9maWVsZCk6IERvbid0IHRyeSB0byBsb2FkIHRoZSBjbGFzcyBpZiBwcm9jZXNzaW5nCglkdGFibGVfdHlwZS4KCShjYW5fd2lkZW5fcmVmZXJlbmNlX3RvKTogTm93IGhhbmRsZXMgaW50ZXJmYWNlcy4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IE5ldyBnbG9iYWwgdmFyaWFibGUKCXNvZnRfbG9va3VwaW50ZXJmYWNlbWV0aG9kX25vZGUsIGRlY2xhcmVkIGluIGphdmEtdHJlZS5oLgoJQ2FsbCBzZXRfc3VwZXJfaW5mbyBvbiBzdHJpbmdfdHlwZV9ub2RlLgoJKiBqYXZhLXRyZWUuaCAoQ0xBU1NfSU5URVJGQUNFLCBDTEFTU19BQlNUUkFDVCwgQ0xBU1NfU1VQRVIpOiBOb3cKCWRlZmluZWQuCgkqIGNsYXNzLmMgKHNldF9zdXBlcl9pbmZvKTogRmlsbHMgdGhlIENMQVNTXyogZmxhZ3MgYWNjb3JkaW5nIHRvCglhY2Nlc3NfZmxhZ3MuCgkoZ2V0X2FjY2Vzc19mbGFnc19mcm9tX2RlY2wpOiBIYW5kbGVzIGFsbCBjbGFzcyBmbGFncy4KCjE5OTctMDgtMjYgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoYWRkX21ldGhvZCk6ICBaZXJvIG91dCBuZXdseS1hbGxvY2F0ZWQgREVDTF9MQU5HX1NQRUNJRklDLgoJKiBwYXJzZS5jICh5eXBhcnNlKTogIENoZWNrIGZvciBhYnN0cmFjdCBtZXRob2QsIGFuZCBtaXNzaW5nIGNvZGUuCgkqIGV4cHIuYyAoZXhwYW5kX2J5dGVfY29kZSk6ICBDaGFuZ2UgaW50ZXJmYWNlLgoJKiBsYW5nLmMgKHB1dF9kZWNsX25vZGUpOiAgUHJpbnQgcHJvbW90ZWQgdHlwZXMgcHJldHRpZXIuCgkqIHZlcmlmeS5jICh2ZXJpZnlfanZtX2luc3RydWN0aW9uKTogIENoYW5nZSBpbnRlcmZhY2UuCglQYXJ0aWFsIHN1cHBvcnQgZm9yIHNjYW5uaW5nIGV4Y2VwdGlvbiB0YWJsZS4KCUZvciBsb2FkIGluc3RydWN0aW9ucywgaGFuZGxlIHByb21vdGVkIGludGVncmFsIHR5cGVzLgoKMTk5Ny0wOC0yMSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiB2ZXJpZnkuYzogIE5ldyBmaWxlLCB3aXRoIGNvbnRlbnRzIG1vdmVkIGZyb20gZXhwci5jLgoJKiBleHByLmM6ICBCdW5jaCBvZiBzdHVmZiAobW9zdGx5IHZlcmlmaWNhdGlvbikgbW92ZWQgdG8gdmVyaWZ5LmMuCgkqIHR5cGVjay5jIChpc19hcnJheV90eXBlX3ApOiAgTW92ZWQgaGVyZSBmcm9tIGV4cHIuYy4KCSogamF2YS10cmVlLmg6ICBBZGQgc29tZSBub3ctbmVlZGVkIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KCSogTWFrZWZpbGUuaW4gKEpBVkFfT0JKUyk6IEFkZGVkIHZlcmlmeS5vLgoKMTk5Ny0wOC0yMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogU2V0cyB0aGUgTUVUSE9EX1NZTkNIUk9OSVpFRCBmbGFnLCBzZXRzIHRoZQoJTUVUSE9EX0FCU1RSQUNUIGZsYWcuCgoJKiBqYXZhLXRyZWUuaCAoTUVUSE9EX1NZTkNIUk9OSVpFRCk6IFNldCB0byBERUNMX0xBTkdfRkxBR180LgoJKElTX01FVEhPRF9DTElOSVRfUCwgSVNfTUVUSE9EX0lOSVRfUCk6IE5ldyBtYWNyb3MuCgkoTUVUSE9EX0FCU1RSQUNUKTogU2V0IHRvIERFQ0xfTEFOR19GTEFHXzUKCgkqIGRlY2wuYyAoc29mdF9tb25pdG9yZW50ZXJfbm9kZSwgc29mdF9tb25pdG9yZXhpdF9ub2RlKTogTmV3IGdsb2JhbAoJdmFyaWFibGVzLgoJKHN0YXJ0X2phdmFfbWV0aG9kKTogSG9vayBmb3IgU1lOQ0hST05JWkVEIG1ldGhvZHMuCgoJKiBleHByLmMgKGJ1aWxkX2phdmFfanNyLCBidWlsZF9qYXZhX3JldCk6IE5ldyBmdW5jdGlvbnMKCShKU1IsUFJFKTogTmV3IG1hY3JvcwoJKFBSRV9UQUJMRV9TV0lUQ0gsIFBSRV9MT09LVVBfU1dJVENIKTogRml4ZWQgYW5kIHNlY3VyZWQuCgkodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbnMpOiB0YWJsZXN3aXRjaCwgbG9va3Vwc3dpdGNoLAoJbW9uaXRvcmVudGVyLCBtb25pdG9yZXhpdCwgZ290b193OiB2ZXJpZmllZC4KCShMT09LVVBfU1dJVENILCBUQUJMRV9TV0lUQ0gpOiBGaXhlZCBnZW5lcmF0aW9uIG9mIGRlZmF1bHQ6IGxhYmVsCgkoYnVpbGRfamF2YV9tb25pdG9yKTogTmV3IGZ1bmN0aW9uLgoJKE1PTklUT1JfT1BFUkFUSU9OKTogTW9kaWZpZWQgdG8gY2FsbCBidWlsZF9qYXZhX21vbml0b3IoKQoJKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogU3RhcnRlZCBhIHRob3JvdWdoIHZlcmlmaWNhdGlvbiBvZgoJaW52b2tlKiBieXRlY29kZXMuCgoxOTk3LTA4LTE5ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCglTdXBwb3J0IHZlcmlmaWNhdGlvbiBvZiBqc3IvcmV0IHN1YnJvdXRpbmVzICh1c2VkIGZvciB0cnkvZmluYWxseSkuCgkqIGRlY2wuYyAocmV0dXJuX2FkZHJlc3NfdHlwZV9ub2RlKTogIE5ldyB0eXBlIG5vZGUuCgkqIGphdmEtdHJlZS5oIChMQUJFTF9SRVRVUk5fTEFCRUwsIExBQkVMX1JFVFVSTl9UWVBFX1NUQVRFLAoJUkVUVVJOX01BUF9BREpVU1RFRCwgTEFCRUxfUkVUVVJOX0xBQkVMUywgTEFCRUxfSU5fU1VCUiwKCUxBQkVMX1NVQlJfU1RBUlQsIExBQkVMX1NVQlJfQ09OVEVYVCwgQkNPREVfVkVSSUZJRUQpOiAgTmV3IG1hY3Jvcy4KCShUWVBFX1VOU0VULCBUWVBFX1NFQ09ORCwgVFlQRV9OVUxMLCBUWVBFX1JFVFVSTl9BRERSLCBUWVBFX1VOVVNFRCwKCVRZUEVfVVNFRCk6ICBOZXcgbWFjcm9zIGZvciBzcGVjaWFsIHR5cGVzIGluIHR5cGVfbWFwLgoKCSogamF2YS10cmVlLmggKEJDT0RFX0pVTVBfVEFSR0VUKTogIFJlbmFtZWQgdG8gQkNPREVfVEFSR0VULgoJKEJDT0RFX0JBQ0tXQVJEU19UQVJHRVQsIENPREVfRk9SV0FSRFNfVEFSR0VUKTogIFJlcGxhY2VkIGJ5CglCQ09ERV9KVU1QX1RBUkdFVC4KCSogZXhwci5jIChleHBhbmRfYnl0ZV9jb2RlKTogIEZpeCBsb2dpYyB0byB3YXJuIG9mIHVudXNlZCBpbnN0cnVjdGlvbnMuCgoJKiBleHByLmMgKGNhbl93aWRlbl9yZWZlcmVuY2VfdG8pOiAgTmV3IGZ1bmN0aW9uLgoJKHBvcF90eXBlKTogIFVzZSBpdC4KCShtZXJnZV90eXBlX3N0YXRlKTogIFN1cHBvcnQgaGFuZGxpbmcgc3RhcnQgb2Ygc3Vicm91dGluZS4KCShwdXNoX3BlbmRpbmdfYmxvY2spOiAgUmV0dXJuIGNoYXIqIGVycm9yIG1lc3NhZ2UsIGluc3RlYWQgb2YgY2FsbGluZwoJZmF0YWwgb24gYW4gZXJyb3IuICBBbHNvIGhhbmRsZSBzdWJyb3V0aW5lcy4KCSh2ZXJpZnlfanZtX2luc3RydWN0aW9ucyk6ICBIYW5kbGUgZXJyb3JzIGZyb20gcHVzaF9wb2VuZGluZ19ibG9jay4KCVN1cHBvcnQganNyIGFuZCByZXQgaW5zdHJ1Y3Rpb25zLgoKMTk5Ny0wOC0xOSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBqY2YtaW8uYyAoZmluZF9jbGFzc2ZpbGUpOiAgRml4IHRoaW5rby4KCSogamNmLWR1bXAuYzogIEFkZCBDT05WRVJUMiAodG8gbWF0Y2ggY2hhbmdlZCBqYXZhb3AuZGVmKS4KCjE5OTctMDgtMTIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChCSVNPTik6IFJlbW92ZS4KCjE5OTctMDgtMDcgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW46ICBDb252ZXJ0IHRvIGF1dG9jb25mLgoJKiBjb25maWctbGFuZy5pbiAob3V0cHV0cyk6ICBBZGRlZCBqYXZhL01ha2VmaWxlLgoKCSogTWFrZS1sYW5nLmluLCBsYW5nLXNwZWNzLmgsIGNvbmZpZy1sYW5nLmluLCBNYWtlZmlsZS5pbjoKCVJlbmFtZSBjYzFqYXZhIHRvIGpjMS4KCgkqIGxhbmcuYyAoaW5pdF9wYXJzZSwgZmluaWhzX3BhcnNlKTogIE5ldyBmdW5jdGlvbnMgI2lmZGVmIFVTRV9DUFBMSUIuCgkqIE1ha2VmaWxlLmluIChJTlRFUk5BTF9DRkxBR1MpOiAgQWRkIEBleHRyYV9jX2ZsYWdzLgoKCSogY2xhc3MuYyAoY2xhc3NfZGVwdGgpOiAgRG8gbG9hZF9jbGFzcyBpZiBuZWVkZWQuCgoJTW9zdGx5IGJldHRlciB2ZXJpZmljYXRpb24uCgkqIGRlY2wuYyAocHVzaGRlY2wpOiAgU2V0IFRZUEVfU1RVQl9ERUNMIGZvciBhIHR5cGUuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiAgQ2hhbmdlIHJldHVybiB0eXBlIG9mIHNvZnRfY2hlY2tjYXN0LgoJKiBleHByLmMgKGV4cGFuZF9qYXZhX0NIRUNLQ0FTVCk6ICBEbyBwdXNoX3ZhbHVlIG9mIHRoZSAiY2FzdGVkIiB2YWx1ZS4KCSogbGFuZy5jIChwdXRfZGVjbF9zdHJpbmcsIHB1dF9kZWNsX25vZGUsIGxhbmdfcHJpbnRhYmxlX25hbWUsCglsYW5nX3ByaW50X2Vycm9yKTogIE5ldyBmdW5jdGlvbnMuCgkobGFuZ19pbml0KTogIFNldCBnbG9iYWwgaG9vayBwcmludF9lcnJvcl9mdW5jdGlvbiB0byBsYW5nX3ByaW50X2Vycm9yLgoJKiBleHByLmM6ICBJbiB0aGUgdHlwZV9tYXAgcHRyX3R5cGVfbm9kZSBpcyBvbmx5IHVzZWQgZm9yIG51bGwgbm93LgoJKHBvcF90eXBlLCBtZXJnZV90eXBlcyk6ICBIZW5jZSBwdHJfdHlwZV9ub2RlIG1hdGNoZXMgYW55IHJlZmVyZW5jZS4KCShtZXJnZV90eXBlcyk6ICBEZXJlcmVuY2UgcG9pbnRlciB0byByZWNvcmQgdHlwZXMgYmVmb3JlIGNvbXBhcmluZy4KCShkZWNvZGVfbmV3YXJyYXlfdHlwZSwgbWVyZ2VfdHlwZXMpOiAgT24gZXJyb3IganVzdCByZXR1cm4gTlVMTC4KCShidWlsZF9qYXZhX2Jpbm9wKTogIEFkZCBwcmVsaW1pbmFyeSBpbXBsZW1lbnRhdGlvbiAod2l0aCB3YXJuaW5nKQoJZm9yIENPTVBBUkVfTF9FWFBSIGFuZCBDT01QQVJFX0dfRVhQUiAoaS5lLiBbZmRdY21wW2xnXSkuCgkobG9va3VwX2xhYmVsKTogIFNldCBERUNMX0lHTk9SRURfUCAoZm9yIGR3YXJmMm91dCkuCgkoZXhwYW5kX2NvbXBhcmUsIGV4cGFuZF9qYXZhX2dvdG8sIGV4cGFuZF9qYXZhX2NhbGwpOiAgRG9uJ3QKCXB1c2hfcGVuZGluZ19ibG9jaywgc2luY2UgdGhhdCBvbmx5IG1ha2VzIHNlbnNlIHdoZW4gdmVyaWZ5aW5nLgoJKG1lcmdlX3R5cGVfc3RhdGUpOiAgRGlmZmVyZW50IHJldHVybiBjb2Rlcy4KCShwdXNoX3BlbmRpbmdfYmxvY2spOiAgQSBibG9jayBtYXkgbmVlZCB0byBiZSB2ZXJpZmllZCBtb3JlIHRoYW4gb25jZS4KCShleHBhbmRfYnl0ZV9jb2RlKTogIFdhcm4gYWJvdXQgdW51c2VkIGNvZGUgYXQgY29kZSBnZW5lcmF0aW9uIHRpbWUuCgkodmVyaWZ5X2p2bV9pbnN0cnVjdGlvbik6ICBDaGFuZ2VkIGxvZ2ljLCBzaW5jZSBjb2RlIG1heSBuZWVkIHRvIGJlCglyZS12ZXJpZmllZCBpZiB0eXBlLXN0YXRlIGhhcyBjaGFuZ2VkLiAgQWxzbywgYmV0dGVyIGVycm9yIGhhbmRsaW5nLgoJSW1wbGVtZW50IGFjbXBlcSwgYWNtcG5lLCBwb3AsIHBvcDIsIHN3YXAsIGNoZWNrY2FzdCwgaW5zdGFuY2VvZi4KCUltcHJvdmUgbmV3YXJyYXksIGFuZXdhcnJheSwgP2Fsb2FkLCBhdGhyb3csCgkqIGphdmEtdHJlZS5oIChMQUJFTF9DSEFOR0VEKTogIE5ldyBtYWNyby4KCjE5OTctMDgtMDUgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0BjeWdudXMuY29tPgoKCSogZGVjbC5jIChzb2Z0X2F0aHJvd19ub2RlKTogTmV3IGdsb2JhbCB2YXJpYWJsZSBpbml0aWFsaXplZC4KCSogamF2YW9wLmRlZiAoaTJiLCBpMmMsIGkycyk6IEludm9rZSBDT05WRVJUMgoJKiB0eXBlY2suYyAoY29udmVydCk6IEFkZGVkIHN1cHBvcnQgZm9yIFJFQUxfVFlQRS4KCShjb252ZXJ0X3RvX2NoYXIpOiBOZXcgZnVuY3Rpb24uCgkoY29udmVydCk6IEhhbmRsZSBDSEFSX1RZUEUuCgkqIGV4cHIuYyAoZXhwYW5kX2phdmFfYXJyYXlzdG9yZSk6IE1vZGlmaWVkIGJlY2F1c2UgQ0hBUi9CWVRFL0JPT0xFQU4vCglTSE9SVCBub3cgZXhwZWN0IElOVCBidXQgc3RvcmUgYXMgQ0hBUi9CWVRFL0JPT0xFQU4vU0hPUlQuCgkoZXhwYW5kX2phdmFfYXJyYXlsb2FkKTogQ0hBUi9CWVRFL0JPT0xFQU4vU0hPUlQgbm93IGNvbnZlcnQgcmVzdWx0IHRvCglwcm9tb3RlZCB0eXBlLgoJKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogQWRkZWQgYnJlYWsgYSB0aGUgZW5kIG9mIGJvZ3VzIHVub3A6IGxhYmVsLgoJKE9QQ09ERV88YnxjfHM+YXN0b3JlKTogUG9wIGFuIGludCBvcGVyYW5kIGZyb20gdGhlIHR5cGUgc3RhY2sKCShPUENPREVfPGJ8Y3xzPmFzdG9yZSk6IFB1c2ggdGhlIHByb21vdGVkIHR5cGUgb250byB0aGUgc3RhY2sKCShwcm9jZXNzX2p2bV9pbnN0cnVjdGlvbik6IE5ldyBtYWNybyBDT05WRVJUMiBmb3IgaTJjLCBpMnMgYW5kIGkyYi4KCShKQVZBX0FSUkFZX0xFTkdUSF9PRkZTRVQsIEpBVkFfQVJSQVlfREFUQV9PRkZTRVQpOiBNb2RpZmllZAoJdG8gVXNlIFRoZSBSaWdodCBUaGluZ3MuCgkocG9wX3R5cGUpOiBBY2NlcHQgQ0hBUi9CWVRFL0JPT0xFQU4vU0hPUlQgcHJvbW90ZWQgdHlwZSBhcwoJY29tcGF0aWJsZSB3aXRoIElOVC4gQk9PTEVBTiBpcyBtYWRlIGVxdWl2YWxlbnQgdG8gQllURS4KCShPUENPREVfYXRocm93LCBPUENPREVfYWNvbnN0X251bGwsIE9QQ09ERV9pZm51bGwsCglPUENPREVfaWZub25udWxsKTogTm93IHN1cHBvcnRlZC4KCShidWlsZF9qYXZhX2F0aHJvdyk6IE5ldyBmdW5jdGlvbi4KCjE5OTctMDgtMDQgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCVJlbmFtZSBtZXRob2QgbmFtZSA8aW5pdD4gdG8gbWF0Y2ggRysrIChhbmQgZml4IG1hbmdsaW5nKS4KCSogY2xhc3MuYyAobGF5b3V0X2NsYXNzKTogIFJlcGxhY2UgbWV0aG9kIG5hbWUgb2YgPGluaXQ+IGJ5IGNsYXNzIG5hbWUuCgkobWFrZV9tZXRob2RfdmFsdWUpOiAgRG8gaW52ZXJzZSByZW5hbWluZyBvZiBjb25zdHJ1Y3RvciBmcm9tIDxpbml0Pi4KCSogamF2YS10cmVlLmggKERFQ0xfQ09OU1RSVUNUT1JfUCk6ICBOZXcgbWFjcm8uCgkqIHR5cGVjay5jIChsb29rdXBfamF2YV9jb25zdHJ1Y3Rvcik6ICBOZXcgZnVuY3Rpb24uCgkqIGV4cHIuYyAoZXhwYW5kX2ludm9rZSk6ICBJZiBtZXRob2RfbmFtZSBpcyA8aW5pdD4sIGNhbGwKCWxvb2t1cF9qYXZhX2NvbnN0cnVjdG9yIHRvIGZpbmQgY29uc3RydWN0b3IuCgoJKiBwYXJzZS5jIChnZXRfY29uc3RhbnQpOiAgSGFuZGxlIENPTlNUQU5UX0Zsb2F0IGFuZCBDT05TVEFOVF9Eb3VibGUuCgoxOTk3LTA4LTAxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIHBhcnNlLmMgKGdldF9jbGFzc19jb25zdGFudCk6IE1vZGlmaWVkIHRvIGhhbmRsZSBhcnJheSAiY2xhc3NlcyIKCSogdHlwZWNrLmMgKHNldF9sb2NhbF90eXBlKTogQnVnIGZpeGVkIHdoZW4gZmlsbGluZyB0eXBlX21hcFtdIHdpdGgKCXdpZGUgdHlwZS4KCShjb252ZXJ0KTogTW9kaWZpZWQgdG8gaGFuZGxlIHJlYWwgdHlwZS4KCSogamF2YS10cmVlLmggKHNvZnRfYmFkYXJyYXlpbmRleF9ub2RlLCBzb2Z0X2FuZXdhcnJheV9ub2RlLAoJc29mdF9tdWx0aWFuZXdhcnJheSwgc29mdF9uZXdhcnJheV9ub2RlLCBzb2Z0X3Rocm93X25vZGUpOiBOZXcgZ2xvYmFsCgl2YXJpYWJsZXMgZGVjbGFyZWQuCgkqIGRlY2wuYyAoc29mdF9iYWRhcnJheWluZGV4X25vZGUsIHNvZnRfYW5ld2FycmF5X25vZGUsCglzb2Z0X211bHRpYW5ld2FycmF5LCBzb2Z0X25ld2FycmF5X25vZGUsIHNvZnRfdGhyb3dfbm9kZSk6IE5ldwoJZ2xvYmFsIHZhcmlhYmxlcyBpbml0aWFsaXplZC4KCShmaW5kX2xvY2FsX3ZhcmlhYmxlKTogSGFuZGxlcyB0aGUgY2FzZSBvZiBhIHBvaW50ZXIKCShlbmRfamF2YV9tZXRob2QpOiBSZXN0b3JlIHRoZSB1c2Ugb2Ygb25lIG1vcmUgc2NvcGUKCSogZXhwci5jIChidWlsZF9qYXZhX2FycmF5bnVsbF9jaGVjaywgYnVpbGRfamF2YV9hcnJheWFjY2VzcywKCWJ1aWxkX2phdmFfYXJyYXlfbGVuZ3RoX2FjY2VzcywgZXhwYW5kX2phdmFfYXJyYXlsb2FkLAoJZXhwYW5kX2phdmFfYXJyYXlzdG9yZSwgZXhwYW5kX2phdmFfYXJyYXlfbGVuZ3RoLAoJZXhwYW5kX2phdmFfbXVsdGlhbmV3YXJyYXksIGV4cGFuZF9qYXZhX2FuZXdhcnJheSwKCWJ1aWxkX2phdmFfY2hlY2tfaW5kZXhlZF90eXBlLCBpc19hcnJheV90eXBlX3AsCglidWlsZF9qYXZhX3Rocm93X291dF9vZl9ib3VuZF9leGNlcHRpb24pOiBOZXcgZnVuY3Rpb25zLgoJKFNUT1JFX0lOVEVSTkFMKTogTm93IGZvcmNlcyB0eXBlIG9mIHRoZSBkZWNsIHRvIGJlIHR5cGUgb2YgdGhlIHZhbHVlLgoJKE9QQ09ERV9hcnJheWxlbmd0aCwgT1BDT0RFX25ld2FycmF5LCBPUENPREVfPHQ+YXN0b3JlLAoJT1BDT0RFXzx0PmFsb2FkKTogSW1wbGVtZW50ZWQgY29kZSBmb3IgdmVyaWZpY2F0aW9uLgoJKEFSUkFZX1NUT1JFLCBBUlJBWV9MT0FELCBBUlJBWV9MRU5HVEgsIEFSUkFZX05FV19QVFIsIEFSUkFZX05FV19OVU0KCUFSUkFZX05FV19NVUxUSSk6IE1hY3JvIGRlZmluZWQuCgkoQ09OVkVSVCk6IE1vZGlmaWVkIHRvIGludm9rZSBjb252ZXJ0KCkuCgkoY2FzZSBPUENPREVfYWxvYWQyKTogRml4ZWQgaW5kZXggdHlwbyBmcm9tIDIgdG8gMS4KCjE5OTctMDctMzEgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogY2xhc3MuYyAocHVzaF9jbGFzcyk6ICBTZXQgREVDTF9BUlRJRklDSUFMIChmb3IgZGJ4b3V0LmMpLgoJKGJ1aWxkX2NsYXNzX3JlZiwgaXNfY29tcGlsZWRfY2xhc3MpOiAgSGFuZGxlIHBvaW50ZXItdG8tcmVjb3JkIHR5cGVzLgoJKG1ha2VfY2xhc3NfZGF0YSk6ICBGaWVsZCBuYW1lIG5lZWRzICcvJyBhcyBwYWNrYWdlIHByZWZpeC4KCSogZXhwci5jICh0eXBlX3N0YWNrX2R1cCwgamF2YV9zdGFja19kdXApOiAgRml4IGZlbmNlcG9zdCBlcnJvcnMuCgoxOTk3LTA3LTI1ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCglJbXBsZW1lbnQgZGVidWcgaW5mb3JtYXRpb24gZm9yIGxvY2FsIHZhcmlhYmxlcy4KCSogamF2YS10cmVlLmggKERFQ0xfQ09ERV9MRU5HVEgsIERFQ0xfQVJHX1NMT1RfQ09VTlQsCglERUNMX0xPQ0FMX1NMT1RfTlVNQkVSLCBERUNMX0xPQ0FMX1NUQVJUX1BDLCBERUNMX0xPQ0FMX0VORF9QQywKCURFQ0xfTE9DQUxfU0xPVF9DSEFJTik6ICBOZXcgbWFjcm9zLgoJKHN0cnVjdCBsYW5nX2RlY2xfdmFyKTogIE5ldyB0eXBlLgoJKiBwYXJzZS5jIChnaXZlX25hbWVfdG9fbG9jYWxzKTogIE1vdmUgdG8gZGVjbC5jLgoJKiBkZWNsLmMgKGdpdmVfbmFtZV90b19sb2NhbHMpOiAgUmUtd3JpdHRlbiB0byBEbyBUaGUgUmlnaHQgVGhpbmcuCgkoc3RhcnRfamF2YV9tZXRob2QpOiAgUmUtd3JpdGUgcGFyYW1ldGVyIGhhbmRsaW5nLgoJKHBlbmRpbmdfbG9jYWxfZGVjbHMpOiAgTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShwdXNoX2p2bV9zbG90LCBtYXliZV9wdXNobGV2ZWxzLCBtYXliZV9wb3BsZXZlbHMpOiAgTmV3IGZ1bmN0aW9ucy4KCShmaW5kX2xvY2FsX3ZhcmlhYmxlKTogIEFjY2VwdCBwYyBzbyB3ZSBjYW4gc2tpcHMgZGVjbHMgbm90IGluIHJhbmdlLgoJKHN0cnVjdCBiaW5kaW5nX2xldmVsKTogIEFkZCBlbmRfcGMgZmllbGQuCgkqIGV4cHIuYyAoZXhwYW5kX2J5dGVfY29kZSk6IENhbGwgbWF5YmVfcHVzaGxldmVscyBhbmQgbWF5YmVfcG9wbGV2ZWxzLgoJKHZhcmlvdXMpOiAgQ2hhbmdlIHNvIGN1cnJlbnQgcGMgZ2V0cyBwYXNzZWQgdG8gZmluZF9sb2NhbF92YXJpYWJsZS4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiAgUmUtYXJyYW5nZSBmaWVsZHMgaW4KCWNsYXNzX3R5cGVfbm9kZSBhbmQgYW5kIG1ldGhvZF90eXBlX25vZGUgdG8gbWF0Y2gga2FmZmUgMC45LjEuCgkqIGNsYXNzLmMgKG1ha2VfbWV0aG9kX3ZhbHVlLCBtYWtlX2NsYXNzX2RhdGEpOiAgVXBkYXRlCglpbml0aWFsaXphdGlvbnMgdG8gbWF0Y2guCgoxOTk3LTA3LTE2ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKHVuaWNvZGVfbWFuZ2xpbmdfbGVuZ3RoLCBlbWl0X3VuaWNvZGVfbWFuZ2xlZF9uYW1lLAoJYXBwZW5kX2dwcF9tYW5nbGVkX25hbWUsIGFwcGVuZF9ncHBfbWFuZ2xlZF90eXBlKTogIE5ldyBmdW5jdGlvbnMuCgkocHVzaF9zdXBlcl9maWVsZCk6ICBOZXcgZnVuY3Rpb24uCgkobWFrZV9jbGFzc19kYXRhKTogIEhhbmRsZSBpbmhlcml0YW5jZSBvZiBjbGFzcyBzdGF0aWMgaW5pdGlhbGl6ZXIuCgkobGF5b3V0X2NsYXNzKTogIE5ldyBuYW1lIG1hbmdsaW5nLgoJKiBjb25zdGFudHMuYyAoYnVpbGRfY29uc3RhbnRfZGF0YV9yZWYpOiAgSW5pdCB0eXBlIG9mIGRhdGEgYXJyYXkKCXRvIGEgb25lLWVsZW1lbnQgYXJyYXkuCgkoYnVpbGRfY29uc3RhbnRzX2NvbnN0cnVjdG9yKTogIFNldCBERUNMX1NJWkUgZnJvbSBjb21wbGV0ZSBhcnJheSB0eXBlLgoJKiBkZWNsLmM6ICBSZW5hbWUgY2xhc3NfdHlwZSwgb2JqZWN0X3R5cGUgZXRjIHRvIGNsYXNzX3R5cGVfbm9kZSwKCW9iamVjdF90eXBlX25vZGUgZXRjLiAgTWFrZSBmb3JtZXIgaW5oZXJpdCBmcm9tIGxhdHRlci4KCSogZXhwci5jIChleHBhbmRfaW52b2tlKTogIEFkZCBjYXN0IG9mIGZ1bmN0aW9uIGFkZHJlc3MuCgkqIGphdmEtdHJlZS5oIChUWVBFX0FSUkFZX0VMRU1FTlQsIFBVU0hfU1VQRVJfVkFMVUUpOiAgTmV3LgoJKiBwYXJzZS5jICh5eXBhcnNlKTogIERvbid0IGNhbGwgbGF5b3V0X2NsYXNzIGhlcmUuCgkqIHR5cGVjay5jIChidWlsZF9qYXZhX2FycmF5X3R5cGUpOiAgU2V0IFRZUEVfQVJSQVlfRUxFTUVOVC4KCjE5OTctMDYtMTQgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogZGVjbC5jLCBjbGFzcy5jOiAgVXBkYXRlIG1ldGhvZCB0eXBlIHRvIG1hdGNoIGxhdGVzdCBLYWZmZSBzbmFwc2hvdC4KCSogY29uc3RhbnRzLmMgKGxvb2t1cF9uYW1lX2NvbnN0YW50KTogIFJlbmFtZWQgdG8gYWxsb2NfbmFtZV9jb25zdGFudC4KCShhbGxvY19jbGFzc19jb25zdGFudCk6ICBOZXcuCgkqIGV4cHIuYyAoZXhwYW5kX2ludm9rZSk6ICBNYWtlIHN1cmUgbWV0aG9kJ3MgY2xhc3MgaXMgaW5pdGlhbGl6ZWQuCgkqIGNsYXNzLmMgKGludGVyaXRzX2Zyb21fcCwgZW1pdF9yZWdpc3Rlcl9jbGFzcyk6ICBOZXcgZnVuY3Rpb25zLgoJKiBwYXJzZS5jICh5eXBhcnNlKTogIENhbGwgZW1pdF9yZWdpc3Rlcl9jbGFzcy4KCjE5OTctMDYtMDkgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogY29uc3RhbnRzLmM6ICBOZXcgZmlsZSwgdG8gaGFuZGxlIGNvbnN0YW50IHBvb2wuCgkqIE1ha2VmaWxlLmluIChKQVZBX09CSlMpOiAgQWRkIGNvbnN0YW50cy5vLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogIFVwZGF0ZSwgZml4LCBmaW5pc2ggdmFyaW91cyBzdHJ1Y3RzLgoJKHB1c2hkZWNsX3RvcF9sZXZlbCk6ICBOZXcuCgkqIHBhcnNlLmMgKGxheW91dF9jbGFzcyk6ICBNb3ZlZCB0byBjbGFzcy5jLgoJKiBleHByLmMgKGphdmFfcHVzaF9jb25zdGFudF9mcm9tX3Bvb2wpOiAgTmV3IGZ1bmN0aW9uLgoJKiBjbGFzcy5jIChidWlsZF9jbGFzc19yZWYpOiAgTWFrZSB3b3JrIGZ1bGx5CgkobWFrZV9jbGFzc19kYXRhKTogIEVtaXQgc3VwZXItY2xhc3MsIGNvbnN0YW50IHBvb2wsIGludGVyZmFjZSB2ZWN0b3IuCgoxOTk3LTA2LTAzICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCglqYXZhLXRyZWUuaCAoREVDTF9TSUdOQVRVUkUsIEJDT0RFX0VNSVRURUQpOiAgUmVtb3ZlLgoJKExBQkVMX1ZFUklGSUVELCBCQ09ERV9FWENFUFRJT05fVEFSR0VULCBUWVBFX0FSUkFZX1ApOiAgTmV3LgoJKiBjbGFzcy5jIChjbGFzc19kZXB0aCk6ICBOZXcgZnVuY3Rpb24uCgkobG9va3VwX25hbWVkX2NsYXNzKTogIFJlcGxhY2VkIGJ5IG5ldyBmdW5jdGlvbiBsb29rdXBfY2xhc3MuCgkqIGRlY2wuYyAob2JqZWN0X3R5cGVfbm9kZSwgc3RyaW5nX3R5cGVfbm9kZSk6ICBOZXcuCglSZW1vdmUgdmFyaW91cyB0eXBlcyB0aGF0IHdlIG5vIGxvbmdlciBuZWVkLgoJKiBleHByLmMgKHZlcmlmeV9qdm1faW5zdHJ1Y3Rpb25zKTogIE5ldyBzZXBhcmF0ZSB2ZXJpZmllciBwYXNzLgoJKHB1c2hfdHlwZSwgcG9wX3R5cGUpOiAgTmV3IGZ1bmN0aW9ucyBmb3IgdmVyaWZpZXIuCgkodHlwZV9zdGFja19kdXAsIHBvcF9hcmd1bWVudF90eXBlcywgbWVyZ2VfdHlwZXMpOiAgTGlrZXdpc2UuCgkoZXhwYW5kX2J5dGVfY29kZSk6ICBTaW1wbGlmeSwgc2luY2Ugd2UgYXNzdW1lIGFscmVhZHkgdmVyaWZpZWQuCgkoZXhwYW5kX2ludm9rZSk6ICBOb3cgbW9zdGx5IHdvcmtzLgoJKiBqYXZhb3AuZGVmOiAgUmVuYW1lIGxkYzEtPmxkYywgbGRjMi0+bGRjX3csIGxkYzJ3LT5sZGMyX3cuCgkqIGxhbmcuYyAobWFpbl9jbGFzcyk6ICBNb3ZlIHRvIHBhcnNlLmMuICBEb24ndCBtYWtlX2NsYXNzIHlldC4KCSogcGFyc2UuYzogIFdhaXQgdG8gYWxsb2NhdGUgY2xhc3Mgb2JqZWN0IHVudGlsIHdlIGtub3cgaXRzIG5hbWUuCgkobGF5b3V0X2NsYXNzKTogIENhbGN1bGF0ZSBERUNMX1ZJTkRFWCBmb3IgZWFjaCB2aXJ0dWFsIG1ldGhvZC4KCSogdHlwZWNrLmMgKGdldF9hcnJheV90eXBlKTogIFJlbmFtZSB0byAuLi4KCShidWlsZF9qYXZhX2FycmF5X3R5cGUpOiAgLi4uIGFuZCBwcm92aWRlIHdvcmtpbmcgaW1wbGVtZW50YXRpb24uCgkoYnVpbGRfamF2YV9zaWduYXR1cmUpOiAgTmV3IGZ1bmN0aW9uIC0gYnVpbGQgSmF2YSBzaWduYXR1cmUgb2YgdHlwZS4KCShzZXRfamF2YV9zaWduYXR1cmUpOiAgTmV3IGZ1bmN0aW9uIC0gY2FjaGUgc2lnbmF0dXJlIHdpdGggdHlwZS4KCShsb29rdXBfamF2YV9tZXRob2QpOiAgTmV3IGZ1bmN0aW9uLgoKMTk5Ny0wNS0wNiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGRlbmViLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChpZGVudF9zdWJzdCk6ICBUYWtlIGV4dHJhIFNVRkZJWCBwYXJhbWV0ZXIuCgkoYWRkX2ZpZWxkKTogIFNldCBERUNMX0FTU0VNQkxFUl9OQU1FIG9mIHN0YXRpYyBmaWVsZHM7ICBtb3JlLgoJKHNldF9jb25zdGFudF92YWx1ZSwgYnVpbGRfc3RhdGljX2ZpZWxkX3JlZiwgaXNfY29tcGlsZWRfY2xhc3MpOiAgTmV3LgoJKGJ1aWxkX2NsYXNzX3JlZik6ICBBY3R1YWxseSBpbXBsZW1lbnQuCgkqIGRlY2wuYywgamF2YS10cmVlLmg6ICBSZW5hbWVkIHNvbWUgeHhfdHlwZSB0byB4eF90eXBlX25vZGUuCgkqIGRlY2wuYyAoYnVpbHRpbl9mdW5jdGlvbik6ICBOZXcuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiAgVXBkYXRlIGZvciBjdXJyZW50IEthZmZlLiAgRGVjbGFyZSBzb21lCglidWlsdGluIEthZmZlIGZ1bmN0aW9ucy4KCSogZXhwci5jIChidWlsZF9hZGRyZXNzX29mKTogIE5ldy4KCShleHBhbmRfamF2YV9ORVcsIGV4cGFuZF9qYXZhX0lOU1RBTkNFT0YsIGV4cGFuZF9qYXZhX0NIRUNLQ0FTVCk6CglSZW5hbWVkIChmcm9tIGV4cGFuZF9qYXZhX25ldyBldGMpLCBhbmQgYWRkZWQgd29ya2luZyBpbXBsZW1lbnRhdGlvbnMuCgkoYnVpbGRfZmllbGRfcmVmKTogIE5vdyBhbHNvIGhhbmRsZSBzdGF0aWMgZmllbGRzLgoJKGV4cGFuZF9pbnZva2UpOiAgSW1wbGVtZW50IGludm9rZXN0YXRpYywgYW5kIHN0YXJ0IGltcGxlbWVudCByZXN0LgoJKiBqYXZhLW9wY29kZXMuaDogIFVzZSBqYXZhb3AuZGVmIHRvIGF2b2lkIGR1cGxpY2F0ZWQgbGlzdC4KCSogamF2YW9wLmRlZjogIFJlbmFtZSBpbnZva2V2aXJ0IC0+IGludm9rZXZpcnR1YWwuCgkqIGxhbmcuYyAodXNlX2hhbmRsZXMpOiAgUmVtb3ZlZC4KCSogcGFyc2UuYzogIEFkZCBzdXBwb3J0IGZvciBDb25zdGFudFZhbHVlIGF0dHJpYnV0ZS4KCUhhbmRsZSBuZXN0ZWQgbG9hZGluZyBvZiBhIGNsYXNzLiAgKEpQT09MX1VURik6ICBOZXcuCgoxOTk3LTAzLTExICBQZXIgQm90aG5lciAgPGJvdGhuZXJAZGVuZWIuY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2phdmFfcHVzaGMpOiAgU3VwcG9ydCAjaWZuZGVmIFJFQUxfQVJJVEhNRVRJQyBjYXNlLgoKMTk5Ny0wMi0yNyAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGRlbmViLmN5Z251cy5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGphdmEuaW5zdGFsbC1tYW4pOiAgTmV3IGVtcHR5IHJ1bGUuCgkqIHR5cGVjay5jIChzZXRfbG9jYWxfdHlwZSk6ICBOZXcgZnVuY3Rpb24uCgkqIGV4cHIuYyAoU1RPUkVfSU5URVJOQUwpOiAgQ2FsbCBmaW5kX2xvY2FsX3ZhcmlhYmxlLAoJbm90IGZpbmRfc3RhY2tfc2xvdC4gIENhbGwgc2V0X2xvY2FsX3R5cGUuCgoxOTk3LTAyLTEyICBQZXIgQm90aG5lciAgPGJvdGhuZXJAa2FsZXNzaW4uY3lnbnVzLmNvbT4KCgkqIGphdmEtdHJlZS5oOiAgVmFyaW91cyBuZXcgbWFjcm9zIGZvciBjb25zdHJ1Y3RpbmcgUkVDT1JEX1RZUEVzLAoJYW5kIGJ1aWxkaW5nIFJFQ09SRF9UWVBFIENPTlNUUlVDVE9Scy4KCUFsc28gc3VwcG9ydCBmb3IgY3JlYXRpbmcgVXRmOENvbnN0IG9iamVjdHMgZnJvbSBhbiBJTkRFVElGSUVSX05PREUuCgoJKiBsYW5nLmMgKHVzZV9oYW5kbGVzKTogIENoYW5nZSB0aGUgZGVmYXVsdCB0byAwLgoJKiBkZWNsLmM6ICBEZWZpbmUgYW5kIGJ1aWxkIGNsYXNzX3R5cGUsIGZpZWxkX3R5cGUsIHV0Zjhjb25zdF90eXBlLgoJKiBjbGFzcy5jIChtYWtlX2NsYXNzX2RhdGEsIG1ha2VfZmllbGRfdmFsdWUsCglnZXRfYWNjZXNzX2ZsYWdzX2Zyb21fZGVjbCwgYnVpbGRfY2xhc3NfcmVmLCBidWlsZF91dGY4X3JlZiwKCWhhc2hVdGY4U3RyaW5nLCBzdHJMZW5ndGhVdGY4LCBtYW5nbGVkX2NsYXNzbmFtZToKCUZ1bmN0aW9ucyB0byBidWlsZCByZWZsZWN0aXZlIGRhdGEgc3RydWN0dXJlcy4KCSogcGFyc2UuYyAoeXlwYXJzZSk6ICBDYWxsIG1ha2VfY2xhc3NfZGF0YS4KCgkqIGpjZi1pby5jIChvcGVuX2NsYXNzLCBmaW5kX2NsYXNzZmlsZSk6ICBOZXcgZnVuY3Rpb25zLgoJKiBqY2YtZHVtcC5jOiAgU3VwcG9ydCByZWFkaW5nIGNsYXNzZmlsZSBmcm9tIGV4cGxpY2l0bHktbmFtZWQKCWNsYXNzIGZpbGUgKHdpdGhvdXQgQ0xBU1NQQVRIIHNlYXJjaGluZykuCgoxOTk2LTEwLTI0ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAZGVuZWIuY3lnbnVzLmNvbT4KCgkqIGpjZi1yZWFkZXIuYzogIEFkZCBwYXJhbWV0ZXIgbGlzdCB0byBIQU5ETEVfQ09OU1RBTlRfVXRmOC4KCSogcGFyc2UuYyAoSlBPT0xfVVRGX0xFTkdUSCwgSlBPT0xfVVRGX0RBVEEsIEhBTkRMRV9DT05TVEFOVF9VdGY4KToKCU92ZXJyaWRlIGpjZi1yZWFkZXIgbWFjcm9zIHNvIENPTlNUQU5UX1V0ZjggYmVjb21lcyB0cmVlIG5vZGUgaGVyZS4KCShnZXRfY29uc3RhbnQpOiAgTm93IHRyaXZpYWwgZm9yIENPTlNUQU5UX1V0ZjguCgoJKiBqY2YuaDogIE1ha2UgTkVXX0NQT09MIHRoZSBkZWZhdWx0LgoJKiBqY2YuaCwgamNmLXJlYWRlci5jLCBwYXJzZS5jOiAgUmVtb3ZlIHN1cHBvcnQgZm9yICFORVdfQ1BPT0wuCgoxOTk2LTEwLTI0ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAZGVuZWIuY3lnbnVzLmNvbT4KCglOZXcgZGlyZWN0b3J5Lgo=